From: Noam Postavsky Date: Sun, 4 Sep 2016 03:38:35 +0000 (-0400) Subject: Don't require isearch-update before isearch-done X-Git-Tag: emacs-25.1.90~141^2 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6234012;p=emacs.git 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 68f4b5292781bc331b040105c4079902b993835c) --- diff --git a/lisp/isearch.el b/lisp/isearch.el index a97247671cc..9df7627fa7c 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -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. diff --git a/test/automated/isearch-tests.el b/test/automated/isearch-tests.el index 48c342403c9..52f312d0b97 100644 --- a/test/automated/isearch-tests.el +++ b/test/automated/isearch-tests.el @@ -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