Natknąłem się na jakieś O (n ^ 2) lub gorsze zachowanie podczas przeglądania bardzo dużych plików (np. 128 MB) w Emacsie i przeskakiwania na koniec pliku. Myślę, że może to mieć związek z moim algorytmem kolorowania, aby pokolorować tekst kontekstowo. Jeśli wpiszesz control-g (keyboard-quit), operacja nie zostanie zmieniona. Chciałbym w jakiś sposób odzyskać moją sesję emacsa, nie zabijając jej. Próbowałem wysłać SIGINT, ale emacs właśnie wyszedł. Czy są jakieś sygnały, które mogę wysłać, lub w inny sposób (być może w debuggerze), aby zmusić cokolwiek działa, aby zrezygnować i zwrócić mi kontrolę?
emacs
syntax-highlighting
WilliamKF
źródło
źródło
font-lock-keywords
dokładnie wyrażenia regularne, aby spróbować znaleźć problem.Odpowiedzi:
Wątpię, czy to tryb blokady czcionek. To prawdopodobnie robi tylko sekcje w pobliżu tego, co jest widoczne. Prawdopodobnie kopiuje dane do pamięci.
Nie wiem, co by to zrobił (ani jakiej wersji emacsa używasz), ale możesz spróbować PRAWDOPODOBNIE nieniszczącego sygnału (USR1 lub USR2).
Lub możesz iść spać i sprawdzić, czy to wyzdrowieje.
źródło
kill -USR2
do emacs-mac działało dla mnie w podobnej sytuacji - załadowałem duży plik w trybie js2 i uruchomiłem isearch. USR2 zamknął isearch i wszedł do debuggera. O wiele lepsze niż zabicie procesu!Nie jestem świadomy obsługi sygnałów przez emacsa, ale możesz użyć serwera Emacs, umieszczając
server-start
plik ~ / .emacs, abyś mógł wykonać RPC w uruchomionej instancji emacsa.Jeśli chcesz zabić emacsa i napisać, możesz zadzwonić ze swojej powłoki
emacsclient -e '(save-buffers-kill-emacs t)'
.źródło