0

在使用 ACL2 时,我在 emacs 中遇到了一些奇怪的击键咒语,我的缓冲区中的一个区域变成了只读的。什么会导致这种情况?如何取消将区域标记为只读?

4

1 回答 1

0

一个原因:

假设您已加载 emacs-acl2.el 并在 ~/.emacs 文件中包含以下内容:

(fset 'copy-and-advance
 [?\C-t ?\C-e return ?\C-x ?o ?\C-\M-f ?\C-\M-f ?\C-\M-b])

(global-set-key "\C-tn" 'copy-and-advance)
(global-set-key (kbd "<backtab>") 'copy-and-advance) ; backtab is Shift+tab

然后执行以下操作会导致问题:

<switch to *shell* buffer>
ctrl+x b
shift+tab
<"SwitchSwitch" now appears as a read-only region at the prompt of my *shell* buffer>

一个解法:

将其放入您的~/.emacs文件并重新加载您的~/.emacs文件(注意堆栈溢出问题 7410125 的功劳):

(defun set-region-writeable (begin end)
 "See http://stackoverflow.com/questions/7410125"
 (interactive "r")
 (let ((modified (buffer-modified-p))
       (inhibit-read-only t))
   (remove-text-properties begin end '(read-only t))
   (set-buffer-modified-p modified)))

然后执行上面的函数:

ctrl-x h
meta-x set-region-writable
<enter>
于 2015-03-27T16:18:42.707 回答