Як виключити файли з Projectile?


39

Я використовую налаштування керма-снаряда з прелюдії, і це значно покращило мій робочий процес. Єдине питання, що залишається - це автоматично генеровані файли (наприклад, згенеровані 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ігнорується, незалежно від проекту, з яким ви працюєте. Щоб ігнорувати файл / каталог для певного проекту, ви можете додати .projectileфайл до кореня проекту та додати шляхи до ігнорування з префіксом -до нього, як:

-/CMake

Додаткову інформацію див. У документації projectile-parse-dirconfig-file(або документах снаряда )

Проаналізуйте файл ігнорування файлів та повернення каталогів, щоб ігнорувати та зберігати.

Повертається значення буде мінусом, автомобіль - списком каталогів, а cdr - списком файлів чи каталогів, які слід ігнорувати.

Рядки, що починаються з +, будуть додані до списку каталогів, які слід зберігати , а рядки, починаючи з -, будуть додані до списку каталогів, які потрібно ігнорувати . Для зворотної сумісності без префікса рядком вважається рядок ігнорування .


2
Я не можу влаштуватися projectile-globally-ignored-file-suffixesна роботу так, як (я думаю) це призначено. Чи повинен він містити лише суфікс (тобто "o" для об'єктних файлів), глобул файлу (тобто "* .o") або щось інше? Чесно кажучи, я спробував кожне комбо, про яке я міг придумати, і це не спрацювало.
Бклін

Я використовую Scala з тим часом, і снаряд вже визначає .ensime_cache як глобально ігнорований. Однак Cc ph пропонує штурмовий снаряд і показує всі файли .ensime_cache. Якісь ідеї?
Арн


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і ви готові перейти :)

Код з конфігурації emacs від kaushalmodi .


2

пошук, який поважає ігноровані файли / файли:

  1. install 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.