もともとhelm-ghqでも便利なんだけど、helm-ghqとhelm-for-filesを組み合わせたらすごい便利になった。以下はその設定とか
その前にhelm-for-filesとは
helm用のファイルを探すのに特化したhelmの関数で、デフォルトで表示されるhelm-for-filesでの候補はbufferのリストとrecentf、file-cache、現在のディレクトリのbufferのリストとhelm-source-bookmarksとhelm-source-locateというもの(最後の2つはよくわからないし、重複しそうなので自分は使っていない)
まぁhelm-miniの重いバージョンみたいな認識
helm-ghqとは
簡単にいうとghqのリストをhelmで開く拡張。ディレクトリを開いたあとさらにそのディレクトリのなかを探してくれる。
作者さんのブログ http://masutaka.net/chalow/2014-06-22-1.html
GitHub : https://github.com/masutaka/emacs-helm-ghq
注意
もしかしたらhelm-for-files用のソース変数を追加するpull requestを送ったので今回紹介する設定をする前にhelm-ghqをアップデートしたほうがいいかもしれない。
設定
みてて思ったがブログに書くほどのことでもないかもしれない。。。(まぁいいか)
下のハイライトの無効化はお好みで。たぶん候補がめちゃめちゃ多いなら無効化しとくのが無難。
(require 'helm-files)
;; 重くなるのでhelm-for-filesだけハイライトを無効化する
(defadvice helm-for-files
(around helm-for-files-no-highlight activate)
"No highlight when using helm-for-files."
(let ((helm-mp-highlight-delay nil))
ad-do-it))
(require 'helm-ghq)
;; helm-for-filesのソースにhelm-ghqのソースを追加
(add-to-list 'helm-for-files-preferred-list 'helm-source-ghq)
上のadd-to-listの行は下のようにも設定できる(というか自分の設定)
(defconst helm-for-files-preferred-list
'(helm-source-buffers-list
helm-source-recentf
helm-source-file-cache
helm-source-ghq
helm-source-files-in-current-dir
;; comment out this is too heavy for me.
;; helm-source-bookmarks
;; helm-source-locate
))
これもお好み設定だけど、file-cache-add-directory-listの引数にディレクトリのリストを渡すとそのディレクトリのファイルがhelm-for-filesの候補に追加される。
じつをいうとこれがhelm-for-filesの候補で一番気に入っている。
ghqはバージョン管理しているディレクトリ単位だけど、こっちは関係ない。
自分のようにホームディレクトリをバージョン管理していて特定のディレクトリのファイルだけ候補にいれたい場合便利かもしれない。
(require 'filecache)
(file-cache-add-directory-list '("~/" "~/.emacs.d/"))
(setq file-cache-filter-regexps
(append file-cache-filter-regexps
;; 無視したいファイルの正規表現を指定もできる
'("\\.cache$")))