Merge pull request from npostavs/bind-vector

let bind-key accept vectors, add docstring
GitHub-reference: https://github.com/jwiegley/use-package/issues/92
This commit is contained in:
John Wiegley 2014-03-02 13:51:12 -06:00
commit 11195fa213

View file

@ -122,12 +122,19 @@
(defvar personal-keybindings nil) (defvar personal-keybindings nil)
(defmacro bind-key (key-name command &optional keymap) (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
`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")) (let ((namevar (make-symbol "name"))
(keyvar (make-symbol "key")) (keyvar (make-symbol "key"))
(bindingvar (make-symbol "binding")) (bindingvar (make-symbol "binding"))
(entryvar (make-symbol "entry"))) (entryvar (make-symbol "entry")))
`(let* ((,namevar ,(eval key-name)) `(let* ((,namevar ,(eval key-name))
(,keyvar (read-kbd-macro ,namevar)) (,keyvar (if (vectorp ,namevar) ,namevar
(read-kbd-macro ,namevar)))
(,bindingvar (lookup-key (or ,keymap global-map) (,bindingvar (lookup-key (or ,keymap global-map)
,keyvar))) ,keyvar)))
(let ((,entryvar (assoc (cons ,namevar (quote ,keymap)) (let ((,entryvar (assoc (cons ,namevar (quote ,keymap))