summaryrefslogtreecommitdiff
path: root/lisp/use-package/bind-key.el
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2020-08-05 10:27:15 -0700
committerGitHub <noreply@github.com>2020-08-05 10:27:15 -0700
commit10c6400d346d0ca589d3c5fc355b42ad71715df5 (patch)
tree095c8b9ae1d62d14f7cd94d715b014a4fccfdf4a /lisp/use-package/bind-key.el
parentc358eedcf9f5c8921005bbaae78a3abc1fe8cc86 (diff)
parent1f54de9210a2add3a2e7f0416069bab5fe15d8e4 (diff)
downloademacs-10c6400d346d0ca589d3c5fc355b42ad71715df5.tar.gz
emacs-10c6400d346d0ca589d3c5fc355b42ad71715df5.tar.bz2
emacs-10c6400d346d0ca589d3c5fc355b42ad71715df5.zip
Merge pull request from wyuenho/patch-1
GitHub-reference: https://github.com/jwiegley/use-package/issues/846
Diffstat (limited to 'lisp/use-package/bind-key.el')
-rw-r--r--lisp/use-package/bind-key.el13
1 files changed, 8 insertions, 5 deletions
diff --git a/lisp/use-package/bind-key.el b/lisp/use-package/bind-key.el
index 01e1d4d73d9..fef23740c67 100644
--- a/lisp/use-package/bind-key.el
+++ b/lisp/use-package/bind-key.el
@@ -154,11 +154,13 @@ spelled-out keystrokes, e.g., \"C-c C-z\". See documentation of
COMMAND must be an interactive function or lambda form.
-KEYMAP, if present, should be a keymap and not a quoted symbol.
+KEYMAP, if present, should be a keymap variable or symbol.
For example:
(bind-key \"M-h\" #'some-interactive-function my-mode-map)
+ (bind-key \"M-h\" #'some-interactive-function 'my-mode-map)
+
If PREDICATE is non-nil, it is a form evaluated to determine when
a key should be bound. It must return non-nil in such cases.
Emacs can evaluate this form at any time that it does redisplay
@@ -171,10 +173,11 @@ can safely be called at any time."
`(let* ((,namevar ,key-name)
(,keyvar (if (vectorp ,namevar) ,namevar
(read-kbd-macro ,namevar)))
+ (kmap (if (and ,keymap (symbolp ,keymap)) (symbol-value ,keymap) ,keymap))
(,kdescvar (cons (if (stringp ,namevar) ,namevar
(key-description ,namevar))
- (quote ,keymap)))
- (,bindingvar (lookup-key (or ,keymap global-map) ,keyvar)))
+ (if (symbolp ,keymap) ,keymap (quote ,keymap))))
+ (,bindingvar (lookup-key (or kmap global-map) ,keyvar)))
(let ((entry (assoc ,kdescvar personal-keybindings))
(details (list ,command
(unless (numberp ,bindingvar)
@@ -183,11 +186,11 @@ can safely be called at any time."
(setcdr entry details)
(add-to-list 'personal-keybindings (cons ,kdescvar details))))
,(if predicate
- `(define-key (or ,keymap global-map) ,keyvar
+ `(define-key (or kmap global-map) ,keyvar
'(menu-item "" nil :filter (lambda (&optional _)
(when ,predicate
,command))))
- `(define-key (or ,keymap global-map) ,keyvar ,command)))))
+ `(define-key (or kmap global-map) ,keyvar ,command)))))
;;;###autoload
(defmacro unbind-key (key-name &optional keymap)