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