From: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: 65386@debbugs.gnu.org
Cc: Philip Kaludercic <philipk@posteo.net>
Subject: bug#65386: [PATCH] ; Refine some 'package-vc' docstrings
Date: Sat, 19 Aug 2023 20:07:07 +0200 [thread overview]
Message-ID: <m1a5umdhys.fsf@eshelyaron.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 624 bytes --]
Tags: patch
Hi,
This patch includes improvement suggestions for the docstrings of some
of the functions and user options in package-vc.el.
In GNU Emacs 30.0.50 (build 21, x86_64-apple-darwin22.5.0, NS
appkit-2299.60 Version 13.4 (Build 22F66)) of 2023-08-19 built on
dazzs-mbp.home
Repository revision: a85f31c4a4d37f5d39a99e79cc32be172d49603f
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2299
System Description: macOS 13.4
Configured using:
'configure 'CFLAGS=-g0 -O3' --with-native-compilation --with-json
--with-imagemagick --with-tree-sitter --enable-link-time-optimization'
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Refine-some-package-vc-docstrings.patch --]
[-- Type: text/patch, Size: 12010 bytes --]
From bc3cacdeb9f30c5f54aa92975835a3cfb8ff526d Mon Sep 17 00:00:00 2001
From: Eshel Yaron <me@eshelyaron.com>
Date: Fri, 18 Aug 2023 21:59:10 +0200
Subject: [PATCH] ; Refine some 'package-vc' docstrings
* lisp/emacs-lisp/package-vc.el (package-vc-heuristic-alist)
(package-vc-install-dependencies, package-vc-upgrade)
(package-vc-install, package-vc-install-from-checkout)
(package-vc-prepare-patch, package-vc-upgrade-all)
(package-vc-allow-side-effects): Refine docstrings.
(package-vc-default-backend): Refine docstring and custom type.
---
lisp/emacs-lisp/package-vc.el | 149 ++++++++++++++++++++--------------
1 file changed, 88 insertions(+), 61 deletions(-)
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index db8b41aee6a..29d09958e83 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -94,7 +94,10 @@ package-vc-heuristic-alist
(+ (or alnum "-" "." "_")) (? "/")))
eos)
. Bzr))
- "Heuristic mapping URL regular expressions to VC backends."
+ "Alist mapping regular expressions to VC backends.
+`package-vc-install' tries to match each regular expression in
+this alist to the repository URL you give it, and uses the VC
+backend corresponding to the first matching regular expression."
:type `(alist :key-type (regexp :tag "Regular expression matching URLs")
:value-type (choice :tag "VC Backend"
,@(mapcar (lambda (b) `(const ,b))
@@ -102,14 +105,19 @@ package-vc-heuristic-alist
:version "29.1")
(defcustom package-vc-default-backend 'Git
- "Default VC backend used when cloning a package repository.
-If no repository type was specified or could be guessed by
-`package-vc-heuristic-alist', this is the default VC backend
-used as fallback. The value must be a member of
-`vc-handled-backends' and the named backend must implement
-the `clone' function."
- :type `(choice ,@(mapcar (lambda (b) (list 'const b))
- vc-handled-backends))
+ "Default VC backend to use for cloning package repositories.
+`package-vc-install' uses this backend when you don't specify a
+backend and give it a URL that doesn't match any regular
+expression in `package-vc-heuristic-alist'.
+
+The value must be a member of `vc-handled-backends' that supports
+the `clone' VC function."
+ :type `(choice ,@(seq-keep
+ (lambda (be)
+ (when (or (vc-find-backend-function be 'clone)
+ (alist-get 'clone (get be 'vc-functions)))
+ (list 'const be)))
+ vc-handled-backends))
:version "29.1")
(defcustom package-vc-register-as-project t
@@ -140,20 +148,21 @@ package-vc-install-selected-packages
(package-desc-create :name name :kind 'vc))
spec)))))))
-(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
-is a symbol designating the package and SPEC is one of:
+
+(defcustom package-vc-selected-packages nil
+ "List of packages to install from source.
+Each element is of the form (NAME . SPEC), where NAME is a symbol
+designating the package and SPEC is one of:
- nil, if any package version can be installed;
- a version string, if that specific revision is to be installed;
-- a property list, describing a package specification. For more
- details, please consult the subsection \"Specifying Package
- Sources\" in the Info node `(emacs)Fetching Package Sources'.
+- a property list, describing a package specification. For possible
+ values, see the subsection \"Specifying Package Sources\" in the
+ Info node `(emacs)Fetching Package Sources'.
-This user option will be automatically updated to store package
-specifications for packages that are not specified in any
-archive."
+The command `package-vc-install' updates the value of this user
+option 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
@@ -345,19 +354,26 @@ package-vc--generate-description-file
nil pkg-file nil 'silent))))
(defcustom package-vc-allow-side-effects nil
- "Whether to process :make and :shell-command spec arguments.
+ "Whether to run extra build commands when installing VC packages.
+
+Some packages specify \"make\" targets or other shell commands
+that should run prior to building the package, by including the
+:make or :shell-command keywords in their specification. When
+this option is nil, Emacs ignores these keywords when installing
+and upgrading VC packages. If it's a list of package
+names (symbols), Emacs only runs these extra build commands for
+those packages. A non-nil non-list value says to always respect
+:make and :shell-command keywords.
It may be necessary to run :make and :shell-command arguments in
order to initialize a package or build its documentation, but
please be careful when changing this option, as installing and
updating a package can run potentially harmful code.
-When set to a list of symbols (packages), run commands for only
-packages in the list. When nil, never run commands. Otherwise
-when non-nil, run commands for any package with :make or
-:shell-command specified.
-
-Package specs are loaded from trusted package archives."
+This applies to package specifications that come from your
+configured package archives, as well as from entries in
+`package-vc-selected-packages' and specifications that you give
+to `package-vc-install' directly."
:type '(choice (const :tag "Run for all packages" t)
(repeat :tag "Run only for selected packages" (symbol :tag "Package name"))
(const :tag "Never run" nil))
@@ -415,14 +431,14 @@ package-vc--build-documentation
(delete-file file))))
(defun package-vc-install-dependencies (requirements)
- "Install missing dependencies, and return missing ones.
-The return value will be nil if everything was found, or a list
-of (NAME VERSION) pairs of all packages that couldn't be found.
-
-REQUIREMENTS should be a list of additional requirements; each
-element in this list should have the form (PACKAGE VERSION-LIST),
-where PACKAGE is a package name and VERSION-LIST is the required
-version of that package."
+ "Install missing dependencies according to REQUIREMENTS.
+
+REQUIREMENTS is a list of elements (PACKAGE VERSION-LIST), where
+PACKAGE is a package name and VERSION-LIST is the required
+version of that package.
+
+Return a list of requirements that couldn't be met (or nil, when
+this function successfully installs all given requirements)."
(let ((to-install '()) (missing '()))
(cl-labels ((search (pkg)
"Attempt to find all dependencies for PKG."
@@ -719,7 +735,7 @@ package-vc--read-package-desc
;;;###autoload
(defun package-vc-upgrade-all ()
- "Attempt to upgrade all installed VC packages."
+ "Upgrade all installed VC packages."
(interactive)
(dolist (package package-alist)
(dolist (pkg-desc (cdr package))
@@ -729,7 +745,7 @@ package-vc-upgrade-all
;;;###autoload
(defun package-vc-upgrade (pkg-desc)
- "Attempt to upgrade the package PKG-DESC."
+ "Upgrade the VC package that PKG-DESC describes."
(interactive (list (package-vc--read-package-desc "Upgrade VC package: " t)))
;; HACK: To run `package-vc--unpack-1' after checking out the new
;; revision, we insert a hook into `vc-post-command-functions', and
@@ -794,32 +810,43 @@ package-vc--release-rev
(defun package-vc-install (package &optional rev backend name)
"Fetch a PACKAGE and set it up for using with Emacs.
-If PACKAGE is a string containing an URL, download the package
-from the repository at that URL; the function will try to guess
-the name of the package from the URL. This can be overridden by
-passing the optional argument NAME. If PACKAGE is a cons-cell,
-it should have the form (NAME . SPEC), where NAME is a symbol
-indicating the package name and SPEC is a plist as described in
-`package-vc-selected-packages'. Otherwise PACKAGE should be a
-symbol whose name is the package name, and the URL for the
-package will be taken from the package's metadata.
+PACKAGE specifies which package to install, where to find its
+source repository and how to build it.
By default, this function installs the last revision of the
package available from its repository. If REV is a string, it
-describes the revision to install, as interpreted by the VC
-backend. The special value `:last-release' (interactively, the
-prefix argument), will use the commit of the latest release, if
-it exists. The last release is the latest revision which changed
-the \"Version:\" header of the package's main Lisp file.
-
-Optional argument BACKEND specifies the VC backend to use for cloning
-the package's repository; this is only possible if NAME-OR-URL is a URL,
-a string. If BACKEND is omitted or nil, the function
-uses `package-vc-heuristic-alist' to guess the backend.
-Note that by default, a VC package will be prioritized over a
-regular package, but it will not remove a VC package.
-
-\(fn PACKAGE &optional REV BACKEND)"
+describes the revision to install, as interpreted by the relevant
+VC backend. The special value `:last-release' (interactively,
+the prefix argument), says to use the commit of the latest
+release, if it exists. The last release is the latest revision
+which changed the \"Version:\" header of the package's main Lisp
+file.
+
+If PACKAGE is a symbol, install the package with that name
+according to metadata that package archives provide for it. This
+is the simplest way to call this function, but it only works if
+the package you want to install is listed in a package archive
+you have configured.
+
+If PACKAGE is a string, it specifies the URL of the package
+repository. In this case, optional argument BACKEND specifies
+the VC backend to use for cloning the repository; if it's nil,
+this function tries to infer which backend to use according to
+the value of `package-vc-heuristic-alist' and if that fails it
+uses `package-vc-default-backend'. Optional argument NAME
+specifies the package name in this case; if it's nil, this
+package uses `file-name-base' on the URL to obtain the package
+name, otherwise NAME is the package name as a symbol.
+
+PACKAGE can also be a cons cell (PNAME . SPEC) where PNAME is the
+package name as a symbol, and SPEC is a plist that specifes how
+to fetch and build the package. For possible values, see the
+subsection \"Specifying Package Sources\" in the Info
+node `(emacs)Fetching Package Sources'.
+
+If you use this function to install a package that you also have
+installed from a package archive, the version this function
+installs is takes precedence."
(interactive
(progn
;; Initialize the package system to get the list of package
@@ -895,7 +922,7 @@ package-vc-checkout
;;;###autoload
(defun package-vc-install-from-checkout (dir name)
- "Set up the package NAME in DIR by linking it into the ELPA directory.
+ "Install the package NAME from its source directory DIR.
Interactively, prompt the user for DIR, which should be a directory
under version control, typically one created by `package-vc-checkout'.
If invoked interactively with a prefix argument, prompt the user
@@ -937,7 +964,7 @@ package-vc-rebuild
;;;###autoload
(defun package-vc-prepare-patch (pkg-desc subject revisions)
- "Send patch for REVISIONS to maintainer of the package PKG using SUBJECT.
+ "Send patch for REVISIONS to maintainer of the package PKG-DESC using SUBJECT.
The function uses `vc-prepare-patch', passing SUBJECT and
REVISIONS directly. PKG-DESC must be a package description.
Interactively, prompt for PKG-DESC, SUBJECT, and REVISIONS. When
--
2.41.0
next reply other threads:[~2023-08-19 18:07 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-19 18:07 Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2023-08-19 19:47 ` bug#65386: [PATCH] ; Refine some 'package-vc' docstrings Eli Zaretskii
2023-08-19 20:42 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 6:05 ` Eli Zaretskii
2023-08-20 7:15 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 8:32 ` Philip Kaludercic
2023-08-20 10:14 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 12:18 ` Philip Kaludercic
2023-08-20 14:44 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 16:04 ` Philip Kaludercic
2023-08-20 16:22 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 18:33 ` Philip Kaludercic
2023-08-20 10:31 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-20 8:13 ` Philip Kaludercic
2023-08-20 19:24 ` Mauro Aranda
2023-08-20 20:35 ` Philip Kaludercic
2023-08-21 8:16 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-21 9:27 ` Philip Kaludercic
2023-08-21 10:22 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
[not found] <87ledwipkb.fsf@posteo.net>
2023-08-27 17:18 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-29 8:43 ` Philip Kaludercic
2023-08-29 9:10 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1a5umdhys.fsf@eshelyaron.com \
--to=bug-gnu-emacs@gnu.org \
--cc=65386@debbugs.gnu.org \
--cc=me@eshelyaron.com \
--cc=philipk@posteo.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.