gnu: emacs: Reload subdirs.el files in ‘guix-emacs-autoload-packages’.

This fixes a regression introduced with 79cfe30f3 ("build-system: emacs: Use
subdirectories again.") which caused the 'guix-emacs-autoload-packages' to no
longer be able to autoload all packages.

* gnu/packages/aux-files/emacs/guix-emacs.el
(guix-emacs-autoload-packages): Reload subdirs.el files unless NO-RELOAD is
provided.  Update docstring.
* doc/guix.texi (Application Setup): Document that
‘guix-emacs-autoload-packages’ can be invoked interactively to auto-reload
newly installed Emacs packages.
* gnu/packages/emacs.scm (emacs)[arguments]<#:phases>: Call
guix-emacs-autoload-packages with an argument in the site-start.el file.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
Maxim Cournoyer 2023-09-01 00:53:21 -04:00 committed by Liliana Marie Prikler
parent 05e4b3cba8
commit b02ad19305
No known key found for this signature in database
GPG Key ID: 442A84B8C70E2F87
3 changed files with 20 additions and 8 deletions

View File

@ -2167,12 +2167,15 @@ which they are installed. The Elisp libraries are made available to
Emacs through the @env{EMACSLOADPATH} environment variable, which is
set when installing Emacs itself.
@cindex guix-emacs-autoload-packages, refreshing Emacs packages
Additionally, autoload definitions are automatically evaluated at the
initialization of Emacs, by the Guix-specific
@code{guix-emacs-autoload-packages} procedure. If, for some reason, you
want to avoid auto-loading the Emacs packages installed with Guix, you
can do so by running Emacs with the @option{--no-site-file} option
(@pxref{Init File,,, emacs, The GNU Emacs Manual}).
@code{guix-emacs-autoload-packages} procedure. This procedure can be
interactively invoked to have newly installed Emacs packages discovered,
without having to restart Emacs. If, for some reason, you want to avoid
auto-loading the Emacs packages installed with Guix, you can do so by
running Emacs with the @option{--no-site-file} option (@pxref{Init
File,,, emacs, The GNU Emacs Manual}).
@quotation Note
Emacs can now compile packages natively. Under the default

View File

@ -65,12 +65,21 @@ The files in the list do not have extensions (.el, .elc)."
(guix-emacs--non-core-load-path))))
;;;###autoload
(defun guix-emacs-autoload-packages ()
(defun guix-emacs-autoload-packages (&optional no-reload)
"Autoload Emacs packages found in EMACSLOADPATH.
'Autoload' means to load the 'autoloads' files matching
`guix-emacs-autoloads-regexp'."
(interactive)
`guix-emacs-autoloads-regexp'. By default, the subdirs.el files
found on the load path are reloaded to discover newly installed
packages, unless NO-RELOAD is provided."
(interactive "P")
;; Reload the subdirs.el files such as the one generated by the Guix profile
;; hook, so that newly installed Emacs packages located under
;; sub-directories are put on the load-path without having to restart Emacs.
(unless no-reload
(mapc #'guix-emacs--load-file-no-error (guix-emacs--subdirs-files))
(setq load-path (delete-dups load-path)))
(let ((autoloads (mapcan #'guix-emacs-find-autoloads
(guix-emacs--non-core-load-path))))
(mapc #'guix-emacs--load-file-no-error autoloads)))

View File

@ -209,7 +209,7 @@
(display
(string-append
"(when (require 'guix-emacs nil t)\n"
" (guix-emacs-autoload-packages)\n"
" (guix-emacs-autoload-packages 'no-reload)\n"
" (advice-add 'package-load-all-descriptors"
" :after #'guix-emacs-load-package-descriptors))"))))
;; Remove the extraneous subdirs.el file, as it causes Emacs to