Commit b120cc17 authored by Jérémy Compostella's avatar Jérémy Compostella Committed by Stefan Monnier
Browse files

Fix up display of the *Minibuf-0* buffer in the mini window.

* src/keyboard.c (read_char): Don't clear the echo area if there's no
message to clear.
* src/xdisp.c (redisplay_internal): Redisplay the mini window (with the
contents of *Minibuf-0*) if there' no message displayed in its stead.
parent 9a4b36f8
2012-05-07 Jérémy Compostella <jeremy.compostella@gmail.com>
Fix up display of the *Minibuf-0* buffer in the mini window.
* keyboard.c (read_char): Don't clear the echo area if there's no
message to clear.
* xdisp.c (redisplay_internal): Redisplay the mini window (with the
contents of *Minibuf-0*) if there' no message displayed in its stead.
2012-05-07 Michael Albinus <michael.albinus@gmx.de> 2012-05-07 Michael Albinus <michael.albinus@gmx.de>
* dbusbind.c (XD_DEBUG_MESSAGE): Don't print message twice in * dbusbind.c (XD_DEBUG_MESSAGE): Don't print message twice in
......
...@@ -2996,8 +2996,10 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps, ...@@ -2996,8 +2996,10 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps,
&& !(EQ (Qselect_window, XCAR (c))))) && !(EQ (Qselect_window, XCAR (c)))))
{ {
if (!NILP (echo_area_buffer[0])) if (!NILP (echo_area_buffer[0]))
safe_run_hooks (Qecho_area_clear_hook); {
clear_message (1, 0); safe_run_hooks (Qecho_area_clear_hook);
clear_message (1, 0);
}
} }
reread_for_input_method: reread_for_input_method:
......
...@@ -12727,6 +12727,9 @@ redisplay_internal (void) ...@@ -12727,6 +12727,9 @@ redisplay_internal (void)
frames. Zero means, only selected_window is considered. */ frames. Zero means, only selected_window is considered. */
int consider_all_windows_p; int consider_all_windows_p;
   
/* Non-zero means redisplay has to redisplay the miniwindow */
int update_miniwindow_p = 0;
TRACE ((stderr, "redisplay_internal %d\n", redisplaying_p)); TRACE ((stderr, "redisplay_internal %d\n", redisplaying_p));
   
/* No redisplay if running in batch mode or frame is not yet fully /* No redisplay if running in batch mode or frame is not yet fully
...@@ -12913,6 +12916,10 @@ redisplay_internal (void) ...@@ -12913,6 +12916,10 @@ redisplay_internal (void)
&& !MINI_WINDOW_P (XWINDOW (selected_window)))) && !MINI_WINDOW_P (XWINDOW (selected_window))))
{ {
int window_height_changed_p = echo_area_display (0); int window_height_changed_p = echo_area_display (0);
if (message_cleared_p)
update_miniwindow_p = 1;
must_finish = 1; must_finish = 1;
   
/* If we don't display the current message, don't clear the /* If we don't display the current message, don't clear the
...@@ -12949,7 +12956,7 @@ redisplay_internal (void) ...@@ -12949,7 +12956,7 @@ redisplay_internal (void)
/* FIXME: this causes all frames to be updated, which seems unnecessary /* FIXME: this causes all frames to be updated, which seems unnecessary
since only the current frame needs to be considered. This function needs since only the current frame needs to be considered. This function needs
to be rewritten with two variables, consider_all_windows and to be rewritten with two variables, consider_all_windows and
consider_all_frames. */ consider_all_frames. */
consider_all_windows_p = 1; consider_all_windows_p = 1;
++windows_or_buffers_changed; ++windows_or_buffers_changed;
++update_mode_lines; ++update_mode_lines;
...@@ -13135,7 +13142,8 @@ redisplay_internal (void) ...@@ -13135,7 +13142,8 @@ redisplay_internal (void)
then we can't just move the cursor. */ then we can't just move the cursor. */
else if (! (!NILP (Vtransient_mark_mode) else if (! (!NILP (Vtransient_mark_mode)
&& !NILP (BVAR (current_buffer, mark_active))) && !NILP (BVAR (current_buffer, mark_active)))
&& (EQ (selected_window, BVAR (current_buffer, last_selected_window)) && (EQ (selected_window,
BVAR (current_buffer, last_selected_window))
|| highlight_nonselected_windows) || highlight_nonselected_windows)
&& NILP (w->region_showing) && NILP (w->region_showing)
&& NILP (Vshow_trailing_whitespace) && NILP (Vshow_trailing_whitespace)
...@@ -13288,7 +13296,7 @@ redisplay_internal (void) ...@@ -13288,7 +13296,7 @@ redisplay_internal (void)
} }
else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf)) else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
{ {
Lisp_Object mini_window; Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf);
struct frame *mini_frame; struct frame *mini_frame;
   
displayed_buffer = XBUFFER (XWINDOW (selected_window)->buffer); displayed_buffer = XBUFFER (XWINDOW (selected_window)->buffer);
...@@ -13297,6 +13305,10 @@ redisplay_internal (void) ...@@ -13297,6 +13305,10 @@ redisplay_internal (void)
internal_condition_case_1 (redisplay_window_1, selected_window, internal_condition_case_1 (redisplay_window_1, selected_window,
list_of_error, list_of_error,
redisplay_window_error); redisplay_window_error);
if (update_miniwindow_p)
internal_condition_case_1 (redisplay_window_1, mini_window,
list_of_error,
redisplay_window_error);
   
/* Compare desired and current matrices, perform output. */ /* Compare desired and current matrices, perform output. */
   
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment