diff options
| -rw-r--r-- | lisp/isearch.el | 5 | ||||
| -rw-r--r-- | lisp/misearch.el | 22 |
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. |
| 210 | Switch to the buffer restored from the search status stack." | 210 | Switch 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 |