Subject: 23.2; global-whitespace-mode does not survive in buffers changing major mode

From: Anders Kaseorg <[email-masked]>
Date: Wed, 13 Oct 2010 15:15:57 -0400

When global-whitespace-mode is enabled, all existing and new buffers get
whitespace highlighting, but the highlighting goes away in any buffer
whose major mode is later changed.  You can see this, for example, with
  SPC SPC <return> M-x global-whitespace-mode M-x c-mode

I think the fix is to define global-whitespace-mode with
define-globalized-minor-mode, instead of trying to simulate it with
find-file-hook.

In GNU Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.21.6)
 of 2010-09-01 on americium, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.10900000
configured using `configure  '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

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: en_US.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: C/l

Minor modes in effect:
  global-whitespace-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
SPC SPC <return> M-x g l o b a l - w h i t e s p a 
c e - m o d e <return> M-x c - m o d e <return> M-x 
r e p o r t - e m a c s - b u g <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Global-Whitespace mode enabled

Load-path shadows:
/usr/share/emacs/23.2/site-lisp/debathena-discuss-emacs/discuss-acl hides /usr/share/emacs/site-lisp/discuss-acl
/usr/share/emacs/23.2/site-lisp/debathena-discuss-emacs/discuss hides /usr/share/emacs/site-lisp/discuss
/usr/share/emacs/23.2/site-lisp/debathena-discuss-emacs/discuss-misc hides /usr/share/emacs/site-lisp/discuss-misc
/usr/share/emacs/23.2/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs/23.2/site-lisp/debathena-discuss-emacs/discuss-enter hides /usr/share/emacs/site-lisp/discuss-enter
/usr/share/emacs/23.2/site-lisp/magit hides /usr/share/emacs/site-lisp/magit
/usr/share/emacs/23.2/site-lisp/debathena-discuss-emacs/discuss-ls hides /usr/share/emacs/site-lisp/discuss-ls
/usr/share/emacs/23.2/site-lisp/speedbar/speedbar hides /usr/share/emacs/23.2/lisp/speedbar
/usr/share/emacs/23.2/site-lisp/cedet-common/ezimage hides /usr/share/emacs/23.2/lisp/ezimage
/usr/share/emacs/23.2/site-lisp/speedbar/sb-image hides /usr/share/emacs/23.2/lisp/sb-image
/usr/share/emacs/23.2/site-lisp/speedbar/dframe hides /usr/share/emacs/23.2/lisp/dframe
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/23.2/lisp/textmodes/rst
/usr/share/emacs/23.2/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/23.2/lisp/textmodes/ispell
/usr/share/emacs/23.2/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/23.2/lisp/textmodes/flyspell
/usr/share/emacs/23.2/site-lisp/eieio/eieio-opt hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio-opt
/usr/share/emacs/23.2/site-lisp/eieio/eieio-comp hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio-comp
/usr/share/emacs/23.2/site-lisp/eieio/eieio-base hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio-base
/usr/share/emacs/23.2/site-lisp/eieio/eieio-speedbar hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio-speedbar
/usr/share/emacs/23.2/site-lisp/eieio/eieio hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio
/usr/share/emacs/23.2/site-lisp/eieio/eieio-custom hides /usr/share/emacs/23.2/lisp/emacs-lisp/eieio-custom
/usr/share/emacs/23.2/site-lisp/eieio/chart hides /usr/share/emacs/23.2/lisp/emacs-lisp/chart
/usr/share/emacs/23.2/site-lisp/cedet-common/inversion hides /usr/share/emacs/23.2/lisp/cedet/inversion
/usr/share/emacs/23.2/site-lisp/cedet-common/cedet hides /usr/share/emacs/23.2/lisp/cedet/cedet
/usr/share/emacs/23.2/site-lisp/semantic/semantic hides /usr/share/emacs/23.2/lisp/cedet/semantic
/usr/share/emacs/23.2/site-lisp/ede/ede hides /usr/share/emacs/23.2/lisp/cedet/ede
/usr/share/emacs/23.2/site-lisp/cedet-common/cedet-files hides /usr/share/emacs/23.2/lisp/cedet/cedet-files
/usr/share/emacs/23.2/site-lisp/cedet-common/mode-local hides /usr/share/emacs/23.2/lisp/cedet/mode-local

Features:
(shadow sort mail-extr message sendmail ecomplete rfc822 mml mml-sec
password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231
rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc
time-date mm-util mail-prsvr gmm-utils wid-edit mailheader canlock sha1
hex-util hashcash mail-utils emacsbug cc-mode cc-fonts easymenu cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs regexp-opt
cus-start cus-load disp-table whitespace tooltip ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag 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 loaddefs button minibuffer faces cus-face files
text-properties overlay md5 base64 format env code-pages mule custom
widget hashtable-print-readable backquote make-network-process dbusbind
system-font-setting font-render-setting gtk x-toolkit x multi-tty emacs)