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.


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" :-)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.