Subject: bug#38399: Recent $EMACSLOADPATH changes break emacs-org

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 28 Nov 2019 14:11:07 +0900

Hello Diego,

Diego Nicola Barbato <[email-masked]> writes:

> Hi Guix,
>
> Since the recent changes to the way Guix handles Emacs packages Emacs
> loads the wrong ‘org’ (the one bundled with Emacs instead of the one
> provided by the ‘emacs-org’ package installed with Guix).  This happens
> because in EMACSLOADPATH the directory containing the bundled ‘org’
> precedes the directory containing the ‘org’ provided by ‘emacs-org’.

Thanks for the report!

> It stands to reason that the elisp libraries provided by Emacs itself
> shouldn’t be in EMACSLOADPATH in the first place as they are already in
> ‘load-path’ to which the directories in EMACSLOADPATH are prepended (as
> described in the Emacs manual).

That's not true; when using EMACSLOADPATH the Emacs' bundled libraries
must be included explicitly, or an empty item be present (which means,
an extra ':' present).

See (elisp)Library Search:

        An empty element in the value of the environment variable,
    whether trailing (as in the above example), leading, or embedded, is
    replaced by the default value of ‘load-path’ as determined by the
    standard initialization procedure.  If there are no such empty
    elements, then ‘EMACSLOADPATH’ specifies the entire ‘load-path’.
    You must include either an empty element, or the explicit path to
    the directory containing the standard Lisp files, else Emacs will
    not function.

That said, the search path specification defined in our Emacs packages
should be reordered so that a user profile appears first (before Emacs
bundled libraries).

I'll address this as part of bug #38309 (see:
https://bugs.gnu.org/38309).  I'm planning to have it merged in a few
days at most.

Thanks!

Maxim