>>>> "Yoshiki" == Yoshiki Hayashi
<yoshiki(a)xemacs.org> writes:
Yoshiki> "Stephen J. Turnbull" <turnbull(a)sk.tsukuba.ac.jp> writes:
> If this is called early enough in the startup sequence it is
> probably OK. I offer it as a typical example of the cavalier
> way that Custom insists on resetting faces whenever it does any
> manipulations.
Yoshiki> Your comment here is clearly wrong.
Huh? This is an example of the kind of thing that Custom does; Custom
is far too complicated to precisely trace whether any particular
function is doing evil or not. That's what I said.
Yoshiki> It is called only before .emacs (or .xemacs/init.el) is
Yoshiki> loaded and never called again.
Doesn't satisfy the condition I just wrote? The points are that
(1) Custom is _full_ of calls to reset-face type functions that
destroy user customizations unless they were made through Custom.
(2) Custom is _full_ of functions that masquerade as non-custom
functions, making it impossible to see which code is really basic
and which code is a Custom layer. lisp/faces.el in particular is
a completely mixed bag of functions, most of which now expect
Custom-style specifications, not XEmacs specifier-style
specifications. However, this is not reflected in their names or
docstrings (except indirectly via reference to "defface", which
itself is a Custom interface).
> One thing you can try is to make sure that any Custom stuff is
> called _before_ you do your own face manipulations.
Yoshiki> The issue here is not the order of Custom and user
Yoshiki> setting.
Of course it is one of the issues. There may be others, too. But if
you make sure you do your own setting after Custom does, your settings
will rule. If you don't, Custom reserves the right to trash them.
Always has before, and it is impossible to tell from the code in
faces.el just what Custom does respect nowadays.
You make exactly the same point yourself: try using Custom exclusively.
Yoshiki> The problem is XEmacs tries to adjust face accroding to
Yoshiki> background color of default face.
This may also be a problem.
I think adjusting faces with respect to the default face's background
is a very bad idea as a basic function; it should be done at a very
high level, such as Custom themes. At lower levels, functions should
do what the user says.
Yoshiki> Current model is not working too well.
No, and it has been sucky for years. However, Custom does little to
help; Custom has always tried to force the world into a simplified
model. For example, Custom still knows nothing about non-ISO8859-*
fonts. The last big Custom blowup occurred because it reset the faces
anyway, despite there being data there it didn't understand.
Apparently it is still doing it.
I've tried to do something about it and been defeated. I just don't
understand what Custom is trying to do. I doubt that's because the
code sucks; anybody who has worked much with fonts and/or Mule
charsets knows that this stuff is just plain hard. It's not
surprising the code is hairy and hard to follow: the underlying
process is, too.
What I object to is the fact that Custom uses functions like
`reset-face', whose documentation says "only do this if you know you
want to". What has consistently been the case is that Custom has
called this function behind the backs of users who definitely didn't
want it to happen, but Custom didn't know any better.
It really should stop doing this.
--
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
Institute of Policy and Planning Sciences Tel/fax: +81 (298) 53-5091
_________________ _________________ _________________ _________________
What are those straight lines for? "XEmacs rules."