Emacs: сделать часть буфера доступной только для чтения

9

Я иногда редактирую файлы, emacsгде части файла являются документацией или чем-то еще, что не должно редактироваться, а другие части являются «игровыми зонами», где я могу свободно редактировать и создавать новый текст.

Вопрос: могу ли я сделать часть буфера emacs доступной только для чтения?

Простейшим примером будет создание строк 1-100 только для чтения (например). Более сложный пример (похожий на закладки emacs) - сделать весь текст между [readonly]и [/readonly]недоступным для редактирования.

Я гуглил это, но не смог найти ничего полезного.

barrycarter
источник

Ответы:

8

Да, вы можете сделать часть буфера доступной только для чтения, используя свойства текста. Ниже код определяет две новые команды make-region-read-onlyи make-region-read-writeкоторые влияют на область между точкой и меткой. Поместите код в ваш файл .emacs, чтобы сделать команды доступными через Meta-x.

(defun make-region-read-only (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only t)))

(defun make-region-read-write (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only nil)))
Кайл Джонс
источник