Subject: bug#11031: 24.0.94; `custom-theme-visit-theme' reverts custom-theme settings

From: Richard Copley <[email-masked]>
Date: Fri, 16 Mar 2012 22:07:54 +0000

`custom-theme-visit-theme' reverts your custom-theme settings, globally. It
shouldn't do that without asking! In fact, it's worse than that. Since
it doesn't
revert non-theme face settings, it's quite likely to make Emacs
impossible to use.

Most often, when I visit a theme it's because I want to make a minor change to
the theme that I'm using. At the moment the least annoying way to do that is by
editing the Lisp source file of the theme.

To reproduce from emacs -Q, choose some theme using M-x `customize-themes',
then visit a theme using `custom-theme-visit-theme'.

To reproduce visiting a theme making Emacs unusable,
<<customize-themes>>
# Choose tsdh-dark.
# Think "That's nice but it could be a little bit brighter".
M-: (set-face-attribute SPC 'default SPC nil SPC :foreground SPC "white") RET
# Think "That's odd, nothing happened. Oh, I have to visit the theme."
<<custom-theme-visit-theme>> tsdh-dark RET
# Think "Oh dear."
C-x C-c

Incidentally, `customize-theme-revert' needs a doc string and the
`customize-create-theme' doc string doesn't make sense (what are "these"?).

In GNU Emacs 24.0.94.1 (i386-mingw-nt6.1.7601)
 of 2012-03-16 on MACHINE
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --with-gcc (4.6) --enable-checking --cflags -L
 c:/gnuwin32/lib -I c:/gnuwin32/include'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENG
  value of $XMODIFIERS: nil
  locale-coding-system: cp1252
  default enable-multibyte-characters: t

Major mode: Custom-Theme

Minor modes in effect:
  shell-dirtrack-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  show-paren-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr hippie-exp etags emacsbug message rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mail-utils
cus-theme cus-edit cus-start cus-load wid-edit crm help-mode view dired
buster-theme indent-mode help! hi-lock-extras navlock single-key-repeat
save-modified mpsdocn mumps-dotlevel-mode mps-debug mps-util mps-mode
thingatpt mps-string mps bindat mumps-mode mumps-header-line easy-mmode
mumps-indent mumps-refs mumps-motion mumps-scanning tramp tramp-compat
auth-source eieio byte-opt bytecomp byte-compile cconv macroexp assoc
gnus-util mm-util mail-prsvr password-cache shell pcomplete format-spec
tramp-loaddefs package tabulated-list tortoise-ediff ediff-merg
ediff-diff ediff-wind ediff-help ediff-util ediff-mult ediff-init ediff
hi-lock grep compile comint regexp-opt ansi-color ring eldoc paren
server cperl-mode easymenu pascal delphi advice help-fns advice-preload
time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32
disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe
lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer button faces cus-face files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process multi-tty emacs)