Después de visitar un archivo que es parte de un repositorio git, Projectile reconoce la existencia de mi repositorio git como proyecto, pero solo enumera un archivo (el archivo actual) como parte del proyecto. A medida que visito otros archivos en el proyecto, se convierten en parte del proyecto uno a la vez.
¿Cómo creo proyectos en Projectile para que estén al tanto de todos los archivos del proyecto?
Todos los tutoriales que he encontrado hasta ahora asumen que estás visitando un archivo dentro de un proyecto existente, y que Projectile sabe qué archivos contiene ese proyecto.
Actualizar
Cuando configuré Projectile, tomé la siguiente sugerencia en la documentación de Projectile:
Almacenamiento en caché
Dado que indexar un gran proyecto no es exactamente rápido (especialmente en Emacs Lisp), Projectile admite el almacenamiento en caché de los archivos del proyecto. El almacenamiento en caché se habilita de forma predeterminada siempre que se habilita la indexación nativa.
Para habilitar el almacenamiento en caché incondicionalmente, use este fragmento de código:
(setq projectile-enable-caching t)
Como ocasionalmente navegaré en algunos proyectos grandes, agregué esto a mi archivo de inicio con la esperanza de que me daría un aumento de rendimiento. No sé cómo Projectile gestiona su almacenamiento en caché, pero en el momento en que supuse que la primera vez que visitaba un proyecto, se exploraría el árbol del proyecto y el caché se llenaría con todos los archivos del proyecto. Parece que mi suposición estaba equivocada.
Después me puse projectile-enable-caching
a nil
, proyectil fue capaz de encontrar todos los archivos en mi proyecto. Gracias a la respuesta de alexurba y los comentarios de seguimiento, pude encontrar el problema.
fuente
Respuestas:
Una vez activado,
projectile
funciona listo para usar para proyectos git. Para activar incluiren su configuración de Emacs (o inicio
projectile-mode
) manualmente.Entonces
projectile-find-file
(el enlace de teclas predeterminado esC-c p f
) funciona igual quefind-file
, pero actuará en todos los archivos en los subdirectorios del directorio principal del proyecto (donde está el.git
directorio).Si desea evitar git, también puede crear un archivo
.projectile
en la raíz del proyecto. Esto tendrá el mismo efecto y puede usarse para ignorar ciertos archivos o directorios (similares a.gitignore
).Se puede encontrar mucha más información en la página de github del proyecto (que es una lectura demasiado larga). Recomiendo especialmente leer las secciones sobre
Ido
yhelm
.Editar:
Verifique el valor de
projectile-indexing-method
. En Linux esto debería seralien
, y el valor deprojectile-enable-caching
debería sernil
.fuente
projectile-find-file
, los únicos archivos enumerados son los que ya he visitado, aunque el directorio del proyecto contiene muchos más.projectile-indexing-method
(C-h v projectile-indexing-method
)? En Linux esto debería seralien
.projectile-enable-caching
debería sernil
.projectile-enable-caching
anil
y comenzó a trabajar como me esperaba. Sabiendo eso, pude volver a configurarlot
y luego usarloC-u C-c p f
para invalidar el cachéprojectile-find-file
y eso también está funcionando. Estoy confundido por qué necesito invalidar el caché si el proyecto nunca se ha almacenado en caché antes, pero tal vez lo guarde para otra pregunta.