Отмена области только для чтения в emacs с использованием ACL2

Я столкнулся с каким-то странным заклинанием нажатий клавиш в emacs при использовании ACL2, и область в моем буфере становится доступной только для чтения. Что может вызвать это? Как мне пометить регион только для чтения?

1 ответ

Причиной:

Предположим, у вас есть загруженный 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://stackru.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>
Другие вопросы по тегам