Paket ertelendiğinde farklıdır, yani gerekinceye kadar yüklenmez. Bu durumda :initemacs dosyanız ilk okunduğunda :configyürütülür , ancak paketin gerçekten yüklendiği sırada yürütülür.
modeÖrneğinizde , örtük olarak kullanılması paketi yüklemeyi defers. Paketi bir html dosyası ilk kez ziyaret edildiğinde yüklenecek şekilde yapılandırdınız.
:demandPaketin her zaman başlangıçta yüklendiğinden emin olmak için kullanabilirsiniz , ancak burada yapmak istediğiniz şey kancayı koymaktır :init.
Öğretiden:
:init Code to run when `use-package' form evals.
Bunu kullanıcı init dosyanıza koyduğunuz için, temelde başlangıçta çalışacağı anlamına gelir.
:config Runs if and when package loads.
Yani, paket aslında yüklenene kadar çalıştırmayın ..
:defer Defer loading of package -- automatic if :commands, :bind, :bind*, :mode or :interpreter are used.
Bir paketi otomatik olarak ertelenen şeylerin listesine dikkat edin. Temel olarak use-package, bu pakete ihtiyacınız olan koşulları söylerseniz , bu koşullar ortaya çıkana kadar yüklemek istemediğinizi varsayar.
:demand Prevent deferred loading in all cases.
Belirttiğiniz diğer seçeneklerden bağımsız olarak, paketin başlangıçta yüklendiğinden emin olun.
Güncelleme
Son yorumlara dayanarak bunu tekrar gözden geçirmek ... Yukarıda söylediğim şey doğrudur, ancak soruyu doğru cevapladığını düşünmüyorum. Buradaki temel sorun aslında html-modebir paket değil, paket tarafından tanımlanan bir moddur sgml-mode. Bu benim için beklendiği gibi çalışıyor:
(use-package sgml-mode
:mode ("\\.html\\'" . html-mode)
:config (add-hook 'html-mode-hook 'turn-off-auto-fill))
Orijinal örnekte, :configifade adlı bir paket html-modeasla yüklenmediği için ifade asla değerlendirilmez . :initPaketin yüklenip yüklenmediğine bakılmaksızın init kodu her zaman değerlendirildiğinden aynı ifadeyi işe yarar.