Bagaimana cara mengecualikan file dari Proyektil?

39

Saya menggunakan pengaturan helm-proyektil dari awal dan ini merupakan peningkatan besar bagi alur kerja saya. Satu-satunya masalah yang tersisa adalah file yang dibuat secara otomatis (misalnya yang dihasilkan oleh CMake) yang muncul selama operasi-grep dan operasi serupa.

Pertanyaan : apakah ada cara untuk mengecualikan file di pohon folder proyek dari Proyektil?

Pemula
sumber

Jawaban:

34

Melihat proyektil itu tampaknya menawarkan empat penyesuaian untuk mengabaikan file / direktori secara global. Saya daftar masing-masing di bawah ini, dengan dokumentasi mereka

projectile-globally-ignored-files

Daftar file yang diabaikan secara global oleh proyektil.

projectile-globally-ignored-directories

Daftar direktori yang diabaikan secara global oleh proyektil.

projectile-globally-ignored-file-suffixes

Daftar akhiran file yang diabaikan secara global oleh proyektil.

projectile-globally-ignored-modes

Daftar ekspresi reguler untuk mode utama diabaikan oleh proyektil.

Jika buffer menggunakan mode utama yang diberikan, proyektil akan mengabaikannya untuk fungsi yang bekerja dengan buffer.

Harap dicatat bahwa ini adalah opsi global jadi misalnya direktori di projectile-globally-ignored-directoriesakan diabaikan terlepas dari proyek yang sedang Anda kerjakan. Untuk mengabaikan file / direktori untuk proyek tertentu, Anda dapat menambahkan .projectilefile ke root proyek dan menambahkan jalur untuk mengabaikan diawali dengan -itu seperti mengikuti

-/CMake

Lihat dokumentasi projectile-parse-dirconfig-file(atau dokumen proyektil ) untuk info lebih lanjut

Proyek Parse abaikan file dan kembalikan direktori untuk diabaikan dan disimpan.

Nilai kembali akan menjadi kontra, mobil menjadi daftar direktori untuk disimpan, dan cdr menjadi daftar file atau direktori yang harus diabaikan.

String yang dimulai dengan + akan ditambahkan ke daftar direktori untuk disimpan , dan string yang dimulai dengan - akan ditambahkan ke daftar direktori untuk diabaikan . Untuk kompatibilitas mundur, tanpa awalan , string akan dianggap sebagai string abaikan .

Iqbal Ansari
sumber
2
Saya tidak dapat mulai projectile-globally-ignored-file-suffixesbekerja karena (saya pikir) itu dimaksudkan. Haruskah ini hanya berisi akhiran (yaitu "o" untuk file objek), glob file (yaitu "* .o") atau yang lainnya? Terus terang saya sudah mencoba setiap kombo yang bisa saya pikirkan dan tidak berhasil.
Bklyn
Saya menggunakan Scala dengan ensime, dan proyektil sudah mendefinisikan .ensime_cache sebagai diabaikan secara global. Namun Cc ph menampilkan proyektil helm dan menampilkan semua file .ensime_cache. Ada ide?
Arne
23

Ya, di .projectilefile Anda , pada setiap baris tentukan mirip dengan: setiap baris terlihat seperti:

- /path/to/somefile

Setiap baris berisi satu jalur file.

Lihat dokumentasi resmi tentang mengabaikan file

robbyoconnor
sumber
7

Solusi lain adalah menggunakan ag( the_silver_searcher ) atau rg( ripgrep ) untuk menghasilkan file proyek. Berikut ini cara melakukannya 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)))

Di direktori proyek Anda, tentukan file yang ingin Anda abaikan .gitignoredan Anda dapat melanjutkan :)

Kode berasal dari konfigurasi emacs kaushalmodi .

Chakravarthy Raghunandan
sumber
2

pencarian yang menghormati direktori / file yang diabaikan:

  1. install ack(Alternatif untuk grep. Saya instal via homebrew.)

  2. memasukkan file --ignore-caseAnda ~.ackrc(dengan asumsi Anda ingin mengabaikan kasus)

  3. ikat helm-projectile-ackke kunci. Saya melakukan ini di inac emacs saya melalui:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. buat .projectilefile. Misalnya,
-.dot
-.jcs
-.svg
-.txt

menggunakan

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

atau

C-c s p g     ;; search everything
Haroldcarr
sumber