私は、現在のメジャーモードのキーマップで与えられたコマンドを永久にバインドするelisp関数を書いています。例えば、Emacs現在のローカルキーマップの名前?
(define-key python-mode-map [C-f1] 'python-describe-symbol)
コマンドとキーシーケンスは、ユーザーからインタラクティブに収集されます。しかし、現在のメジャーモードに対応するKEYMAPの名前(例えば、「python-mode-map」)の作成に問題があります。
私は関数(current-local-map)を試しましたが、この関数はその名前ではなくキーマップオブジェクト自体を返します。
多くのメジャーモードのキーマップは、 'major-mode-name'-mode-map 'という規則に従って命名されていますが、必ずしもそうではありません(例えば、python-shell-map)。だから、私はこの規約に頼らないコードを使用したいと思っています。 (私は現在のメジャーモードの名前にアクセスする方法もわかりません)。動作するよう(define-key (current-local-map) key command)
が、それは、初期化ファイルにコードとして機能しないように
(define-key ...)
は、initファイルに追加されます。
他のコードを生成するコードを書いているのはなぜですか?あなたが解決しようとしているより深刻な問題は何ですか?おそらく他の人が単純に「必要とする」ライブラリを書くことができますか?あなたは、現在のモードに基づいて正しいことをする 'magically-describe-symbol'のような種類の関数を実行する単一のモードを書くことができますか? –
あなたがプログラムでこれらを追加できるのであれば、より一般的でよりエレガントな方法でそれを解決できるかもしれません。それ以外のコードスニペットモードマップ... –
@TreyJacksonそれらの「断片の束」は、自分の '.emacs'に属するコードの一部である可能性があります。他のコードを生成するコードは、Lispでは欺かれることはありません。 – user4815162342