¿Cómo excluir archivos de Projectile?

39

Estoy usando la configuración helm-projectile de prelude y ha sido una gran mejora para mi flujo de trabajo. El único problema restante son los archivos generados automáticamente (por ejemplo, generados por CMake) que se muestran durante helm-grep y operaciones similares.

Pregunta : ¿hay alguna manera de excluir archivos en el árbol de carpetas de proyectos de Projectile?

Principiante
fuente

Respuestas:

34

En cuanto al proyectil, parece ofrecer cuatro personalizaciones para ignorar los archivos / directorios a nivel mundial. Estoy enumerando cada uno de ellos a continuación, con su documentación

projectile-globally-ignored-files

Una lista de archivos ignorados globalmente por proyectil.

projectile-globally-ignored-directories

Una lista de directorios ignorados globalmente por proyectil.

projectile-globally-ignored-file-suffixes

Una lista de sufijos de archivo ignorados globalmente por proyectil.

projectile-globally-ignored-modes

Una lista de expresiones regulares para modos principales ignorados por proyectil.

Si un búfer está usando un modo principal dado, el proyectil lo ignorará para las funciones que trabajan con búferes.

Tenga en cuenta que estas son opciones globales, por lo que, por ejemplo projectile-globally-ignored-directories, se ignorará un directorio independientemente del proyecto con el que esté trabajando. Para ignorar un archivo / directorio para un proyecto en particular, puede agregar un .projectilearchivo a la raíz del proyecto y agregar las rutas para ignorar con el prefijo -como sigue

-/CMake

Consulte la documentación de projectile-parse-dirconfig-file(o los documentos del proyectil ) para obtener más información.

El proyecto Parse ignora el archivo y devuelve los directorios para ignorar y mantener.

El valor de retorno será una desventaja, el auto será la lista de directorios a mantener y el cdr será la lista de archivos o directorios a ignorar.

Las cadenas que comienzan con + se agregarán a la lista de directorios para mantener , y las cadenas que comienzan con - se agregarán a la lista de directorios para ignorar . Por compatibilidad con versiones anteriores, sin un prefijo , se supondrá que la cadena es una cadena de ignorar .

Iqbal Ansari
fuente
2
No puedo llegar projectile-globally-ignored-file-suffixesa trabajar como (creo) está previsto. ¿Debería contener solo el sufijo (es decir, "o" para archivos de objetos), un globo de archivo (es decir, "* .o") o algo más? Francamente, he probado todos los combo que se me ocurren y no ha funcionado.
Bklyn
Estoy usando Scala con ensime, y el proyectil ya define .ensime_cache como ignorado globalmente. Sin embargo, Cc ph muestra helm-projectile y muestra todos los archivos .ensime_cache. ¿Algunas ideas?
Arne
7

Otra solución sería usar ag( the_silver_searcher ) o rg( ripgrep ) para generar archivos de proyecto. Así es como puedes hacerlo con 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)))

En el directorio de su proyecto, especifique los archivos que desea ignorar .gitignorey estará listo para comenzar :)

El código es de la configuración emacs de kaushalmodi .

Chakravarthy Raghunandan
fuente
2

búsqueda que respeta directorios / archivos ignorados:

  1. instalar ack(Una alternativa a grep. Instalo a través de homebrew).

  2. poner --ignore-caseen su ~.ackrcarchivo (suponiendo que quiera ignorar el caso)

  3. atar helm-projectile-acka una llave. Hago esto en mi emacs init a través de:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. crear un .projectilearchivo P.ej,
-.dot
-.jcs
-.svg
-.txt

utilizar

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

o

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