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 に答える