You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

registerFoldingRangeProvider冲突:扩展在开发环境正常,生产VSIX失效

VSCode CSS折叠扩展生产环境异常问题

我在VSCode中遇到一个问题:带嵌套选择器的CSS文件里,默认折叠范围标记完全不合理。例如:

/*----- Content -----*/
    #blog-content {
        font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
        order: 1;
        flex: 1 1 auto;
        width: 100%;
        max-width: clamp(320px, 90vw, 1200px);

        /* Context Navigation Breadcrumbs */
        #blog-context-nav {
            margin-bottom: 1rem;

            ol {
                list-style: none;
                margin: 0;
                padding: 0;
                display: flex;
                gap: 1rem;
                flex-wrap: nowrap;

默认VSCode会标记flex: 1 1 auto;为可折叠,#blog-context-nav {不可折叠,list-style: none;却可折叠。于是我开发了一款能正确处理的VSCode扩展,扩展ID为jcall-engineer.fold-css。

发布1.0.0版本前,通过Extension Development Host本地运行效果完美,但发布安装VSIX后,生产环境折叠范围不正确,开发环境却正常。我一直用这个特定CSS文件测试,因为它的默认折叠问题尤为严重。

我添加了控制台输出,确认扩展已被调用,但返回的范围与编辑器左侧行号旁显示的折叠标记位置不符。

我尝试了以下排查手段:

  • 在settings.json中设置强制使用我的扩展:
    "[css]": {
          "editor.defaultFoldingRangeProvider": "jcall-engineer.fold-css"
      },
      "[scss]": {
          "editor.defaultFoldingRangeProvider": "jcall-engineer.fold-css"
      },
      "[sass]": {
          "editor.defaultFoldingRangeProvider": "jcall-engineer.fold-css"
      },
    
  • 通过GUI修改相同设置
  • 禁用所有@builtin css插件(怀疑vscode.css-language-features覆盖了返回的FoldingRange)
  • 尝试移除contributes中的languages配置(虽觉不合理仍尝试),结果导致扩展无法加载:
    "languages": [
        {
          "id": "css",
          "aliases": ["CSS"],
          "extensions": [".css", ".scss", ".sass"]
        }
      ]
    

根据API文档,我的扩展本不应依赖此配置,但移除后完全无法加载,这让我困惑。

目前我的疑问:

  • 是否存在未文档化的API特性?
  • 是否错误使用了registerFoldingRangeProvider API?
  • 是否需要向microsoft/vscode GitHub提交Bug报告?

进一步排查发现:160行的小型CSS文件中折叠标记显示正常,但无法确认VSCode使用的是我的扩展还是其他FoldingRangeProvider,仅能确认我的扩展被调用且返回值正确。我尝试创建最小复现CSS文件但未成功,问题出在660行的完整CSS文件中,截图显示折叠区域出现在错误行号,控制台输出的返回范围与显示位置不符。

内容的提问来源于stack exchange,提问作者JCall-Engineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:05:09