Projectile에서 파일을 제외하는 방법?


39

prelude의 helm-projectile 설정을 사용하고 있으며 워크 플로가 크게 향상되었습니다. 남아있는 유일한 문제는 자동 생성 된 파일 (예 : CMake에 의해 생성 된 파일)이 helm-grep 및 유사한 작업 중에 표시됩니다.

질문 : Projectile에서 프로젝트 폴더 트리의 파일을 제외하는 방법이 있습니까?

답변:


33

발사체를 보면 전 세계적으로 파일 / 디렉토리를 무시하기위한 네 가지 사용자 정의를 제공하는 것 같습니다. 문서와 함께 아래에 각각 나열하고 있습니다.

projectile-globally-ignored-files

발사체가 전역 적으로 무시한 파일 목록.

projectile-globally-ignored-directories

발사체에 의해 전역 적으로 무시되는 디렉토리 목록.

projectile-globally-ignored-file-suffixes

발사체에 의해 전역 적으로 무시되는 파일 접미사 목록.

projectile-globally-ignored-modes

발사체가 무시한 주요 모드의 정규 표현식 목록입니다.

버퍼가 주어진 주요 모드를 사용하는 경우, 발사체는 버퍼로 작업하는 함수에 대해이를 무시합니다.

이 옵션은 전역 옵션이므로 예를 들어 projectile-globally-ignored-directories작업중인 프로젝트에 관계없이 in 디렉토리 가 무시됩니다. 특정 프로젝트의 파일 / 디렉토리를 무시하려면 .projectile파일을 프로젝트의 루트에 추가하고 -다음과 같이 접두사가 무시되는 경로를 추가하십시오

-/CMake

자세한 내용은 projectile-parse-dirconfig-file(또는 발사체 문서 ) 문서 를 참조하십시오

프로젝트 무시 파일을 구문 분석하고 무시하고 유지하기 위해 디렉토리를 리턴하십시오.

리턴 값은 단점이며, 자동차는 보관할 디렉토리 목록이고 cdr은 무시할 파일 또는 디렉토리 목록입니다.

+로 시작하는 문자열 은 보관할 디렉토리 목록에 추가되고 -로 시작하는 문자열 은 무시할 디렉토리 목록에 추가됩니다 . 이전 버전과의 호환성 을 위해 접두어없으면 문자열은 무시 문자열간주됩니다 .


2
projectile-globally-ignored-file-suffixes의도 한대로 작동 할 수 없습니다 . 여기에 접미사 (예 : 객체 파일의 경우 "o"), 파일 글로브 (예 : "* .o") 또는 다른 항목 만 포함해야합니까? 솔직히 나는 내가 생각할 수있는 모든 콤보를 시도했지만 작동하지 않았습니다.
Bklyn

나는 scala를 ensime과 함께 사용하고 있으며 projectile은 이미 .ensime_cache를 전역 적으로 무시한 것으로 정의합니다. 그러나 Cc ph는 helm-projectile을 표시하고 모든 .ensime_cache 파일을 표시합니다. 어떤 아이디어?
Arne

23

예, .projectile파일에서 각 줄에 다음과 유사하게 지정하십시오. 각 줄은 다음과 같습니다.

- /path/to/somefile

각 줄에는 하나의 파일 경로가 있습니다.

파일 무시에 대한 공식 문서를 참조하십시오


7

다른 해결책은 ag( the_silver_searcher ) 또는 rg( ripgrep )을 사용하여 프로젝트 파일을 생성하는 것입니다. 당신이 그것을 할 수있는 방법은 다음과 rg같습니다

(setq projectile-enable-caching t)

;;; Default rg arguments
  ;; https://github.com/BurntSushi/ripgrep
  (when (executable-find "rg")
    (progn
      (defconst modi/rg-arguments
        `("--line-number"                     ; line numbers
          "--smart-case"
          "--follow"                          ; follow symlinks
          "--mmap")                           ; apply memory map optimization when possible
        "Default rg arguments used in the functions in `projectile' package.")

      (defun modi/advice-projectile-use-rg ()
        "Always use `rg' for getting a list of all files in the project."
        (mapconcat 'identity
                   (append '("\\rg") ; used unaliased version of `rg': \rg
                           modi/rg-arguments
                           '("--null" ; output null separated results,
                             "--files")) ; get file names matching the regex '' (all files)
                   " "))

      (advice-add 'projectile-get-ext-command :override #'modi/advice-projectile-use-rg)))

프로젝트 디렉토리에서 무시하려는 파일을 지정하면 .gitignore좋습니다. :)

코드는 kaushalmodi의 emacs 설정 에서 가져온 것 입니다.


2

무시 된 디렉토리 / 파일을 존중하는 검색 :

  1. 설치 ack(grep의 대안. homebrew를 통해 설치합니다.)

  2. 파일에 넣 --ignore-case습니다 ~.ackrc(대소 문자를 무시한다고 가정)

  3. helm-projectile-ack키에 바인딩하십시오 . 나는 이것을 통해 emacs init에서 이것을한다 :

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. .projectile파일을 만듭니다 . 예 :
-.dot
-.jcs
-.svg
-.txt

사용하다

C-c p s a     ;; search that respects .projectile ignore

또는

C-c s p g     ;; search everything
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.