2013-06-22 5 views
5

benim "~/.emacs.d" dizininde çeşitli .el dosyaları var ve ben başlangıçta onlara yük benim .emacs dosyasına aşağıdaki satırları ekledi:bu .emacs kullanıcı .el dosyaları yüklemek için uygun bir Emacs (24.3.2) lisp tarzı var mı?

(let ((base "~/.emacs.d/") 
     (files '("user.el" "erlang.el" "sbcl-slime.el")) 
     (bfload (lambda (file) (load (expand-file-name (concat base file)))))) 
    (mapcar bfload files)) 

Çalışır, ancak bu doğru değildir Emacs Lisp stili? Bu nasıl geliştirilebilir, lütfen?

+3

Eğer' yük path' eklemek istiyorum ve daha sonra 'require' Bazı karşılık gelen mod yüklü olurdu kadar dosya gerektirir yapmamayı tercih [diğer bilgiler] (http://stackoverflow.com/questions/6935908/emacs-best-practice-for-lazy-loading-modes-in-emacs). Aslında bu '* .el' dosyalardır sadece _providers_ için sarmalayıcıların @wvxvw –

+0

(sadece onlar için doğru pathes kurma) ve ben sadece' .emacs' dosyayı kalabalıklaştırmasını istemiyordu. –

cevap

12

Birincisi, (Emacs çeşitli dosyaları koyar ve bunlar elisp paketleri olması bekleniyor değiliz) ~/.emacs.d içine doğrudan .el dosyaları koymayın. Bunun yerine bunları örneğin ~/.emacs.d/pkgs içine koyabilirsiniz.

ne dersiniz:

(dolist (file '("user.el" "erlang.el" "sbcl-slime.el")) 
    (load (expand-file-name file "~/.emacs.d/pkgs")) 
+0

Seni çok bu değişikliği gibi ama ben de küçük bir çek ekledi ... –

2

Sen https://github.com/emacs-jp/init-loader

Fazladan Perks bir çift var olacaktır init-yükleyici ile ayrı bir dizine bu dosyaları hareketli Stefan'ın mükemmel önerileri karıştırabilirsiniz (otomatik byte dosyaları derleme) ve dosya listesini tutmanız gerekmeyecektir (sadece bu dizinde bir dosya taşıyın/oluşturun).

+0

'init-loader' aklımda ne vardı için çok ilginç bir proje ama şişirilmiş sadece bir parçasıdır. Ama işaretçi için teşekkürler! –

1

Stefan'ın Örneğin dayanarak, sadece eklemek bir file-exists-p:

bence
(dolist (file '("user.el" "erlang.el" "sbcl-slime.el")) 
    (let ((f (expand-file-name file "~/.emacs.d/pkgs"))) 
    (if (file-exists-p f) 
     (load f)))) 

, bu şimdiye kullanacağı sürümüdür. (Bu dosya, provide`s şey `yüklendiğini tespit ima eder.) Normalde

+2

'dosya-var-p' iyi bir fikir. Aynı sonucu elde etmek için 'load'' noerror' argümanını da kullanabilirsiniz. – Stefan