Subject: bug#47424: 28.0.50; enable-theme shows an empty list

From: Stefan Kangas <[email-masked]>
Date: Sun, 4 Apr 2021 04:05:43 -0500

Eli Zaretskii <[email-masked]> writes:

>> I'm not exactly sure why we bother differentiating between loading a
>> theme and enabling it.  Technically, I understand that there is a
>> difference.  But why should a user have to fiddle around with it?
>
> For the same reason that loading a Lisp package shouldn't change the
> Emacs state, until the user explicitly activates the features in the
> package.  It's unclean to have loading activate stuff, and we've
> invested an effort during the last years to remove that uncleanliness.

I still don't see why a user should need to worry about this
distinction or the complexities involved.  It seems like a suboptimal
interface.

We are here talking about user-facing features.  I think it should be
enough to have one knob to disable themes and one knob to enable them.

> With themes, you can load several ones and then enable/disable any of
> them whenever you see fit.

I don't see why a user would want/need to load a theme if she does not
intend to use it.  If the user wants to load it for later use, why not
just defer loading it until that time?

And if a user *really* wants to load a theme for some reason, there is
always e.g. `load-file' or `load-library'.

What am I missing?

> Under your proposal, disabling a theme would be impossible without
> unloading it, and that might not be easy to do cleanly.

I'm not sure I follow; I see no need to make it symmetrical in that
sense.  In the same way, we don't bother unloading a library just
because the major-mode involved is not used in any buffer.  But we do
provide a way to autoload major modes.

BTW, why would an end-user ever need to unload a theme?  Is it not
enough to simply disable it?