GNU bug report logs -
#47894
28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set.
Previous Next
Reported by: max.brieiev <at> gmail.com
Date: Mon, 19 Apr 2021 16:08:01 UTC
Severity: normal
Tags: fixed
Fixed in version 28.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
> So rather than forcibly exit isearch, we could select the original window back
I see two cases that could go wrong:
1. another window is selected by display-buffer-alist.
This can be fixed by selecting an old window back.
2. another buffer is displayed in the same window
by display-buffer-alist.
Isearch help commands solve the second problem by simply using
isearch--display-help-action that inhibits displaying other buffers
in the same window.
Instead of let-binding display-buffer-overriding-action
in all isearch help commands, we could set it temporarily
like we already temporarily set overriding-terminal-local-map:
[isearch--saved-overriding-action.patch (text/x-diff, inline)]
diff --git a/lisp/isearch.el b/lisp/isearch.el
index f1e6e3eba2..1dfb0c86fc 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -499,32 +499,28 @@ isearch--display-help-action
(defun isearch-help-for-help ()
"Display Isearch help menu."
(interactive)
- (let ((display-buffer-overriding-action isearch--display-help-action))
- (isearch-help-for-help-internal))
+ (isearch-help-for-help-internal)
(isearch-update))
(defun isearch-describe-bindings ()
"Show a list of all keys defined in Isearch mode, and their definitions.
This is like `describe-bindings', but displays only Isearch keys."
(interactive)
- (let ((display-buffer-overriding-action isearch--display-help-action))
- (with-help-window "*Help*"
- (with-current-buffer standard-output
- (princ "Isearch Mode Bindings:\n")
- (princ (substitute-command-keys "\\{isearch-mode-map}"))))))
+ (with-help-window "*Help*"
+ (with-current-buffer standard-output
+ (princ "Isearch Mode Bindings:\n")
+ (princ (substitute-command-keys "\\{isearch-mode-map}")))))
(defun isearch-describe-key ()
"Display documentation of the function invoked by isearch key."
(interactive)
- (let ((display-buffer-overriding-action isearch--display-help-action))
- (call-interactively 'describe-key))
+ (call-interactively 'describe-key)
(isearch-update))
(defun isearch-describe-mode ()
"Display documentation of Isearch mode."
(interactive)
- (let ((display-buffer-overriding-action isearch--display-help-action))
- (describe-function 'isearch-forward))
+ (describe-function 'isearch-forward)
(isearch-update))
(defalias 'isearch-mode-help 'isearch-describe-mode)
@@ -953,6 +949,7 @@ isearch-hidden
(defvar isearch-input-method-function nil)
(defvar isearch--saved-overriding-local-map nil)
+(defvar isearch--saved-overriding-action nil)
;; Minor-mode-alist changes - kind of redundant with the
;; echo area, but if isearching in multiple windows, it can be useful.
@@ -1278,6 +1280,8 @@ isearch-mode
(setq isearch-mode " Isearch") ;; forward? regexp?
(force-mode-line-update)
+ (setq isearch--saved-overriding-action display-buffer-overriding-action
+ display-buffer-overriding-action isearch--display-help-action)
(setq overriding-terminal-local-map isearch-mode-map)
(run-hooks 'isearch-mode-hook)
;; Remember the initial map possibly modified
@@ -1400,6 +1404,7 @@ isearch-done
;; Called by all commands that terminate isearch-mode.
;; If NOPUSH is non-nil, we don't push the string on the search ring.
(setq overriding-terminal-local-map nil)
+ (setq display-buffer-overriding-action isearch--saved-overriding-action)
;; (setq pre-command-hook isearch-old-pre-command-hook) ; for lemacs
(setq minibuffer-message-timeout isearch-original-minibuffer-message-timeout)
(isearch-dehighlight)
@@ -3052,6 +3057,8 @@ isearch-pre-command-hook
(isearch-clean-overlays)))))
(defun isearch-post-command-hook ()
+ (unless (eq (selected-window) (old-selected-window))
+ (select-window (old-selected-window)))
(when isearch-pre-scroll-point
(let ((ab-bel (isearch-string-out-of-window isearch-pre-scroll-point)))
(if ab-bel
This bug report was last modified 4 years and 35 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.