当前位置: 首页 > 知识库问答 >
问题:

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

寿浩言
2023-03-14

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

我使用一种通用模式来定义各种不同文档类型之间的代码区域。

>

  • 所以,对于XML,我用<!--#region--><!--#endregion-->包装文本部分

    对于typescript/JavaScript,我使用/*#region*//*#endregion*/

    在完整的Visual Studio(不是VS代码)中,我有一个自定义扩展,它可以窥探文档类型之间的模式,并基于该模式创建折叠,从而允许我创建整洁的自定义文档大纲。我希望在Visual Studio代码中使用相同的模式。是否可以创建一个自定义的VS代码扩展来检测这些注释模式,并以某种方式根据模式标记折叠?

  • 共有1个答案

    施飞驰
    2023-03-14

    如果希望在扩展中提供自定义折叠逻辑,可以使用FoldingRangeProvider

    请确保将package.json中的engines中的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));
        }
    }
    
     类似资料:
    • 展开或者收起table cell的某一行。类似于QQ折叠的那种效果。 [Code4App.com]

    • Prism.js 可以做到代码的高亮,和行号的展示: 请问是否可以做到代码的折叠呢?

    • 我有一个自定义手风琴,像jQuery UI手风琴。我还试图使任何展开的项目可折叠(如果再次单击)。类似这样:https://jqueryui.com/accordion/#collapsible但是我不知道如何在当前扩展的项目上捕获另一个单击事件。有人能给我指一下正确的方向吗? 我的jQuery如下所示: 这是jsbin:http://jsbin.com/hazaxunuwa/edit?html,

    • 代码折叠,即,Notepad++对于不同语言,在语法高亮基础上,还能检测出对应的C,Python等语言的单个的函数,xml等语言的标签, 然后对这些独立的代码部分,最开始端,有个加减号的可点击的小图标,对应的可以展开或折叠其对应的代码。 截图说明: 图 3.1. XML文件中的Notepad++的代码折腾功能 估计很多人可能和我最开始的想法一样,觉得此代码折叠功能,好像没啥实际用途。 直到有一天,

    • 我在寻找一种在Atom中使用C#regions之类的东西折叠JavaScript代码的方法: 我找不到这样的包裹。我知道你可以按CTRLAltF折叠所选代码。但我想要命名区域。 所以真正的问题是,有人知道我如何在原子中做到这一点吗? 谢谢

    • 展开或折叠代码 操作步骤: 菜单栏:Code —> Folding —> Expand 快捷键: Mac: command + “+” Windows\/Linux: Ctrl + "+" 展开或折叠代码 操作步骤: 菜单栏:Code —> Folding —> Collapse 快捷键: Mac: command + “-” Windows\/Linux: Ctrl + "-" 展开或折叠当前代