2013-06-22 8 views
5

私は私の「〜/ .emacs.d」ディレクトリ内のいくつかの.elファイルを持っていると私は起動時にそれらをロードするために私の.emacsファイルに以下の行を追加しました:これは、.emacsからユーザー.elファイルを読み込むための適切なEmacs(24.3.2)lispスタイルですか?

(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)) 

それは動作しますが、これは適切ですEmacs Lispスタイル?どのようにこれを改善することができますか?

+3

通常は 'load-path'と' require'にそれらを追加します(これはロードしているファイルが何かを提供していることを意味します)。一部の人は、対応するモードがロードされるまで、 :[詳細情報](http://stackoverflow.com/questions/6935908/emacs-best-practice-for-lazy-loading-modes-in-emacs)。 –

+0

@wvxvw実際には、これらの '* .el'ファイルは_providers_のラッパーに過ぎません(正しいパシュを設定するだけです)。私はちょうど' .emacs'ファイルを乱雑にしたくありませんでした。 –

答えて

12

まず、.elファイルを〜/ .emacs.dに直接置かないでください(Emacsはそこにさまざまなファイルを置きますが、Elispパッケージではないと思われます)。代わりに、例えば~/.emacs.d/pkgsに入れることができます。あなたは、余分な特典(自動車のカップルを持っています

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

私はこの変更が大好きですが、小さな小切手も追加しました... –

2

は、init-ローダーhttps://github.com/emacs-jp/init-loader

で別のディレクトリにそれらのファイルを移動するステファンの優れた提案を混在させることができますバイト・方法:「試合

ファイルをコンパイルする)、ファイルリストを維持する必要はありません(そのディレクトリにファイルを移動/作成するだけです)。

+0

'init-loader'は非常に興味深いプロジェクトですが、私が心に留めていたものに膨らんだほんの少しです。しかし、ポインタのためにありがとう! –

1

ステファンの例に基づいて、私は唯一のfile-exists-pを追加します。

(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)))) 

私が思うに、これは私が使用するバージョンです。

+2

'file-exists-p'は良いアイデアです。同じ結果を得るために、 'load'の' noerror'引数を使うこともできます。 – Stefan

関連する問題