Como excluir arquivos do Projectile?

39

Estou usando a configuração helm-projectile do prelúdio e foi uma grande melhoria no meu fluxo de trabalho. O único problema restante são os arquivos gerados automaticamente (por exemplo, gerados pelo CMake) que aparecem durante operações helm-grep e similares.

Pergunta : existe uma maneira de excluir arquivos da árvore de pastas de projetos do Projectile?

Principiante
fonte

Respostas:

34

Olhando para o projétil, parece oferecer quatro personalizações para ignorar arquivos / diretórios globalmente. Estou listando cada um deles abaixo, com sua documentação

projectile-globally-ignored-files

Uma lista de arquivos globalmente ignorados pelo projétil.

projectile-globally-ignored-directories

Uma lista de diretórios globalmente ignorados pelo projétil.

projectile-globally-ignored-file-suffixes

Uma lista de sufixos de arquivo globalmente ignorados pelo projétil.

projectile-globally-ignored-modes

Uma lista de expressões regulares para os principais modos ignorados pelo projétil.

Se um buffer estiver usando um determinado modo principal, o projétil o ignorará nas funções que trabalham com buffers.

Observe que essas são opções globais; portanto, por exemplo, um diretório projectile-globally-ignored-directoriesserá ignorado, independentemente do projeto em que você estiver trabalhando. Para ignorar um arquivo / diretório para um projeto específico, você pode adicionar um .projectilearquivo à raiz do projeto e adicionar os caminhos a serem ignorados com o prefixo -, como segue

-/CMake

Consulte a documentação de projectile-parse-dirconfig-file(ou documentos do projétil ) para obter mais informações

O projeto de análise ignora o arquivo e retorna os diretórios para ignorar e manter.

O valor de retorno será um contras, o carro sendo a lista de diretórios a serem mantidos e o cdr a lista de arquivos ou diretórios a serem ignorados.

As strings iniciadas com + serão adicionadas à lista de diretórios a serem mantidas e as strings iniciadas com - serão adicionadas à lista de diretórios a serem ignoradas . Para compatibilidade com versões anteriores, sem um prefixo, a sequência será assumida como sendo uma sequência de ignorados .

Iqbal Ansari
fonte
2
Não consigo projectile-globally-ignored-file-suffixestrabalhar como (acho) como pretendido. Isso deve conter apenas o sufixo (ou seja, "o" para arquivos de objeto), um arquivo glob (ou seja, "* .o") ou algo mais? Sinceramente, tentei todas as combinações que consegui pensar e não funcionou.
Bklyn
Estou usando Scala com ensime, e o projétil já define .ensime_cache como globalmente ignorado. No entanto, o Cc ph exibe o helm-projectile e mostra todos os arquivos .ensime_cache. Alguma ideia?
Arne
23

Sim, no seu .projectilearquivo, em cada linha especifique semelhante a: cada linha se parece com:

- /path/to/somefile

Cada linha contém um caminho de arquivo.

Consulte a documentação oficial sobre como ignorar arquivos

robbyoconnor
fonte
7

Outra solução seria usar ag( the_silver_searcher ) ou rg( ripgrep ) para gerar arquivos de projeto. Veja como você pode fazer isso com 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)))

No diretório do projeto, especifique os arquivos que você deseja ignorar .gitignoree pronto: :)

O código é da configuração do emacs de kaushalmodi .

Chakravarthy Raghunandan
fonte
2

pesquisa que respeite diretórios / arquivos ignorados:

  1. install ack(Uma alternativa ao grep. Eu instalo via homebrew.)

  2. coloque --ignore-caseno seu ~.ackrcarquivo (supondo que você queira ignorar maiúsculas e minúsculas)

  3. vincular helm-projectile-acka uma chave. Eu faço isso no meu emacs init via:

(use-package helm
  ...
  :bind (...
         ("C-c p s a" . helm-projectile-ack)
        )
  ...
)
  1. crie um .projectilearquivo Por exemplo,
-.dot
-.jcs
-.svg
-.txt

usar

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

ou

C-c s p g     ;; search everything
haroldcarr
fonte