diff --git a/extensions/typescript-language-features/src/features/signatureHelp.ts b/extensions/typescript-language-features/src/features/signatureHelp.ts index 26a68e95057..bf1e380eb31 100644 --- a/extensions/typescript-language-features/src/features/signatureHelp.ts +++ b/extensions/typescript-language-features/src/features/signatureHelp.ts @@ -60,12 +60,26 @@ class TypeScriptSignatureHelpProvider implements vscode.SignatureHelpProvider { Previewer.plain(item.prefixDisplayParts), Previewer.markdownDocumentation(item.documentation, item.tags.filter(x => x.name !== 'param'))); - signature.parameters = item.parameters.map(p => - new vscode.ParameterInformation( - Previewer.plain(p.displayParts), - Previewer.markdownDocumentation(p.documentation, []))); + let textIndex = signature.label.length; + const separatorLabel = Previewer.plain(item.separatorDisplayParts); + for (let i = 0; i < item.parameters.length; ++i) { + const parameter = item.parameters[i]; + const label = Previewer.plain(parameter.displayParts); + + signature.parameters.push( + new vscode.ParameterInformation( + [textIndex, textIndex + label.length], + Previewer.markdownDocumentation(parameter.documentation, []))); + + textIndex += label.length; + signature.label += label; + + if (i !== item.parameters.length - 1) { + signature.label += separatorLabel; + textIndex += separatorLabel.length; + } + } - signature.label += signature.parameters.map(parameter => parameter.label).join(Previewer.plain(item.separatorDisplayParts)); signature.label += Previewer.plain(item.suffixDisplayParts); return signature; }