From 4d9213a3377d53fabdcdd78af3267e57d2c80014 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 17 Jun 2016 23:54:59 -0700 Subject: [PATCH] added todo comments --- src/server/protocol.d.ts | 8 ++++++++ src/server/session.ts | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 1d77aeba2ac..2fdf7723265 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -98,6 +98,14 @@ declare namespace ts.server.protocol { projectFileName?: string; } + export interface TodoCommentRequest extends FileRequest { + arguments: TodoCommentRequestArgs; + } + + export interface TodoCommentRequestArgs extends FileRequestArgs { + descriptors: TodoCommentDescriptor[]; + } + /** * Arguments for ProjectInfoRequest request. */ diff --git a/src/server/session.ts b/src/server/session.ts index 965844f9b8b..1a0a46c6b9e 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -144,6 +144,7 @@ namespace ts.server { export const EncodedSemanticClassificationsFull = "encodedSemanticClassifications-full"; export const Cleanup = "cleanup"; export const OutliningSpans = "outliningSpans"; + export const TodoComments = "todoComments"; } namespace Errors { @@ -699,6 +700,15 @@ namespace ts.server { return project.languageService.getOutliningSpans(file); } + private getTodoComments(args: protocol.TodoCommentRequestArgs) { + const file = ts.normalizePath(args.file); + const project = this.projectService.getProjectForFile(file); + if (!project) { + throw Errors.NoProject; + } + return project.languageService.getTodoComments(file, args.descriptors); + } + private getQuickInfoWorker(args: protocol.FileLocationRequestArgs, simplifiedResult: boolean): protocol.QuickInfoResponseBody | QuickInfo { const file = ts.normalizePath(args.file); const project = this.projectService.getProjectForFile(file); @@ -1246,6 +1256,9 @@ namespace ts.server { [CommandNames.OutliningSpans]: (request: protocol.FileRequest) => { return this.requiredResponse(this.getOutliningSpans(request.arguments)); }, + [CommandNames.TodoComments]: (request: protocol.TodoCommentRequest) => { + return this.requiredResponse(this.getTodoComments(request.arguments)); + }, [CommandNames.Format]: (request: protocol.Request) => { const formatArgs = request.arguments; return this.requiredResponse(this.getFormattingEditsForRange(formatArgs.line, formatArgs.offset, formatArgs.endLine, formatArgs.endOffset, formatArgs.file));