Paket ertelendiğinde farklıdır, yani gerekinceye kadar yüklenmez. Bu durumda :init
emacs dosyanız ilk okunduğunda :config
yü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.
:demand
Paketin 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-mode
bir 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, :config
ifade adlı bir paket html-mode
asla yüklenmediği için ifade asla değerlendirilmez . :init
Paketin yüklenip yüklenmediğine bakılmaksızın init kodu her zaman değerlendirildiğinden aynı ifadeyi işe yarar.