Jak wykluczyć pliki z pocisku?

39

Korzystam z konfiguracji pocisku steru z preludium, co znacznie poprawiło mój przepływ pracy. Jedynym pozostałym problemem są automatycznie generowane pliki (np. Generowane przez CMake), które pojawiają się podczas sterowania grepem i podobnych operacji.

Pytanie : czy istnieje sposób na wykluczenie plików z drzewa folderów projektów z Projectile?

Początkujący
źródło

Odpowiedzi:

33

Patrząc na pocisk, wydaje się, że oferuje cztery dostosowania do ignorowania plików / katalogów na całym świecie. Każdą z nich wymieniam poniżej wraz z ich dokumentacją

projectile-globally-ignored-files

Lista plików globalnie ignorowana przez pocisk.

projectile-globally-ignored-directories

Lista katalogów globalnie ignorowanych przez pociski.

projectile-globally-ignored-file-suffixes

Lista sufiksów plików globalnie ignorowana przez pocisk.

projectile-globally-ignored-modes

Lista wyrażeń regularnych dla głównych trybów ignorowanych przez pocisk.

Jeśli bufor używa danego trybu głównego, pocisk zignoruje go dla funkcji pracujących z buforami.

Należy pamiętać, że są to opcje globalne, więc na przykład katalog w projectile-globally-ignored-directorieszostanie zignorowany niezależnie od projektu, nad którym pracujesz. Aby zignorować plik / katalog dla konkretnego projektu, możesz dodać .projectileplik do katalogu głównego projektu i dodać ścieżki, które mają być ignorowane z prefiksem, -tak jak poniżej

-/CMake

Aby uzyskać więcej informacji , zapoznaj się z dokumentacją projectile-parse-dirconfig-file(lub dokumentacją pocisku )

Analiza projektu zignoruj ​​pliki i zwróć katalogi, aby je zignorować i zachować.

Zwrócona wartość będzie wadą, samochód będzie listą katalogów do zachowania, a cdr będzie listą plików lub katalogów do zignorowania.

Ciągi rozpoczynające się od + zostaną dodane do listy katalogów do zachowania , a ciągi rozpoczynające się od - zostaną dodane do listy katalogów do zignorowania . W celu zachowania kompatybilności wstecznej bez prefiksu ciąg będzie traktowany jako ciąg ignorowany .

Iqbal Ansari
źródło
2
Nie mogę dostać się projectile-globally-ignored-file-suffixesdo pracy, ponieważ (tak myślę) jest to zamierzone. Czy powinien zawierać tylko przyrostek (tzn. „O” dla plików obiektowych), glob pliku (tj. „* .O”) czy coś innego? Szczerze mówiąc, wypróbowałem każdą kombinację, o której mogę pomyśleć i to nie zadziałało.
Bklyn
Używam Scali z ensime, a pocisk już definiuje .ensime_cache jako globalnie ignorowany. Jednak Cc ph wywołuje pocisk steru i pokazuje wszystkie pliki .ensime_cache. Jakieś pomysły?
Arne
7

Innym rozwiązaniem byłoby użycie ag( the_silver_searcher ) lub rg( ripgrep ) do wygenerowania plików projektu. Oto jak możesz to zrobić za pomocą 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)))

W katalogu projektu określ pliki, które chcesz zignorować .gitignorei możesz zacząć :)

Kod pochodzi z konfiguracji emacsa kaushalmodi .

Chakravarthy Raghunandan
źródło
2

wyszukiwanie uwzględniające ignorowane katalogi / pliki:

  1. install ack(alternatywa dla grep. Instaluję przez homebrew.)

  2. wstaw --ignore-casedo ~.ackrcpliku (zakładając, że chcesz zignorować wielkość liter)

  3. powiązać helm-projectile-ackz kluczem. Robię to w mojej emacs init przez:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. utwórz .projectileplik. Na przykład,
-.dot
-.jcs
-.svg
-.txt

posługiwać się

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

lub

C-c s p g     ;; search everything
Haroldcarr
źródło