Après avoir visité un fichier faisant partie d'un référentiel git, Projectile reconnaît l'existence de mon référentiel git en tant que projet, mais il ne répertorie qu'un seul fichier (le fichier actuel) comme faisant partie du projet. Lorsque je visite d'autres fichiers du projet, ils font partie du projet un par un.
Comment créer des projets dans Projectile afin qu'ils soient immédiatement au courant de tous les fichiers du projet?
Tous les didacticiels que j'ai trouvés jusqu'à présent supposent que vous visitez un fichier dans un projet existant et que Projectile sait quels fichiers ce projet contient.
Mise à jour
Lorsque j'ai configuré Projectile, j'ai pris la suggestion suivante dans la documentation Projectile:
Mise en cache
Étant donné que l'indexation d'un grand projet n'est pas exactement rapide (en particulier dans Emacs Lisp), Projectile prend en charge la mise en cache des fichiers du projet. La mise en cache est activée par défaut chaque fois que l'indexation native est activée.
Pour activer la mise en cache sans condition, utilisez cet extrait de code:
(setq projectile-enable-caching t)
Comme je vais occasionnellement naviguer sur de grands projets, j'ai ajouté cela à mon fichier init en espérant que cela me donnerait une amélioration des performances. Je ne sais pas comment Projectile gère sa mise en cache, mais au moment où je supposais que la première fois que je visitais un projet, l'arborescence du projet serait explorée et le cache serait rempli avec tous les fichiers du projet. Il semble que mon hypothèse était fausse.
Après avoir mis projectile-enable-caching
à nil
, Projectile a pu trouver tous les fichiers dans mon projet. Grâce à la réponse d' Alexurba et aux commentaires de suivi, j'ai pu trouver le problème.
la source
Réponses:
Une fois activé,
projectile
fonctionne prêt à l'emploi pour les projets git. Pour activer incluredans votre configuration Emacs (ou démarrez
projectile-mode
) manuellement.Ensuite
projectile-find-file
(la liaison de clé par défaut estC-c p f
) fonctionne commefind-file
, mais agira sur tous les fichiers dans les sous-répertoires du répertoire principal du projet (où se trouve le.git
répertoire).Si vous voulez éviter git, vous pouvez également créer un fichier
.projectile
à la racine du projet. Cela aura le même effet et peut être utilisé pour ignorer certains fichiers ou répertoires (similaire à.gitignore
).Beaucoup plus d'informations peuvent être trouvées sur la page github du projet (qui est trop longue à lire non plus). Je recommande particulièrement de lire les sections sur
Ido
ethelm
.Éditer:
Vérifiez la valeur de
projectile-indexing-method
. Sous Linux, cela devrait êtrealien
, et la valeur deprojectile-enable-caching
devrait êtrenil
.la source
projectile-find-file
, les seuls fichiers répertoriés sont ceux que j'ai déjà visités, même si le répertoire du projet en contient beaucoup plus.projectile-indexing-method
(C-h v projectile-indexing-method
)? Sur Linux, cela devrait l'êtrealien
.projectile-enable-caching
devrait l'êtrenil
.projectile-enable-caching
ànil
et ça a commencé à fonctionner comme je l'attendais. Sachant cela, j'ai pu le redéfinirt
puis l'utiliserC-u C-c p f
pour invalider le cacheprojectile-find-file
et cela fonctionne également. Je ne comprends pas pourquoi j'ai besoin d'invalider le cache si le projet n'a jamais été mis en cache auparavant, mais je l'enregistrerai pour une autre question, peut-être.