X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH emacs-guix 0/4] Refresh package emacs-guix Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:08:01 +0000 Resent-Message-ID: <handler.76699.B.174096762828447 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: ludo@HIDDEN, Nicolas Graves <ngraves@HIDDEN> X-Debbugs-Original-To: guix-patches@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.174096762828447 (code B ref -1); Mon, 03 Mar 2025 02:08:01 +0000 Received: (at submit) by debbugs.gnu.org; 3 Mar 2025 02:07:08 +0000 Received: from localhost ([127.0.0.1]:40702 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovD0-0007OX-Su for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:07:08 -0500 Received: from lists.gnu.org ([2001:470:142::17]:41556) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovCv-0007N8-Rd for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:07:05 -0500 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 <ngraves@HIDDEN>) id 1tovCo-0001PV-AT for guix-patches@HIDDEN; Sun, 02 Mar 2025 21:06:54 -0500 Received: from 3.mo583.mail-out.ovh.net ([46.105.40.108]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ngraves@HIDDEN>) id 1tovCk-00089P-JU for guix-patches@HIDDEN; Sun, 02 Mar 2025 21:06:54 -0500 Received: from director4.ghost.mail-out.ovh.net (unknown [10.109.148.200]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4Z5hy65pQpz1RTK for <guix-patches@HIDDEN>; Mon, 3 Mar 2025 02:06:38 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-5dcn8 (unknown [10.108.54.148]) by director4.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 699571FE3F; Mon, 3 Mar 2025 02:06:38 +0000 (UTC) Received: from ngraves.fr ([37.59.142.109]) by ghost-submission-5b5ff79f4f-5dcn8 with ESMTPSA id krePAa4OxWeWVgAA6Nx3uQ (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:06:38 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-109S00344ba3a8c-e5bc-4fbb-b882-2590c6506c46, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:01:21 +0100 Message-ID: <20250303020636.3461-1-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1057782965305139938 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekjecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvvefufffkofgggfestdekredtredttdenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeeluddthfdugeefgfeuudfgvefgudejvdeuuddtffdthffhgedtudfgvdefgeffueenucffohhmrghinhepshhrrdhhthdpshgtmhdrnhgvgihtpdgvlhdrihhnnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegpdefjedrheelrddugedvrddutdelnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopehguhhigidqphgrthgthhgvshesghhnuhdrohhrghdpoffvtefjohhsthepmhhoheekfegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=4JrvJbu2sztRSY7PkBfnCEutvsQUYyeIlPVPYqBahjA=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967598; v=1; b=IsfxHOgZpTljO2JfH0vkK8V/XOsG/nioUvDp/+9WmgVl9HXwUfVbtBcmSoZlF4F8a9PXbFHP klOa/X0LUu7MY/Ft2OLJ1GJrudMsd5as13b+J9xYT9ETApxJ4HPs/SIUza8bjPB6PGCPHWyzYDe ZWqGcMW3wUM5GkdHiRxwNKxsOFNDlMberbVdCNxhLd4ox+Ya3QTcHO6gXG9M2o7VVMtyj5Ncwrb Z6oFSLUGDCxZ8XMQtQn73MQK4nP4gXSk50e0YWfy0WZqnnUTJlqjRKxA1nd5paPQDiGe6NvoS61 swVEQKnnbG7hjuonEOIsQPtRVBrc366XWmzCAdnuvX0zQ== Received-SPF: pass client-ip=46.105.40.108; envelope-from=ngraves@HIDDEN; helo=3.mo583.mail-out.ovh.net 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, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) This is a series of refreshing commits for emacs-guix. This is done in an effort to port emacs-guix to guile-ares-rs/emacs-arei backend, currently in progress here : https://git.sr.ht/~ngraves/emacs-guix This is still a WIP, I'd still like to replace old references to guix-environment by references to guix shell at least. I'm not able to test all changes, since guix-command seems to be broken (before this patch series I mean). Thus, I invite users of emacs-guix to try that series and report any bug that could have been caused by it. Nicolas Graves (5): Switch to transient Improve most docstrings Remove dash dependency, introduce llama library Use a development channel instead of guix.scm Update NEWS .guix-channel | 3 + NEWS | 10 + README | 2 +- guix.scm => channel/emacs-guix-channel.scm | 69 +++---- channel/emacs-guix-channel.scm.next | 104 ++++++++++ configure.ac | 32 +-- doc/emacs-guix.texi | 59 +++--- doc/htmlxref.cnf | 6 +- elisp/guix-about.el | 2 +- elisp/guix-build-config.el.in | 7 +- elisp/guix-build-log.el | 28 +-- elisp/guix-command.el | 162 ++++++++------- elisp/guix-config.el | 2 +- elisp/guix-default-config.el | 2 +- elisp/guix-external.el | 12 +- elisp/guix-geiser.el | 9 +- elisp/guix-graph.el | 2 +- elisp/guix-guile.el | 6 +- elisp/guix-help-vars.el | 37 ++-- elisp/guix-help.el | 15 +- elisp/guix-license.el | 3 +- elisp/guix-misc.el | 24 ++- elisp/guix-package.el | 2 +- elisp/guix-pcomplete.el | 15 +- elisp/guix-popup.el | 227 --------------------- elisp/guix-prettify.el | 4 +- elisp/guix-profiles.el | 32 +-- elisp/guix-read.el | 8 +- elisp/guix-repl.el | 43 ++-- elisp/guix-transient.el | 187 +++++++++++++++++ elisp/guix-ui-generation.el | 62 +++--- elisp/guix-ui-license.el | 18 +- elisp/guix-ui-lint-checker.el | 15 +- elisp/guix-ui-messages.el | 16 +- elisp/guix-ui-package-location.el | 6 +- elisp/guix-ui-package.el | 104 +++++----- elisp/guix-ui-profile.el | 65 +++--- elisp/guix-ui-service-location.el | 6 +- elisp/guix-ui-service.el | 32 ++- elisp/guix-ui-store-item.el | 46 +++-- elisp/guix-ui-system-generation.el | 24 ++- elisp/guix-ui-system.el | 17 +- elisp/guix-ui.el | 16 +- elisp/guix-utils.el | 92 ++++----- elisp/guix.el | 2 +- elisp/local.mk | 10 +- 46 files changed, 895 insertions(+), 750 deletions(-) create mode 100644 .guix-channel rename guix.scm => channel/emacs-guix-channel.scm (50%) create mode 100644 channel/emacs-guix-channel.scm.next delete mode 100644 elisp/guix-popup.el create mode 100644 elisp/guix-transient.el -- 2.48.1
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Nicolas Graves <ngraves@HIDDEN> Subject: bug#76699: Acknowledgement ([PATCH emacs-guix 0/4] Refresh package emacs-guix) Message-ID: <handler.76699.B.174096762828447.ack <at> debbugs.gnu.org> References: <20250303020636.3461-1-ngraves@HIDDEN> X-Gnu-PR-Message: ack 76699 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 76699 <at> debbugs.gnu.org Date: Mon, 03 Mar 2025 02:08:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): guix-patches@HIDDEN If you wish to submit further information on this problem, please send it to 76699 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 76699: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D76699 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 2/5] Improve most docstrings Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:10:02 +0000 Resent-Message-ID: <handler.76699.B76699.174096778329252 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: Nicolas Graves <ngraves@HIDDEN> Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174096778329252 (code B ref 76699); Mon, 03 Mar 2025 02:10:02 +0000 Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:43 +0000 Received: from localhost ([127.0.0.1]:40743 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovFX-0007bk-KH for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:43 -0500 Received: from 16.mo561.mail-out.ovh.net ([188.165.56.217]:35453) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovFU-0007b0-8J for 76699 <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:40 -0500 Received: from director5.ghost.mail-out.ovh.net (unknown [10.108.25.209]) by mo561.mail-out.ovh.net (Postfix) with ESMTP id 4Z5j1Z2M2xz1RNC for <76699 <at> debbugs.gnu.org>; Mon, 3 Mar 2025 02:09:38 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-5dcn8 (unknown [10.111.182.7]) by director5.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 9EC731FE5B; Mon, 3 Mar 2025 02:09:37 +0000 (UTC) Received: from ngraves.fr ([37.59.142.108]) by ghost-submission-5b5ff79f4f-5dcn8 with ESMTPSA id WNwVD2EPxWdiWAAA6Nx3uQ (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:09:37 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-108S00257c8b350-2e9f-44db-9e00-565ff73b0854, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:09:17 +0100 Message-ID: <20250303020932.4194-2-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250303020932.4194-1-ngraves@HIDDEN> References: <20250303020932.4194-1-ngraves@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1108448459141866210 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekjecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepvddvgeefiefhledugfdtkeefieekiefgtddtjeetfffhhefgkeduteehhfetudffnecuffhomhgrihhnpegvlhdrihhnpdhgnhhurdhorhhgpdhnohhtrggsuhhgrdhorhhgnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegpdefjedrheelrddugedvrddutdeknecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopeejieeileelseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehiedumgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=45fsWkc7+n1aPvL/vXdURyyOwUBZUpeQl0KoPz+CsW8=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967778; v=1; b=uaFcIchqxlhDmdk/LEXWmPZdiu4YWctIs5qAKIdVnc3peGJfSOovoKi0tsTeCVgfqakFEq7T h4OgueBMvYsEdyUQzwNHeq0v/lEluPa5N6d2ic4FVbaG0JaxKURQMGVucAYN6qjmCbpJgL7VZvW uXV4a93HaMsMtJw1liZwJutyYYsYlZob65ifmlsn/65ZNiiqnBtXdcIfRJZqYLm9GDvrq4ToYS2 Y8l3dpbO1bjfGB8uhWek+kdbYiP2YQk3Xzs7FVf3g3fDeIcWQXE9W1j3wTddYLkzBd8pe6f4FrD Q9TGH0d9XiQb/K/+MwXleE4P2QlxdsGXm7c+IWNYMQm9w== X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> This is to decrease the number of flymake warnings and better address serious warnings. --- elisp/guix-about.el | 2 +- elisp/guix-build-config.el.in | 7 ++- elisp/guix-build-log.el | 28 ++++----- elisp/guix-command.el | 58 +++++++++---------- elisp/guix-config.el | 2 +- elisp/guix-default-config.el | 2 +- elisp/guix-external.el | 12 ++-- elisp/guix-geiser.el | 9 +-- elisp/guix-graph.el | 2 +- elisp/guix-guile.el | 6 +- elisp/guix-help-vars.el | 37 ++++++------ elisp/guix-help.el | 12 ++-- elisp/guix-license.el | 3 +- elisp/guix-misc.el | 24 ++++---- elisp/guix-package.el | 2 +- elisp/guix-pcomplete.el | 15 ++--- elisp/guix-prettify.el | 4 +- elisp/guix-profiles.el | 32 +++++------ elisp/guix-read.el | 8 ++- elisp/guix-repl.el | 37 ++++++------ elisp/guix-ui-generation.el | 61 ++++++++++++-------- elisp/guix-ui-license.el | 18 +++--- elisp/guix-ui-lint-checker.el | 15 +++-- elisp/guix-ui-messages.el | 16 ++++-- elisp/guix-ui-package-location.el | 6 +- elisp/guix-ui-package.el | 92 ++++++++++++++++-------------- elisp/guix-ui-profile.el | 37 +++++++----- elisp/guix-ui-service-location.el | 6 +- elisp/guix-ui-service.el | 32 +++++++---- elisp/guix-ui-store-item.el | 46 +++++++++------ elisp/guix-ui-system-generation.el | 24 +++++--- elisp/guix-ui-system.el | 17 ++++-- elisp/guix-ui.el | 16 +++--- elisp/guix-utils.el | 91 ++++++++++++++--------------- 34 files changed, 430 insertions(+), 349 deletions(-) diff --git a/elisp/guix-about.el b/elisp/guix-about.el index e0de219..6e1168a 100644 --- a/elisp/guix-about.el +++ b/elisp/guix-about.el @@ -107,7 +107,7 @@ Return nil if the image cannot be found." (bui-newline))))))) (defun guix-about-insert-content () - "Insert Emacs-Guix 'about' info into the current buffer." + "Insert Emacs-Guix \\='about\\=' info into the current buffer." (guix-insert-logo) (apply #'fancy-splash-insert guix-about-specifications) (goto-char (point-min)) diff --git a/elisp/guix-build-config.el.in b/elisp/guix-build-config.el.in index a32059a..af21dc8 100644 --- a/elisp/guix-build-config.el.in +++ b/elisp/guix-build-config.el.in @@ -18,6 +18,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with Emacs-Guix. If not, see <http://www.gnu.org/licenses/>. +;;; Commentary: + ;;; Code: (defconst guix-config-name "@PACKAGE_NAME@" @@ -65,8 +67,7 @@ "Directory with Guix compiled (*.go) files.") (defconst guix-config-guile-program "@GUILE@" - "Name of the 'guile' executable defined at configure time.") + "Name of the \\='guile\\=' executable defined at configure time.") (provide 'guix-build-config) - -;;; guix-build-config.el ends here +;;; guix-build-config.el.in ends here diff --git a/elisp/guix-build-log.el b/elisp/guix-build-log.el index 7d2bce5..ac4f428 100644 --- a/elisp/guix-build-log.el +++ b/elisp/guix-build-log.el @@ -93,12 +93,12 @@ (defface guix-build-log-phase-success '((t)) - "Face for the 'succeeded' word of a phase line." + "Face for the \"succeeded\" word of a phase line." :group 'guix-build-log-faces) (defface guix-build-log-phase-fail '((t :inherit error)) - "Face for the 'failed' word of a phase line." + "Face for the \"failed\" word of a phase line." :group 'guix-build-log-faces) (defface guix-build-log-phase-seconds @@ -116,7 +116,7 @@ (defvar guix-build-log-phase-start-regexp (concat "^starting phase " guix-build-log-phase-name-regexp) - "Regexp for the start line of a 'build' phase.") + "Regexp for the start line of a \\='build\\=' phase.") (defvar guix-build-log-imenu-generic-expression `((nil ,guix-build-log-phase-start-regexp 1)) @@ -125,8 +125,8 @@ (defun guix-build-log-title-regexp (&optional state) "Return regexp for the log title. STATE is a symbol denoting a state of the title. It should be -`start', `fail', `success' or `nil' (for a regexp matching any -state)." +\\='start\\=', \\='fail\\=', \\='success\\=' or \\='nil\\=' (for a +regexp matching any state)." (let* ((word-rx (rx (1+ (any word "-")))) (state-rx (cond ((eq state 'start) (concat word-rx "started")) ((eq state 'success) (concat word-rx "succeeded")) @@ -137,9 +137,10 @@ state)." t))) (defun guix-build-log-phase-end-regexp (&optional state) - "Return regexp for the end line of a 'build' phase. + "Return regexp for the end line of a \\='build\\=' phase. STATE is a symbol denoting how a build phase was ended. It should be -`fail', `success' or `nil' (for a regexp matching any state)." +\\='fail\\=', \\='success\\=' or \\='nil\\=' (for a regexp matching +any state)." (let ((state-rx (cond ((eq state 'success) "succeeded") ((eq state 'fail) "failed") (t (regexp-opt '("succeeded" "failed")))))) @@ -153,7 +154,7 @@ STATE is a symbol denoting how a build phase was ended. It should be ;; For efficiency, it is better to have a regexp for the general line ;; of the phase end, then to call the function all the time. (guix-build-log-phase-end-regexp) - "Regexp for the end line of a 'build' phase.") + "Regexp for the end line of a \\='build\\=' phase.") (defvar guix-build-log-font-lock-keywords `((,(guix-build-log-title-regexp 'start) @@ -192,9 +193,9 @@ STATE is a symbol denoting how a build phase was ended. It should be (define-key map (kbd "<backtab>") 'guix-build-log-phase-toggle-all) (define-key map [(shift tab)] 'guix-build-log-phase-toggle-all) map) - "Parent keymap for 'build-log' buffers. + "Parent keymap for \\='build-log\\=' buffers. For `guix-build-log-mode' this map is used as is. -For `guix-build-log-minor-mode' this map is prefixed with 'C-c'.") +For `guix-build-log-minor-mode' this map is prefixed with \`C-c'.") (defvar guix-build-log-mode-map (let ((map (make-sparse-keymap))) @@ -214,8 +215,9 @@ For `guix-build-log-minor-mode' this map is prefixed with 'C-c'.") (defun guix-build-log-phase-start (&optional with-header?) "Return the start point of the current build phase. -If WITH-HEADER? is non-nil, do not skip 'starting phase ...' header. -Return nil, if there is no phase start before the current point." +If WITH-HEADER? is non-nil, do not skip \\='starting phase ...\\=' +header. Return nil, if there is no phase start before the current +point." (save-excursion (end-of-line) (when (re-search-backward guix-build-log-phase-start-regexp nil t) @@ -343,7 +345,7 @@ When Guix Build Log minor mode is enabled, it highlights build log in the current buffer. This mode can be enabled programmatically using hooks, like this: - (add-hook 'shell-mode-hook 'guix-build-log-minor-mode) + (add-hook \\='shell-mode-hook \\='guix-build-log-minor-mode) \\{guix-build-log-minor-mode-map}" :init-value nil diff --git a/elisp/guix-command.el b/elisp/guix-command.el index affda4e..a205418 100644 --- a/elisp/guix-command.el +++ b/elisp/guix-command.el @@ -80,7 +80,7 @@ (defvar guix-command-complex-with-shared-arguments '("potluck" "system") "List of guix commands which have subcommands with shared options. -I.e., 'guix foo --help' is the same as 'guix foo bar --help'.") +I.e., \\='guix foo --help\\=' is the same as \\='guix foo bar --help\\='.") (defun guix-command-action-name (&optional commands &rest name-parts) "Return name of action function for guix COMMANDS." @@ -484,7 +484,7 @@ to be modified." argument)) (defun guix-command-improve-arguments (arguments commands) - "Return ARGUMENTS for 'guix COMMANDS ...' modified for transient interface." + "Return ARGUMENTS for \\='guix COMMANDS ...\\=' modified for transient interface." (let ((improvers (cons 'guix-command-improve-common-argument (bui-assoc-value guix-command-argument-improvers commands)))) @@ -493,7 +493,7 @@ to be modified." arguments))) (defun guix-command-parse-arguments (&optional commands) - "Return a list of parsed 'guix COMMANDS ...' arguments." + "Return a list of parsed \\='guix COMMANDS ...\\=' arguments." (with-temp-buffer (insert (guix-help-string commands)) (let (args) @@ -585,7 +585,7 @@ to be modified." :doc "build inputs of the specified packages" :fun 'guix-read-package-names-string))) "Alist of guix commands and additional arguments for them. -These are 'fake' arguments that are not presented in 'guix' shell +These are \\='fake\\=' arguments that are not presented in \\='guix\\=' shell commands.") (defun guix-command-additional-arguments (&optional commands) @@ -601,7 +601,7 @@ commands.") ;; commands. (defun guix-command--all-arguments (&optional commands) - "Return list of all arguments for 'guix COMMANDS ...'." + "Return list of all arguments for \\='guix COMMANDS ...\\='." (let ((parsed (guix-command-parse-arguments commands))) (append (guix-command-improve-arguments parsed commands) (guix-command-additional-arguments commands)))) @@ -612,7 +612,7 @@ commands.") (defun guix-command-all-arguments (&optional commands) ;; Note: `guix-command-arguments' name cannot be used because function ;; with this name is generated by `transient-define-prefix'. - "Return list of arguments for 'guix COMMANDS ...'." + "Return list of arguments for \\='guix COMMANDS ...\\='." (let ((command (car commands))) (if (member command guix-command-complex-with-shared-arguments) @@ -700,7 +700,7 @@ Each function is called on the returned arguments in turn.") (defvar guix-command-rest-arg-regexp (rx string-start "-- " (group (+ any))) - "Regexp to match a string with the 'rest' arguments.") + "Regexp to match a string with the \\='rest\\=' arguments.") (defun guix-command-replace-args (args predicate modifier) "Replace arguments matching PREDICATE from ARGS. @@ -740,39 +740,37 @@ arguments into multiple subarguments." :group 1)) (defun guix-command-post-process-rest-multiple (args) - "Modify ARGS by splitting '-- ARG ...' into multiple subarguments -and moving them to the end of ARGS list. -Remove '-- ' string." + "Modify ARGS and remove '-- ' string. +Do that by splitting \\='-- ARG ...\\=' into multiple subarguments +and moving them to the end of ARGS list." (guix-command-post-process-matching-args args guix-command-rest-arg-regexp :group 1 :split? t)) (defun guix-command-post-process-rest-multiple-leave (args) - "Modify ARGS by splitting '-- ARG ...' into multiple subarguments -and moving them to the end of ARGS list. -Leave '--' string as a separate argument." + "Modify ARGS and leave '--' string as a separate argument. +Do that by splitting \\='-- ARG ...\\=' into multiple subarguments +and moving them to the end of ARGS list." (guix-command-post-process-matching-args args guix-command-rest-arg-regexp :split? t)) (defun guix-command-post-process-package-args (args) - "Adjust transient ARGS for 'guix package' command." + "Adjust transient ARGS for \\='guix package\\=' command." (guix-command-post-process-matching-args args (rx string-start (or "--install " "--remove ") (+ any)) :split? t)) (defun guix-command-post-process-environment-packages (args) - "Adjust transient ARGS for specified packages of 'guix environment' -command." + "Adjust ARGS for specified packages of \\='guix environment\\=' command." (guix-command-post-process-matching-args args (rx string-start "++packages " (group (+ any))) :group 1 :split? t)) (defun guix-command-post-process-environment-ad-hoc (args) - "Adjust transient ARGS for '--ad-hoc' argument of 'guix environment' -command." + "Adjust ARGS for '--ad-hoc' argument of \\='guix environment\\=' command." (guix-command-post-process-matching-args args (rx string-start "--ad-hoc " (+ any)) :split? t)) @@ -799,7 +797,7 @@ command." :name "shell" :char ?s :doc "Run in shell") (guix-command-make-argument :name "copy" :char ?c :doc "Copy command line")) - "List of default 'execute' action arguments.") + "List of default \\='execute\\=' action arguments.") (defvar guix-command-additional-execute-arguments (let ((graph-arg (guix-command-make-argument @@ -813,10 +811,10 @@ command." :name "view" :char ?v :doc "View map")) (("system" "shepherd-graph") ,graph-arg) (("system" "extension-graph") ,graph-arg))) - "Alist of guix commands and additional 'execute' action arguments.") + "Alist of guix commands and additional \\='execute\\=' action arguments.") (defun guix-command-execute-arguments (commands) - "Return a list of 'execute' action arguments for COMMANDS." + "Return a list of \\='execute\\=' action arguments for COMMANDS." (mapcar (lambda (arg) (guix-command-modify-argument arg :action? t @@ -856,7 +854,7 @@ See also `guix-command-default-executors'.") (bui-assoc-value guix-command-default-executors name))) (defun guix-run-environment-command-in-repl (args) - "Run 'guix ARGS ...' environment command in Guix REPL." + "Run \\='guix ARGS ...\\=' environment command in Guix REPL." ;; As 'guix environment' usually tries to run another process, it may ;; be fun but not wise to run this command in Geiser REPL. (when (or (member "--dry-run" args) @@ -871,7 +869,7 @@ Do you really want to execute this command in Geiser REPL? " (guix-run-command-in-repl args))) (defun guix-run-pull-command-in-repl (args) - "Run 'guix ARGS ...' pull command in Guix REPL. + "Run \\='guix ARGS ...\\=' pull command in Guix REPL. Perform pull-specific actions after operation, see `guix-after-pull-hook' and `guix-update-after-pull'." (guix-eval-in-repl @@ -882,8 +880,8 @@ Perform pull-specific actions after operation, see 'pull))) (defun guix-run-view-build-log (args) - "Add --log-file to ARGS, run 'guix ARGS ...' build command, and -open the log file(s)." + "Add --log-file to ARGS, run \\='guix ARGS ...\\=' build command. +Then open the log file(s)." (let* ((args (if (member "--log-file" args) args (cl-list* (car args) "--log-file" (cdr args)))) @@ -895,7 +893,7 @@ open the log file(s)." (declare-function guix-make-view-graph "guix-graph" t) (defun guix-run-view-graph (args) - "Run 'guix ARGS ...' graph command, make the image and open it." + "Run \\='guix ARGS ...\\=' graph command, make the image and open it." (require 'guix-graph) (guix-make-view-graph (if (member "--backend=d3js" args) "d3js" "graphviz") @@ -909,7 +907,7 @@ open the log file(s)." 'guix-output-to-file args graph-file))))))) (defun guix-run-view-size-map (args) - "Run 'guix ARGS ...' size command, and open the map file." + "Run \\='guix ARGS ...\\=' size command, and open the map file." (let* ((wished-map-file (cl-some (lambda (arg) (and (string-match "--map-file=\\(.+\\)" arg) @@ -955,7 +953,7 @@ EXECUTOR function is called with the current command line arguments." ',commands (transient-args (transient-current-command)))))))) (defun guix-command-generate-popup-actions (actions &optional commands) - "Generate 'popup' commands from ACTIONS arguments for guix COMMANDS." + "Generate \\='popup\\=' commands from ACTIONS arguments for guix COMMANDS." (dolist (action actions) (let ((fun (guix-command-argument-fun action))) (unless (fboundp fun) @@ -964,7 +962,7 @@ EXECUTOR function is called with the current command line arguments." (list (guix-command-argument-name action))))))))) (defun guix-command-generate-execute-actions (actions &optional commands) - "Generate 'execute' commands from ACTIONS arguments for guix COMMANDS." + "Generate \\='execute\\=' commands from ACTIONS arguments for guix COMMANDS." (dolist (action actions) (let ((fun (guix-command-argument-fun action))) (unless (fboundp fun) @@ -974,7 +972,7 @@ EXECUTOR function is called with the current command line arguments." ,commands)))))) (defun guix-command-generate-prefix (name &optional commands) - "Define NAME prefix with 'guix COMMANDS ...' interface." + "Define NAME prefix with \\='guix COMMANDS ...\\=' interface." (let* ((command (car commands)) (man-page (concat "guix" (and command (concat "-" command)))) (doc (format "Transient for '%s' command." diff --git a/elisp/guix-config.el b/elisp/guix-config.el index 4506958..8cc1f6a 100644 --- a/elisp/guix-config.el +++ b/elisp/guix-config.el @@ -59,7 +59,7 @@ nil)) "Directory with Scheme files for Emacs-Guix package. It should be a directory where Guile modules are placed, i.e. a -directory with 'emacs-guix' sub-directory.") +directory with \\='emacs-guix\\=' sub-directory.") (defvar guix-image-directory (or guix-config-image-directory diff --git a/elisp/guix-default-config.el b/elisp/guix-default-config.el index 77ffc83..4ec7a1c 100644 --- a/elisp/guix-default-config.el +++ b/elisp/guix-default-config.el @@ -59,7 +59,7 @@ "Directory with Guix compiled (*.go) files.") (defconst guix-config-guile-program nil - "Name of the 'guile' executable defined at configure time.") + "Name of the \\='guile\\=' executable defined at configure time.") (provide 'guix-default-config) diff --git a/elisp/guix-external.el b/elisp/guix-external.el index c7e123b..d470c36 100644 --- a/elisp/guix-external.el +++ b/elisp/guix-external.el @@ -38,7 +38,7 @@ ;; Avoid auto-compilation as it is slow and error-prone: ;; <https://notabug.org/alezost/emacs-guix/issues/2>. "--no-auto-compile") - "Name of the 'guile' executable used for Guix REPL. + "Name of the \\='guile\\=' executable used for Guix REPL. May be either a string (the name of the executable) or a list of strings of the form: @@ -50,18 +50,18 @@ Where ARGS is a list of arguments to the guile program." (defcustom guix-dot-program (executable-find "dot") - "Name of the 'dot' executable." + "Name of the \\='dot\\=' executable." :type 'string :group 'guix-external) (defcustom guix-dot-default-arguments '("-Tpng") - "Default arguments for 'dot' program." + "Default arguments for \\='dot\\=' program." :type '(repeat string) :group 'guix-external) (defcustom guix-dot-file-name-function #'guix-png-file-name - "Function used to define a file name of a temporary 'dot' file. + "Function used to define a file name of a temporary \\='dot\\=' file. The function is called without arguments." :type '(choice (function-item guix-png-file-name) (function :tag "Other function")) @@ -82,11 +82,11 @@ If ARGS is nil, use `guix-dot-default-arguments'." (funcall guix-dot-file-name-function)) (defun guix-png-file-name () - "Return '.png' file name in the `guix-temporary-directory'." + "Return '.png' file name in the variable `guix-temporary-directory'." (guix-temporary-file-name "graph-" ".png")) (defun guix-html-file-name () - "Return '.html' file name in the `guix-temporary-directory'." + "Return '.html' file name in the variable `guix-temporary-directory'." (guix-temporary-file-name "graph-" ".html")) (provide 'guix-external) diff --git a/elisp/guix-geiser.el b/elisp/guix-geiser.el index 7b503e5..8d96035 100644 --- a/elisp/guix-geiser.el +++ b/elisp/guix-geiser.el @@ -53,7 +53,7 @@ Return a list of strings with result values of evaluation." Sorry, the evaluation is aborted because it has taken too much time. Try to increase the value of `guix-geiser-connection-timeout' variable if you have a slow machine, or please report if you -think this command takes unreasonably long time to run.")) +think this command takes unreasonably long time to run")) (if (geiser-eval--retort-error res) (error "Error in evaluating guile expression: %s" (geiser-eval--retort-output res)) @@ -76,9 +76,10 @@ If NO-DISPLAY is non-nil, do not switch to the REPL buffer." (defun guix-geiser-eval-in-repl-synchronously (str &optional repl no-history no-display) - "Evaluate STR in Geiser REPL synchronously, i.e. wait until the -REPL operation will be finished. -See `guix-geiser-eval-in-repl' for the meaning of arguments." + "Evaluate STR in Geiser REPL synchronously. +The evaluation is blocked until the REPL operation completes. +See `guix-geiser-eval-in-repl' for the meaning of arguments NO-HISTORY +and NO-DISPLAY." (let* ((repl (if repl (get-buffer repl) (guix-geiser-repl))) (running? nil) (filter (lambda (output) diff --git a/elisp/guix-graph.el b/elisp/guix-graph.el index c7c703a..ee910f4 100644 --- a/elisp/guix-graph.el +++ b/elisp/guix-graph.el @@ -52,7 +52,7 @@ See `guix-graph-backend->graph-type' for the meaning of GRAPH-TYPE." (browse-url (browse-url-file-url graph-file))))) (defun guix-make-view-graph (backend graph-maker) - "Make graph using GRAPH-MAKER procedure and view it. + "Make graph with BACKEND using GRAPH-MAKER procedure and view it. GRAPH-MAKER is called with GRAPH-TYPE and GRAPH-FILE arguments. It should return non-nil on success. See `guix-graph-backend->graph-type' for the meaning of GRAPH-TYPE." diff --git a/elisp/guix-guile.el b/elisp/guix-guile.el index d56701e..da3859b 100644 --- a/elisp/guix-guile.el +++ b/elisp/guix-guile.el @@ -105,7 +105,7 @@ PROC and ARGS should be strings." (string-match-p geiser-guile--debugger-prompt-regexp string))) (defun guix-guile-read () - "Read guile code from the current buffer and 'transform' it into elisp. + "Read guile code from the current buffer and \\='transform\\=' it into elisp. The contents of the current buffer may be modified." (goto-char (point-min)) (cond @@ -120,13 +120,13 @@ The contents of the current buffer may be modified." (read (current-buffer))))) (defun guix-guile-read-from-file (file-name) - "Read guile code from FILE-NAME and 'transform' it into elisp." + "Read guile code from FILE-NAME and \\='transform\\=' it into elisp." (with-temp-buffer (insert-file-contents file-name) (guix-guile-read))) (defun guix-guile-read-from-string (string) - "Read guile code from string and 'transform' it into elisp." + "Read guile code from STRING and \\='transform\\=' it into elisp." (with-temp-buffer (insert string) (guix-guile-read))) diff --git a/elisp/guix-help-vars.el b/elisp/guix-help-vars.el index 0dc0bc6..17f033f 100644 --- a/elisp/guix-help-vars.el +++ b/elisp/guix-help-vars.el @@ -69,8 +69,7 @@ guix subcommand, system action, importer, etc.") "Regexp used to find various lists (lint checkers, graph types).") (defvar guix-help-parse-regexp-group 1 - "Parenthesized expression of regexps used to find commands and -options.") + "Parenthesized expression of regexps to find commands and options.") ;;; Non-receivable lists @@ -85,7 +84,7 @@ options.") (defvar guix-help-refresh-subsets '("core" "non-core") - "List of supported 'refresh' subsets.") + "List of supported \\='refresh\\=' subsets.") (defvar guix-help-key-policies '("interactive" "always" "never") @@ -93,7 +92,7 @@ options.") (defvar guix-help-verify-options '("repair" "contents") - "List of supported 'verify' options") + "List of supported \\='verify\\=' options.") (defvar guix-help-elpa-archives '("gnu" "melpa" "melpa-stable") @@ -101,66 +100,66 @@ options.") (defvar guix-help-size-sort-keys '("closure" "self") - "List of supported sort keys for 'guix size' command.") + "List of supported sort keys for \\='guix size\\=' command.") (defvar guix-help-search-paths-types '("exact" "prefix" "suffix") - "List of supported search-paths types for 'guix package' command.") + "List of supported search-paths types for \\='guix package\\=' command.") (defvar guix-help-repl-types '("guile" "machine") - "List of supported types for 'guix repl' command.") + "List of supported types for \\='guix repl\\=' command.") (defvar guix-help-describe-formats '("human" "channels" "json" "recutils") - "List of supported formats for 'guix describe' command.") + "List of supported formats for \\='COMMAND describe\\=' command.") (defvar guix-help-on-error-strategies '("nothing-special" "backtrace" "debug") - "List of on-error strategies for 'guix system' command.") + "List of on-error strategies for \\='guix system\\=' command.") ;;; Default values of various options (defvar guix-default-hash-format "nix-base32" - "Default format for 'guix hash' command.") + "Default format for \\='guix hash\\=' command.") (defvar guix-default-key-policy "interactive" - "Default key download policy used by 'guix refresh' command.") + "Default key download policy used by \\='guix refresh\\=' command.") (defvar guix-default-elpa-archive "gnu" - "Default ELPA archive for 'guix import elpa' command.") + "Default ELPA archive for \\='guix import elpa\\=' command.") (defvar guix-default-size-sort-key "closure" - "Default sort key for 'guix size' command.") + "Default sort key for \\='guix size\\=' command.") (defvar guix-default-search-paths-type "exact" - "Default search-paths type for 'guix package' command.") + "Default search-paths type for \\='guix package\\=' command.") (defvar guix-default-repl-type "guile" - "Default type for 'guix repl' command.") + "Default type for \\='guix repl\\=' command.") (defvar guix-default-describe-format "human" - "Default format for 'guix describe' command.") + "Default format for \\='guix describe\\=' command.") (defvar guix-default-graph-backend "graphviz" - "Default backend for 'guix graph' command.") + "Default backend for \\='guix graph\\=' command.") (defvar guix-default-graph-node-type "package" - "Default node type for 'guix graph' command.") + "Default node type for \\='guix graph\\=' command.") (defvar guix-default-on-error-strategy "nothing-special" - "Default on-error strategy for 'guix system' command.") + "Default on-error strategy for \\='guix system\\=' command.") (provide 'guix-help-vars) diff --git a/elisp/guix-help.el b/elisp/guix-help.el index d4aa472..53ccd3a 100644 --- a/elisp/guix-help.el +++ b/elisp/guix-help.el @@ -48,7 +48,7 @@ If ARG is non-nil (interactively with prefix), show Guix info manual." :group 'guix-help) (defcustom guix-help-doc-column 40 - "Column at which 'doc' button is inserted." + "Column at which \\='doc\\=' button is inserted." :type 'integer :group 'guix-help) @@ -186,7 +186,7 @@ COMMAND-NAME is a symbol. COMMAND-BUTTON? is a boolean value; it defines whether COMMAND-NAME is buttonized or not. -INFO-BUTTON? is a boolean value; it defines whether 'info' button +INFO-BUTTON? is a boolean value; it defines whether \\='info\\=' button should be displayed or not.") (defvar guix-help-mode-map @@ -229,7 +229,7 @@ INFO-NODE is the name passed to `info' function." 'symbol symbol)) (defun guix-insert-command-button (command) - "Insert button to run 'M-x COMMAND'." + "Insert button to run \\[COMMAND]." (let ((command-string (symbol-name command))) (bui-insert-button command-string 'button @@ -255,8 +255,8 @@ INFO-NODE is the name passed to `info' function." (guix-goto-index-topic "Command Index" topic)) (defun guix-help-insert-doc-buttons (command &optional info-button?) - "Insert 'doc' button for COMMAND at `guix-help-doc-column'. -If INFO-BUTTON? is non-nil, insert 'info' button as well." + "Insert \\='doc\\=' button for COMMAND at `guix-help-doc-column'. +If INFO-BUTTON? is non-nil, insert \\='info\\=' button as well." (indent-to guix-help-doc-column 2) (guix-insert-doc-button "doc" command) (when info-button? @@ -309,7 +309,7 @@ See `guix-help-specifications' for the meaning of SPEC." (funcall content-function))) (defun guix-help-make-revert-function (content-function) - "Return a revert function for `revert-buffer-function'." + "Return a revert CONTENT-FUNCTION for `revert-buffer-function'." (lambda (_ignore-auto noconfirm) (when (or noconfirm (y-or-n-p (format "Revert %s buffer? " (buffer-name)))) diff --git a/elisp/guix-license.el b/elisp/guix-license.el index 50cbd2a..43ff1e1 100644 --- a/elisp/guix-license.el +++ b/elisp/guix-license.el @@ -29,7 +29,8 @@ (defun guix-license-file (&optional directory) "Return name of the file with license definitions. -DIRECTORY is a directory with Guix source (`guix-directory' by default)." +DIRECTORY is a directory with Guix source (variable`guix-directory' +by default)." (expand-file-name "guix/licenses.scm" (or directory (guix-directory)))) diff --git a/elisp/guix-misc.el b/elisp/guix-misc.el index f4a7aaa..4d88c5c 100644 --- a/elisp/guix-misc.el +++ b/elisp/guix-misc.el @@ -56,7 +56,7 @@ "If non-nil, do not perform the real actions, just simulate.") (defvar guix-temp-buffer-name " *Guix temp*" - "Name of a buffer used for displaying info before executing operation.") + "Name of a buffer used to display info before executing operation.") (defvar guix-operation-option-true-string "yes" "String displayed in the mode-line when operation option is t.") @@ -130,7 +130,8 @@ Ask a user with PROMPT for continuing an operation." (message ""))))) (defun guix-operation-prompt-1 (prompt keys) - "This function is internal for `guix-operation-prompt'." + "This function is internal for `guix-operation-prompt'. +See its documentation for meaning of PROMPT and KEYS." (guix-operation-set-mode-line) (let ((key (read-char-choice prompt (cons ?\C-g keys) t))) (cl-case key @@ -163,7 +164,7 @@ Ask a user with PROMPT for continuing an operation." ;;;###autoload (defun guix-apply-manifest (profile file &optional operation-buffer) "Apply manifest from FILE to PROFILE. -This function has the same meaning as 'guix package --manifest' command. +This function has the same meaning as \\='guix package --manifest\\=' command. See Info node `(guix) Invoking guix package' for details. Interactively, use the current profile and prompt for manifest @@ -189,12 +190,13 @@ FILE. With a prefix argument, also prompt for PROFILE." operation-buffer))) (defcustom guix-search-paths-buffer-name "*Guix Search Paths*" - "Name of a buffer for displaying 'search paths' environment variables." + "Name of a buffer to display \\='search paths\\=' environment variables." :type 'string :group 'guix) (defun guix-show-search-paths (profiles &optional type) - "Display 'search paths' environment variables for PROFILES." + "Display \\='search paths\\=' environment variables for PROFILES. +TYPE defaults to \\='exact\\='." (let* ((profiles (mapcar #'guix-package-profile profiles)) (type (or type "exact")) (type-symbol (intern type)) @@ -230,7 +232,7 @@ PROFILE can be a named profile (like '~/.guix-profile', store, like GUIX_ENVIRONMENT variable (see Info node `(guix) Invoking guix environment' for details). -If PROFILE is nil, use `guix-current-profile'." +If PROFILE is nil, use variable `guix-current-profile'." (interactive (list (guix-read-profile))) (let ((specs (guix-eval-read (guix-make-guile-expression @@ -283,18 +285,18 @@ The function is called with a single argument - a command line string." (eshell-send-input)) (defun guix-run-command-in-shell (args) - "Execute 'guix ARGS ...' command in a shell buffer." + "Execute \\='guix ARGS ...\\=' command in a shell buffer." (funcall guix-run-in-shell-function (guix-command-string args))) (defun guix-run-command-in-repl (args) - "Execute 'guix ARGS ...' command in Guix REPL." + "Execute \\='guix ARGS ...\\=' command in Guix REPL." (guix-eval-in-repl (apply #'guix-make-guile-expression 'guix-command args))) (defun guix-command-output (args) - "Return string with 'guix ARGS ...' output." + "Return string with \\='guix ARGS ...\\=' output." (cl-multiple-value-bind (output error) (guix-eval (apply #'guix-make-guile-expression 'guix-command-output args)) @@ -303,7 +305,7 @@ The function is called with a single argument - a command line string." (read output))) (defun guix-help-string (&optional commands) - "Return string with 'guix COMMANDS ... --help' output." + "Return string with \\='guix COMMANDS ... --help\\=' output." (guix-eval-read (apply #'guix-make-guile-expression 'help-string commands))) @@ -358,7 +360,7 @@ If VERBOSE is non-nil (with prefix argument), produce verbose output." ;;;###autoload (defun guix-report-bug (subject) "Report GNU Guix bug. -Prompt for bug subject and open a mail buffer." +Prompt for bug SUBJECT and open a mail buffer." (interactive "sBug Subject: ") (compose-mail guix-bug-address subject)) diff --git a/elisp/guix-package.el b/elisp/guix-package.el index 414e465..f4d11df 100644 --- a/elisp/guix-package.el +++ b/elisp/guix-package.el @@ -73,7 +73,7 @@ 'package-store-path package-id))) (defvar guix-after-source-download-hook nil - "Hook run after successful performing a 'source-download' operation.") + "Hook run after successful performing a \\='source-download\\=' operation.") (defun guix-package-source-build-derivation (package-id &optional prompt) "Build source derivation of a package PACKAGE-ID. diff --git a/elisp/guix-pcomplete.el b/elisp/guix-pcomplete.el index a393a0f..1ea65e1 100644 --- a/elisp/guix-pcomplete.el +++ b/elisp/guix-pcomplete.el @@ -38,7 +38,7 @@ (defun guix-pcomplete-search-in-help (regexp &optional group &rest args) - "Search for REGEXP in 'guix ARGS... --help' output. + "Search for REGEXP in \\='guix ARGS... --help\\=' output. Return a list of strings matching REGEXP. GROUP specifies a parenthesized expression used in REGEXP." (with-temp-buffer @@ -53,9 +53,10 @@ GROUP specifies a parenthesized expression used in REGEXP." "Define function NAME to receive guix options and commands. The defined function takes rest COMMANDS argument. This function -will search for REGEXP in 'guix COMMANDS... --help' output (or -'guix --help' if COMMANDS is nil) using -`guix-pcomplete-search-in-help' and will return its result. +will search for REGEXP in \\='guix COMMANDS... --help\\=' output (or +\\='guix --help\\=' if COMMANDS is nil) using +`guix-pcomplete-search-in-help' and will return its result. The +function is defined with DOCSTRING. If FILTER is specified, it should be a function. The result is passed to this FILTER as argument and the result value of this @@ -72,15 +73,15 @@ function call is returned." (guix-pcomplete-define-options-finder guix-pcomplete-commands "If COMMANDS is nil, return a list of available guix commands. If COMMANDS is non-nil (it should be a list of strings), return -available subcommands, actions, etc. for 'guix COMMANDS'." +available subcommands, actions, etc. for \\='guix COMMANDS\\='." guix-help-parse-command-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-long-options - "Return a list of available long options for 'guix COMMANDS'." + "Return a list of available long options for \\='guix COMMANDS\\='." guix-help-parse-long-option-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-short-options - "Return a string with available short options for 'guix COMMANDS'." + "Return a string with available short options for \\='guix COMMANDS\\='." guix-help-parse-short-option-regexp (lambda (list) (guix-concat-strings list ""))) diff --git a/elisp/guix-prettify.el b/elisp/guix-prettify.el index a253879..9268959 100644 --- a/elisp/guix-prettify.el +++ b/elisp/guix-prettify.el @@ -25,7 +25,7 @@ ;; replaced with '/gnu/store/…-foo-0.1' in the current buffer. There is ;; also `global-guix-prettify-mode' for global prettifying. -;; To install, add the following to your emacs init file: +;; To install, add the following to your Emacs init file: ;; ;; (add-to-list 'load-path "/path/to/dir-with-guix-prettify") ;; (autoload 'guix-prettify-mode "guix-prettify" nil t) @@ -166,7 +166,7 @@ file names (see `guix-prettify-regexp') are displayed as This mode can be enabled programmatically using hooks: - (add-hook 'shell-mode-hook 'guix-prettify-mode) + (add-hook \\='shell-mode-hook \\='guix-prettify-mode) It is possible to enable the mode in any buffer, however not any buffer's highlighting may survive after adding new elements to diff --git a/elisp/guix-profiles.el b/elisp/guix-profiles.el index a176815..7ac46a2 100644 --- a/elisp/guix-profiles.el +++ b/elisp/guix-profiles.el @@ -57,7 +57,7 @@ (expand-file-name "guix/current" (or (getenv "XDG_CONFIG_HOME") (expand-file-name "~/.config"))) - "Profile populated by 'guix pull' command.") + "Profile populated by \\='guix pull\\=' command.") (defvar guix-default-user-profile (or (file-symlink-p guix-user-profile) @@ -71,7 +71,7 @@ also contain profile generations.") (or (file-symlink-p guix-pulled-profile) (expand-file-name "current-guix" (guix-user-profiles-directory))) - "Default profile populated by 'guix pull' command. + "Default profile populated by \\='guix pull\\=' command. Unlike `guix-pulled-profile', directory with this profile should also contain profile generations.") @@ -96,7 +96,7 @@ It is used by various commands as the default working profile.") (rx-to-string `(or ,guix-pulled-profile ,guix-default-pulled-profile) t) - "Regexp matching 'guix pull'-ed profile.") + "Regexp matching \\='guix pull\\='-ed profile.") (defvar guix-generation-file-name-regexp (rx (group (one-or-more any)) @@ -105,7 +105,7 @@ It is used by various commands as the default working profile.") The first parenthesized group should match profile file name.") (defun guix-current-profile? (profile) - "Return non-nil, if PROFILE is `guix-current-profile'." + "Return non-nil, if PROFILE is the variable `guix-current-profile'." (string= (guix-profile profile) (guix-profile guix-current-profile))) @@ -118,7 +118,7 @@ The first parenthesized group should match profile file name.") (string-match-p guix-home-profile-regexp profile)) (defun guix-pulled-profile? (profile) - "Return non-nil, if PROFILE is populated by 'guix pull'." + "Return non-nil, if PROFILE is populated by \\='guix pull\\='." (string-match-p guix-pulled-profile-regexp profile)) (defun guix-assert-non-system-profile (profile) @@ -126,7 +126,7 @@ The first parenthesized group should match profile file name.") (when (guix-system-profile? profile) (user-error "\ Packages cannot be installed or removed to/from profile '%s'. -Use 'guix system reconfigure' shell command to modify a system profile." +Use 'guix system reconfigure' shell command to modify a system profile" profile))) (defun guix-generation-file (profile generation) @@ -155,15 +155,15 @@ and `guix-default-user-profile' instead of `guix-user-profile'." (defun guix-generation-profile (profile &optional generation) "Return file name of PROFILE or its GENERATION. -The returned file name is the one that have generations in the -same parent directory. + +The returned file name is the one that have generations in the same +parent directory. If PROFILE matches `guix-system-profile-regexp' or -`guix-home-profile-regexp', then it is considered to be a system -or home profile. Unlike usual profiles, for a system/home -profile, packages are placed in 'profile' sub-directory, so the -returned file name does not contain this potential trailing -'/profile'." +`guix-home-profile-regexp', then it is considered to be a system or +home profile. Unlike usual profiles, for a system/home profile, +packages are placed in \\='profile\\=' sub-directory, so the returned +file name does not contain this potential trailing \\='/profile\\='." (let* ((profile (guix-profile profile)) (profile (if (and (or (guix-system-profile? profile) (guix-home-profile? profile)) @@ -234,7 +234,7 @@ is not a guix profile)." (defun guix-read-profile (&optional default) "Prompt for profile and return it. Use DEFAULT as a start directory. If it is nil, use -`guix-current-profile'." +the variable `guix-current-profile'." (guix-read-file-name "Profile: " (file-name-directory (or default guix-current-profile)))) @@ -252,13 +252,13 @@ See `guix-read-profile' for the meaning of DEFAULT, and (guix-generation-profile (guix-read-profile default))) (defun guix-read-manifest-file-name (&optional prompt) - "Prompt for a manifest file name and return it." + "PROMPT for a manifest file name and return it." (guix-read-file-name (or prompt "File with manifest: "))) ;;;###autoload (defun guix-set-current-profile (file-name) - "Set `guix-current-profile' to FILE-NAME. + "Set the variable `guix-current-profile' to FILE-NAME. Interactively, prompt for FILE-NAME. With prefix, use `guix-user-profile'." (interactive diff --git a/elisp/guix-read.el b/elisp/guix-read.el index e903a43..e88fb35 100644 --- a/elisp/guix-read.el +++ b/elisp/guix-read.el @@ -129,7 +129,9 @@ initial-contents." (defun guix-read-package-name-at-point (&optional prompt initial-contents) "Read symbol at point and if it is a package name, return it. If it is not a package name or if current command has a prefix -argument, read the name from minibuffer." +argument, read the name from minibuffer. +See `guix-read-package-name-default' for the meaning of options PROMPT +and INITIAL-CONTENTS." (if current-prefix-arg (guix-read-package-name-default prompt initial-contents) (let* ((at-point (thing-at-point 'symbol)) @@ -142,7 +144,9 @@ argument, read the name from minibuffer." initial-contents))))) (defun guix-read-package-name (&optional prompt initial-contents) - "Read a package name using `guix-read-package-name-function'." + "Read a package name using `guix-read-package-name-function'. +See the value of `guix-read-package-name-function' for the meaning of +options PROMPT and INITIAL-CONTENTS." (funcall guix-read-package-name-function prompt initial-contents)) diff --git a/elisp/guix-repl.el b/elisp/guix-repl.el index bf1dc82..846db60 100644 --- a/elisp/guix-repl.el +++ b/elisp/guix-repl.el @@ -59,13 +59,12 @@ (require 'guix-utils) (defvar guix-load-path nil - "Directory or a list of directories prepended to Guile's -`%load-path' when Guix REPL is started. + "Directory or a list of directories prepended to Guile's `%load-path'. -These directories take precedence over any other -directory (including Guile modules of Emacs-Guix and Guix -itself). So this variable may be useful if you prefer to use -guix from a git checkout: +These directories are prepended when Guix REPL is started. They take +precedence over any other directory (including Guile modules of +Emacs-Guix and Guix itself). So this variable may be useful if you +prefer to use guix from a git checkout: (setq guix-load-path \"/path/to/guix-from-git\") @@ -73,10 +72,10 @@ These directories are also prepended to `%load-compiled-path' unless `guix-load-compiled-path' is specified.") (defvar guix-load-compiled-path nil - "List of directories prepended to Guile's `%load-compiled-path' -when Guix REPL is started. + "List of directories prepended to Guile's `%load-compiled-path'. -See `guix-load-path' for details.") +These directories are prepended when Guix REPL is started. See +`guix-load-path' for details.") ;;; REPL @@ -108,9 +107,9 @@ If you have a slow system, try to increase this time." 'guix-repl-use-server "0.2") (defcustom guix-repl-use-server t - "If non-nil, start guile with '--listen' argument. + "If non-nil, start guile with \\='--listen\\=' argument. This allows to receive information about packages using an -additional (so called 'internal') REPL while some packages are +additional (so called \\='internal\\=') REPL while some packages are being installed/removed in the main Guix REPL." :type 'boolean :group 'guix-repl) @@ -181,8 +180,8 @@ executed after the current operation succeeds. See `guix-eval-in-repl' for details.") (defvar guix-repl-max-returned-list-size 10 - "Maximal length of a list that is passed from the Guile side to -the Emacs side directly through Geiser. + "Maximal length of a list passed from Guile to Emacs side. +This list is passed directly through Geiser. This is a performance variable: passing big chunks of data through Geiser may be slow, so to improve the speed, the Guile @@ -191,7 +190,7 @@ file, and then this file is read directly by Emacs. So if a list is lesser than the value of this variable, it is passed through Geiser. If it is bigger, it is written to a -file (in `guix-temporary-directory'). +file (variable `guix-temporary-directory'). Set this variable to nil, if you want to pass a list of any size through Geiser (not recommended). @@ -336,7 +335,7 @@ this address (it should be defined by geiser-repl-query-on-kill-p))))) (defun guix-repl-output-filter (str) - "Filter function suitable for `comint-output-filter-functions'. + "Filter STR for `comint-output-filter-functions'. This is a replacement for `geiser-repl--output-filter'." (cond ((string-match-p geiser-guile--prompt-regexp str) @@ -431,7 +430,7 @@ automatically when needed. However, you can still set it if you really want; your value will not be overwritten.") (defun guix-directory () - "Set if needed and return `guix-directory'." + "Set if needed and return the variable `guix-directory'." (or guix-directory (let* ((guix.scm (guix-eval-read "(%search-load-path \"guix\")")) (dir (and guix.scm @@ -439,7 +438,7 @@ really want; your value will not be overwritten.") (setq guix-directory dir)))) (defun guix-read-directory () - "Return `guix-directory' or prompt for it. + "Return the variable `guix-directory' or prompt for it. This function is intended for using in `interactive' forms." (if current-prefix-arg (read-directory-name "Directory with Guix modules: " @@ -450,7 +449,7 @@ This function is intended for using in `interactive' forms." ;; compatibility (in the past "guix pull" populated ;; "~/.config/guix/latest"). (defun guix-latest-directory () - "Return 'guix pull'-ed directory or nil if it does not exist." + "Return \\='guix pull\\='-ed directory or nil if it does not exist." (let* ((config-dir (or (getenv "XDG_CONFIG_HOME") (expand-file-name "~/.config"))) (latest-dir (expand-file-name "guix/latest" config-dir))) @@ -511,7 +510,7 @@ If MODES is nil, use modes for Guix package management." (defun guix-operation-buffers (&optional modes) "Return a list of all buffers with major modes derived from MODES. -If MODES is nil, return list of all Guix 'list' and 'info' buffers." +If MODES is nil, return list of all Guix \\='list\\=' and \\='info\\=' buffers." (--filter (guix-operation-buffer? it modes) (buffer-list))) diff --git a/elisp/guix-ui-generation.el b/elisp/guix-ui-generation.el index 6cff2fc..7d10d90 100644 --- a/elisp/guix-ui-generation.el +++ b/elisp/guix-ui-generation.el @@ -1,4 +1,4 @@ -;;; guix-ui-generation.el --- Interface for displaying generations -*- lexical-binding: t -*- +;;; guix-ui-generation.el --- Interface to display generations -*- lexical-binding: t -*- ;; Copyright © 2014–2018 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides an interface for displaying profile generations in +;; This file provides an interface to display profile generations in ;; 'list' and 'info' buffers, and commands for working with them. ;;; Code: @@ -42,9 +42,9 @@ (defun guix-generation-get-entries (proc profile search-type search-values params) - "Return 'generation' or 'system-generation' entries. -PROC is the name of a Scheme procedure (either 'generation-sexps' -or 'system-generation-sexps')." + "Return \\='generation\\=' or \\='system-generation\\=' entries. +PROC is the name of a Scheme procedure (either \\='generation-sexps\\=' +or \\='system-generation-sexps\\=')." (apply #'guix-modify-objects (guix-eval-read (guix-make-guile-expression proc profile search-type search-values params)) @@ -63,10 +63,8 @@ or 'system-generation-sexps')." (defun guix-generation-get-display (profile search-type &rest search-values) "Search for generations and show results. -If PROFILE is nil, use `guix-current-profile'. - -See `guix-ui-get-entries' for the meaning of SEARCH-TYPE and -SEARCH-VALUES." +If PROFILE is nil, use the variable `guix-current-profile'. +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (apply #'bui-list-get-display-entries 'guix-generation (or profile guix-current-profile) @@ -91,7 +89,9 @@ Each element from GENERATIONS is a generation number." (defun guix-switch-to-generation (profile generation &optional operation-buffer) - "Switch PROFILE to GENERATION." + "Switch PROFILE to GENERATION. + +Argument OPERATION-BUFFER is passed to `guix-eval-in-repl'." (when (or (not guix-operation-confirm) (y-or-n-p (format "Switch profile '%s' to generation %d? " profile generation))) @@ -101,8 +101,9 @@ Each element from GENERATIONS is a generation number." operation-buffer))) (defun guix-generation-current-package-profile (&optional generation) - "Return a directory where packages are installed for the -current profile's GENERATION." + "Return a directory where packages are installed. + +If GENERATION is provided, do that for the current profile's GENERATION." (guix-package-profile (guix-ui-current-profile) generation)) @@ -146,7 +147,9 @@ current profile's GENERATION." (defun guix-generation-info-get-entries (profile search-type &rest search-values) - "Return 'generation' entries for displaying them in 'info' buffer." + "Return PROFILE \\='generation\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-generation-get-entries 'generation-sexps profile search-type search-values @@ -182,7 +185,7 @@ current profile's GENERATION." (bui-newline))) (defun guix-generation-info-insert-previous (prev-number entry) - "Insert PREV-NUMBER and button to compare generations." + "Insert PREV-NUMBER and button in ENTRY to compare generations." (bui-format-insert prev-number) (bui-insert-indent) (when (> prev-number 0) @@ -201,7 +204,7 @@ current profile's GENERATION." 'number number)))) (defun guix-generation-info-insert-packages (number entry) - "Insert the NUMBER of packages and button to display packages." + "Insert the NUMBER of packages and button in ENTRY to display packages." (bui-format-insert number) (bui-insert-indent) (let ((number (bui-entry-non-void-value entry 'number))) @@ -216,7 +219,9 @@ current profile's GENERATION." 'number number))) (defun guix-generation-info-insert-current (val entry) - "Insert boolean value VAL showing whether this generation is current." + "Insert in ENTRY the boolean value VAL. + +This value shows whether this generation is current." (if val (bui-info-insert-value-format "Yes" 'guix-generation-info-current) (bui-info-insert-value-format "No" 'guix-generation-info-not-current) @@ -302,7 +307,9 @@ If nothing is marked, return a list with generation at point." (defun guix-generation-list-get-entries (profile search-type &rest search-values) - "Return 'generation' entries for displaying them in 'list' buffer." + "Return \\='generation\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information for PROFILE." (guix-generation-get-entries 'generation-sexps profile search-type search-values @@ -333,8 +340,10 @@ VAL is a boolean value." 'installed)) (defun guix-generation-list-show-search-paths (&optional type) - "Display 'search paths' environment variables for the marked generations. -If nothing is marked, use generation on the current line." + "Display \\='search paths\\=' environment variables for the marked generations. + +If nothing is marked, use generation on the current line. +Optionally get the search-path TYPE interactively." (interactive (list (guix-read-search-paths-type))) (guix-show-search-paths (guix-generation-list-marked-file-names) @@ -487,20 +496,22 @@ and its store file name." (string< (car a) (car b))))) (defun guix-generation-packages-buffer-name-default (profile generation) - "Return name of a buffer for displaying GENERATION's package outputs. + "Return name of a buffer to display GENERATION's package outputs. Use base name of PROFILE file name." (let ((profile-name (file-name-base (guix-file-name profile)))) (format "*Guix %s: generation %s*" profile-name generation))) (defun guix-generation-packages-buffer-name-long (profile generation) - "Return name of a buffer for displaying GENERATION's package outputs. + "Return name of a buffer to display GENERATION's package outputs. Use the full PROFILE file name." (format "*Guix generation %s (%s)*" generation profile)) (defun guix-generation-packages-buffer-name (profile generation) - "Return name of a buffer for displaying GENERATION's package outputs." + "Return name of a buffer to display GENERATION's package outputs. + +This is done for PROFILE." (funcall guix-generation-packages-buffer-name-function profile generation)) @@ -554,7 +565,7 @@ GENERATION is a generation number of the current profile." ;;;###autoload (defun guix-generations (&optional profile) "Display information about all generations. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use the variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-ui-read-generation-profile))) (let ((profile (guix-profile profile))) @@ -565,7 +576,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-last-generations (number &optional profile) "Display information about last NUMBER generations. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use the variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (read-number "The number of last generations: ") @@ -579,7 +590,7 @@ Interactively with prefix, prompt for PROFILE." (defun guix-generations-by-time (from to &optional profile) "Display information about generations created between FROM and TO. FROM and TO should be time values. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use the variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-read-date "Find generations (from): ") diff --git a/elisp/guix-ui-license.el b/elisp/guix-ui-license.el index 9b50034..93cfcdb 100644 --- a/elisp/guix-ui-license.el +++ b/elisp/guix-ui-license.el @@ -1,4 +1,4 @@ -;;; guix-ui-license.el --- Interface for displaying licenses -*- lexical-binding: t -*- +;;; guix-ui-license.el --- Interface to display licenses -*- lexical-binding: t -*- ;; Copyright © 2016–2017 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides 'list'/'info' interface for displaying licenses of +;; This file provides 'list'/'info' interface to display licenses of ;; Guix packages. ;;; Code: @@ -38,14 +38,18 @@ :titles '((url . "URL"))) (defun guix-license-get-entries (search-type &rest args) - "Receive 'license' entries. -SEARCH-TYPE may be one of the following symbols: `all', `id', `name'." + "Receive \\='license\\=' entries. + +SEARCH-TYPE may be one of the following symbols: \\='all\\=',\\='id\\=', +\\='name\\='. ARGS are passed to `guix-make-guile-expression'." (guix-eval-read (apply #'guix-make-guile-expression 'license-sexps search-type args))) (defun guix-license-get-display (search-type &rest args) - "Search for licenses and show results." + "Search for licenses and show results. + +SEARCH-TYPE and ARGS are passed to `bui-list-get-display-entries'." (apply #'bui-list-get-display-entries 'guix-license search-type args)) @@ -87,7 +91,7 @@ SEARCH-TYPE may be one of the following symbols: `all', `id', `name'." (bui-newline)) (defun guix-license-insert-comment (entry) - "Insert 'comment' of a license ENTRY." + "Insert \\='comment\\=' of a license ENTRY." (let ((comment (bui-entry-value entry 'comment))) (if (and comment (string-match-p "^http" comment)) @@ -97,7 +101,7 @@ SEARCH-TYPE may be one of the following symbols: `all', `id', `name'." (bui-newline)) (defun guix-license-insert-file (entry) - "Insert button to open license definition." + "Insert button to open license definition of ENTRY." (let ((license (bui-entry-value entry 'name))) (bui-insert-button (guix-license-file) 'bui-file diff --git a/elisp/guix-ui-lint-checker.el b/elisp/guix-ui-lint-checker.el index 2878efb..293374c 100644 --- a/elisp/guix-ui-lint-checker.el +++ b/elisp/guix-ui-lint-checker.el @@ -1,4 +1,4 @@ -;;; guix-ui-lint-checker.el --- Interface for displaying package lint checkers -*- lexical-binding: t -*- +;;; guix-ui-lint-checker.el --- Interface to display package lint checkers -*- lexical-binding: t -*- ;; Copyright © 2019 Alex Kost <alezost@HIDDEN> @@ -39,20 +39,23 @@ :message-function 'guix-lint-checker-message) (defun guix-lint-checker-get-entries (search-type &rest args) - "Receive 'lint-checker' entries. -SEARCH-TYPE may be one of the following symbols: `all', `local', -`id', `name'." + "Receive \\='lint-checker\\=' entries. + +SEARCH-TYPE may be one of the following symbols: \\='all\\=', \\='local\\=', +\\='id\\=', \\='name\\='. ARGS are passed to `guix-make-guile-expression'." (guix-eval-read (apply #'guix-make-guile-expression 'lint-checker-sexps search-type args))) (defun guix-lint-checker-get-display (search-type &rest args) - "Search for lint checkers and show results." + "Search for lint checkers and show results. + +SEARCH-TYPE and ARGS are passed to `bui-list-get-display-entries'." (apply #'bui-list-get-display-entries 'guix-lint-checker search-type args)) (defun guix-lint-checker-message (entries search-type &rest args) - "Display a message after showing lint-checker ENTRIES." + "Display a message after showing lint-checker ENTRIES for SEARCH-TYPE." (when (null entries) (cond ((memq search-type '(all local)) diff --git a/elisp/guix-ui-messages.el b/elisp/guix-ui-messages.el index 159c658..e44d290 100644 --- a/elisp/guix-ui-messages.el +++ b/elisp/guix-ui-messages.el @@ -154,11 +154,11 @@ guix-message-generations-by-time)))) (defun guix-message-string-name (name) - "Return a quoted name string." + "Return a quoted NAME string." (concat "'" name "'")) (defun guix-message-string-entry-type (entry-type &optional plural) - "Return a string denoting an ENTRY-TYPE." + "Return a string denoting an ENTRY-TYPE, optionally using PLURAL." (cl-ecase entry-type (package (if plural "packages" "package")) @@ -181,8 +181,10 @@ (guix-message-string-entry-type entry-type 'plural))))) -(defun guix-message-packages-by-id (entries entry-type ids) - "Display a message for packages or outputs searched by IDS." +(defun guix-message-packages-by-id (entries _entry-type ids) + "Display a message for packages or outputs searched by IDS. + +ENTRIES are packages or outputs." (let ((count (length entries))) (if (= 0 count) (message (substitute-command-keys "\ @@ -199,7 +201,9 @@ Try \"\\[guix-packages-by-name-regexp]\" to find this package.") (message "")))) (defun guix-message-packages-by-name (entries entry-type names) - "Display a message for packages or outputs searched by NAMES." + "Display a message for ENTRIES searched by NAMES. + +ENTRIES are packages or outputs of ENTRY-TYPE." (let* ((count (length entries)) (str-beg (guix-message-string-entries count entry-type)) (str-end (if (cdr names) @@ -249,7 +253,7 @@ DEPEND-TYPE should a symbol `direct' or `all'." str-beg profile time-beg time-end))) (defun guix-message-outputs-by-diff (_ entries profiles) - "Display a message for outputs searched by PROFILES difference." + "Display a message for ENTRIES outputs searched by PROFILES difference." (let* ((count (length entries)) (str-beg (guix-message-string-entries count 'output)) (profile1 (car profiles)) diff --git a/elisp/guix-ui-package-location.el b/elisp/guix-ui-package-location.el index 568f972..ec82689 100644 --- a/elisp/guix-ui-package-location.el +++ b/elisp/guix-ui-package-location.el @@ -1,4 +1,4 @@ -;;; guix-ui-package-location.el --- Interface for displaying package locations -*- lexical-binding: t -*- +;;; guix-ui-package-location.el --- Interface to display package locations -*- lexical-binding: t -*- ;; Copyright © 2016–2018 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides a 'list' interface for displaying locations of Guix +;; This file provides a 'list' interface to display locations of Guix ;; packages. ;;; Code: @@ -33,7 +33,7 @@ (guix-define-groups package-location) (defun guix-package-location-get-entries () - "Receive 'package location' entries." + "Receive \\='package location\\=' entries." (guix-eval-read "(package-location-sexps)")) diff --git a/elisp/guix-ui-package.el b/elisp/guix-ui-package.el index 8dad304..f861820 100644 --- a/elisp/guix-ui-package.el +++ b/elisp/guix-ui-package.el @@ -1,4 +1,4 @@ -;;; guix-ui-package.el --- Interface for displaying packages -*- lexical-binding: t -*- +;;; guix-ui-package.el --- Interface to display packages -*- lexical-binding: t -*- ;; Copyright © 2014–2019, 2021 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides an interface for displaying packages and outputs +;; This file provides an interface to display packages and outputs ;; in 'list' and 'info' buffers, and commands for working with them. ;;; Code: @@ -44,23 +44,23 @@ (guix-ui-define-entry-type output) (defcustom guix-package-list-type 'output - "Define how to display packages in 'list' buffer. -Should be a symbol `package' or `output' (if `output', display each -output on a separate line; if `package', display each package on + "Define how to display packages in \\='list\\=' buffer. +Should be a symbol \\='package\\=' or \\='output\\=' (if \\='output\\=', display + each output on a separate line; if \\='package\\=', display each package on a separate line)." :type '(choice (const :tag "List of packages" package) (const :tag "List of outputs" output)) :group 'guix-package) (defcustom guix-package-use-name-at-point t - "If non-nil, \\[guix-packages-by-name] uses symbol at point as default + "If non-nil, \\[guix-packages-by-name] uses symbol at point as default. if it is a package name. If nil, then no default name is used." :type 'boolean :group 'guix-package) (defun guix-package-list-type () - "Return BUI list entry-type by `guix-package-list-type' variable." + "Return BUI list entry-type by variable `guix-package-list-type'." (guix-make-symbol guix-package-list-type)) ;; To avoid compilation warning: this variable is actually defined later @@ -70,7 +70,7 @@ If nil, then no default name is used." (defun guix-package-get-display (profile search-type &rest search-values) "Search for packages/outputs and show results. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use the variable `guix-current-profile'. See `guix-ui-get-entries' for the meaning of SEARCH-TYPE and SEARCH-VALUES. @@ -136,7 +136,7 @@ OUTPUTS, prompt for it." (car outputs))) (defun guix-read-package-entry-and-output (&optional entries) - "Return a list with package entry and output. + "Return a list with package ENTRIES and outputs. See `guix-read-package-entry-by-name' and `guix-read-package-output' for details." (let* ((entry (guix-read-package-entry-by-name entries)) @@ -183,9 +183,9 @@ PACKAGE-SPEC should have the following form: (ID [OUTPUT] ...)." (cl-defun guix-continue-package-operation-p (profile &key install upgrade remove) - "Return non-nil if a package operation should be continued. + "Return non-nil if a package operation should be continued in PROFILE. Ask a user if needed (see `guix-operation-confirm'). -INSTALL, UPGRADE, REMOVE are 'package action specifications'. +INSTALL, UPGRADE, REMOVE are \\='package action specifications\\='. See `guix-process-package-actions' for details." (or (null guix-operation-confirm) (let* ((entries (guix-ui-get-entries @@ -398,10 +398,10 @@ a newer version (probably it's time to update)." (((class color) (min-colors 8)) :foreground "blue")) "Face used for packages from the future. -'From the future' means there is a Guix package with this name +\\='From the future\\=' means there is a Guix package with this name but with an older version, i.e. the installed package is newer than available from Guix! This is rather unusual, it may happen, -for example, if you installed a package after 'guix pull' (see +for example, if you installed a package after \\='guix pull\\=' (see Info node `(guix) Invoking guix pull') and then you removed the pulled directory, so Guix searches for packages in its original directory with the old package recipes." @@ -509,7 +509,9 @@ formatted with this string, an action button is inserted.") (defun guix-package-info-get-entries (profile search-type &rest search-values) - "Return 'package' entries for displaying them in 'info' buffer." + "Return PROFILE \\='package\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-eval-read (guix-make-guile-expression 'package/output-sexps @@ -544,7 +546,7 @@ formatted with this string, an action button is inserted.") 'location location-file))))) (defun guix-package-info-insert-systems (systems entry) - "Insert supported package SYSTEMS at point." + "Insert supported package SYSTEMS for ENTRY at point." (if (require 'build-farm-build nil t) (bui-info-insert-value-format systems 'build-farm-system @@ -578,7 +580,7 @@ Face name is `guix-package-info-TYPE-inputs'." (guix-package-info-define-insert-inputs propagated) (defun guix-package-info-insert-name-buttons (values &optional button) - "Insert package name buttons at point. + "Insert package name BUTTON at point. Each element from VALUES should either be a specification string or (id spec) list." (bui-insert-non-nil values @@ -603,7 +605,8 @@ or (id spec) list." (concat "\n" bui-info-multiline-prefix))))) (defun guix-package-info-insert-name-button (value &optional button) - "Insert package name button at point." + "Insert package name BUTTON at point. +VALUE should either be a specification string or (id spec) list." (guix-package-info-insert-name-buttons (list value) button)) (defun guix-package-info-insert-outputs (outputs entry) @@ -634,7 +637,7 @@ or (id spec) list." (pull (guix-package-info-insert-pull-text name entry)))))) (defun guix-package-info-insert-unknown-text (name) - "Insert a message about unknown package at point." + "Insert a message about unknown package NAME at point." (insert "This package is ") (bui-format-insert "unknown" 'guix-package-info-unknown) (insert ", i.e. there are no packages with\n" @@ -658,7 +661,7 @@ is newer than the available package recipe for ") (insert ".")) (defun guix-package-info-insert-pull-text (name entry) - "Insert a message that NAME package was 'guix pull'-ed." + "Insert a message that NAME package ENTRY was \\='guix pull\\='-ed." (insert "This ") (bui-insert-button name 'guix-package-name) (insert " package was installed by 'guix pull' command") @@ -799,7 +802,7 @@ PACKAGE-ID is an ID of the package which store path to show." (bui-newline)))) (defun guix-package-info-insert-build-button (id full-name) - "Insert button to build a package defined by ID." + "Insert button to build package FULL-NAME defined by ID." (bui-insert-action-button "Build" (lambda (btn) @@ -911,7 +914,7 @@ SOURCE is a list of URLs." (bui-info-insert-value-indent source 'guix-package-source)))) (defun guix-package-info-redisplay-after-download () - "Redisplay an 'info' buffer after downloading the package source. + "Redisplay an `info' buffer after downloading the package source. This function is used to hide a \"Download\" button if needed." (when (buffer-live-p guix-package-info-download-buffer) (with-current-buffer guix-package-info-download-buffer @@ -1097,7 +1100,7 @@ See `guix-package-info-hidden' face for details." :group 'guix-package-list-faces) (defcustom guix-package-list-generation-marking-enabled nil - "If non-nil, allow putting marks in a list with 'generation packages'. + "If non-nil, allow putting marks in a list with \\='generation packages\\='. By default this is disabled, because it may be confusing. For example, a package is installed in some generation, so a user can @@ -1131,7 +1134,9 @@ likely)." (defun guix-package-list-get-entries (profile search-type &rest search-values) - "Return 'package' entries for displaying them in 'list' buffer." + "Return PROFILE \\='package\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-eval-read (guix-make-guile-expression 'package/output-sexps @@ -1395,7 +1400,9 @@ Interactively, with prefix argument, prompt for NUMBER and ARGS." (defun guix-output-list-get-entries (profile search-type &rest search-values) - "Return 'output' entries for displaying them in 'list' buffer." + "Return PROFILE \\='output\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-eval-read (guix-make-guile-expression 'package/output-sexps @@ -1516,7 +1523,7 @@ See `guix-package-lint' for details." NAME is a string with name specification. It may optionally contain a version number. Examples: \"guile\", \"guile@HIDDEN\". -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (let (default-pkg) @@ -1536,7 +1543,7 @@ Interactively with prefix, prompt for PROFILE." PARAMS are package parameters that should be searched. If PARAMS are not specified, use `guix-package-search-params'. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (read-regexp "Regexp: " nil 'guix-package-search-history) @@ -1551,7 +1558,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-packages-by-name-regexp (regexp &optional profile) "Search for Guix packages matching REGEXP in a package name. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (read-string "Package name by regexp: " @@ -1567,7 +1574,7 @@ Interactively with prefix, prompt for PROFILE." (defun guix-packages-by-license (license &optional profile) "Display Guix packages with LICENSE. LICENSE is a license name string. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-read-license-name) @@ -1577,7 +1584,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-packages-by-location (location &optional profile) "Display Guix packages placed in LOCATION file. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-read-package-location-file) @@ -1587,7 +1594,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-package-from-file (file &optional profile) "Display Guix package that the code from FILE evaluates to. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively prompt for FILE (see also `guix-support-dired'). With prefix argument, prompt for PROFILE as well." (interactive @@ -1602,7 +1609,7 @@ With prefix argument, prompt for PROFILE as well." (defun guix-packages-from-system-config-file (file &optional profile) "Display Guix packages from the operating system configuration FILE. -Make sure FILE has a proper 'operating-system' declaration. You +Make sure FILE has a proper \\='operating-system\\=' declaration. You may check it, for example, by running the following shell command: guix system build --dry-run FILE @@ -1616,9 +1623,9 @@ Interactively, prompt for FILE (see also `guix-support-dired'). With prefix argument, prompt for PROFILE as well. Note: This command displays only those packages that are placed -in 'packages' field of the 'operating-system' declaration. An -installed system also contains packages installed by -services (like 'guix' or 'shepherd'). To see all the packages +in \\='packages\\=' field of the \\='operating-system\\=' declaration. +An installed system also contains packages installed by +services (like \\='guix\\=' or \\='shepherd\\='). To see all the packages installed in a system profile, use '\\[guix-installed-system-packages]' command." (interactive @@ -1631,7 +1638,7 @@ installed in a system profile, use ;;;###autoload (defun guix-installed-packages (&optional profile) "Display information about installed Guix packages. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-ui-read-package-profile))) (guix-package-get-display profile 'installed)) @@ -1651,7 +1658,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-obsolete-packages (&optional profile) "Display information about obsolete (or unknown) Guix packages. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-ui-read-package-profile))) (guix-package-get-display profile 'unknown)) @@ -1659,7 +1666,7 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-superseded-packages (&optional profile) "Display information about superseded Guix packages. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-ui-read-package-profile))) (guix-package-get-display profile 'superseded)) @@ -1674,13 +1681,14 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-dependent-packages (packages &optional type profile) "Display Guix packages that depend on PACKAGES. -This is similar to 'guix refresh --list-dependent PACKAGES ...'. + +This is similar to \\='guix refresh --list-dependent PACKAGES ...\\='. See Info node `(guix) Invoking guix refresh' for details. -TYPE should be a symbol `all' or `direct'. Interactively, prompt +TYPE should be a symbol \\='all\\=' or \\='direct\\='. Interactively, prompt for it. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-read-package-names) @@ -1691,14 +1699,14 @@ Interactively with prefix, prompt for PROFILE." ;;;###autoload (defun guix-hidden-packages (&optional profile) "Display hidden Guix packages. -If PROFILE is nil, use `guix-current-profile'." +If PROFILE is nil, use variable `guix-current-profile'." (interactive (list (guix-ui-read-package-profile))) (guix-package-get-display profile 'hidden)) ;;;###autoload (defun guix-all-packages (&optional profile) "Display all available Guix packages. -If PROFILE is nil, use `guix-current-profile'. +If PROFILE is nil, use variable `guix-current-profile'. Interactively with prefix, prompt for PROFILE." (interactive (list (guix-ui-read-package-profile))) (guix-package-get-display profile 'all)) diff --git a/elisp/guix-ui-profile.el b/elisp/guix-ui-profile.el index d05eb0f..2f17b38 100644 --- a/elisp/guix-ui-profile.el +++ b/elisp/guix-ui-profile.el @@ -1,4 +1,4 @@ -;;; guix-ui-profile.el --- Interface for displaying profiles -*- lexical-binding: t -*- +;;; guix-ui-profile.el --- Interface to display profiles -*- lexical-binding: t -*- ;; Copyright © 2016–2019 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides a 'list' interface for displaying Guix profiles +;; This file provides a 'list' interface to display Guix profiles ;; with `guix-profiles' command. ;; ;; `guix-profiles' variable controls what profiles are displayed. @@ -67,7 +67,7 @@ properly.") (guix-eval-read "(user-profiles)"))))))) (defun guix-profile->entry (profile) - "Return 'guix-profile' entry by PROFILE file-name." + "Return \\='guix-profile\\=' entry by PROFILE file-name." (let* ((profile (guix-profile profile)) (number-of-packages (guix-profile-number-of-packages profile))) @@ -81,7 +81,10 @@ properly.") (error "No packages in '%s'. Is it a real profile?" profile)))) (defun guix-profile-get-entries (&optional search-type &rest args) - "Return 'guix-profile' entries." + "Return \\='guix-profile\\=' entries. + +SEARCH-TYPE define how to get the information. If SEARCH-TYPE is not +\\='all\\=', use ARGS defines the candidate profiles." (let ((profiles (cond ((or (null search-type) (eq search-type 'all)) @@ -174,8 +177,10 @@ If nothing is marked, return a list with profile at point." (guix-generations (guix-profile-list-current-profile))) (defun guix-profile-list-show-search-paths (&optional type) - "Display 'search paths' environment variables for the marked profiles. -If nothing is marked, use profile on the current line." + "Display \\='search paths\\=' environment variables for the marked profiles. + +If nothing is marked, use profile on the current line. TYPE defines how to +get the information." (interactive (list (guix-read-search-paths-type))) (guix-show-search-paths (guix-profile-list-marked-profiles) type)) @@ -191,7 +196,7 @@ If nothing is marked, use profile on the current line." (if value "(current)" "")) (defun guix-profile-list-set-current () - "Set `guix-current-profile' to the profile on the current line." + "Set the variable `guix-current-profile' to the profile on the current line." (interactive) (guix-set-current-profile (guix-profile-list-current-profile)) ;; Now updating "Current" column is needed. It can be done simply by @@ -288,7 +293,7 @@ If nothing is marked, use profile on the current line." (bui-newline))) (defun guix-profile-info-insert-current (value entry) - "Insert boolean VALUE showing whether this profile is current." + "Insert boolean VALUE showing whether this profile ENTRY is current." (if value (bui-info-insert-value-format "Yes" 'guix-profile-info-current) (bui-info-insert-value-format "No" 'guix-profile-info-not-current) @@ -337,7 +342,9 @@ If nothing is marked, use profile on the current line." (guix-generations profile)) (defun guix-profile-info-show-search-paths (profile &optional type) - "Display 'search paths' environment variables for PROFILE." + "Display \\='search paths\\=' environment variables for PROFILE. + +TYPE defines how to get the information." (interactive (list (guix-read-profile-from-entries) (guix-read-search-paths-type))) @@ -351,7 +358,7 @@ If nothing is marked, use profile on the current line." (guix-apply-manifest profile file (current-buffer))) (defun guix-profile-info-set-current (profile) - "Set `guix-current-profile' to PROFILE." + "Set variable `guix-current-profile' to PROFILE." (interactive (list (guix-read-profile-from-entries))) (guix-set-current-profile profile) (bui-revert nil t)) @@ -361,7 +368,7 @@ If nothing is marked, use profile on the current line." (defun guix-profiles-show () "Display Guix profiles. -Unlike `guix-profiles', this command always recreates +Unlike the function `guix-profiles', this command always recreates `guix-profile-list-buffer-name' buffer." (interactive) (bui-list-get-display-entries 'guix-profile)) @@ -372,28 +379,28 @@ Unlike `guix-profiles', this command always recreates Switch to the `guix-profile-list-buffer-name' buffer if it already exists. -Modify `guix-profiles' variable to add more profiles." +Modify the variable `guix-profiles' to add more profiles." (interactive) (guix-switch-to-buffer-or-funcall guix-profile-list-buffer-name #'guix-profiles-show 'message)) ;;;###autoload (defun guix-system-profile () - "Display interface for `guix-system-profile'." + "Display interface for the variable `guix-system-profile'." (interactive) (bui-get-display-entries 'guix-profile 'info (list 'profile guix-system-profile))) ;;;###autoload (defun guix-home-profile () - "Display interface for `guix-home-profile'." + "Display interface for the variable `guix-home-profile'." (interactive) (bui-get-display-entries 'guix-profile 'info (list 'profile guix-home-profile))) ;;;###autoload (defun guix-current-profile () - "Display interface for `guix-current-profile'." + "Display interface for the variable `guix-current-profile'." (interactive) (bui-get-display-entries 'guix-profile 'info (list 'profile guix-current-profile))) diff --git a/elisp/guix-ui-service-location.el b/elisp/guix-ui-service-location.el index 14b0f58..23b244a 100644 --- a/elisp/guix-ui-service-location.el +++ b/elisp/guix-ui-service-location.el @@ -1,4 +1,4 @@ -;;; guix-ui-service-location.el --- Interface for displaying service locations -*- lexical-binding: t -*- +;;; guix-ui-service-location.el --- Interface to display service locations -*- lexical-binding: t -*- ;; Copyright © 2018 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides a 'list' interface for displaying locations of +;; This file provides a 'list' interface to display locations of ;; Guix System services. ;;; Code: @@ -33,7 +33,7 @@ (guix-define-groups service-location) (defun guix-service-location-get-entries () - "Receive 'service location' entries." + "Receive \\='service location\\=' entries." (guix-eval-read "(service-location-sexps)")) diff --git a/elisp/guix-ui-service.el b/elisp/guix-ui-service.el index a23fed9..a434178 100644 --- a/elisp/guix-ui-service.el +++ b/elisp/guix-ui-service.el @@ -1,4 +1,4 @@ -;;; guix-ui-service.el --- Interface for displaying services -*- lexical-binding: t -*- +;;; guix-ui-service.el --- Interface to display services -*- lexical-binding: t -*- ;; Copyright © 2017–2018 Alex Kost <alezost@HIDDEN> @@ -38,20 +38,26 @@ :message-function 'guix-service-message) (defun guix-service-get-entries (search-type search-values params) - "Receive 'service' entries. -SEARCH-TYPE may be one of the following symbols: `id', `all', -`name', `regexp', `location', `from-os-file', `from-expression'." + "Receive \\='service\\=' entries. +SEARCH-TYPE may be one of the following symbols: \\='id\\=', \\='all\\=', +\\='name\\=', \\='regexp\\=', \\='location\\=', \\='from-os-file\\=', +\\='from-expression\\='. SEARCH-TYPE and SEARCH-VALUES define how to +get the information. PARAMS is passed to `guix-make-guile-expression'." (guix-eval-read (guix-make-guile-expression 'service-sexps search-type search-values params))) (defun guix-service-get-display (search-type &rest search-values) - "Search for services and show results." + "Search for services and show results. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (apply #'bui-list-get-display-entries 'guix-service search-type search-values)) (defun guix-service-message (entries search-type &rest search-values) - "Display a message after showing service ENTRIES." + "Display a message after showing service ENTRIES. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (if (null entries) (message "Couldn't find services") (let ((count (length entries))) @@ -110,7 +116,7 @@ SEARCH-TYPE may be one of the following symbols: `id', `all', (defface guix-service-info-heading '((t :inherit bui-info-heading)) - "Face used for 'info' buffer heading (service name)." + "Face used for `info' buffer heading (service name)." :group 'guix-service-info-faces) (defface guix-service-info-description @@ -125,7 +131,7 @@ SEARCH-TYPE may be one of the following symbols: `id', `all', (defvar guix-service-info-required-params '(id) - "List of the required 'service' parameters. + "List of the required \\='service\\=' parameters. These parameters are received from the Scheme side along with the displayed parameters. @@ -143,7 +149,9 @@ identifying an entry.") 'add))) (defun guix-service-info-get-entries (search-type &rest search-values) - "Return 'service' entries for displaying them in 'info' buffer." + "Return \\='service\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-service-get-entries search-type search-values (cl-union guix-service-info-required-params @@ -194,7 +202,7 @@ identifying an entry.") (defvar guix-service-list-required-params '(id) - "List of the required 'service' parameters. + "List of the required \\='service\\=' parameters. These parameters are received from the Scheme side along with the displayed parameters. @@ -213,7 +221,9 @@ identifying an entry.") (bui-default-hint))) (defun guix-service-list-get-entries (search-type &rest search-values) - "Return 'service' entries for displaying them in 'list' buffer." + "Return \\='service\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-service-get-entries search-type search-values (cl-union guix-service-list-required-params diff --git a/elisp/guix-ui-store-item.el b/elisp/guix-ui-store-item.el index 9abd261..13a2d78 100644 --- a/elisp/guix-ui-store-item.el +++ b/elisp/guix-ui-store-item.el @@ -1,6 +1,7 @@ -;;; guix-ui-store-item.el --- Interface for displaying store items -*- lexical-binding: t -*- +;;; guix-ui-store-item.el --- Interface to display store items -*- lexical-binding: t -*- ;; Copyright © 2018 Alex Kost <alezost@HIDDEN> +;; Copyright © 2025 Nicolas Graves <ngraves@HIDDEN> ;; This file is part of Emacs-Guix. @@ -93,21 +94,26 @@ of the file names are ignored." (defun guix-store-item-get-entries (search-type &optional search-values params) - "Receive 'store-item' entries. -SEARCH-TYPE may be one of the following symbols: `id', `live', -`dead', `referrers', `references', `derivers', `requisites', -`failures'." + "Receive \\='store-item\\=' entries. +SEARCH-TYPE may be one of the following symbols: \\='id\\=', \\='live\\=', +\\='dead\\=', \\='referrers\\=', \\='references\\=', \\='derivers\\=', +\\='requisites\\=',\\='failures\\='. SEARCH-TYPE and SEARCH-VALUES define how +to get the information. PARAMS are passed to `guix-make-guile-expression'." (guix-eval-read (guix-make-guile-expression 'store-item-sexps search-type search-values params))) (defun guix-store-item-get-display (search-type &rest search-values) - "Search for store items and show results." + "Search for store items and show results. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (apply #'bui-list-get-display-entries 'guix-store-item search-type search-values)) (defun guix-store-item-message (entries search-type &rest search-values) - "Display a message after showing store item ENTRIES." + "Display a message after showing store item ENTRIES. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (let ((count (length entries)) (val (car search-values))) (cl-flet ((msg (str &rest args) @@ -189,7 +195,7 @@ SEARCH-TYPE may be one of the following symbols: `id', `live', (defvar guix-store-item-info-required-params '(id) - "List of the required 'store-item' parameters. + "List of the required \\='store-item\\=' parameters. These parameters are received from the Scheme side along with the displayed parameters. @@ -197,7 +203,9 @@ Do not remove `id' from this info as it is required for identifying an entry.") (defun guix-store-item-info-get-entries (search-type &rest search-values) - "Return 'store-item' entries for displaying them in 'info' buffer." + "Return \\='store-item\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-store-item-get-entries search-type search-values (cl-union guix-store-item-info-required-params @@ -310,7 +318,7 @@ See `guix-store-item-info-insert-type-button' for the meaning of TYPE." (defvar guix-store-item-list-required-params '(id) - "List of the required 'store-item' parameters. + "List of the required \\='store-item\\=' parameters. These parameters are received from the Scheme side along with the displayed parameters. @@ -343,7 +351,9 @@ identifying an entry.") (bui-default-hint))) (defun guix-store-item-list-get-entries (search-type &rest search-values) - "Return 'store-item' entries for displaying them in 'list' buffer." + "Return \\='store-item\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-store-item-get-entries search-type search-values (cl-union guix-store-item-list-required-params @@ -435,7 +445,7 @@ Interactively, prompt for a single file name." ;;;###autoload (defun guix-store-item-referrers (&rest file-names) "Display referrers of the FILE-NAMES store item. -This is analogous to 'guix gc --referrers FILE-NAMES' shell +This is analogous to \\='guix gc --referrers FILE-NAMES\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive (list (guix-store-file-name-read))) (apply #'guix-assert-files-exist file-names) @@ -444,7 +454,7 @@ command. See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-item-references (&rest file-names) "Display references of the FILE-NAMES store item. -This is analogous to 'guix gc --references FILE-NAMES' shell +This is analogous to \\='guix gc --references FILE-NAMES\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive (list (guix-store-file-name-read))) (apply #'guix-assert-files-exist file-names) @@ -453,7 +463,7 @@ command. See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-item-requisites (&rest file-names) "Display requisites of the FILE-NAMES store item. -This is analogous to 'guix gc --requisites FILE-NAMES' shell +This is analogous to \\='guix gc --requisites FILE-NAMES\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive (list (guix-store-file-name-read))) (apply #'guix-assert-files-exist file-names) @@ -462,7 +472,7 @@ command. See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-item-derivers (&rest file-names) "Display derivers of the FILE-NAMES store item. -This is analogous to 'guix gc --derivers FILE-NAMES' shell +This is analogous to \\='guix gc --derivers FILE-NAMES\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive (list (guix-store-file-name-read))) (apply #'guix-assert-files-exist file-names) @@ -471,7 +481,7 @@ command. See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-failures () "Display store items corresponding to cached build failures. -This is analogous to 'guix gc --list-failures' shell command. +This is analogous to \\='guix gc --list-failures\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive) (guix-store-item-get-display 'failures)) @@ -479,7 +489,7 @@ See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-live-items () "Display live store items. -This is analogous to 'guix gc --list-live' shell command. +This is analogous to \\='guix gc --list-live\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive) (guix-store-item-get-display 'live)) @@ -487,7 +497,7 @@ See Info node `(guix) Invoking guix gc'." ;;;###autoload (defun guix-store-dead-items () "Display dead store items. -This is analogous to 'guix gc --list-dead' shell command. +This is analogous to \\='guix gc --list-dead\\=' shell command. See Info node `(guix) Invoking guix gc'." (interactive) (guix-store-item-get-display 'dead)) diff --git a/elisp/guix-ui-system-generation.el b/elisp/guix-ui-system-generation.el index f5dba56..5524957 100644 --- a/elisp/guix-ui-system-generation.el +++ b/elisp/guix-ui-system-generation.el @@ -1,4 +1,4 @@ -;;; guix-ui-system-generation.el --- Interface for displaying system generations -*- lexical-binding: t -*- +;;; guix-ui-system-generation.el --- Interface to display system generations -*- lexical-binding: t -*- ;; Copyright © 2016–2018 Alex Kost <alezost@HIDDEN> @@ -19,7 +19,7 @@ ;;; Commentary: -;; This file provides an interface for displaying system generations +;; This file provides an interface to display system generations ;; in 'list' and 'info' buffers, and commands for working with them. ;;; Code: @@ -39,10 +39,10 @@ (rx-to-string `(and ,guix-store-directory "/" (+ alnum) "-shepherd.conf") t) - "Regexp matching 'shepherd.conf' file placed in the store.") + "Regexp matching \\='shepherd.conf\\=' file placed in the store.") (defun guix-system-generation-add-kernel-config (entry) - "Return ENTRY with 'kernel-config' parameter." + "Return ENTRY with \\='kernel-config\\=' parameter." (let* ((kernel (bui-entry-value entry 'kernel)) (dir (file-name-directory kernel)) ;; Nowadays kernel config has ".config" name, but before @@ -54,7 +54,7 @@ ,@entry))) (defun guix-system-generation-add-shepherd-config (entry) - "Return ENTRY with 'shepherd-config' parameter." + "Return ENTRY with \\='shepherd-config\\=' parameter." (let* ((file-name (bui-entry-value entry 'file-name)) (boot-file (expand-file-name "boot" file-name))) (with-temp-buffer @@ -68,7 +68,10 @@ (defun guix-system-generation-get-entries (profile search-type search-values params) - "Return 'system-generation' entries." + "Return PROFILE \\='system-generation\\=' entries. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information. +PARAMS are passed to `guix-generation-get-entries' after processing." (let* ((add-kernel-config? (or (null params) (memq 'kernel-config params))) (add-shepherd-config? (or (null params) @@ -129,7 +132,10 @@ SEARCH-VALUES." (defun guix-system-generation-info-get-entries (profile search-type &rest search-values) - "Return 'system-generation' entries for displaying them in 'info' buffer." + "Return \\='system-generation\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information for +profile PROFILE." (guix-system-generation-get-entries profile search-type search-values (cl-union guix-system-generation-info-required-params @@ -165,7 +171,9 @@ SEARCH-VALUES." (defun guix-system-generation-list-get-entries (profile search-type &rest search-values) - "Return 'system-generation' entries for displaying them in 'list' buffer." + "Return \\='system-generation\\=' entries to display them in \\='list\\=' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information for PROFILE." (guix-system-generation-get-entries profile search-type search-values (cl-union guix-system-generation-list-required-params diff --git a/elisp/guix-ui-system.el b/elisp/guix-ui-system.el index 4cfc1e3..4e228e2 100644 --- a/elisp/guix-ui-system.el +++ b/elisp/guix-ui-system.el @@ -40,8 +40,11 @@ (number-of-services . "Services"))) (defun guix-system-get-entries (search-type search-values params) - "Receive 'system' entries. -SEARCH-TYPE may be one of the following symbols: `from-file'." + "Receive \\='system\\=' entries. + +SEARCH-TYPE may be one of the following symbols: \\='from-file\\='. +SEARCH-TYPE and SEARCH-VALUES define how to get the information. +PARAMS are passed to `guix-make-guile-expression'." (let ((sexps (guix-eval-read (guix-make-guile-expression 'system-sexps search-type search-values params)))) @@ -53,7 +56,9 @@ SEARCH-TYPE may be one of the following symbols: `from-file'." sexps))) (defun guix-system-get-display (search-type &rest search-values) - "Search for systems and show results." + "Search for systems and show results. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (bui-get-display-entries 'guix-system 'info (cl-list* search-type search-values))) @@ -76,7 +81,9 @@ SEARCH-TYPE may be one of the following symbols: `from-file'." (initrd-modules format (format)))) (defun guix-system-info-get-entries (search-type &rest search-values) - "Return 'system' entries for displaying them in 'info' buffer." + "Return \\='system\\=' entries to display them in `info' buffer. + +SEARCH-TYPE and SEARCH-VALUES define how to get the information." (guix-system-get-entries search-type search-values (bui-info-displayed-params 'guix-system))) @@ -111,7 +118,7 @@ SEARCH-TYPE may be one of the following symbols: `from-file'." ;;;###autoload (defun guix-system-from-file (file) - "Display info on 'operating-system' declaration from FILE. + "Display info on \\='operating-system\\=' declaration from FILE. See `guix-packages-from-system-config-file' for more details on FILE. Interactively, prompt for FILE (see also `guix-support-dired')." (interactive (list (guix-read-os-file-name))) diff --git a/elisp/guix-ui.el b/elisp/guix-ui.el index bc4b6df..a4ff453 100644 --- a/elisp/guix-ui.el +++ b/elisp/guix-ui.el @@ -50,14 +50,14 @@ See `bui-hint' for details.") guix-ui-current profile search-type search-values) (defun guix-ui-read-package-profile () - "Return `guix-current-profile' or prompt for it. + "Return variable `guix-current-profile' or prompt for it. This function is intended for using in `interactive' forms." (if current-prefix-arg (guix-read-package-profile) guix-current-profile)) (defun guix-ui-read-generation-profile () - "Return `guix-current-profile' or prompt for it. + "Return variable `guix-current-profile' or prompt for it. This function is intended for using in `interactive' forms." (if current-prefix-arg (guix-read-generation-profile) @@ -83,7 +83,7 @@ with all available parameters." profile entry-type search-type search-values params))) (defun guix-ui-list-describe (&rest ids) - "Describe 'ui' entries with IDS (list of identifiers)." + "Describe \\='ui\\=' entries with IDS (list of identifiers)." (bui-get-display-entries (bui-current-entry-type) 'info (cl-list* (guix-ui-current-profile) 'id ids) @@ -116,7 +116,7 @@ The function is called with 2 arguments: BASE-NAME and PROFILE." (guix-compose-buffer-name base-name profile)) (defun guix-ui-buffer-name (base-name profile) - "Return Guix buffer name based on BASE-NAME and profile. + "Return Guix buffer name based on BASE-NAME and PROFILE. See `guix-ui-buffer-name-function' for details." (funcall guix-ui-buffer-name-function base-name profile)) @@ -141,7 +141,7 @@ This macro also defines: (defun ,message-fun (entries profile search-type &rest search-values) ,(format "\ -Display a message after showing '%s' entries. +Display a message after showing \\='%s\\=' entries. This is a wrapper for `guix-result-message'." entry-type-str) (guix-result-message profile entries ',entry-type @@ -154,7 +154,7 @@ This is a wrapper for `guix-result-message'." ,@args)))) (defmacro guix-ui-define-interface (entry-type buffer-type &rest args) - "Define BUFFER-TYPE interface for displaying ENTRY-TYPE entries. + "Define BUFFER-TYPE interface to display ENTRY-TYPE entries. Remaining arguments (ARGS) should have a form [KEYWORD VALUE] ... In the following description TYPE means ENTRY-TYPE-BUFFER-TYPE. @@ -200,7 +200,7 @@ Along with the mentioned definitions, this macro also defines: (defvar ,required-var ,required-val ,(format "\ -List of the required '%s' parameters. +List of the required \\='%s\\=' parameters. These parameters are received from the Scheme side along with the displayed parameters. @@ -210,7 +210,7 @@ identifying an entry." (defun ,buffer-name-fun (profile &rest _) ,(format "\ -Return a name of '%s' buffer for displaying '%s' entries. +Return a name of \\='%s\\=' buffer to display \\='%s\\=' entries. See `guix-ui-buffer-name' for details." buffer-type-str entry-type-str) (guix-ui-buffer-name ,buffer-name-val profile)) diff --git a/elisp/guix-utils.el b/elisp/guix-utils.el index 02570aa..5535eb9 100644 --- a/elisp/guix-utils.el +++ b/elisp/guix-utils.el @@ -67,17 +67,17 @@ This function is similar to `shell-quote-argument', but less strict." (rx (not (any alnum "-=,./\n"))) "\\\\\\&" argument)))) (defun guix-command-symbol (&optional args) - "Return symbol by concatenating 'guix-command' and ARGS (strings)." + "Return symbol by concatenating \\='guix-command\\=' and ARGS (strings)." (intern (guix-concat-strings (cons "guix-command" args) "-"))) (defun guix-command-string (&optional args) - "Return 'guix ARGS ...' string with quoted shell arguments." + "Return \\='guix ARGS ...\\=' string with quoted shell arguments." (let ((args (mapcar #'guix-shell-quote-argument args))) (guix-concat-strings (cons "guix" args) " "))) (defun guix-copy-command-as-kill (args &optional no-message?) - "Put 'guix ARGS ...' string into `kill-ring'. -See also `guix-copy-as-kill'." + "Put \\='guix ARGS ...\\=' string into `kill-ring'. +See also `bui-copy-as-kill' for NO-MESSAGE?." (bui-copy-as-kill (guix-command-string args) no-message?)) (defun guix-compose-buffer-name (base-name postfix) @@ -106,37 +106,36 @@ If BASE-NAME is wrapped by '*', then the result is: (concat "*" name-body ": " postfix "*") (concat base-name ": " postfix))))) -(defun guix-completing-read (prompt table &optional predicate - require-match initial-input - hist def inherit-input-method) - "Same as `completing-read' but return nil instead of an empty string." - (let ((res (completing-read prompt table predicate - require-match initial-input - hist def inherit-input-method))) +(defun guix-completing-read (prompt table &rest completing-read-rest) + "Same as `completing-read' but return nil instead of an empty string. + +Pass PROMPT, TABLE and the COMPLETING-READ-REST arguments to `completing-read'." + (let ((res (apply #'completing-read prompt table completing-read-rest))) (unless (string= "" res) res))) -(defun guix-completing-read-multiple (prompt table &optional predicate - require-match initial-input - hist def inherit-input-method) - "Same as `completing-read-multiple' but remove duplicates in result." +(defun guix-completing-read-multiple (prompt table &rest completing-read-rest) + "Same as `completing-read-multiple', but remove duplicates in result. + +Pass PROMPT, TABLE and the COMPLETING-READ-REST arguments to +`completing-read-multiple'." (cl-remove-duplicates - (completing-read-multiple prompt table predicate - require-match initial-input - hist def inherit-input-method) + (apply #'completing-read-multiple prompt table completing-read-rest) :test #'string=)) (declare-function org-read-date "org" t) (defun guix-read-date (prompt) - "Prompt for a date or time using `org-read-date'. -Return time value." + "PROMPT for a date or time using `org-read-date'. +Return a time value." (require 'org) (org-read-date nil t nil prompt)) (declare-function pcmpl-unix-user-names "pcmpl-unix") (defun guix-read-user-name (&optional prompt initial-input) - "Prompt for a user name using completions." + "Prompt for a user name using completions. + +Optionally takes PROMPT and INITIAL-INPUT arguments of `completing-read'." (require 'pcmpl-unix) (guix-completing-read (or prompt "User name: ") (pcmpl-unix-user-names) @@ -246,12 +245,12 @@ See `guix-modify' for details." objects)) (defun guix-make-symbol (&rest symbols) - "Return `guix-SYMBOLS-...' symbol." + "Return \\='guix-symbols-...\\=' SYMBOLS." (apply #'bui-make-symbol 'guix symbols)) (defmacro guix-define-groups (name &rest args) - "Define `guix-NAME' and `guix-NAME-faces' customization groups. -See `bui-define-groups' for details." + "Define `guix-name' and `guix-name-faces' customization groups from NAME. +See `bui-define-groups' for ARGS and details." (declare (indent 1)) `(bui-define-groups ,(bui-make-symbol 'guix name) :parent-group guix @@ -309,30 +308,29 @@ argument." "Expand FILE-NAME and remove trailing slash if needed." (directory-file-name (expand-file-name file-name))) -(defun guix-read-file-name (&optional prompt dir default-filename - mustmatch initial predicate) +(defun guix-read-file-name (&optional prompt &rest read-file-name-rest) "Read file name. This function is similar to `read-file-name' except it also -expands the file name." +expands the file name. Pass PROMPT and READ-FILE-NAME-REST arguments +to `read-file-name'." (expand-file-name - (read-file-name (or prompt "File: ") - dir default-filename - mustmatch initial predicate))) + (apply #'read-file-name (or prompt "File: ") read-file-name-rest))) (declare-function dired-get-filename "dired" t) -(defun guix-read-file-name-maybe (&optional prompt dir default-filename - mustmatch initial predicate) +(defun guix-read-file-name-maybe (&optional prompt &rest read-file-name-rest) "Read file name or get it from `dired-mode'. -See `guix-support-dired' for details. See also `guix-read-file-name'." +See `guix-support-dired' for details. See also `guix-read-file-name'. +This function is similar to `read-file-name' except it also +expands the file name. Pass PROMPT and READ-FILE-NAME-REST arguments +to `read-file-name'." (if (and guix-support-dired (derived-mode-p 'dired-mode)) (dired-get-filename) - (guix-read-file-name prompt dir default-filename - mustmatch initial predicate))) + (apply #'guix-read-file-name prompt read-file-name-rest))) (defun guix-read-os-file-name () - "Read file name with Guix System 'operating-system' declaration." + "Read file name with Guix System \\='operating-system\\=' declaration." (guix-read-file-name-maybe "System configuration file: ")) (defun guix-find-file (file) @@ -373,8 +371,7 @@ example: However, if COMPILED is non-nil, the directory with compiled (.go) files is returned, for example: - ROOT/lib/guile/2.2/site-ccache -" + ROOT/lib/guile/2.2/site-ccache" (let* ((dir (expand-file-name (if compiled "lib/guile" "share/guile/site") @@ -398,7 +395,7 @@ If nil, it will be set when it will be used the first time. This directory will be deleted on Emacs exit.") (defun guix-temporary-directory () - "Return `guix-temporary-directory' (set it if needed)." + "Return the variable `guix-temporary-directory' (set it if needed)." (or (and guix-temporary-directory (file-exists-p guix-temporary-directory) guix-temporary-directory) @@ -406,7 +403,7 @@ This directory will be deleted on Emacs exit.") (make-temp-file "emacs-guix-" 'dir)))) (defun guix-temporary-file-name (name &optional suffix) - "Return file NAME from `guix-temporary-directory'. + "Return file NAME from the variable `guix-temporary-directory'. If such file name already exists, or if SUFFIX string is specified, make the returned name unique." (let* ((file-name (expand-file-name name (guix-temporary-directory))) @@ -418,7 +415,7 @@ specified, make the returned name unique." file-name))) (defun guix-delete-temporary-directory () - "Delete `guix-temporary-directory' if it exists." + "Delete the variable `guix-temporary-directory' if it exists." (when (and guix-temporary-directory (file-exists-p guix-temporary-directory)) (condition-case nil @@ -458,7 +455,9 @@ If nil, do not perform refontifying.") "A string or list of strings specifying switches to be passed to diff.") (defun guix-diff (old new &optional switches no-async) - "Same as `diff', but use `guix-diff-switches' as default." + "Same as `diff', but use `guix-diff-switches' as default. + +OLD, NEW, SWITCHES and NO-ASYNC are passed to `diff'." (diff old new (or switches guix-diff-switches) no-async)) @@ -468,7 +467,8 @@ If nil, do not perform refontifying.") &optional require-match default) "Define NAME function to read from minibuffer. READ-FUN may be `completing-read', `completing-read-multiple' or -another function with the same arguments." +another function with the same arguments. COMPLETIONS, PROMPT, +REQUIRE-MATCH and DEFAULT are passed to this function." (declare (indent 1)) `(defun ,name (&optional prompt initial-contents) (,read-fun (or prompt ,prompt) @@ -558,7 +558,7 @@ keywords are available: (defmacro guix-memoized-defun (name arglist docstring &rest body) "Define a memoized function NAME. -See `defun' for the meaning of arguments." +See `defun' for the meaning of arguments ARGLIST, DOCSTRING and BODY." (declare (doc-string 3) (indent 2)) `(defalias ',name (guix-memoize (lambda ,arglist ,@body)) @@ -572,7 +572,8 @@ See `defun' for the meaning of arguments." docstring))) (defmacro guix-memoized-defalias (symbol definition &optional docstring) - "Set SYMBOL's function definition to memoized version of DEFINITION." + "Set SYMBOL's function definition to memoized version of DEFINITION. +Optionally provide DOCSTRING." (declare (doc-string 3) (indent 1)) `(defalias ',symbol (guix-memoize #',definition) -- 2.48.1
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 3/5] Remove dash dependency, introduce llama library Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:10:02 +0000 Resent-Message-ID: <handler.76699.B76699.174096778629282 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: Nicolas Graves <ngraves@HIDDEN> Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174096778629282 (code B ref 76699); Mon, 03 Mar 2025 02:10:02 +0000 Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:46 +0000 Received: from localhost ([127.0.0.1]:40744 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovFZ-0007c8-TH for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:46 -0500 Received: from 15.mo583.mail-out.ovh.net ([178.33.107.29]:48287) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovFU-0007b1-7T for 76699 <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:42 -0500 Received: from director7.ghost.mail-out.ovh.net (unknown [10.109.140.229]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4Z5j1b1yGGz1T6x for <76699 <at> debbugs.gnu.org>; Mon, 3 Mar 2025 02:09:39 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-rpnvq (unknown [10.110.178.62]) by director7.ghost.mail-out.ovh.net (Postfix) with ESMTPS id ED6151FDFF; Mon, 3 Mar 2025 02:09:38 +0000 (UTC) Received: from ngraves.fr ([37.59.142.106]) by ghost-submission-5b5ff79f4f-rpnvq with ESMTPSA id UsdfL2IPxWflTA8APzYwNQ (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:09:38 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-106R00644a9a709-2937-4aff-80aa-2eb9f2ba633c, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:09:18 +0100 Message-ID: <20250303020932.4194-3-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250303020932.4194-1-ngraves@HIDDEN> References: <20250303020932.4194-1-ngraves@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1108729936254001890 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 49 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecuogfuuhhsphgvtghtffhomhgrihhnucdlgeelmdenucfjughrpefhvfevufffkffojghfgggtgfesthekredtredtjeenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeetjeeugedvjeduvefhveelffehjefhtdetheetheffkeegveefhfejleetleelueenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhgihhtlhgrsgdrtghomhdpghhithhlrggsrdhiohenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggedpfeejrdehledrudegvddruddtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopedupdhrtghpthhtohepjeeiieelleesuggvsggsuhhgshdrghhnuhdrohhrghdpoffvtefjohhsthepmhhoheekfegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=3M2ygZd44i7gqyL1nQmG9PLqA6XFLJW+lWS96Hyx4mw=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967779; v=1; b=s0XSgFRB2eHN/w1JvBfny5Q0AKrI20fdhf5l1tshxmwTFW6yP8Elz/Xr3/5YL1ZqaHEqhBjx gyOnaNucEyQpUXsrnk/Z2blCiJLmhPj8GUy3uissimtPi9iKLQE4i3dutJrBMrXl4x2DHnI41fj +wx3uhGlwo09bjv9y2q9VEIvZw/M2L+SEyBrSkofO4UP80tO9vo6WHSU+FKowVPilyXlAIVq1+i 6HvChGWCSNKiMR0irnu34NHL1rEYfCxl2kaT5isMz0M2j50cV1EbRfkXIExrqjGBYSMUEpIDve4 DnH6OB+Lax/OnobsugTJKknUgPQW/f8GTlYB37QxKgYzg== X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --- configure.ac | 16 ++++++++-------- doc/emacs-guix.texi | 8 ++++---- elisp/guix-help.el | 1 - elisp/guix-repl.el | 6 +++--- elisp/guix-ui-generation.el | 1 - elisp/guix-ui-package.el | 12 ++++++------ elisp/guix-ui-profile.el | 28 +++++++++++++++------------- elisp/guix-ui-store-item.el | 2 -- elisp/guix-utils.el | 1 - elisp/guix.el | 2 +- elisp/local.mk | 4 ++-- 11 files changed, 39 insertions(+), 42 deletions(-) diff --git a/configure.ac b/configure.ac index 3461bb3..31c7328 100644 --- a/configure.ac +++ b/configure.ac @@ -109,12 +109,12 @@ AC_ARG_WITH([geiser-lispdir], [geiserlispdir="no"]) AC_SUBST([geiserlispdir]) -AC_ARG_WITH([dash-lispdir], - [AS_HELP_STRING([--with-dash-lispdir], - [directory with dash.el file])], - [dashlispdir="$withval"], - [dashlispdir="no"]) -AC_SUBST([dashlispdir]) +AC_ARG_WITH([llama-lispdir], + [AS_HELP_STRING([--with-llama-lispdir], + [directory with llama.el file])], + [llamalispdir="$withval"], + [llamalispdir="no"]) +AC_SUBST([llamalispdir]) AC_ARG_WITH([bui-lispdir], [AS_HELP_STRING([--with-bui-lispdir], @@ -138,7 +138,7 @@ AC_ARG_WITH([transient-lispdir], AC_SUBST([transientlispdir]) AM_CONDITIONAL([GEISER_DIR], [test "x$geiserlispdir" != "xno"]) -AM_CONDITIONAL([DASH_DIR], [test "x$dashlispdir" != "xno"]) +AM_CONDITIONAL([LLAMA_DIR], [test "x$llamalispdir" != "xno"]) AM_CONDITIONAL([BUI_DIR], [test "x$builispdir" != "xno"]) AM_CONDITIONAL([EDITINDIRECT_DIR], [test "x$editindirectlispdir" != "xno"]) AM_CONDITIONAL([TRANSIENT_DIR], [test "x$transientlispdir" != "xno"]) @@ -148,7 +148,7 @@ dnl byte-compilation. Otherwise, "emacs" will be used, and it will dnl hopefully find these packages in its 'load-path'. AM_CONDITIONAL([EMACS_Q], [test "x$geiserlispdir" != "xno" -a \ - "x$dashlispdir" != "xno" -a \ + "x$llamalispdir" != "xno" -a \ "x$builispdir" != "xno" -a \ "x$editindirectlispdir" != "xno" -a \ "x$transientlispdir" != "xno"]) diff --git a/doc/emacs-guix.texi b/doc/emacs-guix.texi index 6bb3810..1953b09 100644 --- a/doc/emacs-guix.texi +++ b/doc/emacs-guix.texi @@ -176,8 +176,8 @@ from the Guix Guile code. So without Geiser, you can use the same features as without Guix. @item -@uref{https://github.com/magnars/dash.el, dash library}, version -2.11.0 or later. +@uref{https://github.com/tarsius/llama, llama library}, version +0.6.1 or later. @item @uref{https://gitlab.com/alezost-emacs/bui, BUI library}, version @@ -1091,8 +1091,8 @@ easy accessible key combination, for example, to @kbd{@key{super}-g}: (global-set-key (kbd "s-g") 'guix) @end example -@node Guix Keyboard-driven Menu -@section Guix Keyboard-driven Menu +@node Keyboard-driven Menu +@section Keyboard-driven Menu @findex guix-command There is one rather special transient suffix in @kbd{M-x@tie{}guix}. It diff --git a/elisp/guix-help.el b/elisp/guix-help.el index 53ccd3a..f8be213 100644 --- a/elisp/guix-help.el +++ b/elisp/guix-help.el @@ -23,7 +23,6 @@ ;;; Code: -(require 'dash) (require 'bui) (require 'guix nil t) (require 'guix-utils) diff --git a/elisp/guix-repl.el b/elisp/guix-repl.el index 846db60..0ebf603 100644 --- a/elisp/guix-repl.el +++ b/elisp/guix-repl.el @@ -48,7 +48,6 @@ ;;; Code: -(require 'dash) (require 'geiser-mode) (require 'geiser-guile) (require 'guix nil t) @@ -57,6 +56,7 @@ (require 'guix-external) (require 'guix-profiles) (require 'guix-utils) +(require 'llama) (defvar guix-load-path nil "Directory or a list of directories prepended to Guile's `%load-path'. @@ -209,8 +209,8 @@ After setting this variable, you need to kill (lcp (if guix-load-compiled-path (guix-list-maybe guix-load-compiled-path) lp))) - (append (--mapcat (list "-L" (guix-file-name it)) lp) - (--mapcat (list "-C" (guix-file-name it)) lcp)))) + (append (apply #'append (list "-L" (##guix-file-name %1)) lp) + (apply #'append (list "-C" (##guix-file-name %1)) lcp)))) "-L" ,guix-scheme-directory ,@(and guix-config-scheme-compiled-directory (list "-C" guix-config-scheme-compiled-directory)) diff --git a/elisp/guix-ui-generation.el b/elisp/guix-ui-generation.el index 7d10d90..ba28814 100644 --- a/elisp/guix-ui-generation.el +++ b/elisp/guix-ui-generation.el @@ -25,7 +25,6 @@ ;;; Code: (require 'cl-lib) -(require 'dash) (require 'bui) (require 'guix nil t) (require 'guix-ui) diff --git a/elisp/guix-ui-package.el b/elisp/guix-ui-package.el index f861820..293e597 100644 --- a/elisp/guix-ui-package.el +++ b/elisp/guix-ui-package.el @@ -25,7 +25,6 @@ ;;; Code: (require 'cl-lib) -(require 'dash) (require 'bui) (require 'guix nil t) (require 'guix-ui) @@ -39,6 +38,7 @@ (require 'guix-location) (require 'guix-package) (require 'guix-profiles) +(require 'llama) (guix-ui-define-entry-type package) (guix-ui-define-entry-type output) @@ -102,14 +102,14 @@ is found and `guix-package-list-show-single' is nil." (defun guix-package-entry-installed-outputs (entry) "Return a list of installed outputs for the package ENTRY." - (--map (bui-entry-non-void-value it 'output) - (bui-entry-non-void-value entry 'installed))) + (mapcar (##bui-entry-non-void-value %1 'output) + (bui-entry-non-void-value entry 'installed))) (defun guix-read-package-name-from-entries (entries) "Prompt for a package name and return it. Names are completed from package ENTRIES." (completing-read "Package: " - (--map (bui-entry-value it 'name) entries))) + (mapcar (##bui-entry-value %1 'name) entries))) (defun guix-read-package-entry-by-name (&optional entries) "Return an entry from package ENTRIES (current entries by default). @@ -1165,8 +1165,8 @@ Colorize it with an appropriate face if needed." (defun guix-package-list-get-installed-outputs (installed &optional _) "Return string with outputs from INSTALLED entries." (bui-get-string - (--map (bui-entry-non-void-value it 'output) - installed))) + (mapcar (##bui-entry-non-void-value %1 'output) + installed))) (defun guix-package-list-marking-check () "Signal an error if marking is disabled for the current buffer." diff --git a/elisp/guix-ui-profile.el b/elisp/guix-ui-profile.el index 2f17b38..0923ba5 100644 --- a/elisp/guix-ui-profile.el +++ b/elisp/guix-ui-profile.el @@ -26,13 +26,13 @@ ;;; Code: -(require 'dash) (require 'bui) (require 'guix nil t) (require 'guix-profiles) (require 'guix-read) (require 'guix-utils) (require 'guix-misc) +(require 'llama) (guix-define-groups profile) @@ -55,15 +55,15 @@ properly.") "Return a list of all profiles." (or guix-profiles (setq guix-profiles - (--filter - (and it (file-exists-p it)) + (seq-filter + (##and %1 (file-exists-p %1)) (delete-dups - (-cons* guix-default-user-profile - guix-default-pulled-profile - guix-system-profile - guix-home-profile - (--when-let (getenv "GUIX_PROFILE") - (guix-file-name it)) + (append (list guix-default-user-profile + guix-default-pulled-profile + guix-system-profile + guix-home-profile + (when-let ((profile (getenv "GUIX_PROFILE"))) + (guix-file-name profile))) (guix-eval-read "(user-profiles)"))))))) (defun guix-profile->entry (profile) @@ -107,8 +107,8 @@ are multiple entries, prompt for a profile name and return it." (or entries (setq entries (bui-current-entries))) (if (cdr entries) (completing-read "Profile: " - (--map (bui-entry-value it 'profile) - entries)) + (mapcar (##bui-entry-value %1 'profile) + entries)) (bui-entry-value (car entries) 'profile))) @@ -208,8 +208,10 @@ get the information." (lambda (entry) (let ((id (bui-entry-id entry))) (cons `(current . ,(equal id current-id)) - (--remove-first (eq (car it) 'current) - entry)))) + (seq-remove-at-position + (seq-filter (##eq (car %1) 'current) + entry) + 0)))) (bui-current-entries)))) (setf (bui-item-entries bui-item) new-entries)) diff --git a/elisp/guix-ui-store-item.el b/elisp/guix-ui-store-item.el index 13a2d78..91c1d96 100644 --- a/elisp/guix-ui-store-item.el +++ b/elisp/guix-ui-store-item.el @@ -1,7 +1,6 @@ ;;; guix-ui-store-item.el --- Interface to display store items -*- lexical-binding: t -*- ;; Copyright © 2018 Alex Kost <alezost@HIDDEN> -;; Copyright © 2025 Nicolas Graves <ngraves@HIDDEN> ;; This file is part of Emacs-Guix. @@ -27,7 +26,6 @@ (require 'cl-lib) (require 'ffap) -(require 'dash) (require 'bui) (require 'guix-package) (require 'guix-guile) diff --git a/elisp/guix-utils.el b/elisp/guix-utils.el index 5535eb9..1d0db3f 100644 --- a/elisp/guix-utils.el +++ b/elisp/guix-utils.el @@ -24,7 +24,6 @@ ;;; Code: (require 'cl-lib) -(require 'dash) (require 'bui-utils) (require 'guix nil t) diff --git a/elisp/guix.el b/elisp/guix.el index 2686a24..6e0ebc8 100644 --- a/elisp/guix.el +++ b/elisp/guix.el @@ -6,7 +6,7 @@ ;; Version: 0.5.2 ;; URL: https://emacs-guix.gitlab.io/website/ ;; Keywords: tools -;; Package-Requires: ((emacs "24.3") (dash "2.11.0") (geiser "0.8") (bui "1.2.0") (transient "0.8.4") (edit-indirect "0.1.4")) +;; Package-Requires: ((emacs "24.3") (llama "0.6.1") (geiser "0.8") (bui "1.2.0") (transient "0.8.4") (edit-indirect "0.1.4")) ;; This file is part of Emacs-Guix. diff --git a/elisp/local.mk b/elisp/local.mk index 4efbae5..b5b10c0 100644 --- a/elisp/local.mk +++ b/elisp/local.mk @@ -28,8 +28,8 @@ if GEISER_DIR AM_ELCFLAGS += -L "$(geiserlispdir)" endif -if DASH_DIR - AM_ELCFLAGS += -L "$(dashlispdir)" +if LLAMA_DIR + AM_ELCFLAGS += -L "$(llamalispdir)" endif if BUI_DIR -- 2.48.1
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 1/5] Switch to transient References: <20250303020636.3461-1-ngraves@HIDDEN> In-Reply-To: <20250303020636.3461-1-ngraves@HIDDEN> Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:10:03 +0000 Resent-Message-ID: <handler.76699.B76699.174096779229325 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: Nicolas Graves <ngraves@HIDDEN> Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174096779229325 (code B ref 76699); Mon, 03 Mar 2025 02:10:03 +0000 Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:52 +0000 Received: from localhost ([127.0.0.1]:40747 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovFc-0007cX-Np for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:52 -0500 Received: from 15.mo583.mail-out.ovh.net ([178.33.107.29]:51525) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovFS-0007aw-DG for 76699 <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:44 -0500 Received: from director8.ghost.mail-out.ovh.net (unknown [10.109.139.176]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4Z5j1X4xGVz1SyY for <76699 <at> debbugs.gnu.org>; Mon, 3 Mar 2025 02:09:36 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-klvlq (unknown [10.110.188.182]) by director8.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 52F651FD42; Mon, 3 Mar 2025 02:09:36 +0000 (UTC) Received: from ngraves.fr ([37.59.142.101]) by ghost-submission-5b5ff79f4f-klvlq with ESMTPSA id bJD6AGAPxWdTfgIAxguJDg (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:09:36 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-101G004ee1ee68e-4a78-4fbb-b92e-b54a20d94d0d, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:09:16 +0100 Message-ID: <20250303020932.4194-1-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1107885510514369250 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 49 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecuogfuuhhsphgvtghtffhomhgrihhnucdlgeelmdenucfjughrpefhvfevufffkffogggtgfesthekredtredtjeenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeelgeeihfevledtffdvieefleelveehheejgedtkeekiedugeffudeuudehudduveenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhmrghgihhtrdhvtgdpnhhonhhgnhhurdhorhhgpdhgnhhurdhorhhgpdhgihhtlhgrsgdrihhonecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegpdefjedrheelrddugedvrddutddunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopeejieeileelseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehkeefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=Pb8dOfTqssof1lM/EV2v+WfLfaW7KVwbhUwSIkvxrSg=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967776; v=1; b=0ILNUK9SRHElYDHiW7ao/+B9AZiUFtnFsiKV828U7LdQ1OIueQ3RE8zdS7lovakzC/KI1t3h zXPapjfRikwY98O4gcaU9Ka4bZP7dNB4C3nEqKZ0RlvVhi9kluMAqby1/o2CLWXacDqT45eV0MX lJhJZBNbj5eoPyRBBSygPfMhUKom8yElvJLkCUldcJRhyVpNkZnNUeCKyk0q9isOBCZ15+aR5eV MWCo0cHxAPWwa9rvNe3geXcFLWhJTXfrFDqMn0HbDyG4u7QZ0dT57yH7jzMW3HVmV4yY3iwZsQf 6L/7GSngKx+x9fFu7lkqiJxFIkMIyTxclLt31uD1eY96A== X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --- README | 2 +- configure.ac | 16 +-- doc/emacs-guix.texi | 55 +++++----- doc/htmlxref.cnf | 6 +- elisp/guix-command.el | 114 ++++++++++---------- elisp/guix-help.el | 2 +- elisp/guix-popup.el | 227 ---------------------------------------- elisp/guix-transient.el | 187 +++++++++++++++++++++++++++++++++ elisp/guix.el | 2 +- elisp/local.mk | 6 +- 10 files changed, 288 insertions(+), 329 deletions(-) delete mode 100644 elisp/guix-popup.el create mode 100644 elisp/guix-transient.el diff --git a/README b/README index 55a6956..6a63f97 100644 --- a/README +++ b/README @@ -34,7 +34,7 @@ In short, Emacs-Guix provides the following features: + [[/gnu/store]] items -- Magit-like popup interface for all Emacs-Guix and Guix shell commands +- Magit-like keyboard-driven menu for all Emacs-Guix and Guix shell commands (=M-x guix=). - Modes to view logs of package builds (=guix-build-log-mode= and diff --git a/configure.ac b/configure.ac index dd1de4b..3461bb3 100644 --- a/configure.ac +++ b/configure.ac @@ -130,18 +130,18 @@ AC_ARG_WITH([editindirect-lispdir], [editindirectlispdir="no"]) AC_SUBST([editindirectlispdir]) -AC_ARG_WITH([popup-lispdir], - [AS_HELP_STRING([--with-popup-lispdir], - [directory with magit-popup.el file])], - [popuplispdir="$withval"], - [popuplispdir="no"]) -AC_SUBST([popuplispdir]) +AC_ARG_WITH([transient-lispdir], +[AS_HELP_STRING([--with-transient-lispdir], + [directory with transient.el file])], + [transientlispdir="$withval"], + [transientlispdir="no"]) +AC_SUBST([transientlispdir]) AM_CONDITIONAL([GEISER_DIR], [test "x$geiserlispdir" != "xno"]) AM_CONDITIONAL([DASH_DIR], [test "x$dashlispdir" != "xno"]) AM_CONDITIONAL([BUI_DIR], [test "x$builispdir" != "xno"]) AM_CONDITIONAL([EDITINDIRECT_DIR], [test "x$editindirectlispdir" != "xno"]) -AM_CONDITIONAL([POPUP_DIR], [test "x$popuplispdir" != "xno"]) +AM_CONDITIONAL([TRANSIENT_DIR], [test "x$transientlispdir" != "xno"]) dnl If all elisp dependencies are specified, we can use "emacs -Q" for dnl byte-compilation. Otherwise, "emacs" will be used, and it will @@ -151,7 +151,7 @@ AM_CONDITIONAL([EMACS_Q], "x$dashlispdir" != "xno" -a \ "x$builispdir" != "xno" -a \ "x$editindirectlispdir" != "xno" -a \ - "x$popuplispdir" != "xno"]) + "x$transientlispdir" != "xno"]) dnl ---------------------------------------------------------------- diff --git a/doc/emacs-guix.texi b/doc/emacs-guix.texi index 3219354..6bb3810 100644 --- a/doc/emacs-guix.texi +++ b/doc/emacs-guix.texi @@ -53,7 +53,7 @@ A copy of the license is available at * System:: Interface for @code{operating-system} and services. * Store Items:: Interface for store items. * Package Licenses:: Interface for licenses of packages. -* Popup Interface:: Magit-like interface for Emacs-Guix commands. +* Keyboard-driven Menu:: Magit-like interface for Emacs-Guix commands. * Prettify Mode:: Abbreviating @file{/gnu/store/@dots{}} file names. * Prettify Variables:: Split and indent Shell variables. * Build Log Mode:: Highlighting Guix build logs. @@ -77,8 +77,8 @@ Indexes Emacs-Guix (also known as ``guix.el'') provides various interfaces and tools related to the GNU Guix package manager. -Call @kbd{M-x guix} if you prefer to dive in right away (@pxref{Popup -Interface}). +Call @kbd{M-x guix} if you prefer to dive in right away +(@pxref{Keyboard-driven Menu}). In short, Emacs-Guix provides the following features: @@ -99,8 +99,8 @@ Interfaces for: @end itemize @item -Magit-like popup interface for all Emacs-Guix @kbd{M-x} commands and -Guix shell commands (@pxref{Popup Interface}). +Keyboard-driven magit-like menu for all Emacs-Guix @kbd{M-x} and Guix +shell commands (@pxref{Keyboard-driven Menu}). @item Modes to view logs of package builds (@pxref{Build Log Mode}). @@ -185,10 +185,9 @@ features as without Guix. interfaces (to display packages, generations, licenses, etc.). @item -@uref{https://github.com/magit/magit-popup, magit-popup library}. You -already have this library if you use Magit 2.1.0 or later. This -library is required only for @kbd{M-x@tie{}guix} command (@pxref{Popup -Interface}). +@uref{https://github.com/magit/transient, transient library}. This +library is required only for @kbd{M-x@tie{}guix} command +(@pxref{Keyboard-driven Menu}). @item @uref{https://github.com/Fanael/edit-indirect, edit-indirect library}, @@ -204,7 +203,7 @@ list of packages (@pxref{Package Keys}). @end itemize To sum up, most likely, you'll need all the above dependencies except -maybe @code{magit-popup}, @code{edit-indirect} and @code{build-farm}. +maybe @code{transient}, @code{edit-indirect} and @code{build-farm}. @node Using from Git @section Using from Git @@ -1058,24 +1057,24 @@ Open @file{@dots{}/guix/licenses.scm} and move to the specified license. @end table @c ---------------------------------------------------------------- -@node Popup Interface -@chapter Popup Interface +@node Keybord-driven Menu +@chapter Keybord-driven Menu -If you ever used Magit, you know what ``popup interface'' is -(@pxref{Top,,, magit-popup, Magit-Popup User Manual}). Even if you are -not acquainted with Magit, there should be no worries as it is very -intuitive. +Transient is the library used to implement keybord-driven ``menus'' like +in Magit (@pxref{Top,,, transient, Transient User Manual}). Even if you +are not acquainted with Magit, this interface it is very intuitive. @findex guix -So, @kbd{M-x@tie{}guix} command provides a top-level popup interface -for almost all the available Emacs-Guix commands. It has 2 advantages -comparing with calling @kbd{M-x@tie{}guix-@dots{}} commands directly: +So, @kbd{M-x@tie{}guix} command provides a top-level keyboard-driven +menu for almost all the available Emacs-Guix commands. It has 2 +advantages comparing with calling @kbd{M-x@tie{}guix-@dots{}} commands +directly: @itemize @item There is no need to remember the names of Emacs-Guix commands, as you -can always find them in @kbd{M-x@tie{}guix} and its sub-popups. +can always find them in @kbd{M-x@tie{}guix} and its suffix transients. @item It is faster (well, if you know what you are going to call), as it may @@ -1092,17 +1091,17 @@ easy accessible key combination, for example, to @kbd{@key{super}-g}: (global-set-key (kbd "s-g") 'guix) @end example -@node Guix Popup Interface -@section Guix Popup Interface +@node Guix Keyboard-driven Menu +@section Guix Keyboard-driven Menu @findex guix-command -There is one rather special sub-popup in @kbd{M-x@tie{}guix}. It is -bind to @kbd{c} by default, and you can call it separately with -@kbd{M-x@tie{}guix-command}. It is a popup interface for -@code{guix@tie{}@dots{}} shell commands. It is probably not very +There is one rather special transient suffix in @kbd{M-x@tie{}guix}. It +is bind to @kbd{c} by default, and you can call it separately with +@kbd{M-x@tie{}guix-command}. It is a keyboard-driven, magit-like menu +for @code{guix@tie{}@dots{}} shell commands. It is probably not very useful, as it provides all the options and flags for all the shell -actions and subcommands, so it may be confusing to see them all at -once. Nevertheless, a description of this thing follows. +actions and subcommands, so it may be confusing to see them all at once. +Nevertheless, a description of this thing follows. When you select an option, you'll be prompted for a value in the minibuffer. Many values have completions, so don't hesitate to press diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf index d547107..b42ac28 100644 --- a/doc/htmlxref.cnf +++ b/doc/htmlxref.cnf @@ -4,9 +4,9 @@ # manuals in the generated HTML pages (created by "make manual" # command). See (info "(texinfo) HTML Xref Configuration") for details. -MAGIT_POPUP = https://magit.vc/manual/magit-popup -magit-popup mono ${MAGIT_POPUP} -magit-popup node ${MAGIT_POPUP}/ +TRANSIENT = https://magit.vc/manual/transient +transient mono ${TRANSIENT} +transient node ${TRANSIENT}/ GEISER = http://www.nongnu.org/geiser geiser mono ${GEISER} diff --git a/elisp/guix-command.el b/elisp/guix-command.el index cbfc0fa..affda4e 100644 --- a/elisp/guix-command.el +++ b/elisp/guix-command.el @@ -1,4 +1,4 @@ -;;; guix-command.el --- Popup interface for guix shell commands -*- lexical-binding: t -*- +;;; guix-command.el --- Transient interface for guix shell commands -*- lexical-binding: t -*- ;; Copyright © 2015–2020 Alex Kost <alezost@HIDDEN> @@ -19,16 +19,16 @@ ;;; Commentary: -;; This file provides a magit-like popup interface for guix shell -;; commands. You can run a selected command in *shell* buffer, in Guix -;; REPL, or simply copy it into `kill-ring'. +;; This file provides a transient interface for guix shell commands. +;; You can run a selected command in *shell* buffer, in Guix REPL, or +;; simply copy it into `kill-ring'. ;; ;; The entry point is "M-x guix-command". When it is called the first ;; time, "guix --help" output is parsed and `guix-COMMAND-action' ;; functions are generated for each available guix COMMAND. Then a ;; window with these commands is popped up. When a particular COMMAND ;; is called, "guix COMMAND --help" output is parsed, and a user get a -;; new popup window with available options for this command and so on. +;; new transient window with available options for this command and so on. ;; To avoid hard-coding all guix options, actions, etc., as much data is ;; taken from "guix ... --help" outputs as possible. But this data is @@ -40,7 +40,7 @@ ;; structures. ;; Only "M-x guix-command" is available after this file is loaded. The -;; rest commands/actions/popups are generated on the fly only when they +;; rest commands/actions/transients are generated on the fly only when they ;; are needed (that's why there is a couple of `eval'-s in this file). ;; COMMANDS argument is used by many functions in this file. It means a @@ -48,7 +48,7 @@ ;; ("import" "gnu"). The empty list stands for the plain "guix" without ;; subcommands. -;; All actions in popup windows are divided into 2 groups: +;; All actions in transient windows are divided into 2 groups: ;; ;; - 'Popup' actions - used to pop up another window. For example, every ;; action in the 'guix' or 'guix import' window is a popup action. They @@ -56,13 +56,13 @@ ;; ;; - 'Execute' actions - used to do something with the command line (to ;; run a command in Guix REPL or to copy it into kill-ring) constructed -;; with the current popup. They are defined by +;; with the current transient. They are defined by ;; `guix-command-define-execute-action' macro. ;;; Code: (require 'cl-lib) -(require 'magit-popup) +(require 'transient) (require 'bui-utils) (require 'guix nil t) (require 'guix-utils) @@ -74,7 +74,7 @@ (require 'guix-external) (defgroup guix-commands nil - "Settings for guix popup windows." + "Settings for guix transient windows." :group 'guix) (defvar guix-command-complex-with-shared-arguments @@ -484,10 +484,10 @@ to be modified." argument)) (defun guix-command-improve-arguments (arguments commands) - "Return ARGUMENTS for 'guix COMMANDS ...' modified for popup interface." + "Return ARGUMENTS for 'guix COMMANDS ...' modified for transient interface." (let ((improvers (cons 'guix-command-improve-common-argument (bui-assoc-value guix-command-argument-improvers - commands)))) + commands)))) (mapcar (lambda (argument) (guix-command-improve-argument argument improvers)) arguments))) @@ -592,7 +592,7 @@ commands.") "Return additional arguments for COMMANDS." (let ((rest-arg (guix-command-rest-argument commands))) (append (bui-assoc-value guix-command-additional-arguments - commands) + commands) (and rest-arg (list rest-arg))))) ;; Ideally, only `guix-command-all-arguments' function should exist with @@ -611,7 +611,7 @@ commands.") (defun guix-command-all-arguments (&optional commands) ;; Note: `guix-command-arguments' name cannot be used because function - ;; with this name is generated by `magit-define-popup'. + ;; with this name is generated by `transient-define-prefix'. "Return list of arguments for 'guix COMMANDS ...'." (let ((command (car commands))) (if (member command @@ -634,28 +634,25 @@ commands.") (guix-command--all-arguments-memoize (list command)))) (guix-command--all-arguments commands)))) -(defun guix-command-switch->popup-switch (switch) - "Return popup switch from command SWITCH argument." - (list (guix-command-argument-char switch) +(defun guix-command-switch->transient-switch (switch) + "Return transient switch from command SWITCH argument." + (list (format "-%c" (guix-command-argument-char switch)) + (guix-command-argument-name switch) (or (guix-command-argument-doc switch) - "Unknown") - (guix-command-argument-name switch))) + "Unknown"))) -(defun guix-command-option->popup-option (option) - "Return popup option from command OPTION argument." - (list (guix-command-argument-char option) +(defun guix-command-option->transient-option (option) + "Return transient option from command OPTION argument." + (list (format "-%c" (guix-command-argument-char option)) + (guix-command-argument-name option) (or (guix-command-argument-doc option) "Unknown") - (let ((name (guix-command-argument-name option))) - (if (string-match-p " \\'" name) ; ends with space - name - (concat name "="))) (or (guix-command-argument-fun option) 'read-from-minibuffer))) -(defun guix-command-action->popup-action (action) - "Return popup action from command ACTION argument." - (list (guix-command-argument-char action) +(defun guix-command-action->transient-suffix (action) + "Return transient suffix from command ACTION argument." + (list (format "-%c" (guix-command-argument-char action)) (or (guix-command-argument-doc action) (guix-command-argument-name action) "Unknown") @@ -683,8 +680,8 @@ commands.") "Return actions from ARGUMENTS." (cl-remove-if-not #'guix-command-argument-action? arguments)) - -;;; Post processing popup arguments + +;;; Post processing transient arguments (defvar guix-command-post-processors '(("environment" @@ -698,7 +695,7 @@ commands.") ("system" guix-command-post-process-rest-single)) "Alist of guix commands and functions for post-processing -a list of arguments returned from popup interface. +a list of arguments returned from transient interface. Each function is called on the returned arguments in turn.") (defvar guix-command-rest-arg-regexp @@ -760,13 +757,13 @@ Leave '--' string as a separate argument." :split? t)) (defun guix-command-post-process-package-args (args) - "Adjust popup ARGS for 'guix package' command." + "Adjust transient ARGS for 'guix package' command." (guix-command-post-process-matching-args args (rx string-start (or "--install " "--remove ") (+ any)) :split? t)) (defun guix-command-post-process-environment-packages (args) - "Adjust popup ARGS for specified packages of 'guix environment' + "Adjust transient ARGS for specified packages of 'guix environment' command." (guix-command-post-process-matching-args args (rx string-start "++packages " (group (+ any))) @@ -774,14 +771,14 @@ command." :split? t)) (defun guix-command-post-process-environment-ad-hoc (args) - "Adjust popup ARGS for '--ad-hoc' argument of 'guix environment' + "Adjust transient ARGS for '--ad-hoc' argument of 'guix environment' command." (guix-command-post-process-matching-args args (rx string-start "--ad-hoc " (+ any)) :split? t)) (defun guix-command-post-process-args (commands args) - "Adjust popup ARGS for guix COMMANDS." + "Adjust transient ARGS for guix COMMANDS." (let* ((command (car commands)) (processors (append (bui-assoc-value guix-command-post-processors commands) @@ -931,32 +928,31 @@ open the log file(s)." ;;; Generating popups, actions, etc. (defmacro guix-command-define-popup-action (name &optional commands) - "Define NAME function to generate (if needed) and run popup for COMMANDS." + "Define NAME function to generate (if needed) and run transient for COMMANDS." (declare (indent 1) (debug t)) - (let* ((popup-fun (guix-command-symbol `(,@commands "popup"))) + (let* ((prefix-fun (guix-command-symbol `(,@commands "prefix"))) (doc (format "Call `%s' (generate it if needed)." - popup-fun))) + prefix-fun))) `(defun ,name (&optional arg) ,doc (interactive "P") - (unless (fboundp ',popup-fun) - (guix-command-generate-popup ',popup-fun ',commands)) - (,popup-fun arg)))) + (unless (fboundp ',prefix-fun) + (guix-command-generate-prefix ',prefix-fun ',commands)) + (,prefix-fun)))) (defmacro guix-command-define-execute-action (name executor &optional commands) "Define NAME function to execute the current action for guix COMMANDS. EXECUTOR function is called with the current command line arguments." (declare (indent 1) (debug t)) - (let* ((arguments-fun (guix-command-symbol `(,@commands "arguments"))) - (doc (format "Call `%s' with the current popup arguments." + (let* ((doc (format "Call `%s' with the current transient arguments." executor))) `(defun ,name (&rest args) ,doc - (interactive (,arguments-fun)) + (interactive) (,executor (append ',commands (guix-command-post-process-args - ',commands args)))))) + ',commands (transient-args (transient-current-command)))))))) (defun guix-command-generate-popup-actions (actions &optional commands) "Generate 'popup' commands from ACTIONS arguments for guix COMMANDS." @@ -977,11 +973,11 @@ EXECUTOR function is called with the current command line arguments." commands (guix-command-argument-name action)) ,commands)))))) -(defun guix-command-generate-popup (name &optional commands) - "Define NAME popup with 'guix COMMANDS ...' interface." +(defun guix-command-generate-prefix (name &optional commands) + "Define NAME prefix with 'guix COMMANDS ...' interface." (let* ((command (car commands)) (man-page (concat "guix" (and command (concat "-" command)))) - (doc (format "Popup window for '%s' command." + (doc (format "Transient for '%s' command." (guix-concat-strings (cons "guix" commands) " "))) (args (guix-command-all-arguments commands)) @@ -998,18 +994,22 @@ EXECUTOR function is called with the current command line arguments." (guix-command-generate-popup-actions popup-actions commands) (guix-command-generate-execute-actions execute-actions commands)) (eval - `(magit-define-popup ,name + `(transient-define-prefix ,name () ,doc - 'guix-commands :man-page ,man-page - :switches ',(mapcar #'guix-command-switch->popup-switch switches) - :options ',(mapcar #'guix-command-option->popup-option options) - :actions ',(mapcar #'guix-command-action->popup-action actions) - :max-action-columns 4)))) + ,@(and switches + `(["Switches" + ,@(mapcar #'guix-command-switch->transient-switch switches)])) + ,@(and options + `(["Options" + ,@(mapcar #'guix-command-option->transient-option options)])) + ,@(and actions + `(["Actions" + ,@(mapcar #'guix-command-action->transient-suffix actions)])))))) -(declare-function guix-command-popup "guix-command" t) +(declare-function guix-command-prefix "guix-command" t) -;;;###autoload (autoload 'guix-command "guix-command" "Popup window for 'guix' shell commands." t) +;;;###autoload (autoload 'guix-command "guix-command" "Transient for 'guix' shell commands." t) (guix-command-define-popup-action guix-command) (declare-function guix-find-package-definition "guix-package" t) diff --git a/elisp/guix-help.el b/elisp/guix-help.el index da69b09..d4aa472 100644 --- a/elisp/guix-help.el +++ b/elisp/guix-help.el @@ -68,7 +68,7 @@ If ARG is non-nil (interactively with prefix), show Guix info manual." :group 'guix-help-faces) (defvar guix-help-specifications - '("Popup interface for the rest commands" + '("Transient interface for the rest commands" guix "Show packages and their definitions" guix-all-packages diff --git a/elisp/guix-popup.el b/elisp/guix-popup.el deleted file mode 100644 index 77728f6..0000000 --- a/elisp/guix-popup.el +++ /dev/null @@ -1,227 +0,0 @@ -;;; guix-popup.el --- Popup interface for Emacs-Guix commands - -;; Copyright © 2018–2019, 2021 Alex Kost <alezost@HIDDEN> - -;; This file is part of Emacs-Guix. - -;; Emacs-Guix is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. -;; -;; Emacs-Guix is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with Emacs-Guix. If not, see <http://www.gnu.org/licenses/>. - -;;; Commentary: - -;; This file provides popup interface (using `magit-popup' library) for -;; Emacs-Guix commands. - -;;; Code: - -(require 'magit-popup) -(require 'guix-profiles) - -(defgroup guix-popup nil - "Popup interface for Emacs-Guix commands." - :group 'guix) - -;;;###autoload (autoload 'guix-popup "guix-popup" nil t) -(magit-define-popup guix-popup - "Show popup buffer for Emacs-Guix commands." - 'guix-popup - :actions '("Sub-popups" - (?p "packages" guix-package-popup) - (?P "profiles" guix-profile-popup) - (?s "services" guix-service-popup) - (?y "system commands" guix-system-popup) - (?l "package licenses" guix-license-popup) - (?S "store" guix-store-popup) - (?m "major/minor modes" guix-mode-popup) - (?c "guix shell commands" guix-command) - "Miscellaneous commands" - (?H "calculate file hash" guix-hash) - (?E "set Emacs environment" guix-set-emacs-environment) - "Auxiliary commands" - (?a "about" guix-about) - (?h "help (\"refcard\")" guix-help) - (?i "info manual" guix-info) - (?v "version" guix-version) - (?b "switch to buffer" guix-switch-to-buffer) - (?B "report guix bug" guix-report-bug)) - :max-action-columns #'guix-popup-max-columns) - -(defun guix-popup-max-columns (heading) - "Return the number of `:max-action-columns' for HEADING. -This function is used by command `guix-popup'." - (pcase heading - ("Sub-popups" 1) - ("Miscellaneous commands" 1) - (_ 2))) - -;;;###autoload -(defalias 'guix #'guix-popup - "Popup interface for Emacs-Guix commands.") - -(defun guix-popup-variable-value (var-name) - "Return string formatted for popup buffer. -String is made of variable VAR-NAME and its value." - (concat (propertize (symbol-name var-name) - 'face font-lock-variable-name-face) - " " - (propertize (prin1-to-string (symbol-value var-name)) - 'face 'magit-popup-option-value))) - -(defun guix-popup-format-profile () - "Return profile, formatted for '\\[guix-popup]'." - (guix-popup-variable-value 'guix-current-profile)) - -(defvar guix-popup-profile-variable - '(?p "profile" - guix-set-current-profile - guix-popup-format-profile) - "Popup structure for variable `guix-current-profile'.") - - -;;; Sub-popups - -(magit-define-popup guix-package-popup - "Show popup buffer for package commands." - 'guix-package-popup - :variables (list guix-popup-profile-variable) - :actions '("Show packages" - (?a "all" guix-all-packages) - (?i "installed" guix-installed-packages) - (?o "obsolete" guix-obsolete-packages) - (?s "superseded" guix-superseded-packages) - (?h "hidden" guix-hidden-packages) - "Search for packages" - (?n "by name" guix-packages-by-name) - (?N "by regexp (in name only)" guix-packages-by-name-regexp) - (?r "by regexp (in name, synopsis, description)" - guix-packages-by-regexp) - (?L "by location" guix-packages-by-location) - (?c "by license" guix-packages-by-license) - (?d "depending on other package(s)" guix-dependent-packages) - (?f "packages from file" guix-package-from-file) - (?y "packages from system config file" - guix-packages-from-system-config-file) - "Package locations" - (?l "show package locations" guix-package-locations) - (?e "\"edit\" package (find package definition)" - guix-find-package-definition) - (?F "find location file" guix-find-package-location-file) - "Other commands" - (?g "package graph" guix-package-graph) - (?z "package size" guix-package-size) - (?t "package lint" guix-package-lint) - (?C "lint checkers" guix-lint-checkers) - (?T "total number of packages" guix-number-of-packages)) - :max-action-columns #'guix-package-popup-max-columns) - -(defun guix-package-popup-max-columns (heading) - "Return the number of `:max-action-columns' for HEADING. -This function is used by command `guix-package-popup'." - (pcase heading - ("Show packages" 2) - ("Other commands" 2) - (_ 1))) - -(magit-define-popup guix-profile-popup - "Show popup buffer for profiles and generations commands." - 'guix-profile-popup - :variables (list guix-popup-profile-variable) - :actions '("Show profiles" - (?a "all" guix-profiles) - (?s "system" guix-system-profile) - (?h "home" guix-home-profile) - (?c "current" guix-current-profile) - "Show generations (of the current profile)" - (?g "all" guix-generations) - (?t "by time" guix-generations-by-time) - (?l "last" guix-last-generations) - "Other commands" - (?M "apply manifest to the current profile" - guix-apply-manifest)) - :max-action-columns 1) - -(magit-define-popup guix-service-popup - "Show popup buffer for service commands." - 'guix-service-popup - :actions '("Show services" - (?a "all system services" guix-all-services) - (?h "all Home services" guix-all-home-services) - (?d "default" guix-default-services) - (?n "by name" guix-services-by-name) - (?r "by regexp" guix-services-by-regexp) - (?L "by location" guix-services-by-location) - (?y "services from system config file" - guix-services-from-system-config-file) - "Service locations" - (?l "show service locations" guix-service-locations) - (?e "\"edit\" service (find service definition)" - guix-find-service-definition) - (?F "find location file" guix-find-service-location-file)) - :max-action-columns 1) - -(magit-define-popup guix-system-popup - "Show popup buffer for system commands." - 'guix-system-popup - :actions '("From system profile" - (?p "packages" guix-installed-system-packages) - (?P "profile" guix-system-profile) - (?g "all generations" guix-system-generations) - (?t "generations by time" guix-system-generations-by-time) - (?l "last generations" guix-last-system-generations) - "From system configuration file" - (?y "system" guix-system-from-file) - (?k "packages" guix-packages-from-system-config-file) - (?s "services" guix-services-from-system-config-file)) - :max-action-columns 1) - -(magit-define-popup guix-license-popup - "Show popup buffer for license commands." - 'guix-license-popup - :actions '((?a "show all package licenses" guix-licenses) - (?u "browse license URL" guix-browse-license-url) - (?e "\"edit\" license (find license definition)" - guix-find-license-definition) - (?F "find license location file" - guix-find-license-location-file)) - :max-action-columns 1) - -(magit-define-popup guix-store-popup - "Show popup buffer for store commands." - 'guix-store-popup - :actions '("Show store items" - (?l "live items" guix-store-live-items) - (?d "dead items" guix-store-dead-items) - (?e "failures" guix-store-failures) - (?i "single item" guix-store-item) - (?D "derivers" guix-store-item-derivers) - (?R "requisites" guix-store-item-requisites) - (?f "referrers" guix-store-item-referrers) - (?F "references" guix-store-item-references)) - :max-action-columns 2) - -(magit-define-popup guix-mode-popup - "Show popup buffer for Emacs-Guix major/minor modes." - 'guix-mode-popup - :actions '("Modes" - (?p "guix-prettify-mode" guix-prettify-mode) - (?P "global-guix-prettify-mode" global-guix-prettify-mode) - (?b "guix-build-log-minor-mode" guix-build-log-minor-mode) - (?B "guix-build-log-mode" guix-build-log-mode) - (?d "guix-devel-mode" guix-devel-mode) - (?D "guix-derivation-mode" guix-derivation-mode) - (?e "guix-env-var-mode" guix-env-var-mode)) - :max-action-columns 1) - -(provide 'guix-popup) - -;;; guix-popup.el ends here diff --git a/elisp/guix-transient.el b/elisp/guix-transient.el new file mode 100644 index 0000000..36a4733 --- /dev/null +++ b/elisp/guix-transient.el @@ -0,0 +1,187 @@ +;;; guix-transient.el --- Transient interface for Emacs-Guix commands + +;; Copyright © 2018–2019, 2021 Alex Kost <alezost@HIDDEN> +;; Copyright © 2025 Nicolas Graves <ngraves@HIDDEN> + +;; This file is part of Emacs-Guix. + +;; Emacs-Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; Emacs-Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with Emacs-Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file provides transient interface (using `transient' library) for +;; Emacs-Guix commands. + +;;; Code: + +(require 'transient) +(require 'guix-profiles) + +(defgroup guix-transient nil + "Transient interface for Emacs-Guix commands." + :group 'guix) + +(defun guix-transient-format-profile () + "Return profile, formatted for `\\[guix-transient]'." + (interactive) + (concat (propertize "profile" + 'face 'transient-heading) + " " + (propertize (symbol-value 'guix-current-profile) + 'face 'transient-value))) + +(transient-define-infix guix-set-profile-infix () + :class 'transient-lisp-variable + :variable 'guix-current-profile + :reader 'guix-set-current-profile + :description "Set profile") + +;;;###autoload +(transient-define-prefix guix-transient () + "Show transient interface for Emacs-Guix commands." + [["Sub-menus" + ("p" "packages" guix-package-transient) + ("P" "profiles" guix-profile-transient) + ("s" "services" guix-service-transient) + ("y" "system commands" guix-system-transient) + ("l" "package licenses" guix-license-transient) + ("S" "store" guix-store-transient) + ("m" "major/minor modes" guix-mode-transient) + ("c" "guix shell commands" guix-command)] + ["Miscellaneous commands" + ("H" "calculate file hash" guix-hash) + ("E" "set Emacs environment" guix-set-emacs-environment)] + ["Auxiliary commands" + ("a" "about" guix-about) + ("h" "help (\"refcard\")" guix-help) + ("i" "info manual" guix-info) + ("v" "version" guix-version) + ("b" "switch to buffer" guix-switch-to-buffer) + ("B" "report guix bug" guix-report-bug)]]) + +;;;###autoload +(defalias 'guix #'guix-transient + "Transient interface for Emacs-Guix commands.") + +(transient-define-prefix guix-package-transient () + "Show transient interface for package commands." + ["Profile" + ("p" "Set profile" guix-set-profile-infix) + ("v" "Current profile" guix-transient-format-profile :transient nil :if (lambda () guix-current-profile))] + ["Show packages" + ("a" "all" guix-all-packages) + ("i" "installed" guix-installed-packages) + ("o" "obsolete" guix-obsolete-packages) + ("s" "superseded" guix-superseded-packages) + ("h" "hidden" guix-hidden-packages)] + ["Search for packages" + ("n" "by name" guix-packages-by-name) + ("N" "by regexp (in name only)" guix-packages-by-name-regexp) + ("r" "by regexp (in name, synopsis, description)" guix-packages-by-regexp) + ("L" "by location" guix-packages-by-location) + ("c" "by license" guix-packages-by-license) + ("d" "depending on other package(s)" guix-dependent-packages) + ("f" "packages from file" guix-package-from-file) + ("y" "packages from system config file" guix-packages-from-system-config-file)] + ["Package locations" + ("l" "show package locations" guix-package-locations) + ("e" "\"edit\" package (find package definition)" guix-find-package-definition) + ("F" "find location file" guix-find-package-location-file)] + ["Other commands" + ("g" "package graph" guix-package-graph) + ("z" "package size" guix-package-size) + ("t" "package lint" guix-package-lint) + ("C" "lint checkers" guix-lint-checkers) + ("T" "total number of packages" guix-number-of-packages)]) + +(transient-define-prefix guix-profile-transient () + "Show transient interface for profiles and generations commands." + ["Profile" + ("p" "Set profile" guix-set-profile-infix) + ("v" "Current profile" guix-transient-format-profile :transient nil :if (lambda () guix-current-profile))] + ["Show profiles" + ("a" "all" guix-profiles) + ("s" "system" guix-system-profile) + ("h" "home" guix-home-profile) + ("c" "current" guix-current-profile)] + ["Show generations (of the current profile)" + ("g" "all" guix-generations) + ("t" "by time" guix-generations-by-time) + ("l" "last" guix-last-generations)] + ["Other commands" + ("M" "apply manifest to the current profile" guix-apply-manifest)]) + +(transient-define-prefix guix-service-transient () + "Show transient interface for service commands." + [["Show services" + ("a" "all system services" guix-all-services) + ("h" "all Home services" guix-all-home-services) + ("d" "default" guix-default-services) + ("n" "by name" guix-services-by-name) + ("r" "by regexp" guix-services-by-regexp) + ("L" "by location" guix-services-by-location) + ("y" "services from system config file" guix-services-from-system-config-file)] + ["Service locations" + ("l" "show service locations" guix-service-locations) + ("e" "\"edit\" service (find service definition)" guix-find-service-definition) + ("F" "find location file" guix-find-service-location-file)]]) + +(transient-define-prefix guix-system-transient () + "Show transient interface for system commands." + [["From system profile" + ("p" "packages" guix-installed-system-packages) + ("P" "profile" guix-system-profile) + ("g" "all generations" guix-system-generations) + ("t" "generations by time" guix-system-generations-by-time) + ("l" "last generations" guix-last-system-generations)] + ["From system configuration file" + ("y" "system" guix-system-from-file) + ("k" "packages" guix-packages-from-system-config-file) + ("s" "services" guix-services-from-system-config-file)]]) + +(transient-define-prefix guix-license-transient () + "Show transient interface for license commands." + [["License commands" + ("a" "show all package licenses" guix-licenses) + ("u" "browse license URL" guix-browse-license-url) + ("e" "\"edit\" license (find license definition)" guix-find-license-definition) + ("F" "find license location file" guix-find-license-location-file)]]) + +(transient-define-prefix guix-store-transient () + "Show transient interface for store commands." + [["Show store items" + ("l" "live items" guix-store-live-items) + ("d" "dead items" guix-store-dead-items) + ("e" "failures" guix-store-failures) + ("i" "single item" guix-store-item)] + ["Show details" + ("D" "derivers" guix-store-item-derivers) + ("R" "requisites" guix-store-item-requisites) + ("f" "referrers" guix-store-item-referrers) + ("F" "references" guix-store-item-references)]]) + +(transient-define-prefix guix-mode-transient () + "Show transient interface for Emacs-Guix major/minor modes." + [["Modes" + ("p" "guix-prettify-mode" guix-prettify-mode) + ("P" "global-guix-prettify-mode" global-guix-prettify-mode) + ("b" "guix-build-log-minor-mode" guix-build-log-minor-mode) + ("B" "guix-build-log-mode" guix-build-log-mode) + ("d" "guix-devel-mode" guix-devel-mode) + ("D" "guix-derivation-mode" guix-derivation-mode) + ("e" "guix-env-var-mode" guix-env-var-mode)]]) + +(provide 'guix-transient) + +;;; guix-transient.el ends here diff --git a/elisp/guix.el b/elisp/guix.el index b4c170a..2686a24 100644 --- a/elisp/guix.el +++ b/elisp/guix.el @@ -6,7 +6,7 @@ ;; Version: 0.5.2 ;; URL: https://emacs-guix.gitlab.io/website/ ;; Keywords: tools -;; Package-Requires: ((emacs "24.3") (dash "2.11.0") (geiser "0.8") (bui "1.2.0") (magit-popup "2.1.0") (edit-indirect "0.1.4")) +;; Package-Requires: ((emacs "24.3") (dash "2.11.0") (geiser "0.8") (bui "1.2.0") (transient "0.8.4") (edit-indirect "0.1.4")) ;; This file is part of Emacs-Guix. diff --git a/elisp/local.mk b/elisp/local.mk index 3bc0a27..4efbae5 100644 --- a/elisp/local.mk +++ b/elisp/local.mk @@ -40,8 +40,8 @@ if EDITINDIRECT_DIR AM_ELCFLAGS += -L "$(editindirectlispdir)" endif -if POPUP_DIR - AM_ELCFLAGS += -L "$(popuplispdir)" +if TRANSIENT_DIR + AM_ELCFLAGS += -L "$(transientlispdir)" endif if EMACS_Q @@ -81,7 +81,7 @@ EL_FILES = \ %D%/guix-service.el \ %D%/guix-pcomplete.el \ %D%/guix-prettify.el \ - %D%/guix-popup.el \ + %D%/guix-transient.el \ %D%/guix-ui-messages.el \ %D%/guix-ui.el \ %D%/guix-ui-license.el \ -- 2.48.1
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 5/5] Update NEWS Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:10:03 +0000 Resent-Message-ID: <handler.76699.B76699.174096779329334 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: Nicolas Graves <ngraves@HIDDEN> Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174096779329334 (code B ref 76699); Mon, 03 Mar 2025 02:10:03 +0000 Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:53 +0000 Received: from localhost ([127.0.0.1]:40749 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovFg-0007cw-Hs for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:52 -0500 Received: from 15.mo561.mail-out.ovh.net ([87.98.150.177]:55823) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovFW-0007bU-UY for 76699 <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:44 -0500 Received: from director6.ghost.mail-out.ovh.net (unknown [10.108.2.97]) by mo561.mail-out.ovh.net (Postfix) with ESMTP id 4Z5j1d2w9hz1RRm for <76699 <at> debbugs.gnu.org>; Mon, 3 Mar 2025 02:09:41 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-bxndx (unknown [10.110.168.221]) by director6.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 2CAAD1FDEC; Mon, 3 Mar 2025 02:09:40 +0000 (UTC) Received: from ngraves.fr ([37.59.142.100]) by ghost-submission-5b5ff79f4f-bxndx with ESMTPSA id dwdmK2QPxWfgtRAAslHJeA (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:09:40 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-100R0036aa0297d-b08d-48ac-8876-299d4ceed16f, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:09:20 +0100 Message-ID: <20250303020932.4194-5-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250303020932.4194-1-ngraves@HIDDEN> References: <20250303020932.4194-1-ngraves@HIDDEN> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1109292885370135266 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekjecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeelffejteeutefhfeekfffffedvudekjeekgfeludeitdfhkeevhfeivdfhffeggeenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggedpfeejrdehledrudegvddruddttdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopedupdhrtghpthhtohepjeeiieelleesuggvsggsuhhgshdrghhnuhdrohhrghdpoffvtefjohhsthepmhhoheeiudgmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=UuPf1b71z5w7VLOfBfDFHUJKObwQbr24mw5cYirE7GI=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967781; v=1; b=ZIO/5sdl2QxwnCy6TJUx2G6yLKHQ9IrjUhmgKHexSHg93sc1pBF67eJbPY22ema170u4rVMV DJbqcf9+slNmskbQW6p9I5aoSei59HlCU6EfR7CMYwqC0w5WKUiyVKGuzXVW4DHusJ2gL3IPEzg BDcd3Ze25DlfdDH6bjUjmYcjDjy0GrJPMJI44nYOBr2Q2Fjfrf399wU0kIzaDPzf5uMv67JNZEY tzN7Kv1EiPt5tI7X4NfP3e/CfJk0Wqgz37xmpZBWJjKW+Zbo4LJUyOVTLmlTqvfAqzZSo6kB2VY tCx2DsK7PHHhK7YsiOf7rWAdqOm3J0AVNMQqLUivkXhHA== X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --- NEWS | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NEWS b/NEWS index b4904f0..c971130 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,15 @@ -*- mode: org -*- +* Changes in 0.5.3 (since 0.5.2) + +Minor user-visible changes, no functionality addition, mostly refreshing changes: + +- refreshing most doctrings to pass on emacs@29 flymake standards +- remove dependency on the dash library, introduce the lighter llama library in order to replace the compact syntax for short lambdas +- replace outdated emacs-popup by transient library +- allow the use of the repository as a channel +- refresh installation / development tools + * Changes in 0.5.2 (since 0.5.1.1) ** User visible changes -- 2.48.1
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 4/5] Use a development channel instead of guix.scm Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Mon, 03 Mar 2025 02:10:04 +0000 Resent-Message-ID: <handler.76699.B76699.174096779429348 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 76699 <at> debbugs.gnu.org Cc: Nicolas Graves <ngraves@HIDDEN> Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174096779429348 (code B ref 76699); Mon, 03 Mar 2025 02:10:04 +0000 Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:54 +0000 Received: from localhost ([127.0.0.1]:40751 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tovFg-0007d5-VF for submit <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:54 -0500 Received: from 6.mo560.mail-out.ovh.net ([87.98.165.38]:35271) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tovFW-0007bN-JP for 76699 <at> debbugs.gnu.org; Sun, 02 Mar 2025 21:09:45 -0500 Received: from director11.ghost.mail-out.ovh.net (unknown [10.108.2.97]) by mo560.mail-out.ovh.net (Postfix) with ESMTP id 4Z5j1c4zZJz1Vh0 for <76699 <at> debbugs.gnu.org>; Mon, 3 Mar 2025 02:09:40 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-9vblb (unknown [10.110.96.237]) by director11.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 143661FDDB; Mon, 3 Mar 2025 02:09:39 +0000 (UTC) Received: from ngraves.fr ([37.59.142.95]) by ghost-submission-5b5ff79f4f-9vblb with ESMTPSA id fxSWJWMPxWd6YAcAkrx+OQ (envelope-from <ngraves@HIDDEN>); Mon, 03 Mar 2025 02:09:39 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-95G0015523aaf8-a601-434d-a087-22ec13bad09a, 3FD0527DE2CE9D3C35B0E9483E243F320C79A24B) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> Date: Mon, 3 Mar 2025 03:09:19 +0100 Message-ID: <20250303020932.4194-4-ngraves@HIDDEN> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250303020932.4194-1-ngraves@HIDDEN> References: <20250303020932.4194-1-ngraves@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 1109011410058011362 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeljeekkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepkefgudeuheevuefggfdthfevffdvuddvfeeuueeuudeuffdvveduieejveeiffffnecuffhomhgrihhnpehstghmrdhnvgigthdpghhnuhdrohhrghenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggedpfeejrdehledrudegvddrleehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepuddprhgtphhtthhopeejieeileelseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehiedtmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=rq1mhPKcsPTsFzSpCJLKafTQtL8K6vZFIug55BP6V1w=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1740967780; v=1; b=IuIyGatKXyi1UoMxNRS2s5Ukw3vLqLLxissgw8ayUMRHIcGvpIwIAEUAGeLMM1+tMO34J8/M FIBfRUEdMSaFG2573skAEh69At3DuSjdV4mUsGe0dfstQFEkmRKH2FrRGLOPP8kEDjRrdXH+t5O MxrkxGUIU8qi3wO6AJKcHLZ4IZfvQL0EzqQJZ+WYkHcpnMOhV19JPkLemVYbNiBcdssUtfBkn2m 2RgLAiasipvyEIPQNIXecLlja8Z3RY3lRw+fPLasqLjiz8cW8Ow46Vho6go325/hWbsR5tkLnFZ lOONhi8xal16WCzG28be4tKule3XxITgliB8IluYUAH+A== X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --- .guix-channel | 3 + guix.scm => channel/emacs-guix-channel.scm | 69 ++++++-------- channel/emacs-guix-channel.scm.next | 104 +++++++++++++++++++++ 3 files changed, 137 insertions(+), 39 deletions(-) create mode 100644 .guix-channel rename guix.scm => channel/emacs-guix-channel.scm (50%) create mode 100644 channel/emacs-guix-channel.scm.next diff --git a/.guix-channel b/.guix-channel new file mode 100644 index 0000000..bb2ac66 --- /dev/null +++ b/.guix-channel @@ -0,0 +1,3 @@ +(channel + (version 0) + (directory "channel")) diff --git a/guix.scm b/channel/emacs-guix-channel.scm similarity index 50% rename from guix.scm rename to channel/emacs-guix-channel.scm index d35b0ba..ea8a6e7 100644 --- a/guix.scm +++ b/channel/emacs-guix-channel.scm @@ -2,6 +2,7 @@ ;; Copyright © 2017 Alex Kost <alezost@HIDDEN> ;; Copyright © 2019 Oleg Pykhalov <go.wigust@HIDDEN> +;; Copyright © 2025 Nicolas Graves <ngraves@HIDDEN> ;; This file is part of Emacs-Guix. @@ -21,72 +22,62 @@ ;;; Commentary: ;; This file contains Guix package for development version of -;; Emacs-Guix. To build or install, run: +;; Emacs-Guix. To build it, you need guile-git in your profile. +;; Then, in the parent directory, run or install: ;; -;; guix build --file=guix.scm -;; guix package --install-from-file=guix.scm +;; guix build -L channel emacs-guix-devel +;; guix install -L channel emacs-guix-devel ;; The main purpose of this file though is to make a development ;; environment for building Emacs-Guix: ;; -;; guix environment --pure --load=guix.scm +;; guix shell -L channel -D --pure emacs-guix-devel ;; ./autogen.sh ;; ./configure ;; make ;;; Code: +(define-module (emacs-guix-channel)) + (use-modules + (git) (ice-9 popen) (ice-9 rdelim) (guix build utils) (guix gexp) (guix git-download) (guix packages) + (guix utils) (gnu packages autotools) (gnu packages emacs) (gnu packages emacs-xyz) + (gnu packages guile-xyz) (gnu packages pkg-config) (gnu packages texinfo)) -(define %source-dir (dirname (current-filename))) - -(define (git-output . args) - "Execute 'git ARGS ...' command and return its output without trailing -newspace." - (with-directory-excursion %source-dir - (let* ((port (apply open-pipe* OPEN_READ "git" args)) - (output (read-string port))) - (close-pipe port) - (string-trim-right output #\newline)))) - -(define (current-commit) - (git-output "log" "-n" "1" "--pretty=format:%H")) - -(define emacs-guix-devel - (let ((commit (current-commit))) +(define-public emacs-guix/devel + (let* ((source-dir (dirname (dirname (current-filename)))) + (repo (repository-open source-dir)) + (commit (oid->string (object-id (revparse-single repo "HEAD"))))) (package (inherit emacs-guix) - (version (string-append (package-version emacs-guix) - "-" (string-take commit 7))) - (source (local-file %source-dir + (name "emacs-guix-devel") + (version (string-append + (string-drop-right (package-version emacs-guix) 7) + (string-take commit 7))) + (source (local-file source-dir #:recursive? #t - #:select? (git-predicate %source-dir))) + #:select? (git-predicate source-dir))) (arguments - (append (package-arguments emacs-guix) - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ (zero? (system* "sh" "autogen.sh")))))))) - (native-inputs - `(("pkg-config" ,pkg-config) - ;; 'emacs-minimal' does not find Emacs packages (this is for - ;; "guix environment"). - ("emacs" ,emacs-no-x) - ("autoconf" ,autoconf) - ("automake" ,automake) - ("texinfo" ,texinfo)))))) - -emacs-guix-devel + (substitute-keyword-arguments (package-arguments emacs-guix) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'autogen + (lambda _ (zero? (system* "sh" "autogen.sh")))))))) + (propagated-inputs + (modify-inputs (package-propagated-inputs emacs-guix) + (replace "emacs-dash" emacs-llama) + (replace "emacs-magit-popup" emacs-transient)))))) ;;; guix.scm ends here diff --git a/channel/emacs-guix-channel.scm.next b/channel/emacs-guix-channel.scm.next new file mode 100644 index 0000000..58a2a44 --- /dev/null +++ b/channel/emacs-guix-channel.scm.next @@ -0,0 +1,104 @@ +;;; guix.scm --- Guix package for Emacs-Guix + +;; Copyright © 2017 Alex Kost <alezost@HIDDEN> +;; Copyright © 2019 Oleg Pykhalov <go.wigust@HIDDEN> +;; Copyright © 2025 Nicolas Graves <ngraves@HIDDEN> + +;; This file is part of Emacs-Guix. + +;; Emacs-Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; Emacs-Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with Emacs-Guix. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file contains Guix package for development version of +;; Emacs-Guix. To build or install, run: +;; +;; guix build --file=guix.scm +;; guix package --install-from-file=guix.scm + +;; The main purpose of this file though is to make a development +;; environment for building Emacs-Guix: +;; +;; guix environment --pure --load=guix.scm +;; ./autogen.sh +;; ./configure +;; make + +;;; Code: + +(define-module (emacs-guix-channel)) + +(use-modules + (git) + (ice-9 match) + (ice-9 popen) + (ice-9 rdelim) + (guix build utils) + (guix gexp) + (guix git-download) + (guix packages) + (guix profiles) + (gnu packages autotools) + (gnu packages emacs) + (gnu packages emacs-xyz) + (rde packages emacs-xyz) + (gnu packages guile) + (gnu packages guile-xyz) + (rde packages guile-xyz) + (gnu packages package-management) + (gnu packages pkg-config) + (gnu packages terminals) + (gnu packages texinfo)) + +(define guix-with-guile-next + ((package-input-rewriting/spec `(("guile" . ,(const guile-next)))) guix)) + +(define emacs-guix/devel + (let* ((source-dir (dirname (dirname (current-filename)))) + (repo (repository-open source-dir)) + (commit (oid->string + (object-id (revparse-single repo "HEAD"))))) + (package + (inherit emacs-guix) + (name "emacs-guix-arei") + (version (string-append + (string-drop-right (package-version emacs-guix) 7) + (string-take commit 7))) + (source (local-file source-dir + #:recursive? #t + #:select? (git-predicate source-dir))) + ;; (arguments + ;; (append (package-arguments emacs-guix) + ;; '(#:phases + ;; (modify-phases %standard-phases + ;; (add-after 'unpack 'autogen + ;; (lambda _ (zero? (system* "sh" "autogen.sh")))))))) + (inputs + (modify-inputs (package-inputs emacs-guix) + (replace "guile" guile-next) + (append guile-ares-rs-latest) + (append foot))) + (propagated-inputs + (modify-inputs (package-propagated-inputs emacs-guix) + (append emacs-arei-latest)))))) + +(match (cdr (command-line)) + (("build" . rest) emacs-guix/devel) + ;; (("shell" "-D" . rest) ) + ;; (("shell" . rest) (specifications->manifest (list "emacs-guix/devel"))) + (otherwise (package->development-manifest emacs-guix/devel) + ;; (error (format #f "Unable to handle ~a!" otherwise)) + )) + +;;; guix.scm ends here -- 2.48.1
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH 4/5] Use a development channel instead of guix.scm Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Sat, 08 Mar 2025 16:57:01 +0000 Resent-Message-ID: <handler.76699.B76699.174145296312333 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Nicolas Graves <ngraves@HIDDEN> Cc: 76699 <at> debbugs.gnu.org Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174145296312333 (code B ref 76699); Sat, 08 Mar 2025 16:57:01 +0000 Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 16:56:03 +0000 Received: from localhost ([127.0.0.1]:56459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tqxT0-0003Cp-VZ for submit <at> debbugs.gnu.org; Sat, 08 Mar 2025 11:56:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60820) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tqxSz-0003C7-4L for 76699 <at> debbugs.gnu.org; Sat, 08 Mar 2025 11:56:01 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1tqxSr-00027S-Qo; Sat, 08 Mar 2025 11:55:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=M/6O6qqZqYQBE2VFUzYJg1c8QWDWie34Y7sJuwqDMr4=; b=YZQxKLAtG92619+OpZ5w 1xnJB6TwcWLmI9lP6uZ8hftsl1N5XLVTfFrFcGIARVt1PS1bd2jBaRAyZV7Hikh9j0IM6BN0Rd1UH aEDvLsvYTUgSWhb7/8IwRi4zvU3fUpmYLKU2ehhRR0jmeOEHrjFmkLqfM7Lj420hX7MNrq33CC8zc lO4PFeZoE560Qe2ToGRoExAZVV1oKn3427/0VNoHABXN9Yb++glWaj1Oxt+9Hj5GoZnOGTPBKlvwz VEQwo5ZNKuJw0BzbE2uKrWprTXSah3QykyNwONv1pybY2K7REPkg8wrNL0R4B8wRGwwpNkByb/Sxi 5CgdCgf7DTxr3w==; From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN> In-Reply-To: <20250303020932.4194-4-ngraves@HIDDEN> (Nicolas Graves's message of "Mon, 3 Mar 2025 03:09:19 +0100") References: <20250303020932.4194-1-ngraves@HIDDEN> <20250303020932.4194-4-ngraves@HIDDEN> Date: Sat, 08 Mar 2025 17:55:43 +0100 Message-ID: <87ldtfsbqo.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hi Nicolas, Nicolas Graves <ngraves@HIDDEN> skribis: > --- > .guix-channel | 3 + > guix.scm =3D> channel/emacs-guix-channel.scm | 69 ++++++-------- > channel/emacs-guix-channel.scm.next | 104 +++++++++++++++++++++ > 3 files changed, 137 insertions(+), 39 deletions(-) > create mode 100644 .guix-channel > rename guix.scm =3D> channel/emacs-guix-channel.scm (50%) > create mode 100644 channel/emacs-guix-channel.scm.next > > diff --git a/.guix-channel b/.guix-channel > new file mode 100644 > index 0000000..bb2ac66 > --- /dev/null > +++ b/.guix-channel > @@ -0,0 +1,3 @@ > +(channel > + (version 0) > + (directory "channel")) > diff --git a/guix.scm b/channel/emacs-guix-channel.scm > similarity index 50% > rename from guix.scm > rename to channel/emacs-guix-channel.scm > index d35b0ba..ea8a6e7 100644 > --- a/guix.scm > +++ b/channel/emacs-guix-channel.scm > @@ -2,6 +2,7 @@ I=E2=80=99d suggest: 1. Renaming =E2=80=98channel=E2=80=99 to =E2=80=98.guix/modules=E2=80=99; 2. Making =E2=80=98guix.scm=E2=80=99 a symlink to =E2=80=98.guix/modules/emacs-guix-packages.scm=E2=80=99. This would follow the conventions described in the cookbook (info "(guix-cookbook) Software Development"). > +(define-module (emacs-guix-channel)) > + > (use-modules > + (git) > (ice-9 popen) > (ice-9 rdelim) While you=E2=80=99re at it, I=E2=80=99d suggest grouping things together: (define-module (emacs-guix-packages) #:use-module (git) #:use-module =E2=80=A6) > +++ b/channel/emacs-guix-channel.scm.next What is this supposed to be? I suspect it=E2=80=99s unnecessary. :-) Thanks, Ludo=E2=80=99.
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH emacs-guix 0/4] Refresh package emacs-guix Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Sat, 08 Mar 2025 16:58:02 +0000 Resent-Message-ID: <handler.76699.B76699.174145305112514 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Nicolas Graves <ngraves@HIDDEN> Cc: 76699 <at> debbugs.gnu.org Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.174145305112514 (code B ref 76699); Sat, 08 Mar 2025 16:58:02 +0000 Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 16:57:31 +0000 Received: from localhost ([127.0.0.1]:56464 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tqxUQ-0003Fm-Pv for submit <at> debbugs.gnu.org; Sat, 08 Mar 2025 11:57:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44580) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tqxUN-0003FO-FD for 76699 <at> debbugs.gnu.org; Sat, 08 Mar 2025 11:57:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1tqxUG-0002Dl-WB; Sat, 08 Mar 2025 11:57:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=V/4SQZo8k5/Iy5J6GYHAo5XbH+/5wW039iecAc33fvk=; b=JSpAD61c8OwBvJ3hWa8w rL3NSud93vKQPeveEH/5oqVI9vOT6zaUEYzRBskCk5WgYmAvdj318m32NgzGX8RQB+LBIbKc+IeEx fVyGJTtA4fd8EG8E/ZhcfRDIAWObOn0VC/ricn+YKZ3Mmo4UvEtTq+PzZtQllstNuqc7Lz7+6tR/b rHPeUNy0G+OHJoP4gM9VCmtRolOOhjwPRus0WNvWi5ZTYibvmkPmdjBIxgt+08xreoJAKWwt488hv Lg1nJ8mbXtZTC8kT/eu4EkXgSi5k8uAqtf2mZyIS2+7JL5yqLD456buIVkmPMaiL9npaYmaZo301K JIo1N24jpOVa7A==; From: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN> In-Reply-To: <20250303020636.3461-1-ngraves@HIDDEN> (Nicolas Graves's message of "Mon, 3 Mar 2025 03:01:21 +0100") References: <20250303020636.3461-1-ngraves@HIDDEN> Date: Sat, 08 Mar 2025 17:57:17 +0100 Message-ID: <87jz8zsbo2.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hello, Nicolas Graves <ngraves@HIDDEN> skribis: > This is a series of refreshing commits for emacs-guix. Yay! > This is done in an effort to port emacs-guix to > guile-ares-rs/emacs-arei backend, currently in progress here : > https://git.sr.ht/~ngraves/emacs-guix I remain fond of Geiser so I=E2=80=99m skeptical of this change. Perhaps y= ou could explain a bit why you think it=E2=80=99s worthwhile? > This is still a WIP, I'd still like to replace old references to > guix-environment by references to guix shell at least. I'm not able > to test all changes, since guix-command seems to be broken (before > this patch series I mean). > > Thus, I invite users of emacs-guix to try that series and report any > bug that could have been caused by it. I haven=E2=80=99t tried it yet but it LGTM, except for patch #4. Ludo=E2=80=99.
X-Loop: help-debbugs@HIDDEN Subject: [bug#76699] [PATCH emacs-guix 0/4] Refresh package emacs-guix Resent-From: Nicolas Graves <ngraves@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: guix-patches@HIDDEN Resent-Date: Sat, 08 Mar 2025 23:26:02 +0000 Resent-Message-ID: <handler.76699.B76699.17414763104117 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 76699 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?UTF-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Cc: 76699 <at> debbugs.gnu.org Received: via spool by 76699-submit <at> debbugs.gnu.org id=B76699.17414763104117 (code B ref 76699); Sat, 08 Mar 2025 23:26:02 +0000 Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 23:25:10 +0000 Received: from localhost ([127.0.0.1]:57261 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tr3Xa-00014B-0a for submit <at> debbugs.gnu.org; Sat, 08 Mar 2025 18:25:10 -0500 Received: from 4.mo583.mail-out.ovh.net ([178.33.111.247]:37765) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <ngraves@HIDDEN>) id 1tr3XV-0000z4-Fc for 76699 <at> debbugs.gnu.org; Sat, 08 Mar 2025 18:25:07 -0500 Received: from director7.ghost.mail-out.ovh.net (unknown [10.109.148.22]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4Z9K4v3dyKz1TXp for <76699 <at> debbugs.gnu.org>; Sat, 8 Mar 2025 23:25:03 +0000 (UTC) Received: from ghost-submission-5b5ff79f4f-qgvtf (unknown [10.110.118.174]) by director7.ghost.mail-out.ovh.net (Postfix) with ESMTPS id EC9A31FE64; Sat, 8 Mar 2025 23:25:02 +0000 (UTC) Received: from ngraves.fr ([37.59.142.106]) by ghost-submission-5b5ff79f4f-qgvtf with ESMTPSA id XqBSLc7RzGdOOgwAW/PBNw (envelope-from <ngraves@HIDDEN>); Sat, 08 Mar 2025 23:25:02 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-106R0060df6adbc-ca2e-407f-a9c2-2d44f50c50e5, 196D73215860B9B374AEA1D4B43499A65472C7F7) smtp.auth=ngraves@HIDDEN X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves <ngraves@HIDDEN> In-Reply-To: <87jz8zsbo2.fsf@HIDDEN> References: <20250303020636.3461-1-ngraves@HIDDEN> <87jz8zsbo2.fsf@HIDDEN> Date: Sun, 09 Mar 2025 00:25:02 +0100 Message-ID: <87o6yb2jht.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Ovh-Tracer-Id: 15118302476612068073 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduudegkeejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvvefujghffffkgggtgfesthhqredttddtjeenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeejjeejjeefuefgueefgefffeegffetkedtudejueektdevueeggeeiffegieduffenucffohhmrghinhepshhrrdhhthdpvghmrggtshgtohhnfhdrohhrghenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggedpfeejrdehledrudegvddruddtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopedupdhrtghpthhtohepjeeiieelleesuggvsggsuhhgshdrghhnuhdrohhrghdpoffvtefjohhsthepmhhoheekfegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=R1O1/M2wNFDaYi3BS0XPxrliIu6ml9kb+Iqz3O6TbIE=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1741476303; v=1; b=nHdPtOLcnJmPhJmMRCxjn0jZQY94YdvoaEMJDwZlvewSvH+DnGIkBa1N3B9fd0a1SL/Yha+Q zgUvvw1v+gBKhSL4Cv68CaZvcitFxFLb1JA5rjlipqDEQAqjwKP02XhIoDCISrKQIwISCOjpIFh efikxwabMl2OdYHmhSWkY8OX0X8yMBUKJe4kz2ym2/tNHYx8v32Vu0n0N0n0lrdThWbwNv9V9UA 5TJEkqTWyYUo5EyU7nHnDxobLbFrHF6+OUak9lH+cjwBHQpL9Gu7UWwVub2VUiILCTOQAT99N2o +bmWs/LLVNluFjBtKeQMvTpWHbYsSqjyt08qu+dYK026Q== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On 2025-03-08 17:57, Ludovic Court=C3=A8s wrote: > Hello, > > Nicolas Graves <ngraves@HIDDEN> skribis: > >> This is a series of refreshing commits for emacs-guix. > > Yay! > >> This is done in an effort to port emacs-guix to >> guile-ares-rs/emacs-arei backend, currently in progress here : >> https://git.sr.ht/~ngraves/emacs-guix > > I remain fond of Geiser so I=E2=80=99m skeptical of this change. Perhaps= you > could explain a bit why you think it=E2=80=99s worthwhile? Both could exist together if we remain coordinated (hence first the effort to improve, before efforts to port ;), "port" here is not necessarily meant to replace. I'm not qualified enough myself to judge, let's say that I've been sold to ares/arei by the asynchronous/fluency/protocol guarantees. Andrew Tropin's talk on EmacsConf 2023 elaborate more on why the project was started in the first place. https://emacsconf.org/2023/talks/scheme/ I've found it convenient to write and test scheme (a bit less finished on the user's side -- you still have to start the server manually) ; but overall I find it quite pleasant to use, simply write and evaluate the code I'm writing without having to write to copy/paste. What I would want such a package to do is also to have convenient features like: - guix packages recognition while developping (for embark actions) - guix-lint/flymake integration + embark action - guix-style embark action I see this kind of things possible with ares ; I don't know geiser enough to know if it's possible / convenient / how to tackle them properly. > I haven=E2=80=99t tried it yet but it LGTM, except for patch #4. Will look into that, thanks! By the way, I would like to get rid of emacs-bui too, I think it adds a lot of complexity / it is one of the reasons emacs-guix is hard to maintain. I was thinking about - rewriting the completing-read part // replacing the list mode functionality with a completing-read that would list synopses when present with packages like vertico/marginalia (so no more dedicated mode, just a more carefully written completing-read) ; - replacing the guix-ui mode with its proper transient (on *Guix info*, hitting `h` almost spawns a transient-like menu, so it might be more maintainable with transient itself, and with a popping transient, there's no need for buttons), and probably a beautified read-only rec-mode like interface ; if we manage to inject recutils from scheme, it might be a lot less code to maintain in emacs-guix. IMHO, both would make it easier to maintain and extend the package, at the cost of a little less "polish". Sometimes less is more! --=20 Best regards, Nicolas Graves
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.