Я просто написал следующее, основанное на ответе Жиля, поэтому я решил, что опубликую его.
Я вижу, что Drew's describe-keymap
имеет очень похожую основу, но также охватывает различные другие приложения, случаев, поэтому я не склонен предлагать использовать это как более полное решение; но FWIW:
(defun my-describe-keymap (keymap)
"Describe a keymap using `substitute-command-keys'."
(interactive
(list (completing-read
"Keymap: " (let (maps)
(mapatoms (lambda (sym)
(and (boundp sym)
(keymapp (symbol-value sym))
(push sym maps))))
maps)
nil t)))
(with-output-to-temp-buffer (format "*keymap: %s*" keymap)
(princ (format "%s\n\n" keymap))
(princ (substitute-command-keys (format "\\{%s}" keymap)))
(with-current-buffer standard-output ;; temp buffer
(setq help-xref-stack-item (list #'my-describe-keymap keymap)))))