mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
emacs: add '?' to some prefix keymaps to describe its bindings
Added function notmuch-subkeymap-help to describe keybindings of a subkeymap (eg after . or c in notmuch-search and notmuch-show).
This commit is contained in:
parent
88e6a2995a
commit
6d6006bea9
3 changed files with 27 additions and 1 deletions
|
@ -231,7 +231,8 @@ depending on the value of `notmuch-poll-script'."
|
|||
"Given a prefix key code, return a human-readable string representation.
|
||||
|
||||
This is basically just `format-kbd-macro' but we also convert ESC to M-."
|
||||
(let ((desc (format-kbd-macro (vector key))))
|
||||
(let* ((key-vector (if (vectorp key) key (vector key)))
|
||||
(desc (format-kbd-macro key-vector)))
|
||||
(if (string= desc "ESC")
|
||||
"M-"
|
||||
(concat desc " "))))
|
||||
|
@ -337,6 +338,28 @@ of its command symbol."
|
|||
(set-buffer-modified-p nil)
|
||||
(view-buffer (current-buffer) 'kill-buffer-if-not-modified))))
|
||||
|
||||
(defun notmuch-subkeymap-help ()
|
||||
"Show help for a subkeymap."
|
||||
(interactive)
|
||||
(let* ((key (this-command-keys-vector))
|
||||
(prefix (make-vector (1- (length key)) nil))
|
||||
(i 0))
|
||||
(while (< i (length prefix))
|
||||
(aset prefix i (aref key i))
|
||||
(setq i (1+ i)))
|
||||
|
||||
(let* ((subkeymap (key-binding prefix))
|
||||
(ua-keys (where-is-internal 'universal-argument nil t))
|
||||
(prefix-string (notmuch-prefix-key-description prefix))
|
||||
(desc-alist (notmuch-describe-keymap subkeymap ua-keys subkeymap prefix-string))
|
||||
(desc-list (mapcar (lambda (arg) (concat (car arg) "\t" (cdr arg))) desc-alist))
|
||||
(desc (mapconcat #'identity desc-list "\n")))
|
||||
(with-help-window (help-buffer)
|
||||
(with-current-buffer standard-output
|
||||
(insert "\nPress 'q' to quit this window.\n\n")
|
||||
(insert desc)))
|
||||
(pop-to-buffer (help-buffer)))))
|
||||
|
||||
(defvar notmuch-buffer-refresh-function nil
|
||||
"Function to call to refresh the current buffer.")
|
||||
(make-variable-buffer-local 'notmuch-buffer-refresh-function)
|
||||
|
|
|
@ -1241,6 +1241,7 @@ reset based on the original query."
|
|||
(define-key map "t" 'notmuch-show-stash-to)
|
||||
(define-key map "l" 'notmuch-show-stash-mlarchive-link)
|
||||
(define-key map "L" 'notmuch-show-stash-mlarchive-link-and-go)
|
||||
(define-key map "?" 'notmuch-subkeymap-help)
|
||||
map)
|
||||
"Submap for stash commands")
|
||||
(fset 'notmuch-show-stash-map notmuch-show-stash-map)
|
||||
|
@ -1251,6 +1252,7 @@ reset based on the original query."
|
|||
(define-key map "v" 'notmuch-show-view-part)
|
||||
(define-key map "o" 'notmuch-show-interactively-view-part)
|
||||
(define-key map "|" 'notmuch-show-pipe-part)
|
||||
(define-key map "?" 'notmuch-subkeymap-help)
|
||||
map)
|
||||
"Submap for part commands")
|
||||
(fset 'notmuch-show-part-map notmuch-show-part-map)
|
||||
|
|
|
@ -165,6 +165,7 @@ To enter a line break in customize, press \\[quoted-insert] C-j."
|
|||
(defvar notmuch-search-stash-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "i" 'notmuch-search-stash-thread-id)
|
||||
(define-key map "?" 'notmuch-subkeymap-help)
|
||||
map)
|
||||
"Submap for stash commands")
|
||||
(fset 'notmuch-search-stash-map notmuch-search-stash-map)
|
||||
|
|
Loading…
Reference in a new issue