私の.emacsの下のコードは正常に動作しますが、バイトコンパイルしようとすると "無効なキーマップのマイキーモードマップ"エラーが表示されます。マイナーモードのキーバインドをバイトコンパイルするときに無効なキーマップエラー
(eval-and-compile
(defvar my-keys-mode-map (make-sparse-keymap) "my-keys-mode keymap.")
(define-minor-mode my-keys-mode
"A minor mode to override major modes keys."
t " my-keys" 'my-keys-mode-map)
(bind-key "C-;" (quote right-char) my-keys-mode-map)
(bind-key "C-j" (quote left-char) my-keys-mode-map)
)
エラーがバインドキー行です。私はbind-keyの代わりにdefine-keyを試していますが、make-sparse-mapではなくmake-keymapを使用していますが運がありません。私はelispにあまり堪能ではない。バイトコンパイラによって認識されるようにキーマップを定義する他の方法はありますか?
'(define-key my-keys-mode-map(kbd" C-; ")# 'right-char)'を試してください。 – Lindydancer
@Lindydancer、問題は私のキーマップの前の引用でした。しかし、あなたの提案にあるシンボルの前の#は何をしていますか? – RNP
これは関数の引用に使用されます。この場合、それは普通の見積もりとほぼ同じです。しかし、 'lambda'の前に普通の引用符を使うと、システムはそれを普通のリストと見なしてコンパイルしません。 – Lindydancer