somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Emacs】空白系文字の表示と末尾の半角スペースの削除

開発していて見えていないと困るスペース系の文字を表示するようにしました。

空白系文字の表示

2通りの方法がありました。

以下、ぞれぞれの設定です。

;; 末尾の半角スペースとタブを表示
(defface my-face-u-1 '*1
(font-lock-add-keywords major-mode '*2
) t)
;; 全角スペース 改行 タブ表示
;; (install-elisp "http://homepage3.nifty.com/satomii/software/jaspace.el")
(require 'jaspace)
(setq jaspace-alternate-jaspace-string "□")
(setq jaspace-alternate-eol-string "↓\n")
(setq jaspace-highlight-tabs ?^ )

末尾にある半角スペース表示用と、半角スペース以外の表示用として使い分けています。

末尾の半角スペースの削除

末尾に無駄な半角スペースがあったり、行頭からインデントしてあるだけのスペースがあると気になります。Eclipseにもあるように、ファイルの保存時に削除してくれる機能がないか調べたらEmacsにもありました。

M-x delete-trailing-whitespace

現在バッファの行末のタブと半角スペースを削除してくれます。ただし、全角スペースは削除対象外です。これを保存時にフックすることで実現します。

;; 行末の(タブ・半角スペース)を削除
(add-hook 'before-save-hook 'delete-trailing-whitespace)

これで目的を達成することができました。

適用するモードの設定

elispには適用されたのですが、他のモードで適用されませんでした。jaspace-modes変数にモードを追加する必要があります。下記は、デフォルトで適用されるモードです。

asm-mode
awk-mode
autoconf-mode
c-mode
c++-mode
cc-mode
change-log-mode
cperl-mode
emacs-lisp-mode

jaspace-modesにモードを追加するには以下の設定を追加します。

(setq jaspace-modes (append jaspace-modes
                            (list 'モード名シンボル)))

*1:t (:foreground "SteelBlue" :underline t))) nil) (defvar my-face-u-1 'my-face-u-1) (defadvice font-lock-mode (before my-font-lock-mode (

*2:"[ \t]+$" 0 my-face-u-1 append)))) (ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode) (ad-activate 'font-lock-mode) (add-hook 'find-file-hooks '(lambda () (if font-lock-mode nil (font-lock-mode t