EditorConfig というものを最近知りました。
プロジェクトのルートに .editorconfig
というファイルをつくり、たとえば下記のような内容にしておきます。
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.rb]
indent_style = space
indent_size = 2
[*.js]
indent_style = space
indent_size = 4
代表的なエディタ (Sublime Text, Atom, Emacs, Vim など) 用にプラグインが提供されているので、これを導入します。
するとこのプラグインは .editorconfig
を見て下記のようなエディタの動作を切り替えてくれます。
- インデントをタブで入れるかスペースで入れるか、スペースならいくつか
- ファイル末尾が改行でなければ改行を入れるか
- 行末のスペースを削除するか
- 改行コードをなににするか
しかも、上の例でわかるように、パターンマッチングでファイルごとにルールを変えることもできます。すばらしい!
.editorconfig
の書き方は 公式ページの File Format Details にまとまってます。
OSS に最適では
私もそうですが、こうした設定は、エディタの設定ですでにある程度やってると思います。
普段はこれで問題ないんだけど、OSS に contribute するときに、自分が普段書くスタイルと異なると、変更したい行以外の箇所にたくさん変更が入ってしまうんですよね。
もちろん動作は変わらないんだけど、diff がごちゃごちゃするし、勝手にスタイル変えるのもよくないので、設定を無効にして書き直したりしてます。面倒です。
.editorconfig
をリポジトリに含めておけば、「これがこのプロジェクトで使うスタイルですよ」ってことが明確になるし、各々がエディタの設定を気にする必要もなくなります。
Pull Request されたコードのスタイルに気になる点があっても「.editorconfig
あるからそれ使って」のひとことで済みます。いいですよね。