summaryrefslogtreecommitdiff
path: root/lisp/use-package/bind-key.el
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2014-05-31 14:42:14 -0500
committerJohn Wiegley <johnw@newartisans.com>2014-05-31 14:42:14 -0500
commit3cbf5104685d309655196a18c0c436093d88df04 (patch)
treef10b98bf773dee7866c645662cc6ca169777549a /lisp/use-package/bind-key.el
parent0d0e8db731203b732787174ceba509eabcbf2062 (diff)
parentb3e96443ad7e7d6f9675c72c2a48527728d7218f (diff)
downloademacs-3cbf5104685d309655196a18c0c436093d88df04.tar.gz
emacs-3cbf5104685d309655196a18c0c436093d88df04.tar.bz2
emacs-3cbf5104685d309655196a18c0c436093d88df04.zip
Merge pull request from npostavs/desc-vector
Avoid putting vector key sequences in personal-keybindings GitHub-reference: https://github.com/jwiegley/use-package/issues/110
Diffstat (limited to 'lisp/use-package/bind-key.el')
-rw-r--r--lisp/use-package/bind-key.el30
1 files changed, 17 insertions, 13 deletions
diff --git a/lisp/use-package/bind-key.el b/lisp/use-package/bind-key.el
index 0e75fd567ec..e52ec07ed87 100644
--- a/lisp/use-package/bind-key.el
+++ b/lisp/use-package/bind-key.el
@@ -127,34 +127,38 @@
(add-to-list 'emulation-mode-map-alists
`((override-global-mode . ,override-global-map)))
-(defvar personal-keybindings nil)
+(defvar personal-keybindings nil
+ "List of bindings performed by `bind-key'.
+
+Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)")
(defmacro bind-key (key-name command &optional keymap)
"Bind KEY-NAME to COMMAND in KEYMAP (`global-map' if not passed).
-KEY-NAME may be a vector, in which case it passed straight to
+KEY-NAME may be a vector, in which case it is passed straight to
`define-key'. Or it may be a string to be interpreted as
spelled-out keystrokes, e.g., \"C-c C-z\". See documentation of
`edmacro-mode' for details."
(let ((namevar (make-symbol "name"))
(keyvar (make-symbol "key"))
+ (kdescvar (make-symbol "kdesc"))
(bindingvar (make-symbol "binding"))
(entryvar (make-symbol "entry")))
`(let* ((,namevar ,key-name)
(,keyvar (if (vectorp ,namevar) ,namevar
(read-kbd-macro ,namevar)))
+ (,kdescvar (cons (if (stringp ,namevar) ,namevar
+ (key-description ,namevar))
+ (quote ,keymap)))
(,bindingvar (lookup-key (or ,keymap global-map)
- ,keyvar)))
- (let ((,entryvar (assoc (cons ,namevar (quote ,keymap))
- personal-keybindings)))
- (if ,entryvar
- (setq personal-keybindings
- (delq ,entryvar personal-keybindings))))
- (setq personal-keybindings
- (cons (list (cons ,namevar (quote ,keymap))
- ,command
- (unless (numberp ,bindingvar) ,bindingvar))
- personal-keybindings))
+ ,keyvar))
+ (,entryvar (assoc ,kdescvar personal-keybindings)))
+ (when ,entryvar
+ (setq personal-keybindings
+ (delq ,entryvar personal-keybindings)))
+ (push (list ,kdescvar ,command
+ (unless (numberp ,bindingvar) ,bindingvar))
+ personal-keybindings)
(define-key (or ,keymap global-map) ,keyvar ,command))))
(defmacro unbind-key (key-name &optional keymap)