opensumi / core

🚀 A framework helps you quickly build AI Native IDE products.
https://opensumi.com
MIT License
2.98k stars 383 forks source link

[BUG] 自定义yaml语言的DocumentModel,在monaco实例下编辑,问题面板错误提示badge是错误的 #3678

Open yinyinfurongzmr opened 6 months ago

yinyinfurongzmr commented 6 months ago

自定义yaml语言的documentModel,创建monaco实例, 在这个实例下编辑,输入错误的格式,插件redhat.yaml报错,底部问题面板(@opensumi/ide-markers)有错误提示信息, 但badge提示是错误的,

使用自定义documentModel的编辑器实例下编辑,问题面板bade错误,但常规yaml文件可以提示 image image

复现路径(To Reproduce) 代码使用ide-electron 2.26.4.,使用redhat.yaml 编辑, 去掉了之前项目默认的vscode.yaml,代码在modules/demoError下

  1. 安装redhat.yaml
  2. 运行pnpm watch、pnpm start后,打开electron后,新建个rui为后缀的文件
  3. 点击rui后缀文件,展示there is other contents
  4. 点击右上角代码图标,在there is other contents 后,展示monaco编辑器
  5. 在“# RUI Yaml 格式”这行下面写入错误的yaml eg:dd:1, (无空格),
  6. 点击底部问题面板,可以看到错误提示信息,但没有错误提示badge

偶尔会有提示信息慢的场景

预期表现(Expected behavior)

环境信息(Environment)

yinyinfurongzmr commented 6 months ago

自定义documentModelProvider image contribution里 ` import { TokenCustomEditorDocumentContentProvider, CustomEditorDocumentContentProvider } from './document-provider'; @Domain(BrowserEditorContribution) class EtReactUiContribution implements BrowserEditorContribution { @Autowired(TokenCustomEditorDocumentContentProvider) private readonly customEditorDocumentContentProvider: IEditorDocumentModelContentProvider;

// 注册自定义的 DocumentModelContentProvider registerEditorDocumentModelContentProvider(registry: IEditorDocumentModelContentRegistry): void { registry.registerEditorDocumentModelContentProvider(this.customEditorDocumentContentProvider); } ` editorDomRef是view内一个div editorCollectionService是依赖注入的EditorCollectionService的实例 docManager是依赖注入的IEditorDocumentModelService类型的实例 image

yinyinfurongzmr commented 6 months ago

断点 image marker为空数组,没找到marker

Ricbet commented 6 months ago

我本地 main 分支没有复现这个问题

或许你可以排查一下 markers-manager.ts 的 updateMarkers 方法有没有被触发

yinyinfurongzmr commented 5 months ago

确定被触发,我是用ide-electron 2.26.4 写的,可提供可复现demo https://gitee.com/zhangmeirong/opensumi-electron-demo @Ricbet