]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/misearch.el (multi-isearch-switch-buffer): New function.
authorJuri Linkov <juri@linkov.net>
Sun, 9 May 2021 19:27:08 +0000 (22:27 +0300)
committerJuri Linkov <juri@linkov.net>
Sun, 9 May 2021 19:27:08 +0000 (22:27 +0300)
* 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
lisp/misearch.el

index 9f3cfd70fb3e32b6e4fca752e20e90e48b788fb5..536c76ea5df9b9531eea4f648fff568833e0c068 100644 (file)
@@ -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)))
 
index 335efb951617b97fb700cefad64a15762cd60d51..338880f25f25092f1e900d4a912129ab72c1bbb7 100644 (file)
@@ -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")))
 
 \f
 ;;; Global multi-buffer search invocations