From 09be976c1852fa5d36fe26794c43ad48a4ea12ee Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 1 Dec 2017 11:30:11 -0800 Subject: [PATCH] :demand should not override an explicit use of :after Fixes https://github.com/jwiegley/use-package/issues/529 --- lisp/use-package/use-package.el | 4 ++++ test/lisp/use-package/use-package-tests.el | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el index 4e652649861..5119e394ebe 100644 --- a/lisp/use-package/use-package.el +++ b/lisp/use-package/use-package.el @@ -1768,6 +1768,10 @@ this file. Usage: (not (memq :defer args))) (plist-put args :demand t) args)))) + ;; The :demand keyword should not override :after + (if (and (plist-member args* :after) + (plist-member args* :demand)) + (setq args* (use-package-plist-delete args* :demand))) (when (and use-package-always-ensure (plist-member args* :load-path) (not (plist-member orig-args :ensure))) diff --git a/test/lisp/use-package/use-package-tests.el b/test/lisp/use-package/use-package-tests.el index 3db6f19e901..64f5ab534d3 100644 --- a/test/lisp/use-package/use-package-tests.el +++ b/test/lisp/use-package/use-package-tests.el @@ -928,7 +928,25 @@ (load "foo" nil t)))) (require 'foo nil 'nil) (config) - t)))) + t))) + + ;; #529 - :demand should not override an explicit use of :after + (match-expansion + (use-package foo :demand t :after bar) + `(progn + (eval-after-load 'bar + '(require 'foo nil t)))) + + (let ((byte-compile-current-file t)) + (match-expansion + (use-package foo :demand t :after bar) + `(progn + (eval-and-compile + (eval-when-compile + (with-demoted-errors "Cannot load foo: %S" nil + (load "foo" nil t)))) + (eval-after-load 'bar + '(require 'foo nil t)))))) (ert-deftest use-package-test/:config () (match-expansion -- 2.39.2