diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index b3517688592..89ef48ed141 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1245,9 +1245,9 @@ export interface DocumentCommentProvider { replyToCommentThread(resource: URI, range: Range, thread: CommentThread, text: string, token: CancellationToken): Promise; editComment(resource: URI, comment: Comment, text: string, token: CancellationToken): Promise; deleteComment(resource: URI, comment: Comment, token: CancellationToken): Promise; - startDraft?(token: CancellationToken): Promise; - deleteDraft?(token: CancellationToken): Promise; - finishDraft?(token: CancellationToken): Promise; + startDraft?(resource: URI, token: CancellationToken): Promise; + deleteDraft?(resource: URI, token: CancellationToken): Promise; + finishDraft?(resource: URI, token: CancellationToken): Promise; startDraftLabel?: string; deleteDraftLabel?: string; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 79243d0bc2a..f4cf361cd18 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -868,9 +868,9 @@ declare module 'vscode' { */ deleteComment?(document: TextDocument, comment: Comment, token: CancellationToken): Promise; - startDraft?(token: CancellationToken): Promise; - deleteDraft?(token: CancellationToken): Promise; - finishDraft?(token: CancellationToken): Promise; + startDraft?(document: TextDocument, token: CancellationToken): Promise; + deleteDraft?(document: TextDocument, token: CancellationToken): Promise; + finishDraft?(document: TextDocument, token: CancellationToken): Promise; startDraftLabel?: string; deleteDraftLabel?: string; diff --git a/src/vs/workbench/api/electron-browser/mainThreadComments.ts b/src/vs/workbench/api/electron-browser/mainThreadComments.ts index a0bfc449341..7a6cb1ecf4a 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadComments.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadComments.ts @@ -54,14 +54,14 @@ export class MainThreadDocumentCommentProvider implements modes.DocumentCommentP return this._proxy.$deleteComment(this._handle, uri, comment); } - async startDraft(token): Promise { - return this._proxy.$startDraft(this._handle); + async startDraft(uri, token): Promise { + return this._proxy.$startDraft(this._handle, uri); } - async deleteDraft(token): Promise { - return this._proxy.$deleteDraft(this._handle); + async deleteDraft(uri, token): Promise { + return this._proxy.$deleteDraft(this._handle, uri); } - async finishDraft(token): Promise { - return this._proxy.$finishDraft(this._handle); + async finishDraft(uri, token): Promise { + return this._proxy.$finishDraft(this._handle, uri); } onDidChangeCommentThreads = null; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 4281c255422..621dba4c7c3 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -1044,9 +1044,9 @@ export interface ExtHostCommentsShape { $replyToCommentThread(handle: number, document: UriComponents, range: IRange, commentThread: modes.CommentThread, text: string): Promise; $editComment(handle: number, document: UriComponents, comment: modes.Comment, text: string): Promise; $deleteComment(handle: number, document: UriComponents, comment: modes.Comment): Promise; - $startDraft(handle: number): Promise; - $deleteDraft(handle: number): Promise; - $finishDraft(handle: number): Promise; + $startDraft(handle: number, document: UriComponents): Promise; + $deleteDraft(handle: number, document: UriComponents): Promise; + $finishDraft(handle: number, document: UriComponents): Promise; $provideWorkspaceComments(handle: number): Promise; } diff --git a/src/vs/workbench/api/node/extHostComments.ts b/src/vs/workbench/api/node/extHostComments.ts index 72c6d9caac0..761547ff64f 100644 --- a/src/vs/workbench/api/node/extHostComments.ts +++ b/src/vs/workbench/api/node/extHostComments.ts @@ -121,24 +121,42 @@ export class ExtHostComments implements ExtHostCommentsShape { }); } - $startDraft(handle: number): Promise { + $startDraft(handle: number, uri: UriComponents): Promise { + const data = this._documents.getDocumentData(URI.revive(uri)); + + if (!data || !data.document) { + throw new Error('Unable to retrieve document from URI'); + } + const provider = this._documentProviders.get(handle); return asPromise(() => { - return provider.startDraft(CancellationToken.None); + return provider.startDraft(data.document, CancellationToken.None); }); } - $deleteDraft(handle: number): Promise { + $deleteDraft(handle: number, uri: UriComponents): Promise { + const data = this._documents.getDocumentData(URI.revive(uri)); + + if (!data || !data.document) { + throw new Error('Unable to retrieve document from URI'); + } + const provider = this._documentProviders.get(handle); return asPromise(() => { - return provider.deleteDraft(CancellationToken.None); + return provider.deleteDraft(data.document, CancellationToken.None); }); } - $finishDraft(handle: number): Promise { + $finishDraft(handle: number, uri: UriComponents): Promise { + const data = this._documents.getDocumentData(URI.revive(uri)); + + if (!data || !data.document) { + throw new Error('Unable to retrieve document from URI'); + } + const provider = this._documentProviders.get(handle); return asPromise(() => { - return provider.finishDraft(CancellationToken.None); + return provider.finishDraft(data.document, CancellationToken.None); }); } diff --git a/src/vs/workbench/parts/comments/electron-browser/commentService.ts b/src/vs/workbench/parts/comments/electron-browser/commentService.ts index 08711fffb80..a8d1e7b3d77 100644 --- a/src/vs/workbench/parts/comments/electron-browser/commentService.ts +++ b/src/vs/workbench/parts/comments/electron-browser/commentService.ts @@ -49,9 +49,9 @@ export interface ICommentService { editComment(owner: string, resource: URI, comment: Comment, text: string): Promise; deleteComment(owner: string, resource: URI, comment: Comment): Promise; getComments(resource: URI): Promise; - startDraft(owner: string): void; - deleteDraft(owner: string): void; - finishDraft(owner: string): void; + startDraft(owner: string, resource: URI): void; + deleteDraft(owner: string, resource: URI): void; + finishDraft(owner: string, resource: URI): void; getStartDraftLabel(owner: string): string; getDeleteDraftLabel(owner: string): string; getFinishDraftLabel(owner: string): string; @@ -148,31 +148,31 @@ export class CommentService extends Disposable implements ICommentService { return Promise.resolve(false); } - async startDraft(owner: string): Promise { + async startDraft(owner: string, resource: URI): Promise { const commentProvider = this._commentProviders.get(owner); if (commentProvider && commentProvider.startDraft) { - return commentProvider.startDraft(CancellationToken.None); + return commentProvider.startDraft(resource, CancellationToken.None); } else { throw new Error('Not supported'); } } - async deleteDraft(owner: string): Promise { + async deleteDraft(owner: string, resource: URI): Promise { const commentProvider = this._commentProviders.get(owner); if (commentProvider && commentProvider.deleteDraft) { - return commentProvider.deleteDraft(CancellationToken.None); + return commentProvider.deleteDraft(resource, CancellationToken.None); } else { throw new Error('Not supported'); } } - async finishDraft(owner: string): Promise { + async finishDraft(owner: string, resource: URI): Promise { const commentProvider = this._commentProviders.get(owner); if (commentProvider && commentProvider.finishDraft) { - return commentProvider.finishDraft(CancellationToken.None); + return commentProvider.finishDraft(resource, CancellationToken.None); } else { throw new Error('Not supported'); } diff --git a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts index f537545a5ca..365ec21bca4 100644 --- a/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts +++ b/src/vs/workbench/parts/comments/electron-browser/commentThreadWidget.ts @@ -412,7 +412,7 @@ export class ReviewZoneWidget extends ZoneWidget { deletedraftButton.onDidClick(async () => { try { - await this.commentService.deleteDraft(this._owner); + await this.commentService.deleteDraft(this._owner, this.editor.getModel().uri); } catch (e) { this.handleError(e); } @@ -430,7 +430,7 @@ export class ReviewZoneWidget extends ZoneWidget { try { let lineNumber = this._commentGlyph.getPosition().position.lineNumber; await this.createComment(lineNumber); - await this.commentService.finishDraft(this._owner); + await this.commentService.finishDraft(this._owner, this.editor.getModel().uri); } catch (e) { this.handleError(e); } @@ -456,7 +456,7 @@ export class ReviewZoneWidget extends ZoneWidget { draftButton.onDidClick(async () => { try { - await this.commentService.startDraft(this._owner); + await this.commentService.startDraft(this._owner, this.editor.getModel().uri); let lineNumber = this._commentGlyph.getPosition().position.lineNumber; await this.createComment(lineNumber); } catch (e) {