From: Po Lu Date: Sat, 13 Aug 2022 13:12:20 +0000 (+0800) Subject: Add new value `dont-save' to `deactivate-mark' X-Git-Tag: emacs-29.0.90~1447^2~189 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0ab572d5c991dee4818d364a65e004d20f1f45a1;p=emacs.git Add new value `dont-save' to `deactivate-mark' * etc/NEWS: Announce new value of `deactivate-mark'. * lisp/simple.el (deactivate-mark): Handle new value. (bug#57147) * src/keyboard.c (syms_of_keyboard): Update doc string of `deactivate-mark'. --- diff --git a/etc/NEWS b/etc/NEWS index 6ff8548921f..7d3608b2fcf 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2565,6 +2565,12 @@ patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el. * Lisp Changes in Emacs 29.1 +--- +** New 'dont-save' value of 'deactivate-mark'. +This value means that Emacs should deactivate the mark as usual, but +without setting the primary selection should 'select-active-regions' +be enabled. + +++ ** New 'declare' form 'interactive-args'. This can be used to specify what forms to put into 'command-history' diff --git a/lisp/simple.el b/lisp/simple.el index a4ea345ca5f..ce3895176e1 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -6731,7 +6731,8 @@ If Transient Mark mode is disabled, this function normally does nothing; but if FORCE is non-nil, it deactivates the mark anyway. Deactivating the mark sets `mark-active' to nil, updates the -primary selection according to `select-active-regions', and runs +primary selection according to `select-active-regions' (unless +`deactivate-mark' is `dont-save'), and runs `deactivate-mark-hook'. If Transient Mark mode was temporarily enabled, reset the value @@ -6742,6 +6743,7 @@ run `deactivate-mark-hook'." (when (and (if (eq select-active-regions 'only) (eq (car-safe transient-mark-mode) 'only) select-active-regions) + (not (eq deactivate-mark 'dont-save)) (region-active-p) (display-selections-p)) ;; The var `saved-region-selection', if non-nil, is the text in diff --git a/src/keyboard.c b/src/keyboard.c index 719226caedc..05c68ea7fbc 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -12650,10 +12650,14 @@ cancels any modification. */); DEFSYM (Qdeactivate_mark, "deactivate-mark"); DEFVAR_LISP ("deactivate-mark", Vdeactivate_mark, - doc: /* If an editing command sets this to t, deactivate the mark afterward. + doc: /* If an editing command sets this to t, deactivate the mark afterward. The command loop sets this to nil before each command, and tests the value when the command returns. -Buffer modification stores t in this variable. */); +Buffer modification stores t in this variable. + +By default, deactivating the mark will save the contents of the region +according to `select-active-regions'. If this is set to the symbol +`dont-save', the region will not be saved.*/); Vdeactivate_mark = Qnil; Fmake_variable_buffer_local (Qdeactivate_mark);