代码格式化专家

代码格式化专家

该专家用于格式化代码，目前只支持 Pascal。

代码格式化功能可格式化当前编辑器内的 Pascal 单元源码或选择区的内容，默认热键 Ctrl+W。如果有选择区，格式化之前会将选择区扩展至整行模式再进行格式化。

参数设置

代码格式化专家的设置界面如图：

- 普通设置

- 关键字大小写：设置格式化时关键字的大小写处理规则，有大写、小写、首字母大写、不改变原有大小写四种选择，默认为小写。

- Begin 位置：处理一些结构化语句如 if then 或 with do 后续的 begin end 代码块时，begin 是置于语句当前行之后，还是另起一行，默认另起一行。注意此选项不包括过程或函数的实现块。

- 缩进空格数：指定缩进的空格数，默认为 2。

- 运算符前的空格数：指定运算符之前所放置的空格数，默认为 1，此选项常用于双目运算符，注意括号等符号不在此列。

- 运算符后的空格数：指定运算符之后所放置的空格数，默认为 1，此选项常用于双目运算符，注意括号等符号同样不在此列。

- 自动换行选项：本选项有两个宽度值，一个是换行宽度值，一个是超出宽度值。当勾选此自动换行选项后，当一行代码超过后者较大的超出宽度值时，将本行代码在刚超过前者较小的换行宽度处开始重新换行。这样做的目的是为了避免一行代码刚刚超长时，使用简单换行带来的新行内容太少的问题。注意由于部分符号不适合做行头或行尾，由此带来的调整可能导致分行的列值不完全和设置的换行值一致，使用时请注意。

- Uses 区的每个单元名独占一行：勾选此选项后，Uses 区的每个单元独占一行。如果不勾，则使用上面设置的自动换行的换行宽度进行自动换行。注意工程文件中的 uses 由于可能包括 in 以及文件的路径，因而固定保持每个单元一行，不受此选项控制。

- 保留语句中的换行：勾选此选项后，单个语句中的换行在格式化后将被保留，不受自动换行的换行宽度的限制。

- 根据 IDE 内部符号表来纠正标识符的大小写：勾选此选项后，格式化过程中将编译并使用 IDE 内部的符号表来纠正源码中的标识符的大小写，该功能依赖于代码输入助手。

- 编译指令处理：对于{$IFDEF} {$ELSE} {$ENDIF}等复杂的嵌套编译指令，我们的格式化无法对其完美处理，默认只能将其当作注释，但由此容易出现内容重复的语法错误。此选项允许格式化时对于这种出现分支的编译指令，只处理第一个分支，也就是对于{$IFDEF} {$ELSE} {$ENDIF}这种编译指令，只处理{$IFDEF} {$ELSE}中的部分，其余部分原样输出。

- 汇编设置

- 行首缩进空格数：Pascal 嵌入汇编代码时，此选项指定行首除 Label 外的缩进空格数，默认为 8。

- 缩进空格数：此选项指定汇编代码内的 Tab 键缩进空格数，默认为 8。

- 不格式化 {(*} 与 {*)} 之间的内容：勾选此选项可控制对代码中的部分区域不予格式化。

- 快捷键：可在此设置格式化功能以及设置等的快捷键。

- 确定：保存选项并关闭设置对话框。

- 取消：关闭设置对话框，不保存选项改动。

- 帮助：显示帮助信息。

局限与已知问题

- 对编译指令的处理：目前，代码格式化专家采用的是针对整个源文件进行语法分析与排版的工作方式，并且把编译指令当作注释来处理。因此如果出现类似如{$IFDEF XXX} var A: Byte; {$ELSE} Word;{$ENDIF} 这种分隔的并列语法结构时会导致解析出错，使用时请注意。

- 对注释的处理：注释风格千变万化各各不同，目前我们对注释的处理也没有一定的规范，只尽可能保持注释原有的风格，而无法做到和代码联动。另外，选择区格式化时，不支持扩展成整行后的选区起始范围落在注释、字符串中的情形。

- 选项较少：目前代码格式化专家未提供太多的控制选项，以后会逐步丰富。

- C/C++代码：尚不支持。

相关主题

IDE 专家基本操作

IDE 专家设置

关于 IDE 专家包

(C)版权所有 2001-2025 CnPack 开发组