Ich habe beim Anzeigen sehr großer (z. B. 128 MB) Dateien in Emacs und beim Springen zum Ende der Datei ein O (n ^ 2) oder schlechteres Verhalten festgestellt. Ich denke, es kann mit meinem Farbalgorithmus zu tun haben, um den Text kontextuell einzufärben. Wenn ich control-g (keyboard-quit) eingebe, ist der Vorgang nicht betroffen. Ich hätte gerne eine Möglichkeit, meine Emacs-Sitzung wiederherzustellen, ohne sie einfach zu beenden. Ich habe versucht, ein SIGINT zu senden, aber der Emacs ist gerade gegangen. Gibt es irgendwelche Signale, die ich senden oder auf eine andere Weise (vielleicht in einem Debugger), um die gerade ausgeführte Aktion zu erzwingen, die Kontrolle aufzugeben und an mich zurückzugeben?
emacs
syntax-highlighting
WilliamKF
quelle
quelle
font-lock-keywords
regulären Ausdrücke sorgfältig, um das Problem zu finden.Antworten:
Ich bezweifle, dass es sich um den Schriftsperrmodus handelt. Das macht wahrscheinlich nur Abschnitte in der Nähe des Sichtbaren. Es kopiert wahrscheinlich Daten in den Speicher.
Ich weiß nicht, was es tun würde (oder welche Version von Emacs Sie ausführen), aber Sie könnten ein MÖGLICHERWEISE zerstörungsfreies Signal (USR1 oder USR2) versuchen.
Oder Sie könnten schlafen gehen und sehen, ob es sich erholt.
quelle
kill -USR2
an emacs-mac hat bei mir in einer ähnlichen Situation funktioniert - eine große Datei im js2-Modus geladen und eine Suche gestartet. USR2 hat die Suche beendet und den Debugger aufgerufen. Viel besser als den Prozess zu beenden!Ich kenne keine Signalverarbeitung, die von Emacs ausgeführt wird, aber Sie können den Emacs-Server verwenden, indem Sie
server-start
Ihre ~ / .emacs-Datei einfügen, damit Sie RPC auf Ihrer laufenden Emacs-Instanz ausführen können.Wenn Sie dann Emacs töten und schreiben möchten, können Sie von Ihrer Shell aus anrufen
emacsclient -e '(save-buffers-kill-emacs t)'
.quelle