mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-05 11:49:37 +00:00
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)
|
(name keyword args rest state &optional bind-macro)
|
||||||
(use-package-concat
|
(use-package-concat
|
||||||
(use-package-process-keywords name rest state)
|
(use-package-process-keywords name rest state)
|
||||||
`((,(if bind-macro bind-macro 'bind-keys)
|
`(,@(mapcar
|
||||||
:package ,name ,@(use-package-normalize-commands args)))))
|
#'(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)
|
(defun use-package-handler/:bind* (name keyword arg rest state)
|
||||||
(use-package-handler/:bind name keyword arg rest state 'bind-keys*))
|
(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
|
(defcustom use-package-merge-key-alist
|
||||||
'((:if . (lambda (new old) `(and ,new ,old)))
|
'((:if . (lambda (new old) `(and ,new ,old)))
|
||||||
(:after . (lambda (new old) `(:all ,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.
|
"Alist of keys and the functions used to merge multiple values.
|
||||||
For example, if the following form is provided:
|
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)))))
|
(nconc ys (list x)))))
|
||||||
(cons (cdr ys) (cdr zs))))
|
(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
|
;;; Keywords
|
||||||
|
|
|
@ -1769,6 +1769,21 @@
|
||||||
t))
|
t))
|
||||||
(bind-keys :package helm ("C-c d" . helm-mini)))))
|
(bind-keys :package helm ("C-c d" . helm-mini)))))
|
||||||
|
|
||||||
|
(ert-deftest use-package-test/585 ()
|
||||||
|
(match-expansion
|
||||||
|
(use-package bug
|
||||||
|
:bind (:map bug-map ("C-a" . alpha))
|
||||||
|
:bind (("C-b" . beta)))
|
||||||
|
`(progn
|
||||||
|
(unless (fboundp 'alpha)
|
||||||
|
(autoload #'alpha "bug" nil t))
|
||||||
|
(unless (fboundp 'beta)
|
||||||
|
(autoload #'beta "bug" nil t))
|
||||||
|
(bind-keys :package bug :map bug-map
|
||||||
|
("C-a" . alpha))
|
||||||
|
(bind-keys :package bug
|
||||||
|
("C-b" . beta)))))
|
||||||
|
|
||||||
(ert-deftest bind-key/:prefix-map ()
|
(ert-deftest bind-key/:prefix-map ()
|
||||||
(match-expansion
|
(match-expansion
|
||||||
(bind-keys :prefix "<f1>"
|
(bind-keys :prefix "<f1>"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue