emacs-diffs
[Top][All Lists]
Advanced

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

master 25c775b: * lisp/misearch.el (multi-isearch-switch-buffer): New fu


From: Juri Linkov
Subject: master 25c775b: * lisp/misearch.el (multi-isearch-switch-buffer): New function.
Date: Sun, 9 May 2021 15:27:36 -0400 (EDT)

branch: master
commit 25c775b4e964aaa2cbf17997c0479dfc2ecf33e2
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>

    * lisp/misearch.el (multi-isearch-switch-buffer): New function.
    
    * lisp/isearch.el (isearch-search-string):
    * lisp/misearch.el (multi-isearch-wrap, multi-isearch-pop-state): Use it.
    
    https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00309.html
---
 lisp/isearch.el  |  5 ++---
 lisp/misearch.el | 22 ++++++++++++++++------
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/lisp/isearch.el b/lisp/isearch.el
index 9f3cfd7..536c76e 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -3506,9 +3506,8 @@ Optional third argument, if t, means if fail just return 
nil (no error).
     (when pos1
       ;; When using multiple buffers isearch, switch to the new buffer here,
       ;; because `save-excursion' above doesn't allow doing it inside funcall.
-      (if (and multi-isearch-next-buffer-current-function
-              (buffer-live-p multi-isearch-current-buffer))
-         (switch-to-buffer multi-isearch-current-buffer))
+      (when multi-isearch-next-buffer-current-function
+        (multi-isearch-switch-buffer))
       (goto-char pos1)
       pos1)))
 
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 335efb9..338880f 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -190,10 +190,10 @@ the initial buffer."
   (if (or (null multi-isearch-pause)
          (and multi-isearch-pause multi-isearch-current-buffer))
       (progn
-       (switch-to-buffer
-        (setq multi-isearch-current-buffer
-              (funcall multi-isearch-next-buffer-current-function
-                       (current-buffer) t)))
+       (setq multi-isearch-current-buffer
+             (funcall multi-isearch-next-buffer-current-function
+                      (current-buffer) t))
+       (multi-isearch-switch-buffer)
        (goto-char (if isearch-forward (point-min) (point-max))))
     (setq multi-isearch-current-buffer (current-buffer))
     (setq isearch-wrapped nil)))
@@ -208,8 +208,18 @@ search status stack."
 (defun multi-isearch-pop-state (_cmd buffer)
   "Restore the multiple buffers search state in BUFFER.
 Switch to the buffer restored from the search status stack."
-  (unless (equal buffer (current-buffer))
-    (switch-to-buffer (setq multi-isearch-current-buffer buffer))))
+  (unless (eq buffer (current-buffer))
+    (setq multi-isearch-current-buffer buffer)
+    (multi-isearch-switch-buffer)))
+
+;;;###autoload
+(defun multi-isearch-switch-buffer ()
+  "Switch to the next buffer in multi-buffer search."
+  (when (and (buffer-live-p multi-isearch-current-buffer)
+             (not (eq multi-isearch-current-buffer (current-buffer))))
+    (setq isearch-mode nil)
+    (switch-to-buffer multi-isearch-current-buffer)
+    (setq isearch-mode " M-Isearch")))
 
 
 ;;; Global multi-buffer search invocations



reply via email to

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