LoginSignup
2
1

More than 1 year has passed since last update.

consult-project-bufferでvcに登録されたファイルを全部出す

Posted at

Emacsの次世代ミニバッファ補完UI を読んでvertico/consultの環境に移行して半年ばかり。それ以前はivy/counselを使ってきましたがどうもしっくり来なかったので乗り換えました。こちらの操作性はとてもよくて気に入っています。anythingに始まったミニバッファ補完UIの旅はここに落ち着きそうです。

それで一点だけどうしても不満だったのが M-x consult-project-buffer の動作でした。プロジェクトに関するバッファとファイルを絞り込みの対象にするのですが、ファイルが「プロジェクト内にある以前開いたことのあるファイル (recentf)」を対象にするのです。「プロジェクト内にあるgit等vcに登録された全ファイル」ではないのです。

一から作っていったツリーならそれでもいいのですが、git clone してきたツリーだったり、rails new などで配置したファイルだったりすると find-file で探し回らなければなりません。

ところでvertico/consultがインストールされた状態で M-x project-find-file を行うとvc管理下にあるファイルが絞り込みの対象になります。このソースを consult のソースにして M-x consult-project-buffer のソースリスト (consult-project-buffer-sources) に加えてやればよいかと思いました。ついでに recentf はいらなくなるので外しました。

ということで快適になりました。

(defvar my-consult--source-project-file
  `(:name "Project Whole File"
          :narrow   (?p . "Project")
          :category file
          :face     consult-file
          :history  file-name-history
          :state    ,#'consult--file-state
          :new      ,#'consult--file-action
          :items
          ,(lambda ()
             (let ((current-project (project-current)))
               (if current-project
                   (project-files current-project)
                 nil))))
  "Project file candidate source for `project-files'.")
(add-to-list 'consult-buffer-sources 'my-consult--source-project-file t)
(setq consult-project-buffer-sources
      (list
       `(:hidden nil :narrow ?b ,@consult--source-project-buffer)
       `(:hidden nil :narrow ?f ,@my-consult--source-project-file)))
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1