Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 调用代码格式化程序时,如何避免展开折叠区域?_Delphi_Delphi 2010_Code Formatting_Code Folding - Fatal编程技术网

Delphi 调用代码格式化程序时,如何避免展开折叠区域?

Delphi 调用代码格式化程序时,如何避免展开折叠区域?,delphi,delphi-2010,code-formatting,code-folding,Delphi,Delphi 2010,Code Formatting,Code Folding,正如您所知,Delphi2010具有内置的代码格式。但是,格式化会展开所有折叠的代码块。有没有办法解决这个问题?这个“特性”对我来说特别烦人,当我找不到任何关于这个问题的提及时,我真的很惊讶。我所尝试的: 搜索替代方案,例如,GExperts有代码格式化程序插件,但它也可以展开代码块 尝试为GExperts编写宏:Ctrl+D(格式代码)->各种代码折叠/展开快捷方式,但无法使其尊重所有折叠/展开的块结构 编写CnWizards脚本,但找不到代码折叠示例 如有任何想法/提示,我将不胜感激 解

正如您所知,Delphi2010具有内置的代码格式。但是,格式化会展开所有折叠的代码块。有没有办法解决这个问题?这个“特性”对我来说特别烦人,当我找不到任何关于这个问题的提及时,我真的很惊讶。我所尝试的:

  • 搜索替代方案,例如,GExperts有代码格式化程序插件,但它也可以展开代码块
  • 尝试为GExperts编写宏:Ctrl+D(格式代码)->各种代码折叠/展开快捷方式,但无法使其尊重所有折叠/展开的块结构
  • 编写CnWizards脚本,但找不到代码折叠示例

如有任何想法/提示,我将不胜感激

解决这个问题的一种方法是,不要一次格式化整个文件,而是选择一部分,然后格式化它

只要不选择区域,所有区域的展开状态都保持不变


一次格式化整个文件通常不是一个好主意,因为格式化程序不“理解”它在做什么。我总是检查它所做的所有更改,如果在可见区域之外没有任何更改,这就更容易了。

好吧,这个问题确实很老了,但正如这里提到的:

没有答案,我想我可以回答这两个问题,以下是我在那里发布的答案:

您可以做的是创建区域并禁用代码折叠,格式化代码,然后重新启用代码折叠

要创建代码区域,请执行以下操作:

{$REGION 'Optional text that appears when the code block is folded'} 
// code 
{$ENDREGION}
要切换代码折叠选项,请按Ctrl+Shift+K+O

因此,将代码放入区域,折叠所需内容,按Ctrl+Shift K+O禁用折叠,按Ctrl+D格式化,然后再次按Ctrl+Shift K+O重新启用折叠

重新启用折叠时,使用区域折叠的内容将保持折叠状态

资料来源:


我希望这对您有所帮助。

非常感谢您的回复。然而,在Delphi2010中,选择文本的一部分并对其进行格式化仍然会打开其他代码块。GExperts代码格式化程序也是如此。它适用于哪个版本的Delphi?