after-init-hok 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)взагалі?
Ерік Каплун

@ErikAllik Так. Якщо ви використовуєте eval-after-load навколо кожного набору конфігурацій, вам не потрібно буде дзвонити (ініціалізувати пакет) вгорі.
Малабарба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.