すべてのプロジェクトファイル(現在のバッファーだけでなく)で急降下


15

だから、現在開いているバッファのセットだけでなく、プロジェクト内のすべてのファイルをhelm-swoop見たいと思っています。

これにより、swoopを使用してプロジェクト内のすべての出現箇所を検索し、関連するものをマークしてから編集できます(ヘルムスイープの編集モードで)。

Helm / Helm swoopでこれを行うにはおそらくクリーンな方法があると思いますが、解決策を考えようとする私の試みは次のとおりです。

  1. 発射物からファイル名を収集する
  2. ファイル名リストからバッファのリストを作成します
  3. この新しいバッファリストを使用するほか、helm-multi-swoop-allと同じルーチンを実行する

(projectile-current-project-files)、探しているファイルのリストが表示されるようです。

だからhelm-multi-swoop-all、コピーして微調整するのはかなり簡単だと思われます。

(defun helm-multi-swoop-all (&optional $query)
  (interactive)
  "Apply all buffers to helm-multi-swoop"
  (cond ($query
         (setq helm-multi-swoop-query $query))
        (mark-active
         (let (($st (buffer-substring-no-properties
                     (region-beginning) (region-end))))
           (if (string-match "\n" $st)
               (message "Multi line region is not allowed")
             (setq helm-multi-swoop-query
                   (helm-swoop-pre-input-optimize $st)))))
        ((setq helm-multi-swoop-query
               (helm-swoop-pre-input-optimize
                (funcall helm-swoop-pre-input-function))))
        (t (setq helm-multi-swoop-query "")))
  (helm-multi-swoop--exec nil
                          :$query helm-multi-swoop-query
                          :$buflist (helm-multi-swoop--get-buffer-list)))

の呼び出しをhelm-multi-swoop--get-buffer-list、発射物リストを使用してバッファのリストを提供する呼び出しに置き換えるだけです。

しかし、今私は少し立ち往生しています。一連のファイル名からhelm-swoopにフィードするバッファーのリストを作成する方法がわかりません。

私も助けることはできませんが、おそらくカスタム関数を使用せずに、これを達成するためのより簡単な方法があると思います。


1
これは潜在的に問題があります。「abc」の大規模なプロジェクトを急襲するとします。プレビューするファイルごとにファイルバッファを開きますか?望ましくない10個または20個の余分なバッファが作成される可能性があります。helm-projectile-ack代わりに使用することをお勧めします。
PythonNut

2
ええ、私はこれを大規模プロジェクトに使用することを想像していませんでした。また、このルーチンが終了したら、開いているファイルバッファを閉じたいと思っていました。
マイクマクファーランド

また、舵-発射-ACK(またはAG)私が探しているほとんど何されて、私はラインを編集できるようにしたいと思います(ただしヘルム急襲ができますように)
マイク・マクファーランド

私は実際には使用しませんhelm-swoop。やってないhelm-projectile-grepし、次にF3 M-x wgrep-mode、それは、「編集可能」にしますか?
PythonNut

おかげで、wgrep-modeを知りませんでした。Helm-projectile-grepは無視されたファイルをピックアップしますが、helm-projectile-ackはwgrepでうまく機能しています。少なくとも、melpaから来たwgrepをアンインストールし、代わりにここにあるものを使用した後は動作します。
マイクマクファーランド

回答:


7

PythonNutからの興味深いコメントに従って、私はをインストールしhelm-ag、を介しhelm-projectile-ag発射物パッケージから実行しましたC-c p s s。その後、で編集モードに切り替えましたC-c C-e。数行を変更してから押すC-c C-cと、これらは関連するファイルに保存されました。

これは機能しますが、現在1つの不確実性は、変更があったかどうかに関係なく、「一致した」ファイルのそれぞれを複数回保存することです。これを発射物#756として上げました。

それとは別に、私はそれが質問で言及されたニーズと「カスタム関数なし」でうまくいくと思う:-)


これも実際に私が決めたものです。私が抱えている唯一の問題は、git / projectileによって無視されるファイルがag検索結果で無視されない場合があることです。それを掘り下げる時間がありませんでした。
マイクマクファーランド

ヒント:helm-git-grepより速くする必要がありますhelm-projectile-ag
PlagueHammer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.