I was just looking at the Ediff manual¹ for something, and it's one of those Emacs manuals that (a bit annoyingly) only list keybinds and not function names (so, if you have rebinding going on, you don't know what it's talking about without digging into source).
And the keys it suggests for the things I want to do aren't doing anything for me—I get X is undefined
, and if I C-hkX, I get X is undefined
—these keys Ediff says should be available aren’t otherwise bound to self-insert
or anything else.
(I should note here this doesn’t mean that I have no Ediff bindings; the keys shown onscreen in the Ediff Control Panel window do all work. It’s just keys that the manual mentions I’m having trouble invoking.)
The weird things, though, are that
- searching my configs, I don't have anything named
.*ediff.*
rebound, so I don't know why those default keys wouldn't work, and - since Ediff has its own control panel buffer with its own keymap that uses mostly unchorded commands, why is a key that the manual says should do something, like
@
or*
, unbound (not bound to self-insert)?
I can use the source (mostly ediff-util.el
) to find what functions these keys are supposed to be bound to and then bind them or run them with M-x, but I’m not sure how to go about diagnosing why I don’t have these keys bound in the first place.
(In case it matters, I’m running Emacs in server mode with my emacsclient running in a TTY.)
To clarify why I haven’t accepted prior answers:
- I’m not asking how to find a particular key of Ediff — neither any particular key, nor any key of Ediff in particular. I’m asking how (if it’s possible at all, and from the Elisp manual’s explanation of keymaps, it feels like it should be) to find what the default map of any given mode or package might set, so that if the manual or someone online tells me to do something by typing some keys, and that doesn’t work, to find out what they were telling me to do in terms of Elisp commands.
- The crux of this is not that I want to know how to do certain functions of Ediff (or any other package), it’s that somehow my keymaps are obliterating default mappings entirely, and I don’t know how that’s happening. I’m looking for how to find the missing key mappings and how they became missing in the first place. I generally use
use-package
to create bindings and keychords, and I can’t see where any of them conflict. - I’m not even sure how I’d go about removing another keybinding without replacing it with one of my own if I wanted to (using use-package bindings and not explicitly removing bindings or mapping them explicitly to
self-insert
), which is what I’m experiencing with Ediff—if someone can explain that, it would be a huge clue.
¹ Though I link to the current HTML version of the Ediff manual for convenience, the one I’m reading is the Info pages shipped with Emacs 25.2.2.
emacs -Q
(no init file)? That should show you what the default bindings are. IfX
etc. is not bound in that case, and if the Ediff doc says it should be, consider reporting a bug:M-x report-emacs-bug
. If you don't see the problem without your init file, bisect your init file to find the culprit.?
displays the keys. Some of the help may look odd, for example "X - read-only in buf X" here X refers to the ediff buffer names A or B.