s10a's blog



Projectileからproject.elに乗り換えた

投稿日:   カテゴリー: tech

目次

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の起動時間が早くなったのも嬉しい。