aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/isearch.el5
-rw-r--r--lisp/misearch.el22
2 files changed, 18 insertions, 9 deletions
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 9f3cfd70fb3..536c76ea5df 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).
3506 (when pos1 3506 (when pos1
3507 ;; When using multiple buffers isearch, switch to the new buffer here, 3507 ;; When using multiple buffers isearch, switch to the new buffer here,
3508 ;; because `save-excursion' above doesn't allow doing it inside funcall. 3508 ;; because `save-excursion' above doesn't allow doing it inside funcall.
3509 (if (and multi-isearch-next-buffer-current-function 3509 (when multi-isearch-next-buffer-current-function
3510 (buffer-live-p multi-isearch-current-buffer)) 3510 (multi-isearch-switch-buffer))
3511 (switch-to-buffer multi-isearch-current-buffer))
3512 (goto-char pos1) 3511 (goto-char pos1)
3513 pos1))) 3512 pos1)))
3514 3513
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 335efb95161..338880f25f2 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -190,10 +190,10 @@ the initial buffer."
190 (if (or (null multi-isearch-pause) 190 (if (or (null multi-isearch-pause)
191 (and multi-isearch-pause multi-isearch-current-buffer)) 191 (and multi-isearch-pause multi-isearch-current-buffer))
192 (progn 192 (progn
193 (switch-to-buffer 193 (setq multi-isearch-current-buffer
194 (setq multi-isearch-current-buffer 194 (funcall multi-isearch-next-buffer-current-function
195 (funcall multi-isearch-next-buffer-current-function 195 (current-buffer) t))
196 (current-buffer) t))) 196 (multi-isearch-switch-buffer)
197 (goto-char (if isearch-forward (point-min) (point-max)))) 197 (goto-char (if isearch-forward (point-min) (point-max))))
198 (setq multi-isearch-current-buffer (current-buffer)) 198 (setq multi-isearch-current-buffer (current-buffer))
199 (setq isearch-wrapped nil))) 199 (setq isearch-wrapped nil)))
@@ -208,8 +208,18 @@ search status stack."
208(defun multi-isearch-pop-state (_cmd buffer) 208(defun multi-isearch-pop-state (_cmd buffer)
209 "Restore the multiple buffers search state in BUFFER. 209 "Restore the multiple buffers search state in BUFFER.
210Switch to the buffer restored from the search status stack." 210Switch to the buffer restored from the search status stack."
211 (unless (equal buffer (current-buffer)) 211 (unless (eq buffer (current-buffer))
212 (switch-to-buffer (setq multi-isearch-current-buffer buffer)))) 212 (setq multi-isearch-current-buffer buffer)
213 (multi-isearch-switch-buffer)))
214
215;;;###autoload
216(defun multi-isearch-switch-buffer ()
217 "Switch to the next buffer in multi-buffer search."
218 (when (and (buffer-live-p multi-isearch-current-buffer)
219 (not (eq multi-isearch-current-buffer (current-buffer))))
220 (setq isearch-mode nil)
221 (switch-to-buffer multi-isearch-current-buffer)
222 (setq isearch-mode " M-Isearch")))
213 223
214 224
215;;; Global multi-buffer search invocations 225;;; Global multi-buffer search invocations