]> git.eshelyaron.com Git - emacs.git/commitdiff
Change use-package to use bind-keys and bind-keys*
authorJohn Wiegley <johnw@newartisans.com>
Sat, 21 Mar 2015 08:46:26 +0000 (03:46 -0500)
committerJohn Wiegley <johnw@newartisans.com>
Sat, 21 Mar 2015 08:46:26 +0000 (03:46 -0500)
Fixes https://github.com/jwiegley/use-package/issues/129

lisp/use-package/bind-key.el
lisp/use-package/use-package.el

index 12502c07c382fddb98d8b809f7319059e656cacb..28b5dbb572beab26b9d569a8bdbda410747335b0 100644 (file)
@@ -191,32 +191,35 @@ function symbol (unquoted)."
                            (pop args)
                            (pop args))
                          args)))
-    (when (or (and prefix-map
-                   (not prefix))
-              (and prefix
-                   (not prefix-map)))
+    (when (or (and prefix-map (not prefix))
+              (and prefix (not prefix-map)))
       (error "Both :prefix-map and :prefix must be supplied"))
     (when (and menu-name (not prefix))
       (error "If :menu-name is supplied, :prefix must be too"))
-    `(progn
-       ,@(when prefix-map
-           `((defvar ,prefix-map)
-             ,@(when doc `((put ',prefix-map 'variable-documentation ,doc)))
-             ,@(if menu-name
-                   `((define-prefix-command ',prefix-map nil ,menu-name))
-                 `((define-prefix-command ',prefix-map)))
-             ,@(mapcar
-                #'(lambda (m)
-                    `(bind-key ,prefix ',prefix-map ,m)) maps)))
-       ,@(apply
-          #'nconc
-          (mapcar (lambda (form)
-                    (if prefix-map
-                        `((bind-key ,(car form) ',(cdr form) ,prefix-map))
-                      (mapcar
-                       #'(lambda (m)
-                           `(bind-key ,(car form) ',(cdr form) ,m)) maps)))
-                  key-bindings)))))
+    (macroexp-progn
+     (append
+      (when prefix-map
+        `((defvar ,prefix-map)
+          ,@(when doc `((put ',prefix-map 'variable-documentation ,doc)))
+          ,@(if menu-name
+                `((define-prefix-command ',prefix-map nil ,menu-name))
+              `((define-prefix-command ',prefix-map)))
+          ,@(if maps
+                (mapcar
+                 #'(lambda (m)
+                     `(bind-key ,prefix ',prefix-map ,m)) maps)
+              `((bind-key ,prefix ',prefix-map)))))
+      (apply
+       #'nconc
+       (mapcar (lambda (form)
+                 (if prefix-map
+                     `((bind-key ,(car form) ',(cdr form) ,prefix-map))
+                   (if maps
+                       (mapcar
+                        #'(lambda (m)
+                            `(bind-key ,(car form) ',(cdr form) ,m)) maps)
+                     `((bind-key ,(car form) ',(cdr form))))))
+               key-bindings))))))
 
 (defmacro bind-keys* (&rest args)
   `(bind-keys :map override-global-map ,@args))
index 4c1433d66d9b9bf81a8d0752f13661dcf1795881..5f911e3b71858f21c88cda8ab85156981385d5d5 100644 (file)
@@ -633,19 +633,13 @@ manually updated package."
 
 (defun use-package-handler/:bind
     (name-symbol keyword arg rest state &optional override)
-  (let* (commands
-         (form (mapcar
-                #'(lambda (binding)
-                    (push (cdr binding) commands)
-                    `(,(if override
-                           'bind-key*
-                         'bind-key) ,(car binding) #',(cdr binding))) arg)))
+  (let ((commands (mapcar #'cdr arg)))
     (use-package-concat
      (use-package-process-keywords name-symbol
        (use-package-sort-keywords
         (use-package-plist-maybe-put rest :defer t))
        (use-package-plist-append state :commands commands))
-     `((ignore ,@form)))))
+     `((ignore (,(if override 'bind-keys* 'bind-keys) ,@arg))))))
 
 (defun use-package-handler/:bind* (name-symbol keyword arg rest state)
   (use-package-handler/:bind name-symbol keyword arg rest state t))