改行の見える化

シェルスクリプトの行末にスペースが入っていて二時間ぐらいはまってハゲるかと思ったのでメモ。改行を見える化することによりバグの原因となる行末のスペースを根絶します!

参考にしたのはこちら。ありがたやありがたや。
masutaka.net

以下を .emacs.el に追加。

(global-whitespace-mode 1)
(require 'cl)

;; スペースの定義は全角スペースとする。
(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     [?\xAB ?\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)))

ほとんど丸パクリそのままですが、表示する改行コードだけ「xAB」に変更しました。また、SKK を使用しているので全角スペースは基本入力できないのですが、間違えて IME を使って Emacs で漢字入力している時がたまにあるのでw、設定は生かしておきます。全角スペースとかスクリプト言語だと謎のエラー出るので、これも根絶します!
f:id:umeaji:20220117153707p:plain
なんか警告表示されてるけど気にしたら負けだっ!w
これで行末スペースのせいでハゲる事はなさそうです。頭髪にやさしい設定になりました。
やったね!