From: Stefan Monnier Date: Wed, 27 May 2015 16:16:16 +0000 (-0400) Subject: * lisp/isearch.el (isearch--current-buffer): New var X-Git-Tag: emacs-25.0.90~1956^2^2 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/b506f8007561774479e26e8637467e8afefbe371?hp=401b4c4015e109ef4f59bf3dd558d2a8baf72fb2 * lisp/isearch.el (isearch--current-buffer): New var (isearch-update): Set cursor-sensor-inhibit here. (isearch-done): Unset cursor-sensor-inhibit in the right buffer (bug#20532). --- diff --git a/lisp/isearch.el b/lisp/isearch.el index dc10502309..5599ea5563 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -932,12 +932,6 @@ convert the search string to a regexp used by regexp search functions." (add-hook 'post-command-hook 'isearch-post-command-hook) (add-hook 'mouse-leave-buffer-hook 'isearch-done) (add-hook 'kbd-macro-termination-hook 'isearch-done) - (make-local-variable 'cursor-sensor-inhibit) - (unless (boundp 'cursor-sensor-inhibit) - (setq cursor-sensor-inhibit nil)) - ;; Suspend things like cursor-intangible during Isearch so we can search even - ;; within intangible text. - (push 'isearch cursor-sensor-inhibit) ;; isearch-mode can be made modal (in the sense of not returning to ;; the calling function until searching is completed) by entering @@ -949,10 +943,23 @@ convert the search string to a regexp used by regexp search functions." ;; Some high level utilities. Others below. +(defvar isearch--current-buffer) (defun isearch-update () "This is called after every isearch command to update the display. The last thing it does is to run `isearch-update-post-hook'." + (unless (eq (current-buffer) isearch--current-buffer) + (when isearch--current-buffer + (with-current-buffer isearch--current-buffer + (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)))) + (setq isearch--current-buffer (current-buffer)) + (make-local-variable 'cursor-sensor-inhibit) + (unless (boundp 'cursor-sensor-inhibit) + (setq cursor-sensor-inhibit nil)) + ;; Suspend things like cursor-intangible during Isearch so we can search + ;; even within intangible text. + (push 'isearch cursor-sensor-inhibit)) + (if (and (null unread-command-events) (null executing-kbd-macro)) (progn @@ -1026,7 +1033,9 @@ 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) - (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)) + (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.