Sapuan swoop pada semua file proyek (bukan hanya buffer saat ini)

15

Jadi saya ingin helm-swoopmelihat semua file dalam suatu proyek, bukan hanya set buffer terbuka saat ini.

Ini agar saya dapat menggunakan swoop untuk menemukan semua kejadian dalam suatu proyek, tandai yang relevan, kemudian edit (dalam mode edit swoop helm).

Saya merasa bahwa mungkin ada cara yang bersih untuk melakukan ini dengan Helm / Helm swoop tetapi inilah upaya saya untuk memikirkan solusi:

  1. mengumpulkan nama file dari proyektil
  2. buat daftar buffer dari daftar nama file
  3. lakukan rutin yang sama dengan helm-multi-swoop-all selain menggunakan daftar buffer baru ini

(projectile-current-project-files), sepertinya itu memberi saya daftar file yang saya cari.

Jadi helm-multi-swoop-all, sepertinya cukup mudah untuk menyalin dan kemudian men-tweak.

(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)))

Cukup ganti panggilan ke helm-multi-swoop--get-buffer-list, ke yang menyediakan daftar buffer menggunakan daftar proyektil.

Tapi sekarang aku agak macet. Saya tidak yakin bagaimana cara membuat daftar buffer untuk dimasukkan ke helm-swoop dari sekumpulan nama file.

Saya juga tidak dapat membantu tetapi berpikir ada cara yang lebih sederhana untuk mencapai ini, mungkin tanpa fungsi khusus.

Mike McFarland
sumber
1
Ini berpotensi bermasalah. Misalkan Anda ingin melakukan proyek besar untuk "abc". Apakah Anda ingin membuka buffer file untuk setiap file yang Anda pratinjau? Anda mungkin berakhir dengan sepuluh atau dua puluh buffer tambahan yang tidak Anda inginkan. Saya sarankan menggunakan helm-projectile-acksebagai gantinya.
PythonNut
2
ya, saya tidak membayangkan menggunakan ini untuk proyek besar. Saya juga berharap untuk menutup file buffer yang dibuka ketika selesai dengan rutin ini.
Mike McFarland
Juga, helm-projectile-ack (atau ag) adalah hampir apa yang saya cari, kecuali saya ingin dapat mengedit garis (seperti swoop memungkinkan)
Mike McFarland
Saya sebenarnya tidak menggunakan helm-swoop. Apakah melakukan helm-projectile-grepdan kemudian F3 M-x wgrep-modemembuatnya "dapat diedit"?
PythonNut
Terima kasih, saya tidak mengetahui mode-wgrep. Helm-projectile-grep mengambil file yang diabaikan untuk saya, tetapi helm-projectile-ack bekerja dengan baik dengan wgrep. Setidaknya ini berfungsi setelah menghapus instalan wgrep yang berasal dari melpa, dan menggunakan yang ada di sini sebagai gantinya.
Mike McFarland

Jawaban:

7

Mengikuti komentar menarik dari PythonNut, saya menginstal helm-ag, dan berlari helm-projectile-agdari paket proyektil via C-c p s s. Saya kemudian beralih ke mode edit dengan C-c C-e. Saya mengubah beberapa baris dan kemudian menekan C-c C-cdan ini disimpan ke file yang relevan.

Ini berfungsi, tetapi saat ini satu infellicity adalah bahwa ia menyimpan masing-masing file "cocok" beberapa kali terlepas dari apakah ada perubahan atau tidak. Saya mengangkat ini sebagai proyektil # 756 .

Selain itu saya pikir itu akan berfungsi dengan baik untuk kebutuhan yang disebutkan dalam pertanyaan, dan "tanpa fungsi khusus" :-)

Joe Corneli
sumber
inilah sebenarnya yang telah saya selesaikan juga. Satu-satunya masalah yang saya alami adalah bahwa kadang-kadang file diabaikan oleh git / proyektil tidak diabaikan dalam hasil pencarian ag. Belum sempat menggali ke dalamnya.
Mike McFarland
Kiat: helm-git-grepharus lebih cepat daripadahelm-projectile-ag
PlagueHammer
Kenapa harus lebih cepat?
RichieHH