【问题标题】:How to fold control statements with preprocessors in them?如何折叠带有预处理器的控制语句?
【发布时间】:2019-06-18 07:25:12
【问题描述】:

最近我一直在处理一些同事的一些遗留代码,使用 Visual Studio 代码我已经能够将它转换为如此理智和可读的 C 格式。但是,我想折叠一些控制语句,因为我的同事编写的控制语句有时超过 100 行。

在这些行中,我添加了预处理器控制语句来启用和禁用我的更改。

在 Visual Studio 代码中,我可以很好地折叠代码,但是一旦遇到预处理器语句,至少 #ifdef 和 #ifndef 就会停止。 由于每 10 行大约有 1 行来折叠一个控制语句,我需要折叠 10 次,这有点比它背后的想法好吗?

我尝试在设置中寻找折叠和折叠以及一些谷歌搜索,但我找不到任何可以解决我的问题的东西。

例如我有这个sn-p

if(true)
{
    Some functions();
#ifdef DEBUG
    Functions with debugging only();
#else
    Functions without debugging only();
#endif
    Some other functions();
}

我希望,每当我折叠 if(true) 时,此控制语句中的所有内容都会被折叠。这是我习惯的,在 Eclipse 的 vs2017 中会发生什么。这在 VSCODE 中不会发生!取而代之的是一些函数();被折叠了。

如何使 VSCODE 折叠行为与其他 IDE 类似?

【问题讨论】:

  • 如果你缩进预处理器行怎么办?这是语法级折叠还是缩进级折叠?
  • 哇,我没想到。看来是缩进级折叠。缩进预处理器语句确实有效。在这种情况下,是否有可能让预处理器保持原样并仍然获得所需的结果?我习惯于预处理器始终不缩进,但如果这不可能,我现在愿意接受它。
  • 我回答了

标签: c visual-studio-code preprocessor folding


【解决方案1】:

听起来您的编辑器正在使用缩进级折叠。

根据https://code.visualstudio.com/docs/editor/codebasics#_folding

默认情况下,折叠范围是根据缩进计算的 线。当一行的缩进小于 一行或多行,并在有一行时结束 相同或更小的缩进。

从 1.22 版本开始,折叠范围也可以根据 编辑器配置语言的语法标记。下列 语言已经提供了语法感知折叠:

  • Markdown、HTML、CSS、LESS、SCSS 和 JSON

可能有插件支持其他语言的语法折叠。如果没有,作为一种解决方法,您可以缩进预处理器行。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多