@opensumi/ide-workspace-edit 2.12.1-next-079c1930
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/bulk-edit.service.d.ts +18 -0
- package/lib/browser/bulk-edit.service.d.ts.map +1 -0
- package/lib/browser/bulk-edit.service.js +120 -0
- package/lib/browser/bulk-edit.service.js.map +1 -0
- package/lib/browser/index.d.ts +18 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +112 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/refactor-preview.d.ts +6 -0
- package/lib/browser/refactor-preview.d.ts.map +1 -0
- package/lib/browser/refactor-preview.js +129 -0
- package/lib/browser/refactor-preview.js.map +1 -0
- package/lib/browser/refactor-preview.service.d.ts +31 -0
- package/lib/browser/refactor-preview.service.d.ts.map +1 -0
- package/lib/browser/refactor-preview.service.js +123 -0
- package/lib/browser/refactor-preview.service.js.map +1 -0
- package/lib/browser/refactor_preview.module.less +49 -0
- package/lib/browser/utils.d.ts +4 -0
- package/lib/browser/utils.d.ts.map +1 -0
- package/lib/browser/utils.js +16 -0
- package/lib/browser/utils.js.map +1 -0
- package/lib/browser/workspace-edit.service.d.ts +54 -0
- package/lib/browser/workspace-edit.service.d.ts.map +1 -0
- package/lib/browser/workspace-edit.service.js +318 -0
- package/lib/browser/workspace-edit.service.js.map +1 -0
- package/lib/browser/workspace-file.service.d.ts +43 -0
- package/lib/browser/workspace-file.service.d.ts.map +1 -0
- package/lib/browser/workspace-file.service.js +166 -0
- package/lib/browser/workspace-file.service.js.map +1 -0
- package/lib/common/index.d.ts +123 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +16 -0
- package/lib/common/index.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
.refactor_preview {
|
|
2
|
+
display: flex;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.resource_node {
|
|
6
|
+
display: flex;
|
|
7
|
+
height: 23px;
|
|
8
|
+
line-height: 23px;
|
|
9
|
+
padding: 0px 10px;
|
|
10
|
+
cursor: pointer;
|
|
11
|
+
|
|
12
|
+
.resource_clickable {
|
|
13
|
+
display: flex;
|
|
14
|
+
height: 23px;
|
|
15
|
+
line-height: 23px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&:hover {
|
|
19
|
+
background-color: var(--editor-selectionBackground);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.resource_node_path {
|
|
23
|
+
font-size: 12px;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
text-overflow: ellipsis;
|
|
26
|
+
white-space: nowrap;
|
|
27
|
+
color: var(--descriptionForeground);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.refactor_preview_node_wrapper {
|
|
32
|
+
display: inline-block;
|
|
33
|
+
padding: 0px;
|
|
34
|
+
margin: 0px 10px 0px 10px;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
text-overflow: ellipsis;
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
|
|
39
|
+
.refactor_preview_node_base {
|
|
40
|
+
height: 16px;
|
|
41
|
+
text-decoration: line-through;
|
|
42
|
+
background-color: var(--diffEditor-removedTextBackground)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.refactor_preview_node_new {
|
|
46
|
+
height: 16px;
|
|
47
|
+
background-color: var(--diffEditor-insertedTextBackground)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ResourceFileEdit, ResourceTextEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
|
|
2
|
+
export declare function isResourceFileEdit(thing: any): thing is ResourceFileEdit;
|
|
3
|
+
export declare function isResourceTextEdit(thing: any): thing is ResourceTextEdit;
|
|
4
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/browser/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6EAA6E,CAAC;AAGtI,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAExE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAIxE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isResourceTextEdit = exports.isResourceFileEdit = void 0;
|
|
4
|
+
const editor_api_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/editor.api");
|
|
5
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
6
|
+
function isResourceFileEdit(thing) {
|
|
7
|
+
return (0, ide_core_common_1.isObject)(thing) && (Boolean(thing.newResource) || Boolean(thing.oldResource));
|
|
8
|
+
}
|
|
9
|
+
exports.isResourceFileEdit = isResourceFileEdit;
|
|
10
|
+
function isResourceTextEdit(thing) {
|
|
11
|
+
// 重写的原因是因为直接用 monaco 存在 Uri.isUri 情况
|
|
12
|
+
// 我们的 Uri 并未 monaco 的 Uri 的 instance
|
|
13
|
+
return (0, ide_core_common_1.isObject)(thing) && editor_api_1.Uri.isUri(thing.resource) && (0, ide_core_common_1.isObject)(thing.textEdit);
|
|
14
|
+
}
|
|
15
|
+
exports.isResourceTextEdit = isResourceTextEdit;
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/browser/utils.ts"],"names":[],"mappings":";;;AAAA,sFAA4E;AAE5E,+DAAqD;AAErD,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,OAAO,IAAA,0BAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACvF,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAC,KAAU;IAC3C,qCAAqC;IACrC,qCAAqC;IACrC,OAAO,IAAA,0BAAQ,EAAC,KAAK,CAAC,IAAI,gBAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAA,0BAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClF,CAAC;AAJD,gDAIC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { IResourceTextEdit, IWorkspaceEditService, IWorkspaceEdit, IResourceFileEdit, IWorkspaceFileService } from '../common';
|
|
2
|
+
import { URI, IEventBus } from '@opensumi/ide-core-browser';
|
|
3
|
+
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
4
|
+
import { IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser';
|
|
5
|
+
export declare class WorkspaceEditServiceImpl implements IWorkspaceEditService {
|
|
6
|
+
private editStack;
|
|
7
|
+
documentModelService: IEditorDocumentModelService;
|
|
8
|
+
workspaceFileService: IWorkspaceFileService;
|
|
9
|
+
editorService: WorkbenchEditorService;
|
|
10
|
+
eventBus: IEventBus;
|
|
11
|
+
apply(edit: IWorkspaceEdit): Promise<void>;
|
|
12
|
+
revertTopFileEdit(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare class BulkEdit {
|
|
15
|
+
private edits;
|
|
16
|
+
apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService, workspaceFS: IWorkspaceFileService, eventBus: IEventBus): Promise<void>;
|
|
17
|
+
add(edit: IResourceTextEdit | IResourceFileEdit): void;
|
|
18
|
+
revert(onlyFileEdits: true): void;
|
|
19
|
+
}
|
|
20
|
+
export declare class ResourceTextEditTask {
|
|
21
|
+
edits: IResourceTextEdit[];
|
|
22
|
+
resource: URI;
|
|
23
|
+
versionId: number | undefined;
|
|
24
|
+
options: {
|
|
25
|
+
openDirtyInEditor?: boolean;
|
|
26
|
+
dirtyIfInEditor?: boolean;
|
|
27
|
+
};
|
|
28
|
+
constructor(edit: IResourceTextEdit);
|
|
29
|
+
addEdit(edit: IResourceTextEdit): void;
|
|
30
|
+
apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService): Promise<void>;
|
|
31
|
+
private editorOperation;
|
|
32
|
+
revert(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare class ResourceFileEdit implements IResourceFileEdit {
|
|
35
|
+
oldResource?: URI;
|
|
36
|
+
newResource?: URI;
|
|
37
|
+
options: {
|
|
38
|
+
overwrite?: boolean | undefined;
|
|
39
|
+
ignoreIfNotExists?: boolean | undefined;
|
|
40
|
+
recursive?: boolean | undefined;
|
|
41
|
+
showInEditor?: boolean;
|
|
42
|
+
isDirectory?: boolean;
|
|
43
|
+
copy?: boolean;
|
|
44
|
+
ignoreIfExists?: boolean | undefined;
|
|
45
|
+
};
|
|
46
|
+
constructor(edit: IResourceFileEdit);
|
|
47
|
+
notifyEditor(editorService: WorkbenchEditorService, documentModelService: IEditorDocumentModelService): Promise<any[] | undefined>;
|
|
48
|
+
notifyOnResource(oldResource: URI, newResource: URI, editorService: WorkbenchEditorService, documentModelService: IEditorDocumentModelService): Promise<void>;
|
|
49
|
+
apply(documentModelService: IEditorDocumentModelService, editorService: WorkbenchEditorService, workspaceFS: IWorkspaceFileService, eventBus: IEventBus): Promise<void>;
|
|
50
|
+
private isFileExistError;
|
|
51
|
+
revert(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
export declare function isResourceFileEdit(thing: any): thing is ResourceFileEdit;
|
|
54
|
+
//# sourceMappingURL=workspace-edit.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-edit.service.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-edit.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAoE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACjM,OAAO,EAAE,GAAG,EAAE,SAAS,EAA0B,MAAM,4BAA4B,CAAC;AAGpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAA6B,MAAM,kCAAkC,CAAC;AAO1G,qBACa,wBAAyB,YAAW,qBAAqB;IAEpE,OAAO,CAAC,SAAS,CAAkB;IAGnC,oBAAoB,EAAE,2BAA2B,CAAC;IAGlD,oBAAoB,EAAE,qBAAqB,CAAC;IAG5C,aAAa,EAAE,sBAAsB,CAAC;IAGtC,QAAQ,EAAE,SAAS,CAAC;IAEd,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAInC;AAED,qBAAa,QAAQ;IAEnB,OAAO,CAAC,KAAK,CAAuB;IAE9B,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS;IAU7J,GAAG,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;IA+B/C,MAAM,CAAC,aAAa,EAAE,IAAI;CAG3B;AAED,qBAAa,oBAAoB;IAExB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE;QACd,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAM;gBAEK,IAAI,EAAE,iBAAiB;IAOnC,OAAO,CAAC,IAAI,EAAE,iBAAiB;IAIzB,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB;YAyCtF,eAAe;IAmBvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IAExD,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACxC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACtC,CAAM;gBAEK,IAAI,EAAE,iBAAiB;IAM7B,YAAY,CAAC,aAAa,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,2BAA2B;IAqBrG,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,2BAA2B;IAmC7I,KAAK,CAAC,oBAAoB,EAAE,2BAA2B,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,SAAS;IA2D7J,OAAO,CAAC,gBAAgB;IAIlB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAE9B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAExE"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isResourceFileEdit = exports.ResourceFileEdit = exports.ResourceTextEditTask = exports.BulkEdit = exports.WorkspaceEditServiceImpl = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("../common");
|
|
6
|
+
const ide_core_browser_1 = require("@opensumi/ide-core-browser");
|
|
7
|
+
const common_2 = require("@opensumi/ide-file-service/lib/common");
|
|
8
|
+
const di_1 = require("@opensumi/di");
|
|
9
|
+
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
10
|
+
const mobx_1 = require("mobx");
|
|
11
|
+
const browser_1 = require("@opensumi/ide-editor/lib/browser");
|
|
12
|
+
const range_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/common/core/range");
|
|
13
|
+
const types_1 = require("@opensumi/ide-monaco/lib/browser/monaco-api/types");
|
|
14
|
+
let WorkspaceEditServiceImpl = class WorkspaceEditServiceImpl {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.editStack = [];
|
|
17
|
+
}
|
|
18
|
+
async apply(edit) {
|
|
19
|
+
const bulkEdit = new BulkEdit();
|
|
20
|
+
edit.edits.forEach((edit) => {
|
|
21
|
+
bulkEdit.add(edit);
|
|
22
|
+
});
|
|
23
|
+
await bulkEdit.apply(this.documentModelService, this.editorService, this.workspaceFileService, this.eventBus);
|
|
24
|
+
this.editStack.push(bulkEdit);
|
|
25
|
+
}
|
|
26
|
+
revertTopFileEdit() {
|
|
27
|
+
throw new Error('Method not implemented.');
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
(0, tslib_1.__decorate)([
|
|
31
|
+
(0, di_1.Autowired)(browser_1.IEditorDocumentModelService),
|
|
32
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
33
|
+
], WorkspaceEditServiceImpl.prototype, "documentModelService", void 0);
|
|
34
|
+
(0, tslib_1.__decorate)([
|
|
35
|
+
(0, di_1.Autowired)(common_1.IWorkspaceFileService),
|
|
36
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
37
|
+
], WorkspaceEditServiceImpl.prototype, "workspaceFileService", void 0);
|
|
38
|
+
(0, tslib_1.__decorate)([
|
|
39
|
+
(0, di_1.Autowired)(),
|
|
40
|
+
(0, tslib_1.__metadata)("design:type", ide_editor_1.WorkbenchEditorService)
|
|
41
|
+
], WorkspaceEditServiceImpl.prototype, "editorService", void 0);
|
|
42
|
+
(0, tslib_1.__decorate)([
|
|
43
|
+
(0, di_1.Autowired)(ide_core_browser_1.IEventBus),
|
|
44
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
45
|
+
], WorkspaceEditServiceImpl.prototype, "eventBus", void 0);
|
|
46
|
+
WorkspaceEditServiceImpl = (0, tslib_1.__decorate)([
|
|
47
|
+
(0, di_1.Injectable)()
|
|
48
|
+
], WorkspaceEditServiceImpl);
|
|
49
|
+
exports.WorkspaceEditServiceImpl = WorkspaceEditServiceImpl;
|
|
50
|
+
class BulkEdit {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.edits = [];
|
|
53
|
+
}
|
|
54
|
+
async apply(documentModelService, editorService, workspaceFS, eventBus) {
|
|
55
|
+
for (const edit of this.edits) {
|
|
56
|
+
if (edit instanceof ResourceFileEdit) {
|
|
57
|
+
await edit.apply(documentModelService, editorService, workspaceFS, eventBus);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
await edit.apply(documentModelService, editorService);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
add(edit) {
|
|
65
|
+
if (isResourceFileEdit(edit)) {
|
|
66
|
+
this.edits.push(new ResourceFileEdit(edit));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const last = this.edits[this.edits.length - 1];
|
|
70
|
+
const textEdit = edit;
|
|
71
|
+
if (last && !isResourceFileEdit(last)) {
|
|
72
|
+
// 合并连续同目标的edits
|
|
73
|
+
if (last.resource.toString() === textEdit.resource.toString()) {
|
|
74
|
+
let shouldMerge = false;
|
|
75
|
+
if (last.versionId) {
|
|
76
|
+
if (textEdit.versionId) {
|
|
77
|
+
shouldMerge = textEdit.versionId === last.versionId;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
shouldMerge = true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
if (!textEdit.versionId) {
|
|
85
|
+
shouldMerge = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (shouldMerge) {
|
|
89
|
+
last.addEdit(edit);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
this.edits.push(new ResourceTextEditTask(edit));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
revert(onlyFileEdits) {
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.BulkEdit = BulkEdit;
|
|
101
|
+
class ResourceTextEditTask {
|
|
102
|
+
constructor(edit) {
|
|
103
|
+
this.options = {};
|
|
104
|
+
this.resource = edit.resource;
|
|
105
|
+
this.versionId = edit.versionId;
|
|
106
|
+
this.options = edit.options || {};
|
|
107
|
+
this.edits = [edit];
|
|
108
|
+
}
|
|
109
|
+
addEdit(edit) {
|
|
110
|
+
this.edits.push(edit);
|
|
111
|
+
}
|
|
112
|
+
async apply(documentModelService, editorService) {
|
|
113
|
+
const docRef = await documentModelService.createModelReference(this.resource, 'bulk-edit');
|
|
114
|
+
const documentModel = docRef.instance;
|
|
115
|
+
const monacoModel = documentModel.getMonacoModel();
|
|
116
|
+
if (this.versionId) {
|
|
117
|
+
if (monacoModel.getVersionId() !== this.versionId) {
|
|
118
|
+
throw new Error('文档版本不一致,无法执行变更');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const edits = [];
|
|
122
|
+
let newEOL;
|
|
123
|
+
for (const edit of this.edits) {
|
|
124
|
+
if (edit.textEdit.eol && !(0, ide_core_browser_1.isUndefined)(edit.textEdit.eol)) {
|
|
125
|
+
newEOL = edit.textEdit.eol;
|
|
126
|
+
}
|
|
127
|
+
edits.push({
|
|
128
|
+
forceMoveMarkers: true,
|
|
129
|
+
range: range_1.Range.lift(edit.textEdit.range),
|
|
130
|
+
text: edit.textEdit.text,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (edits.length > 0) {
|
|
134
|
+
monacoModel.pushStackElement();
|
|
135
|
+
monacoModel.pushEditOperations([], edits, () => []);
|
|
136
|
+
monacoModel.pushStackElement();
|
|
137
|
+
}
|
|
138
|
+
if (newEOL && !(0, ide_core_browser_1.isUndefined)(newEOL)) {
|
|
139
|
+
monacoModel.pushStackElement();
|
|
140
|
+
documentModel.eol = newEOL === types_1.EndOfLineSequence.CRLF ? "\r\n" /* CRLF */ : "\n" /* LF */;
|
|
141
|
+
monacoModel.pushStackElement();
|
|
142
|
+
}
|
|
143
|
+
const shouldSave = await this.editorOperation(editorService);
|
|
144
|
+
if (shouldSave) {
|
|
145
|
+
documentModel.save();
|
|
146
|
+
}
|
|
147
|
+
docRef.dispose();
|
|
148
|
+
}
|
|
149
|
+
// 返回是否保存
|
|
150
|
+
async editorOperation(editorService) {
|
|
151
|
+
if (this.options.openDirtyInEditor) {
|
|
152
|
+
for (const group of editorService.editorGroups) {
|
|
153
|
+
if (group.resources.findIndex((r) => isDocumentUriInResource(r, this.resource)) !== -1) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
editorService.open(this.resource, { backend: true });
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
else if (this.options.dirtyIfInEditor) {
|
|
161
|
+
for (const group of editorService.editorGroups) {
|
|
162
|
+
if (group.resources.findIndex((r) => isDocumentUriInResource(r, this.resource)) !== -1) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
async revert() {
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.ResourceTextEditTask = ResourceTextEditTask;
|
|
173
|
+
class ResourceFileEdit {
|
|
174
|
+
constructor(edit) {
|
|
175
|
+
this.options = {};
|
|
176
|
+
this.oldResource = edit.oldResource;
|
|
177
|
+
this.newResource = edit.newResource;
|
|
178
|
+
this.options = edit.options;
|
|
179
|
+
}
|
|
180
|
+
async notifyEditor(editorService, documentModelService) {
|
|
181
|
+
if (this.oldResource && this.newResource) {
|
|
182
|
+
const promises = [];
|
|
183
|
+
const urisToDealWith = new Set();
|
|
184
|
+
editorService.editorGroups.forEach((g) => {
|
|
185
|
+
g.resources.forEach((r) => {
|
|
186
|
+
if (this.oldResource.isEqualOrParent(r.uri)) {
|
|
187
|
+
urisToDealWith.add(r.uri.toString());
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
urisToDealWith.forEach((uriString) => {
|
|
192
|
+
const oldResource = new ide_core_browser_1.URI(uriString);
|
|
193
|
+
const subPath = uriString.substr(this.oldResource.toString().length);
|
|
194
|
+
const newResource = new ide_core_browser_1.URI(this.newResource.toString() + subPath);
|
|
195
|
+
promises.push(this.notifyOnResource(oldResource, newResource, editorService, documentModelService));
|
|
196
|
+
});
|
|
197
|
+
return Promise.all(promises);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
async notifyOnResource(oldResource, newResource, editorService, documentModelService) {
|
|
201
|
+
const docRef = documentModelService.getModelReference(oldResource, 'bulk-file-move');
|
|
202
|
+
let dirtyContent;
|
|
203
|
+
let dirtyEOL;
|
|
204
|
+
if (docRef && docRef.instance.dirty) {
|
|
205
|
+
dirtyContent = docRef.instance.getText();
|
|
206
|
+
dirtyEOL = docRef.instance.eol;
|
|
207
|
+
await docRef.instance.revert(true);
|
|
208
|
+
}
|
|
209
|
+
if (docRef) {
|
|
210
|
+
docRef.dispose();
|
|
211
|
+
}
|
|
212
|
+
// 如果之前的文件在编辑器中被打开,重新打开文件
|
|
213
|
+
await Promise.all([editorService.editorGroups.map(async (g) => {
|
|
214
|
+
const index = g.resources.findIndex((r) => r.uri.isEqual(oldResource));
|
|
215
|
+
if (index !== -1) {
|
|
216
|
+
await (0, mobx_1.runInAction)(async () => {
|
|
217
|
+
await g.open(newResource, {
|
|
218
|
+
index,
|
|
219
|
+
backend: !(g.currentResource && g.currentResource.uri.isEqual(oldResource)),
|
|
220
|
+
// 如果旧的是preview模式,应该保持,如果不是,应该不要关闭其他处于preview模式的资源tab
|
|
221
|
+
preview: g.previewURI ? g.previewURI.isEqual(oldResource) : false,
|
|
222
|
+
});
|
|
223
|
+
await g.close(oldResource);
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
})]);
|
|
227
|
+
if (dirtyContent) {
|
|
228
|
+
const newDocRef = await documentModelService.createModelReference(newResource, 'bulk-file-move');
|
|
229
|
+
newDocRef.instance.updateContent(dirtyContent, dirtyEOL);
|
|
230
|
+
newDocRef.dispose();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async apply(documentModelService, editorService, workspaceFS, eventBus) {
|
|
234
|
+
const options = this.options || {};
|
|
235
|
+
if (this.newResource && this.oldResource) {
|
|
236
|
+
if (options.copy) {
|
|
237
|
+
await workspaceFS.copy([{ source: this.oldResource.codeUri, target: this.newResource.codeUri }], options);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
// rename
|
|
241
|
+
await workspaceFS.move([{ source: this.oldResource.codeUri, target: this.newResource.codeUri }], options);
|
|
242
|
+
await this.notifyEditor(editorService, documentModelService);
|
|
243
|
+
// TODO: 文件夹rename应该带传染性, 但是遍历实现比较坑,先不实现
|
|
244
|
+
eventBus.fire(new common_1.WorkspaceEditDidRenameFileEvent({ oldUri: this.oldResource, newUri: this.newResource }));
|
|
245
|
+
}
|
|
246
|
+
if (options.showInEditor) {
|
|
247
|
+
editorService.open(this.newResource);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (!this.newResource && this.oldResource) {
|
|
251
|
+
// 删除文件
|
|
252
|
+
try {
|
|
253
|
+
// electron windows下moveToTrash大量文件会导致IDE卡死,如果检测到这个情况就不使用moveToTrash
|
|
254
|
+
await workspaceFS.delete([this.oldResource], { useTrash: !(ide_core_browser_1.isWindows && this.oldResource.path.name === 'node_modules') });
|
|
255
|
+
// 默认recursive
|
|
256
|
+
await editorService.close(this.oldResource, true);
|
|
257
|
+
eventBus.fire(new common_1.WorkspaceEditDidDeleteFileEvent({ oldUri: this.oldResource }));
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
if (common_2.FileSystemError.FileNotFound.is(err) && options.ignoreIfNotExists) {
|
|
261
|
+
// 不抛出错误
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
throw err;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
else if (this.newResource && !this.oldResource) {
|
|
269
|
+
// 创建文件
|
|
270
|
+
try {
|
|
271
|
+
if (options.isDirectory) {
|
|
272
|
+
await workspaceFS.createFolder(this.newResource);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
await workspaceFS.create(this.newResource, '', { overwrite: options.overwrite });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
// FIXME: 不知道为什么这里错误不是 FileSystemError 了,所以换个实现兼容一下
|
|
280
|
+
if (this.isFileExistError(err) && options.ignoreIfExists) {
|
|
281
|
+
// 不抛出错误
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
throw err;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (!options.isDirectory && options.showInEditor) {
|
|
288
|
+
editorService.open(this.newResource);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
isFileExistError(err) {
|
|
293
|
+
return err.message.includes('already exists.');
|
|
294
|
+
}
|
|
295
|
+
async revert() {
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
exports.ResourceFileEdit = ResourceFileEdit;
|
|
299
|
+
function isResourceFileEdit(thing) {
|
|
300
|
+
return (!!(thing.newResource) || !!(thing.oldResource));
|
|
301
|
+
}
|
|
302
|
+
exports.isResourceFileEdit = isResourceFileEdit;
|
|
303
|
+
/**
|
|
304
|
+
* 当前编辑器的文档是否在指定的编辑器 resource (tab) 中
|
|
305
|
+
* 此处需要额外判断一下 diffEditor 的情况
|
|
306
|
+
* @param resource
|
|
307
|
+
* @param uri
|
|
308
|
+
*/
|
|
309
|
+
function isDocumentUriInResource(resource, uri) {
|
|
310
|
+
var _a, _b;
|
|
311
|
+
if ((0, browser_1.isDiffResource)(resource)) {
|
|
312
|
+
return ((_a = resource.metadata) === null || _a === void 0 ? void 0 : _a.modified.isEqual(uri)) || ((_b = resource.metadata) === null || _b === void 0 ? void 0 : _b.original.isEqual(uri));
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
return resource.uri.isEqual(uri);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=workspace-edit.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-edit.service.js","sourceRoot":"","sources":["../../src/browser/workspace-edit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { URI, Uri, Disposable, IDisposable, Event, FileStat } from '@opensumi/ide-core-common';
|
|
2
|
+
import { IProgressService } from '@opensumi/ide-core-browser/lib/progress';
|
|
3
|
+
import { FileOperation, IWorkspaceFileOperationParticipant, IWorkspaceFileService, SourceTargetPair, WorkspaceFileEvent } from '..';
|
|
4
|
+
export declare class WorkspaceFileOperationParticipant extends Disposable {
|
|
5
|
+
progressService: IProgressService;
|
|
6
|
+
participants: IWorkspaceFileOperationParticipant[];
|
|
7
|
+
registerParticipant(participant: IWorkspaceFileOperationParticipant): IDisposable;
|
|
8
|
+
participate(files: {
|
|
9
|
+
source?: Uri;
|
|
10
|
+
target: Uri;
|
|
11
|
+
}[], operation: FileOperation): Promise<void>;
|
|
12
|
+
dispose(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class WorkspaceFileService implements IWorkspaceFileService {
|
|
15
|
+
private readonly fileService;
|
|
16
|
+
private readonly fileOperationParticipants;
|
|
17
|
+
private correlationIds;
|
|
18
|
+
private readonly _onWillRunWorkspaceFileOperation;
|
|
19
|
+
readonly onWillRunWorkspaceFileOperation: Event<WorkspaceFileEvent>;
|
|
20
|
+
private readonly _onDidFailWorkspaceFileOperation;
|
|
21
|
+
readonly onDidFailWorkspaceFileOperation: Event<WorkspaceFileEvent>;
|
|
22
|
+
private readonly _onDidRunWorkspaceFileOperation;
|
|
23
|
+
readonly onDidRunWorkspaceFileOperation: Event<WorkspaceFileEvent>;
|
|
24
|
+
create(resource: URI, contents?: string, options?: {
|
|
25
|
+
overwrite?: boolean;
|
|
26
|
+
}): Promise<FileStat>;
|
|
27
|
+
createFolder(resource: URI): Promise<FileStat>;
|
|
28
|
+
move(files: Required<SourceTargetPair>[], options?: {
|
|
29
|
+
overwrite?: boolean;
|
|
30
|
+
}): Promise<FileStat[]>;
|
|
31
|
+
copy(files: Required<SourceTargetPair>[], options?: {
|
|
32
|
+
overwrite?: boolean;
|
|
33
|
+
}): Promise<FileStat[]>;
|
|
34
|
+
delete(resources: URI[], options?: {
|
|
35
|
+
useTrash?: boolean;
|
|
36
|
+
recursive?: boolean;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
registerFileOperationParticipant(participant: IWorkspaceFileOperationParticipant): IDisposable;
|
|
39
|
+
private runOperationParticipant;
|
|
40
|
+
private doMoveOrCopy;
|
|
41
|
+
private doCreate;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=workspace-file.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-file.service.d.ts","sourceRoot":"","sources":["../../src/browser/workspace-file.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,GAAG,EAA8C,UAAU,EAAE,WAAW,EAAgC,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAA0B,kCAAkC,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAE5J,qBACa,iCAAkC,SAAQ,UAAU;IAE/D,eAAe,EAAE,gBAAgB,CAAC;IAElC,YAAY,EAAE,kCAAkC,EAAE,CAAM;IAExD,mBAAmB,CAAC,WAAW,EAAE,kCAAkC,GAAG,WAAW;IAU3E,WAAW,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAelG,OAAO;CAGR;AAED,qBACa,oBAAqB,YAAW,qBAAqB;IAEhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAGjD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAoC;IAE9E,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA0C;IAC3F,SAAgB,+BAA+B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA+C;IAEzH,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAA0C;IAC3F,SAAgB,+BAA+B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA+C;IAEzH,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAA0C;IAC1F,SAAgB,8BAA8B,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAA8C;IAEhH,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAI1E,YAAY,CAAC,QAAQ,EAAE,GAAG;IAI1B,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3F,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BpG,gCAAgC,CAAC,WAAW,EAAE,kCAAkC,GAAG,WAAW;IAIrG,OAAO,CAAC,uBAAuB;YAIjB,YAAY;YAkCZ,QAAQ;CA4BvB"}
|