覆盖区域中的缓冲区只读

时间:2014-11-12 13:00:04

标签: emacs elisp

我希望大多数缓冲区是只读的,除了一个小区域(一部分行)。

我首先尝试了类似

的内容
(setq buffer-read-only t)
(let ((inhibit-read-only t))
  (add-text-properties start end '(read-only nil)))

但显然buffer-read-only优先于read-only property

我现在将buffer-read-only设置为nil,并将read-only属性设置为{em>所有内容的<{1>},但可编辑区域。 (或t被视为无操作。)

有更好的方法吗?

编辑:

我的用例的更详细描述是我希望我的缓冲区显示异步进程的输出。输出主要用于只读查看。但是,一行的一小部分是可编辑的。如果再次运行,该部分将成为流程的输入。

1 个答案:

答案 0 :(得分:2)

在Emacs 24及更早版本中,没有简单的方法可以满足您的需求。我同意您使用read-only属性标记所有内容的解决方案,但您希望可编辑的部分除外。

Emacs 25将具有inhibit-read-only属性,它完全符合您的要求。它于11月16日由larsi实施,并由eww。

使用