使用ACL2撤消emacs中的只读区域

时间:2015-03-27 16:18:43

标签: acl2

在使用ACL2时,我在emacs中点击了一些奇怪的按键,我的缓冲区中的某个区域变为只读。是什么导致这个?如何将区域标记为只读?

1 个答案:

答案 0 :(得分:0)

原因:

假设您在〜/ .emacs文件中加载了emacs-acl2.el以及以下内容:

(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>