El proyectil no muestra todos los archivos en el proyecto

12

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-cachinga 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.

nispio
fuente
Esta pregunta es demasiado amplia y debería cerrarse. No es un buen candidato para SE. Haga una pregunta específica sobre un problema único y específico que tenga. Proporcione información contextual según sea necesario para el problema específico.
Dibujó el
44
Creo que es una buena pregunta que tiene demasiada historia de fondo. Creo que si se volviera a enfocar en esta línea: "¿Cómo configuro proyectos en Projectile para que estén al tanto de todos los archivos del proyecto?", Sería bueno.
Jordon Biondo
3
@JordonBiondo: Cuanto más enfocado es, más útil (para SE) es. Ciertamente, uno podría apuntar a un grado mínimo de enfoque, para que no sea cerrado / cerrable. Pero uno debería poder hacerlo incluso mejor que eso. Supongo que probablemente haya 3 o 4 buenas preguntas allí, en algún lugar, y todos se beneficiarían si se formularan por separado, de manera enfocada.
Dibujó el
¿Qué plataforma estás usando (Windows, Mac, Linux)? La indexación de los archivos del proyecto parece implementarse de manera dependiente de la plataforma.
alexurba
1
Estoy probando esto en Linux (RHEL 6.5), pero me gustaría poder usarlo en todas las plataformas.
nispio

Respuestas:

8

Una vez activado, projectilefunciona listo para usar para proyectos git. Para activar incluir

(projectile-global-mode)

en su configuración de Emacs (o inicio projectile-mode) manualmente.

Entonces projectile-find-file(el enlace de teclas predeterminado es C-c p f) funciona igual que find-file, pero actuará en todos los archivos en los subdirectorios del directorio principal del proyecto (donde está el .gitdirectorio).

Si desea evitar git, también puede crear un archivo .projectileen 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 Idoy helm.

Editar:

Verifique el valor de projectile-indexing-method. En Linux esto debería ser alien, y el valor de projectile-enable-cachingdebería ser nil.

alexurba
fuente
Esta es exactamente la parte que no funciona para mí. Cuando ejecuto projectile-find-file, los únicos archivos enumerados son los que ya he visitado, aunque el directorio del proyecto contiene muchos más.
nispio
@nispio, en la página del proyecto menciona diferentes métodos de indexación y almacenamiento en caché. ¿Puedes verificar el valor de projectile-indexing-method( C-h v projectile-indexing-method)? En Linux esto debería ser alien.
alexurba
Y projectile-enable-cachingdebería ser nil.
alexurba
2
Lo encontraste. Me puse projectile-enable-cachinga nily comenzó a trabajar como me esperaba. Sabiendo eso, pude volver a configurarlo ty luego usarlo C-u C-c p fpara invalidar el caché projectile-find-filey 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.
nispio
Genial que funcione. Sin embargo, no estoy seguro de qué sucederá en Windows donde la indexación 'alienígena' no esté disponible. Pero tal vez eso realmente pueda ser el tema de una segunda pregunta cuando te la encuentres.
alexurba