Fix a scoping issues with multiple occurrences of :bind
Fixes https://github.com/jwiegley/use-package/issues/585
This commit is contained in:
parent
5a02d61ac6
commit
ec84ed0dfb
3 changed files with 29 additions and 3 deletions
|
@ -128,8 +128,11 @@ deferred until the prefix key sequence is pressed."
|
|||
(name keyword args rest state &optional bind-macro)
|
||||
(use-package-concat
|
||||
(use-package-process-keywords name rest state)
|
||||
`((,(if bind-macro bind-macro 'bind-keys)
|
||||
:package ,name ,@(use-package-normalize-commands args)))))
|
||||
`(,@(mapcar
|
||||
#'(lambda (xs)
|
||||
`(,(if bind-macro bind-macro 'bind-keys)
|
||||
:package ,name ,@(use-package-normalize-commands xs)))
|
||||
(use-package-split-list-at-keys :break args)))))
|
||||
|
||||
(defun use-package-handler/:bind* (name keyword arg rest state)
|
||||
(use-package-handler/:bind name keyword arg rest state 'bind-keys*))
|
||||
|
|
|
@ -180,7 +180,8 @@ t according to whether defaulting should be attempted."
|
|||
(defcustom use-package-merge-key-alist
|
||||
'((:if . (lambda (new old) `(and ,new ,old)))
|
||||
(:after . (lambda (new old) `(:all ,new ,old)))
|
||||
(:defer . (lambda (new old) old)))
|
||||
(:defer . (lambda (new old) old))
|
||||
(:bind . (lambda (new old) (append new (list :break) old))))
|
||||
"Alist of keys and the functions used to merge multiple values.
|
||||
For example, if the following form is provided:
|
||||
|
||||
|
@ -472,6 +473,13 @@ This is in contrast to merely setting it to 0."
|
|||
(nconc ys (list x)))))
|
||||
(cons (cdr ys) (cdr zs))))
|
||||
|
||||
(defun use-package-split-list-at-keys (key lst)
|
||||
(when lst
|
||||
(let* ((xs (use-package-split-list (apply-partially #'eq key) lst))
|
||||
(args (car xs))
|
||||
(tail (cdr xs)))
|
||||
(cons args (use-package-split-list-at-keys key (cdr tail))))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;;; Keywords
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue