遅延initは良いinitです。
(IMO)
使用する場合 with-eval-after-load
with-eval-after-load
特定の機能またはファイルが最初にロードされるときに1回ロードされるため、キーマップの変更は明らかにこれらの1つに含まれます。なく、少なくともキーマップが初期化時に知られていない可能性があるため、[のような何かしてみてくださいで]を。フックは、フックが開始されるたびに関数をキーにバインドするため、ここでは良い解決策ではありません。以下のようメガネザルのノート、あなたがすることができます続きを読む理由についてではないにフックでを。(define-key message-mode-map (kbd "C-c f") 'Footnote-add-footnote)
emacs -q
local-set-key
最後に、ノートそのwith-eval-after-load
GNU Emacsの24.4は約2ラインラッパーであるの引用符で囲む必要はありません。eval-after-load
body
フックを使用する場合
フックは、特定のモードが開始されるなど、基準が満たされるたびにロードされる関数のリストです。フックの一般的な用途は、以下のようなマイナーモード、ロードすることであるflyspell-mode
かをhl-line-mode
。例(add-hook 'org-agenda-mode-hook 'hl-line-mode)
。以下のようレミは指摘し、add-hooks
スマートで、フック変数がまだには、ロードされている場合でも、正しいことを行います。それにもかかわらず、私は次のような多くの節を持っています。これらは速度向上にとっては無視できるかもしれませんが、組織と依存関係構造の感覚を与えます:
(with-eval-after-load 'org-agenda
(add-hook 'org-agenda-mode-hook 'hl-line-mode))
後にフックに追加するのはなぜorg-agenda
ですか?いつものように、C-h v org-agenda-mode-hook C-j
配信します。フックはにorg-agenda.el
示すように定義されています*help*
。
追加機能の読み込み with-eval-after-load
with-eval-after-load
追加の機能をロードするためにも重要です。おそらく(with-eval-after-load 'org (require 'org-inlinetask))
組織のインラインタスクをロードするようなものが必要でしょう。理由を見るために(find-library "org-inlinetask")
。以来org-inlinetasks.el
、直接(require 'org)
、素敵なすべてのautoload
あなたのやさしいEmacsのメンテナを提供するために、細心の注意を取ったことは、「無視」され、すべてのorg.el(c)
ロードされます。
しかし、(個人的な)defun
複数の場所が必要な場合はどうでしょうか?あなたが本当にうるさいなら、defun
sをあなたの別のファイルに入れてcookie load-path
を追加するautoload
か、Emacsに関数で関数を見つける場所を伝えることができautoload
ます。次に、このような何かが動作します:
(autoload 'org-cdlatex-mode "org" "cdlatex mode from org.")
(with-eval-after-load "latex"
(add-hook 'TeX-mode-hook 'org-cdlatex-mode))
またはrequire
org
、順番に引っ張るのと同じようにできますcdlatex
そして、正直なところ、個人的なdefunは、ほとんどの場合、初期化時間にとっては重要ではありません。私の1150行の個人的なdefuns(84 defuns)は、init.el
バニラEmacsに対して0.02秒追加されています。
初期化時間の測定
初期化時間を概算する簡単な方法は
time emacs --eval "(kill-emacs)"
(に対するベンチマークemacs -q
。
しかし、初期化のボトルネックがどこにあるかについて、より詳細な概算を得るには、Joe Schaferのをご覧くださいesup
。
最後に、ロード時間は魔法のように消えません。プッシュするだけです(各セッションですべての機能を使用する範囲まで)。
with-eval-after-load
が一度ロードされると、キーマップの変更がそこに行きます。フックは、モードが実行されるたびにロードされます。たとえば、モードに関連付けられた新しいファイルのロード時、またはフックが定義されているときです。あなたは、例えばロードでしょうflyspell-mode
かhl-line-mode
フックインチ 私init.el
ではwith-eval-after-load
約160回とadd-hook
110回使用しています。遅延initは良いinit(IMO)です。