Helm piomba su tutti i file di progetto (non solo sui buffer correnti)


15

Quindi sto cercando di dare helm-swoopun'occhiata a tutti i file in un progetto, non solo al set corrente di buffer aperti.

È così che posso usare swoop per trovare tutte le occorrenze in un progetto, contrassegnare quelle pertinenti, quindi modificarle (in modalità di modifica timone timone).

Sento che probabilmente c'è un modo pulito per farlo con Helm / Helm swoop ma ecco il mio tentativo di pensare attraverso una soluzione:

  1. raccogliere i nomi dei file dal proiettile
  2. crea un elenco di buffer dall'elenco dei nomi di file
  3. eseguire la stessa routine di helm-multi-swoop-all oltre a utilizzare questo nuovo elenco di buffer

(projectile-current-project-files), sembra che mi dia l'elenco dei file che sto cercando.

Quindi helm-multi-swoop-all, sembra che sarebbe abbastanza facile da copiare e poi modificare.

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

Basta sostituire la chiamata a helm-multi-swoop--get-buffer-list, a quella che ha fornito un elenco di buffer utilizzando l'elenco dei proiettili.

Ma ora sono un po 'bloccato. Non sono sicuro di come creare un elenco di buffer da alimentare in helm-swoop da una serie di nomi di file.

Inoltre non posso fare a meno di pensare che esiste un modo più semplice per raggiungere questo obiettivo, forse senza funzioni personalizzate.


1
Questo è potenzialmente problematico. Supponiamo di voler creare un grande progetto per "abc". Vuoi aprire un buffer di file per ogni singolo file che visualizzi in anteprima? Potresti finire con dieci o venti buffer extra che non vuoi. Suggerirei helm-projectile-ackinvece di utilizzare .
PythonNut

2
sì, non immaginavo di usarlo per un grande progetto. Speravo anche di chiudere i buffer di file aperti al termine di questa routine.
Mike McFarland,

Inoltre, helm-projectile-ack (o ag) è quasi quello che sto cercando, tranne che mi piacerebbe essere in grado di modificare le linee (come Helm Swoop consente)
Mike McFarland,

In realtà non lo uso helm-swoop. Fare un helm-projectile-grepe quindi F3 M-x wgrep-moderenderlo "modificabile"?
PythonNut

Grazie, non ero a conoscenza di wgrep-mode. Helm-projectile-grep sta raccogliendo file ignorati per me, ma helm-projectile-ack funziona bene con wgrep. Almeno funziona dopo aver disinstallato wgrep che proviene da melpa e invece usa quello qui .
Mike McFarland,

Risposte:


7

Dopo gli interessanti commenti di PythonNut, ho installato helm-aged eseguito helm-projectile-agdal pacchetto proiettile tramite C-c p s s. Sono quindi passato alla modalità di modifica con C-c C-e. Ho cambiato alcune righe e poi premuto C-c C-ce questi sono stati salvati nei file pertinenti.

Funziona, ma al momento un'infellicità è che salva ogni file "abbinato" più volte, indipendentemente dal fatto che ci sia stato un cambiamento o meno. Ho sollevato questo come proiettile # 756 .

A parte questo, penso che funzionerebbe bene per le necessità menzionate nella domanda e "senza funzioni personalizzate" :-)


questo è in realtà anche quello su cui ho deciso. L'unico problema che sto riscontrando è che a volte i file ignorati da git / projectile non vengono ignorati nei risultati di ricerca di ag. Non ho avuto il tempo di scavare.
Mike McFarland,

Suggerimento: helm-git-grepdovrebbe essere più veloce dihelm-projectile-ag
PlagueHammer il

Perché dovrebbe essere più veloce?
RichieHH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.