Emacsのプロジェクト管理に Projectile を使っていたが、標準で入っているproject.elに乗り換えた。 Projectileの多くの機能を大して使いこなせていないので、試してみることにした。
project.elの設定
僕の設定はこんな感じ
(use-package project
:ensure nil
:config
;; Cache projects under ~/ghq directory
(when (file-exists-p "~/ghq")
(let ((projects (mapcar #'file-name-as-directory
(split-string
(shell-command-to-string "find ~/ghq -maxdepth 3 -mindepth 3 -printf '%T@ %p\n' | sort -n | cut -d ' ' -f 2")
"\n"
t))))
(dolist (project projects)
(project--remember-dir project t))))
:custom
(project-switch-commands 'project-dired)
(project-compilation-buffer-name-function 'project-prefixed-buffer-name)
:bind
(:map project-prefix-map
("." . project-dired)))
大した設定はしていないが、project-switch-project でプロジェクトを選択した後は project-dired でプロジェクトのルートディレクトリをDiredで開くようにしている。
Gitリポジトリをクローンする際は ghq に任せているので、 ~/ghq 以下のプロジェクトを認識するようにしている。
一応 (project-remember-projects-under "~/ghq" t) で再帰的にプロジェクトを認識させることも可能だが、Elispで実装されているからか、かなり時間がかかる。
とりあえず簡単なシェル芸で ~/ghq ディレクトリを最終更新時順に並べて、その出力をElispで取ってきて project--remember-dir 関数で1つずつ記憶させるようにしている。
正攻法ではない気がするけど、とりあえず動くのでよし。
まとめ
Projectileのように色んなことが出来るわけではないが、自分の場合はproject.elで必要十分だったので結構満足している。 若干ではあるがEmacsの起動時間が早くなったのも嬉しい。