webdevqa.jp.net

ラムダをキーにバインドする際の「間違ったタイプの引数:commandp」エラー

ここで「間違った型の引数:commandp、(lambda nil(forward-line 5))」を取得しています。

(global-set-key [?\M-n] (lambda () (forward-line 5)))

エラーは何ですか?私はそれが簡単だと確信しているし、明らかな何かを見逃している。

78
Paul Nathan

global-set-keyは、対話型コマンドを想定しています。 (lambda () (interactive) (forward-line 5))動作するはずです。

ところで、 C-h f commandpは、そのようなエラーのかなり良い出発点です。

116
brendan

正しい形式は次のようになります-

(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))

問題は、(interactive)(ブレンダンが言及したように)。

ところで、あなたは私が(kbd)キーバインディングを指定する関数。キーバインドをほぼ文字通りに配置できるため、この機能は非常に便利です。

34

また、通常の.emacsファイルを使用しているが、パッケージをインストールしていない新しいマシンでこのエラーが発生し、実行するコマンドがそれらのパッケージの1つに含まれています。 (確実に実行できないコマンドはインタラクティブではないためです!)

2
Paul Bissex