Skip to content

Commit

Permalink
add proposed api for #10659
Browse files Browse the repository at this point in the history
  • Loading branch information
jrieken committed Jun 18, 2018
1 parent 2d3f51a commit e037cdb
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 30 deletions.
10 changes: 10 additions & 0 deletions src/vs/vscode.proposed.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,16 @@ declare module 'vscode' {

//#endregion

//#region joh: https://github.com/Microsoft/vscode/issues/10659

export interface WorkspaceEdit {
createFile(uri: Uri): void;
deleteFile(uri: Uri): void;
renameFile(oldUri: Uri, newUri: Uri): void;
}

//#endregion

//#region mjbvz: Unused diagnostics
/**
* Additional metadata about the type of diagnostic.
Expand Down
14 changes: 7 additions & 7 deletions src/vs/workbench/api/node/extHostTypeConverters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { ISelection } from 'vs/editor/common/core/selection';
import * as htmlContent from 'vs/base/common/htmlContent';
import { IRelativePattern } from 'vs/base/common/glob';
import * as languageSelector from 'vs/editor/common/modes/languageSelector';
import { WorkspaceEditDto, ResourceTextEditDto } from 'vs/workbench/api/node/extHost.protocol';
import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto } from 'vs/workbench/api/node/extHost.protocol';
import { MarkerSeverity, IRelatedInformation, IMarkerData, MarkerTag } from 'vs/platform/markers/common/markers';
import { ACTIVE_GROUP, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService';

Expand Down Expand Up @@ -273,7 +273,7 @@ export namespace WorkspaceEdit {
const result: modes.WorkspaceEdit = {
edits: []
};
for (const entry of value.entries()) {
for (const entry of (value as types.WorkspaceEdit).allEntries()) {
const [uri, uriOrEdits] = entry;
if (Array.isArray(uriOrEdits)) {
// text edits
Expand All @@ -294,11 +294,11 @@ export namespace WorkspaceEdit {
URI.revive((<ResourceTextEditDto>edit).resource),
<types.TextEdit[]>(<ResourceTextEditDto>edit).edits.map(TextEdit.to)
);
// } else {
// result.renameResource(
// URI.revive((<ResourceFileEditDto>edit).oldUri),
// URI.revive((<ResourceFileEditDto>edit).newUri)
// );
} else {
result.renameFile(
URI.revive((<ResourceFileEditDto>edit).oldUri),
URI.revive((<ResourceFileEditDto>edit).newUri)
);
}
}
return result;
Expand Down
45 changes: 22 additions & 23 deletions src/vs/workbench/api/node/extHostTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -499,17 +499,17 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
private _resourceEdits: { seq: number, from: URI, to: URI }[] = [];
private _textEdits = new Map<string, { seq: number, uri: URI, edits: TextEdit[] }>();

// createResource(uri: vscode.Uri): void {
// this.renameResource(undefined, uri);
// }
createFile(uri: vscode.Uri): void {
this.renameFile(undefined, uri);
}

// deleteResource(uri: vscode.Uri): void {
// this.renameResource(uri, undefined);
// }
deleteFile(uri: vscode.Uri): void {
this.renameFile(uri, undefined);
}

// renameResource(from: vscode.Uri, to: vscode.Uri): void {
// this._resourceEdits.push({ seq: this._seqPool++, from, to });
// }
renameFile(from: vscode.Uri, to: vscode.Uri): void {
this._resourceEdits.push({ seq: this._seqPool++, from, to });
}

// resourceEdits(): [vscode.Uri, vscode.Uri][] {
// return this._resourceEdits.map(({ from, to }) => (<[vscode.Uri, vscode.Uri]>[from, to]));
Expand Down Expand Up @@ -566,20 +566,19 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
}

allEntries(): ([URI, TextEdit[]] | [URI, URI])[] {
return this.entries();
// // use the 'seq' the we have assigned when inserting
// // the operation and use that order in the resulting
// // array
// const res: ([URI, TextEdit[]] | [URI, URI])[] = [];
// this._textEdits.forEach(value => {
// const { seq, uri, edits } = value;
// res[seq] = [uri, edits];
// });
// this._resourceEdits.forEach(value => {
// const { seq, from, to } = value;
// res[seq] = [from, to];
// });
// return res;
// use the 'seq' the we have assigned when inserting
// the operation and use that order in the resulting
// array
const res: ([URI, TextEdit[]] | [URI, URI])[] = [];
this._textEdits.forEach(value => {
const { seq, uri, edits } = value;
res[seq] = [uri, edits];
});
this._resourceEdits.forEach(value => {
const { seq, from, to } = value;
res[seq] = [from, to];
});
return res;
}

get size(): number {
Expand Down

0 comments on commit e037cdb

Please sign in to comment.