* Default font 'default have no corresponding variable
@ 2008-02-18 13:18 Lennart Borgman (gmail)
2008-02-18 13:20 ` Lennart Borgman (gmail)
2008-02-18 13:32 ` Miles Bader
0 siblings, 2 replies; 14+ messages in thread
From: Lennart Borgman (gmail) @ 2008-02-18 13:18 UTC (permalink / raw)
To: Emacs Devel
Should it not have that? I think I have some something like this in
several places
;; I believe default is defined in Xemacs but not in GNU Emacs.
(unless (boundp 'default)
(defvar default 'default))
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 13:18 Default font 'default have no corresponding variable Lennart Borgman (gmail)
@ 2008-02-18 13:20 ` Lennart Borgman (gmail)
2008-02-18 13:25 ` Jason Rumney
2008-02-18 13:32 ` Miles Bader
1 sibling, 1 reply; 14+ messages in thread
From: Lennart Borgman (gmail) @ 2008-02-18 13:20 UTC (permalink / raw)
To: Emacs Devel
Lennart Borgman (gmail) wrote:
> Should it not have that? I think I have some something like this in
> several places
>
> ;; I believe default is defined in Xemacs but not in GNU Emacs.
> (unless (boundp 'default)
> (defvar default 'default))
Eh, default face, not default font.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 13:20 ` Lennart Borgman (gmail)
@ 2008-02-18 13:25 ` Jason Rumney
2008-02-18 16:12 ` Lennart Borgman (gmail)
0 siblings, 1 reply; 14+ messages in thread
From: Jason Rumney @ 2008-02-18 13:25 UTC (permalink / raw)
To: Lennart Borgman (gmail); +Cc: Emacs Devel
Lennart Borgman (gmail) wrote:
> Lennart Borgman (gmail) wrote:
>> Should it not have that? I think I have some something like this in
>> several places
>>
>> ;; I believe default is defined in Xemacs but not in GNU Emacs.
>> (unless (boundp 'default)
>> (defvar default 'default))
>
> Eh, default face, not default font.
If you want to know if there is a face called default, you should use
facep, not boundp.
Why would you need a variable of that name?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 13:18 Default font 'default have no corresponding variable Lennart Borgman (gmail)
2008-02-18 13:20 ` Lennart Borgman (gmail)
@ 2008-02-18 13:32 ` Miles Bader
2008-02-18 15:59 ` Lennart Borgman (gmail)
1 sibling, 1 reply; 14+ messages in thread
From: Miles Bader @ 2008-02-18 13:32 UTC (permalink / raw)
To: Lennart Borgman (gmail); +Cc: Emacs Devel
Why should there be a "corresponding variable"?
-MIles
--
=====
(^o^;
(()))
*This is the cute octopus virus, please copy it into your sig so it can spread.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 13:32 ` Miles Bader
@ 2008-02-18 15:59 ` Lennart Borgman (gmail)
2008-02-18 16:37 ` Jason Rumney
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Lennart Borgman (gmail) @ 2008-02-18 15:59 UTC (permalink / raw)
To: Miles Bader; +Cc: Emacs Devel
Miles Bader wrote:
> Why should there be a "corresponding variable"?
Maybe I got this wrong, I thought that there usually were a variable
with the same name as the face and that the variable value was the face
symbol. But maybe that is just used for faces defined specific uses in
emacs libraries?
But anyway, as I wrote, libraries written for Xemacs often tends to
assume that the variable default exist (and points to a face symbol I
believe).
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 13:25 ` Jason Rumney
@ 2008-02-18 16:12 ` Lennart Borgman (gmail)
0 siblings, 0 replies; 14+ messages in thread
From: Lennart Borgman (gmail) @ 2008-02-18 16:12 UTC (permalink / raw)
To: Jason Rumney; +Cc: Emacs Devel
Jason Rumney wrote:
> Lennart Borgman (gmail) wrote:
>> Lennart Borgman (gmail) wrote:
>>> Should it not have that? I think I have some something like this in
>>> several places
>>>
>>> ;; I believe default is defined in Xemacs but not in GNU Emacs.
>>> (unless (boundp 'default)
>>> (defvar default 'default))
>>
>> Eh, default face, not default font.
>
> If you want to know if there is a face called default, you should use
> facep, not boundp.
But here I am looking for the variable.
> Why would you need a variable of that name?
I am started to wonder if I have misunderstood something. Maybe there is
no variable default with value 'default in Xemacs? But please see my
answer to Miles.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 15:59 ` Lennart Borgman (gmail)
@ 2008-02-18 16:37 ` Jason Rumney
2008-02-18 16:48 ` Stefan Monnier
2008-02-19 11:59 ` Richard Stallman
2 siblings, 0 replies; 14+ messages in thread
From: Jason Rumney @ 2008-02-18 16:37 UTC (permalink / raw)
To: Lennart Borgman (gmail); +Cc: Emacs Devel, Miles Bader
Lennart Borgman (gmail) wrote:
> Miles Bader wrote:
>> Why should there be a "corresponding variable"?
>
> Maybe I got this wrong, I thought that there usually were a variable
> with the same name as the face and that the variable value was the
> face symbol. But maybe that is just used for faces defined specific
> uses in emacs libraries?
No. For historical reasons that is the case for font-lock-*-face, and
many developers of external packages copy that pattern without
understanding why.
My understanding is that before customize-face existed, it was much
easier to create a new face than to modify an existing one. So font-lock
was designed with redirection via a variable to allow the standard faces
to be swapped out.
> But anyway, as I wrote, libraries written for Xemacs often tends to
> assume that the variable default exist (and points to a face symbol I
> believe).
No, you didn't write that as far as I can see.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 15:59 ` Lennart Borgman (gmail)
2008-02-18 16:37 ` Jason Rumney
@ 2008-02-18 16:48 ` Stefan Monnier
2008-02-18 20:37 ` Johan Bockgård
2008-02-18 22:14 ` Lennart Borgman (gmail)
2008-02-19 11:59 ` Richard Stallman
2 siblings, 2 replies; 14+ messages in thread
From: Stefan Monnier @ 2008-02-18 16:48 UTC (permalink / raw)
To: Lennart Borgman (gmail); +Cc: Emacs Devel, Miles Bader
>> Why should there be a "corresponding variable"?
> Maybe I got this wrong, I thought that there usually were a variable with
> the same name as the face and that the variable value was the face
> symbol. But maybe that is just used for faces defined specific uses in
> Emacs libraries?
No. The only there is w.r.t vars and faces is that font-lock's author
originally decided to provide both font-lock-FOO-face faces and
font-lock-FOO-face variables where the variable's value points to the
face, so that you can use
font-lock-FOO-face
or
'font-lock-FOO-face
and get the same result. Basically it makes the font-lock-FOO-face
symbol (used to refer to the face) self-quoting. And since most
font-lock rules use the first form rather than the second, you get the
added benefit that the extra-indirection through the variable can be
made buffer-local so you can "change faces" on a buffer-by-buffer basis
(which is usually not possible in Emacs where faces can only be changed
on a frame-by-frame basis).
In any case, buffer-local faces should be added to Emacs (there are
plans to do that, although they don't seem to be going anywhere, sadly),
and variables pointing to faces are generally deprecated unless maybe
they're used in font-lock rules where avoiding the ' can be
marginally convenient.
> But anyway, as I wrote, libraries written for XEmacs often tends to assume
> that the variable default exist (and points to a face symbol I believe).
`xemacs -q' tells me that `default' indeed exists but has value "void".
Not sure what that means. It seems not to have any equivalent in Emacs.
I'd never heard of it until now, so it can't be that used "often".
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 16:48 ` Stefan Monnier
@ 2008-02-18 20:37 ` Johan Bockgård
2008-02-18 21:13 ` Stefan Monnier
2008-02-18 22:14 ` Lennart Borgman (gmail)
1 sibling, 1 reply; 14+ messages in thread
From: Johan Bockgård @ 2008-02-18 20:37 UTC (permalink / raw)
To: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> `xemacs -q' tells me that `default' indeed exists but has value "void".
> Not sure what that means.
Dynamic scoping.
--
Johan Bockgård
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 20:37 ` Johan Bockgård
@ 2008-02-18 21:13 ` Stefan Monnier
0 siblings, 0 replies; 14+ messages in thread
From: Stefan Monnier @ 2008-02-18 21:13 UTC (permalink / raw)
To: emacs-devel
>> `xemacs -q' tells me that `default' indeed exists but has value "void".
>> Not sure what that means.
> Dynamic scoping.
Good catch ;-)
Stefan
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 16:48 ` Stefan Monnier
2008-02-18 20:37 ` Johan Bockgård
@ 2008-02-18 22:14 ` Lennart Borgman (gmail)
1 sibling, 0 replies; 14+ messages in thread
From: Lennart Borgman (gmail) @ 2008-02-18 22:14 UTC (permalink / raw)
To: Stefan Monnier; +Cc: Emacs Devel, Jason Rumney
Stefan Monnier wrote:
>>> Why should there be a "corresponding variable"?
>
>> Maybe I got this wrong, I thought that there usually were a variable with
>> the same name as the face and that the variable value was the face
>> symbol. But maybe that is just used for faces defined specific uses in
>> Emacs libraries?
>
> No. The only there is w.r.t vars and faces is that font-lock's author
> originally decided to provide both font-lock-FOO-face faces and
> font-lock-FOO-face variables where the variable's value points to the
> face, so that you can use
>
> font-lock-FOO-face
> or
> 'font-lock-FOO-face
>
> and get the same result. Basically it makes the font-lock-FOO-face
> symbol (used to refer to the face) self-quoting. And since most
> font-lock rules use the first form rather than the second, you get the
> added benefit that the extra-indirection through the variable can be
> made buffer-local so you can "change faces" on a buffer-by-buffer basis
> (which is usually not possible in Emacs where faces can only be changed
> on a frame-by-frame basis).
>
> In any case, buffer-local faces should be added to Emacs (there are
> plans to do that, although they don't seem to be going anywhere, sadly),
> and variables pointing to faces are generally deprecated unless maybe
> they're used in font-lock rules where avoiding the ' can be
> marginally convenient.
Thanks Stefan and Jason,
It seems like I have been misunderstanding this a bit more than I
usually do ;-)
Unfortunately I have been spreading my unwisdom a bit so I have to clear
that out.
>> But anyway, as I wrote, libraries written for XEmacs often tends to assume
>> that the variable default exist (and points to a face symbol I believe).
>
> `xemacs -q' tells me that `default' indeed exists but has value "void".
> Not sure what that means. It seems not to have any equivalent in Emacs.
> I'd never heard of it until now, so it can't be that used "often".
>
>
> Stefan
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-18 15:59 ` Lennart Borgman (gmail)
2008-02-18 16:37 ` Jason Rumney
2008-02-18 16:48 ` Stefan Monnier
@ 2008-02-19 11:59 ` Richard Stallman
2008-02-20 3:51 ` Drew Adams
2 siblings, 1 reply; 14+ messages in thread
From: Richard Stallman @ 2008-02-19 11:59 UTC (permalink / raw)
To: Lennart Borgman (gmail); +Cc: emacs-devel, miles
Maybe I got this wrong, I thought that there usually were a variable
with the same name as the face and that the variable value was the face
symbol. But maybe that is just used for faces defined specific uses in
emacs libraries?
Maybe we should work harder to document the fact that we do not want
such variables. Where would such info have reached you better?
How about if we put comments in and among the variable definitions in
font-lock.el saying not to imitate that practice.
^ permalink raw reply [flat|nested] 14+ messages in thread
* RE: Default font 'default have no corresponding variable
2008-02-19 11:59 ` Richard Stallman
@ 2008-02-20 3:51 ` Drew Adams
2008-02-20 16:44 ` Richard Stallman
0 siblings, 1 reply; 14+ messages in thread
From: Drew Adams @ 2008-02-20 3:51 UTC (permalink / raw)
To: rms, 'Lennart Borgman (gmail)'; +Cc: miles, emacs-devel
> Maybe we should work harder to document the fact that we do not want
> such variables. Where would such info have reached you better?
>
> How about if we put comments in and among the variable definitions in
> font-lock.el saying not to imitate that practice.
I think the place to discuss this is in the Elisp manual, in one of the
sections about faces. This is really about understanding what a face is,
IMO.
FWIW, I have a slightly different take on the practice to recommend and the
reasons to give for that recommendation.
I agree with the recommended practice of defining and using faces, not face
variables, in general - and I follow it. However, I don't agree that the
only case for defining and using face variables is the legacy case of the
font-lock code.
The use case I see, which, again, is not the usual case, is when you want to
make it easy for code to temporarily use a particular face. It is very easy
for some code to dynamically bind a face variable and cause subsequently
executed code to use that face. Getting the same effect with faces (without
a face variable) can make for uglier code, IMO.
Just one opinion. I'm not interested in arguing about that. I agree that we
should make it clear that you generally should not define face variables.
And I think the place to communicate that guideline is the Elisp doc, not
just comments in the code.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Default font 'default have no corresponding variable
2008-02-20 3:51 ` Drew Adams
@ 2008-02-20 16:44 ` Richard Stallman
0 siblings, 0 replies; 14+ messages in thread
From: Richard Stallman @ 2008-02-20 16:44 UTC (permalink / raw)
To: Drew Adams; +Cc: emacs-devel, lennart.borgman, miles
The use case I see, which, again, is not the usual case, is when you want to
make it easy for code to temporarily use a particular face. It is very easy
for some code to dynamically bind a face variable and cause subsequently
executed code to use that face. Getting the same effect with faces (without
a face variable) can make for uglier code, IMO.
I agree that this would be a good reason to have such a variable.
Whether there are such cases, I don't know.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2008-02-20 16:44 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-18 13:18 Default font 'default have no corresponding variable Lennart Borgman (gmail)
2008-02-18 13:20 ` Lennart Borgman (gmail)
2008-02-18 13:25 ` Jason Rumney
2008-02-18 16:12 ` Lennart Borgman (gmail)
2008-02-18 13:32 ` Miles Bader
2008-02-18 15:59 ` Lennart Borgman (gmail)
2008-02-18 16:37 ` Jason Rumney
2008-02-18 16:48 ` Stefan Monnier
2008-02-18 20:37 ` Johan Bockgård
2008-02-18 21:13 ` Stefan Monnier
2008-02-18 22:14 ` Lennart Borgman (gmail)
2008-02-19 11:59 ` Richard Stallman
2008-02-20 3:51 ` Drew Adams
2008-02-20 16:44 ` Richard Stallman
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).