I'm a happy Magit user, and at commit time, I am accustomed to editing a commit message and then finishing the edit with C-c C-c
. But sometimes that key sequence winds up bound to the compile
function, as indeed my emacs init file contains the line
(global-set-key "\C-c\C-c" 'compile)
My init file also sets that key locally in a number of modes including c-mode
, sml-mode
, lua-mode
, and so on. However, none of those modes is displayed on the mode line in the commit-edit window. And when emacs is working correctly, C-c C-c
finishes the edit and returns to git as expected. However, every so often it gets wacky and insists on being bound to compile
.
Following a trail of emacs lisp leads a very short distance to where Magit invokes git with $EMACSCLIENT
set appropriately. Beyond that point I have been unable to diagnose how that buffer is created or where its keybindings are determined.
The problem I'm trying to solve is to set the keybindings in the commit-message edit buffer so that C-c C-c
terminates the edit and returns control to git. At the moment, the only way I can do this is to exit emacs and start over. That workaround doesn't last long, and it grows tiresome.
I would welcome answers to any or all of the following questions:
Where are the keybindings set for that window?
What function is
C-c C-c
bound to by default?Is there a mode or other hook where I can just reach in with a hammer and bind
C-c C-c
to the right function?
Addendum: the buffer's major mode is text-mode
. Here is the response to C-h v major-mode RET
:
Its value is text-mode
Original value was fundamental-mode
Local in buffer COMMIT_EDITMSG; global value is fundamental-mode
minor-mode-map-alist
as in How to set a rule for the order of minor-mode-map-alistC-h v major-mode RET
)?text-mode
. I've updated the question.