Pocisk nie wyświetla wszystkich plików w projekcie

12

Po przejściu do pliku, który jest częścią repozytorium git, Projectile potwierdza istnienie mojego repozytorium git jako projektu, ale wyświetla tylko jeden plik (bieżący plik) jako część projektu. Gdy odwiedzam inne pliki w projekcie, stają się one częścią projektu pojedynczo.

Jak mogę tworzyć projekty w Projectile, aby od razu wiedziały o wszystkich plikach w projekcie?

Wszystkie samouczki, które do tej pory znalazłem, zakładają, że odwiedzasz plik w ramach istniejącego projektu i że Projectile wie, jakie pliki zawiera ten projekt.


Aktualizacja

Kiedy konfigurowałem pocisk, wziąłem następującą sugestię w dokumentacji pocisku:

Buforowanie

Ponieważ indeksowanie dużego projektu nie jest dość szybkie (szczególnie w Emacs Lisp), Projectile obsługuje buforowanie plików projektu. Buforowanie jest domyślnie włączone za każdym razem, gdy włączone jest indeksowanie rodzime.

Aby włączyć buforowanie bezwarunkowo, użyj tego fragmentu kodu:

(setq projectile-enable-caching t)

Ponieważ od czasu do czasu będę nawigował w niektórych dużych projektach, dodałem to do mojego pliku init, mając nadzieję, że da mi to wzrost wydajności. Nie wiem, w jaki sposób Projectile zarządza buforowaniem, ale w momencie, gdy założyłem, że przy pierwszej wizycie w projekcie, drzewo projektu zostanie zbadane, a pamięć podręczna zostanie zapełniona wszystkimi plikami projektu. Wygląda na to, że moje założenie było błędne.

Po tym, jak ustawić projectile-enable-cachingsię nil, Pocisk był w stanie znaleźć wszystkie pliki w moim projekcie. Dzięki odpowiedzi Alexandra i komentarzom uzupełniającym udało mi się znaleźć problem.

nispio
źródło
To pytanie jest zdecydowanie zbyt ogólne i powinno zostać zamknięte. To nie jest dobry kandydat do SE. Zadaj konkretne pytanie dotyczące jednego konkretnego problemu, który masz. Podaj informacje kontekstowe zgodnie z potrzebami dla konkretnego problemu.
Drew
4
Myślę, że to dobre pytanie, które ma za dużo historii. Myślę, że jeśli zostanie zmieniona w tym wierszu: „Jak skonfigurować projekty w Projectile, aby natychmiast wiedziały o wszystkich plikach w projekcie.”, Byłoby dobrze.
Jordon Biondo
3
@JordonBiondo: Im bardziej skoncentrowany, tym bardziej przydatny (dla SE). Z pewnością można dążyć do minimalnego stopnia skupienia, aby nie był zamknięty / zamknięty. Ale należy być w stanie zrobić to jeszcze lepiej. Zgaduję, że gdzieś tam są prawdopodobnie 3 lub 4 dobre pytania i wszyscy skorzystaliby, gdyby postawiono je osobno, w skoncentrowany sposób.
Drew
Z jakiej platformy korzystasz (Windows, Mac, Linux)? Indeksowanie plików projektu wydaje się być realizowane w zależności od platformy.
alexurba
1
Testuję to na Linuksie (RHEL 6.5), ale chciałbym móc używać go na wszystkich platformach.
nispio

Odpowiedzi:

8

Po aktywacji projectiledziała od razu po wyjęciu z pudełka dla projektów git. Aby aktywować, włącz

(projectile-global-mode)

w konfiguracji Emacsa (lub uruchom projectile-mode) ręcznie.

Wtedy projectile-find-file(domyślne przypisanie klawisza jest C-c p f) działa tak samo find-file, ale działa na wszystkie pliki w podkatalogach głównego katalogu projektu (gdzie .gitjest katalog).

Jeśli chcesz uniknąć git, możesz alternatywnie utworzyć plik .projectilew katalogu głównym projektu. Będzie to miało ten sam efekt i może być użyte do zignorowania niektórych plików lub katalogów (podobnie do .gitignore).

Znacznie więcej informacji można znaleźć na stronie github projektu (która też jest zbyt długa do przeczytania). Szczególnie polecam przeczytać sekcje o Idoi helm.

Edytować:

Sprawdź wartość projectile-indexing-method. W Linuksie tak powinno być alien, a wartość projectile-enable-cachingpowinna być nil.

alexurba
źródło
To jest dokładnie ta część, która nie działa dla mnie. Gdy uruchamiam projectile-find-file, jedynymi wymienionymi plikami są te, które już odwiedziłem, mimo że katalog projektu zawiera o wiele więcej.
nispio
@nispio, na stronie projektu wymienia różne metody indeksowania i buforowania. Czy możesz sprawdzić wartość projectile-indexing-method( C-h v projectile-indexing-method)? W systemie Linux tak powinno być alien.
alexurba
I projectile-enable-cachingpowinno być nil.
alexurba
2
Znalazłeś to. Ustawiłem projectile-enable-cachingsię nili zaczęło działać zgodnie z oczekiwaniami. Wiedząc o tym, byłem w stanie ustawić go z powrotem, ta następnie użyć C-u C-c p fdo unieważnienia pamięci podręcznej projectile-find-filei to też działa. Jestem zdezorientowany, dlaczego muszę unieważnić pamięć podręczną, jeśli projekt nigdy wcześniej nie był buforowany, ale zachowam to na inne pytanie, być może.
nispio
Świetnie, że to działa. Nie jestem jednak pewien, co się stanie w systemie Windows, w którym indeksowanie „obcych” nie jest dostępne. Ale może to naprawdę może stać się przedmiotem drugiego pytania, gdy na nie wpadniesz.
alexurba