あどけない話

Internet technologies

load-path などの設定

ruby-modeの話で、append ではなく cons を使うべきだと書いたところ、使い方に悩んでいる人がいるようです。

たとえば、cons で2 つパスを追加しようとすると、

(setq load-path (cons "foo" (cons "bar" load-path)))

となって見にくいです。append なら、

(setq load-path (append '("foo" "bar") load-path))

と書けます。でも、セルを無駄遣いします。こういう場合は、禁断の nconc を使うという手もあります。

(setq load-path (nconc '("foo" "bar") load-path))

しかし、"n" から始まる関数がどういう副作用を持っているのか理解していなければ、使わない方がいいでしょう。

というわけで、僕はこんなことをやっています。

(defun my-load-path (path)
  (let ((epath (expand-file-name path)))
    (unless (member epath load-path)
      (setq load-path (cons epath load-path)))))

(my-load-path "foo")
(my-load-path "bar")

exec-path も同じ関数で追加したいと思ったら、引数を一つ増やしたマクロにすればいいでしょう。

リストの心を知るには、「リスト遊び」を立ち読みして下さい。