2012-12-20 10 views
9

emacsでは、カレントバッファのシャドー/オーバーライドされたキーバインディングを表示するにはどうしたらいいですか? describe-bindingsC-h b)を実行しても表示されません。オーバーライド/シャドーされたキーバインディングを表示するにはどうすればよいですか?

つまり、バッファ内のアクティブなモードでキーバインドが競合しているかどうかを確認するにはどうすればよいですか?私はなかったそれの一体ため

+0

私は回避策はhttp://stackoverflow.com/aに1のようなマイナーモードを使用することであると思います/ 683575/789593を参照し、マイナーモードがオフになっているときに特定のキーに別のコマンドがあるかどうか確認してください。 'Emacs -q'でEmacsを起動して、設定に含まれているキーがあなたの設定なしで別のバインディングを持っているかどうかを調べることも、もっと重大なアプローチかもしれません。 –

+0

残念ながら、これはマイナーモードの競合の問題には対処しません。可能なすべてのマイナーモードペアを個別にテストする必要があります。 – Norswap

答えて

7

を定義するときだけdescribe-mode呼び出すあなたの前の値を与え、この関数を作成

:モードdocstringのの大半は彼らのキーマップが表示されますメートル

Chのをし、ここにリストする方法でも、バインディングがシャドーされているかどうかがわかります。

それはそれはの影に何を教えてくれ、もちろんC-HCまたはC-HKに確認するのは簡単だことはありません。

例えば:テキストdocumentation関数が呼び出されたときにモードドキュメンテーション文字列を処理する機能substitute-command-keysによって生成される

key    binding 
---    ------- 
[...] 
C-M-q   indent-sexp 
    (that binding is currently shadowed by another mode) 

例:

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

(define-key c++-mode-map "\C-c\C-s" 'kaw-sort-projects) 

を、次いでC-H 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) 
) 
+1

私が見たいと思っているのは、C-c C-sによって隠されたバインディングです。たとえば、 'define-key'を呼び出す前に' C-c C-s'が 'my-command'にバインドされていたら、' C-C C-s my-command(shadowed) 'がどこかに現れているのを見たいと思います。 – Norswap

+0

ああ。モードのデフォルトバインディングをダンプ/アクセスする方法が必要です。それについて一瞬考えなければならない。 – kdubs

+0

は、一度キーをバインドするように見えますが、元のキーのヒントは完全に消去されます。キーのバインドを解除し、キーを空にします。私はどんな助けにもならないように見える。 – kdubs

関連する問題