Sono diversi se il pacchetto viene rinviato, ovvero non caricato fino a quando non è necessario. In tal caso :init
verrà eseguito al momento della prima lettura del file emacs, ma :config
verrà eseguito al momento del caricamento effettivo del pacchetto.
Nel tuo esempio, l'uso di mode
difensori impliciti durante il caricamento del pacchetto. Hai configurato il pacchetto per il caricamento la prima volta che viene visitato un file html.
È possibile utilizzare :demand
per assicurarsi che il pacchetto sia sempre caricato all'avvio, ma molto probabilmente quello che si desidera fare qui è agganciare :init
.
Dalla dotstring:
:init Code to run when `use-package' form evals.
Dal momento che lo stai inserendo nel tuo file init utente, ciò significa sostanzialmente che verrà eseguito all'avvio.
:config Runs if and when package loads.
Quindi, non eseguire fino a quando il pacchetto non viene effettivamente caricato.
:defer Defer loading of package -- automatic if :commands, :bind, :bind*, :mode or :interpreter are used.
Nota l'elenco delle cose che fanno differire automaticamente un pacchetto. Fondamentalmente se si dicono use-package
le condizioni in cui è necessario questo pacchetto, si presume che non si desideri caricarlo fino a quando non si verificano tali condizioni.
:demand Prevent deferred loading in all cases.
Assicurati che il pacchetto sia caricato all'avvio, indipendentemente da quali altre opzioni hai specificato.
Aggiornare
Rivisitare questo in base ai commenti recenti ... Quello che ho detto sopra è tutto vero, ma non credo che risponda correttamente alla domanda. Il problema alla radice qui è in realtà che html-mode
non è un pacchetto, ma piuttosto una modalità definita dal pacchetto sgml-mode
. Questo funziona come previsto per me:
(use-package sgml-mode
:mode ("\\.html\\'" . html-mode)
:config (add-hook 'html-mode-hook 'turn-off-auto-fill))
Nell'esempio originale, l' :config
espressione non viene mai valutata perché un pacchetto denominato html-mode
non viene mai caricato. Spostare la stessa espressione su :init
funziona perché il codice di inizializzazione viene sempre valutato, indipendentemente dal fatto che il pacchetto venga mai caricato.