GNU bug report logs - #76699
[PATCH emacs-guix 0/4] Refresh package emacs-guix

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Nicolas Graves <ngraves@HIDDEN>; Keywords: patch; dated Mon, 3 Mar 2025 02:08:01 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 23:25:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 08 18:25:10 2025
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>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#76699] [PATCH emacs-guix 0/4] Refresh package emacs-guix
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-Debbugs-Envelope-To: 76699
Cc: 76699 <at> debbugs.gnu.org
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




Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 16:57:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 08 11:57:31 2025
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: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Nicolas Graves <ngraves@HIDDEN>
Subject: Re: [bug#76699] [PATCH emacs-guix 0/4] Refresh package emacs-guix
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-Debbugs-Envelope-To: 76699
Cc: 76699 <at> debbugs.gnu.org
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.




Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 8 Mar 2025 16:56:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 08 11:56:03 2025
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: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Nicolas Graves <ngraves@HIDDEN>
Subject: Re: [bug#76699] [PATCH 4/5] Use a development channel instead of
 guix.scm
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-Debbugs-Envelope-To: 76699
Cc: 76699 <at> debbugs.gnu.org
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.




Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:09:54 2025
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>
To: 76699 <at> debbugs.gnu.org
Subject: [PATCH 4/5] Use a development channel instead of guix.scm
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-Debbugs-Envelope-To: 76699
Cc: Nicolas Graves <ngraves@HIDDEN>
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





Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:09:53 2025
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>
To: 76699 <at> debbugs.gnu.org
Subject: [PATCH 5/5] Update NEWS
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-Debbugs-Envelope-To: 76699
Cc: Nicolas Graves <ngraves@HIDDEN>
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





Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:09:52 2025
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>
To: 76699 <at> debbugs.gnu.org
Subject: [PATCH 1/5] Switch to transient
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-Debbugs-Envelope-To: 76699
Cc: Nicolas Graves <ngraves@HIDDEN>
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





Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:09:46 2025
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>
To: 76699 <at> debbugs.gnu.org
Subject: [PATCH 3/5] Remove dash dependency, introduce llama library
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-Debbugs-Envelope-To: 76699
Cc: Nicolas Graves <ngraves@HIDDEN>
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





Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at 76699 <at> debbugs.gnu.org:


Received: (at 76699) by debbugs.gnu.org; 3 Mar 2025 02:09:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:09:43 2025
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>
To: 76699 <at> debbugs.gnu.org
Subject: [PATCH 2/5] Improve most docstrings
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-Debbugs-Envelope-To: 76699
Cc: Nicolas Graves <ngraves@HIDDEN>
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





Information forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 3 Mar 2025 02:07:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 02 21:07:08 2025
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>
To: guix-patches@HIDDEN
Subject: [PATCH emacs-guix 0/4] Refresh package emacs-guix
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-Debbugs-Envelope-To: submit
Cc: ludo@HIDDEN, Nicolas Graves <ngraves@HIDDEN>
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





Acknowledgement sent to Nicolas Graves <ngraves@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#76699; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 8 Mar 2025 23:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.