Штурвал на всіх файлах проекту (не тільки на поточних буферах)


15

Тому я хочу helm-swoopпереглянути всі файли проекту, а не лише поточний набір відкритих буферів.

Це так, я можу використовувати swoop, щоб знайти всі події в проекті, позначити відповідні, а потім відредагувати їх (у режимі редагування керма).

Я відчуваю, що, мабуть, існує чистий спосіб зробити це за допомогою Helm / Helm swoop, але ось моя спроба продумати рішення:

  1. зібрати імена з снарядів
  2. створити список буферів зі списку імен файлів
  3. виконайте таку ж процедуру, що і helm-multi-swoop, за винятком використання цього нового буферного списку

(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 з набору імен файлів.

Я також не можу допомогти, але думаю, що існує простіший спосіб досягти цього, можливо, без спеціальних функцій.


1
Це потенційно проблематично. Припустимо, ви хочете промайнути великий проект для "abc". Ви хочете відкрити файловий буфер для кожного переглянутого файлу? Ви можете отримати десять-двадцять додаткових буферів, які ви не хочете. Я б запропонував використовувати helm-projectile-ackзамість цього.
PythonNut

2
так, я не уявляв, як використовувати це для великого проекту. Я також сподівався закрити буфери файлів, відкриті після завершення цієї програми.
Майк Макфарланд

Крім того, шлем-снаряд-ак (або аг) - це майже те, що я шукаю, за винятком того, що я хотів би мати можливість редагувати рядки (як дозволяє кермовий наліт)
Майк Макфарланд

Я насправді не використовую helm-swoop. Чи робить це, helm-projectile-grepа потім F3 M-x wgrep-modeробить його "редагованим"?
PythonNut

Дякую, мені не було відомо про wgrep-режим. Helm-projectile-grep збирає для мене ігноровані файли, але helm-projectile-ack добре працює з wgrep. Принаймні, це працює після видалення wgrep, який прийшов від melpa, і використання цього тут .
Майк Макфарланд

Відповіді:


7

Після цікавих коментарів PythonNut, я встановив helm-agі вибіг helm-projectile-agіз пакета снарядів через C-c p s s. Потім я перейшов у режим редагування за допомогою C-c C-e. Я змінив кілька рядків, а потім натиснув, C-c C-cі вони були збережені у відповідних файлах.

Це працює, але наразі одна неприємність полягає в тому, що він зберігає кожен із "зіставлених" файлів кілька разів незалежно від того, відбулися зміни чи ні. Я підняв це як снаряд №756 .

Крім того, я думаю, що це буде добре для потреб, зазначених у питанні, та "без спеціальних функцій" :-)


це фактично те, на чому я і влаштувався. Єдине питання, яке у мене виникає, це те, що іноді файли, ігноровані git / projectile, не ігноруються в результатах пошуку ag. Не встигли копатись.
Майк Макфарланд

Порада: helm-git-grepмає бути швидше ніжhelm-projectile-ag
PlagueHammer

Чому це повинно бути швидше?
RichieHH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.