More fixes for kill-region-dwim (bug#69097)
* lisp/simple.el (kill-region-dwim): Move the default nil to the top of choices. (kill-region): Set the FORCE argument of 'mark' to non-nil if kill-region-dwim is non-nil. That allows everyone to use non-nil kill-region-dwim even if mark-even-if-inactive is nil. Don't check 'last-command' if kill-region-dwim is non-nil. That allows everyone to type C-w twice in a row to delete two previous words.
This commit is contained in:
parent
3924730200
commit
9026bfb571
2 changed files with 9 additions and 7 deletions
2
etc/NEWS
2
etc/NEWS
|
@ -142,7 +142,7 @@ you to bind keys to operate more similarly to the terminal.
|
||||||
---
|
---
|
||||||
** New user option 'kill-region-dwim'.
|
** New user option 'kill-region-dwim'.
|
||||||
This option, if non-nil, modifies the fall-back behavior of
|
This option, if non-nil, modifies the fall-back behavior of
|
||||||
'kill-region' if no region is active, and will kill the last word
|
'kill-region' ('C-w') if no region is active, and will kill the last word
|
||||||
instead of raising an error. Note that if you have disabled Transient
|
instead of raising an error. Note that if you have disabled Transient
|
||||||
Mark mode you might prefer to use 'unix-word-rubout', as this feature
|
Mark mode you might prefer to use 'unix-word-rubout', as this feature
|
||||||
relies on there being an active region.
|
relies on there being an active region.
|
||||||
|
|
|
@ -5825,9 +5825,9 @@ If set to `emacs-word', kill the last word as defined by the
|
||||||
current major mode.
|
current major mode.
|
||||||
If set to `unix-word', kill the last word in the style of a shell like
|
If set to `unix-word', kill the last word in the style of a shell like
|
||||||
Bash. This ignores the major mode like `unix-word-rubout' (which see)."
|
Bash. This ignores the major mode like `unix-word-rubout' (which see)."
|
||||||
:type '(choice (const :tag "Kill a word like `backward-kill-word'" emacs-word)
|
:type '(choice (const :tag "Kill region even when inactive" nil)
|
||||||
(const :tag "Kill a word like Bash would" unix-word)
|
(const :tag "Kill a word like `backward-kill-word'" emacs-word)
|
||||||
(const :tag "Kill region even when inactive" nil))
|
(const :tag "Kill a word like Bash would" unix-word))
|
||||||
:group 'killing
|
:group 'killing
|
||||||
:version "31.1")
|
:version "31.1")
|
||||||
|
|
||||||
|
@ -5865,7 +5865,7 @@ Supply two arguments, character positions BEG and END indicating the
|
||||||
;; Pass mark first, then point, because the order matters when
|
;; Pass mark first, then point, because the order matters when
|
||||||
;; calling `kill-append'.
|
;; calling `kill-append'.
|
||||||
(interactive (progn
|
(interactive (progn
|
||||||
(let ((beg (mark))
|
(let ((beg (mark kill-region-dwim))
|
||||||
(end (point)))
|
(end (point)))
|
||||||
(cond
|
(cond
|
||||||
((and kill-region-dwim (not (use-region-p)))
|
((and kill-region-dwim (not (use-region-p)))
|
||||||
|
@ -5888,10 +5888,12 @@ Supply two arguments, character positions BEG and END indicating the
|
||||||
((filter-buffer-substring beg end 'delete)))))
|
((filter-buffer-substring beg end 'delete)))))
|
||||||
(when string ;STRING is nil if BEG = END
|
(when string ;STRING is nil if BEG = END
|
||||||
;; Add that string to the kill ring, one way or another.
|
;; Add that string to the kill ring, one way or another.
|
||||||
(if (eq last-command 'kill-region)
|
(if (and (not (memq region '(unix-word emacs-word)))
|
||||||
|
(eq last-command 'kill-region))
|
||||||
(kill-append string (< end beg))
|
(kill-append string (< end beg))
|
||||||
(kill-new string)))
|
(kill-new string)))
|
||||||
(when (or string (eq last-command 'kill-region))
|
(when (and (not (memq region '(unix-word emacs-word)))
|
||||||
|
(or string (eq last-command 'kill-region)))
|
||||||
(setq this-command 'kill-region))
|
(setq this-command 'kill-region))
|
||||||
(setq deactivate-mark t)
|
(setq deactivate-mark t)
|
||||||
nil)
|
nil)
|
||||||
|
|
Loading…
Reference in a new issue