Làm cách nào để loại trừ các tệp khỏi Projectile?


39

Tôi đang sử dụng thiết lập helm-đạn từ khúc dạo đầu và nó đã là một cải tiến lớn cho quy trình làm việc của tôi. Vấn đề duy nhất còn lại là các tệp được tạo tự động (ví dụ: được tạo bởi CMake) xuất hiện trong quá trình helm-grep và các hoạt động tương tự.

Câu hỏi : có cách nào để loại trừ các tệp trong cây thư mục dự án khỏi Projectile không?

Câu trả lời:


33

Nhìn vào đạn, nó dường như cung cấp bốn tùy chỉnh để bỏ qua các tệp / thư mục trên toàn cầu. Tôi liệt kê từng người trong số họ dưới đây, với tài liệu của họ

projectile-globally-ignored-files

Một danh sách các tập tin trên toàn cầu bị bỏ qua bởi đạn.

projectile-globally-ignored-directories

Một danh sách các thư mục trên toàn cầu bị bỏ qua bởi đạn.

projectile-globally-ignored-file-suffixes

Một danh sách các hậu tố tập tin trên toàn cầu bị bỏ qua bởi đạn.

projectile-globally-ignored-modes

Một danh sách các biểu thức chính quy cho các chế độ chính bị bỏ qua bởi đạn.

Nếu một bộ đệm đang sử dụng một chế độ chính nhất định, đạn sẽ bỏ qua nó cho các chức năng làm việc với các bộ đệm.

Xin lưu ý rằng đây là các tùy chọn toàn cầu, ví dụ như một thư mục trong projectile-globally-ignored-directoriessẽ bị bỏ qua bất kể dự án bạn đang làm việc. Để bỏ qua một tệp / thư mục cho một dự án cụ thể, bạn có thể thêm một .projectiletệp vào thư mục gốc của dự án và thêm các đường dẫn để bỏ qua tiền tố với -nó như sau

-/CMake

Xem tài liệu của projectile-parse-dirconfig-file(hoặc tài liệu của đạn ) để biết thêm

Dự án phân tích bỏ qua tập tin và trả lại thư mục để bỏ qua và giữ.

Giá trị trả về sẽ là một nhược điểm, chiếc xe là danh sách các thư mục cần giữ và cdr là danh sách các tệp hoặc thư mục cần bỏ qua.

Các chuỗi bắt đầu bằng + sẽ được thêm vào danh sách các thư mục cần giữ và các chuỗi bắt đầu bằng - sẽ được thêm vào danh sách các thư mục cần bỏ qua . Để tương thích ngược, không có tiền tố , chuỗi sẽ được coi là chuỗi bỏ qua .


2
Tôi không thể đi projectile-globally-ignored-file-suffixeslàm như tôi nghĩ. Cái này chỉ nên chứa hậu tố (tức là "o" cho các tệp đối tượng), một tệp toàn cầu (tức là "* .o") hay cái gì khác? Thành thật mà nói tôi đã thử mọi combo tôi có thể nghĩ ra và nó không hoạt động.
Bklyn

Tôi đang sử dụng Scala với đồng thời, và đạn đã định nghĩa .ensime_cache là bị bỏ qua trên toàn cầu. Tuy nhiên, Cc ph đưa lên helm-projectile và hiển thị tất cả các tệp .ensime_cache. Có ý kiến ​​gì không?
Arne


7

Một giải pháp khác là sử dụng ag( the_silver_searcher ) hoặc rg( ripgrep ) để tạo tệp dự án. Đây là cách bạn có thể làm điều đó với 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)))

Trong thư mục dự án của bạn, chỉ định các tệp bạn muốn bỏ qua .gitignorevà bạn tốt để đi :)

Mã là từ cấu hình emacs của kaushalmodi's .


2

tìm kiếm tôn trọng các thư mục / tập tin bị bỏ qua:

  1. cài đặt ack(Một thay thế cho grep. Tôi cài đặt qua homebrew.)

  2. đưa --ignore-casevào ~.ackrctập tin của bạn (giả sử bạn muốn bỏ qua trường hợp)

  3. liên kết helm-projectile-ackvới một chìa khóa. Tôi làm điều này trong init emacs của tôi thông qua:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. tạo một .projectiletập tin Ví dụ,
-.dot
-.jcs
-.svg
-.txt

sử dụng

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

hoặc là

C-c s p g     ;; search everything
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.