]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge remote-tracking branch 'origin/master' into defer-install
authorRadon Rosborough <radon.neon@gmail.com>
Sun, 19 Mar 2017 03:43:40 +0000 (20:43 -0700)
committerRadon Rosborough <radon.neon@gmail.com>
Sun, 19 Mar 2017 03:43:40 +0000 (20:43 -0700)
Resolve merge conflicts.

1  2 
lisp/use-package/use-package.el

index 45215eccdaa0afdc4eaea6a21455da7e69b068ee,99646e2690a674c49674d7d9e0142d9d4d43ba42..2943dafe6b0f664811ad8f3df2ed57290ba9fb3c
@@@ -1182,34 -1039,44 +1225,52 @@@ deferred until the prefix key sequence 
  ;;; :after
  ;;
  
- (defalias 'use-package-normalize/:after 'use-package-normalize-symlist)
+ (defalias 'use-package-normalize/:after 'use-package-normalize-recursive-symlist)
  
 -(defun use-package-require-after-load (features)
 +(defun use-package-require-after-load
-     (features name &optional deferred-install)
++    (features)
    "Return form for after any of FEATURES require NAME."
-   `(progn
-      ,@(mapcar
-         (lambda (feat)
-           `(eval-after-load
-                (quote ,feat)
-              ,(macroexp-progn
-                `(,@(when deferred-install
-                      `((use-package-install-deferred-package
-                         ',name :after)))
-                  '(require ',name nil t)))))
-         features)))
+   (pcase features
+     ((and (pred symbolp) feat)
+      `(lambda (body)
+         (list 'eval-after-load (list 'quote ',feat)
+               (list 'quote body))))
+     (`(,(or :or  :any) . ,rest)
+      `(lambda (body)
+         (append (list 'progn)
+                 (mapcar (lambda (form)
+                           (funcall form body))
+                         (list ,@(use-package-require-after-load rest))))))
+     (`(,(or :and :all) . ,rest)
+      `(lambda (body)
+         (let ((result body))
+           (dolist (form (list ,@(use-package-require-after-load rest)))
+             (setq result (funcall form result)))
+           result)))
+     (`(,feat . ,rest)
+      (if rest
+          (cons (use-package-require-after-load feat)
+                (use-package-require-after-load rest))
+        (list (use-package-require-after-load feat))))))
  
  (defun use-package-handler/:after (name keyword arg rest state)
    (let ((body (use-package-process-keywords name rest
                  (plist-put state :deferred t)))
          (name-string (use-package-as-string name)))
+     (if (and (consp arg)
+              (not (memq (car arg) '(:or :any :and :all))))
+         (setq arg (cons :all arg)))
      (use-package-concat
       (when arg
-        (list (use-package-require-after-load
-               ;; Here we are checking the marker value for deferred
-               ;; installation set in `use-package-handler/:ensure'.
-               ;; See also `use-package-handler/:defer-install'.
-               arg name (eq (plist-get state :defer-install) :ensure))))
+        (list (funcall (use-package-require-after-load arg)
 -                      `(require (quote ,name) nil t))))
++                      (macroexp-progn
++                       ;; Here we are checking the marker value for deferred
++                       ;; installation set in `use-package-handler/:ensure'.
++                       ;; See also `use-package-handler/:defer-install'.
++                       `(,@(when (eq (plist-get state :defer-install) :ensure)
++                             `((use-package-install-deferred-package
++                                'name :after)))
++                         '(require (quote ,name) nil t))))))
       body)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          (unless (or (null config-body) (equal config-body '(t)))
            `((eval-after-load ,(if (symbolp name) `',name name)
                ',(macroexp-progn config-body))))
-         (use-package-install-deferred-package name 'no-prompt :config))
 +      ;; Here we are checking the marker value for deferred
 +      ;; installation set in `use-package-handler/:ensure'. See also
 +      ;; `use-package-handler/:defer-install'.
 +      (when (eq (plist-get state :defer-install) :ensure)
++        (use-package-install-deferred-package name :config))
        (use-package--with-elapsed-timer
            (format "Loading package %s" name)
          (if use-package-expand-minimally