はい、すべてのEmacsコマンドは機能ですが、すべての機能がEmacsコマンドではありません。あなたは、任意のelisp機能(interactive)
を使用してM-x
介してアクセス可能なコマンドにすることができます。今すぐ
(defun my-command()
"This is the docstring"
(interactive)
(do-foo)
(do-bar))
あなたにインタラクティブmy-command
を定義したので、あなたはすぐにM-x my-command
とそれにアクセスすることができます。 Emacsはあなたの名前を使って自動的にすべての簿記を行います。
これはです。新しいコマンドを追加するには、
(global-set-key (kbd "C-c f") 'my-command)
さらに、すべてのキーバインディングは、このような対話型関数に関連付けられています。 C-h k
を使用してどの機能がどのキーによって呼び出されているのかを確認し、キーシーケンスを入力します。これにより、そのキーシーケンスで呼び出される関数のドキュメントが表示されます。だから、
C-c f runs the command my-command, which is an interactive Lisp
function.
It is bound to C-c f.
(my-command)
This is the docstring
:あなたがコードを実行した場合、私は(他のものの間で)あなたを含む緩衝液を与えるだろうC-h k C-c f
をやって、あなたのドキュメント文字列をあなたに与えたすべてのEmacsコマンドは(interactive)
で定義された関数だけです。 (実際には、EmacsのCコアのプリミティブ関数もいくつかありますが、それはそれほど重要ではありません)
コマンドと関数の間のこのシンプルで洗練された関係は、 Emacsを簡単にカスタマイズできるようにするものです。あなたの通常のアクションが呼び出す関数が何であるか不思議であれば、それらを簡単に調べることができます。コマンドを追加したい場合は、関数内に余分な行が1つだけあります。
M-xは関数ではなく、関数にバインドされたキーシーケンスです。それが起こると、コマンドをパラメータとして受け取る関数にバインドされます。インタラクティブに呼び出されると、その 'interactive'形式はコマンド名の入力を要求します。 – tripleee