Поэтому я helm-swoop
смотрю на все файлы в проекте, а не только на текущий набор открытых буферов.
Это позволяет мне использовать swoop, чтобы найти все вхождения в проекте, отметить соответствующие и затем отредактировать их (в режиме редактирования helm swoops).
Я чувствую, что, возможно, есть чистый способ сделать это с помощью Helm / Helm swoop, но вот моя попытка обдумать решение:
- собрать имена файлов из снаряда
- создать список буферов из списка имен файлов
- выполните ту же процедуру, что и helm-multi-swoop-all, кроме использования этого нового списка буферов
(projectile-current-project-files)
Похоже, это дает мне список файлов, которые я ищу.
Итак helm-multi-swoop-all
, похоже, что это было бы довольно легко скопировать, а затем настроить.
(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)))
Просто замените вызов на helm-multi-swoop--get-buffer-list
тот, который предоставил список буферов, использующих список снарядов.
Но сейчас я немного застрял. Я не уверен, как создать список буферов для подачи в helm-swoop из набора имен файлов.
Я также не могу помочь, но думаю, что есть более простой способ достичь этого, может быть, без пользовательских функций.
helm-projectile-ack
вместо этого.helm-swoop
. Делает ли,helm-projectile-grep
а затемF3
M-x
wgrep-mode
делает его «редактируемым»?Ответы:
После интересных комментариев от PythonNut, я установил
helm-ag
, и побежалhelm-projectile-ag
от снаряда пакета черезC-c p s s
. Затем я переключился в режим редактирования с помощьюC-c C-e
. Я изменил несколько строк, а затем нажал,C-c C-c
и они были сохранены в соответствующие файлы.Это работает, но в настоящее время один недостаток заключается в том, что он сохраняет каждый из «совпадающих» файлов несколько раз, независимо от того, было ли изменение или нет. Я поднял это как снаряд № 756 .
Кроме того, я думаю, что это будет хорошо работать для нужд, упомянутых в вопросе, и "без пользовательских функций" :-)
источник
helm-git-grep
должно быть быстрее, чемhelm-projectile-ag