[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master ef384e7 19/21: Fix and improve define-key based replacemen
From: |
Justin Burkett |
Subject: |
[elpa] master ef384e7 19/21: Fix and improve define-key based replacements |
Date: |
Mon, 8 Jan 2018 22:46:57 -0500 (EST) |
branch: master
commit ef384e781e6107850c7fadc78cb0675d7fe72e69
Author: Justin Burkett <address@hidden>
Commit: Justin Burkett <address@hidden>
Fix and improve define-key based replacements
Check for equality of definition as well as the key sequence. Unless it's a
prefix binding, in which case only check the key sequence.
Make sure we apply kbd when looking up pseudo bindings.
Move the logic into which-key--get-pseudo-binding.
---
which-key.el | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/which-key.el b/which-key.el
index d28f4a2..cb6da90 100644
--- a/which-key.el
+++ b/which-key.el
@@ -916,7 +916,7 @@ meant to be used as :before advice for `define-key'."
(when (and (consp def)
(stringp (car def))
(symbolp (cdr def)))
- (define-key keymap (which-key--pseudo-key key) (car def)))))
+ (define-key keymap (which-key--pseudo-key key) `(which-key ,def)))))
(when which-key-enable-extended-define-key
(advice-add #'define-key :before #'which-key--process-define-key-args))
@@ -1358,14 +1358,28 @@ local bindings coming first. Within these categories
order using
(throw 'res res)))))))
(nreverse res)))
+(defun which-key--get-pseudo-binding (key-binding)
+ (let* ((pseudo-binding
+ (key-binding (which-key--pseudo-key (kbd (car key-binding)) t)))
+ (pseudo-binding (when pseudo-binding (cadr pseudo-binding)))
+ (pseudo-desc (when pseudo-binding (car pseudo-binding)))
+ (pseudo-def (when pseudo-binding (cdr pseudo-binding)))
+ (real-def (key-binding (kbd (car key-binding))))
+ ;; treat keymaps as if they're nil bindings. This creates the
+ ;; possibility that we rename the wrong binding but this seems
+ ;; unlikely.
+ (real-def (unless (keymapp real-def) real-def)))
+ (when (and pseudo-binding
+ (eq pseudo-def real-def))
+ (cons (car key-binding) pseudo-desc))))
+
(defun which-key--maybe-replace (key-binding)
"Use `which-key--replacement-alist' to maybe replace KEY-BINDING.
KEY-BINDING is a cons cell of the form \(KEY . BINDING\) each of
which are strings. KEY is of the form produced by `key-binding'."
- (let ((menu-item-repl
- (key-binding (which-key--pseudo-key (car key-binding) t))))
- (if menu-item-repl
- (cons (car key-binding) menu-item-repl)
+ (let* ((pseudo-binding (which-key--get-pseudo-binding key-binding)))
+ (if pseudo-binding
+ pseudo-binding
(let* ((mode-res (which-key--get-replacements key-binding t))
(all-repls (or mode-res
(which-key--get-replacements key-binding))))
- [elpa] master f516b84 09/21: Add which-key-enable-extended-define-key customization option, (continued)
- [elpa] master f516b84 09/21: Add which-key-enable-extended-define-key customization option, Justin Burkett, 2018/01/08
- [elpa] master 3ff8f48 10/21: Allow null DEF in which-key--process-define-key-args, Justin Burkett, 2018/01/08
- [elpa] master 555c5c1 13/21: Demote errors in which-key--process-define-key-args, Justin Burkett, 2018/01/08
- [elpa] master 0a212c7 11/21: Fix travis build, Justin Burkett, 2018/01/08
- [elpa] master c7e5f76 18/21: Merge pull request #183 from tarsiiformes/silencio, Justin Burkett, 2018/01/08
- [elpa] master 6247cb5 16/21: Simplify implementation of define-key based replacements, Justin Burkett, 2018/01/08
- [elpa] master 1694c6d 15/21: Improve which-key--process-define-key-args, Justin Burkett, 2018/01/08
- [elpa] master b6d04b3 12/21: Fix .travis.yml, Justin Burkett, 2018/01/08
- [elpa] master 7150aa9 14/21: Announce which-key-enable-extended-define-key in README, Justin Burkett, 2018/01/08
- [elpa] master 7559a79 20/21: Version 3.1.0, Justin Burkett, 2018/01/08
- [elpa] master ef384e7 19/21: Fix and improve define-key based replacements,
Justin Burkett <=
- [elpa] master cd8d24d 17/21: Define which-key--current-key-list before using it, Justin Burkett, 2018/01/08
- [elpa] master 1234342 06/21: Re-indent README, Justin Burkett, 2018/01/08
- [elpa] master 56b0fc8 21/21: Merge commit '7559a79e95aada65601f7413a1c3f08bfa34557b', Justin Burkett, 2018/01/08