From: Oleksandr Manzyuk <[email-masked]>
Date: Mon, 27 Feb 2012 22:10:33 +0000

I'd like to confirm this problem.  I've chased it down to the function
`face-spec-reset-face' from lisp/faces.el.  The version from Emacs
23.2:

(defun face-spec-reset-face (face &optional frame)
  "Reset all attributes of FACE on FRAME to unspecified."
  (let ((attrs face-attribute-name-alist))
    (while attrs
      (let ((attr-and-name (car attrs)))
	(set-face-attribute face frame (car attr-and-name) 'unspecified))
      (setq attrs (cdr attrs)))))

The same function from trunk:

(defun face-spec-reset-face (face &optional frame)
  "Reset all attributes of FACE on FRAME to unspecified."
  (unless (eq face 'default)
    (let (reset-args)
      (dolist (attr-and-name face-attribute-name-alist)
	(push 'unspecified reset-args)
	(push (car attr-and-name) reset-args))
      (apply 'set-face-attribute face frame reset-args))))

Why does the latter not reset the default face?  If I start Emacs with
"emacs -Q", start the server with M-x server-start, and evaluate the
former definition in the *scratch* buffer, then doing "emacsclient -t"
from the terminal gives me a frame that respects my terminal
background color.

Best,
Sasha
-- 
Oleksandr Manzyuk
http://oleksandrmanzyuk.wordpress.com