`:pin` does not work with `:ensure`, because it doesn't add the package to package-pinned-packages until after reading the package archive contents. This change causes the package archive contents to be reread if the package is pinned and `:ensure` is being used.
Copyright-paperwork-exempt: yes
(defun use-package-ensure-elpa (package &optional no-refresh)
(if (package-installed-p package)
t
+ (if (and (not no-refresh) (assoc package package-pinned-packages))
+ (package-read-all-archive-contents))
(if (or (assoc package package-archive-contents) no-refresh)
(package-install package)
(progn