Got sig help working in the template head.
This commit is contained in:
parent
4bf023982c
commit
64960cf873
|
@ -173,7 +173,7 @@ module ts.SignatureHelp {
|
||||||
export interface ArgumentListInfo {
|
export interface ArgumentListInfo {
|
||||||
kind: ArgumentListKind;
|
kind: ArgumentListKind;
|
||||||
invocation: CallLikeExpression;
|
invocation: CallLikeExpression;
|
||||||
arguments: Node | NodeArray<TemplateSpan>;
|
argumentRange: TextRange;
|
||||||
argumentIndex?: number;
|
argumentIndex?: number;
|
||||||
argumentCount: number;
|
argumentCount: number;
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ module ts.SignatureHelp {
|
||||||
return {
|
return {
|
||||||
kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments,
|
kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments,
|
||||||
invocation: callExpression,
|
invocation: callExpression,
|
||||||
arguments: list,
|
argumentRange: list,
|
||||||
argumentIndex: 0,
|
argumentIndex: 0,
|
||||||
argumentCount: getCommaBasedArgCount(list)
|
argumentCount: getCommaBasedArgCount(list)
|
||||||
};
|
};
|
||||||
|
@ -269,22 +269,20 @@ module ts.SignatureHelp {
|
||||||
return {
|
return {
|
||||||
kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments,
|
kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments,
|
||||||
invocation: callExpression,
|
invocation: callExpression,
|
||||||
arguments: list,
|
argumentRange: list,
|
||||||
argumentIndex: argumentIndex,
|
argumentIndex: argumentIndex,
|
||||||
argumentCount: getCommaBasedArgCount(list)
|
argumentCount: getCommaBasedArgCount(list)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (node.parent.kind === SyntaxKind.TemplateExpression && node.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) {
|
else if (node.parent.kind === SyntaxKind.TemplateExpression && node.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) {
|
||||||
// TODO (drosen): Can't get sig help to trigger within the template head itself; only when directly to the right.
|
|
||||||
// Also, need to ensure that this works on NoSubstitutionTemplateExpressions when unterminated.
|
|
||||||
Debug.assert(node.kind === SyntaxKind.TemplateHead, "Expected 'TemplateHead' as token.");
|
Debug.assert(node.kind === SyntaxKind.TemplateHead, "Expected 'TemplateHead' as token.");
|
||||||
|
|
||||||
var templateExpression = <TemplateExpression>node.parent;
|
var templateExpression = <TemplateExpression>node.parent;
|
||||||
var tagExpression = <TaggedTemplateExpression>templateExpression.parent;
|
var tagExpression = <TaggedTemplateExpression>templateExpression.parent;
|
||||||
|
|
||||||
// argumentIndex is 1 to adjust for the TemplateStringsArray
|
// argumentIndex is 1 to adjust for the TemplateStringsArray
|
||||||
return getArgumentListInfoForTemplate(tagExpression, templateExpression.templateSpans, /*argumentIndex*/ 1);
|
return getArgumentListInfoForTemplate(tagExpression, /*argumentIndex*/ 1);
|
||||||
}
|
}
|
||||||
else if (node.parent.kind === SyntaxKind.TemplateSpan && node.parent.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) {
|
else if (node.parent.kind === SyntaxKind.TemplateSpan && node.parent.parent.parent.kind === SyntaxKind.TaggedTemplateExpression) {
|
||||||
var templateSpan = <TemplateSpan>node.parent;
|
var templateSpan = <TemplateSpan>node.parent;
|
||||||
|
@ -297,13 +295,13 @@ module ts.SignatureHelp {
|
||||||
var spanIndex = templateExpression.templateSpans.indexOf(templateSpan);
|
var spanIndex = templateExpression.templateSpans.indexOf(templateSpan);
|
||||||
var adjustedIndex = isTemplateLiteralKind(node.kind) ? spanIndex + 2 : spanIndex + 1
|
var adjustedIndex = isTemplateLiteralKind(node.kind) ? spanIndex + 2 : spanIndex + 1
|
||||||
|
|
||||||
return getArgumentListInfoForTemplate(tagExpression, templateExpression.templateSpans, adjustedIndex);
|
return getArgumentListInfoForTemplate(tagExpression, adjustedIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getArgumentListInfoForTemplate(tagExpression: TaggedTemplateExpression, spans: NodeArray<TemplateSpan>, argumentIndex: number): ArgumentListInfo {
|
function getArgumentListInfoForTemplate(tagExpression: TaggedTemplateExpression, argumentIndex: number): ArgumentListInfo {
|
||||||
var argumentCount = tagExpression.template.kind === SyntaxKind.NoSubstitutionTemplateLiteral
|
var argumentCount = tagExpression.template.kind === SyntaxKind.NoSubstitutionTemplateLiteral
|
||||||
? 1
|
? 1
|
||||||
: (<TemplateExpression>tagExpression.template).templateSpans.length + 1;
|
: (<TemplateExpression>tagExpression.template).templateSpans.length + 1;
|
||||||
|
@ -311,7 +309,7 @@ module ts.SignatureHelp {
|
||||||
return {
|
return {
|
||||||
kind: ArgumentListKind.TaggedTemplateArguments,
|
kind: ArgumentListKind.TaggedTemplateArguments,
|
||||||
invocation: tagExpression,
|
invocation: tagExpression,
|
||||||
arguments: spans,
|
argumentRange: tagExpression.template,
|
||||||
argumentIndex: argumentIndex,
|
argumentIndex: argumentIndex,
|
||||||
argumentCount: argumentCount
|
argumentCount: argumentCount
|
||||||
};
|
};
|
||||||
|
@ -383,7 +381,7 @@ module ts.SignatureHelp {
|
||||||
}
|
}
|
||||||
|
|
||||||
function createSignatureHelpItems(candidates: Signature[], bestSignature: Signature, argumentListInfo: ArgumentListInfo): SignatureHelpItems {
|
function createSignatureHelpItems(candidates: Signature[], bestSignature: Signature, argumentListInfo: ArgumentListInfo): SignatureHelpItems {
|
||||||
var argumentsList = argumentListInfo.arguments;
|
var argumentsList = argumentListInfo.argumentRange;
|
||||||
var isTypeParameterList = argumentListInfo.kind === ArgumentListKind.TypeArguments;
|
var isTypeParameterList = argumentListInfo.kind === ArgumentListKind.TypeArguments;
|
||||||
|
|
||||||
var invocation = argumentListInfo.invocation;
|
var invocation = argumentListInfo.invocation;
|
||||||
|
|
Loading…
Reference in a new issue