From 6bc78d5b16b6bc56f3ef401c519de6ff2fff3111 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 9 Mar 2018 00:29:04 +0200 Subject: [PATCH] * lisp/isearch.el (search-exit-option): Add option 'append'. (isearch-pre-command-hook): Use it. * doc/emacs/search.texi: Replace search-exit-option option nil with append. https://lists.gnu.org/archive/html/emacs-devel/2018-03/msg00202.html --- doc/emacs/search.texi | 2 +- lisp/isearch.el | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 0de3aee1b21..8ac9794c379 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -446,7 +446,7 @@ they are not themselves part of incremental search. search exits the search before executing the command. Thus, the command operates on the buffer from which you invoked the search. However, if you customize the variable @code{search-exit-option} to -@code{nil}, the characters which you type that are not interpreted by +@code{append}, the characters which you type that are not interpreted by the incremental search are simply appended to the search string. This is so you could include in the search string control characters, such as @kbd{C-a}, that would normally exit the search and invoke the diff --git a/lisp/isearch.el b/lisp/isearch.el index 96faa27c174..4f5f4948757 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -77,11 +77,14 @@ If `shift-move', extend the search string by motion commands while holding down the shift key. Both `move' and `shift-move' extend the search string by yanking text that ends at the new position after moving point in the current buffer. +If `append', the characters which you type that are not interpreted by +the incremental search are simply appended to the search string. If nil, run the command without exiting Isearch." :type '(choice (const :tag "Terminate incremental search" t) (const :tag "Edit the search string" edit) (const :tag "Extend the search string by motion commands" move) (const :tag "Extend the search string by shifted motion keys" shift-move) + (const :tag "Append control characters to the search string" append) (const :tag "Don't terminate incremental search" nil)) :version "27.1") @@ -2452,13 +2455,15 @@ See more for options in `search-exit-option'." this-command-keys-shift-translated)) (setq this-command-keys-shift-translated nil) (setq isearch-pre-move-point (point))) + ;; Append control characters to the search string + ((eq search-exit-option 'append) + (when (cl-every #'characterp key) + (isearch-process-search-string key key)) + (setq this-command 'ignore)) ;; Other characters terminate the search and are then executed normally. (search-exit-option (isearch-done) - (isearch-clean-overlays)) - ;; If search-exit-option is nil, run the command without exiting Isearch. - (t - (isearch-process-search-string key key))))) + (isearch-clean-overlays))))) (defun isearch-post-command-hook () (cond -- 2.39.2