to fix that issue. >> + ((eq region 'unix-word) >> + (let ((end (point))) >> + (save-excursion >> + (skip-chars-backward "[:space:]") >> + (skip-chars-backward "^[:space:]") >> + (filter-buffer-substring >> + (if (get-char-property (point) 'read-only) >> + (next-single-char-property-change >> + (point) 'read-only nil end) >> + (point)) >> + end 'delete)))) >> + (region >> + (funcall region-extract-function 'delete)) >> + ((filter-buffer-substring beg end 'delete))))) > > Shall I rather commit this as an independent unix-word-rubout? > > Improves attribution, and it's independently useful. As a standalone command? Eli Zaretskii writes: >> From: Sean Whitton >> Cc: Eli Zaretskii , stefankangas@gmail.com, >> acorallo@gnu.org, juri@linkov.net, rms@gnu.org, 69097@debbugs.gnu.org >> Date: Wed, 04 Sep 2024 15:07:08 +0100 >> >> > +(defcustom kill-region-dwim nil >> > + "Behaviour when `kill-region' is invoked without an active region. >> > +If set to nil (default), then an error occurs and nothing is killed. If >> > +set to `emacs-word', then kill a the last word as defined by the current >> > +major mode. If set to `unix-word', then kill the last word in the style >> > +of a shell like Bash, disregarding the major mode." >> > + :type '(choice (const :tag "Kill a word like `backward-kill-word'" emacs-word) >> > + (const :tag "Kill a word like Bash would" unix-word) >> > + (const :tag "Do not kill anything" nil)) >> > + :group 'killing) >> >> I think I'm missing something here. When it's nil and there is no >> *active* region, but there is a region, it should kill that, surely? >> With or without TMM. > > Yes, you are right. It sounds like we made wrong assumptions about > what happens in that case, and should rethink this. > > C-w signals an error only if there's no mark in the buffer. > > So I guess we need a new command after all. Not necessarily (unless I am mistaken above), but I am not opposed to it either. -- Philip Kaludercic on siskin