From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/elisp/buffer-modification.html | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 devdocs/elisp/buffer-modification.html (limited to 'devdocs/elisp/buffer-modification.html') diff --git a/devdocs/elisp/buffer-modification.html b/devdocs/elisp/buffer-modification.html new file mode 100644 index 00000000..c28752d4 --- /dev/null +++ b/devdocs/elisp/buffer-modification.html @@ -0,0 +1,25 @@ +

Buffer Modification

Emacs keeps a flag called the modified flag for each buffer, to record whether you have changed the text of the buffer. This flag is set to t whenever you alter the contents of the buffer, and cleared to nil when you save it. Thus, the flag shows whether there are unsaved changes. The flag value is normally shown in the mode line (see Mode Line Variables), and controls saving (see Saving Buffers) and auto-saving (see Auto-Saving).

Some Lisp programs set the flag explicitly. For example, the function set-visited-file-name sets the flag to t, because the text does not match the newly-visited file, even if it is unchanged from the file formerly visited.

The functions that modify the contents of buffers are described in Text.

Function: buffer-modified-p &optional buffer +

This function returns t if the buffer buffer has been modified since it was last read in from a file or saved, or nil otherwise. If buffer is not supplied, the current buffer is tested.

+
Function: set-buffer-modified-p flag +
+

This function marks the current buffer as modified if flag is non-nil, or as unmodified if the flag is nil.

Another effect of calling this function is to cause unconditional redisplay of the mode line for the current buffer. In fact, the function force-mode-line-update works by doing this:

(set-buffer-modified-p (buffer-modified-p))
+
+
+
Function: restore-buffer-modified-p flag +

Like set-buffer-modified-p, but does not force redisplay of mode lines.

+
Command: not-modified &optional arg +
+

This command marks the current buffer as unmodified, and not needing to be saved. If arg is non-nil, it marks the buffer as modified, so that it will be saved at the next suitable occasion. Interactively, arg is the prefix argument.

Don’t use this function in programs, since it prints a message in the echo area; use set-buffer-modified-p (above) instead.

+
+
Function: buffer-modified-tick &optional buffer +

This function returns buffer’s modification-count. This is a counter that increments every time the buffer is modified. If buffer is nil (or omitted), the current buffer is used.

+
Function: buffer-chars-modified-tick &optional buffer +

This function returns buffer’s character-change modification-count. Changes to text properties leave this counter unchanged; however, each time text is inserted or removed from the buffer, the counter is reset to the value that would be returned by buffer-modified-tick. By comparing the values returned by two buffer-chars-modified-tick calls, you can tell whether a character change occurred in that buffer in between the calls. If buffer is nil (or omitted), the current buffer is used.

+

Sometimes there’s a need for modifying buffer in a way that doesn’t really change its text, like if only its text properties are changed. If your program needs to modify a buffer without triggering any hooks and features that react to buffer modifications, use the with-silent-modifications macro.

Macro: with-silent-modifications body… +

Execute body pretending it does not modify the buffer. This includes checking whether the buffer’s file is locked (see File Locks), running buffer modification hooks (see Change Hooks), etc. Note that if body actually modifies the buffer text (as opposed to its text properties), its undo data may become corrupted.

+
+

+ Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
+ https://www.gnu.org/software/emacs/manual/html_node/elisp/Buffer-Modification.html +

+
-- cgit v1.2.3