[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Disabling custom themes (was: Why is custom--inhibit-theme-enable no

From: Drew Adams
Subject: RE: Disabling custom themes (was: Why is custom--inhibit-theme-enable not t by default?)
Date: Wed, 13 Jun 2018 10:16:33 -0700 (PDT)

> Sorry, I'm not sure I completely understand what you mean (for example
> w.r.t. "initial state" and "settings of the 'disabled' custom theme"),
> but I've posted a recipe with what I think you're getting at to
> bug#15687, where I think any further discussion of the effects of theme
> disabling can be continued.
> Either way, thanks for the explanation and background.

Thanks for reopening bug #15687.  And from your post there
I think you have understood.

To try to clarify -

I mean only that custom-theme enabling/disabling knows only
about (custom) themes.  It does not know about other user
customizations, so it cannot restore them when it is disabled.

What's missing is a function that captures the state of Emacs
(anything that a custom state might modify) before any custom
theme is applied, so that that state can be restored.

Then you could (as you can with color themes) invoke that
function to take a snapshot of your Emacs before "theming",
and you could use that snapshot to restore your Emacs pretty
much as it was before "theming".

It's easy to understand if you look at what's possible with
color themes.  There, you can create a color theme (kind of
a pseudo-theme, actually) at the outset, which records the
current Emacs state as a snapshot, i.e., anything that might
be recorded in a color theme.  To restore the initial state
you need only apply that (pseudo) color theme.  Voila: back
to what you started with, as much as is practicable.

With custom themes, if the initial state before applying
a custom theme has non-default frame parameters, faces, etc.,
and if you enable and then disable a custom theme, those user
customizations are lost - not restored.  You need to quit
Emacs and restart it to get them back - and that works only
if you saved those (non-theme) customizations.

That's all.  If you start by applying a custom theme to a
virgin (`emacs -Q') session then you likely won't see the
problem.  But if you start from a customized Emacs you can.

The use case is someone who has a customized Emacs (with
those customizations saved or not), and who wants to try on
some themes, to see what they look/act like.  S?he can cycle
among themes, trying them on one after another.  But s?he
cannot get back to what s?he started with.

Why?  Because there is no custom theme that captures that
initial state, and disabling a custom theme just does so
relative to other custom themes.  The initial, default
custom theme, called `user', is not a snapshot of the
user's actual customizations (faces etc.).  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]