今回も、弊社で毎日行われている、ミニミニ 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)
する必要があります。