From 745f0342f6f883d8daf172549c42c0db7581e1f5 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 30 Sep 2016 16:15:23 -0700 Subject: [PATCH 1/2] expose 'gotoImplementation' for VS --- src/server/session.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/server/session.ts b/src/server/session.ts index 81732481d45..265dd8ed348 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -93,6 +93,7 @@ namespace ts.server { export const Geterr = "geterr"; export const GeterrForProject = "geterrForProject"; export const Implementation = "implementation"; + export const ImplementationFull = "implementation-full"; export const SemanticDiagnosticsSync = "semanticDiagnosticsSync"; export const SyntacticDiagnosticsSync = "syntacticDiagnosticsSync"; export const NavBar = "navbar"; @@ -421,7 +422,7 @@ namespace ts.server { }); } - private getImplementation(args: protocol.FileLocationRequestArgs): protocol.FileSpan[] { + private getImplementation(args: protocol.FileLocationRequestArgs, simplifiedResult: boolean): protocol.FileSpan[] | ImplementationLocation[] { const { file, project } = this.getFileAndProject(args); const scriptInfo = project.getScriptInfoForNormalizedPath(file); const position = this.getPosition(args, scriptInfo); @@ -429,11 +430,16 @@ namespace ts.server { if (!implementations) { return []; } - return implementations.map(impl => ({ - file: impl.fileName, - start: scriptInfo.positionToLineOffset(impl.textSpan.start), - end: scriptInfo.positionToLineOffset(ts.textSpanEnd(impl.textSpan)) - })); + if (simplifiedResult) { + return implementations.map(impl => ({ + file: impl.fileName, + start: scriptInfo.positionToLineOffset(impl.textSpan.start), + end: scriptInfo.positionToLineOffset(ts.textSpanEnd(impl.textSpan)) + })); + } + else { + return implementations + } } private getOccurrences(args: protocol.FileLocationRequestArgs): protocol.OccurrencesResponseItem[] { @@ -1329,7 +1335,10 @@ namespace ts.server { return this.requiredResponse(this.getTypeDefinition(request.arguments)); }, [CommandNames.Implementation]: (request: protocol.Request) => { - return this.requiredResponse(this.getImplementation(request.arguments)); + return this.requiredResponse(this.getImplementation(request.arguments, /*simplifiedResult*/ true)); + }, + [CommandNames.ImplementationFull]: (request: protocol.Request) => { + return this.requiredResponse(this.getImplementation(request.arguments, /*simplifiedResult*/ false)); }, [CommandNames.References]: (request: protocol.FileLocationRequest) => { return this.requiredResponse(this.getReferences(request.arguments, /*simplifiedResult*/ true)); From 1931ece8558ef0995fa72865bd0430df1d782d6d Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 30 Sep 2016 16:41:00 -0700 Subject: [PATCH 2/2] linter --- src/server/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/session.ts b/src/server/session.ts index 265dd8ed348..d076d5deb6d 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -438,7 +438,7 @@ namespace ts.server { })); } else { - return implementations + return implementations; } }