是否可以自定义代码折叠在Visual Studio Code中的工作方式?
我使用一种在各种不同文档类型中定义代码区域的通用模式。
因此,对于XML,我使用<!-- #region -->
和<!-- #endregion -->
对于c#,我使用#region
到#endregion
,
对于TypeScript / Javascript,我使用/* #region */
和/* #endregion */
。
在完整的Visual Studio(不是VS Code)中,我有一个自定义扩展,可以跨文档类型窥探模式,并根据它创建折叠,允许我创建整洁的自定义文档大纲。我想在Visual Studio Code中使用相同的模式。是否可以创建一个自定义VS代码扩展来检测这些注释模式,并以某种方式根据模式标记折叠?
答案 0 :(得分:8)
请务必在engines
中的package.json
中将您的VS代码版本设置为引入此版本的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));
}
}
答案 1 :(得分:2)
不幸的是,现在还没有。这个主题有一个open issue in github。
答案 2 :(得分:0)
现在,有三种方法可以在VSCode扩展中实现自定义折叠。
name = [["one","two","three"]]
可以如本answer中所述从扩展端定义 FoldingRangeProvider 。 vscode 软件包中的FoldingRange支持使用startLine,endLine和foldingKind进行折叠自定义。
可以将Language Server支持与 textDocument / foldingRange 一起使用。 vscode-languageserver-protocol 中的FoldingRange支持使用startLine,endLine,startCharacter,endCharacter和foldingKind进行折叠自定义。
检查this以获得更多详细信息。