If a buffer is read-only, then you cannot change its contents, although you may change your view of the contents by scrolling and narrowing.
Read-only buffers are used in two kinds of situations:
Here, the purpose is to inform the user that editing the buffer with the aim of saving it in the file may be futile or undesirable. The user who wants to change the buffer text despite this can do so after clearing the read-only flag with C-x C-q.
The special commands of these modes bind buffer-read-only
to
nil
(with let
) or bind inhibit-read-only
to
t
around the places where they themselves change the text.
This buffer-local variable specifies whether the buffer is read-only.
The buffer is read-only if this variable is non-nil
. However,
characters that have the inhibit-read-only
text property can
still be modified. See inhibit-read-only.
If this variable is non-nil
, then read-only buffers and,
depending on the actual value, some or all read-only characters may be
modified. Read-only characters in a buffer are those that have a
non-nil
read-only
text property. See Properties with Special Meanings, for more information about text properties.
If inhibit-read-only
is t
, all read-only
character
properties have no effect. If inhibit-read-only
is a list, then
read-only
character properties have no effect if they are members
of the list (comparison is done with eq
).
This is the mode command for Read Only minor mode, a buffer-local
minor mode. When the mode is enabled, buffer-read-only
is
non-nil
in the buffer; when disabled, buffer-read-only
is nil
in the buffer. The calling convention is the same as
for other minor mode commands (see Conventions for Writing Minor Modes).
This minor mode mainly serves as a wrapper for
buffer-read-only
; unlike most minor modes, there is no separate
read-only-mode
variable. Even when Read Only mode is disabled,
characters with non-nil
read-only
text properties remain
read-only. To temporarily ignore all read-only states, bind
inhibit-read-only
, as described above.
When enabling Read Only mode, this mode command also enables View mode
if the option view-read-only
is non-nil
. See Miscellaneous Buffer Operations in The GNU Emacs Manual.
When disabling Read Only mode, it disables View mode if View mode was
enabled.
This function signals a buffer-read-only
error if the current
buffer is read-only. If the text at position (which defaults to
point) has the inhibit-read-only
text property set, the error
will not be raised.
See Using interactive
, for another way to signal an error if the
current buffer is read-only.