如何让Clang-format将以当前文件名开头的头文件归为主头文件?
实现方案
可以实现,不用依赖IncludeIsMainRegex,直接通过配置IncludeCategories加正则就能搞定。
针对你在Main.c里的需求,在项目的.clang-format配置文件里加以下规则:
IncludeCategories: # 匹配所有以Main开头的头文件,设为最高优先级(第0类) - Regex: '^"Main\.h"|^"Main_.*\.h"' Priority: 0 # 系统头文件归为第1类 - Regex: '^<.*>' Priority: 1 # 其他本地头文件归为第2类 - Regex: '".*"' Priority: 2
细节说明:
- 第一条正则精准匹配
Main.h和所有Main_xxx.h格式的头文件,优先级设为0,就和主头文件的归类效果完全一样,会被排在最前面。 - 正则是从上到下匹配的,所以优先级高的规则一定要放在前面,不然会被后面的规则覆盖。
- 如果你的项目里还有其他类似的源文件(比如
Bar.c要匹配Bar_xxx.h),直接复制第一条规则把Main换成Bar就行;要是文件前缀很多,也可以写更宽泛的正则,比如^"([A-Za-z0-9]+)_.*\.h",但要注意别误匹配到其他不想归类的头文件。
内容的提问来源于stack exchange,提问作者Slav
相关产品推荐
相关产品推荐

