emacs-devel
[Top][All Lists]
Advanced

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

Re: More bugs in Custom themes


From: Luc Teirlinck
Subject: Re: More bugs in Custom themes
Date: Tue, 5 Jul 2005 21:39:12 -0500 (CDT)

Richard Stallman wrote:

   "A proper design" doesn't identify a specific problem I could address,

The very first design decision to be made is: what do we want Custom
Themes to be and how do we want them to be used.

I do not even know what _kind_ of Custom Themes the current code is
trying to implement or how it wants them to be used.  There are no
interactive declarations in the code, so _maybe_ they are only meant
for use in initialization files, to be executed _before_ any
custom-set-{variables,faces} forms.  (_Both_ enabling and unsetting of
themes seems to have to occur before these forms.  No enabling or
unsetting after them, in particular, no _interactive_ enabling or
unsetting.)  The code _seems_ to assume that no two themes (including
the `user' theme, but, of course, excluding the standard theme)
contain customizations for the same variable.

If all these assumptions are strictly adhered to, many of the worst
bugs no longer occur.  There would still be bugs left, but they might
be fixable.

But I seem to have understood that we want something more powerful.
Then I believe that we need a complete rewrite of the current code,
essentially starting from scratch.

I believe I understood that we want to allow multiple Custom Themes,
possibly setting conflicting values for the same option, that can be
_interactively_ (as well as in init files) enabled or disabled in any
order, interspersed with arbitrary saving, setting, and resetting to
standard value, and that we even want to handle interspersed setq's in
a reasonable way.  I seem to have understood that this is what users
want.  I believe that it is possible (but _not_ trivial) to implement
all of that in a clean and intuitive way.  I believe that it has to be
done very carefully.

The current code uses `requiring' to enable Themes.  Re-enabling a
Theme has no effect if it has ever been loaded previously, so it does
not reinstate "clobbered" values.  I believe we agreed that this was a
problem and that user convenience dictates replacing requiring with
unconditional loading as the fundamental Theme enabling mechanism.
This is a second fundamental design departure from the present code.

Then comes the conflict resolution algorithm (I will address that in a
second message).

Sincerely,

Luc.





reply via email to

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