Delphi 格式化源代码时如何保留代码折叠

Delphi 格式化源代码时如何保留代码折叠,delphi,ide,code-folding,toolsapi,Delphi,Ide,Code Folding,Toolsapi,另见这个问题: 这不是一个骗局,因为我对使用ToolsApi解决问题感兴趣 当我按下CTRL+D时,代码的格式大部分都很好。 但我所有折叠的代码部分都展开了。 有没有办法把这些部分折叠起来 如果没有,是否可以在格式化之前保存代码折叠信息,以便稍后恢复? 我正在考虑使用开放工具api编写IDE插件。 我使用的是XE7,但这个问题存在于所有具有源代码格式的版本中 可能的情况包括: 录制和重播代码折叠钩子elide调用。 仅允许在当前块上使用格式重新定义CTRL+D操作。 您可以做的是创建区域并禁用代

另见这个问题:

这不是一个骗局,因为我对使用ToolsApi解决问题感兴趣

当我按下CTRL+D时,代码的格式大部分都很好。 但我所有折叠的代码部分都展开了。 有没有办法把这些部分折叠起来

如果没有,是否可以在格式化之前保存代码折叠信息,以便稍后恢复? 我正在考虑使用开放工具api编写IDE插件。 我使用的是XE7,但这个问题存在于所有具有源代码格式的版本中

可能的情况包括:

录制和重播代码折叠钩子elide调用。 仅允许在当前块上使用格式重新定义CTRL+D操作。
您可以做的是创建区域并禁用代码折叠,格式化代码,然后重新启用代码折叠

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

{$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重新启用折叠

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

资料来源:


<>我希望这对你有帮助。

我猜这会涉及到用ELID调用来建立折叠块的列表,而不是在编辑器中走源来恢复这些块。因此,如果您没有考虑到折叠代码在格式化过程中可能会更改值,那么仅保存折叠代码的位置/长度是不够的。