Emacs:将缓冲区的一部分设为只读

9 emacs

我有时会编辑文件,emacs其中文件的一部分是文档或其他不应编辑的内容,另一部分是“播放区域”,我可以在其中自由编辑和创建新文本。

问题:我可以将 emacs 缓冲区的一部分设为只读吗?

最简单的例子是将 1-100 行设为只读(例如)。更复杂的例子(类似emacs的书签)将是使之间的所有文字[readonly][/readonly]编辑。

我用谷歌搜索了这个,但找不到任何有用的东西。

Kyl*_*nes 7

是的,您可以使用文本属性将缓冲区的一部分设为只读。下面的代码定义了两个新命令make-region-read-onlymake-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)))
Run Code Online (Sandbox Code Playgroud)