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-caching
a 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.
fonte
Respostas:
Uma vez ativado,
projectile
funciona pronto para projetos git. Para ativar incluirna 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 maneirafind-file
, mas atuará em todos os arquivos nos subdiretórios do diretório principal do projeto (onde o.git
diretório está).Se você deseja evitar o git, pode criar um arquivo como alternativa
.projectile
na 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
Ido
ehelm
.Editar:
Verifique o valor de
projectile-indexing-method
. No Linux, isso deve seralien
e o valor deprojectile-enable-caching
deveria sernil
.fonte
projectile-find-file
, os únicos arquivos listados são os que eu já visitei, mesmo que o diretório do projeto contenha muitos outros.projectile-indexing-method
(C-h v projectile-indexing-method
)? No Linux, isso deve seralien
.projectile-enable-caching
deveria sernil
.projectile-enable-caching
anil
e começou a trabalhar como eu esperava. Sabendo disso, consegui configurá-lo novamentet
e depois usá-loC-u C-c p f
para invalidar o cacheprojectile-find-file
e 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.