今回も、弊社で毎日行われている、ミニミニ Emacs 勉強会で @tomoyaton から教えてもらいました。
Emacs23 からは M-x global-whitespace-mode すると、改行やタブ、スペースを色づけできるようになってます。常に表示させるには ~/.emacs に以下を書けば OK です。
(global-whitespace-mode 1)
でも私は改行と全角スペースだけ色付けすればよいので、上記に加えて下記も設定することにしました。
;; スペースの定義は全角スペースとする。
(setq whitespace-space-regexp "\x3000+")
;; 改行の色を変更
(set-face-foreground 'whitespace-newline "gray40")
;; 半角スペースと改行を除外
(dolist (d '((space-mark ?\ ) (newline-mark ?\n)))
  (setq whitespace-display-mappings
        (delete-if
         '(lambda (e) (and (eq (car d) (car e))
                           (eq (cadr d) (cadr e))))
         whitespace-display-mappings)))
;; 全角スペースと改行を追加
(dolist (e '((space-mark   ?\x3000 [?\□])
             (newline-mark ?\n     [?\u21B5 ?\n] [?$ ?\n])))
  (add-to-list 'whitespace-display-mappings e))
;; 強調したくない要素を削除
(dolist (d '(face lines space-before-tab
                  indentation empty space-after-tab tab-mark))
  (setq whitespace-style (delq d whitespace-style)))
※ delete-if() 使っているので、あらかじめ (require 'cl) する必要があります。