* lisp/isearch.el (isearch--saved-overriding-local-map): New internal variable.
authorJuri Linkov <juri@jurta.org>
Fri, 6 Dec 2013 00:55:20 +0000 (02:55 +0200)
committerJuri Linkov <juri@jurta.org>
Fri, 6 Dec 2013 00:55:20 +0000 (02:55 +0200)
(isearch-mode): Set it to the initial value of `overriding-terminal-local-map'.
(isearch-pre-command-hook): Compare `overriding-terminal-local-map'
with `isearch--saved-overriding-local-map'.

Fixes: debbugs:16035

lisp/ChangeLog
lisp/isearch.el

index 27a7e75..1fd715d 100644 (file)
@@ -1,3 +1,12 @@
+2013-12-06  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch--saved-overriding-local-map):
+       New internal variable.
+       (isearch-mode): Set it to the initial value of
+       `overriding-terminal-local-map'.
+       (isearch-pre-command-hook): Compare `overriding-terminal-local-map'
+       with `isearch--saved-overriding-local-map'.  (Bug#16035)
+
 2013-12-06  Dmitry Gutov  <dgutov@yandex.ru>
 
        * progmodes/octave.el (inferior-octave-completion-table): Turn
index aee2f4f..b411396 100644 (file)
@@ -637,6 +637,8 @@ Each set is a vector of the form:
 ;; isearch is invoked.
 (defvar isearch-input-method-local-p nil)
 
+(defvar isearch--saved-overriding-local-map nil)
+
 ;; Minor-mode-alist changes - kind of redundant with the
 ;; echo area, but if isearching in multiple windows, it can be useful.
 
@@ -904,6 +906,9 @@ convert the search string to a regexp used by regexp search functions."
 
   (setq overriding-terminal-local-map isearch-mode-map)
   (run-hooks 'isearch-mode-hook)
+  ;; Remember the initial map possibly modified
+  ;; by external packages in isearch-mode-hook.  (Bug#16035)
+  (setq isearch--saved-overriding-local-map overriding-terminal-local-map)
 
   ;; Pushing the initial state used to be before running isearch-mode-hook,
   ;; but a hook might set `isearch-push-state-function' used in
@@ -2235,7 +2240,7 @@ before the command is executed globally with terminated Isearch."
     (cond
      ;; Don't exit Isearch if we're in the middle of some
      ;; set-temporary-overlay-map thingy like universal-argument--mode.
-     ((not (eq overriding-terminal-local-map isearch-mode-map)))
+     ((not (eq overriding-terminal-local-map isearch--saved-overriding-local-map)))
      ;; Don't exit Isearch for isearch key bindings.
      ((commandp (lookup-key isearch-mode-map key nil)))
      ;; Optionally edit the search string instead of exiting.