Emacsのキーストロークを考慮します。 C-x C-s。 C-h c キーストロークと入力することでどの機能が呼び出されるのか把握できますが、このキーバインドの定義場所を確認するにはどうすればよいですか? どのファイルにキーバインドが定義されていましたか?
は(たぶん正しい答えは、キーマップは、この種の情報を格納しないので、それは、決定することができないということです。)答えて
キーバインドが関数に関連付けられている場所に関する情報は、Emacsでは保持されません。実際、その答えは通常未定義です。
多くの場合、キーバインディングは、マイナーモードの副作用として、またはモードフックによって設定されます。マイナーモードのキーバインドは、多くの場合、comint-mode-map
のような変数に格納されます。このキーマップは、モード変数comint-mode
を設定すると有効になります。しかし、そのモードマップはグローバル変数であり、誰でもどこにでもキーバインディングを追加できます。だから、あなたが望むことは、本質的に、誰が特定の値を持つ変数を設定するのかを追跡することです。同様に、モードフック(local-set-key
を使用)によってローカルに設定されているキーバインディングについても同様です。さらに、キーバインディングをfile variablesまで設定することもできます。これは、Emacsのキーバインディングが一過性であると言うだけです。
最高のことは、キーに関連付けられた機能を見つけて、そのファイル(またはモードが複数のファイルに分割されている場合は関連するファイル)を調べることです。
キーストローク(グローバル、メジャーモード、マイナーモード、マイナーモードのオーバーライド、バッファのローカル、テキストプロパティなど)を設定/関連付ける方法が非常に多いため、emacsのキーバインドルックアップがかなり関わっています。概要については、this documentationをご覧ください。
このような関数を書いて、マイナーモードを調べてキーバインディングがどこに設定されているかを確認できますが、私の最初のテストではキーバインドが定義されていないことがわかりました。しかし、おそらくコードは参考になるでしょう。
(defun guess-where-keybinding-is-defined (key)
"try to guess where a key binding might be defined"
(interactive (list (read-key-sequence "Describe key: ")))
(let ((bindings (minor-mode-key-binding key))
found)
(while (and bindings (not found))
(if (setq found (caar bindings))
(find-function (cdar bindings)))
(setq bindings (cdr bindings)))))
(この質問以外の)解決しようとしている問題はありますか?
だけで行うのMx見つける機能
Emacsのドキュメントから:
(ファンクションファンクション)
ファンクション に近い点を見つけます。
点 周辺機能の 定義を含むソースファイルを検索し(によって選択 `関数でポイントと呼ばれる ') バッファおよび場所が 定義の前にポイント。 バッファがすでに存在する場合は、移動前にマークを設定します。
これは私が探しているものではありません。 *関数*がキーバインド*ではなく定義された場所を教えてくれます。 –
私はあなたがそれを見つけることができるとは思わない。 –
- 1. いつ、どこで_DEBUGが定義されていますか?
- 2. 私の構造体はどのファイルに定義されていますか?
- 3. 定義されていないシンボルは、.cppファイルで定義されていますが、
- 4. time_tはどのように定義されていますか?
- 5. java.awt.Graphicsのメソッドはどこに定義されていますか?
- 6. .hファイルの値が.rcファイルに定義されていません
- 7. メソッドが定義されているかどうかのテスト
- 8. NameError:名前 'freshdatapoly'が定義されていません - 以前に定義された変数ですか?
- 9. xsltファイルで "prefix 'soap'が定義されていません。
- 10. MSBuildプロパティが定義されているかどうかテストしますか?
- 11. ReferenceError:$が定義されていないかUncaught ReferenceError:$が定義されていません
- 12. Enum.values()はどこに定義されていますか?
- 13. Rubyでキーワードはどこに定義されていますか?
- 14. ノードはどこに定義されていますか?
- 15. com.intellij.modules.langはどこに定義されていますか
- 16. DEBUGマクロはどこに定義されていますか?
- 17. Rails: "params"はどこに定義されていますか?
- 18. I18n.localizeはどこでレールに定義されていますか?
- 19. UNS_32はどこに定義されていますか?
- 20. #this.datasource#は通常どこに定義されていますか?
- 21. エイリアスはどこに定義されていますか
- 22. BCRYPT_HASH_FUNCTION_TABLEはどこに定義されていますか?
- 23. Poco ByteOrder :: ToNetwork()はどこに定義されていますか?
- 24. アクションメソッド "setElementClass"はどこに定義されていますか?
- 25. tt_news - "newsMoreLink"レジスタはどこに定義されていますか?
- 26. Ember JS:定義が定義されていません
- 27. 未知ReferenceError:定義が定義されていません
- 28. エースエディタ "定義が定義されていません"
- 29. log4j:どの設定ファイルが使用されましたか?
- 30. 応答データは定義されていますが、data.valueは定義されていませんか?
詳細なお返事ありがとうございます。私は昨日、コアモードで定義された特定のキーバインドか、外部パッケージであるかを調べようとしていたときに、昨日心配していました。 –