Helm swoop sur tous les fichiers de projet (pas seulement les tampons actuels)

15

Je cherche donc à helm-swoopregarder tous les fichiers d'un projet, pas seulement l'ensemble actuel des tampons ouverts.

C'est pour que je puisse utiliser swoop pour trouver toutes les occurrences dans un projet, marquer celles qui sont pertinentes, puis les éditer (en mode d'édition swoop helm).

Je pense qu'il y a probablement un moyen propre de le faire avec Helm / Helm swoop mais voici ma tentative de réfléchir à une solution:

  1. recueillir les noms de fichiers du projectile
  2. créer une liste de tampons à partir de la liste des noms de fichiers
  3. faire la même routine que helm-multi-swoop-all en plus d'utiliser cette nouvelle liste de tampons

(projectile-current-project-files), on dirait que cela me donne la liste des fichiers que je recherche.

Il helm-multi-swoop-allsemble donc qu'il serait assez facile de copier puis de modifier.

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

Remplacez simplement l'appel à helm-multi-swoop--get-buffer-list, par celui qui fournit une liste de tampons à l'aide de la liste des projectiles.

Mais maintenant je suis un peu coincé. Je ne sais pas comment créer une liste de tampons à alimenter dans helm-swoop à partir d'un ensemble de noms de fichiers.

Je ne peux pas m'empêcher de penser qu'il existe un moyen plus simple d'y parvenir, peut-être sans fonctions personnalisées.

Mike McFarland
la source
1
C'est potentiellement problématique. Supposons que vous souhaitiez lancer un grand projet pour "abc". Voulez-vous ouvrir un tampon de fichier pour chaque fichier que vous prévisualisez? Vous pourriez bien vous retrouver avec dix ou vingt tampons supplémentaires dont vous ne voulez pas. Je suggère d'utiliser à la helm-projectile-ackplace.
PythonNut
2
ouais, je n'imaginais pas utiliser ça pour un grand projet. J'espérais également fermer les tampons de fichiers ouverts lorsque j'aurais terminé cette routine.
Mike McFarland
En outre, helm-projectile-ack (ou ag) est presque ce que je recherche, sauf que j'aimerais pouvoir modifier les lignes (comme le permet le swoop de barre)
Mike McFarland
Je n'utilise pas vraiment helm-swoop. Est-ce que faire un helm-projectile-grep, puis le F3 M-x wgrep-moderendre "modifiable"?
PythonNut
Merci, je n'étais pas au courant du mode wgrep. Helm-projectile-grep récupère pour moi des fichiers ignorés, mais helm-projectile-ack fonctionne bien avec wgrep. Au moins, cela fonctionne après avoir désinstallé le wgrep provenant de melpa et utilisé celui- ci à la place.
Mike McFarland

Réponses:

7

Suite aux commentaires intéressants de PythonNut, j'ai installé helm-aget exécuté à helm-projectile-agpartir du package de projectile via C-c p s s. Je suis ensuite passé en mode édition avec C-c C-e. J'ai changé quelques lignes, puis j'ai appuyé C-c C-cet celles-ci ont été enregistrées dans les fichiers appropriés.

Cela fonctionne, mais à l'heure actuelle, une infellicité est qu'il enregistre chacun des fichiers "correspondants" plusieurs fois, qu'il y ait eu un changement ou non. J'ai soulevé ceci comme projectile # 756 .

En dehors de cela, je pense que cela fonctionnerait bien pour le besoin mentionné dans la question, et "sans fonctions personnalisées" :-)

Joe Corneli
la source
c'est d'ailleurs ce sur quoi je me suis installé. Le seul problème que j'ai est que parfois les fichiers ignorés par git / projectile ne sont pas ignorés dans les résultats de la recherche ag. Je n'ai pas eu le temps de creuser.
Mike McFarland
Astuce: helm-git-grepdevrait être plus rapide quehelm-projectile-ag
PlagueHammer
Pourquoi devrait-il être plus rapide?
RichieHH