This was causing some bindings to be unavailable in the (emacs-guix)
module at the REPL, such as ‘package-by-id’, which would in turn break
package commands in the user interface as well as shell completion.
The problem can be reproduced by running:
guix shell -C guile guix emacs-guix -- guile
and then, at the REPL:
,m (emacs-guix)
package-by-id
* scheme/Makefile.am (GUILEC_OPTS): Pass ‘-O2 -Ono-cross-module-inlining’.
The "-guile-builder" suffix was used by 'build-expression->derivation'
but 'gexp->description' uses "-builder" instead.
* elisp/guix-auto-mode.el (auto-mode-alist): Change "-guile-builder" to
"-builder".
* scheme/emacs-guix/services.scm (service-by-id): Use
'fold-home-service-types' in addition to 'fold-service-types'.
(find-services): Add support for 'all-home'.
* elisp/guix-popup.el (guix-service-popup): Add ?h key.
* elisp/guix-ui-service.el (guix-service-message): Add message for
'all-home'.
(guix-all-home-services): New procedure.
This is a followup to commit fbc2bbc12873ce080992f99b12c652ae007fc3c6.
Reported by Nicolò Balzarotti at
<https://github.com/alezost/guix.el/issues/45>
and by Christopher Howard at
<https://lists.gnu.org/archive/html/bug-guix/2021-06/msg00036.html>.
* elisp/guix-ui-package.el (guix-packages-by-name): Make sure
'thing-at-point' returns a string (it can also return nil). Otherwise,
do not read package names (as it would be a useless function call).
* elisp/guix-profiles.el (guix-home-profile, guix-home-profile-regexp):
New variables.
(guix-home-profile?): New procedure.
(guix-generation-profile, guix-package-profile): Add call to
'guix-home-profile?' next to 'guix-system-profile?'.
* elisp/guix-ui-profile.el (guix-all-profiles): Add GUIX-HOME-PROFILE.
(guix-home-profile): New procedure.
* elisp/guix-popup.el (guix-profile-popup): Add ?h for 'guix-home-profile'.
Support Guile 3.x.
* scheme/emacs-guix/profiles.scm: Remove @@ for
search-path-environment-variables.
* scheme/emacs-guix/system.scm: Remove @@ for
operating-system-firmware.
* scheme/emacs-guix/pack.scm: Remove @@ for %compressors,
compressor-name, and %formats.
* scheme/emacs-guix/actions.scm: Remove @@ from log-url.
This helps Geiser find the correct (environment's) Guile.
* elisp/guix-misc.el (guix-set-emacs-environment): Set 'exec-path'
when setting "PATH" variable.
* scheme/emacs-guix/packages.scm (packages-from-file): Use
'primitive-load' instead of 'load' as the latter gives a warning if
compiled with Guile 3.0.
Which was introduced by
<http://git.savannah.gnu.org/cgit/guix.git/commit/?id=aeb51370da7c854e8167066df9b138e15d7363e6>.
* elisp/guix-command.el (guix-command-improve-action-argument): Use "W"
for it ("s", "h" and "w" are already occupied by the other commands).
(guix-command-argument-improvers): Complete "--load-path" argument.
(guix-command-rest-argument): Complete the "rest" argument (package name).
* elisp/guix-pcomplete.el (guix-pcomplete-package-commands): Likewise.
'guix-emacs-autoload-packages' cannot be used to autoload the new Emacs
packages on the fly since
<http://git.savannah.gnu.org/cgit/guix.git/commit/?id=47b3b4c2aa49e21f4cc32c97ff7bbbd069bb849c>.
Moreover, that commit broke backward compatibility, as
'guix-emacs-autoload-packages' does not take any arguments anymore.
* elisp/guix-repl.el (guix-repl-autoload-emacs-packages-maybe): Remove.
Suggested by zimoun: <https://github.com/alezost/guix.el/issues/36>.
* scheme/emacs-guix/profiles.scm (user-profiles): New procedure.
* scheme/emacs-guix.scm: Autoload it.
* elisp/guix-ui-profile.el (guix-all-profiles): New procedure. Set
'guix-profiles' variable on the first call.
* doc/emacs-guix.texi (Profile Commands): Document it.
* elisp/guix-ui-lint-checker.el (guix-lint-checker-list-lint): New command.
(guix-lint-checker-list-mode-map): Bind it to "L"
(guix-lint-checker-list-default-hint): Add it.
* doc/emacs-guix.texi (Lint Checkers): New section.
This function was introduced by commit
3aa2f8a051. Originally, it was not made
interactive as hidden packages are supposed to be... hidden.
But now I think it will not do any harm to make this function
interactive (otherwise, no one will ever find it).
* elisp/guix-ui-messages.el: Add messages for 'hidden' type.
* elisp/guix-ui-package.el (guix-package-info-insert-hidden-text):
Remove the old "Easter egg" message.
(guix-hidden-packages): Make interactive.
* elisp/guix-help.el (guix-help-specifications): Add it.
* elisp/guix-popup.el (guix-package-popup): Add it.
* doc/emacs-guix.texi (Package Commands): Document it.
Apparently, I missed to add these completions at the time.
* elisp/guix-pcomplete.el (guix-pcomplete-complete-option-arg): Complete
"--verify" arguments.
* elisp/guix-command.el (guix-command-improve-expose-argument): New function.
(guix-command-argument-improvers): Use it for "environment" and "system"
commands.