현재 버퍼뿐만 아니라 모든 프로젝트 파일에서 Helm swoop


15

그래서 현재 열려있는 버퍼 세트뿐만 아니라 프로젝트의 모든 파일을 helm-swoop살펴 보고 싶습니다 .

이것은 swoop을 사용하여 프로젝트의 모든 항목을 찾고 관련 항목을 표시 한 다음 편집합니다 (helm swoops 편집 모드에서).

Helm / Helm swoop을 사용 하여이 작업을 수행하는 확실한 방법이 있다고 생각하지만 솔루션을 통해 생각하려는 시도는 다음과 같습니다.

  1. 발사체에서 파일 이름을 수집
  2. 파일 이름 목록에서 버퍼 목록을 만듭니다.
  3. 이 새로운 버퍼 목록을 사용하는 것 외에도 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에 공급할 버퍼 목록을 만드는 방법을 잘 모르겠습니다.

또한 도움이 될 수는 없지만 사용자 정의 함수가 없으면이를 달성하는 더 간단한 방법이 있다고 생각합니다.


1
잠재적으로 문제가 있습니다. "abc"에 대한 큰 프로젝트를 스왑하려고한다고 가정하십시오. 미리 보는 모든 단일 파일에 대해 파일 버퍼를 열겠습니까? 원하지 않는 10 개 또는 20 개의 추가 버퍼가 생길 수 있습니다. helm-projectile-ack대신 사용 하는 것이 좋습니다 .
PythonNut

2
예, 큰 프로젝트에 이것을 사용하는 것을 상상하지 못했습니다. 또한이 루틴을 마치면 열린 파일 버퍼를 닫고 싶었습니다.
Mike McFarland

또한, 투구 발사체-ACK (또는 AG)는 내가 선을 편집 할 수 있도록하고 싶습니다 제외하고 내가 찾고 있어요 거의 무엇 (투구 영입과 같이 할 수 있습니다)
마이크 맥팔랜드

실제로는 사용하지 않습니다 helm-swoop. a를 helm-projectile-grep하고 F3 M-x wgrep-mode"편집 가능"하게합니까?
PythonNut

고마워, 나는 wgrep 모드를 몰랐다. Helm-projectile-grep은 무시 된 파일을 가져 오지만 helm-projectile-ack은 wgrep과 잘 작동합니다. 적어도 melpa에서 온 wgrep을 제거하고 대신 여기 를 사용하여 작동합니다 .
Mike McFarland

답변:


7

PythonNut의 흥미로운 의견에 따라을 설치하고을 통해 발사체 패키지 에서 helm-ag실행 helm-projectile-ag했습니다 . 그런 다음로을 사용하여 편집 모드로 전환했습니다 . 몇 줄을 바꾼 다음 누르면 관련 파일에 저장되었습니다.C-c p s sC-c C-eC-c C-c

이것은 작동하지만 현재 유감스럽게도 변경 여부에 관계없이 각 "일치 된"파일을 여러 번 저장한다는 것입니다. 나는 이것을 발사체 # 756 으로 올렸다 .

그 외에도 질문에 언급 된 요구에 대해 잘 작동 할 것이라고 생각합니다.


이것은 실제로 내가 정한 것입니다. 내가 가진 유일한 문제는 때때로 git / projectile에 의해 무시되는 파일이 ag 검색 결과에서 무시되지 않는다는 것입니다. 그것을 파헤칠 시간이 없었습니다.
Mike McFarland

팁 : helm-git-grep보다 빨라야합니다helm-projectile-ag
PlagueHammer

왜 더 빨라야합니까?
RichieHH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.