[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffer
From: |
Juri Linkov |
Subject: |
bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set. |
Date: |
Wed, 21 Apr 2021 20:59:19 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) |
> 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:
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
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., (continued)
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/20
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/20
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., martin rudalics, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., martin rudalics, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Juri Linkov, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Gregory Heytings, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Juri Linkov, 2021/04/21
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set.,
Juri Linkov <=
- bug#47894: 28.0.50; isearch does not work if enable-recursive-minibuffers is on and some input method is set., Juri Linkov, 2021/04/21