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 {
|
export class SignatureHelpAdapter extends Adapter implements languages.SignatureHelpProvider {
|
||||||
public signatureHelpTriggerCharacters = ['(', ','];
|
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(
|
public async provideSignatureHelp(
|
||||||
model: editor.ITextModel,
|
model: editor.ITextModel,
|
||||||
position: Position,
|
position: Position,
|
||||||
token: CancellationToken
|
token: CancellationToken,
|
||||||
|
context: languages.SignatureHelpContext
|
||||||
): Promise<languages.SignatureHelpResult | undefined> {
|
): Promise<languages.SignatureHelpResult | undefined> {
|
||||||
const resource = model.uri;
|
const resource = model.uri;
|
||||||
const offset = model.getOffsetAt(position);
|
const offset = model.getOffsetAt(position);
|
||||||
const worker = await this._worker(resource);
|
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()) {
|
if (!info || model.isDisposed()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -340,7 +340,7 @@ export interface TypeScriptWorker {
|
||||||
* Get signature help items for the item at the given file and position.
|
* Get signature help items for the item at the given file and position.
|
||||||
* @returns `Promise<typescript.SignatureHelpItems | undefined>`
|
* @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.
|
* 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(
|
async getSignatureHelpItems(
|
||||||
fileName: string,
|
fileName: string,
|
||||||
position: number
|
position: number,
|
||||||
|
options: ts.SignatureHelpItemsOptions | undefined
|
||||||
): Promise<ts.SignatureHelpItems | undefined> {
|
): Promise<ts.SignatureHelpItems | undefined> {
|
||||||
return this._languageService.getSignatureHelpItems(fileName, position, undefined);
|
return this._languageService.getSignatureHelpItems(fileName, position, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
async getQuickInfoAtPosition(
|
async getQuickInfoAtPosition(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue