你可以自定义代码折叠吗?

Ste*_*lis 9 visual-studio-code vscode-extensions

是否可以自定义代码折叠在Visual Studio代码中的工作方式?

我使用了一种在各种不同文档类型中定义代码区域的通用模式.

  • 因此,对于XML,我用<!-- #region -->和包装文本的部分<!-- #endregion -->

  • 对于c#,我#region用来#endregion,

  • 对于TypeScript/Javascript,我使用/* #region *//* #endregion */.

在完整的Visual Studio(不是VS代码)中,我有一个自定义扩展,可以跨文档类型窥探模式,并根据它创建折叠,允许我创建整洁的自定义文档轮廓.我想在Visual Studio Code中使用相同的模式.是否可以创建一个自定义VS代码扩展来检测这些注释模式,并以某种方式根据模式标记折叠?

Tom*_*uer 8

FoldingRangeProvider 如果您要在扩展中提供自定义折叠逻辑,则可以使用它.

请务必设置您的VS代码版本enginespackage.json,以1.23,介绍了这个版本.

这是你如何使用它.

export function activate(context: ExtensionContext) {
    languages.registerFoldingRangeProvider({ scheme: 'file', language: 'markdown' }, new MyFoldingRangeProvider());
}

class MyFoldingRangeProvider implements FoldingRangeProvider {
    provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): FoldingRange[] {
        return detectRanges().map(({ lineStart, lineEnd }) => new FoldingRange(lineStart, lineEnd));
    }
}
Run Code Online (Sandbox Code Playgroud)