Vimについては
行の末尾の空白文字と決別する - その手の平は尻もつかめるさ
で、もづにおん先輩が書いていたので、EmacsとAtom.ioについて書きます。
ハッカーと画家にも書かれていますが、プログラマーというのはマグカップは洗わないくせに、行末のスペースには神経質になる生き物です。うっかり行末スペースを残してPull Requestを送り、そんなプログラマーの怒りを買う前に、エディタに消してもらいましょう。
Emacs
;;; 保存時に行末のスペースを削除 ;;; (add-hook 'before-save-hook 'delete-trailing-whitespace)
ついでに、不可視文字たちの表示設定もしておくと便利です。
;;; タブ, スペース, 全角スペースを表示する ;;; (defface my-face-b-1 '((t (:background "gray15"))) nil) (defface my-face-b-2 '((t (:background "gray26"))) nil) (defface my-face-u-1 '((t (:foreground "SteelBlue" :underline t))) nil) (defvar my-face-b-1 'my-face-b-1) (defvar my-face-b-2 'my-face-b-2) (defvar my-face-u-1 'my-face-u-1) (defadvice font-lock-mode (before my-font-lock-mode ()) (font-lock-add-keywords major-mode '( ("\t" 0 my-face-b-2 append) (" " 0 my-face-b-1 append) ("[ \t]+$" 0 my-face-u-1 append) ) )) (ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode) (ad-activate 'font-lock-mode)
モダンな人たちはこういうEmacs Lispを使う様です。
Atom.io
$ apm install whitespace
デフォルトの設定だと、CurrentLineの行末スペースは消さない設定になっていたりします。適宜使いやすい様に、変えましょう。まだ、ファイルタイプ毎にEnable/Disableの設定は出来ないようです。(GitHubにIssue立っていたので、そのうち実装されるはず。)
不可視文字(スペース)を表示したいときは、Settingsの下の方にShow Invisibles
という項目があるので、それにチェックを入れましょう。
問題点
- Whitespaceを削除しただけのコミットが生成される
- Atom.ioの
Show Invisibles
が見づらい
Whitespaceを削除しただけのコミットが生成される
これ結構面倒で、ブランチ切って作業し始めて、「どこを変えると良さそうかな?」と見たり試していると、行末スペースが消えたCommitが生まれてしまう。含めなければ良いという話もあるけど、特に意匠がない場合は消しておきたいと思うから、Striped trailing whitespaces
みたいなcommitができる。
作ってるほうはそこまで手間じゃないけれど、レビューの時に無駄が増える気がしている。パッと見てみて「あ、これはスペース消しただけか。」って思うのは一瞬だけど、そこに至るまでの作業がもったいない。そもそもなければ見ないし考えない。それに、Files changed
がたくさんあると、レビューする人も身構える必要があって精神衛生上良くない。
なんか上手い解決法教えて欲しい。
Atom.ioのShow Invisibles
が見づらい
異様に見づらい。欲しかったのはコレじゃない。