Use 'package-vc-selected-packages' to store package specs
* doc/emacs/package.texi (Fetching Package Sources): Do not promote the usage of 'package-vc-selected-packages' to install packages. * lisp/emacs-lisp/package-vc.el (package-vc-selected-packages): Remove custom setter and change docstring according to these changes. (package-vc--desc->spec): Consult 'package-vc-selected-packages' for package specifications. (package-vc--unpack): Add unknown package specifications to 'package-vc-selected-packages'
This commit is contained in:
parent
d3ad6c5e16
commit
168165178f
2 changed files with 22 additions and 39 deletions
|
@ -558,29 +558,6 @@ regular package listing. If you just wish to clone the source of a
|
|||
package, without adding it to the package list, use
|
||||
@code{package-vc-checkout}.
|
||||
|
||||
@vindex package-vc-selected-packages
|
||||
@findex package-vc-install-selected-packages
|
||||
An alternative way to use @code{package-vc-install} is via the
|
||||
@code{package-vc-selected-packages} user option. This is an alist of
|
||||
packages to install, where each key is a package name and the value is
|
||||
@code{nil}, indicating that any revision is to install, a string,
|
||||
indicating a specific revision or a package specification plist. The
|
||||
side effect of setting the user option is to install the package, but
|
||||
the process can also be manually triggered using the function
|
||||
@code{package-vc-install-selected-packages}. Here is an example of
|
||||
how the user option:
|
||||
|
||||
@example
|
||||
@group
|
||||
(setopt package-vc-selected-packages
|
||||
'((modus-themes . "0f39eb3fd9") ;specific revision
|
||||
(auctex . nil) ;any revision
|
||||
(foo ;a package specification
|
||||
:url "https://git.sv.gnu.org/r/foo-mode.git"
|
||||
:branch "trunk")))
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@findex package-report-bug
|
||||
@findex package-vc-prepare-patch
|
||||
With the source checkout, you might want to reproduce a bug against
|
||||
|
|
|
@ -139,7 +139,6 @@ the `clone' function."
|
|||
(package-desc-create :name name :kind 'vc))
|
||||
spec)))))))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom package-vc-selected-packages '()
|
||||
"List of packages that must be installed.
|
||||
Each member of the list is of the form (NAME . SPEC), where NAME
|
||||
|
@ -174,13 +173,9 @@ is a symbol designating the package and SPEC is one of:
|
|||
|
||||
All other keys are ignored.
|
||||
|
||||
This user option differs from `package-selected-packages' in that
|
||||
it is meant to be specified manually. If you want to install all
|
||||
the packages in the list, you cal also use
|
||||
`package-vc-install-selected-packages'.
|
||||
|
||||
Note that this option will not override an existing source
|
||||
package installation or revert the checked out revision."
|
||||
This user option will be automatically updated to store package
|
||||
specifications for packages that are not specified in any
|
||||
archive."
|
||||
:type '(alist :tag "List of packages you want to be installed"
|
||||
:key-type (symbol :tag "Package")
|
||||
:value-type
|
||||
|
@ -191,10 +186,6 @@ package installation or revert the checked out revision."
|
|||
(:lisp-dir string)
|
||||
(:main-file string)
|
||||
(:vc-backend symbol)))))
|
||||
:initialize #'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(custom-set-default sym val)
|
||||
(package-vc-install-selected-packages))
|
||||
:version "29.1")
|
||||
|
||||
(defvar package-vc--archive-spec-alist nil
|
||||
|
@ -224,12 +215,17 @@ All other values are ignored.")
|
|||
The optional argument NAME can be used to override the default
|
||||
name for PKG-DESC."
|
||||
(alist-get
|
||||
(or name (package-desc-name pkg-desc))
|
||||
(if (package-desc-archive pkg-desc)
|
||||
(setq name (or name (package-desc-name pkg-desc)))
|
||||
(if (and (package-desc-archive pkg-desc)
|
||||
(not (alist-get name package-vc-selected-packages
|
||||
nil nil #'string=)))
|
||||
(alist-get (intern (package-desc-archive pkg-desc))
|
||||
package-vc--archive-spec-alist)
|
||||
(apply #'append (mapcar #'cdr package-vc--archive-spec-alist)))
|
||||
nil nil #'string=))
|
||||
;; Consult both our local list of package specifications, as well
|
||||
;; as the lists provided by the archives.
|
||||
(apply #'append (cons package-vc-selected-packages
|
||||
(mapcar #'cdr package-vc--archive-spec-alist))))
|
||||
'() nil #'string=))
|
||||
|
||||
(define-inline package-vc--query-spec (pkg-desc prop)
|
||||
"Query the property PROP for the package specification of PKG-DESC.
|
||||
|
@ -659,9 +655,19 @@ abort installation?" name))
|
|||
;; file system or between installations.
|
||||
(throw 'done (setq lisp-dir name)))))
|
||||
|
||||
;; Store the :lisp-dir
|
||||
(when lisp-dir
|
||||
(push (cons :lisp-dir lisp-dir)
|
||||
(package-desc-extras pkg-desc)))
|
||||
|
||||
;; Ensure we have a copy of the package specification
|
||||
(unless (equal (alist-get name (mapcar #'cdr package-vc--archive-spec-alist)) pkg-spec)
|
||||
(customize-save-variable
|
||||
'package-vc-selected-packages
|
||||
(cons (cons name pkg-spec)
|
||||
(seq-remove (lambda (spec) (string= name (car spec)))
|
||||
package-vc-selected-packages))))
|
||||
|
||||
(package-vc--unpack-1 pkg-desc pkg-dir)))
|
||||
|
||||
(defun package-vc--read-package-name (prompt &optional allow-url installed)
|
||||
|
|
Loading…
Add table
Reference in a new issue