summaryrefslogtreecommitdiff
path: root/src/buffer.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2018-01-01 01:13:04 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2018-01-01 01:13:04 -0800
commitbb267f17f9e1e593d8dee379aceee22d7fa42680 (patch)
tree466dfb3f8ef7587ebcb652709bd1cc05d18a92f3 /src/buffer.c
parenta5835dfee139322de7aa071f1c87ef015acbecad (diff)
parent63b04c11d530f4a6a41f112d1b3ba1ed1eb81195 (diff)
Merge from origin/emacs-26
63b04c11d5 Fix copyright years by hand 5c7dd8a783 Update copyright year to 2018 220a9ecba1 Merge from Gnulib 312c565566 Don't add empty keyboard macro to macro ring (Bug#24992) 39ca289a7a Allow customization of decoding of "man" command f8240815ea * etc/NEWS: Add security consideration note on passphrase ... 0c78822c70 Fix subtle problem with scroll-down when scroll-margin is ... acd289c5a4 Fix problems with indexing in User manual b240c7846b * lisp/help.el (describe-key): Only (copy-sequence elt) wh... e879a5444a * src/buffer.c (Frestore_buffer_modified_p): Fix bug#29846 81b1028b63 Improve documentation of 'inhibit-modification-hooks' and ... 7175496d7a Fix doc string of 'enable-recursive-minibuffers' 5b38406491 Fix documentation of delsel and of killing text # Conflicts: # etc/NEWS # etc/refcards/ru-refcard.tex
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 75cb470af8d..f8c57a74b4e 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1,6 +1,6 @@
/* Buffer manipulation primitives for GNU Emacs.
-Copyright (C) 1985-1989, 1993-1995, 1997-2017 Free Software Foundation,
+Copyright (C) 1985-1989, 1993-1995, 1997-2018 Free Software Foundation,
Inc.
This file is part of GNU Emacs.
@@ -1320,7 +1320,12 @@ menu bar menus and the frame title. */)
DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p,
1, 1, 0,
doc: /* Mark current buffer as modified or unmodified according to FLAG.
-A non-nil FLAG means mark the buffer modified. */)
+A non-nil FLAG means mark the buffer modified.
+In addition, this function unconditionally forces redisplay of the
+mode lines of the windows that display the current buffer, and also
+locks or unlocks the file visited by the buffer, depending on whether
+the function's argument is non-nil, but only if both `buffer-file-name'
+and `buffer-file-truename' are non-nil. */)
(Lisp_Object flag)
{
Frestore_buffer_modified_p (flag);
@@ -1341,12 +1346,14 @@ A non-nil FLAG means mark the buffer modified. */)
DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p,
Srestore_buffer_modified_p, 1, 1, 0,
- doc: /* Like `set-buffer-modified-p', with a difference concerning redisplay.
+ doc: /* Like `set-buffer-modified-p', but doesn't redisplay buffer's mode line.
+This function also locks and unlocks the file visited by the buffer,
+if both `buffer-file-truename' and `buffer-file-name' are non-nil.
+
It is not ensured that mode lines will be updated to show the modified
state of the current buffer. Use with care. */)
(Lisp_Object flag)
{
- Lisp_Object fn;
/* If buffer becoming modified, lock the file.
If buffer becoming unmodified, unlock the file. */
@@ -1355,15 +1362,18 @@ state of the current buffer. Use with care. */)
? current_buffer->base_buffer
: current_buffer;
- fn = BVAR (b, file_truename);
- /* Test buffer-file-name so that binding it to nil is effective. */
- if (!NILP (fn) && ! NILP (BVAR (b, filename)))
+ if (!inhibit_modification_hooks)
{
- bool already = SAVE_MODIFF < MODIFF;
- if (!already && !NILP (flag))
- lock_file (fn);
- else if (already && NILP (flag))
- unlock_file (fn);
+ Lisp_Object fn = BVAR (b, file_truename);
+ /* Test buffer-file-name so that binding it to nil is effective. */
+ if (!NILP (fn) && ! NILP (BVAR (b, filename)))
+ {
+ bool already = SAVE_MODIFF < MODIFF;
+ if (!already && !NILP (flag))
+ lock_file (fn);
+ else if (already && NILP (flag))
+ unlock_file (fn);
+ }
}
/* Here we have a problem. SAVE_MODIFF is used here to encode