@kyanny's blog

My life. Opinions are my own.

load-path に追加、 cons 版

CodeRepos の http://coderepos.org/share/browser/dotfiles/emacs/kentaro/.emacs などはとても勉強になります。僕は何かにつけて整理整頓が苦手なのですが、 .emacs も例外ではなくロードされる仕組みなどもわからず適当にコピペしているだけなのでぐちゃぐちゃで、意味がわからないからあまり触れたくなくてほとんどいじらないという悪循環に陥っていました。こういう綺麗に整理整頓された設定ファイルを読めるというのは本当にありがたいです。

この例にならって自分も少しずつ設定ファイルの整理をしはじめることにしました。それで、まずは load-path の設定をまねてみたのですが、そこでふと、ちょっと前に読んだ ruby-mode - あどけない話 という記事を思い出して、 append のかわりに cons を使って書いてみようと思い、やってみました。

;;; elispと設定ファイルのディレクトリをload-pathに追加                                                                                         
;(setq load-path (cons "~/.lisp" load-path))                                                                                                   
(setq load-path
      (cons
       (expand-file-name "~/.lisp")
       (cons
        (expand-file-name "~/.emacs.d/elisp/")
        (cons
         (expand-file-name "~/.emacs.d/conf/") load-path))))

コメントアウトしてあるのが古いほうです。これでちゃんと動いてはいるのですが、こういうのはどうなんだろう?なんだか妙に複雑にみえて、 append をつかったほうがすっきりしているようにも見えます。でも、 cons の使い方がわかったので試してみてよかったです。 cons のヘルプをみると (cons CAR CDR) となっていて、 car とか cdr とか見たことはあるけどわからないので避けていたのですが、 cdr にあたるところに (expand-file-name "") とかをおいて何度もエラーで怒られて、ようやくお尻はリストじゃないとダメなんだ、ということがわかりました。

2/20 追記

load-path などの設定 - あどけない話 で言及されました。やはり cons が重なるのは、 Emacs Lisp に精通した方の目からみても見づらいものなんですね。 add-to-list という関数を使うのが良いようです。