GNU bug report logs - #45072
28.0.50; Emacs switches other buffer back uncontrollably, if other window's buffer is changed by user during minibuffer editing

Previous Next

Package: emacs;

Reported by: Jean Louis <bugs <at> gnu.support>

Date: Sun, 6 Dec 2020 14:09:01 UTC

Severity: minor

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

From: Juri Linkov <juri <at> linkov.net>
To: martin rudalics <rudalics <at> gmx.at>
Cc: Eli Zaretskii <eliz <at> gnu.org>, Lars Ingebrigtsen <larsi <at> gnus.org>, bugs <at> gnu.support, 45072 <at> debbugs.gnu.org
Subject: bug#45072: 28.0.50; Emacs switches other buffer back uncontrollably, if other window's buffer is changed by user during minibuffer editing
Date: Tue, 03 Aug 2021 10:57:04 +0300
[Message part 1 (text/plain, inline)]
>> Yes.  But maybe read-from-minibuffer-restore-windows would be even
>> better.
>
> And `read-minibuffer-restore-windows' would be even shorter.  Attached.
>
> +  DEFVAR_BOOL ("read-minibuffer-restore-windows", read_minibuffer_restore_windows,
> +	       doc: /* Non-nil means restore window configurations on exit from minibuffer.
> +If this is non-nil (the default), reading input with the minibuffer will
> +restore, on exit, the window configurations of the frame where the
> +minibuffer was entered from and, if it is different, the frame that owns
> +the associated minibuffer window.  If this is nil, no such restorations
> +are done.  */);
> +  read_minibuffer_restore_windows = true;

I recommend to install this patch.  Maybe it's not perfect, but works
reasonably well, and there is the high demand for this feature.
Only such additional patch is necessary:

[read-minibuffer-restore-windows-exit-minibuffer.patch (text/x-diff, inline)]
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 3751ba80e0..40454eed23 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -2319,6 +2333,10 @@ exit-minibuffer
       (error "%s" "Not in most nested command loop"))
     (when (not (innermost-minibuffer-p))
       (error "%s" "Not in most nested minibuffer")))
+  ;; When read_minibuf doesn't restore all previous windows,
+  ;; then at least pop down the completions window.
+  (unless read-minibuffer-restore-windows
+    (minibuffer-hide-completions))
   ;; If the command that uses this has made modifications in the minibuffer,
   ;; we don't want them to cause deactivation of the mark in the original
   ;; buffer.

This bug report was last modified 3 years and 292 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.