changeset 28518:5da961b04d97

(Frestore_buffer_modified_p): New function. (syms_of_buffer): Defsubr it.
author Gerd Moellmann <gerd@gnu.org>
date Sun, 09 Apr 2000 10:47:46 +0000
parents 4609228bcd2a
children 2fa4374d4f09
files src/buffer.c
diffstat 1 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Sat Apr 08 23:42:11 2000 +0000
+++ b/src/buffer.c	Sun Apr 09 10:47:46 2000 +0000
@@ -845,6 +845,36 @@
   return flag;
 }
 
+DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p,
+       Srestore_buffer_modified_p, 1, 1, 0,
+   "Like `set-buffer-modified-p', with a differences concerning redisplay.\n\
+It is not ensured that mode lines will be updated to show the modified\n\
+state of the current buffer.  Use with care.")
+  (flag)
+     Lisp_Object flag;
+{
+#ifdef CLASH_DETECTION
+  Lisp_Object fn;
+  
+  /* If buffer becoming modified, lock the file.
+     If buffer becoming unmodified, unlock the file.  */
+
+  fn = current_buffer->file_truename;
+  /* Test buffer-file-name so that binding it to nil is effective.  */
+  if (!NILP (fn) && ! NILP (current_buffer->filename))
+    {
+      int already = SAVE_MODIFF < MODIFF;
+      if (!already && !NILP (flag))
+	lock_file (fn);
+      else if (already && NILP (flag))
+	unlock_file (fn);
+    }
+#endif /* CLASH_DETECTION */
+  
+  SAVE_MODIFF = NILP (flag) ? MODIFF : 0;
+  return flag;
+}
+
 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick,
   0, 1, 0,
   "Return BUFFER's tick counter, incremented for each change in text.\n\
@@ -4773,6 +4803,7 @@
   defsubr (&Soverlay_lists);
   defsubr (&Soverlay_get);
   defsubr (&Soverlay_put);
+  defsubr (&Srestore_buffer_modified_p);
 }
 
 void