diff options
Diffstat (limited to 'src/xdisp.c')
-rw-r--r-- | src/xdisp.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 0a79e6fd891..5e92f3643c0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -881,7 +881,6 @@ static void next_overlay_string (struct it *); static void reseat (struct it *, struct text_pos, int); static void reseat_1 (struct it *, struct text_pos, int); static void back_to_previous_visible_line_start (struct it *); -void reseat_at_previous_visible_line_start (struct it *); static void reseat_at_next_visible_line_start (struct it *, int); static int next_element_from_ellipsis (struct it *); static int next_element_from_display_vector (struct it *); @@ -900,7 +899,6 @@ static int get_next_display_element (struct it *); static enum move_it_result move_it_in_display_line_to (struct it *, ptrdiff_t, int, enum move_operation_enum); -void move_it_vertically_backward (struct it *, int); static void get_visually_first_element (struct it *); static void init_to_row_start (struct it *, struct window *, struct glyph_row *); @@ -9537,7 +9535,15 @@ message_dolog (const char *m, ptrdiff_t nbytes, bool nlflag, bool multibyte) shown = buffer_window_count (current_buffer) > 0; set_buffer_internal (oldbuf); - if (!shown) + /* We called insert_1_both above with its 5th argument (PREPARE) + zero, which prevents insert_1_both from calling + prepare_to_modify_buffer, which in turns prevents us from + incrementing windows_or_buffers_changed even if *Messages* is + shown in some window. So we must manually incrementing + windows_or_buffers_changed here to make up for that. */ + if (shown) + windows_or_buffers_changed++; + else windows_or_buffers_changed = old_windows_or_buffers_changed; message_log_need_newline = !nlflag; Vdeactivate_mark = old_deactivate_mark; |