/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/124024 @hediet export namespace languages { /** * Registers an inline completion provider. * * Multiple providers can be registered for a language. In that case providers are asked in * parallel and the results are merged. A failing provider (rejected promise or exception) will * not cause a failure of the whole operation. * * @param selector A selector that defines the documents this provider is applicable to. * @param provider An inline completion provider. * @param metadata Metadata about the provider. * @return A {@link Disposable} that unregisters this provider when being disposed. */ export function registerInlineCompletionItemProvider(selector: DocumentSelector, provider: InlineCompletionItemProvider, metadata: InlineCompletionItemProviderMetadata): Disposable; } export interface InlineCompletionItem { /** * If set to `true`, unopened closing brackets are removed and unclosed opening brackets are closed. * Defaults to `false`. */ completeBracketPairs?: boolean; warning?: InlineCompletionWarning; /** If set to `true`, this item is treated as inline edit. */ isInlineEdit?: boolean; /** * A range specifying when the edit can be shown based on the cursor position. * If the cursor is within this range, the inline edit can be displayed. */ showRange?: Range; showInlineEditMenu?: boolean; action?: Command; } export interface InlineCompletionWarning { message: MarkdownString | string; icon?: ThemeIcon; } export interface InlineCompletionItemProviderMetadata { /** * Specifies a list of extension ids that this provider yields to if they return a result. * If some inline completion provider registered by such an extension returns a result, this provider is not asked. */ yieldTo?: string[]; debounceDelayMs?: number; displayName?: string; } export interface InlineCompletionItemProvider { /** * @param completionItem The completion item that was shown. * @param updatedInsertText The actual insert text (after brackets were fixed). */ handleDidShowCompletionItem?(completionItem: InlineCompletionItem, updatedInsertText: string): void; /** * @param completionItem The completion item that was rejected. */ handleDidRejectCompletionItem?(completionItem: InlineCompletionItem): void; /** * Is called when an inline completion item was accepted partially. * @param acceptedLength The length of the substring of the inline completion that was accepted already. * @deprecated Use `handleDidPartiallyAcceptCompletionItem` with `PartialAcceptInfo` instead. */ handleDidPartiallyAcceptCompletionItem?(completionItem: InlineCompletionItem, acceptedLength: number): void; /** * Is called when an inline completion item was accepted partially. * @param info Additional info for the partial accepted trigger. */ handleDidPartiallyAcceptCompletionItem?(completionItem: InlineCompletionItem, info: PartialAcceptInfo): void; provideInlineEditsForRange?(document: TextDocument, range: Range, context: InlineCompletionContext, token: CancellationToken): ProviderResult; readonly debounceDelayMs?: number; } export interface InlineCompletionContext { readonly userPrompt?: string; readonly requestUuid?: string; } export interface PartialAcceptInfo { kind: PartialAcceptTriggerKind; /** * The length of the substring of the provided inline completion text that was accepted already. */ acceptedLength: number; } export enum PartialAcceptTriggerKind { Unknown = 0, Word = 1, Line = 2, Suggest = 3, } // When finalizing `commands`, make sure to add a corresponding constructor parameter. export interface InlineCompletionList { /** * A list of commands associated with the inline completions of this list. */ commands?: Command[]; /** * When set and the user types a suggestion without derivating from it, the inline suggestion is not updated. * Defaults to false (might change). */ enableForwardStability?: boolean; } }