From 520106ebff368e82b9acecc9c0b3d428e06b2756 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 30 Nov 2018 15:43:48 -0800 Subject: [PATCH] Move signature help context to stable api Fixes #54972 --- src/vs/vscode.d.ts | 71 ++++++++++++++++++++++++++++++++++++- src/vs/vscode.proposed.d.ts | 66 ---------------------------------- 2 files changed, 70 insertions(+), 67 deletions(-) diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 189047e639a..d8990e049a8 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3123,6 +3123,53 @@ declare module 'vscode' { activeParameter: number; } + /** + * How a [`SignatureHelpProvider`](#SignatureHelpProvider) was triggered + */ + export enum SignatureHelpTriggerReason { + /** + * Signature help was invoked manually by the user or by a command. + */ + Invoke = 1, + + /** + * Signature help was triggered by a trigger character. + */ + TriggerCharacter = 2, + + /** + * Signature help was triggered by the cursor moving or by the document content changing. + */ + ContentChange = 3, + } + + /** + * Additional information about the context in which a + * [`SignatureHelpProvider`](#SignatureHelpProvider.provideSignatureHelp) was triggered. + */ + export interface SignatureHelpContext { + /** + * Action that caused signature help to be triggered. + */ + readonly triggerReason: SignatureHelpTriggerReason; + + /** + * Character that caused signature help to be triggered. + * + * This is `undefined` when signature help is not triggered by typing, such as when manually invoking + * signature help or when moving the cursor. + */ + readonly triggerCharacter?: string; + + /** + * Whether or not signature help was previously showing when triggered. + * + * Retriggers occur when the signature help is already active and can be caused by typing a trigger character + * or by a cursor move. + */ + readonly isRetrigger: boolean; + } + /** * The signature help provider interface defines the contract between extensions and * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature. @@ -3135,10 +3182,30 @@ declare module 'vscode' { * @param document The document in which the command was invoked. * @param position The position at which the command was invoked. * @param token A cancellation token. + * @param context Information about how signature help was triggered. + * * @return Signature help or a thenable that resolves to such. The lack of a result can be * signaled by returning `undefined` or `null`. */ - provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken): ProviderResult; + provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult; + } + + /** + * Metadata about a registered [`SignatureHelpProvider`](#SignatureHelpProvider). + */ + export interface SignatureHelpProviderMetadata { + /** + * List of characters that trigger signature help. + */ + readonly triggerCharacters: ReadonlyArray; + + /** + * List of characters that re-trigger signature help. + * + * These trigger characters are only active when signature help is alread showing. All trigger characters + * are also counted as re-trigger characters. + */ + readonly retriggerCharacters: ReadonlyArray; } /** @@ -7925,9 +7992,11 @@ declare module 'vscode' { * @param selector A selector that defines the documents this provider is applicable to. * @param provider A signature help provider. * @param triggerCharacters Trigger signature help when the user types one of the characters, like `,` or `(`. + * @param metadata Information about the provider. * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ export function registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; + export function registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, metadata: SignatureHelpProviderMetadata): Disposable; /** * Register a document link provider. diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 6e0cb743475..386afb912b2 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1060,72 +1060,6 @@ declare module 'vscode' { } //#endregion - //#region Signature Help - /** - * How a [Signature provider](#SignatureHelpProvider) was triggered - */ - export enum SignatureHelpTriggerReason { - /** - * Signature help was invoked manually by the user or by a command. - */ - Invoke = 1, - - /** - * Signature help was triggered by a trigger character. - */ - TriggerCharacter = 2, - - /** - * Signature help was triggered by the cursor moving or by the document content changing. - */ - ContentChange = 3, - } - - /** - * Contains additional information about the context in which a - * [signature help provider](#SignatureHelpProvider.provideSignatureHelp) is triggered. - */ - export interface SignatureHelpContext { - /** - * Action that caused signature help to be requested. - */ - readonly triggerReason: SignatureHelpTriggerReason; - - /** - * Character that caused signature help to be requested. - * - * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help - * or when moving the cursor. - */ - readonly triggerCharacter?: string; - - /** - * Whether or not signature help was previously showing when triggered. - * - * Retriggers occur when the signature help is already active and can be caused by typing a trigger character - * or by a cursor move. - */ - readonly isRetrigger: boolean; - } - - export interface SignatureHelpProvider { - provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult; - } - - export interface SignatureHelpProviderMetadata { - readonly triggerCharacters: ReadonlyArray; - readonly retriggerCharacters: ReadonlyArray; - } - - namespace languages { - export function registerSignatureHelpProvider( - selector: DocumentSelector, - provider: SignatureHelpProvider, - metadata: SignatureHelpProviderMetadata - ): Disposable; - } - //#endregion - //#region Alex - OnEnter enhancement export interface OnEnterRule { /** -- GitLab