Nach dem Besuch einer Datei, die Teil eines Git-Repositorys ist, erkennt Projectile die Existenz meines Git-Repositorys als Projekt an, listet jedoch nur eine Datei (die aktuelle Datei) als Teil des Projekts auf. Wenn ich andere Dateien im Projekt besuche, werden sie einzeln Teil des Projekts.
Wie erstelle ich Projekte in Projectile, damit sie sofort über alle Dateien im Projekt informiert sind?
Alle Tutorials, die ich bisher gefunden habe, setzen voraus, dass Sie eine Datei in einem vorhandenen Projekt besuchen und dass Projectile weiß, welche Dateien dieses Projekt enthält.
Aktualisieren
Beim Einrichten von Projectile habe ich den folgenden Vorschlag in der Projectile-Dokumentation übernommen:
Caching
Da die Indizierung eines großen Projekts nicht gerade schnell ist (insbesondere in Emacs Lisp), unterstützt Projectile das Zwischenspeichern der Projektdateien. Das Caching ist standardmäßig aktiviert, wenn die native Indizierung aktiviert ist.
Um das Caching bedingungslos zu aktivieren, verwenden Sie diesen Codeausschnitt:
(setq projectile-enable-caching t)
Da ich gelegentlich in einigen großen Projekten navigiere, habe ich dies meiner Init-Datei hinzugefügt, in der Hoffnung, dass es mir einen Leistungsschub verschafft. Ich weiß nicht, wie Projectile das Caching verwaltet, aber als ich davon ausging, dass beim ersten Besuch eines Projekts der Projektbaum untersucht und der Cache mit allen Projektdateien gefüllt wird. Es scheint, dass meine Annahme falsch war.
Nachdem ich mich auf eingestellt hatte projectile-enable-caching
, nil
konnte Projectile alle Dateien in meinem Projekt finden. Dank der Antwort von Alexurba und der nachfolgenden Kommentare konnte ich das Problem finden.
quelle
Antworten:
Einmal aktiviert,
projectile
funktioniert sofort für Git-Projekte. Zum Aktivieren gehörenin Ihrer Emacs-Konfiguration (oder starten
projectile-mode
) manuell.Dann
projectile-find-file
(Standardschlüsselbindung istC-c p f
) funktioniert es genausofind-file
, wirkt sich jedoch auf alle Dateien in den Unterverzeichnissen des Hauptverzeichnisses des Projekts aus (wo sich das.git
Verzeichnis befindet).Wenn Sie Git vermeiden möchten, können Sie alternativ eine Datei
.projectile
im Projektstamm erstellen . Dies hat den gleichen Effekt und kann verwendet werden, um bestimmte Dateien oder Verzeichnisse (ähnlich wie.gitignore
) zu ignorieren .Weitere Informationen finden Sie auf der Github-Seite des Projekts (die auch zu lang ist). Ich empfehle besonders, die Abschnitte über
Ido
und zu lesenhelm
.Bearbeiten:
Überprüfen Sie den Wert von
projectile-indexing-method
. Unter Linux sollte dies seinalien
und der Wert vonprojectile-enable-caching
sollte seinnil
.quelle
projectile-find-file
werden nur die Dateien aufgelistet, die ich bereits besucht habe, obwohl das Projektverzeichnis viel mehr enthält.projectile-indexing-method
(C-h v projectile-indexing-method
) überprüfen ? Unter Linux sollte dies seinalien
.projectile-enable-caching
sollte es seinnil
.projectile-enable-caching
darannil
und es fing an zu funktionieren, wie ich es erwartet hatte. Da ich das wusste, konnte ich es zurücksetzent
und dann verwendenC-u C-c p f
, um den Cache für ungültig zu machen,projectile-find-file
und das funktioniert auch. Ich bin verwirrt, warum ich den Cache ungültig machen muss, wenn das Projekt noch nie zuvor zwischengespeichert wurde, aber ich werde das vielleicht für eine andere Frage speichern.