mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-23 00:22:56 +01:00
Fixes microsoft/monaco-editor#2325: Funnel SignatureHelpContext to TypeScript
This commit is contained in:
parent
5a17ea5a5d
commit
c9255aa6eb
3 changed files with 33 additions and 5 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue