From bf09320951c0c1c1831a929a0330f574e78afd49 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 6 Dec 2013 02:55:20 +0200 Subject: [PATCH] * lisp/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'. Fixes: debbugs:16035 --- lisp/ChangeLog | 9 +++++++++ lisp/isearch.el | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 27a7e75ccef..1fd715dda59 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2013-12-06 Juri Linkov + + * 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 * progmodes/octave.el (inferior-octave-completion-table): Turn diff --git a/lisp/isearch.el b/lisp/isearch.el index aee2f4f9f27..b411396cc70 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -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. -- 2.39.2