Subject: bug#2234: 23.0.90; custom-set-faces inhibits faces differences between X11 and console clients

From: [email-masked] (Stefano Zacchiroli)
Date: Sun, 8 Feb 2009 11:52:19 +0100 (CET)

I use a main X11 emacs with clients (sometime X11, sometime console)
which attach to it. I want to have "black on white" X11 clients and
"white on black" console clients. (Actually, I don't care what Emacs
does with console colors, I just want it to preserves my terminal
defaults and I do use black background terminals.)

If I have *no* custom-set-faces section in my .emacs the default
configuration just does what I want.
- I start main X11 emacs (which is white on black)
- I start console clients (which are black on white, respecting the
  terminal)

... but I do need to customize faces, because I want the font in X11
to be smaller than the default. As soon as I add a
(custom-set-faces...) to my ~/.emacs, no matter _what_ I write into
it, the above doesn't work anymore. More precisely it seems that the
first kind of emacs which gets launched (X11 vs console) fixes once
and for all foreground and background colors. Hence:

- if I start the first emacs on X11, I'll the have "black on white"
  console clients
- if I start the first emacs on console, everything is fine again

My feeling is that there is a quite profund issue here of separation
of the initialization code, which looks like to be centralized while
it should be (to some extent) split and partly executed by clients.

... but more practically I'm also looking for workarounds :-)

TIA,
Cheers.

In GNU Emacs 23.0.90.1 (x86_64-pc-linux-gnu, GTK+ Version 2.12.11)
 of 2009-02-07 on elegiac, modified by Debian
 (emacs-snapshot package, version 1:20090207-1)
Windowing system distributor `The X.Org Foundation', version 11.0.10402000
configured using `configure  '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/23.0.90/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.0.90/site-lisp:/usr/share/emacs/site-lisp' '--with-x=yes' '--with-x-toolkit=gtk' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: it_IT.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Conf[Xdefaults]

Minor modes in effect:
  iswitchb-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<help-echo> ESC [ > 1 ; 1 6 1 4 ; 0 c C-x C-c M-x r 
e p o <tab> r <tab> <return> C-g C-x C-f , e <backspace> 
<backspace> . X r <tab> <return> C-n C-n C-n i E a 
<backspace> m a c s . f o n t : SPC m o n o s p a c 
e <escape> C-/ M-x r e p o <tab> r t - e m <tab> <return> 
ESC [ > 1 ; 1 6 1 4 ; 0 c <switch-frame> C-x <switch-frame> 
C-g j n C-n C-n C-n C-n <switch-frame> C-c <switch-frame> 
C-c C-l C-x C-c ESC [ > 1 ; 1 6 1 4 ; 0 c C-x C-c k 
k k k ESC [ > 1 ; 1 6 1 4 ; 0 c <switch-frame> M-x 
r e p o r t <tab> <return>

Recent messages:
When done with a buffer, type C-x #
viper-find-char: Viper bell [2 times]
viper-prefix-arg-com: Viper bell
Quit
viper-search-next: No previous search string
(No files need saving)
When done with a buffer, type C-x #
(No files need saving)
line-move-1: Beginning of buffer
When done with a buffer, type C-x #