【问题标题】:How do I avoid expanding folded regions when I invoke the code formatter?调用代码格式化程序时如何避免扩展折叠区域?
【发布时间】:2013-10-30 18:40:45
【问题描述】:

如您所知,Delphi 2010 具有内置的代码格式化功能。但是,格式化会展开所有折叠的代码块。任何想法如何解决它?这个“功能”对我来说特别烦人,当我找不到任何提及这个问题时,我真的很惊讶。我试过的:

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

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

【问题讨论】:

    标签: delphi delphi-2010 code-formatting code-folding


    【解决方案1】:

    解决此问题的一种方法是不要一次格式化整个文件,而是选择一部分并格式化。

    只要您不选择区域,所有区域的展开状态都不会改变。

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

    【讨论】:

    • 非常感谢您的回复。但是,选择一部分文本然后对其进行格式化仍然会在 Delphi 2010 中展开其他代码块。对于 GExperts 代码格式化程序也是如此。它适用于哪个版本的 Delphi?
    【解决方案2】:

    嗯,这个问题真的很老了,但正如这里提到的那样:

    How to preserve code folding when formatting source

    没有答案,我以为我可以同时回答,这是我发布的答案:

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

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

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

    当您重新启用折叠时,与区域一起折叠的内容将保持折叠状态。

    信息来源:http://docwiki.embarcadero.com/RADStudio/XE6/en/Using_Code_Folding

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2019-03-20
      • 2010-12-27
      • 1970-01-01
      相关资源
      最近更新 更多