Więc chcę helm-swoop
spojrzeć na wszystkie pliki w projekcie, a nie tylko na bieżący zestaw otwartych buforów.
Dzięki temu mogę użyć polecenia swoop, aby znaleźć wszystkie wystąpienia w projekcie, zaznaczyć odpowiednie, a następnie edytować je (w trybie edycji sesji kontrolnych).
Wydaje mi się, że prawdopodobnie jest to czysty sposób na wykonanie Helm / Helm swoop, ale oto moja próba przemyślenia rozwiązania:
- zbieraj nazwy plików z pocisków
- utwórz listę buforów z listy nazw plików
- wykonaj tę samą procedurę, co helm-multi-swoop-all oprócz tej nowej listy buforów
(projectile-current-project-files)
, wygląda na to, że daje mi listę plików, której szukam.
Tak helm-multi-swoop-all
, wygląda na to, że będzie dość łatwo skopiować, a następnie dostosować.
(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)))
Wystarczy zastąpić wywołanie do helm-multi-swoop--get-buffer-list
, który dostarczył listę buforów za pomocą listy pocisków.
Ale teraz trochę utknąłem. Nie jestem pewien, jak utworzyć listę buforów, które będą zasilane sterami z zestawu nazw plików.
Nie mogę również pomóc, ale myślę, że istnieje prostszy sposób na osiągnięcie tego, może bez niestandardowych funkcji.
helm-projectile-ack
zamiast tego.helm-swoop
. Czy zrobieniehelm-projectile-grep
a następnieF3
M-x
wgrep-mode
uczynienie go „edytowalnym”?Odpowiedzi:
W następstwie ciekawe komentarze PythonNut, zainstalowałem
helm-ag
i pobiegłhelm-projectile-ag
z pocisku pakietu poprzezC-c p s s
. Następnie przełączyłem się do trybu edycji za pomocąC-c C-e
. Zmieniłem kilka wierszy, a następnie nacisnąłemC-c C-c
i zostały one zapisane w odpowiednich plikach.Działa to, ale obecnie jedna infeliczność polega na tym, że zapisuje każdy z „dopasowanych” plików wiele razy, niezależnie od tego, czy nastąpiła zmiana, czy nie. Podniosłem to jako pocisk # 756 .
Poza tym myślę, że dobrze by to pasowało do potrzeby wspomnianej w pytaniu i „bez niestandardowych funkcji” :-)
źródło
helm-git-grep
powinno być szybsze niżhelm-projectile-ag