Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've run into some kind of O(n^2) or worse behavior when viewing very large (e.g. 128MB) files in Emacs and jumping to the end of the file. I think it may have to do with my coloring algorithm to color the text contextually. If I type control-g (keyboard-quit), the operation is not affected. I'd like some way to recover my emacs session without just killing it. I tried sending a SIGINT, but emacs just exited. Are there any signals I can send, or some other way (perhaps in a debugger) to force the whatever action is running to give up and return control to me?

share|improve this question
    
I don't know of a way to make font locking interruptible, but you might find something of use in this Emacs Wiki page on speeding up font locking. –  Aaron Miller Sep 11 '13 at 12:37
3  
Did you try hitting escape 3 times ? –  xaccrocheur Sep 17 '13 at 8:39
    
Yes, I think your own font-lock code is probably at fault here. Examine your font-lock-keywords regexps carefully to try to find the problem. –  Drew Sep 27 '13 at 6:37
    
EMACS: Eight Megabytes And Constantly Swapping :-) –  user829755 Nov 3 '13 at 14:40
    
Hitting escape three times does nothing for me. –  WilliamKF Dec 17 '13 at 17:49

2 Answers 2

(I can't comment with reputation 44)

I doubt it's font lock mode. That probably only does sections near what's visable. It's probably copying data in memory.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Misc-Events.html
sigusr1
sigusr2
These events are generated when the Emacs process receives the signals SIGUSR1
and SIGUSR2. They contain no additional data because signals do not carry
additional information. They can be useful for debugging (see Error Debugging).

I don't know what it would do (or what version of emacs you are running) but you could try a PROBABLY non-destructive signal (USR1 or USR2).

kill -USR1 pid

Or you could goto sleep and see if it recovers.

share|improve this answer
    
I wonder how busy (CPU and disk) your machine is. That might tell you a little about what it's doing. .. and you might be able to run another copy of emacs and "kill -USR1 pid" that new one to see what happens before you do the one you care about. –  9mjb Dec 11 '13 at 7:27

I'm unaware of any signal handling that emacs does but you could use the Emacs Server by putting server-start in your ~/.emacs file so you can do RPC on your running instance of emacs.

Then when you want to kill emacs and write you can call from your shell emacsclient -e '(save-buffers-kill-emacs t)'.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.