Podczas uruchamiania previous-line
, C-p
czy <up>
kursor skacze w górę linię bez żadnych problemów i opóźnień. Podczas uruchamiania next-line
, C-n
czy <down>
kursor odpowiednio zeskakuje linię, ale ze znacznym opóźnieniem. Kiedy trzymam wciśnięty klawisz, nie widzę nawet punktu, który się porusza, po prostu pojawia się gdzieś poniżej. Uruchomiłem profilera Emacsa i wygląda na to, że winowajcą jest cl-position
. Okazuje się, że previous-line
dosłownie porusza kursorem, a jednocześnie next-line
uruchamia wiele funkcji.
Na czym polega problem i jak można go naprawić?
visual-line-mode
? Czy masz jakieś bardzo długie linie?visual-line-mode
i nie mam długich linii.Odpowiedzi:
Znalazłem odpowiedź na moje pytanie, zawężając niegrzeczny kawałek i googlując. Udało mi się zmniejszyć opóźnienie 10 razy !!!! Mam na myśli ... To szaleństwo, ile mocy obliczeniowej
next-line
użył do przesunięcia kursora w dół?!?!Poprawka:
Umieść ten kod w pliku init.el:
(setq auto-window-vscroll nil)
Dowód:
Teraz
next-line
nie uruchamia,line-move-partial
dlatego zmniejsza opóźnienie. Nie pamiętam konfigurowaniaauto-window-vscroll
dot
. Nie było go nigdzie w żadnym z moich.el
plików, nie jestem pewien, jak to sięt
zaczęło. Więc jeśli ktoś ma problemy z wydajnością ruchu kursora, powyższa poprawka zmniejszy opóźnienie z około 50% -80% czasu procesora do 5% czasu procesora !!!Aby szybko sprawdzić, czy masz na to wpływ, po prostu uruchom
C-h v auto-window-vscroll
. Jeśli jest ustawiony,t
możesz mieć poważne problemy z wydajnością. Sprawdź za pomocą profilera Emacsa, czy ruch kursora rzeczywiście powoduje opóźnienie.Życzymy powodzenia innym miłośnikom Emacsa !!!
Źródło poprawki
źródło
M-x report-emacs-bug
.Nie jestem absolutnie pewien, na czym polega problem, ale twój raport profilera wydaje się wskazywać, że posn-at-point wykonuje więcej ponownego wyświetlania niż oczekiwano, co z kolei powoduje ponowne obliczenie linii trybu i że linia energetyczna powinna więcej wysiłku zapamiętywać jego obliczenia dla modeliny.
IOW, sugeruję ci,
M-x report-emacs-bug
a ty możesz również zgłosić błąd do opiekunów linii energetycznej.źródło
Wygląda na to, że używasz powerline. W szczególności wyświetlasz nazwę projektu pocisku w swojej modelinie. Ostatnio wprowadzono pewne ulepszenia do pakietu pocisków, które złagodziły niektóre z nich. Upewnij się, że jesteś na bieżąco.
https://github.com/bbatsov/projectile/issues/1212
https://github.com/bbatsov/projectile/pull/1213
Możliwe jest również zapamiętanie funkcji wywoływanych przez modelkę. Zrobiłem to dużo na mojej modelce, aby było bardzo szybkie.
źródło
Zauważyłem, że mój
doom-modeline
również przyczynia się do opóźnienia. W rzeczywistości jest powiedziane w dokumenciedoom-modeline
:Po ustawieniu
(setq doom-modeline-enable-word-count nil)
zauważyłem wyraźne przyspieszenie ruchów kursora.źródło