VSCodeでの(主に)clang-format(C/C++フォーマット)に関する設定
%USERPROFILE%\AppData\Roaming\Code\User\
ここにあるsettings.jsonの中身を変更することで各種動作を制御可能。
{ "files.autoSave": "onFocusChange", "editor.mouseWheelZoom": true, "editor.formatOnType": true, "editor.formatOnSave": true, "editor.autoClosingBrackets": "never", "C_Cpp.clang_format_style": "{ BasedOnStyle: LLVM, BreakBeforeBraces: Attach, SpaceBeforeParens: Never, IndentWidth: 4, AllowShortBlocksOnASingleLine: false, AllowShortCaseLabelsOnASingleLine: false, AllowShortFunctionsOnASingleLine: false, AllowShortIfStatementsOnASingleLine: false, AllowShortLoopsOnASingleLine: false, ColumnLimit: 0, TabWidth: 4, UseTab: 'Never', SpacesBeforeTrailingComments: 1, AlignConsecutiveMacros: true, AllowShortCaseLabelsOnASingleLine: false, SpaceBeforeParens: true, PointerAlignment: Left }", }
各オプション(C_Cpp.clang_format_style)の詳細はClang-Format Style Options — Clang 13 documentationに記載されてます。
C_Cpp.clang_format_style 項目ごとの意味[TODO]
{ BasedOnStyle: LLVM, BreakBeforeBraces: Attach, SpaceBeforeParens: Never, IndentWidth: 4, AllowShortBlocksOnASingleLine: false, AllowShortCaseLabelsOnASingleLine: false, AllowShortFunctionsOnASingleLine: false, AllowShortIfStatementsOnASingleLine: false, AllowShortLoopsOnASingleLine: false, ColumnLimit: 0, TabWidth: 4, UseTab: 'Never', SpacesBeforeTrailingComments: 1, AlignConsecutiveMacros: true, AllowShortCaseLabelsOnASingleLine: false, SpaceBeforeParens: true, PointerAlignment: Left }
構造体変数配列の連続アラインメント
これは未対応なので
struct T xs[] = { // clang-format off { 123, 1, 3 }, { 1 , 12, 3 }, { 12 , 312, 3 }, // clang-format on };
等で逃げる。
clang-format.exeと.clang-formatにてフォーマットする(2021-12-23追記)
clang-format.exeをどこからか持ってきてC:/opt/bin/
などに置く。
名前: Clang-Format ID: xaver.clang-format 説明: Use Clang-Format in Visual Studio Code バージョン: 1.9.0 パブリッシャー: xaver VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=xaver.clang-format
をインストール
C:\Users\%USERNAME%\AppData\Roaming\Code\User\settings.json
は以下のように記述。
"clang-format.executable": "C:/opt/bin/clang-format.exe", "[c]": { "editor.defaultFormatter": "xaver.clang-format" }, "[cpp]": { "editor.defaultFormatter": "xaver.clang-format" }, "[ino]": { "editor.defaultFormatter": "xaver.clang-format" },
これでフォーマッタの挙動をsettings.jsonではなく、ファイルシステム上の.clang-formatファイルで制御可能となる。
--- BasedOnStyle: LLVM IndentWidth: 4 TabWidth: 4 UseTab: Never ColumnLimit: 0 AllowShortIfStatementsOnASingleLine: true AlignConsecutiveMacros: true SpacesBeforeTrailingComments: 1 PointerAlignment: Left ...