help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: Is Default face a per frame attribute or a global one?


From: Alex Kost
Subject: Re: Is Default face a per frame attribute or a global one?
Date: Tue, 26 Aug 2014 08:55:36 +0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Alexandros Prekates (2014-08-26 03:07 +0400) wrote:

> On 25/08/2014 03:03 μμ, Alex Kost wrote:
>> Alexandros Prekates (2014-08-25 14:07 +0400) wrote:
>>
>>> On 25/08/2014 08:54 πμ, Alex Kost wrote:
>>>> Alexandros Prekates (2014-08-25 03:29 +0400) wrote:
>>>>
>>>>> Continuing little experiments to better undestand the relation among
>>>>> fonts, faces, frames etc, i noticed
>>>>> that  if i have 2 frames (A and B) and  i evaluate from ielm in frame A
>>>>> (set-frame-font "liberation serif" nil nil) . when i check the default
>>>>> face's font i see different values in frame A from frame B.
>>>>>
>>>>> So it seems that default face is a frame's variable.
>>>>>
>>>>> i mean every frame has its own default face? Is that right?
>>>> As you can see after "C-h f set-frame-font":
>>>>
>>>> “...
>>>> If FRAMES is nil, apply the font to the selected frame only.
>>>> ...”
>>>>
>>>> So the second nil in your expression means you set a font only for the
>>>> current frame A.
>>>>
>>>>
>>> So default face is not a global emacs session variable. It's an
>>> attribute per frame.
>> I thought you were talking about frame fonts.  AFAIU there is only one
>> ‘default’ face (defined in "faces.el"), if that's what you mean.
>>
>
> But the assumption that there is only one global default face
> contradicts with what i see.
>
> In two frames (of the same emacs session)  M-x describe-face (default)
> gives me different font families ( i changed in each frame the font with
> set-frame-font.)

I didn't mean there is always only one global value of a face for all
frames.  As you could see it is possible to set face attributes for a
particular frame.  Here is a paragraph from (info "(elisp) Faces"):

“...
   By default, each face name corresponds to the same set of attributes
in all frames.  But you can also assign a face name a special set of
attributes in one frame (*note Attribute Functions::).
”

You can look at (info "(elisp) Attribute Functions") to read how it can
be done.  And ‘set-frame-font’ does exactly that: it calls
‘set-face-attribute’ to specify a font for the current frame.




reply via email to

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