@@ -2,7 +2,7 @@ import { Autowired, Injectable } from '@ali/common-di';
22import { Domain } from '@ali/ide-core-common' ;
33import { LRUMap , URI } from '@ali/ide-core-browser' ;
44import { getLanguageIdFromMonaco } from '@ali/ide-core-browser/lib/services' ;
5- import { IResource } from '@ali/ide-editor/lib/common' ;
5+ import { IResource , IDiffResource } from '@ali/ide-editor/lib/common' ;
66import {
77 EditorComponentRegistry ,
88 IEditorDocumentModelContentRegistry ,
@@ -14,6 +14,7 @@ import { GitDocContentProvider } from './doc-content-provider/git';
1414import { GitResourceProvider } from './resource-provider/git' ;
1515import { BrowserFsProvider } from '../browser-fs-provider/fs-provider' ;
1616import { IAntcodeService } from '../antcode-service/base' ;
17+ import { DiffView } from './diff.view' ;
1718
1819// kaitian 中这里组件只用在 file 上,这里相当于用同名 id,来渲染对应组件
1920// TODO: kaitian 导出组件 id
@@ -69,6 +70,35 @@ export class GitSchemeContribution implements BrowserEditorContribution {
6970 }
7071 }
7172 ) ;
73+
74+ // 针对非 text 的 diff 视图,kaitian 中也未处理,这里先临时简单实现下
75+ editorComponentRegistry . registerEditorComponentResolver (
76+ 'diff' ,
77+ ( resource : IDiffResource , results , resolve ) => {
78+ const { modified } = resource . metadata || { } ;
79+ // diff 下 modified 和 original 和 type 一致,否则就是 deleted 和 added
80+ if ( modified && this . getFileType ( modified ) !== 'text' ) {
81+ resolve ( [
82+ {
83+ type : 'component' ,
84+ componentId : 'diff-view' ,
85+ } ,
86+ ] ) ;
87+ }
88+ }
89+ ) ;
90+
91+ editorComponentRegistry . registerEditorComponent (
92+ {
93+ uid : 'diff-view' ,
94+ component : DiffView ,
95+ } ,
96+ {
97+ getFileType : ( resource : IDiffResource ) => {
98+ return this . getFileType ( resource . metadata ! . modified ) ;
99+ } ,
100+ }
101+ ) ;
72102 }
73103
74104 registerResource ( resourceService : ResourceService ) {
0 commit comments