Use label text indexes to mark active paramter for js/ts

Fixes #65513
This commit is contained in:
Matt Bierner
2019-01-02 14:53:21 -08:00
parent cba84fba5e
commit 3e7bb120c7

View File

@@ -60,12 +60,26 @@ class TypeScriptSignatureHelpProvider implements vscode.SignatureHelpProvider {
Previewer.plain(item.prefixDisplayParts), Previewer.plain(item.prefixDisplayParts),
Previewer.markdownDocumentation(item.documentation, item.tags.filter(x => x.name !== 'param'))); Previewer.markdownDocumentation(item.documentation, item.tags.filter(x => x.name !== 'param')));
signature.parameters = item.parameters.map(p => let textIndex = signature.label.length;
new vscode.ParameterInformation( const separatorLabel = Previewer.plain(item.separatorDisplayParts);
Previewer.plain(p.displayParts), for (let i = 0; i < item.parameters.length; ++i) {
Previewer.markdownDocumentation(p.documentation, []))); 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); signature.label += Previewer.plain(item.suffixDisplayParts);
return signature; return signature;
} }