2016-12-20 10 views
0

これはEmacs用の関数を作成する私の最初の試みです。emacs関数は動作しませんが、エラーメッセージはありません

(defun open-init-file() 
    "Opens the ~/.emacs.d/init.el file" 
    (find-file user-init-file)) 

私はそれを置く:私はその後、 "EVAL-バッファ" を走った

~/.emacs.d/init.el 

私はこの簡単な関数を作成しました。

エラーメッセージは表示されません。しかし、私はこの機能を呼び出すことはできません。 M-xとタイプして "open-init-file"と入力すると、その名前に一致する関数がないと言われます。

この関数を独自のバッファに入れても、最後にカーソルを置いてeval-last-sexpを実行すると、この関数はまだEmacsには存在しません。

そして、まだ、私はバッファでこれを置く場合:

(find-file user-init-file) 

と、私はこれの末尾にカーソルを置き、その後、EVAL-最後-S式を実行する場合、私は期待どおり、これは動作します。

私は間違っていますか?

答えて

4

yordomが述べたようにあなたが作るとinteractive機能(コマンド別名)

(defun open-init-file() 
    "Opens the ~/.emacs.d/init.el file" 
    (interactive) 
    (find-file user-init-file)) 
3

必要があり、あなたがする必要があります。

(defun open-init-file() 
    "Opens the ~/.emacs.d/init.el file" 
    (interactive) 
    (find-file user-init-file)) 

M-xを呼び出すときにopen-init-fileを見つけることができない理由がありますあなたがfunctionを定義していて、commandではありません。すべてのコマンドは機能ですが、それ以外の方法はありません。 :)

+0

また、インタラクティブではない古い(インタラクティブな)関数を(テストや探索など)呼び出す場合は、 'eval-expression'(デフォルトで' M-: 'に束縛されています)を使用し、関数を適用するためのlisp構文を入力してください。例えば'(open-init-file)'です。 –

関連する問題