---
# clang-format 配置文件
# 用于防止 proto 文件自动换行

# ColumnLimit: 列宽限制
# 设置为 0 表示不限制列宽，不会因为行太长而自动换行
# 防止原本写在一行的代码被格式化工具强制换行
# 例如：message UserAddReq { UserVo vo = 1; } 会保持在一行，不会被拆成多行
ColumnLimit: 0

# Language: 指定文件类型
# 设置为 Proto 表示这是 Protocol Buffers 文件格式
# clang-format 会根据此设置应用相应的格式化规则
Language: Proto

# IndentWidth: 缩进宽度
# 设置每次缩进使用 2 个空格
# 例如：message 内的字段会缩进 2 个空格
IndentWidth: 2

# UseTab: 是否使用 Tab 字符
# 设置为 Never 表示不使用 Tab，只使用空格进行缩进
# 这样可以保证在不同编辑器和环境下显示一致
UseTab: Never

# TabWidth: Tab 字符的宽度
# 当 UseTab 为 Never 时，此选项主要用于处理已存在的 Tab 字符
# 设置为 2 表示如果遇到 Tab 字符，将其视为 2 个空格宽度
TabWidth: 2

# BinPackArguments: 函数参数打包
# 设置为 true 表示尽量将函数参数放在同一行，而不是每个参数一行
# 例如：rpc UserAdd(UserVo) returns (UserVo); 会保持在一行
BinPackArguments: true

# BinPackParameters: 函数参数列表打包
# 设置为 true 表示尽量将参数列表放在同一行，避免不必要的换行
# 与 BinPackArguments 配合使用，确保参数紧凑排列
BinPackParameters: true

# BreakBeforeBraces: 大括号前的换行规则
# 设置为 Attach 表示大括号紧跟在上一行末尾，不单独换行
# 例如：message UserVo { 而不是 message UserVo\n{
BreakBeforeBraces: Attach

# BreakStringLiterals: 是否允许拆分字符串字面量
# 设置为 false 表示不允许将长字符串拆分成多行
# 保持字符串在一行内，即使字符串很长
BreakStringLiterals: false

# SpacesBeforeTrailingComments: 行尾注释前的空格数
# 设置为 1 表示在代码和行尾注释之间保留 1 个空格
# 例如：string username = 4; // 用户名（username 和 // 之间有一个空格）
SpacesBeforeTrailingComments: 1

# MaxEmptyLinesToKeep: 保留的最大连续空行数
# 设置为 1 表示最多保留 1 个连续空行
# 超过 1 个的连续空行会被合并为 1 个，保持代码紧凑
MaxEmptyLinesToKeep: 1

