emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 4e23578: ‘M-s w RET word C-s’ repeats incremental


From: Juri Linkov
Subject: [Emacs-diffs] master 4e23578: ‘M-s w RET word C-s’ repeats incremental search.
Date: Tue, 14 Feb 2017 18:28:26 -0500 (EST)

branch: master
commit 4e23578127fcb08d8289567dbb7ec3ad12e09382
Author: Juri Linkov <address@hidden>
Commit: Juri Linkov <address@hidden>

    ‘M-s w RET word C-s’ repeats incremental search.
    
    * lisp/isearch.el (isearch-new-nonincremental): New variable.
    (with-isearch-suspended): Bind isearch-new-nonincremental to
    isearch-nonincremental, and restore it afterwards.
    (isearch-forward-exit-minibuffer, isearch-reverse-exit-minibuffer):
    Set isearch-new-nonincremental to nil.  (Bug#25562)
---
 lisp/isearch.el | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/lisp/isearch.el b/lisp/isearch.el
index 4b35f25..5262435 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -638,6 +638,9 @@ Each element is an `isearch--state' struct where the slots 
are
 ;; Should isearch be terminated after doing one search?
 (defvar isearch-nonincremental nil)
 
+;; New value of isearch-nonincremental after isearch-edit-string.
+(defvar isearch-new-nonincremental nil)
+
 ;; New value of isearch-forward after isearch-edit-string.
 (defvar isearch-new-forward nil)
 
@@ -1228,7 +1231,7 @@ If this is set inside code wrapped by the macro
   "Exit Isearch mode, run BODY, and reinvoke the pending search.
 You can update the global isearch variables by setting new values to
 `isearch-new-string', `isearch-new-message', `isearch-new-forward',
-`isearch-new-regexp-function', `isearch-new-case-fold'."
+`isearch-new-regexp-function', `isearch-new-case-fold', 
`isearch-new-nonincremental'."
   ;; This code is very hairy for several reasons, explained in the code.
   ;; Mainly, isearch-mode must be terminated while editing and then restarted.
   ;; If there were a way to catch any change of buffer from the minibuffer,
@@ -1236,7 +1239,7 @@ You can update the global isearch variables by setting 
new values to
   ;; Editing doesn't back up the search point.  Should it?
   `(condition-case nil
       (progn
-       (let ((isearch-nonincremental isearch-nonincremental)
+       (let ((isearch-new-nonincremental isearch-nonincremental)
 
              ;; Locally bind all isearch global variables to protect them
              ;; from recursive isearching.
@@ -1315,6 +1318,7 @@ You can update the global isearch variables by setting 
new values to
            (setq isearch-string isearch-new-string
                  isearch-message isearch-new-message
                  isearch-forward isearch-new-forward
+                 isearch-nonincremental isearch-new-nonincremental
                  isearch-regexp-function isearch-new-regexp-function
                  isearch-case-fold-search isearch-new-case-fold
                  multi-isearch-current-buffer multi-isearch-current-buffer-new
@@ -1405,22 +1409,22 @@ The following additional command keys are active while 
editing.
 
 (defun isearch-nonincremental-exit-minibuffer ()
   (interactive)
-  (setq isearch-nonincremental t)
+  (setq isearch-new-nonincremental t)
   (exit-minibuffer))
-;; Changing the value of `isearch-nonincremental' has no effect here,
-;; because `isearch-edit-string' ignores this change.  Thus marked as obsolete.
+;; It makes no sense to change the value of `isearch-new-nonincremental'
+;; from nil to t during `isearch-edit-string'.   Thus marked as obsolete.
 (make-obsolete 'isearch-nonincremental-exit-minibuffer 'exit-minibuffer "24.4")
 
 (defun isearch-forward-exit-minibuffer ()
   "Resume isearching forward from the minibuffer that edits the search string."
   (interactive)
-  (setq isearch-new-forward t)
+  (setq isearch-new-forward t isearch-new-nonincremental nil)
   (exit-minibuffer))
 
 (defun isearch-reverse-exit-minibuffer ()
   "Resume isearching backward from the minibuffer that edits the search 
string."
   (interactive)
-  (setq isearch-new-forward nil)
+  (setq isearch-new-forward nil isearch-new-nonincremental nil)
   (exit-minibuffer))
 
 (defun isearch-cancel ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]