* insdel.c (prepare_to_modify_buffer): Force redisplay if
authorDmitry Antipov <dmantipov@yandex.ru>
Wed, 23 Jan 2013 14:49:54 +0000 (18:49 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Wed, 23 Jan 2013 14:49:54 +0000 (18:49 +0400)
hidden buffer is prepared to modification (Bug#13164).

src/ChangeLog
src/insdel.c

index 7dc7b25..67b63eb 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * insdel.c (prepare_to_modify_buffer): Force redisplay if
+       hidden buffer is prepared to modification (Bug#13164).
+
 2013-01-22  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * window.h (struct window): Change window_end_valid member from
index 3032478..98dd97b 100644 (file)
@@ -1804,9 +1804,12 @@ prepare_to_modify_buffer (ptrdiff_t start, ptrdiff_t end,
     Fbarf_if_buffer_read_only ();
 
   /* If we're modifying the buffer other than shown in a selected window,
-     let redisplay consider other windows if this buffer is visible.  */
+     let redisplay consider other windows if this buffer is visible or
+     hidden (although hidden buffers have zero window counts, their state
+     may affect the display too, e.g. via mode lines of other buffers).  */
   if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer
-      && buffer_window_count (current_buffer))
+      && (buffer_window_count (current_buffer)
+         || BUFFER_HIDDEN_P (current_buffer)))
     ++windows_or_buffers_changed;
 
   if (buffer_intervals (current_buffer))