diff options
author | John Wiegley <johnw@newartisans.com> | 2014-05-31 14:42:14 -0500 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2014-05-31 14:42:14 -0500 |
commit | 3cbf5104685d309655196a18c0c436093d88df04 (patch) | |
tree | f10b98bf773dee7866c645662cc6ca169777549a /lisp/use-package/bind-key.el | |
parent | 0d0e8db731203b732787174ceba509eabcbf2062 (diff) | |
parent | b3e96443ad7e7d6f9675c72c2a48527728d7218f (diff) | |
download | emacs-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.el | 30 |
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) |