delete-selection-mode: Add user option to delete temporary regions only
* lisp/delsel.el (delete-selection-temporary-region): Add new user option. (delete-selection-pre-hook): Respect it. * doc/emacs/mark.texi (Using Region): Document the new user option. * etc/NEWS: Announce the new user option. (bug#55692)
This commit is contained in:
parent
ce847d3a7e
commit
db214ae66c
3 changed files with 37 additions and 2 deletions
|
@ -291,12 +291,23 @@ instead signal an error if the mark is inactive.
|
|||
@cindex Delete Selection mode
|
||||
@cindex mode, Delete Selection
|
||||
@findex delete-selection-mode
|
||||
@vindex delete-selection-temporary-region
|
||||
By default, text insertion occurs normally even if the mark is
|
||||
active---for example, typing @kbd{a} inserts the character @samp{a},
|
||||
then deactivates the mark. Delete Selection mode, a minor mode,
|
||||
modifies this behavior: if you enable that mode, then inserting text
|
||||
while the mark is active causes the text in the region to be deleted
|
||||
first. To toggle Delete Selection mode on or off, type @kbd{M-x
|
||||
first. However, you can tune this behavior by customizing the
|
||||
@code{delete-selection-temporary-region} option. Its default value is
|
||||
@code{nil}, but you can set it to @code{t}, in which case only
|
||||
temporarily-active regions will be replaced: those which are set by
|
||||
dragging the mouse (@pxref{Setting Mark}) or by shift-selection
|
||||
(@pxref{Shift Selection}), as well as by @kbd{C-u C-x C-x} when
|
||||
Transient Mark Mode is disabled. You can further tune the behavior by
|
||||
setting @code{delete-selection-temporary-region} to @code{selection}:
|
||||
then temporary regions by @kbd{C-u C-x C-x} won't be replaced, only
|
||||
the ones activated by dragging the mouse or shift-selection. To
|
||||
toggle Delete Selection mode on or off, type @kbd{M-x
|
||||
delete-selection-mode}.
|
||||
|
||||
@node Mark Ring
|
||||
|
|
5
etc/NEWS
5
etc/NEWS
|
@ -271,6 +271,11 @@ startup. Previously, these functions ignored
|
|||
|
||||
* Changes in Emacs 29.1
|
||||
|
||||
+++
|
||||
** New user option 'delete-selection-temporary-region'.
|
||||
When non-nil, 'delete-selection-mode' will only delete the temporary
|
||||
regions (usually set by mouse-dragging or shift-selection).
|
||||
|
||||
+++
|
||||
** New user option 'switch-to-prev-buffer-skip-regexp'.
|
||||
This should be a regexp or a list of regexps; buffers whose names
|
||||
|
|
|
@ -64,6 +64,19 @@
|
|||
"If non-nil, deleted region text is stored in this register.
|
||||
Value must be the register (key) to use.")
|
||||
|
||||
(defcustom delete-selection-temporary-region nil
|
||||
"Whether to delete only temporary regions.
|
||||
When non-nil, typed text replaces only the regions set by
|
||||
mouse-dragging, shift-selection, and \"\\[universal-argument] \\[exchange-point-and-mark]\" when
|
||||
`transient-mark-mode' is turned off. If the value is the symbol
|
||||
`selection', then replace only the regions set by mouse-dragging
|
||||
and shift-selection."
|
||||
:version "29.1"
|
||||
:group 'editing-basics
|
||||
:type '(choice (const :tag "Replace all regions" nil)
|
||||
(const :tag "Replace region from mouse, shift-selection, and \"C-u C-x C-x\"" t)
|
||||
(const :tag "Replace region from mouse and shift-selection" selection)))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'pending-delete-mode 'delete-selection-mode)
|
||||
|
||||
|
@ -251,7 +264,13 @@ property on their symbol; commands which insert text but don't
|
|||
have this property won't delete the selection.
|
||||
See `delete-selection-helper'."
|
||||
(when (and delete-selection-mode (use-region-p)
|
||||
(not buffer-read-only))
|
||||
(not buffer-read-only)
|
||||
(or (null delete-selection-temporary-region)
|
||||
(and delete-selection-temporary-region
|
||||
(consp transient-mark-mode)
|
||||
(eq (car transient-mark-mode) 'only))
|
||||
(and (not (eq delete-selection-temporary-region 'selection))
|
||||
(eq transient-mark-mode 'lambda))))
|
||||
(delete-selection-helper (and (symbolp this-command)
|
||||
(get this-command 'delete-selection)))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue