From c66571b273e46769f33ad379801ff05c9c92f07f Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Wed, 25 Mar 2015 12:31:59 +0100 Subject: [PATCH] Integrated pull request feedback --- src/server/client.ts | 30 ++++++++++++++++++- src/server/protocol.d.ts | 10 +++---- src/server/session.ts | 2 +- tests/cases/fourslash/server/signatureHelp.ts | 16 ++++++++++ 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 tests/cases/fourslash/server/signatureHelp.ts diff --git a/src/server/client.ts b/src/server/client.ts index 07c742db4f8..c66bc90ead0 100644 --- a/src/server/client.ts +++ b/src/server/client.ts @@ -428,7 +428,35 @@ module ts.server { } getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems { - throw new Error("Not Implemented Yet."); + var lineOffset = this.positionToOneBasedLineOffset(fileName, position); + var args: protocol.SignatureHelpRequestArgs = { + file: fileName, + line: lineOffset.line, + offset: lineOffset.offset + }; + + var request = this.processRequest(CommandNames.SignatureHelp, args); + var response = this.processResponse(request); + + if (!response.body) { + return undefined; + } + var helpItems: protocol.SignatureHelpItems = response.body; + var span = helpItems.applicableSpan; + var start = this.lineOffsetToPosition(fileName, span.start); + var end = this.lineOffsetToPosition(fileName, span.end); + + var result: SignatureHelpItems = { + items: helpItems.items, + applicableSpan: { + start: start, + length: end - start + }, + selectedItemIndex: helpItems.selectedItemIndex, + argumentIndex: helpItems.argumentIndex, + argumentCount: helpItems.argumentCount, + } + return result; } getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[] { diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts index 5771859d99a..cad008c3a73 100644 --- a/src/server/protocol.d.ts +++ b/src/server/protocol.d.ts @@ -644,7 +644,7 @@ declare module ts.server.protocol { separatorDisplayParts: SymbolDisplayPart[]; /** - * The signatiure helps items for the parameters. + * The signature helps items for the parameters. */ parameters: SignatureHelpParameter[]; @@ -655,17 +655,17 @@ declare module ts.server.protocol { } /** - * Signation help items found in the response of a signature help request. + * Signature help items found in the response of a signature help request. */ export interface SignatureHelpItems { /** - * The signaure help items. + * The signature help items. */ items: SignatureHelpItem[]; /** - * @steveluc + * The span for which signature help should appear on a signature */ applicableSpan: TextSpan; @@ -680,7 +680,7 @@ declare module ts.server.protocol { argumentIndex: number; /** - * The argument counts + * The argument count */ argumentCount: number; } diff --git a/src/server/session.ts b/src/server/session.ts index 05170c20ba0..17511c75b50 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -593,7 +593,7 @@ module ts.server { } var span = helpItems.applicableSpan; - var result:protocol.SignatureHelpItems = { + var result: protocol.SignatureHelpItems = { items: helpItems.items, applicableSpan: { start: compilerService.host.positionToLineOffset(file, span.start), diff --git a/tests/cases/fourslash/server/signatureHelp.ts b/tests/cases/fourslash/server/signatureHelp.ts new file mode 100644 index 00000000000..294df367f07 --- /dev/null +++ b/tests/cases/fourslash/server/signatureHelp.ts @@ -0,0 +1,16 @@ +/// + +////function foo(data: number) { +////} +//// +////function bar { +//// foo(/*1*/) +////} + +goTo.marker('1'); +verify.signatureHelpPresent(); +verify.signatureHelpCountIs(1); +verify.signatureHelpArgumentCountIs(0); + +verify.currentSignatureParameterCountIs(1); +verify.currentSignatureHelpDocCommentIs(''); \ No newline at end of file