O projétil não mostra todos os arquivos no projeto

12

Depois de visitar um arquivo que faz parte de um repositório git, o Projectile reconhece a existência do meu repositório git como um projeto, mas lista apenas um arquivo (o arquivo atual) como parte do projeto. À medida que visito outros arquivos no projeto, eles se tornam parte do projeto, um de cada vez.

Como crio projetos no Projectile para que eles saibam imediatamente de todos os arquivos no projeto?

Todos os tutoriais que encontrei até agora assumem que você está visitando um arquivo em um projeto existente e que o Projectile sabe quais arquivos esse projeto contém.


Atualizar

Quando montei o Projétil, aceitei a seguinte sugestão na documentação do Projétil:

Armazenamento em cache

Como a indexação de um grande projeto não é exatamente rápida (especialmente no Emacs Lisp), o Projectile suporta o cache dos arquivos do projeto. O armazenamento em cache é ativado por padrão sempre que a indexação nativa é ativada.

Para habilitar o armazenamento em cache incondicionalmente, use este trecho de código:

(setq projectile-enable-caching t)

Como ocasionalmente navegarei em alguns projetos grandes, adicionei isso ao meu arquivo init, esperando que isso me desse um aumento de desempenho. Não sei como o Projectile gerencia seu cache, mas, na época, presumi que na primeira vez que visitei um projeto, a árvore do projeto seria explorada e o cache preenchido com todos os arquivos do projeto. Parece que minha suposição estava errada.

Depois que eu definir projectile-enable-cachinga nil, projéctil foi capaz de encontrar todos os arquivos no meu projeto. Graças à resposta de alexurba e aos comentários de acompanhamento, consegui encontrar o problema.

nispio
fonte
Essa questão é muito ampla e deve ser encerrada. Não é um bom candidato para SE. Faça uma pergunta específica sobre um problema específico que você está tendo. Forneça informações contextuais conforme necessário para o problema específico.
Tirou
4
Eu acho que é uma boa pergunta que tem muita história por trás. Eu acho que se fosse reorientado nesta linha: "Como configuro projetos no Projectile para que eles estejam imediatamente cientes de todos os arquivos no projeto.", Seria bom.
Jordon Biondo 14/10
3
@JordonBiondo: Quanto mais focado, mais útil (para o SE) é. Certamente, poderia-se buscar um grau mínimo de foco, para que ele não fosse fechado / fechado. Mas um deve ser capaz de fazer ainda melhor do que isso. Estou supondo que provavelmente haja 3 ou 4 boas perguntas, em algum lugar, e todos se beneficiariam se fossem colocadas separadamente, de uma maneira focada.
Tirou
Qual plataforma você está usando (Windows, Mac, Linux)? A indexação dos arquivos do projeto parece ser implementada de forma independente na plataforma.
alexurba
1
Estou testando isso no Linux (RHEL 6.5), mas gostaria de poder usá-lo em todas as plataformas.
Nispio 14/10

Respostas:

8

Uma vez ativado, projectilefunciona pronto para projetos git. Para ativar incluir

(projectile-global-mode)

na configuração do Emacs (ou inicie projectile-mode) manualmente.

Então projectile-find-file(a ligação de chave padrão é C-c p f) funciona da mesma maneira find-file, mas atuará em todos os arquivos nos subdiretórios do diretório principal do projeto (onde o .gitdiretório está).

Se você deseja evitar o git, pode criar um arquivo como alternativa .projectilena raiz do projeto. Isso terá o mesmo efeito e pode ser usado para ignorar certos arquivos ou diretórios (semelhante a .gitignore).

Muito mais informações podem ser encontradas na página do github do projeto (que também é uma leitura muito longa). Eu especialmente recomendo a ler as seções sobre Idoe helm.

Editar:

Verifique o valor de projectile-indexing-method. No Linux, isso deve ser aliene o valor de projectile-enable-cachingdeveria ser nil.

alexurba
fonte
Esta é exatamente a parte que não está funcionando para mim. Quando executo projectile-find-file, os únicos arquivos listados são os que eu já visitei, mesmo que o diretório do projeto contenha muitos outros.
Nispio 14/10
@nispio, na página do projeto, menciona diferentes métodos de indexação e armazenamento em cache. Você pode verificar o valor de projectile-indexing-method( C-h v projectile-indexing-method)? No Linux, isso deve ser alien.
21914 alexandba
E projectile-enable-cachingdeveria ser nil.
21814 alexurba #
2
Você achou. I definir projectile-enable-cachinga nile começou a trabalhar como eu esperava. Sabendo disso, consegui configurá-lo novamente te depois usá-lo C-u C-c p fpara invalidar o cache projectile-find-filee isso também está funcionando. Estou confuso por que preciso invalidar o cache se o projeto nunca foi armazenado em cache antes, mas guardarei isso para outra pergunta, talvez.
Nispio 14/10
Ótimo que funciona. No entanto, não tenho certeza do que acontecerá no Windows, onde a indexação 'alienígena' não está disponível. Mas talvez isso possa realmente ser objeto de uma segunda pergunta quando você a encontrar.
Alexurba