Używam pocisku do przeglądania projektu. Widziałem, że jest bardzo powolny, więc włączyłem buforowanie. Teraz jest szybki (nie niesamowicie szybki, niestety).
Jeśli utworzę nowy plik poza samym emacsem, pocisk go nie znajdzie. Mogę uruchomić unieważnienie pamięci podręcznej, ale zajmuje to kilka minut. Jak to naprawić?
projectile
project
lukas.pukenis
źródło
źródło
M-x
projectile-cache-current-file
. Jeśli nie chcesz, to Emacs musi przeglądać całe drzewo w poszukiwaniu plików, więc nie można dokonywać żadnych optymalizacji.filenotify.el
biblioteki, która moim zdaniem umożliwi pociskowi śledzenie zmian w katalogu i w związku z tym zostanie poinformowana, kiedy nowy plik (lub katalog do śledzenia) zostanie utworzony (lub usunięty), aby mógł automatycznie dodać (lub usuń) pliki do / z pamięci podręcznej. Powiadomienia o katalogu nie są rekurencyjne, więc ta funkcja wymagałaby niezależnego śledzenia każdego katalogu w projekcie. Nie wiem, czy pociągnęłoby to za sobą jakiekolwiek zauważalne kary za duże drzewo projektów.Odpowiedzi:
Użyj argumentu przedrostka, tzn. C-u C-c p fAby szybko unieważnić i znaleźć pliki w projekcie. Sugestia w komentarzu dotycząca używania
projectile-cache-current-file
jest technicznie poprawna, ale istnieje haczyk,find-file
który automatycznie wywołuje to przy każdym nowym otwieranym pliku. To będzie najszybsze rozwiązanie bez unieważniania istniejącej pamięci podręcznej.Jednak wydaje się, że prawdziwym problemem jest to, że odbudowanie pamięci podręcznej zajmuje zbyt dużo czasu, przechodząc przez drzewo. Pomoże to, jeśli będzie trochę więcej informacji o twoim środowisku. Domyślnie
projectile-indexing-method
jest ustawiony'native
na Windows, co woli implementację elisp,find
ponieważ jest bardziej przenośna. W przeciwnym razie to wykorzystuje'alien
metodę, tjgit ls
,find
itd jeśli jesteś na linux metoda obcy jest domyślnie włączona chociaż.W przeciwnym razie możesz gonić w dół króliczej nory
projectile-get-repo-files
iprojectile-get-ext-command
. Określają, gdzie pocisk szuka listy plików. Możliwe, że możesz to zastąpić za pomocą katalogów lokalnych lub podobnych, aby wymusić szybszą metodę wyszukiwania.źródło
Nie przyspiesza to buforowania plików, ale oszczędza ręcznego kroku unieważnienia przestarzałej pamięci podręcznej (która nie zawiera nowego pliku).
Pocisk automatycznie unieważnia pamięć podręczną, jeśli
/your/projectile/project/root/.projectile
plik jest nowszy niż plik pamięci podręcznej projektu.To sprawdzenie jest wykonywane za każdym razem, gdy próbujesz znaleźć dowolny plik w projekcie za pomocą pocisku;
projectile-find-file
lubC-c p f
jeśli jedno z poleceń, które to sprawdza jako pierwsze.- Ze
projectile.el
źródła - wiersze 575–579Więc rozwiązanie jest
touch
w.projectile
pliku podczas aktualizacji projektu. Na przykład, można , itp zrobićalias
git commit
git pull
po zrobieniu tego, co robiłeś za pomocą
git
poleceń.Więc jeśli ktoś z twojego zespołu doda nowy plik do projektu i (zakładając, że używasz git do kontroli wersji) użyjesz specjalnego aliasu ściągnięcia git, pamięć podręczna zostanie automatycznie unieważniona, gdy zrobisz
projectile-find-file
to następnym razem.źródło