💮
インデントおよび行末は EditorConfig で始末する
EditorConfig はテキストエディタや IDE (Integrated Development Environment; 統合開発環境) などで文字コードやインデントや改行コードなどの設定を共有するための仕組みで,メジャーなエディタや IDE なら既定で組み込まれているか拡張機能で導入することができる。これによって開発環境や個人設定の差異によるコーデイング・スタイルの混乱を抑えることができる。
EditorConfig による設定
EditorConfig を有効にするにはプロジェクトのトップ・フォルダに .editorconfig
ファイルを置けばよい。たとえば私がよく使う .editorconfig
ファイルの中身はこんな感じ。
.editorconfig
root = true
[*]
end_of_line = lf
charset = utf-8
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = false
insert_final_newline = true
[*.go]
trim_trailing_whitespace = true
[*.md]
indent_style = space
indent_size = 4
[*.yml]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
EditorConfig はフォルダを遡って .editorconfig
ファイルを探し,フォルダの上から順番に評価していく。 root = true
の記述がないとどこまでも上の階層に遡っていくので,プロジェクトのトップ・フォルダの .editorconfig
ファイルには必ずこれを記述すること。
-
[...]
は対象となるファイルを指定している。[*]
なら全てのファイルが対象,[*.go]
は拡張子がgo
のファイルが対象となる -
indent_style
はインデントのスタイルを指定する。tab
またはspace
を指定する -
indent_size
はインデントの幅を指定する。indent_style
がtab
の場合はtab_width
で指定するようだ -
end_of_line
は改行コードを指定する。lf
,cr
,crlf
から選択できる -
chaset
は文字エンコーディングを指定する。latin1
,utf-8
,utf-8-bom
,utf-16be
orutf-16le
から選択できる。残念ながらこれ以外の文字エンコーディングについてはエディタ側の実装に依存する -
trim_trailing_whitespace
をtrue
にすると行末の空白文字を削除してくれる -
insert_final_newline
をtrue
にするとファイルの末尾が改行文字ではない場合に補完してくれる
詳しい仕様については仕様書ページを参考にどうぞ。ただしエディタや IDE によっては全ての機能を網羅していない場合があるのでご注意を。
EditorConfig によるコーディング規約の統一
こういう仕組みがあればドキュメントで「コーディング規約」を周知しなくても .editorconfig
ファイルをリポジトリに放りこんでおけば済む[1]。というかリポジトリを作ったらまず .editorconfig
ファイルをセットするよう習慣づけるべきだろう。
まぁ,最近は Go や Rust みたいに公式の整形ツールが用意されている言語もあるので[2],昔ほどの需要はないかもしれないけど。
参考
- EditorConfigで文字コード設定を共有して喧嘩しなくなる話。(Frontrend Advent Calendar 2014 – 14日目) | Ginpen.com
- どんなエディタでもEditorConfigを使ってコードの統一性を高める - Qiita
- 【ATOM Editor】 EditorConfig を使うなら Whitespace は不要 — しっぽのさきっちょ | text.Baldanders.info
Discussion