diff options
| author | Juri Linkov | 2021-05-09 22:27:08 +0300 |
|---|---|---|
| committer | Juri Linkov | 2021-05-09 22:27:08 +0300 |
| commit | 25c775b4e964aaa2cbf17997c0479dfc2ecf33e2 (patch) | |
| tree | 38736a9f82b8e11cab42d6ffbcd63d4427bfe410 | |
| parent | 3d2c892114ebd35cb10928bb87f991316a0ca55c (diff) | |
| download | emacs-25c775b4e964aaa2cbf17997c0479dfc2ecf33e2.tar.gz emacs-25c775b4e964aaa2cbf17997c0479dfc2ecf33e2.zip | |
* 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
| -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 |