Helm swoop trên tất cả các tệp dự án (không chỉ bộ đệm hiện tại)


14

Vì vậy, tôi đang tìm cách helm-swoopxem xét tất cả các tệp trong một dự án, không chỉ bộ đệm mở hiện tại.

Điều này là để tôi có thể sử dụng swoop để tìm tất cả các lần xuất hiện trong một dự án, đánh dấu những lần liên quan, sau đó chỉnh sửa chúng (trong chế độ chỉnh sửa helm swoops).

Tôi cảm thấy rằng có lẽ có một cách rõ ràng để làm điều này với swm Helm / Helm nhưng đây là nỗ lực của tôi để suy nghĩ thông qua một giải pháp:

  1. thu thập tên tập tin từ đạn
  2. tạo một danh sách các bộ đệm từ danh sách tên tệp
  3. thực hiện cùng một thói quen như helm-multi-swoop-all bên cạnh việc sử dụng danh sách bộ đệm mới này

(projectile-current-project-files), có vẻ như nó cung cấp cho tôi danh sách tập tin mà tôi đang tìm kiếm.

Vì vậy helm-multi-swoop-all, có vẻ như nó khá dễ dàng để sao chép và sau đó điều chỉnh.

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

Chỉ cần thay thế cuộc gọi đến helm-multi-swoop--get-buffer-list, một cuộc gọi cung cấp danh sách bộ đệm bằng danh sách tên lửa.

Nhưng bây giờ tôi có một chút bế tắc. Tôi không chắc chắn làm thế nào để tạo một danh sách các bộ đệm để nạp vào helm-swoop từ một tập hợp các tên tệp.

Tôi cũng không thể không nghĩ rằng có một cách đơn giản hơn để đạt được điều này, có thể không có chức năng tùy chỉnh.


1
Điều này có khả năng có vấn đề. Giả sử bạn muốn tìm kiếm một dự án lớn cho "abc". Bạn có muốn mở bộ đệm tệp cho mỗi tệp bạn xem trước không? Bạn cũng có thể kết thúc với mười hoặc hai mươi bộ đệm bổ sung mà bạn không muốn. Tôi muốn đề nghị sử dụng helm-projectile-ackthay thế.
PythonNut

2
Vâng, tôi đã không tưởng tượng sử dụng điều này cho một dự án lớn. Tôi cũng hy vọng đóng bộ đệm tập tin đã mở khi kết thúc với thói quen này.
Mike McFarland

Ngoài ra, helm-projectile-ack (hoặc ag) gần như những gì tôi đang tìm kiếm, ngoại trừ tôi muốn có thể chỉnh sửa các dòng (như helm swoop cho phép)
Mike McFarland

Tôi không thực sự sử dụng helm-swoop. Có phải làm một helm-projectile-grepvà sau đó F3 M-x wgrep-modelàm cho nó "có thể chỉnh sửa"?
PythonNut 7/2/2015

Cảm ơn, tôi không biết về chế độ wgrep. Helm-projectile-grep đang chọn các tệp bị bỏ qua cho tôi, nhưng helm-projectile-ack đang hoạt động tốt với wgrep. Ít nhất là nó hoạt động sau khi gỡ cài đặt wgrep đến từ melpa và sử dụng cái ở đây để thay thế.
Mike McFarland

Câu trả lời:


7

Theo các bình luận thú vị từ PythonNut, tôi đã cài đặt helm-agvà chạy helm-projectile-agtừ gói đạn qua C-c p s s. Sau đó tôi chuyển sang chế độ chỉnh sửa với C-c C-e. Tôi đã thay đổi một vài dòng và sau đó nhấn C-c C-cvà chúng được lưu vào các tệp có liên quan.

Điều này hoạt động, nhưng hiện tại có một điểm yếu là nó lưu từng tệp "khớp" nhiều lần bất kể có thay đổi hay không. Tôi đã nêu ra điều này như là đạn # 756 .

Ngoài ra, tôi nghĩ rằng nó sẽ hoạt động tốt cho nhu cầu được đề cập trong câu hỏi và "không có chức năng tùy chỉnh" :-)


đây thực sự là những gì tôi đã giải quyết. Vấn đề duy nhất tôi gặp phải là đôi khi các tệp bị bỏ qua bởi git / projectile không bị bỏ qua trong kết quả tìm kiếm ag. Không có thời gian để nghiên cứu về nó.
Mike McFarland

Mẹo: helm-git-grepnên nhanh hơnhelm-projectile-ag
Bệnh dịch hạch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.