Come escludere i file da Projectile?


39

Sto usando la configurazione timone-proiettile di prelude ed è stato un enorme miglioramento del mio flusso di lavoro. L'unico problema rimanente sono i file generati automaticamente (ad esempio generati da CMake) che vengono visualizzati durante helm-grep e operazioni simili.

Domanda : esiste un modo per escludere i file nella struttura di cartelle dei progetti da Projectile?

Risposte:


34

Guardando il proiettile sembra offrire quattro personalizzazioni per ignorare i file / le directory a livello globale. Sto elencando ciascuno di essi di seguito, con la loro documentazione

projectile-globally-ignored-files

Un elenco di file a livello globale ignorato dal proiettile.

projectile-globally-ignored-directories

Un elenco di directory ignorate globalmente dal proiettile.

projectile-globally-ignored-file-suffixes

Un elenco di suffissi di file globalmente ignorato dal proiettile.

projectile-globally-ignored-modes

Un elenco di espressioni regolari per le principali modalità ignorate dal proiettile.

Se un buffer utilizza una determinata modalità principale, il proiettile lo ignorerà per le funzioni che funzionano con i buffer.

Si prega di notare che si tratta di opzioni globali, ad esempio una directory in projectile-globally-ignored-directoriesverrà ignorata indipendentemente dal progetto con cui si sta lavorando. Per ignorare un file / directory per un particolare progetto, è possibile aggiungere un .projectilefile alla radice del progetto e aggiungere i percorsi da ignorare con il prefisso -come segue

-/CMake

Vedi la documentazione di projectile-parse-dirconfig-file(o documenti del proiettile ) per maggiori informazioni

Il progetto di analisi ignora il file e restituisce le directory da ignorare e conservare.

Il valore di ritorno sarà un contro, la macchina sarà la lista di directory da conservare e il cdr sarà la lista di file o directory da ignorare.

Le stringhe che iniziano con + verranno aggiunte all'elenco delle directory da conservare e le stringhe che iniziano con - verranno aggiunte all'elenco delle directory da ignorare . Per compatibilità con le versioni precedenti, senza un prefisso si presume che la stringa sia una stringa ignorata .


2
Non riesco a mettermi projectile-globally-ignored-file-suffixesal lavoro perché (penso) è previsto. Dovrebbe contenere solo il suffisso (ovvero "o" per i file oggetto), un file glob (ovvero "* .o") o qualcos'altro? Francamente ho provato ogni combo che mi viene in mente e non ha funzionato.
Bklyn,

Sto usando Scala con ensime e il proiettile definisce già .ensime_cache come ignorato a livello globale. Tuttavia Cc ph visualizza helm-projectile e mostra tutti i file .ensime_cache. Qualche idea?
Arne,


7

Un'altra soluzione sarebbe quella di utilizzare ag( the_silver_searcher ) o rg( ripgrep ) per generare file di progetto. Ecco come puoi farlo 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)))

Nella directory del progetto, specifica i file che vuoi ignorare .gitignoree sei a posto :)

Il codice proviene dalla configurazione di emacs di kaushalmodi .


2

ricerca che rispetta dir / file ignorati:

  1. install ack(Un'alternativa a grep. Installo tramite homebrew.)

  2. inserisci il --ignore-casetuo ~.ackrcfile (supponendo che tu voglia ignorare il caso)

  3. associare helm-projectile-acka una chiave. Faccio questo nel mio emacs init tramite:

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

uso

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

o

C-c s p g     ;; search everything
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.