From: Eli Zaretskii Date: Mon, 30 Dec 2019 16:00:17 +0000 (+0200) Subject: Ensure mini-window is resized to show active minibuffer contents X-Git-Tag: emacs-27.0.90~247 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e3ec84fd7d;p=emacs.git Ensure mini-window is resized to show active minibuffer contents * src/keyboard.c (read_char, command_loop_1): Resize the mini-window after clearing the echo area while minibuffer is active. (Bug#38645) --- diff --git a/src/keyboard.c b/src/keyboard.c index 4cf1f64b487..cb311efd7e5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1318,6 +1318,11 @@ command_loop_1 (void) message1 (0); safe_run_hooks (Qecho_area_clear_hook); + /* We cleared the echo area, and the minibuffer will now + show, so resize the mini-window in case the minibuffer + needs more or less space than the echo area. */ + resize_mini_window (XWINDOW (minibuf_window), false); + unbind_to (count, Qnil); /* If a C-g came in before, treat it as input now. */ @@ -2989,6 +2994,16 @@ read_char (int commandflag, Lisp_Object map, { safe_run_hooks (Qecho_area_clear_hook); clear_message (1, 0); + /* If we were showing the echo-area message on top of an + active minibuffer, resize the mini-window, since the + minibuffer may need more or less space than the echo area + we've just wiped. */ + if (minibuf_level + && EQ (minibuf_window, echo_area_window) + /* The case where minibuffer-message-timeout is a number + was already handled near the beginning of command_loop_1. */ + && !NUMBERP (Vminibuffer_message_timeout)) + resize_mini_window (XWINDOW (minibuf_window), false); } else if (FUNCTIONP (Vclear_message_function)) clear_message (1, 0);