• 作成:

helm-ls-gitをhelm-for-filesで一緒に表示する

helm-ls-gitという現在いるgitの管理ファイルを表示するhelmコマンドがあります.

これを私はhelm-for-filesで表示した時に一緒に表示させてrecentfなどと一緒に一括検索させていました.

それを実現するためにはhelm-for-files-preferred-listにソースを追加すれば良いのですが, helm-ls-gitのソースはデフォルトではnilであり, 追加するだけでは動きません. 変数を初期設定するためにhelm-ls-git-lsを呼び出しておくという暴力的手段を用いていたのですが, アップデートの影響かその方法ではエラーが起きてしまうことがわかりました. 公式ドキュメントを見るとhelm-ls-git-build-git-status-sourceを使えと書いてあるのですが, 呼び出しても設定がされません. コードを見ると, helm-ls-git-build-git-status-sourceはソースを作るだけで, 変数に代入するのは自前でやるようになっていると気がつきました.

以下のコードでエラーなしに一緒に表示することが出来ます.

(require 'helm-ls-git)

(custom-set-variables
 '(helm-source-ls-git (helm-ls-git-build-ls-git-source))
 '(helm-source-ls-git-status (helm-ls-git-build-git-status-source))
 '(helm-for-files-preferred-list
   '(helm-source-buffers-list
     helm-source-recentf
     helm-source-files-in-current-dir
     helm-source-ls-git-status
     helm-source-ls-git
     helm-source-file-cache
     helm-source-locate
     ))
 )

helm-source-ls-git-buffersはgit外のディレクトリで起動するとエラーになるので取り外しました.

ちなみに似たようなコマンドにhelm-cmd-tというのがあるそうです. これはGit以外のバージョン管理システムにも対応しているので, 移行しようと思ったのですが, ソースを混ぜる方法がわからなかったので没になりました.