VS Codeで " { " を改行させない

きっかけ

MacBookProのOSをCatalinaからMojaveにダウングレードさせる際、アップデート時にバックアップを取っていなかったためMBPを出荷時の状態に戻す作業が必要であり、当然VSCodeの設定もやり直さねばならなかた。 宗教的に様々な流儀があるが、私はC言語系の波括弧は関数やif文の ()の後ろに改行なしで書きたい。

VSCodeでは()の後ろに改行を挟んで { を記述することがデフォルトのフォーマット様式になっている。

というわけで、今後もPCの買い替えなどでVSCodeの再設定の機会があるだろうし備忘録として書き残しておく。

1 : Clang-FormatをVSCodeへインストール

まず、VSCode拡張機能からClang-Formatをインストールする。

これによってVSCodeでClang-Formatを使用できるようになった。

2 : clang-formatをMacへインストール

次にMac本体へclang-formatをインストールする。

$ brew update
$ brew install clang-format

これをターミナルに入力。
これにより 1 でVSCodeにインストールした拡張機能を使用できるようになったが、後もう1ステップだけ必要になる。

3 : .clang-formatファイルを作成する

1 の拡張はカレントディレクトリ or ルートディレクトリに置かれている.clang-formatというファイルに書かれているフォーマット設定をコードの整形に反映させる。

以下をターミナルに入力して、その.clang-formatファイルを作成する。

$ clang-format -dump-config -style="@@@" > .clang-format

@@@の箇所には自分の好みのフォーマットスタイルを指定する。 使えるのは以下の通り。

Visual Studio
LLVM
Google
Chromium
Mozilla
Webkit

どれを使用するかは完全に好みだがWebkit以外では、コードの一行が長く、そこにコメントがついている箇所では、気持ち悪い改行が自動で挟まれる。

GoogleLLVMを使用すれば、それだけで主題の { 問題は解決されるのだが、上に示したコードの折り返し問題が新たに発生する。

Googleなどをスタイルに適用して折り返し問題に対応するより、Webkitを適用して { 問題を処理する方がシンプルで簡単であると踏んで私はWebkitを採用した。

4 : .clang-formatを編集する

上記の手順でルートディレクトリに.clang-formatファイルが作成できたので、次はこれを編集していく。
ターミナルに

$ vi .clang-format

と入力し編集していく。 今回は波括弧をどうにかしたいのでBreakBeforeBracesの項目を編集する。

上の図のようにこの項目をAttachにすることで波括弧を全て ) と同じ行に表示することが可能になった。

快適なプログラミングライフを!

その他の項目についてはこのページに丁寧にまとめられている。

yasuharu519.hatenablog.com

参考ページ

https://blog.takuchalle.dev/post/2018/04/26/setup_clang_format/

https://qiita.com/para7/items/b4a90dd7338320655357