Projectile zeigt nicht alle Dateien im Projekt an


12

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, nilkonnte Projectile alle Dateien in meinem Projekt finden. Dank der Antwort von Alexurba und der nachfolgenden Kommentare konnte ich das Problem finden.


Diese Frage ist viel zu weit gefasst und sollte geschlossen werden. Es ist kein guter Kandidat für SE. Bitte stellen Sie eine bestimmte Frage zu einem einzelnen, spezifischen Problem, das Sie haben. Geben Sie nach Bedarf Kontextinformationen für das jeweilige Problem an.
Drew

4
Ich denke, es ist eine gute Frage, die einfach zu viel Hintergrundgeschichte hat. Ich denke, wenn es auf diese Zeile ausgerichtet wäre: "Wie richte ich Projekte in Projectile so ein, dass sie sofort über alle Dateien im Projekt informiert sind.", Wäre es gut.
Jordon Biondo

3
@JordonBiondo: Je fokussierter es ist, desto nützlicher (für SE) ist es. Sicherlich könnte man einen minimalen Fokus anstreben, so dass er nicht geschlossen / verschließbar wäre. Aber man sollte es noch besser machen können. Ich vermute, dass es dort irgendwo 3 oder 4 gute Fragen gibt, und jeder würde davon profitieren, wenn sie auf gezielte Weise getrennt gestellt würden.
Drew

Welche Plattform verwenden Sie (Windows, Mac, Linux)? Die Indizierung von Projektdateien scheint plattformabhängig implementiert zu sein.
Alexurba

1
Ich teste dies unter Linux (RHEL 6.5), möchte es aber auf allen Plattformen verwenden können.
Nispio

Antworten:


8

Einmal aktiviert, projectilefunktioniert sofort für Git-Projekte. Zum Aktivieren gehören

(projectile-global-mode)

in Ihrer Emacs-Konfiguration (oder starten projectile-mode) manuell.

Dann projectile-find-file(Standardschlüsselbindung ist C-c p f) funktioniert es genauso find-file, wirkt sich jedoch auf alle Dateien in den Unterverzeichnissen des Hauptverzeichnisses des Projekts aus (wo sich das .gitVerzeichnis befindet).

Wenn Sie Git vermeiden möchten, können Sie alternativ eine Datei .projectileim 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 Idound zu lesen helm.

Bearbeiten:

Überprüfen Sie den Wert von projectile-indexing-method. Unter Linux sollte dies sein alienund der Wert von projectile-enable-cachingsollte sein nil.


Dies ist genau der Teil, der für mich nicht funktioniert. Beim Ausführen projectile-find-filewerden nur die Dateien aufgelistet, die ich bereits besucht habe, obwohl das Projektverzeichnis viel mehr enthält.
Nispio

@nispio, auf der Projektseite werden verschiedene Indizierungs- und Caching-Methoden erwähnt. Können Sie den Wert von projectile-indexing-method( C-h v projectile-indexing-method) überprüfen ? Unter Linux sollte dies sein alien.
Alexurba

Und projectile-enable-cachingsollte es sein nil.
Alexurba

2
Du hast es gefunden. Ich machte mich projectile-enable-cachingdaran nilund es fing an zu funktionieren, wie ich es erwartet hatte. Da ich das wusste, konnte ich es zurücksetzen tund dann verwenden C-u C-c p f, um den Cache für ungültig zu machen, projectile-find-fileund 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.
Nispio

Schön, dass es funktioniert. Ich bin mir jedoch nicht sicher, was unter Windows passieren wird, wenn keine "Alien" -Indizierung verfügbar ist. Aber vielleicht kann das wirklich das Thema einer zweiten Frage sein, wenn Sie darauf stoßen.
Alexurba
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.