Subject: Emacs Packages should have an output built with emacs-next(-minimal)

From: Mekeor Melire <[email-masked]>
Date: Tue, 06 Jun 2023 07:11:28 +0000

Hello dear Guix community,

if I understand correctly, all Emacs-packages that are packaged in 
Guix proper, are built with Emacs version 28 (or more precisely, 
emacs-minimal@28, emacs@28, emacs-no-x@28, emacs-no-x-toolkit@28 
or emacs-wide-int@28 (except emacs-jsdoc which is and needs to be 
built with emacs-next@29)). (You may grep the Guix repository for 
":emacs" to find out by yourself.)

When using these Emacs-packages with emacs-next* (i.e. version 29 
or 30), this can lead to misbehavior because Emacs will still 
prefer the compiled .elc or .eln files which may depend on version 
28 specifics.

My concrete experience is that, when using emacs-next-tree-sitter 
and emacs-consult packages, evaluating (require 'consult-register) 
fails because it has emacs-major-version-specific code: 
https://github.com/minad/consult/blob/3c0f87ebd20b25f03568fb9ef8fd36b5a2a6eb84/consult-register.el#L82 
(A workaround is to instead evaluate (load 
"consult-register.el").)

I propose:

1. Introduce a package emacs-next-minimal.

2. For all Emacs-packages, create one output corresponding to each 
Emacs major-version packaged in Guix proper. For example, the 
output "emacs-next" would be built with emacs-next-minimal.

What do you think? I'd guess this should be hard to implement, 
right?

Kindly
Mekeor