chore: update clang-format

This commit is contained in:
MistEO
2024-03-07 10:22:27 +08:00
parent 581b95db0d
commit 94a69d74c1
7 changed files with 176 additions and 211 deletions

View File

@@ -1,35 +1,45 @@
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
# for clang-format 17.0.1
Language: Json
ColumnLimit: 1000
IndentWidth: 4
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
BasedOnStyle: 'WebKit'
# AccessModifierOffset: 2
AlignAfterOpenBracket: 'AlwaysBreak'
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros: None
# AlignConsecutiveShortCaseStatements: None
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Empty
AlignTrailingComments:
Kind: Always
OverEmptyLines: 1
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: WithoutElse
# AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Inline
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
# AttributeMacros:
# - __pragma
# - _Pragma
# - __attribute__
# - __declspec
BinPackArguments: false
BinPackParameters: false
BitFieldColonSpacing: After
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
@@ -37,159 +47,147 @@ BraceWrapping:
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
# AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: false
AfterUnion: true
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
# BracedInitializerIndentWidth: 4
BreakAfterAttributes: Never
BreakAfterJavaFieldAnnotations: true
BreakArrays: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeConceptDeclarations: Always
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
ColumnLimit: 100
# CommentPragmas: '^ MEO pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
# ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
# ForEachMacros:
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH
# IfMacros:
# - 'KJ_IF_MAYBE'
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
# IncludeCategories:
# IncludeIsMainRegex:
# IncludeIsMainSourceRegex:
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentCaseLabels: false
IndentExternBlock: AfterExternBlock
IndentGotoLabels: false
IndentPPDirectives: None
IndentRequiresClause: false
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
IndentWrappedFunctionNames: true
InsertBraces: true
InsertNewlineAtEOF: true
InsertTrailingCommas: Wrapped
IntegerLiteralSeparator:
Binary: 4
BinaryMinDigits: 9
Decimal: 3
DecimalMinDigits: 7
Hex: -1
# JavaImportGroups:
# JavaScriptQuotes:
# JavaScriptWrapImports:
KeepEmptyLinesAtEOF: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
# LineEnding: LF
# MacroBlockBegin: "MAA.*_NS_BEGIN$"
# MacroBlockEnd: "MAA.*_NS_END$"
# Macros:
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 1000
PenaltyIndentedWhitespace: 0
NamespaceIndentation: None
# NamespaceMacros:
# ObjCBinPackProtocolList:
# ObjCBlockIndentWidth:
# ObjCBreakBeforeNestedBlockParam:
# ObjCSpaceAfterProperty:
# ObjCSpaceBeforeProtocolList:
PackConstructorInitializers: Never
# PenaltyBreakAssignment:
# PenaltyBreakBeforeFirstCallParameter:
# PenaltyBreakComment:
# PenaltyBreakFirstLessLess:
# PenaltyBreakOpenParenthesis:
# PenaltyBreakTemplateDeclaration:
# PenaltyExcessCharacter:
# PenaltyIndentedWhitespace:
# PenaltyReturnTypeOnItsOwnLine:
PointerAlignment: Left
PPIndentWidth: -1
ReferenceAlignment: Pointer
QualifierAlignment: Custom
QualifierOrder:
- inline
- static
- const
- constexpr
- type
ReferenceAlignment: Left
ReflowComments: true
RemoveBracesLLVM: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 50
ShortNamespaceLines: 1000
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: true
# SortJavaStaticImport:
SortUsingDeclarations: Lexicographic
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: true
AfterRequiresInExpression: true
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
# SpaceBeforeParensOptions:
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInParens: Never
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: c++20
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
# StatementAttributeLikeMacros:
# StatementMacros:
TabWidth: 4
UseCRLF: false
# TypeNames:
# TypenameMacros:
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
# VerilogBreakBetweenInstancePorts:
# WhitespaceSensitiveMacros:

View File

@@ -10,72 +10,3 @@ end_of_line = lf
[*.json]
indent_size = 4
[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
indent_size = 4
# Visual C++ Code Style settings
cpp_generate_documentation_comments = xml
# Visual C++ Formatting settings
cpp_indent_braces = false
cpp_indent_multi_line_relative_to = innermost_parenthesis
cpp_indent_within_parentheses = indent
cpp_indent_preserve_within_parentheses = true
cpp_indent_case_contents = true
cpp_indent_case_labels = false
cpp_indent_case_contents_when_block = false
cpp_indent_lambda_braces_when_parameter = true
cpp_indent_goto_labels = one_left
cpp_indent_preprocessor = leftmost_column
cpp_indent_access_specifiers = false
cpp_indent_namespace_contents = true
cpp_indent_preserve_comments = false
cpp_new_line_before_open_brace_namespace = new_line
cpp_new_line_before_open_brace_type = new_line
cpp_new_line_before_open_brace_function = new_line
cpp_new_line_before_open_brace_block = same_line
cpp_new_line_before_open_brace_lambda = same_line
cpp_new_line_scope_braces_on_separate_lines = false
cpp_new_line_close_brace_same_line_empty_type = false
cpp_new_line_close_brace_same_line_empty_function = false
cpp_new_line_before_catch = true
cpp_new_line_before_else = true
cpp_new_line_before_while_in_do_while = false
cpp_space_before_function_open_parenthesis = remove
cpp_space_within_parameter_list_parentheses = false
cpp_space_between_empty_parameter_list_parentheses = false
cpp_space_after_keywords_in_control_flow_statements = true
cpp_space_within_control_flow_statement_parentheses = false
cpp_space_before_lambda_open_parenthesis = false
cpp_space_within_cast_parentheses = false
cpp_space_after_cast_close_parenthesis = false
cpp_space_within_expression_parentheses = false
cpp_space_before_block_open_brace = true
cpp_space_between_empty_braces = false
cpp_space_before_initializer_list_open_brace = false
cpp_space_within_initializer_list_braces = true
cpp_space_preserve_in_initializer_list = true
cpp_space_before_open_square_bracket = false
cpp_space_within_square_brackets = false
cpp_space_before_empty_square_brackets = false
cpp_space_between_empty_square_brackets = false
cpp_space_group_square_brackets = true
cpp_space_within_lambda_brackets = false
cpp_space_between_empty_lambda_brackets = false
cpp_space_before_comma = false
cpp_space_after_comma = true
cpp_space_remove_around_member_operators = true
cpp_space_before_inheritance_colon = true
cpp_space_before_constructor_colon = true
cpp_space_remove_before_semicolon = true
cpp_space_after_semicolon = false
cpp_space_remove_around_unary_operator = true
cpp_space_around_binary_operator = insert
cpp_space_around_assignment_operator = insert
cpp_space_pointer_reference_alignment = left
cpp_space_around_ternary_operator = insert
cpp_wrap_preserve_blocks = one_liners

View File

@@ -74,11 +74,17 @@ Note: operations regarding Git can be done by VS2022 instead of command line too
## Enable clang-format in Visual Studio
1. Download [clang-format.zip](https://github.com/MaaAssistantArknights/MaaAssistantArknights/files/12775054/clang-format.zip) or compile [zzyyyl/llvm-project](https://github.com/zzyyyl/llvm-project/tree/fix/clang-format). You will get a `clang-format.exe`.
2. Search `clang-format` in `Tools`-`Options`.
3. Click `Enable ClangFormat` and select `Use custom clang-format.exe file` to use the `clang-format.exe` you have got in Step 1.
1. Install clang-format version 17 or higher.
![Enable clang-format in Visual Studio](https://user-images.githubusercontent.com/74587068/188262146-bf36f10a-db94-4a3c-9802-88b703342fb6.png)
```bash
python -m pip install clang-format
```
2. Use tools like 'Everything' to locate the installation location of clang-format.exe. As a reference, if you are using Anaconda, clang-format.exe will be installed in YourAnacondaPath/Scripts/clang-format.exe.
3. In Visual Studio, search for 'clang-format' in Tools-Options.
4. Click `Enable ClangFormat` and select `Use custom clang-format.exe file` to use the `clang-format.exe` you have got in Step 2.
![Enable clang-format in Visual Studio](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
You are all set with the clang-format integrated in Visual Studio supporting c++20 features!

View File

@@ -73,7 +73,7 @@ icon: iconoir:developer
```
3. リベース (推奨) またはマージでブランチに統合する
```bash
git rebase upstream/dev # リベース
```
@@ -92,11 +92,17 @@ VS2022を開いた後、gitに関する操作はコマンドラインツール
## Visual Studioでclang-formatを有効にする
1. [clang-format.zip](https://github.com/MaaAssistantArknights/MaaAssistantArknights/files/12775054/clang-format.zip) をダウンロードするか、[zzyyyl/llvm-project](https://github.com/zzyyyl/llvm-project/tree/fix/clang-format) をコンパイルします。 `clang-format.exe` を取得します。
2. `tools-options` で `clang-format` を検索します。
3. `clang-formatサポートを有効にする` をクリックし、下の `カスタムのclang-format.exeファイルを使用する` を選択し、最初取得した `clang-format.exe` を選択します。
1. clang-format バージョン17以上をインストールします。
![Visual Studioでclang-formatを有効にする](https://user-images.githubusercontent.com/74587068/188262146-bf36f10a-db94-4a3c-9802-88b703342fb6.png)
```bash
python -m pip install clang-format
```
2. 'Everything'などのツールを使用して、clang-format.exeのインストール場所を見つけます。参考までに、Anacondaを使用している場合、clang-format.exeはYourAnacondaPath/Scripts/clang-format.exeにインストールされます。
3. Visual Studioで、 Tools-Optionsで 'clang-format'を検索します。
4. `clang-formatサポートを有効にする` をクリックし、下の `カスタムのclang-format.exeファイルを使用する` を選択し、最初取得した `clang-format.exe` を選択します。
![Visual Studioでclang-formatを有効にする](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
そうすれば、 Visual Studio は c++20 構文をサポートする clang-format を問題なく使用できます!

View File

@@ -9,6 +9,7 @@
```bash
git clone <link to your forked repo> -b dev
```
4. 사전 구축된 서드파티 라이브러리를 다운로드합니다.
**만약 파이썬이 설치되어 있지 않다면, 먼저 설치해주세요.**
@@ -16,6 +17,7 @@
```cmd
python maadeps-download.py
```
5. 개발 환경을 구성해줍시다.
1. `Visual Studio 2022 Community`를 다운로드하여 설치합니다. `Desktop development with C++` 을 선택하고 `.NET Desktop Development` 을 선택합니다.
@@ -37,6 +39,7 @@
```bash
git push origin dev
```
8. [MAA repository](https://github.com/MaaAssistantArknights/MaaAssistantArknights)로 이동하여 Pull Request를 제출합니다. 관리자가 승인할 때까지 기다립니다. 변경 사항은 `master` 브랜치가 아닌 `dev` 브랜치를 기반으로 해야 하며, `dev` 브랜치에도 병합되어야 합니다.
9. 업스트림 MAA 리포지토리에서 다른 기여자의 변경 사항이 있을 경우 자신의 분기에 해당 기여자를 추가해야 할 수 있습니다.
@@ -45,11 +48,13 @@
```bash
git remote add upstream https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
```
2. 저장소에서 업스트림 변경 내용을 가져옵니다.
```bash
git fetch upstream
```
3. 기본값 변경(권장) 또는 병합을 수행합니다.
방법1.
@@ -63,17 +68,23 @@
```bash
git merge
```
4. 5.3 ~ 7단계를 반복합니다.
메모: Git 관련 작업은 Git changes 탭을 사용하여 명령줄 도구 대신 VS2022에서 수행할 수 있습니다.
## Visual Studio에서 clang-format 활성화하기
1. [clang-format.zip](https://github.com/MaaAssistantArknights/MaaAssistantArknights/files/12775054/clang-format.zip)을 다운로드하거나 [zzyyyl/llvm-project](https://github.com/zzyyyl/llvm-project/tree/fix/clang-format)을 컴파일 합니다. `clang-format.exe`를 얻을 수 있습니다.
2. Search in `Tools`-`Options`에서 `clang-format`을 검색합니다.
3. 1단계에서 얻었던 `clang-format.exe` 를 사용하기 위해서 `Enable ClangFormat`을 클릭하고 `Use custom clang-format.exe file` 을 선택합니다.
1. clang-format 버전 17 이상을 설치합니다.
![Enable clang-format in Visual Studio](https://user-images.githubusercontent.com/74587068/188262146-bf36f10a-db94-4a3c-9802-88b703342fb6.png)
```bash
python -m pip install clang-format
```
2. 'Everything'과 같은 도구를 사용하여 clang-format.exe의 설치 위치를 찾습니다. 참고로, Anaconda를 사용하는 경우 clang-format.exe는 YourAnacondaPath/Scripts/clang-format.exe에 설치됩니다.
3. Visual Studio에서 Tools-Options에서 'clang-format'을 검색합니다.
![Enable clang-format in Visual Studio](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
C++20 기능을 지원하는 Visual Studio에 통합된 클랑 형식으로 모든 준비가 완료되었습니다!

View File

@@ -57,7 +57,7 @@ icon: iconoir:developer
11. 打開 [MAA 主倉庫](https://github.com/MaaAssistantArknights/MaaAssistantArknights)。提交一個 Pull Request等待管理員通過。
別忘了你是在 dev 分支上修改,別提交到 master 分支去了。
12. 當 MAA 主倉庫出現更改(別人做的),你可能需要把這些更改同步到你的分支
1. 關聯 MAA 主倉庫
@@ -91,11 +91,17 @@ icon: iconoir:developer
## 在 Visual Studio 中啟用 clang-format
1. 下載 [clang-format.zip](https://github.com/MaaAssistantArknights/MaaAssistantArknights/files/12775054/clang-format.zip) 或者編譯 [zzyyyl/llvm-project](https://github.com/zzyyyl/llvm-project/tree/fix/clang-format) ,得到一個 `clang-format.exe`
2. 在 `工具 - 選項` 中搜尋 `clang-format`
3. 點擊 `啟用 ClangFormat 支援`,然後選擇下面的 `使用自定義 clang-format.exe 檔案`,選擇第一步得到的 `clang-format.exe`
1. 安裝 clang-format 版本17或更高
![Visual Studio 設定 clang-format](https://user-images.githubusercontent.com/74587068/188262146-bf36f10a-db94-4a3c-9802-88b703342fb6.png)
```bash
python -m pip install clang-format
```
2. 使用 'Everything' 等工具尋找 clang-format.exe 的安裝位置。作為參考,若您使用了 Anacondaclang-format.exe 將安裝在 YourAnacondaPath/Scripts/clang-format.exe。
3. 在 Visual Studio 的 工具-選項 中搜索 clang-format。
4. 點擊 `啟用 ClangFormat 支援`,然後選擇下面的 `使用自定義 clang-format.exe 檔案`,選擇第 2 步得到的 `clang-format.exe`
![Visual Studio 設定 clang-format](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
然後你的 Visual Studio 就能愉快的使用支援 c++20 語法的 clang-format 啦!

View File

@@ -92,11 +92,18 @@ icon: iconoir:developer
## 在 Visual Studio 中启用 clang-format
1. 下载 [clang-format.zip](https://github.com/MaaAssistantArknights/MaaAssistantArknights/files/12775054/clang-format.zip) 或者编译 [zzyyyl/llvm-project](https://github.com/zzyyyl/llvm-project/tree/fix/clang-format),得到一个 `clang-format.exe`
2. 在 `工具-选项` 中搜索 `clang-format`
3. 点击 `启用 ClangFormat 支持`,然后选择下面的 `使用自定义 clang-format.exe 文件`,选择第一步得到的 `clang-format.exe`
1. 安装 clang-format 17 或更高版本
![Visual Studio 设置 clang-format](https://user-images.githubusercontent.com/74587068/188262146-bf36f10a-db94-4a3c-9802-88b703342fb6.png)
```bash
python -m pip install clang-format
```
2. 使用 Everything 等工具 找到 clang-format.exe 的安装位置。作为参考,若您使用了 Anacondaclang-format.exe 将安装在 YourAnacondaPath/Scripts/clang-format.exe
3. 在 Visual Studio `工具-选项` 中搜索 `clang-format`
4. 点击 `启用 ClangFormat 支持`,然后选择下面的 `使用自定义 clang-format.exe 文件`,选择第 2 步找到的 `clang-format.exe`
![Visual Studio 设置 clang-format](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
然后你的 Visual Studio 就能愉快的使用支持 c++20 语法的 clang-format 啦!