From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#65386: [PATCH] ; Refine some 'package-vc' docstrings Date: Sat, 19 Aug 2023 20:07:07 +0200 Message-ID: Reply-To: Eshel Yaron Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1006"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Philip Kaludercic To: 65386@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Aug 19 20:08:19 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qXQN0-000AXu-CN for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Aug 2023 20:08:18 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qXQMl-0003RX-5Y; Sat, 19 Aug 2023 14:08:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXQMj-0003RA-Rv for bug-gnu-emacs@gnu.org; Sat, 19 Aug 2023 14:08:01 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qXQMj-0002D9-K6 for bug-gnu-emacs@gnu.org; Sat, 19 Aug 2023 14:08:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qXQMk-0006Wr-9B; Sat, 19 Aug 2023 14:08:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eshel Yaron Original-Sender: "Debbugs-submit" Resent-CC: philipk@posteo.net, bug-gnu-emacs@gnu.org Resent-Date: Sat, 19 Aug 2023 18:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 65386 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: Philip Kaludercic Original-Received: via spool by submit@debbugs.gnu.org id=B.169246844925058 (code B ref -1); Sat, 19 Aug 2023 18:08:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 19 Aug 2023 18:07:29 +0000 Original-Received: from localhost ([127.0.0.1]:52250 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qXQMC-0006W5-4j for submit@debbugs.gnu.org; Sat, 19 Aug 2023 14:07:28 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:43268) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qXQM7-0006Vn-87 for submit@debbugs.gnu.org; Sat, 19 Aug 2023 14:07:27 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXQM0-0003JC-Dv for bug-gnu-emacs@gnu.org; Sat, 19 Aug 2023 14:07:16 -0400 Original-Received: from mail.eshelyaron.com ([107.175.124.16] helo=eshelyaron.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qXQLx-00023r-Ly for bug-gnu-emacs@gnu.org; Sat, 19 Aug 2023 14:07:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=eshelyaron.com; s=mail; t=1692468432; bh=d6gIuUswjxIqaPtZrKPYpAaPFOi2vQh9zok7qVSlYmY=; h=From:To:Subject:Date:From; b=U6fp+OxC3ol2o50IEjUmwTK2zHrUct48KIiDDPaDKi2c8xpo0aHUsNsv8dPj5AtSb ynL797Zu4IsJgLLD+VnUxzCh5j9bYSMk4WlmBsr4LN3BwrBAXKhj93bYJR+hzcC1FG m2OGKDFLEckC+mLndLKaEEn5bl/jB8KhubrfTvGyMztU9+kE2IGxAKAMqTj32GXRYk h8SKRihbMnVDBrcbQjhj81hCNtpaXsChT9S4HtO+UGos8S6f7hiFvCzv9rxpC+g6cC a3oUnMYAZtR9N5VugrYudeGzo0vknVjl4Cm0xk2o7/BOMoD3svGgxLH1I8QfDuM28E 1VIMwV4u7xBFA== Received-SPF: pass client-ip=107.175.124.16; envelope-from=me@eshelyaron.com; helo=eshelyaron.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:267900 Archived-At: --=-=-= Content-Type: text/plain 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' --=-=-= Content-Type: text/patch Content-Disposition: attachment; filename=0001-Refine-some-package-vc-docstrings.patch >From bc3cacdeb9f30c5f54aa92975835a3cfb8ff526d Mon Sep 17 00:00:00 2001 From: Eshel Yaron 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 --=-=-=--