gancio post-iniziatore vs eval-dopo-carico / con-eval-dopo-carico


13

Ho trovato piuttosto utile come funzionano i pacchetti in Emacs 24 , tuttavia, vorrei una risposta definitiva da un utente esperto o da uno sviluppatore principale su quale di questi sia effettivamente preferito nel caso tipico di 24.4.

Afaik, (add-hook 'after-init-hook ...)è il cosiddetto approccio a forza bruta per l'impostazione delle personalizzazioni per i pacchetti. Tuttavia, eval-after-loade il suo più zuccherino sintatticamente with-eval-after-loadsembra più appropriato per una configurazione più dinamica e a grana fine che gioca bene con il caricamento graduale, separato e pigro delle estensioni.

Il mio capisce è corretto? Cos'altro dovrei tenere a mente?

Risposte:


11

Afaik, (add-hook 'after-init-hook ...)è il cosiddetto approccio a forza bruta per l'impostazione delle personalizzazioni per i pacchetti.

No. Se si desidera configurare i pacchetti nel file init, l'approccio tipico è quello di chiamare (package-initialize)nella parte superiore del file, quindi eseguire le configurazioni. after-init-hookè inutilmente complicato per questo scopo.

Tuttavia, eval-after-loade il suo più zuccherino sintatticamente with-eval-after-loadsembra più appropriato per una configurazione più dinamica e a grana fine che gioca bene con il caricamento graduale, separato e pigro delle estensioni.

(with-)eval-after-loadè usato per le cose che vuoi fare dopo che un pacchetto è stato caricato. package-initializenon carica i pacchetti, li “prepara” solo (carica i loro caricamenti automatici).

Se utilizzi eval-after-loadogni set di configurazioni, non dovrai chiamare (package-initialize)in alto. Ma ciò che la gente di solito fa è chiamare (package-initialize), in modo che la maggior parte delle configurazioni possa essere scritta direttamente nel file init, e quindi solo il eval-after-loadcodice che è molto lungo o che dipende dal pacchetto che viene caricato.


ma sarebbe comunque OK mettere tutto sotto eval-after-loadper un determinato pacchetto, giusto, e non usarlo (package-initialize)affatto?
Erik Kaplun,

@ErikAllik Sì. Se usi eval-after-load in ogni set di configurazioni, non dovrai chiamare (pacchetto-inizializza) in alto.
Malabarba,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.