Yanıtlar:
Kullanıcı paket yapılandırma gerektirir olmadığını belirleyebilir hangi herhangi bir kural var mı
:init
yoksa: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.
:config
Karşılık gelen paket yüklendikten sonra blok, diğer taraftan, bir arada, çalıştırılan eval-after-load
mekanizma.
Bu nedenle, geçerli uzun süren ayarları konumundan ' :init
e 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 :config
bloğa yerleştirmeniz gerekir . gnus-home-directory
Karşı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ı :init
bloğa koymanızı şiddetle tavsiye ederim ve bu, kurulumunuza daha fazla modülerlik kazandırır.
Yeni :custom
anahtar 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 (" :init
gerçek paket yüklemeden önce ön yapılandırma :config
iç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
, :mode
ve diğerleri daha sonra, paket yükleme tembel kılan :init
ve :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 :bind
ile :map
aslında bağlamaz.
:config
çok geç değil - tam dired-mode-map
olarak ilk tanımlandığı zamandır. Muhtemelen sadece yanlış koyarak konum use-package
şeklinde dired-ranger
yerine dired
, nerede dired-mode-map
tanımlanır. Bu aynı zamanda neden :bind
çalışmadığını da açıklayabilir . Temel olarak, ya yanlış use-package
bir şey yapıyorsunuz ya da bir hata var. Yerel tuş bağlantılarını ve eval-after-load
otomatik yüklenen komutların / tuş haritalarının genel tuş bağlantılarını karıştırmayın .
use-package-always-ensure
ve -paket-dired kullanmaya çalıştığınızda elpa onu getiremedi oldu. Ama :ensure nil
orada sorunu çözmek ve zincirleme paket yükleme dired
-> dired-ranger
kullanarak ayarlayabilirsiniz :after
.
:bind
anahtar kelimeyi kullanabilir veya:config
bloktaki anahtar bağlarını değiştirebilirsiniz .