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, :initil sera exécuté au moment de la première lecture de votre fichier emacs, mais :configsera exécuté au moment où le paquet est réellement chargé.
Dans votre exemple, l'utilisation de modediffè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 :demandpour 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-packageles 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-modene 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' :configexpression n'est jamais évaluée car un package nommé html-moden'est jamais chargé. Le déplacement de la même expression :initfonctionne car le code init est toujours évalué, que le package soit ou non chargé.