emacsで、現在のバッファーのシャドウ/オーバーライドされたキーバインディングを表示するにはどうすればよいですか?実行中は表示されませんdescribe-bindings
(C-h b
)。
言い換えると、バッファでアクティブなモードに競合するキーバインディングがあるかどうかを確認するにはどうすればよいですか?
emacsで、現在のバッファーのシャドウ/オーバーライドされたキーバインディングを表示するにはどうすればよいですか?実行中は表示されませんdescribe-bindings
(C-h b
)。
言い換えると、バッファでアクティブなモードに競合するキーバインディングがあるかどうかを確認するにはどうすればよいですか?
ただ電話してdescribe-mode
ください:C-hm
モードdocstringの大部分はキーマップを表示し、ここでそれらをリストするために使用されるメソッドは、バインディングがシャドウされているかどうかも示します。
何が影になっているのかはわかりませんが、もちろん、C-hcまたはで確認するのは簡単C-hkです。
例えば:
key binding
--- -------
[...]
C-M-q indent-sexp
(that binding is currently shadowed by another mode)
そのテキストは、関数が呼び出されsubstitute-command-keys
たときにモードdocstringを処理する関数によって生成されます。documentation
例えば:
(substitute-command-keys "\\{lisp-interaction-mode-map}")
次の関数も役立ちます。
(key-binding KEY &optional ACCEPT-DEFAULT NO-REMAP POSITION) ;; dominant binding
(global-key-binding KEYS &optional ACCEPT-DEFAULT)
(local-key-binding KEYS &optional ACCEPT-DEFAULT)
(minor-mode-key-binding KEY &optional ACCEPT-DEFAULT) ;; discover keymap(s)
それの一体のために私はこれをしました:
(define-key c++-mode-map "\C-c\C-s" 'kaw-sort-projects)
次に、Ch bを実行しました(バインディングを確認するため)。そして、この出力を取得しました:
Major Mode Bindings:
key binding
--- -------
C-c C-q c-indent-defun
C-c C-s kaw-sort-projects
C-c C-u c-up-conditional
C-c C-w subword-mode
だからそれは現れているようです。
これはあなたが意味したことですか?
キーを定義するときに以前の値を提供するこの関数を作成しました
(defun define-key-warn (map key fxn)
"Bind a key and give info message if already bound"
(setq old-fxn (lookup-key map key))
(if old-fxn
(message "INFO: key %s was defined as %s" key old-fxn))
(define-key map key fxn)
)