@codingame/monaco-vscode-bulk-edit-service-override 25.1.2 → 26.0.0
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/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +117 -84
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.js +119 -91
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +54 -36
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/conflicts.js +8 -16
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/opaqueEdits.js +15 -13
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.contribution.js +95 -83
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEdit.css +0 -1
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPane.js +118 -71
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditPreview.js +73 -59
- package/vscode/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.js +183 -171
|
@@ -49,12 +49,10 @@ class CheckedStates {
|
|
|
49
49
|
if (value) {
|
|
50
50
|
this._checkedCount += 1;
|
|
51
51
|
}
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
52
|
+
} else {
|
|
54
53
|
if (value) {
|
|
55
54
|
this._checkedCount += 1;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
55
|
+
} else {
|
|
58
56
|
this._checkedCount -= 1;
|
|
59
57
|
}
|
|
60
58
|
}
|
|
@@ -69,7 +67,7 @@ class BulkTextEdit {
|
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
69
|
var BulkFileOperationType;
|
|
72
|
-
(function
|
|
70
|
+
(function(BulkFileOperationType) {
|
|
73
71
|
BulkFileOperationType[BulkFileOperationType["TextEdit"] = 1] = "TextEdit";
|
|
74
72
|
BulkFileOperationType[BulkFileOperationType["Create"] = 2] = "Create";
|
|
75
73
|
BulkFileOperationType[BulkFileOperationType["Delete"] = 4] = "Delete";
|
|
@@ -88,8 +86,7 @@ class BulkFileOperation {
|
|
|
88
86
|
this.originalEdits.set(index, edit);
|
|
89
87
|
if (edit instanceof ResourceTextEdit) {
|
|
90
88
|
this.textEdits.push(( new BulkTextEdit(this, edit)));
|
|
91
|
-
}
|
|
92
|
-
else if (type === BulkFileOperationType.Rename) {
|
|
89
|
+
} else if (type === BulkFileOperationType.Rename) {
|
|
93
90
|
this.newUri = edit.newResource;
|
|
94
91
|
}
|
|
95
92
|
}
|
|
@@ -103,13 +100,15 @@ class BulkFileOperation {
|
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
class BulkCategory {
|
|
106
|
-
static {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
static {
|
|
104
|
+
this._defaultMetadata = ( Object.freeze({
|
|
105
|
+
label: ( localize(4546, "Other")),
|
|
106
|
+
icon: Codicon.symbolFile,
|
|
107
|
+
needsConfirmation: false
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
111
110
|
static keyOf(metadata) {
|
|
112
|
-
return metadata?.label ||
|
|
111
|
+
return metadata?.label || "<default>";
|
|
113
112
|
}
|
|
114
113
|
constructor(metadata = BulkCategory._defaultMetadata) {
|
|
115
114
|
this.metadata = metadata;
|
|
@@ -148,8 +147,7 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
148
147
|
if (edit instanceof ResourceTextEdit) {
|
|
149
148
|
type = BulkFileOperationType.TextEdit;
|
|
150
149
|
uri = edit.resource;
|
|
151
|
-
}
|
|
152
|
-
else if (edit instanceof ResourceFileEdit) {
|
|
150
|
+
} else if (edit instanceof ResourceFileEdit) {
|
|
153
151
|
if (edit.newResource && edit.oldResource) {
|
|
154
152
|
type = BulkFileOperationType.Rename;
|
|
155
153
|
uri = edit.oldResource;
|
|
@@ -157,26 +155,22 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
157
155
|
continue;
|
|
158
156
|
}
|
|
159
157
|
newToOldUri.set(edit.newResource, uri);
|
|
160
|
-
}
|
|
161
|
-
else if (edit.oldResource) {
|
|
158
|
+
} else if (edit.oldResource) {
|
|
162
159
|
type = BulkFileOperationType.Delete;
|
|
163
160
|
uri = edit.oldResource;
|
|
164
161
|
if (edit.options?.ignoreIfNotExists && !(await this._fileService.exists(uri))) {
|
|
165
162
|
continue;
|
|
166
163
|
}
|
|
167
|
-
}
|
|
168
|
-
else if (edit.newResource) {
|
|
164
|
+
} else if (edit.newResource) {
|
|
169
165
|
type = BulkFileOperationType.Create;
|
|
170
166
|
uri = edit.newResource;
|
|
171
167
|
if (edit.options?.overwrite === undefined && edit.options?.ignoreIfExists && (await this._fileService.exists(uri))) {
|
|
172
168
|
continue;
|
|
173
169
|
}
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
170
|
+
} else {
|
|
176
171
|
continue;
|
|
177
172
|
}
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
173
|
+
} else {
|
|
180
174
|
continue;
|
|
181
175
|
}
|
|
182
176
|
const insert = (uri, map) => {
|
|
@@ -222,11 +216,9 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
222
216
|
this.categories.sort((a, b) => {
|
|
223
217
|
if (a.metadata.needsConfirmation === b.metadata.needsConfirmation) {
|
|
224
218
|
return a.metadata.label.localeCompare(b.metadata.label);
|
|
225
|
-
}
|
|
226
|
-
else if (a.metadata.needsConfirmation) {
|
|
219
|
+
} else if (a.metadata.needsConfirmation) {
|
|
227
220
|
return -1;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
221
|
+
} else {
|
|
230
222
|
return 1;
|
|
231
223
|
}
|
|
232
224
|
});
|
|
@@ -254,7 +246,12 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
254
246
|
if (!content) {
|
|
255
247
|
return undefined;
|
|
256
248
|
}
|
|
257
|
-
return EditOperation.replaceMove(Range.lift({
|
|
249
|
+
return EditOperation.replaceMove(Range.lift({
|
|
250
|
+
startLineNumber: 0,
|
|
251
|
+
startColumn: 0,
|
|
252
|
+
endLineNumber: Number.MAX_VALUE,
|
|
253
|
+
endColumn: 0
|
|
254
|
+
}), ( content.toString()));
|
|
258
255
|
}
|
|
259
256
|
async getFileEdits(uri) {
|
|
260
257
|
for (const file of this.fileOperations) {
|
|
@@ -264,13 +261,14 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
264
261
|
for (const edit of ( file.originalEdits.values())) {
|
|
265
262
|
if (edit instanceof ResourceFileEdit) {
|
|
266
263
|
result.push(this.getFileEditOperation(edit));
|
|
267
|
-
}
|
|
268
|
-
else if (edit instanceof ResourceTextEdit) {
|
|
264
|
+
} else if (edit instanceof ResourceTextEdit) {
|
|
269
265
|
if (this.checked.isChecked(edit)) {
|
|
270
|
-
result.push(Promise.resolve(EditOperation.replaceMove(
|
|
266
|
+
result.push(Promise.resolve(EditOperation.replaceMove(
|
|
267
|
+
Range.lift(edit.textEdit.range),
|
|
268
|
+
!edit.textEdit.insertAsSnippet ? edit.textEdit.text : SnippetParser.asInsertText(edit.textEdit.text)
|
|
269
|
+
)));
|
|
271
270
|
}
|
|
272
|
-
}
|
|
273
|
-
else if (!this.checked.isChecked(edit)) {
|
|
271
|
+
} else if (!this.checked.isChecked(edit)) {
|
|
274
272
|
ignoreAll = true;
|
|
275
273
|
}
|
|
276
274
|
}
|
|
@@ -290,17 +288,23 @@ let BulkFileOperations = BulkFileOperations_1 = class BulkFileOperations {
|
|
|
290
288
|
}
|
|
291
289
|
}
|
|
292
290
|
}
|
|
293
|
-
throw ( new Error(
|
|
291
|
+
throw ( new Error("invalid edit"));
|
|
294
292
|
}
|
|
295
293
|
};
|
|
296
|
-
BulkFileOperations = BulkFileOperations_1 = ( __decorate([
|
|
297
|
-
( __param(1, IFileService)),
|
|
298
|
-
( __param(2, IInstantiationService))
|
|
299
|
-
], BulkFileOperations));
|
|
294
|
+
BulkFileOperations = BulkFileOperations_1 = ( __decorate([( __param(1, IFileService)), ( __param(2, IInstantiationService))], BulkFileOperations));
|
|
300
295
|
let BulkEditPreviewProvider = class BulkEditPreviewProvider {
|
|
301
|
-
static {
|
|
302
|
-
|
|
303
|
-
|
|
296
|
+
static {
|
|
297
|
+
BulkEditPreviewProvider_1 = this;
|
|
298
|
+
}
|
|
299
|
+
static {
|
|
300
|
+
this.Schema = "vscode-bulkeditpreview-editor";
|
|
301
|
+
}
|
|
302
|
+
static {
|
|
303
|
+
this.emptyPreview = ( URI.from({
|
|
304
|
+
scheme: this.Schema,
|
|
305
|
+
fragment: "empty"
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
304
308
|
static fromPreviewUri(uri) {
|
|
305
309
|
return ( URI.parse(uri.query));
|
|
306
310
|
}
|
|
@@ -312,7 +316,9 @@ let BulkEditPreviewProvider = class BulkEditPreviewProvider {
|
|
|
312
316
|
this._disposables = ( new DisposableStore());
|
|
313
317
|
this._modelPreviewEdits = ( new Map());
|
|
314
318
|
this._instanceId = generateUuid();
|
|
315
|
-
this._disposables.add(
|
|
319
|
+
this._disposables.add(
|
|
320
|
+
this._textModelResolverService.registerTextModelContentProvider(BulkEditPreviewProvider_1.Schema, this)
|
|
321
|
+
);
|
|
316
322
|
this._ready = this._init();
|
|
317
323
|
}
|
|
318
324
|
dispose() {
|
|
@@ -320,18 +326,23 @@ let BulkEditPreviewProvider = class BulkEditPreviewProvider {
|
|
|
320
326
|
}
|
|
321
327
|
asPreviewUri(uri) {
|
|
322
328
|
const path = uri.scheme === Schemas.untitled ? `/${uri.path}` : uri.path;
|
|
323
|
-
return ( URI.from(
|
|
324
|
-
|
|
325
|
-
|
|
329
|
+
return ( URI.from({
|
|
330
|
+
scheme: BulkEditPreviewProvider_1.Schema,
|
|
331
|
+
authority: this._instanceId,
|
|
332
|
+
path,
|
|
333
|
+
query: ( uri.toString())
|
|
334
|
+
}));
|
|
326
335
|
}
|
|
327
336
|
async _init() {
|
|
328
337
|
for (const operation of this._operations.fileOperations) {
|
|
329
338
|
await this._applyTextEditsToPreviewModel(operation.uri);
|
|
330
339
|
}
|
|
331
|
-
this._disposables.add(
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
340
|
+
this._disposables.add(
|
|
341
|
+
Event.debounce(this._operations.checked.onDidChange, (_last, e) => e, MicrotaskDelay)(e => {
|
|
342
|
+
const uri = this._operations.getUriOfEdit(e);
|
|
343
|
+
this._applyTextEditsToPreviewModel(uri);
|
|
344
|
+
})
|
|
345
|
+
);
|
|
335
346
|
}
|
|
336
347
|
async _applyTextEditsToPreviewModel(uri) {
|
|
337
348
|
const model = await this._getOrCreatePreviewModel(uri);
|
|
@@ -350,11 +361,18 @@ let BulkEditPreviewProvider = class BulkEditPreviewProvider {
|
|
|
350
361
|
try {
|
|
351
362
|
const ref = await this._textModelResolverService.createModelReference(uri);
|
|
352
363
|
const sourceModel = ref.object.textEditorModel;
|
|
353
|
-
model = this._modelService.createModel(
|
|
364
|
+
model = this._modelService.createModel(
|
|
365
|
+
createTextBufferFactoryFromSnapshot(sourceModel.createSnapshot()),
|
|
366
|
+
this._languageService.createById(sourceModel.getLanguageId()),
|
|
367
|
+
previewUri
|
|
368
|
+
);
|
|
354
369
|
ref.dispose();
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
|
|
370
|
+
} catch {
|
|
371
|
+
model = this._modelService.createModel(
|
|
372
|
+
"",
|
|
373
|
+
this._languageService.createByFilepathOrFirstLine(previewUri),
|
|
374
|
+
previewUri
|
|
375
|
+
);
|
|
358
376
|
}
|
|
359
377
|
queueMicrotask(async () => {
|
|
360
378
|
this._disposables.add(await this._textModelResolverService.createModelReference(model.uri));
|
|
@@ -364,16 +382,12 @@ let BulkEditPreviewProvider = class BulkEditPreviewProvider {
|
|
|
364
382
|
}
|
|
365
383
|
async provideTextContent(previewUri) {
|
|
366
384
|
if (( previewUri.toString()) === ( BulkEditPreviewProvider_1.emptyPreview.toString())) {
|
|
367
|
-
return this._modelService.createModel(
|
|
385
|
+
return this._modelService.createModel("", null, previewUri);
|
|
368
386
|
}
|
|
369
387
|
await this._ready;
|
|
370
388
|
return this._modelService.getModel(previewUri);
|
|
371
389
|
}
|
|
372
390
|
};
|
|
373
|
-
BulkEditPreviewProvider = BulkEditPreviewProvider_1 = ( __decorate([
|
|
374
|
-
( __param(1, ILanguageService)),
|
|
375
|
-
( __param(2, IModelService)),
|
|
376
|
-
( __param(3, ITextModelService))
|
|
377
|
-
], BulkEditPreviewProvider));
|
|
391
|
+
BulkEditPreviewProvider = BulkEditPreviewProvider_1 = ( __decorate([( __param(1, ILanguageService)), ( __param(2, IModelService)), ( __param(3, ITextModelService))], BulkEditPreviewProvider));
|
|
378
392
|
|
|
379
393
|
export { BulkCategory, BulkEditPreviewProvider, BulkFileOperation, BulkFileOperationType, BulkFileOperations, BulkTextEdit, CheckedStates };
|