Fixes microsoft/monaco-editor#2325: Funnel SignatureHelpContext to TypeScript

pull/2748/head
Alexandru Dima 4 years ago
parent 5a17ea5a5d
commit c9255aa6eb
No known key found for this signature in database
GPG Key ID: 6E58D7B045760DA0

@ -538,15 +538,42 @@ function tagToString(tag: ts.JSDocTagInfo): string {
export class SignatureHelpAdapter extends Adapter implements languages.SignatureHelpProvider {
public signatureHelpTriggerCharacters = ['(', ','];
private static _toSignatureHelpTriggerReason(
context: languages.SignatureHelpContext
): ts.SignatureHelpTriggerReason {
switch (context.triggerKind) {
case languages.SignatureHelpTriggerKind.TriggerCharacter:
if (context.triggerCharacter) {
if (context.isRetrigger) {
return { kind: 'retrigger', triggerCharacter: context.triggerCharacter as any };
} else {
return { kind: 'characterTyped', triggerCharacter: context.triggerCharacter as any };
}
} else {
return { kind: 'invoked' };
}
case languages.SignatureHelpTriggerKind.ContentChange:
return context.isRetrigger ? { kind: 'retrigger' } : { kind: 'invoked' };
case languages.SignatureHelpTriggerKind.Invoke:
default:
return { kind: 'invoked' };
}
}
public async provideSignatureHelp(
model: editor.ITextModel,
position: Position,
token: CancellationToken
token: CancellationToken,
context: languages.SignatureHelpContext
): Promise<languages.SignatureHelpResult | undefined> {
const resource = model.uri;
const offset = model.getOffsetAt(position);
const worker = await this._worker(resource);
const info = await worker.getSignatureHelpItems(resource.toString(), offset);
const info = await worker.getSignatureHelpItems(resource.toString(), offset, {
triggerReason: SignatureHelpAdapter._toSignatureHelpTriggerReason(context)
});
if (!info || model.isDisposed()) {
return;

@ -340,7 +340,7 @@ export interface TypeScriptWorker {
* Get signature help items for the item at the given file and position.
* @returns `Promise<typescript.SignatureHelpItems | undefined>`
*/
getSignatureHelpItems(fileName: string, position: number): Promise<any | undefined>;
getSignatureHelpItems(fileName: string, position: number, options: any): Promise<any | undefined>;
/**
* Get quick info for the item at the given position in the file.

@ -215,9 +215,10 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, ITypeScriptWork
async getSignatureHelpItems(
fileName: string,
position: number
position: number,
options: ts.SignatureHelpItemsOptions | undefined
): Promise<ts.SignatureHelpItems | undefined> {
return this._languageService.getSignatureHelpItems(fileName, position, undefined);
return this._languageService.getSignatureHelpItems(fileName, position, options);
}
async getQuickInfoAtPosition(

Loading…
Cancel
Save