From fe7fe61528008cf9bcfb5633c845d06da9c582bc Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Thu, 11 Dec 2014 14:44:27 +0800 Subject: [PATCH] support for pinning package to archive --- lisp/use-package/use-package.el | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el index bc2dec27380..570044970ea 100644 --- a/lisp/use-package/use-package.el +++ b/lisp/use-package/use-package.el @@ -139,6 +139,13 @@ Return nil when the queue is empty." (cancel-timer use-package-idle-timer) (setq use-package-idle-timer nil)))) +(defun use-package-pin-package (package archive) + "Pin PACKAGE to ARCHIVE." + (unless (boundp 'package-pinned-packages) + (setq package-pinned-packages '())) + (add-to-list 'package-pinned-packages (cons package archive)) + (package-initialize t)) + (defun use-package-ensure-elpa (package) (when (not (package-installed-p package)) (package-install package))) @@ -162,6 +169,7 @@ Return nil when the queue is empty." :interpreter :load-path :mode + :pin :pre-init :pre-load :requires @@ -270,7 +278,8 @@ For full documentation. please see commentary. priority (lower priorities run first). Default priority is 5; forms with the same priority are run in the order in which they are evaluated. -:ensure loads package using package.el if necessary." +:ensure loads package using package.el if necessary. +:pin pin package to archive." (use-package-validate-keywords args) ; error if any bad keyword, ignore result (let* ((commands (use-package-plist-get args :commands t t)) (pre-init-body (use-package-plist-get args :pre-init)) @@ -291,6 +300,7 @@ For full documentation. please see commentary. (if (stringp interpreter) (cons interpreter name) interpreter)) (predicate (use-package-plist-get args :if)) (pkg-load-path (use-package-plist-get args :load-path t t)) + (archive-name (use-package-plist-get args :pin)) (defines-eval (if (null defines) nil (if (listp defines) @@ -309,6 +319,9 @@ For full documentation. please see commentary. ;; force this immediately -- one off cost (unless (use-package-plist-get args :disabled) + (when archive-name + (use-package-pin-package name archive-name)) + (let* ((ensure (use-package-plist-get args :ensure)) (package-name (or (and (eq ensure t) -- 2.39.2