Skip to content

Commit 0090c7c

Browse files
author
winjo
committed
feat: 增加文档变更事件
1 parent 072dc57 commit 0090c7c

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

packages/core/src/client/custom/editor.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { Autowired } from '@ali/common-di';
22
import { ClientAppContribution } from '@ali/ide-core-browser';
33
import { OnEvent, WithEventBus, BasicEvent, Domain } from '@ali/ide-core-common';
4-
import { EditorDocumentModelSavedEvent } from '@ali/ide-editor/lib/browser';
4+
import {
5+
EditorDocumentModelSavedEvent,
6+
EditorDocumentModelContentChangedEvent,
7+
IEditorDocumentModelService,
8+
} from '@ali/ide-editor/lib/browser';
59
import { IFileServiceClient } from '@ali/ide-file-service/lib/common';
610
import { AppConfig, RuntimeConfig } from '../../common/types';
711
import * as path from 'path';
@@ -22,6 +26,9 @@ export class EditorActionEventContribution extends WithEventBus implements Clien
2226
@Autowired(RuntimeConfig)
2327
runtimeConfig: RuntimeConfig;
2428

29+
@Autowired(IEditorDocumentModelService)
30+
docModelService: IEditorDocumentModelService;
31+
2532
onStart() {}
2633

2734
@OnEvent(EditorDocumentModelSavedEvent)
@@ -33,4 +40,19 @@ export class EditorActionEventContribution extends WithEventBus implements Clien
3340
this.runtimeConfig.workspace.onDidSaveTextDocument({ filepath, content });
3441
}
3542
}
43+
44+
@OnEvent(EditorDocumentModelContentChangedEvent)
45+
async onEditorDocumentModelContentChangedEvent(e: EditorDocumentModelContentChangedEvent) {
46+
if (this.runtimeConfig.workspace?.onDidChangeTextDocument) {
47+
const { uri } = e.payload;
48+
const model = this.docModelService.getModelReference(uri);
49+
if (model) {
50+
const filepath = path.relative(this.appConfig.workspaceDir, uri.codeUri.fsPath);
51+
this.runtimeConfig.workspace.onDidChangeTextDocument({
52+
filepath,
53+
content: model.instance.getText(),
54+
});
55+
}
56+
}
57+
}
3658
}

packages/core/src/common/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export interface RuntimeConfig {
5151
workspace?: {
5252
filesystem?: FileSystemConfiguration;
5353
onDidSaveTextDocument?: (data: { filepath: string; content: string }) => void;
54+
onDidChangeTextDocument?: (data: { filepath: string; content: string }) => void;
5455
};
5556
/** 基于代码服务的配置 */
5657
codeService?: CodeServiceConfig;

scripts/utils/generate-alias.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ exports.generateModules = async () => {
3838
path.join(targetDir, `${name}.js`),
3939
`
4040
const { requireModule } = ${lib};
41-
module.exports = requireModule("${scope}/${name}");
41+
module.exports = requireModule("@${scope}/${name}");
4242
`.trim() + '\n'
4343
);
4444
fse.writeFileSync(

0 commit comments

Comments
 (0)