Ils sont différents si le package est différé, c'est-à-dire qu'il n'est pas chargé jusqu'à ce qu'il soit nécessaire. Dans ce cas, :init
il sera exécuté au moment de la première lecture de votre fichier emacs, mais :config
sera exécuté au moment où le paquet est réellement chargé.
Dans votre exemple, l'utilisation de mode
diffère implicitement le chargement du package. Vous avez configuré le package pour qu'il soit chargé la première fois qu'un fichier html est visité.
Vous pouvez utiliser :demand
pour vous assurer que le package est toujours chargé au démarrage, mais plus probablement ce que vous voulez faire ici est de mettre votre crochet :init
.
De la docstring:
:init Code to run when `use-package' form evals.
Puisque vous placez cela dans votre fichier d'initialisation utilisateur, cela signifie essentiellement qu'il s'exécutera au démarrage.
:config Runs if and when package loads.
Donc, ne courez pas tant que le paquet n'est pas réellement chargé.
:defer Defer loading of package -- automatic if :commands, :bind, :bind*, :mode or :interpreter are used.
Notez la liste des choses qui rendent automatiquement un package différé. Fondamentalement, si vous indiquez use-package
les conditions dans lesquelles vous avez besoin de ce package, cela suppose que vous ne voulez pas le charger jusqu'à ce que ces conditions se produisent.
:demand Prevent deferred loading in all cases.
Assurez-vous que le package est chargé au démarrage, quelles que soient les autres options que vous avez spécifiées.
Mise à jour
Revisiter cela sur la base des commentaires récents ... Ce que j'ai dit ci-dessus est tout à fait vrai, mais je ne pense pas qu'il réponde correctement à la question. Le problème racine ici est en fait qu'il html-mode
ne s'agit pas d'un package, mais plutôt d'un mode défini par le package sgml-mode
. Cela fonctionne comme prévu pour moi:
(use-package sgml-mode
:mode ("\\.html\\'" . html-mode)
:config (add-hook 'html-mode-hook 'turn-off-auto-fill))
Dans l'exemple d'origine, l' :config
expression n'est jamais évaluée car un package nommé html-mode
n'est jamais chargé. Le déplacement de la même expression :init
fonctionne car le code init est toujours évalué, que le package soit ou non chargé.