EDIT:キーボード終了(通常はCgにバインドされています)があることを理解しています。しかし、Emacs に付属する編集機能 (この場合のように) をどのように扱うかについて知りたいと思っています。いくつかの組み込み関数を少しだけ変更したいときに、この種の状況に時々遭遇します。
emacs では M-ESC ESC を (または ESC を 3 回) 押すと、transient-mark などの多くの状況から抜け出すことができます。意図したよりも多くのエスケープ キー) が発生し、Windows の構成が強制終了されてしまい、非常に面倒です。関数 keyboard-escape-quit は simple.el で定義されています。
(defun keyboard-escape-quit ()
"Exit the current \"mode\" (in a generalized sense of the word).
This command can exit an interactive command such as `query-replace',
can clear out a prefix argument or a region,
can get out of the minibuffer or other recursive edit,
cancel the use of the current buffer (for special-purpose buffers),
or go back to just one window (by deleting all but the selected window)."
(interactive)
(cond ((eq last-command 'mode-exited) nil)
((> (minibuffer-depth) 0)
(abort-recursive-edit))
(current-prefix-arg
nil)
((and transient-mark-mode mark-active)
(deactivate-mark))
((> (recursion-depth) 0)
(exit-recursive-edit))
(buffer-quit-function
(funcall buffer-quit-function))
((not (one-window-p t))
(delete-other-windows))
((string-match "^ \\*" (buffer-name (current-buffer)))
(bury-buffer))))
そして、次の行が必要ないことがわかります。
((not (one-window-p t))
(delete-other-windows))
しかし、この関数を変更する最良の方法は何ですか? 1) simple.el を変更する 2) この関数を .emacs ファイルにコピーして、そこで変更を行う。どちらの方法もあまり良くありません。理想的には、私は批判の線で何かを見たいと思っていますが、この場合はどうすればよいかわかりません。