diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index c76592c6e90..c9329b246c4 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -1117,7 +1117,7 @@ export interface DocumentCommentProvider { provideDocumentComments(resource: URI, token: CancellationToken): Promise; createNewCommentThread(resource: URI, range: Range, text: string, token: CancellationToken): Promise; replyToCommentThread(resource: URI, range: Range, thread: CommentThread, text: string, token: CancellationToken): Promise; - editComment(resource: URI, comment: Comment, text: string, token: CancellationToken): Promise; + editComment(resource: URI, comment: Comment, text: string, token: CancellationToken): Promise; deleteComment(resource: URI, comment: Comment, token: CancellationToken): Promise; onDidChangeCommentThreads(): Event; } diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index dbf192fd981..5c413974446 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -813,7 +813,7 @@ declare module 'vscode' { /** * Called when a user edits the comment body to the be new text text. */ - editComment?(document: TextDocument, comment: Comment, text: string, token: CancellationToken): Promise; + editComment?(document: TextDocument, comment: Comment, text: string, token: CancellationToken): Promise; /** * Called when a user deletes the comment. diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index e7c980489a8..ea278ac75ea 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -1002,7 +1002,7 @@ export interface ExtHostCommentsShape { $provideDocumentComments(handle: number, document: UriComponents): Thenable; $createNewCommentThread(handle: number, document: UriComponents, range: IRange, text: string): Thenable; $replyToCommentThread(handle: number, document: UriComponents, range: IRange, commentThread: modes.CommentThread, text: string): Thenable; - $editComment(handle: number, document: UriComponents, comment: modes.Comment, text: string): Thenable; + $editComment(handle: number, document: UriComponents, comment: modes.Comment, text: string): Thenable; $deleteComment(handle: number, document: UriComponents, comment: modes.Comment): Thenable; $provideWorkspaceComments(handle: number): Thenable; } diff --git a/src/vs/workbench/api/node/extHostComments.ts b/src/vs/workbench/api/node/extHostComments.ts index 911b82f7c08..6732f78ed6c 100644 --- a/src/vs/workbench/api/node/extHostComments.ts +++ b/src/vs/workbench/api/node/extHostComments.ts @@ -93,7 +93,7 @@ export class ExtHostComments implements ExtHostCommentsShape { }).then(commentThread => commentThread ? convertToCommentThread(provider, commentThread, this._commandsConverter) : null); } - $editComment(handle: number, uri: UriComponents, comment: modes.Comment, text: string): Thenable { + $editComment(handle: number, uri: UriComponents, comment: modes.Comment, text: string): Thenable { const data = this._documents.getDocumentData(URI.revive(uri)); if (!data || !data.document) { @@ -103,7 +103,7 @@ export class ExtHostComments implements ExtHostCommentsShape { const provider = this._documentProviders.get(handle); return asThenable(() => { return provider.editComment(data.document, convertFromComment(comment), text, CancellationToken.None); - }).then(comment => convertToComment(provider, comment, this._commandsConverter)); + }); } $deleteComment(handle: number, uri: UriComponents, comment: modes.Comment): Thenable { diff --git a/src/vs/workbench/parts/comments/electron-browser/commentNode.ts b/src/vs/workbench/parts/comments/electron-browser/commentNode.ts index 5766942b4e9..68a2ca8a98d 100644 --- a/src/vs/workbench/parts/comments/electron-browser/commentNode.ts +++ b/src/vs/workbench/parts/comments/electron-browser/commentNode.ts @@ -29,6 +29,8 @@ import { Selection } from 'vs/editor/common/core/selection'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { Emitter, Event } from 'vs/base/common/event'; import { INotificationService } from 'vs/platform/notification/common/notification'; +import { assign } from 'vs/base/common/objects'; +import { MarkdownString } from 'vs/base/common/htmlContent'; const UPDATE_COMMENT_LABEL = nls.localize('label.updateComment', "Update comment"); const UPDATE_IN_PROGRESS_LABEL = nls.localize('label.updatingComment', "Updating comment..."); @@ -159,14 +161,14 @@ export class CommentNode extends Disposable { this._updateCommentButton.label = UPDATE_IN_PROGRESS_LABEL; try { - const editedComment = await this.commentService.editComment(this.owner, this.resource, this.comment, this._commentEditor.getValue()); - if (!(editedComment instanceof Comment)) { - throw Error(); - } + const newBody = this._commentEditor.getValue(); + await this.commentService.editComment(this.owner, this.resource, this.comment, newBody); + this._updateCommentButton.enabled = true; this._updateCommentButton.label = UPDATE_COMMENT_LABEL; this._commentEditor.getDomNode().style.outline = ''; this.removeCommentEditor(); + const editedComment = assign({}, this.comment, { body: new MarkdownString(newBody) }); this.update(editedComment); } catch (e) { this._updateCommentButton.enabled = true; diff --git a/src/vs/workbench/parts/comments/electron-browser/commentService.ts b/src/vs/workbench/parts/comments/electron-browser/commentService.ts index 6047f58d0bd..c781c404d15 100644 --- a/src/vs/workbench/parts/comments/electron-browser/commentService.ts +++ b/src/vs/workbench/parts/comments/electron-browser/commentService.ts @@ -41,7 +41,7 @@ export interface ICommentService { updateComments(event: CommentThreadChangedEvent): void; createNewCommentThread(owner: number, resource: URI, range: Range, text: string): Promise; replyToCommentThread(owner: number, resource: URI, range: Range, thread: CommentThread, text: string): Promise; - editComment(owner: number, resource: URI, comment: Comment, text: string): Promise; + editComment(owner: number, resource: URI, comment: Comment, text: string): Promise; deleteComment(owner: number, resource: URI, comment: Comment): Promise; getComments(resource: URI): Promise; } @@ -116,7 +116,7 @@ export class CommentService extends Disposable implements ICommentService { return null; } - editComment(owner: number, resource: URI, comment: Comment, text: string): Promise { + editComment(owner: number, resource: URI, comment: Comment, text: string): Promise { const commentProvider = this._commentProviders.get(owner); if (commentProvider) {