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

From: Stefan Kangas <[email-masked]>
Date: Sat, 3 Apr 2021 19:14:29 -0500

Stefan Monnier <[email-masked]> writes:

>> According to the documentation, `enable-theme' enables variable and face
>> settings of already loaded themes, so I think it makes sense that it
>> doesn't offer completions in emacs -Q, because there is no loaded theme
>> yet.
>>
>> Perhaps you wanted to do M-x load-theme, which should properly complete
>> with themes from etc/themes, among other directories?
>
> I know it works as documented, but I don't think it's the behavior we
> really want.  We should autoload themes, just like we autoload pretty
> much everything else.

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?

I have themes in the Emacs distribution or installed from some ELPA
repository.  I am now interested in exactly one thing: enable this
installed theme.  Or don't.  Load as necessary.  As a user, I am almost
completely indifferent to what symbols are defined in my Emacs session.

IOW, I'd be in favour of removing one of `enable-theme' or `load-theme'
and ensure we always DTRT and DWIM (which includes autoloading when
necessary).

(If someone needs a way to reload themes (besides `load-file', I
suppose), we could have a new function `theme-reload'.)