changeset 28207:fd3ece8a61e5

(Fset_buffer_modified_p): Set update_mode_lines only if buffer is displayed in some window.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 20 Mar 2000 12:24:57 +0000
parents 07ac059dece0
children e83a7193f612
files src/buffer.c
diffstat 1 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Mon Mar 20 12:24:13 2000 +0000
+++ b/src/buffer.c	Mon Mar 20 12:24:57 2000 +0000
@@ -806,6 +806,7 @@
 {
   register int already;
   register Lisp_Object fn;
+  Lisp_Object buffer, window;
 
 #ifdef CLASH_DETECTION
   /* If buffer becoming modified, lock the file.
@@ -824,7 +825,23 @@
 #endif /* CLASH_DETECTION */
 
   SAVE_MODIFF = NILP (flag) ? MODIFF : 0;
-  update_mode_lines++;
+  
+  /* Set update_mode_lines only if buffer is displayed in some window.
+     Packages like jit-lock or lazy-lock preserve a buffer's modified
+     state by recording/restoring the state around blocks of code.
+     Setting update_mode_lines makes redisplay consider all windows
+     (on all frames).  Stealth fontification of buffers not displayed
+     would incur additional redisplay costs if we'd set
+     update_modes_lines unconditionally.
+
+     Ideally, I think there should be another mechanism for fontifying
+     buffers without "modifying" buffers, or redisplay should be
+     smarter about updating the `*' in mode lines.  --gerd  */
+  XSETBUFFER (buffer, current_buffer);
+  window = Fget_buffer_window (buffer, Qt);
+  if (WINDOWP (window))
+    update_mode_lines++;
+  
   return flag;
 }