私はマクロに出くわしましたwith-eval-after-load
インストールしようとしたときpersp-mode
from ここ 。しかし、Emacs内やGoogleでマクロを見つけることができません。それはどこで定義されていますか?それは標準のEmacsLispの一部ですか?
etc/NEWS
から:
* LISP Changes in Emacs 24.4
...
** New macro `with-eval-after-load'.
This is like the old `eval-after-load', but better behaved.
Emacs24.4は2014年10月20日にリリースされました。
eval-after-load
は、マクロではなく関数であるため、動作が悪いと見なされます。したがって、内部のコードを引用符で囲む必要があります。つまり、バイトコンパイルできません。また、1つのフォームのみを受け入れるため、複数のフォームがある場合は、progn
を使用する必要があります。例えば:
(eval-after-load "foo"
'(progn
(setq foo 42)
(setq bar 17)))
with-eval-after-load
と同等のバージョンは次のようになります。
(with-eval-after-load "foo"
(setq foo 42)
(setq bar 17))
コメントの Clément で指摘されているように、with-eval-after-load
の欠点の1つは、問題のモジュールで定義されたマクロに依存できないことですが、eval-after-load
を使用するとそのようなことが確実になります。マクロが定義され、使用できるようになっています。これは emacs-develで説明 でした。