Subject: bug#3210: closed (Re: bug#3408: bug#3210: face customization fails after set-face-attribute)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 25 Nov 2012 05:07:02 +0000

Your bug report

#3408: face customization fails after set-face-attribute

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
3408: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3408
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#3408: bug#3210: face customization fails after set-face-attribute
From: Chong Yidong <[email-masked]>
To: "Drew Adams" <[email-masked]>
Cc: 'David Reitter' <[email-masked]>, [email-masked], [email-masked]
Date: Sun, 25 Nov 2012 13:04:32 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

"Drew Adams" <[email-masked]> writes:

> Bug #3408 is a _regression_, and it has not been fixed.
> A regression is certainly NOT `notabug'.

I disagree that this is a bug.  I have now taken another look at the
code, and my earlier conclusion stands.  Modifications to internal Lisp
faces (via set-face-attribute) take precedence over the effect of face
specs, so the behavior is working as intended and as documented
(including in the docstring of set-face-attribute).

The trunk now contains a change to face-spec-set which allows it to be
more easily called from Lisp code to override defface specs.  If you
want to modify faces from Lisp, use that rather than set-face-attribute.

Don't re-open this bug based on uninformed opinion.  Thanks.

Subject: face customization fails after set-face-attribute
From: David Reitter <[email-masked]>
To: [email-masked]
Date: Mon, 4 May 2009 16:04:35 -0400

Emacs -Q

(set-face-attribute 'default nil
		    :height 130
		    :family "Lucida Grande")
;; modifies default face

(customize-face 'default)
;; switch back manually to Monaco and "set for current session"

(make-frame-command)  ;; C-x 5 2
;; the new frame is shown in Lucida.  Why?

Upon inspection of some code, it appears unclear why `face-spec-set'  
iterates over all frame faces and sets the new spec there, but doesn't  
set the right property to set the face for future frames in case for- 
defface is t.