Comment exclure des fichiers de Projectile?

39

J'utilise la configuration de projectile de barre de prélude et cela a été une énorme amélioration de mon flux de travail. Les seuls problèmes restants sont les fichiers générés automatiquement (générés par exemple par CMake) qui apparaissent lors des opérations helm-grep et similaires.

Question : Y a-t-il un moyen d'exclure de Projectile les fichiers de l'arborescence des projets?

Débutant
la source

Réponses:

34

En regardant projectile, il semble offrir quatre personnalisations pour ignorer les fichiers / répertoires globalement. J'énumère chacun d'eux ci-dessous, avec leur documentation

projectile-globally-ignored-files

Une liste de fichiers globalement ignorés par projectile.

projectile-globally-ignored-directories

Une liste de répertoires globalement ignorés par projectile.

projectile-globally-ignored-file-suffixes

Une liste de suffixes de fichiers globalement ignorés par projectile.

projectile-globally-ignored-modes

Une liste d'expressions régulières pour les modes majeurs ignorés par projectile.

Si un tampon utilise un mode majeur donné, projectile l'ignorera pour les fonctions utilisant des tampons.

Veuillez noter qu'il s'agit d'options globales. Ainsi, par exemple, un répertoire projectile-globally-ignored-directoriessera ignoré, quel que soit le projet avec lequel vous travaillez. Pour ignorer un fichier / répertoire pour un projet particulier, vous pouvez ajouter un .projectilefichier à la racine du projet et ajouter les chemins à ignorer précédés du préfixe, -comme suit

-/CMake

Voir la documentation de projectile-parse-dirconfig-file(ou la documentation du projectile ) pour plus d'informations

Parse project ignore le fichier et renvoie les répertoires à ignorer et à conserver.

La valeur de retour sera un inconvénient, car étant la liste des répertoires à conserver et le cdr étant la liste des fichiers ou des répertoires à ignorer.

Les chaînes commençant par + seront ajoutées à la liste des répertoires à conserver , et les chaînes commençant par - seront ajoutées à la liste des répertoires à ignorer . Pour la compatibilité ascendante, sans préfixe, la chaîne sera considérée comme une chaîne à ignorer .

Iqbal Ansari
la source
2
Je ne peux pas me rendre projectile-globally-ignored-file-suffixesau travail comme prévu (je pense). Doit-il contenir uniquement le suffixe ("o" pour les fichiers objets), un fichier glob ("" .o ") ou autre chose? Franchement, j'ai essayé tous les combos auxquels je peux penser et cela n'a pas fonctionné.
Bklyn
J'utilise Scala avec ensime et projectile définit déjà .ensime_cache comme globalement ignoré. Cependant Cc ph affiche helm-projectile et affiche tous les fichiers .ensime_cache. Des idées?
Arne
23

Oui, dans votre .projectilefichier, indiquez sur chaque ligne la valeur suivante: chaque ligne ressemble à:

- /path/to/somefile

Chaque ligne contient un chemin de fichier.

Voir la documentation officielle sur ignorer les fichiers

robbyoconnor
la source
7

Une autre solution serait d'utiliser ag( the_silver_searcher ) ou rg( ripgrep ) pour générer des fichiers de projet. Voici comment vous pouvez le faire avec 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)))

Dans le répertoire de votre projet, spécifiez les fichiers que vous souhaitez ignorer .gitignoreet vous pourrez continuer :)

Le code provient de la config emacs de kaushalmodi .

Chakravarthy Raghunandan
la source
2

recherche qui respecte les répertoires / fichiers ignorés:

  1. installer ack(une alternative à grep. J'installe via homebrew.)

  2. mettre --ignore-casedans votre ~.ackrcdossier (en supposant que vous voulez ignorer la casse)

  3. se lier helm-projectile-ackà une clé. Je le fais dans mon emacs init via:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. créer un .projectilefichier. Par exemple,
-.dot
-.jcs
-.svg
-.txt

utilisation

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

ou

C-c s p g     ;; search everything
Haroldcarr
la source