Yanıtlar:
Kullanıcı paket yapılandırma gerektirir olmadığını belirleyebilir hangi herhangi bir kural var mı
:inityoksa:config?
Tüm ayarlar ve paketler için geçerli olan genel bir kural yoktur; Sadece okuyarak bu anahtar kelimeler anlamını tanıyın gerekir README dosyasını arasında use-package.
Özetle, :initüst düzeyinde kendisini oluşturan formlar yerleştirilmiş sanki blok, başlangıçta (tipik çağrının yani dışında hiç çalıştırılır use-package, aramalarınızdan) user-init-file. Bu, karşılık gelen paketin yüklü olup olmadığına bakılmaksızın her zaman çalıştırıldıkları anlamına gelir.
:configKarşılık gelen paket yüklendikten sonra blok, diğer taraftan, bir arada, çalıştırılan eval-after-loadmekanizma.
Bu nedenle, geçerli uzun süren ayarları konumundan ' :inite taşıyarak başlangıç zamanınızı artırabilirsiniz :config. Yalnızca belirli bir paket yüklendikten sonra tanımlanan bir değişkeni değiştirmeniz gerekirse, benzer şekilde bunu :configbloğa yerleştirmeniz gerekir . gnus-home-directoryKarşılık gelen paket yüklenmeden önce bazı değişkenlerin ayarlanması gerekir, bu yüzden yerleştirilmeleri gerekir :init. Kancalar bağlanmamışken bile değiştirilebildiğinden, tüm uygulanabilir add-hook/ remove-hookçağrıları :initbloğa koymanızı şiddetle tavsiye ederim ve bu, kurulumunuza daha fazla modülerlik kazandırır.
Yeni :customanahtar kelimeyi kullanarak veya doğrudan Kolay Özelleştirme arabirimini kullanarak belirli bir ayarın nereye yerleştirileceğini bulmak zorunda kalmazsınız .
Genel bir kural olup olmadığından emin değilim (" :initgerçek paket yüklemeden önce ön yapılandırma :configiçin kullanın ve diğer, iyi, yapılandırma için kullanın " dışında).
Ama kendim için :init, örneğin, "bu" paketin işlevlerini kullanmak için başka mod haritası tuş bağlamalarını eklemek istediğimde kullanıyorum. Ve yine de "bu" paketin tembel yüklenmesini istiyorum.
İşte tembel yükleme örneği dired-ranger:
(use-package dired-ranger
:commands (dired-ranger-copy dired-ranger-paste dired-ranger-move)
:init
(add-hook 'dired-mode-hook
(lambda ()
(define-key dired-mode-map (kbd "M-w") 'dired-ranger-copy)
(define-key dired-mode-map (kbd "C-y") 'dired-ranger-paste)
(define-key dired-mode-map (kbd "C-c C-y") 'dired-ranger-move))))
Not: orada hiçbir Eğer :defer, :commands, :modeve diğerleri daha sonra, paket yükleme tembel kılan :initve :config(ama az ya da çok aynı olmalıdır :init:) önceki değerlendirilecektir)
:configçok geç - tembel yükleme bağlarımı uygulamaz. Ve :bindile :mapaslında bağlamaz.
:configçok geç değil - tam dired-mode-mapolarak ilk tanımlandığı zamandır. Muhtemelen sadece yanlış koyarak konum use-packageşeklinde dired-rangeryerine dired, nerede dired-mode-maptanımlanır. Bu aynı zamanda neden :bindçalışmadığını da açıklayabilir . Temel olarak, ya yanlış use-packagebir şey yapıyorsunuz ya da bir hata var. Yerel tuş bağlantılarını ve eval-after-loadotomatik yüklenen komutların / tuş haritalarının genel tuş bağlantılarını karıştırmayın .
use-package-always-ensureve -paket-dired kullanmaya çalıştığınızda elpa onu getiremedi oldu. Ama :ensure nilorada sorunu çözmek ve zincirleme paket yükleme dired-> dired-rangerkullanarak ayarlayabilirsiniz :after.
:bindanahtar kelimeyi kullanabilir veya:configbloktaki anahtar bağlarını değiştirebilirsiniz .