Drkcore

15 11 2012 Emacs Tweet

local-set-keyに出てくる(interactive)

よく分からないでコピペで増やしたlocal-set-keyだが

(local-set-key "\C-j" (lambda () (interactive) (insert " -> ")))

と、ラムダ式に(interactive)が含まれている。試しに(interactive)を排除して

(local-set-key "\C-j" (insert " -> ")))

を評価(C-x C-e)してC-jを押してみると

Wrong type argument: commandp, (lambda nil (insert " -> "))

とミニバッファにエラーが出力される。commandpとは一体なんだろうか?と f1 f commandp

(commandp FUNCTION &optional FOR-CALL-INTERACTIVELY)

commandかどうかを判定する関数らしいが、よく分からんのでf1 f local-set-keyで見てみると

(local-set-key KEY COMMAND)

関数ではなくてCOMMANDである必要があるらしい。

コマンドとは、定義の最初にinteractiveスペシャルフォームが置かれた関数ですEmacsLISPテクニックバイブル p.79

EmacsLISPテクニックバイブルにちゃんと書いてあった。

ProductName Emacs Lispテクニックバイブル
るびきち
技術評論社 / 3129円 ( 2011-11-26 )


最近elispをよく読むのでかなりお世話になっている本だ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021