That's a bug. Emacs' process has the wrong pgid when its parent isn't an interactive shell. Here's a workaround for the same problem using Git. I would hope you can configure Mercurial similarly. http://static.matthewlmcclure.com/n/ Emacs C-g Kills `git commit` On Mac OS X 2012-02-22 Workaround: Invoke Emacs via an interactive Bash shell. emacs.sh: #! /bin/bash -i emacs "$@" In a shell: git config --global core.editor emacs.sh See also: - http://thread.gmane.org/gmane.comp.version-control.git/158981 - http://www.cons.org/cracauer/sigint.html Matt McClure http://matthewlmcclure.com http://www.mapmyfitness.com/profile/matthewlmcclure On May 21, 2012, at 9:54 AM, Roy Smith wrote: I'm running: GNU Emacs 22.1.1 OSX-10.6.8 Mercurial Distributed SCM (version 1.6.4+20101001) If I do "hg commit", emacs is run as I would expect, but if I type a Control-G, I get an "interrupted!" message, and emacs quits (leaving the terminal modes unrestored). Running ps shows that the command being executed is: emacs -nw /var/folders/p5/p5Gj6NRtF-yAXT+X0YVgJU+++TM/-Tmp-/hg-editor-wQEeGG.txt If I run that manually, I get normal operation. I assume there's something funky about the environment in which emacs is being executed, but I can't figure out what that might be. Any ideas? It doesn't seem to be related to the buffer; I get the same problem in other buffers. M-X make command summary shows, for both the normal and broken situations: C-g keyboard-quit self-insert-command -- Roy Smith roy@panix.com