1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-07 15:21:46 +00:00

Don't require isearch-update before isearch-done

It is useful to be able to call `isearch-done' unconditionally to
ensure a non-isearching state.

* lisp/isearch.el (isearch-done): Check that `isearch--current-buffer'
is a live buffer before using it (Bug #21091).
* test/lisp/isearch-tests.el (isearch--test-done): Test it.

(cherry picked from commit 68f4b52927)
This commit is contained in:
Noam Postavsky 2016-09-03 23:38:35 -04:00
parent 5e50114d24
commit 623401267a
2 changed files with 12 additions and 3 deletions

View File

@ -1049,9 +1049,10 @@ NOPUSH is t and EDIT is t."
(remove-hook 'mouse-leave-buffer-hook 'isearch-done)
(remove-hook 'kbd-macro-termination-hook 'isearch-done)
(setq isearch-lazy-highlight-start nil)
(with-current-buffer isearch--current-buffer
(setq isearch--current-buffer nil)
(setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)))
(when (buffer-live-p isearch--current-buffer)
(with-current-buffer isearch--current-buffer
(setq isearch--current-buffer nil)
(setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit))))
;; Called by all commands that terminate isearch-mode.
;; If NOPUSH is non-nil, we don't push the string on the search ring.

View File

@ -28,5 +28,13 @@
(isearch-update)
(should (equal isearch--current-buffer (current-buffer)))))
(ert-deftest isearch--test-done ()
;; Normal operation.
(isearch-update)
(isearch-done)
(should-not isearch--current-buffer)
;; Bug #21091: let `isearch-done' work without `isearch-update'.
(isearch-done))
(provide 'isearch-tests)
;;; isearch-tests.el ends here