yük-sonrası-kanca-yük-eval / yük-eval-yük ile


13

Emacs 24'te Paketlerin nasıl çalıştığını oldukça yararlı buldum , ancak deneyimli bir kullanıcı veya çekirdek geliştiriciden 24.4'teki tipik durumda hangisinin gerçekten tercih edildiği konusunda kesin bir cevap istiyorum.

Afaik, (add-hook 'after-init-hook ...)paketler için özelleştirmeler kurmaya sözde kaba kuvvet yaklaşımıdır. Bununla birlikte, eval-after-loaddaha sözdizimsel şekerli with-eval-after-loadolan, uzantıların kademeli, ayrı ve tembel yüklemesi ile iyi çalışan daha dinamik ve ince taneli yapılandırma için daha uygun görünmektedir.

Anladıklarım doğru mu? Aklımda başka ne olmalı?

Yanıtlar:


11

Afaik, (add-hook 'after-init-hook ...)paketler için özelleştirmeler kurmaya sözde kaba kuvvet yaklaşımıdır.

Hayır. İnit dosyanızdaki paketleri yapılandırmak istiyorsanız, tipik yaklaşım (package-initialize)dosyanın en üstündeki çağrı yapmak ve ardından yapılandırmaları yapmaktır. after-init-hookbu amaç için gereksiz yere karmaşıktır.

Bununla birlikte, eval-after-loaddaha sözdizimsel şekerli with-eval-after-loadolan, uzantıların kademeli, ayrı ve tembel yüklemesi ile iyi çalışan daha dinamik ve ince taneli yapılandırma için daha uygun görünmektedir.

(with-)eval-after-loadbir paket yüklendikten sonra yapmak istediğiniz şeyler için kullanılır . package-initializepaketleri yüklemez, sadece “hazırlar” (otomatik yüklerini yükler).

eval-after-loadHer yapılandırma kümesini kullanırsanız (package-initialize), üst kısımdan arama yapmanız gerekmez . Ancak insanların genellikle yaptığı şey (package-initialize), çoğu yapılandırmanın doğrudan init dosyasına yazılabilmesi ve daha sonra yalnızca eval-after-loadçok uzun olan veya yüklenen pakete bağlı olan kodun yazılmasıdır .


ama yine de eval-after-loadherhangi bir paket için herşeyi koymak iyi olur, değil (package-initialize)mi?
Erik Kaplun

@ErikAllik Evet. Yüklemeden sonra eval'i her konfigürasyon setinde kullanırsanız, üst kısımdan (paket başlatma) aramanıza gerek yoktur.
Malabarba
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.