[PATCH v3 0/7] emacs: help: remap keybindings
Mark Walters
markwalters1009 at gmail.com
Fri Nov 8 09:40:12 PST 2013
This is version 3 of the series. v2 is at
id:1383870096-14627-1-git-send-email-markwalters1009 at gmail.com
The changes are in response to Austin's review of v2. I have not
changed notmuch-describe-key.
The other change is to add a base-keymap to look up the remapped
commands in (since notmuch-substitute-command-keys could refer to
something other than the current keymap). Currently this never happens
but this makes the code more robust.
The final patch of the series is (probably) just for testing
purposes. It lets you call notmuch-help and specify which mode you
want to display help for. This means you can call it without having
the mode as current-mode and hence test the base-keymap code.
Finally the diff from v2 below (with the testing patch omitted) is below.
Best wishes
Mark
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index ef616d5..4b3a86e 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -261,7 +261,7 @@ It does not prepend if ACTUAL-KEY is already listed in TAIL."
tail)))
tail)
-(defun notmuch-describe-remaps (remap-keymap ua-keys prefix tail)
+(defun notmuch-describe-remaps (remap-keymap ua-keys base-keymap prefix tail)
;; Remappings are represented as a binding whose first "event" is
;; 'remap. Hence, if the keymap has any remappings, it will have a
;; binding whose "key" is 'remap, and whose "binding" is itself a
@@ -272,11 +272,11 @@ It does not prepend if ACTUAL-KEY is already listed in TAIL."
(mapc
(lambda (actual-key)
(setq tail (notmuch-describe-key actual-key binding prefix ua-keys tail)))
- (where-is-internal command)))
+ (where-is-internal command base-keymap)))
remap-keymap)
tail)
-(defun notmuch-describe-keymap (keymap ua-keys &optional prefix tail)
+(defun notmuch-describe-keymap (keymap ua-keys base-keymap &optional prefix tail)
"Return a list of cons cells, each describing one binding in KEYMAP.
Each cons cell consists of a string giving a human-readable
@@ -291,13 +291,12 @@ prefix argument. PREFIX and TAIL are used internally."
(lambda (key binding)
(cond ((mouse-event-p key) nil)
((keymapp binding)
- (if (eq key 'remap)
- (setq tail
+ (setq tail
+ (if (eq key 'remap)
(notmuch-describe-remaps
- binding ua-keys prefix tail))
- (setq tail
+ binding ua-keys base-keymap prefix tail)
(notmuch-describe-keymap
- binding ua-keys (notmuch-prefix-key-description key) tail))))
+ binding ua-keys base-keymap (notmuch-prefix-key-description key) tail))))
(binding
(setq tail (notmuch-describe-key (vector key) binding prefix ua-keys tail)))))
keymap)
@@ -310,7 +309,7 @@ prefix argument. PREFIX and TAIL are used internally."
(let* ((keymap-name (substring doc (match-beginning 1) (match-end 1)))
(keymap (symbol-value (intern keymap-name)))
(ua-keys (where-is-internal 'universal-argument keymap t))
- (desc-alist (notmuch-describe-keymap keymap ua-keys))
+ (desc-alist (notmuch-describe-keymap keymap ua-keys keymap))
(desc-list (mapcar (lambda (arg) (concat (car arg) "\t" (cdr arg))) desc-alist))
(desc (mapconcat #'identity desc-list "\n")))
(setq doc (replace-match desc 1 1 doc)))
Mark Walters (7):
emacs: help: check for nil key binding
emacs: help: remove duplicate bindings
emacs: help: split out notmuch-describe-key as a function
emacs: help: add base-keymap
emacs: help: add a special function to deal with remaps
emacs: tree: use remap for the over-ridden global bindings
emacs: help: base-keymap-test-help
emacs/notmuch-lib.el | 79 ++++++++++++++++++++++++++++++++++--------------
emacs/notmuch-tree.el | 8 ++--
2 files changed, 60 insertions(+), 27 deletions(-)
--
1.7.9.1
More information about the notmuch
mailing list