bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#67292: emacs / emacs-transient collisions and bundling


From: Mekeor Melire
Subject: bug#67292: emacs / emacs-transient collisions and bundling
Date: Thu, 23 Nov 2023 14:17:02 +0000

Hello Maxime,

2023-11-20 13:39 maximedevos@telenet.be:

Op 20-11-2023 om 11:22 schreef Simon Tournier:

> On Sun, 19 Nov 2023 at 23:44, Maxime Devos > <maximedevos@telenet.be>
> wrote:

>> Bug 1: emacs bundles emacs-transient.
>> (Likewise for quite a few other Emacs packages.)

> This is not a bug. transient.el is part of Emacs since > version 28,

This does not answer how the bundling is not a bug.

Unbundling is not incompatible with keeping builtins -- for example, emacs-minimal could be the ‘minimalistic Emacs, without the typical bundled ‘built-in’ stuff’, and emacs could be 'emacs-minimal + the
unbundled stuff in propagated-inputs’.

(Well, preferably not propagated, but that's just a matter of wrapping
or unions etc..)

Another option could be to unbundle things in the 'source' of emacs / emacs-minimal and copy over source code from the 'emacs-‘builtin’'
packages during a build phase.

(IIUC, emacs-minimal is for compiling Emacs packages and for scripts, of which most probably have no need for keyboard-driven menus -- and
if they do have need,)

It might be possible to cut out some parts of Emacs so that emacs-minimal is 
more minimal. But I think this could become quite complicated because we don't 
know exactly which parts of Emacs are needed to build Emacs-related packages 
since they might rely on any Elisp code during compile-time. Also, more 
generally, it'd be hard to decide which parts are not needed, i.e. where to 
draw the line etc. All in all, I don't think that it's worth the effort and 
maintenance.

>> Bug 2: no collision handling.

As far as I know, Guix does not provide a facility to prioritize a file from one package over the same file from another package.

But also, I don't think this is necessary here, because in a Guix-installed 
Emacs, the paths to Guix-installed Emacs-related packages appear first in 
Emacs' load-path variable, whereas the paths to the elisp-directories from 
Emacs itself come last. Thus, emacs-transient's transient.el is always 
preferred over Emacs' transient.el.

Finally, here's a list an incomplete list of Emacs-related packages that are 
both built into Emacs itself, as well as distributed separately over GNU Elpa 
and thus also as separate packages in Guix:

   emacs-eglot
   emacs-eldoc
   emacs-external-completion
   emacs-jsonrpc
   emacs-let-alist
   emacs-map
   emacs-ntlm
   emacs-project
   emacs-so-long
   emacs-soap-client
   emacs-use-package
   emacs-xref

If you want to know which built-in packages are distributed separately via GNU Elpa, 
search the following file for ":core". Note that only a subset of those might 
be packaged separately in Guix.

        https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages

TANGENTIALLY: I'd like to mention that this topic becomes sort of a problem when (1) you have 
installed Emacs with "guix install emacs-next --with-branch=emacs-next=master" or 
similar; and (2) you installed some Emacs-related package via Guix, which propagates another 
Emacs-related package that is also built into Emacs. This would cause a downgrade of that 
propagated, built-in, Emacs-related package. E.g. this happens with emacs-consult-eglot which 
propagates emacs-eglot which is also built into Emacs itself. A work-around is to overwrite the 
input like this: "guix install emacs-next emacs-consult-eglot 
--with-input=emacs-eglot=emacs-next --with-branch=emacs-next=master".





reply via email to

[Prev in Thread] Current Thread [Next in Thread]