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-caching
się 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.
źródło
Odpowiedzi:
Po aktywacji
projectile
działa od razu po wyjęciu z pudełka dla projektów git. Aby aktywować, włączw konfiguracji Emacsa (lub uruchom
projectile-mode
) ręcznie.Wtedy
projectile-find-file
(domyślne przypisanie klawisza jestC-c p f
) działa tak samofind-file
, ale działa na wszystkie pliki w podkatalogach głównego katalogu projektu (gdzie.git
jest katalog).Jeśli chcesz uniknąć git, możesz alternatywnie utworzyć plik
.projectile
w 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
Ido
ihelm
.Edytować:
Sprawdź wartość
projectile-indexing-method
. W Linuksie tak powinno byćalien
, a wartośćprojectile-enable-caching
powinna byćnil
.źródło
projectile-find-file
, jedynymi wymienionymi plikami są te, które już odwiedziłem, mimo że katalog projektu zawiera o wiele więcej.projectile-indexing-method
(C-h v projectile-indexing-method
)? W systemie Linux tak powinno byćalien
.projectile-enable-caching
powinno byćnil
.projectile-enable-caching
sięnil
i zaczęło działać zgodnie z oczekiwaniami. Wiedząc o tym, byłem w stanie ustawić go z powrotem,t
a następnie użyćC-u C-c p f
do unieważnienia pamięci podręcznejprojectile-find-file
i 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.