after-init-hook vs eval-after-load / with-eval-after-load


13

パッケージがEmacs 24どのように機能するかはかなり有用であることがわかりましたが、経験豊富なユーザーまたはコア開発者から、24.4の典型的なケースで実際にどちらが優先されるかについての明確な回答が欲しいです。

Afaik (add-hook 'after-init-hook ...)は、パッケージのカスタマイズを設定するためのいわゆる総当たり的なアプローチです。ただし、拡張性の段階的で個別の遅延ロードとうまく機能する、より動的できめの細かい構成にはeval-after-load、より構文的にシュガーwith-eval-after-loadが適しています。

私の理解は正しいですか?他に何を心に留めておくべきですか?

回答:


11

Afaik (add-hook 'after-init-hook ...)は、パッケージのカスタマイズを設定するためのいわゆる総当たり的なアプローチです。

いいえ。initファイルでパッケージを構成する場合、一般的な方法は(package-initialize)ファイルの先頭で呼び出してから構成を行うことです。after-init-hookこの目的のために不必要に複雑です。

ただし、拡張性の段階的で個別の遅延ロードとうまく機能する、より動的できめの細かい構成にはeval-after-load、より構文的にシュガーwith-eval-after-loadが適しています。

(with-)eval-after-loadパッケージがロードされた後にあなたがしたいことのために使用されます。package-initializeパッケージをロードするのではなく、「準備」するだけです(自動ロードをロードします)。

eval-after-load構成のすべてのセットを使用する場合(package-initialize)、上部で呼び出す必要はありません。しかし、通常はを呼び出す(package-initialize)ことで、ほとんどの構成をinitファイルに直接書き込むことができ、その後、eval-after-load非常に長いコードまたはロードされるパッケージに依存するコードのみを書き込むことができます 。


しかしeval-after-load、与えられたパッケージのすべてを適切に配置し、まったく使用(package-initialize)しないのはまだ正しいでしょうか?
エリックカプルン14年

@ErikAllikはい。すべての構成セットでeval-after-loadを使用する場合、上部で(package-initialize)を呼び出す必要はありません。
マラバルバ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.