Así que estoy buscando helm-swoop
echar un vistazo a todos los archivos de un proyecto, no solo al conjunto actual de búferes abiertos.
Esto es para que pueda usar swoop para encontrar todas las ocurrencias en un proyecto, marcar las relevantes y luego editarlas (en modo de edición de swoops de timón).
Siento que probablemente haya una manera limpia de hacer esto con Helm / Helm swoop, pero este es mi intento de pensar en una solución:
- reunir nombres de archivo de proyectil
- crear una lista de buffers de la lista de nombre de archivo
- haga la misma rutina que helm-multi-swoop-all además de usar esta nueva lista de búfer
(projectile-current-project-files)
, parece que me da la lista de archivos que estoy buscando.
Por lo tanto helm-multi-swoop-all
, parece que sería bastante fácil copiar y luego ajustar.
(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)))
Simplemente reemplace la llamada a helm-multi-swoop--get-buffer-list
, a una que proporcionó una lista de buffers usando la lista de proyectiles.
Pero ahora estoy un poco atascado. No estoy seguro de cómo crear una lista de buffers para alimentar a helm-swoop a partir de un conjunto de nombres de archivo.
Tampoco puedo evitar pensar que hay una forma más sencilla de lograr esto, tal vez sin funciones personalizadas.
helm-projectile-ack
lugar.helm-swoop
. ¿ Hacer unhelm-projectile-grep
y luegoF3
M-x
wgrep-mode
hacerlo "editable"?Respuestas:
Siguiendo los interesantes comentarios de PythonNut, instalé
helm-ag
y ejecutéhelm-projectile-ag
el paquete de proyectiles a través deC-c p s s
. Luego cambié al modo de edición conC-c C-e
. Cambié algunas líneas y luego presionéC-c C-c
y estas se guardaron en los archivos relevantes.Esto funciona, pero en la actualidad una infelicidad es que guarda cada uno de los archivos "coincidentes" varias veces, independientemente de si hubo un cambio o no. Lo planteé como proyectil # 756 .
Aparte de eso, creo que funcionaría bien para la necesidad mencionada en la pregunta y "sin funciones personalizadas" :-)
fuente
helm-git-grep
debería ser más rápido quehelm-projectile-ag