28.7 Буферы только для чтения

Если буфер является только для чтения, вы не можете изменять его содержимое, хотя вы можете изменять свой вид содержимого прокручиванием и сужением.

Буферы только для чтения используются в двух типах ситуаций:

Переменная: buffer-read-only

Эта буферная переменная указывает, является ли буфер только для чтения. Буфер является только для чтения, если эта переменная не равна nil. Однако символы, имеющие свойство текста inhibit-read-only, все еще могут быть изменены. См. inhibit-read-only.

Переменная: inhibit-read-only

Если эта переменная не равна nil, то буферы только для чтения и, в зависимости от фактического значения, некоторые или все символы только для чтения могут быть изменены. Символы только для чтения в буфере — это те, которые имеют неравное nil свойство текста read-only. См. Свойства со специальным значением, для получения дополнительной информации о свойствах текста.

Если inhibit-read-only равно t, то все свойства символов read-only не имеют значения. Если inhibit-read-only — это список, то свойства символов read-only не имеют значения, если они являются членами этого списка (сравнение выполняется с помощью eq).

Команда: read-only-mode &optional arg

Это команда режима для второстепенного режима "Только для чтения", который является буферным второстепенным режимом. Когда режим включен, buffer-read-only является не nil в буфере; когда он отключен, buffer-read-only является nil в буфере. Конвенция вызова такая же, как для других команд второстепенных режимов (см. Конвенции для написания второстепенных режимов).

Этот второстепенный режим в основном служит оберткой для buffer-read-only; в отличие от большинства второстепенных режимов, здесь нет отдельной переменной read-only-mode. Даже когда режим "Только для чтения" отключен, символы с не nil свойствами текста read-only остаются только для чтения. Чтобы временно игнорировать все состояния только для чтения, свяжите inhibit-read-only, как описано выше.

При включении режима "Только для чтения" эта команда режима также включает режим просмотра, если опция view-read-only не равна nil. См. Различные операции с буфером в Руководство GNU Emacs. При отключении режима "Только для чтения" он отключает режим просмотра, если режим просмотра был включен.

Функция: barf-if-buffer-read-only &optional position

Эта функция сигнализирует об ошибке buffer-read-only, если текущий буфер только для чтения. Если текст по position (по умолчанию точка) имеет установленное свойство текста inhibit-read-only, ошибка не будет вызвана.

См. Использование interactive, для другого способа сигнализации об ошибке, если текущий буфер только для чтения.