>From 3db630457b46bb25514a8041eeb80f35e73ef40c Mon Sep 17 00:00:00 2001 From: Visuwesh Date: Sat, 28 May 2022 22:52:19 +0530 Subject: [PATCH] delete-selection-mode: Add user option to delete mouse regions only * lisp/delsel.el (delete-selection-mouse-selection-only): Add new user option. (delete-selection-pre-hook): Respect it. * etc/NEWS: Announce the new user option. --- etc/NEWS | 4 ++++ lisp/delsel.el | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 3065fa85d3..100be767b3 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -265,6 +265,10 @@ startup. Previously, these functions ignored * Changes in Emacs 29.1 +++ +** New user option 'delete-selection-mouse-selection-only'. +When non-nil, 'delete-selection-mode' will only delete the active +region if it was set using the mouse. + ** New user option 'switch-to-prev-buffer-skip-regexp'. This should be a regexp or a list of regexps; buffers whose names match those regexps will be ignored by 'switch-to-prev-buffer' and diff --git a/lisp/delsel.el b/lisp/delsel.el index f5fe7cf793..a011be9ede 100644 --- a/lisp/delsel.el +++ b/lisp/delsel.el @@ -64,6 +64,12 @@ delete-selection-save-to-register "If non-nil, deleted region text is stored in this register. Value must be the register (key) to use.") +(defcustom delete-selection-mouse-selection-only nil + "If non-nil, delete the region only if set using the mouse." + :version "29.1" + :group 'editing-basics + :type 'boolean) + ;;;###autoload (defalias 'pending-delete-mode 'delete-selection-mode) @@ -251,6 +257,9 @@ delete-selection-pre-hook have this property won't delete the selection. See `delete-selection-helper'." (when (and delete-selection-mode (use-region-p) + (if delete-selection-mouse-selection-only + (mouse-region-match) + t) (not buffer-read-only)) (delete-selection-helper (and (symbolp this-command) (get this-command 'delete-selection))))) -- 2.33.1