Yapılandırma dosyalarımda-eval-after-load ile ne zaman kullanmalıyım?


15

Yapılandırma dosyalarımı gözden geçirdim ve biraz temizlik yapmak istedim.

Anladığım kadarıyla with-eval-after-load, gövdesi ilgili paket yüklendikten hemen sonra değerlendirilecekti. Konfigürasyon dosyalarımı temizlerken ve daha da bölerken, her paket konfigürasyonunu içine almak istedim with-eval-after-load. Her şey yapılandırmasını kapalı dek beklendiği gibi gitti helmve helm-projectile.

Aklımda ne vardı ( lisp / init-helm.el ):

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

Emacs'ı yeniden başlattıktan sonra, bu pencere boyutu sorununu alıyorum:

emacs-pencere boyutu-konu

Penceremi şu şekilde yeniden boyutlandırırım:

(set-frame-parameter nil 'fullscreen 'fullboth)

Sanırım kötüye kullanıyorum with-eval-after-load, Emacs yapılandırmasını nasıl dezenfekte eder ve hangi paket kurulursa kurulsun hiçbir şeyin kesilmediğinden emin olur muyum?


Bu tamamen tuhaf. (Muhtemelen bir böcek mi?)
PythonNut 18:05

Bunun ne ile ilgili olabileceği hakkında bir fikrin var mı? Railwaycat'in OS X bağlantı noktasını kullanıyorum ve bunun ait olmadığı bir sorun eklemek istemiyorum :).
Mathieu Marques

8
with-eval-after-loadPaketle ilgili tüm özelleştirmelerimi bir kez sarmak için kullanmaya çalıştım . Sonra ışığı gördüm ve kullanmaya başladım use-package.
itsjeyd

@itsjeyd Bu gerçekten çok kullanışlı ve kullanışlı görünüyor! Ancak bazı sorunla karşılaştım: Ben yorum (package-initialize)ve yerine koydu (require 'use-package)ama Dosya hatası alırsınız : Emacs yeniden başlatıldığında , yükleme dosyası, böyle bir dosya veya dizin, kullanım paketi açılamıyor . Yine de, Emacs başladıktan sonra (require 'use-package)herhangi bir sorun olmadan değerlendirebilirim. Sonunda, with-eval-after-loadhala aynı hatayı denedim . Beni oku konusunda çok net değil yüklemek use-package package.el paketleri kullanırken.
Mathieu Marques

1
Bize .emacs, sorunu olabildiğince az satır ve olabildiğince az dış paketle gösteren sıyırılmış bir versiyonunuzu gösterin. Bu muhtemelen başlangıç sırasında çerçeve yükü ve paket yükü zamanlamasıyla ilgilidir . Ancak kodunuzu görmeden yapabileceğimiz pek bir şey yok. Ayrıca hangi Emacs sürümünü kullandığınızı da bize bildirin.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


2

with-eval-after-loadÇoğunlukla varsayılan değerler değerlendirildikten sonra listelere veya listelerden öğe eklemek veya listelerden öğe kaldırmak için çok kullanıyorum . Bu şekilde varsayılan değerlerdeki değişiklikleri takip etmek zorunda değilim.

helmBaşlatma işleminizle ilgili soruna gelince , belgeler(require 'helm-config) sizin init.elveya bağımlılıklarınızda bulunmasını önerir .

helm-configBaşlatma sırasında sadece güvenmek yerine ihtiyaç duymanın daha kolay olduğunu gördüm autoload, özellikle de çoğu zaman hemen hemen yükleyeceğimden beri.


O zamandan beri kullanmak için değiştim use-packageve helm-configyine de aynı sorunu almamı gerektiriyor . İşte benim güncel yapılandırmam: bitbucket.org/angrybacon/dotemacs/src .
Mathieu Marques

1

helmBaşlatma (veya az) ile ilgisi olmadığı ortaya çıktı .

Emacs'ın başlangıç ​​zamanını optimize etmek için sonsuz arayışımda, yapılandırmamın en başında arayüzle ilgili tüm şeyleri taşıdım . Bu benim kullandığım sözde tam ekran içerir.

İlgili lisponun herhangi bir ağır lisp yüklenmesinden önce konulması sorunumu çözdü.

İşte benim referans için yapılandırma .

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.