Subject: bug#79485: 31.0.50; Loaded files inherit read-symbol-shorthands

From: David Rosenbaum <[email-masked]>
Date: Mon, 22 Sep 2025 10:48:48 -0700

> Are these packages even in Emacs?

IMO using shorthands in this way is a natural way to abbreviate long
symbols. AFAICT, there is no other way to do so without polluting the
global namespace. I'm open to alternatives if there's another preferred way
to handle this use case. defalias is an obvious option but of course that
pollutes the global namespace.

> I see the problem and have reproduced it. It's a bug. And I don't
understand it.

Yeah. It's a strange one.

On Mon, Sep 22, 2025, 10:28 AM João Távora <[email-masked]> wrote:

> On Mon, Sep 22, 2025 at 6:04 PM David Rosenbaum <[email-masked]> wrote:
> >
> > > Also they were designed to abbreviate prefixes, not full symbol names,
> so the db idea is probably not going to work. As far as I remember, these
> things were well explained in the manual...
> >
> > Intended or not, shorthands are being used this way by packages authors.
> For example, see cond-let and llama.
>
>
> Are these packages even in Emacs?
>
> > > By the way, I understand the problem easily now. The symbol 'dbus' has
> the prefix 'db' and when the example file is read 'dbus' becomes
> 'cl-destructuring-bindus'. This happens at read-time well before evaluation
> or byte-compilation.
> >
> > (require 'dbus) isn't in the example file though. It's in tramp-gvfs
> which was precompiled when emacs was built. It is tramp-gvfs that is
> required from the example file.
>
> I see the problem and have reproduced it.  It's a bug.  And I don't
> understand it.  The `tramp-gvfs` file should have been read long before the
> shorthand was established in in the example file.
>