読者です 読者をやめる 読者になる 読者になる

文字っぽいの。

文字を書いています。写真も混ざります。

行の末尾の空白文字と決別する

Emacs Atom.io

Vimについては

行の末尾の空白文字と決別する - その手の平は尻もつかめるさ

で、もづにおん先輩が書いていたので、EmacsAtom.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が見づらい

 異様に見づらい。欲しかったのはコレじゃない。