VS Code API

VS Code API is a set of JavaScript APIs that you can invoke in your Visual Studio Code extension. This page lists all VS Code APIs available to extension authors.

API namespaces and classes

This listing is compiled from the vscode.d.ts file from the VS Code repository.

authentication

Namespace for authentication.

Events

An Event which fires when the authentication sessions of an authentication provider have been added, removed, or changed.

Functions

Get all accounts that the user is logged in to for the specified provider. Use this paired with getSession in order to get an authentication session for a specific account.

Currently, there are only two authentication providers that are contributed from built in extensions to the editor that implement GitHub and Microsoft authentication: their providerId's are 'github' and 'microsoft'.

Note: Getting accounts does not imply that your extension has access to that account or its authentication sessions. You can verify access to the account by calling getSession.

ParameterDescription
providerId: string

The id of the provider to use

ReturnsDescription
Thenable<readonly AuthenticationSessionAccountInformation[]>

A thenable that resolves to a readonly array of authentication accounts.

Get an authentication session matching the desired scopes or satisfying the WWW-Authenticate request. Rejects if a provider with providerId is not registered, or if the user does not consent to sharing authentication information with the extension. If there are multiple sessions with the same scopes, the user will be shown a quickpick to select which account they would like to use.

Built-in auth providers include:

  • 'github' - For GitHub.com
  • 'microsoft' For both personal & organizational Microsoft accounts
  • (less common) 'github-enterprise' - for alternative GitHub hostings, GHE.com, GitHub Enterprise Server
  • (less common) 'microsoft-sovereign-cloud' - for alternative Microsoft clouds
ParameterDescription
providerId: string

The id of the provider to use

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

A scope list of permissions requested or a WWW-Authenticate request. These are dependent on the authentication provider.

options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions}
ReturnsDescription
Thenable<AuthenticationSession>

A thenable that resolves to an authentication session

Get an authentication session matching the desired scopes or request. Rejects if a provider with providerId is not registered, or if the user does not consent to sharing authentication information with the extension. If there are multiple sessions with the same scopes, the user will be shown a quickpick to select which account they would like to use.

Built-in auth providers include:

  • 'github' - For GitHub.com
  • 'microsoft' For both personal & organizational Microsoft accounts
  • (less common) 'github-enterprise' - for alternative GitHub hostings, GHE.com, GitHub Enterprise Server
  • (less common) 'microsoft-sovereign-cloud' - for alternative Microsoft clouds
ParameterDescription
providerId: string

The id of the provider to use

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

A scope list of permissions requested or a WWW-Authenticate request. These are dependent on the authentication provider.

options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}
ReturnsDescription
Thenable<AuthenticationSession>

A thenable that resolves to an authentication session

Get an authentication session matching the desired scopes or request. Rejects if a provider with providerId is not registered, or if the user does not consent to sharing authentication information with the extension. If there are multiple sessions with the same scopes, the user will be shown a quickpick to select which account they would like to use.

Built-in auth providers include:

  • 'github' - For GitHub.com
  • 'microsoft' For both personal & organizational Microsoft accounts
  • (less common) 'github-enterprise' - for alternative GitHub hostings, GHE.com, GitHub Enterprise Server
  • (less common) 'microsoft-sovereign-cloud' - for alternative Microsoft clouds
ParameterDescription
providerId: string

The id of the provider to use

scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest

A scope list of permissions requested or a WWW-Authenticate request. These are dependent on the authentication provider.

options?: AuthenticationGetSessionOptions
ReturnsDescription
Thenable<AuthenticationSession | undefined>

A thenable that resolves to an authentication session or undefined if a silent flow was used and no session was found

Register an authentication provider.

There can only be one provider per id and an error is being thrown when an id has already been used by another provider. Ids are case-sensitive.

ParameterDescription
id: string

The unique identifier of the provider.

label: string

The human-readable name of the provider.

provider: AuthenticationProvider

The authentication provider provider.

options?: AuthenticationProviderOptions

Additional options for the provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

chat

Namespace for chat functionality. Users interact with chat participants by sending messages to them in the chat view. Chat participants can respond with markdown or other types of content via the ChatResponseStream.

Functions

Create a new chat participant instance.

ParameterDescription
id: string

A unique identifier for the participant.

handler: ChatRequestHandler

A request handler for the participant.

ReturnsDescription
ChatParticipant

A new chat participant

commands

Namespace for dealing with commands. In short, a command is a function with a unique identifier. The function is sometimes also called command handler.

Commands can be added to the editor using the registerCommand and registerTextEditorCommand functions. Commands can be executed manually or from a UI gesture. Those are:

  • palette - Use the commands-section in package.json to make a command show in the command palette.
  • keybinding - Use the keybindings-section in package.json to enable keybindings for your extension.

Commands from other extensions and from the editor itself are accessible to an extension. However, when invoking an editor command not all argument types are supported.

This is a sample that registers a command handler and adds an entry for that command to the palette. First register a command handler with the identifier extension.sayHello.

commands.registerCommand('extension.sayHello', () => {
  window.showInformationMessage('Hello World!');
});

Second, bind the command identifier to a title under which it will show in the palette (package.json).

{
  "contributes": {
    "commands": [
      {
        "command": "extension.sayHello",
        "title": "Hello World"
      }
    ]
  }
}

Functions

Executes the command denoted by the given command identifier.

  • Note 1: When executing an editor command not all types are allowed to be passed as arguments. Allowed are the primitive types string, boolean, number, undefined, and null, as well as Position, Range, Uri and Location.
  • Note 2: There are no restrictions when executing commands that have been contributed by extensions.
ParameterDescription
command: string

Identifier of the command to execute.

...rest: any[]

Parameters passed to the command function.

ReturnsDescription
Thenable<T>

A thenable that resolves to the returned value of the given command. Returns undefined when the command handler function doesn't return anything.

Retrieve the list of all available commands. Commands starting with an underscore are treated as internal commands.

ParameterDescription
filterInternal?: boolean

Set true to not see internal commands (starting with an underscore)

ReturnsDescription
Thenable<string[]>

Thenable that resolves to a list of command ids.

Registers a command that can be invoked via a keyboard shortcut, a menu item, an action, or directly.

Registering a command with an existing command identifier twice will cause an error.

ParameterDescription
command: string

A unique identifier for the command.

callback: (args: any[]) => any

A command handler function.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
Disposable

Disposable which unregisters this command on disposal.

Registers a text editor command that can be invoked via a keyboard shortcut, a menu item, an action, or directly.

Text editor commands are different from ordinary commands as they only execute when there is an active editor when the command is called. Also, the command handler of an editor command has access to the active editor and to an edit-builder. Note that the edit-builder is only valid while the callback executes.

ParameterDescription
command: string

A unique identifier for the command.

callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void

A command handler function with access to an editor and an edit.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
Disposable

Disposable which unregisters this command on disposal.

comments

Functions

Creates a new comment controller instance.

ParameterDescription
id: string

An id for the comment controller.

label: string

A human-readable string for the comment controller.

ReturnsDescription
CommentController

An instance of comment controller.

debug

Namespace for debug functionality.

Variables

The currently active debug console. If no debug session is active, output sent to the debug console is not shown.

The currently active debug session or undefined. The active debug session is the one represented by the debug action floating window or the one currently shown in the drop down menu of the debug action floating window. If no debug session is active, the value is undefined.

The currently focused thread or stack frame, or undefined if no thread or stack is focused. A thread can be focused any time there is an active debug session, while a stack frame can only be focused when a session is paused and the call stack has been retrieved.

List of breakpoints.

Events

An Event which fires when the active debug session has changed. Note that the event also fires when the active debug session changes to undefined.

An event which fires when the debug.activeStackItem has changed.

An Event that is emitted when the set of breakpoints is added, removed, or changed.

An Event which fires when a custom DAP event is received from the debug session.

An Event which fires when a new debug session has been started.

An Event which fires when a debug session has terminated.

Functions

Add breakpoints.

ParameterDescription
breakpoints: readonly Breakpoint[]

The breakpoints to add.

ReturnsDescription
void

Converts a "Source" descriptor object received via the Debug Adapter Protocol into a Uri that can be used to load its contents. If the source descriptor is based on a path, a file Uri is returned. If the source descriptor uses a reference number, a specific debug Uri (scheme 'debug') is constructed that requires a corresponding ContentProvider and a running debug session

If the "Source" descriptor has insufficient information for creating the Uri, an error is thrown.

ParameterDescription
source: DebugProtocolSource

An object conforming to the Source type defined in the Debug Adapter Protocol.

session?: DebugSession

An optional debug session that will be used when the source descriptor uses a reference number to load the contents from an active debug session.

ReturnsDescription
Uri

A uri that can be used to load the contents of the source.

Register a debug adapter descriptor factory for a specific debug type. An extension is only allowed to register a DebugAdapterDescriptorFactory for the debug type(s) defined by the extension. Otherwise an error is thrown. Registering more than one DebugAdapterDescriptorFactory for a debug type results in an error.

ParameterDescription
debugType: string

The debug type for which the factory is registered.

factory: DebugAdapterDescriptorFactory
ReturnsDescription
Disposable

A Disposable that unregisters this factory when being disposed.

Register a debug adapter tracker factory for the given debug type.

ParameterDescription
debugType: string

The debug type for which the factory is registered or '*' for matching all debug types.

factory: DebugAdapterTrackerFactory
ReturnsDescription
Disposable

A Disposable that unregisters this factory when being disposed.

Register a debug configuration provider for a specific debug type. The optional triggerKind can be used to specify when the provideDebugConfigurations method of the provider is triggered. Currently two trigger kinds are possible: with the value Initial (or if no trigger kind argument is given) the provideDebugConfigurations method is used to provide the initial debug configurations to be copied into a newly created launch.json. With the trigger kind Dynamic the provideDebugConfigurations method is used to dynamically determine debug configurations to be presented to the user (in addition to the static configurations from the launch.json). Please note that the triggerKind argument only applies to the provideDebugConfigurations method: so the resolveDebugConfiguration methods are not affected at all. Registering a single provider with resolve methods for different trigger kinds, results in the same resolve methods called multiple times. More than one provider can be registered for the same type.

ParameterDescription
debugType: string

The debug type for which the provider is registered.

provider: DebugConfigurationProvider
triggerKind?: DebugConfigurationProviderTriggerKind

The trigger for which the 'provideDebugConfiguration' method of the provider is registered. If triggerKind is missing, the value DebugConfigurationProviderTriggerKind.Initial is assumed.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Remove breakpoints.

ParameterDescription
breakpoints: readonly Breakpoint[]

The breakpoints to remove.

ReturnsDescription
void

Start debugging by using either a named launch or named compound configuration, or by directly passing a DebugConfiguration. The named configurations are looked up in '.vscode/launch.json' found in the given folder. Before debugging starts, all unsaved files are saved and the launch configurations are brought up-to-date. Folder specific variables used in the configuration (e.g. '${workspaceFolder}') are resolved against the given folder.

ParameterDescription
folder: WorkspaceFolder

The workspace folder for looking up named configurations and resolving variables or undefined for a non-folder setup.

nameOrConfiguration: string | DebugConfiguration

Either the name of a debug or compound configuration or a DebugConfiguration object.

parentSessionOrOptions?: DebugSession | DebugSessionOptions

Debug session options. When passed a parent debug session, assumes options with just this parent session.

ReturnsDescription
Thenable<boolean>

A thenable that resolves when debugging could be successfully started.

Stop the given debug session or stop all debug sessions if session is omitted.

ParameterDescription
session?: DebugSession

The debug session to stop; if omitted all sessions are stopped.

ReturnsDescription
Thenable<void>

A thenable that resolves when the session(s) have been stopped.

env

Namespace describing the environment the editor runs in.

Variables

The hosted location of the application On desktop this is 'desktop' In the web this is the specified embedder i.e. 'github.dev', 'codespaces', or 'web' if the embedder does not provide that information

The application name of the editor, like 'VS Code'.

The application root folder from which the editor is running.

Note that the value is the empty string when running in an environment that has no representation of an application root folder.

The system clipboard.

Indicates whether the application is running in portable mode.

Portable mode is enabled when the application is run from a folder that contains a data directory, allowing for self-contained installations.

Learn more about Portable Mode.

Indicates that this is a fresh install of the application. true if within the first day of installation otherwise false.

Indicates whether the users has telemetry enabled. Can be observed to determine if the extension should send telemetry.

Represents the preferred user-language, like de-CH, fr, or en-US.

The current log level of the editor.

A unique identifier for the computer.

The name of a remote. Defined by extensions, popular samples are wsl for the Windows Subsystem for Linux or ssh-remote for remotes using a secure shell.

Note that the value is undefined when there is no remote extension host but that the value is defined in all extension hosts (local and remote) in case a remote extension host exists. Use Extension.extensionKind to know if a specific extension runs remote or not.

A unique identifier for the current session. Changes each time the editor is started.

The detected default shell for the extension host, this is overridden by the terminal.integrated.defaultProfile setting for the extension host's platform. Note that in environments that do not support a shell the value is the empty string.

The UI kind property indicates from which UI extensions are accessed from. For example, extensions could be accessed from a desktop application or a web browser.

The custom uri scheme the editor registers to in the operating system.

Events

An Event which fires when the log level of the editor changes.

An Event which fires when the default shell changes. This fires with the new shell path.

An Event which fires when the user enabled or disables telemetry. true if the user has enabled telemetry or false if the user has disabled telemetry.

Functions

Resolves a uri to a form that is accessible externally.

http: or https: scheme

Resolves an external uri, such as a http: or https: link, from where the extension is running to a uri to the same resource on the client machine.

This is a no-op if the extension is running on the client machine.

If the extension is running remotely, this function automatically establishes a port forwarding tunnel from the local machine to target on the remote and returns a local uri to the tunnel. The lifetime of the port forwarding tunnel is managed by the editor and the tunnel can be closed by the user.

Note that uris passed through openExternal are automatically resolved and you should not call asExternalUri on them.

vscode.env.uriScheme

Creates a uri that - if opened in a browser (e.g. via openExternal) - will result in a registered UriHandler to trigger.

Extensions should not make any assumptions about the resulting uri and should not alter it in any way. Rather, extensions can e.g. use this uri in an authentication flow, by adding the uri as callback query argument to the server to authenticate to.

Note that if the server decides to add additional query parameters to the uri (e.g. a token or secret), it will appear in the uri that is passed to the UriHandler.

Example of an authentication flow:

vscode.window.registerUriHandler({
  handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
    if (uri.path === '/did-authenticate') {
      console.log(uri.toString());
    }
  }
});

const callableUri = await vscode.env.asExternalUri(
  vscode.Uri.parse(vscode.env.uriScheme + '://my.extension/did-authenticate')
);
await vscode.env.openExternal(callableUri);

Note that extensions should not cache the result of asExternalUri as the resolved uri may become invalid due to a system or user action — for example, in remote cases, a user may close a port forwarding tunnel that was opened by asExternalUri.

Any other scheme

Any other scheme will be handled as if the provided URI is a workspace URI. In that case, the method will return a URI which, when handled, will make the editor open the workspace.

ParameterDescription
target: Uri
ReturnsDescription
Thenable<Uri>

A uri that can be used on the client machine.

Creates a new telemetry logger.

ParameterDescription
sender: TelemetrySender

The telemetry sender that is used by the telemetry logger.

options?: TelemetryLoggerOptions

Options for the telemetry logger.

ReturnsDescription
TelemetryLogger

A new telemetry logger

Opens a link externally using the default application. Depending on the used scheme this can be:

  • a browser (http:, https:)
  • a mail client (mailto:)
  • VSCode itself (vscode: from vscode.env.uriScheme)

Note that showTextDocument is the right way to open a text document inside the editor, not this function.

ParameterDescription
target: Uri

The uri that should be opened.

ReturnsDescription
Thenable<boolean>

A promise indicating if open was successful.

extensions

Namespace for dealing with installed extensions. Extensions are represented by an Extension-interface which enables reflection on them.

Extension writers can provide APIs to other extensions by returning their API public surface from the activate-call.

export function activate(context: vscode.ExtensionContext) {
  let api = {
    sum(a, b) {
      return a + b;
    },
    mul(a, b) {
      return a * b;
    }
  };
  // 'export' public api-surface
  return api;
}

When depending on the API of another extension add an extensionDependencies-entry to package.json, and use the getExtension-function and the exports-property, like below:

let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;

console.log(importedApi.mul(42, 1));

Variables

All extensions currently known to the system.

Events

An event which fires when extensions.all changes. This can happen when extensions are installed, uninstalled, enabled or disabled.

Functions

Get an extension by its full identifier in the form of: publisher.name.

ParameterDescription
extensionId: string

An extension identifier.

ReturnsDescription
Extension<T> | undefined

An extension or undefined.

l10n

Namespace for localization-related functionality in the extension API. To use this properly, you must have l10n defined in your extension manifest and have bundle.l10n..json files. For more information on how to generate bundle.l10n..json files, check out the vscode-l10n repo.

Note: Built-in extensions (for example, Git, TypeScript Language Features, GitHub Authentication) are excluded from the l10n property requirement. In other words, they do not need to specify a l10n in the extension manifest because their translated strings come from Language Packs.

Variables

The bundle of localized strings that have been loaded for the extension. It's undefined if no bundle has been loaded. The bundle is typically not loaded if there was no bundle found or when we are running with the default language.

The URI of the localization bundle that has been loaded for the extension. It's undefined if no bundle has been loaded. The bundle is typically not loaded if there was no bundle found or when we are running with the default language.

Functions

Marks a string for localization. If a localized bundle is available for the language specified by env.language and the bundle has a localized value for this message, then that localized value will be returned (with injected args values for any templated values).

Example

l10n.t('Hello {0}!', 'World');
ParameterDescription
message: string

The message to localize. Supports index templating where strings like {0} and {1} are replaced by the item at that index in the args array.

...args: Array<string | number | boolean>

The arguments to be used in the localized string. The index of the argument is used to match the template placeholder in the localized string.

ReturnsDescription
string

localized string with injected arguments.

Marks a string for localization. If a localized bundle is available for the language specified by env.language and the bundle has a localized value for this message, then that localized value will be returned (with injected args values for any templated values).

Example

l10n.t('Hello {name}', { name: 'Erich' });
ParameterDescription
message: string

The message to localize. Supports named templating where strings like {foo} and {bar} are replaced by the value in the Record for that key (foo, bar, etc).

args: Record<string, string | number | boolean>

The arguments to be used in the localized string. The name of the key in the record is used to match the template placeholder in the localized string.

ReturnsDescription
string

localized string with injected arguments.

Marks a string for localization. If a localized bundle is available for the language specified by env.language and the bundle has a localized value for this message, then that localized value will be returned (with injected args values for any templated values).

ParameterDescription
options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>, comment: string | string[], message: string}

The options to use when localizing the message.

ReturnsDescription
string

localized string with injected arguments.

languages

Namespace for participating in language-specific editor features, like IntelliSense, code actions, diagnostics etc.

Many programming languages exist and there is huge variety in syntaxes, semantics, and paradigms. Despite that, features like automatic word-completion, code navigation, or code checking have become popular across different tools for different programming languages.

The editor provides an API that makes it simple to provide such common features by having all UI and actions already in place and by allowing you to participate by providing data only. For instance, to contribute a hover all you have to do is provide a function that can be called with a TextDocument and a Position returning hover info. The rest, like tracking the mouse, positioning the hover, keeping the hover stable etc. is taken care of by the editor.

languages.registerHoverProvider('javascript', {
  provideHover(document, position, token) {
    return new Hover('I am a hover!');
  }
});

Registration is done using a document selector which is either a language id, like javascript or a more complex filter like { language: 'typescript', scheme: 'file' }. Matching a document against such a selector will result in a score that is used to determine if and how a provider shall be used. When scores are equal the provider that came last wins. For features that allow full arity, like hover, the score is only checked to be >0, for other features, like IntelliSense the score is used for determining the order in which providers are asked to participate.

Events

An Event which fires when the global set of diagnostics changes. This is newly added and removed diagnostics.

Functions

Create a diagnostics collection.

ParameterDescription
name?: string

The name of the collection.

ReturnsDescription
DiagnosticCollection

A new diagnostic collection.

Creates a new language status item.

ParameterDescription
id: string

The identifier of the item.

selector: DocumentSelector

The document selector that defines for what editors the item shows.

ReturnsDescription
LanguageStatusItem

A new language status item.

Get all diagnostics for a given resource.

ParameterDescription
resource: Uri

A resource

ReturnsDescription
Diagnostic[]

An array of diagnostics objects or an empty array.

Get all diagnostics.

ParameterDescription
ReturnsDescription
Array<[Uri, Diagnostic[]]>

An array of uri-diagnostics tuples or an empty array.

Return the identifiers of all known languages.

ParameterDescription
ReturnsDescription
Thenable<string[]>

Promise resolving to an array of identifier strings.

Compute the match between a document selector and a document. Values greater than zero mean the selector matches the document.

A match is computed according to these rules:

  1. When DocumentSelector is an array, compute the match for each contained DocumentFilter or language identifier and take the maximum value.
  2. A string will be desugared to become the language-part of a DocumentFilter, so "fooLang" is like { language: "fooLang" }.
  3. A DocumentFilter will be matched against the document by comparing its parts with the document. The following rules apply:
    1. When the DocumentFilter is empty ({}) the result is 0
    2. When scheme, language, pattern, or notebook are defined but one doesn't match, the result is 0
    3. Matching against * gives a score of 5, matching via equality or via a glob-pattern gives a score of 10
    4. The result is the maximum value of each match

Samples:

// default document from disk (file-scheme)
doc.uri; //'file:///my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript' }, doc); // 10;
match({ language: 'javascript', scheme: 'file' }, doc); // 10;
match('*', doc); // 5
match('fooLang', doc); // 0
match(['fooLang', '*'], doc); // 5

// virtual document, e.g. from git-index
doc.uri; // 'git:/my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript', scheme: 'git' }, doc); // 10;
match('*', doc); // 5

// notebook cell document
doc.uri; // `vscode-notebook-cell:///my/notebook.ipynb#gl65s2pmha`;
doc.languageId; // 'python'
match({ notebookType: 'jupyter-notebook' }, doc); // 10
match({ notebookType: 'fooNotebook', language: 'python' }, doc); // 0
match({ language: 'python' }, doc); // 10
match({ notebookType: '*' }, doc); // 5
ParameterDescription
selector: DocumentSelector

A document selector.

document: TextDocument

A text document.

ReturnsDescription
number

A number >0 when the selector matches and 0 when the selector does not match.

Register a call hierarchy provider.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: CallHierarchyProvider

A call hierarchy provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a code action 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: CodeActionProvider<CodeAction>

A code action provider.

metadata?: CodeActionProviderMetadata

Metadata about the kind of code actions the provider provides.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a code lens 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: CodeLensProvider<CodeLens>

A code lens provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a color 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentColorProvider

A color provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a completion provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and groups of equal score are sequentially asked for completion items. The process stops when one or many providers of a group return a result. A failing provider (rejected promise or exception) will not fail the whole operation.

A completion item provider can be associated with a set of triggerCharacters. When trigger characters are being typed, completions are requested but only from providers that registered the typed character. Because of that trigger characters should be different than word characters, a common trigger character is . to trigger member completions.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: CompletionItemProvider<CompletionItem>

A completion provider.

...triggerCharacters: string[]

Trigger completion when the user types one of the characters.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a declaration 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DeclarationProvider

A declaration provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a definition 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DefinitionProvider

A definition provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Registers a new DocumentDropEditProvider.

Multiple drop providers can be registered for a language. When dropping content into an editor, all registered providers for the editor's language will be invoked based on the mimetypes they handle as specified by their DocumentDropEditProviderMetadata.

Each provider can return one or more DocumentDropEdits. The edits are sorted using the DocumentDropEdit.yieldTo property. By default the first edit will be applied. If there are any additional edits, these will be shown to the user as selectable drop options in the drop widget.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider applies to.

provider: DocumentDropEditProvider<DocumentDropEdit>

A drop provider.

metadata?: DocumentDropEditProviderMetadata

Additional metadata about the provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when disposed of.

Register a formatting provider for a document.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentFormattingEditProvider

A document formatting edit provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a document highlight provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and groups sequentially asked for document highlights. The process stops when a provider returns a non-falsy or non-failure result.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentHighlightProvider

A document highlight provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a document link 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentLinkProvider<DocumentLink>

A document link provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Registers a new DocumentPasteEditProvider.

Multiple providers can be registered for a language. All registered providers for a language will be invoked for copy and paste operations based on their handled mimetypes as specified by the DocumentPasteProviderMetadata.

For copy operations, changes to the DataTransfer made by each provider will be merged into a single DataTransfer that is used to populate the clipboard.

For [DocumentPasteEditProvider.providerDocumentPasteEdits paste operations](#_DocumentPasteEditProvider.providerDocumentPasteEdits paste operations), each provider will be invoked and can return one or more DocumentPasteEdits. The edits are sorted using the DocumentPasteEdit.yieldTo property. By default the first edit will be applied and the rest of the edits will be shown to the user as selectable paste options in the paste widget.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider applies to.

provider: DocumentPasteEditProvider<DocumentPasteEdit>

A paste editor provider.

metadata: DocumentPasteProviderMetadata

Additional metadata about the provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when disposed of.

Register a formatting provider for a document range.

Note: A document range provider is also a document formatter which means there is no need to register a document formatter when also registering a range provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentRangeFormattingEditProvider

A document range formatting edit provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a semantic tokens provider for a document range.

Note: If a document has both a DocumentSemanticTokensProvider and a DocumentRangeSemanticTokensProvider, the range provider will be invoked only initially, for the time in which the full document provider takes to resolve the first request. Once the full document provider resolves the first request, the semantic tokens provided via the range provider will be discarded and from that point forward, only the document provider will be used.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentRangeSemanticTokensProvider

A document range semantic tokens provider.

legend: SemanticTokensLegend
ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a semantic tokens provider for a whole document.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentSemanticTokensProvider

A document semantic tokens provider.

legend: SemanticTokensLegend
ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a document symbol 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: DocumentSymbolProvider

A document symbol provider.

metaData?: DocumentSymbolProviderMetadata

metadata about the provider

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a provider that locates evaluatable expressions in text documents. The editor will evaluate the expression in the active debug session and will show the result in the debug hover.

If multiple providers are registered for a language an arbitrary provider will be used.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: EvaluatableExpressionProvider

An evaluatable expression provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a folding range provider.

Multiple providers can be registered for a language. In that case providers are asked in parallel and the results are merged. If multiple folding ranges start at the same position, only the range of the first registered provider is used. If a folding range overlaps with an other range that has a smaller position, it is also ignored.

A failing provider (rejected promise or exception) will not cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: FoldingRangeProvider

A folding range provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a hover 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: HoverProvider

A hover provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register an implementation 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: ImplementationProvider

An implementation provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a inlay hints 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: InlayHintsProvider<InlayHint>

An inlay hints provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: InlineCompletionItemProvider

An inline completion provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a provider that returns data for the debugger's 'inline value' feature. Whenever the generic debugger has stopped in a source file, providers registered for the language of the file are called to return textual data that will be shown in the editor at the end of lines.

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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: InlineValuesProvider

An inline values provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a linked editing range provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider that has a result is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: LinkedEditingRangeProvider

A linked editing range provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a formatting provider that works on type. The provider is active when the user enables the setting editor.formatOnType.

Multiple providers can be registered for a language. In that case providers are sorted by their score and the best-matching provider is used. Failure of the selected provider will cause a failure of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: OnTypeFormattingEditProvider

An on type formatting edit provider.

firstTriggerCharacter: string

A character on which formatting should be triggered, like }.

...moreTriggerCharacter: string[]

More trigger characters.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a reference 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: ReferenceProvider

A reference provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a rename provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and asked in sequence. The first provider producing a result defines the result of the whole operation.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: RenameProvider

A rename provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a selection range 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: SelectionRangeProvider

A selection range provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a signature help provider.

Multiple providers can be registered for a language. In that case providers are sorted by their score and called sequentially until a provider returns a valid result.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: SignatureHelpProvider

A signature help provider.

...triggerCharacters: string[]

Trigger signature help when the user types one of the characters, like , or (.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: SignatureHelpProvider

A signature help provider.

metadata: SignatureHelpProviderMetadata

Information about the provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a type definition 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.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: TypeDefinitionProvider

A type definition provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a type hierarchy provider.

ParameterDescription
selector: DocumentSelector

A selector that defines the documents this provider is applicable to.

provider: TypeHierarchyProvider

A type hierarchy provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a workspace symbol provider.

Multiple providers can be registered. 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.

ParameterDescription
provider: WorkspaceSymbolProvider<SymbolInformation>

A workspace symbol provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Set a language configuration for a language.

ParameterDescription
language: string

A language identifier like typescript.

configuration: LanguageConfiguration

Language configuration.

ReturnsDescription
Disposable

A Disposable that unsets this configuration.

Set (and change) the language that is associated with the given document.

Note that calling this function will trigger the onDidCloseTextDocument event followed by the onDidOpenTextDocument event.

ParameterDescription
document: TextDocument

The document which language is to be changed

languageId: string

The new language identifier.

ReturnsDescription
Thenable<TextDocument>

A thenable that resolves with the updated document.

lm

Namespace for language model related functionality.

Variables

A list of all available tools that were registered by all extensions using lm.registerTool. They can be called with lm.invokeTool with input that match their declared inputSchema.

Events

An event that is fired when the set of available chat models changes.

Functions

Invoke a tool listed in lm.tools by name with the given input. The input will be validated against the schema declared by the tool

A tool can be invoked by a chat participant, in the context of handling a chat request, or globally by any extension in any custom flow.

In the former case, the caller shall pass the toolInvocationToken, which comes from a chat request. This makes sure the chat UI shows the tool invocation for the correct conversation.

A tool result is an array of text- and prompt-tsx-parts. If the tool caller is using vscode/prompt-tsx, it can incorporate the response parts into its prompt using a ToolResult. If not, the parts can be passed along to the LanguageModelChat via a user message with a LanguageModelToolResultPart.

If a chat participant wants to preserve tool results for requests across multiple turns, it can store tool results in the ChatResult.metadata returned from the handler and retrieve them on the next turn from ChatResponseTurn.result.

ParameterDescription
name: string

The name of the tool to call.

options: LanguageModelToolInvocationOptions<object>

The options to use when invoking the tool.

token?: CancellationToken

A cancellation token. See CancellationTokenSource for how to create one.

ReturnsDescription
Thenable<LanguageModelToolResult>

The result of the tool invocation.

Registers a LanguageModelChatProvider Note: You must also define the language model chat provider via the languageModelChatProviders contribution point in package.json

ParameterDescription
vendor: string

The vendor for this provider. Must be globally unique. An example is copilot or openai.

provider: LanguageModelChatProvider<LanguageModelChatInformation>

The provider to register

ReturnsDescription
Disposable

A disposable that unregisters the provider when disposed

Registers a provider that publishes Model Context Protocol servers for the editor to consume. This allows MCP servers to be dynamically provided to the editor in addition to those the user creates in their configuration files.

Before calling this method, extensions must register the contributes.mcpServerDefinitionProviders extension point with the corresponding id, for example:

    "contributes": {
        "mcpServerDefinitionProviders": [
            {
                "id": "cool-cloud-registry.mcp-servers",
                "label": "Cool Cloud Registry",
            }
        ]
    }

When a new McpServerDefinitionProvider is available, the editor will, by default, automatically invoke it to discover new servers and tools when a chat message is submitted. To enable this flow, extensions should call registerMcpServerDefinitionProvider during activation.

ParameterDescription
id: string

The ID of the provider, which is unique to the extension.

provider: McpServerDefinitionProvider<McpServerDefinition>

The provider to register

ReturnsDescription
Disposable

A disposable that unregisters the provider when disposed.

Register a LanguageModelTool. The tool must also be registered in the package.json languageModelTools contribution point. A registered tool is available in the lm.tools list for any extension to see. But in order for it to be seen by a language model, it must be passed in the list of available tools in LanguageModelChatRequestOptions.tools.

ParameterDescription
name: string
tool: LanguageModelTool<T>
ReturnsDescription
Disposable

A Disposable that unregisters the tool when disposed.

Select chat models by a selector. This can yield multiple or no chat models and extensions must handle these cases, esp. when no chat model exists, gracefully.

const models = await vscode.lm.selectChatModels({ family: 'gpt-3.5-turbo' });
if (models.length > 0) {
    const [first] = models;
    const response = await first.sendRequest(...)
    // ...
} else {
    // NO chat models available
}

A selector can be written to broadly match all models of a given vendor or family, or it can narrowly select one model by ID. Keep in mind that the available set of models will change over time, but also that prompts may perform differently in different models.

Note that extensions can hold on to the results returned by this function and use them later. However, when the onDidChangeChatModels-event is fired the list of chat models might have changed and extensions should re-query.

ParameterDescription
selector?: LanguageModelChatSelector

A chat model selector. When omitted all chat models are returned.

ReturnsDescription
Thenable<LanguageModelChat[]>

An array of chat models, can be empty!

notebooks

Namespace for notebooks.

The notebooks functionality is composed of three loosely coupled components:

  1. NotebookSerializer enable the editor to open, show, and save notebooks
  2. NotebookController own the execution of notebooks, e.g they create output from code cells.
  3. NotebookRenderer present notebook output in the editor. They run in a separate context.

Functions

Creates a new notebook controller.

ParameterDescription
id: string

Identifier of the controller. Must be unique per extension.

notebookType: string

A notebook type for which this controller is for.

label: string

The label of the controller.

handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>

The execute-handler of the controller.

ReturnsDescription
NotebookController

A new notebook controller.

Creates a new messaging instance used to communicate with a specific renderer.

  • Note 1: Extensions can only create renderer that they have defined in their package.json-file
  • Note 2: A renderer only has access to messaging if requiresMessaging is set to always or optional in its notebookRenderer contribution.
ParameterDescription
rendererId: string

The renderer ID to communicate with

ReturnsDescription
NotebookRendererMessaging

A new notebook renderer messaging object.

Register a cell statusbar item provider for the given notebook type.

ParameterDescription
notebookType: string

The notebook type to register for.

provider: NotebookCellStatusBarItemProvider

A cell status bar provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

scm

Namespace for source control management.

Variables

The input box for the last source control created by the extension.

  • deprecated - Use SourceControl.inputBox instead

Functions

Creates a new source control instance.

ParameterDescription
id: string

An id for the source control. Something short, e.g.: git.

label: string

A human-readable string for the source control. E.g.: Git.

rootUri?: Uri

An optional Uri of the root of the source control. E.g.: Uri.parse(workspaceRoot).

ReturnsDescription
SourceControl

An instance of source control.

tasks

Namespace for tasks functionality.

Variables

The currently active task executions or an empty array.

Events

Fires when a task ends.

Fires when the underlying process has ended. This event will not fire for tasks that don't execute an underlying process.

Fires when a task starts.

Fires when the underlying process has been started. This event will not fire for tasks that don't execute an underlying process.

Functions

Executes a task that is managed by the editor. The returned task execution can be used to terminate the task.

  • throws - When running a ShellExecution or a ProcessExecution task in an environment where a new process cannot be started. In such an environment, only CustomExecution tasks can be run.
ParameterDescription
task: Task

the task to execute

ReturnsDescription
Thenable<TaskExecution>

A thenable that resolves to a task execution.

Fetches all tasks available in the systems. This includes tasks from tasks.json files as well as tasks from task providers contributed through extensions.

ParameterDescription
filter?: TaskFilter

Optional filter to select tasks of a certain type or version.

ReturnsDescription
Thenable<Task[]>

A thenable that resolves to an array of tasks.

Register a task provider.

ParameterDescription
type: string

The task kind type this provider is registered for.

provider: TaskProvider<Task>

A task provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

tests

Namespace for testing functionality. Tests are published by registering TestController instances, then adding TestItems. Controllers may also describe how to run tests by creating one or more TestRunProfile instances.

Functions

Creates a new test controller.

ParameterDescription
id: string

Identifier for the controller, must be globally unique.

label: string

A human-readable label for the controller.

ReturnsDescription
TestController

An instance of the TestController.

window

Namespace for dealing with the current window of the editor. That is visible and active editors, as well as, UI elements to show messages, selections, and asking for user input.

Variables

The currently active color theme as configured in the settings. The active theme can be changed via the workbench.colorTheme setting.

The currently active notebook editor or undefined. The active editor is the one that currently has focus or, when none has focus, the one that has changed input most recently.

The currently active terminal or undefined. The active terminal is the one that currently has focus or most recently had focus.

The currently active editor or undefined. The active editor is the one that currently has focus or, when none has focus, the one that has changed input most recently.

Represents the current window's state.

Represents the grid widget within the main editor area

The currently opened terminals or an empty array.

The currently visible notebook editors or an empty array.

The currently visible editors or an empty array.

Events

An Event which fires when the active color theme is changed or has changes.

An Event which fires when the active notebook editor has changed. Note that the event also fires when the active editor changes to undefined.

An Event which fires when the active terminal has changed. Note that the event also fires when the active terminal changes to undefined.

An Event which fires when the active editor has changed. Note that the event also fires when the active editor changes to undefined.

An Event which fires when the notebook editor selections have changed.

An Event which fires when the notebook editor visible ranges have changed.

Fires when shell integration activates or one of its properties changes in a terminal.

An Event which fires when a terminal's state has changed.

An Event which fires when the options of an editor have changed.

An Event which fires when the selection in an editor has changed.

An Event which fires when the view column of an editor has changed.

An Event which fires when the visible ranges of an editor has changed.

An Event which fires when the visible notebook editors has changed.

An Event which fires when the array of visible editors has changed.

An Event which fires when the focus or activity state of the current window changes. The value of the event represents whether the window is focused.

An Event which fires when a terminal is disposed.

This will be fired when a terminal command is ended. This event will fire only when shell integration is activated for the terminal.

An Event which fires when a terminal has been created, either through the createTerminal API or commands.

This will be fired when a terminal command is started. This event will fire only when shell integration is activated for the terminal.

Functions

Creates a InputBox to let the user enter some text input.

Note that in many cases the more convenient window.showInputBox is easier to use. window.createInputBox should be used when window.showInputBox does not offer the required flexibility.

ParameterDescription
ReturnsDescription
InputBox

A new InputBox.

Creates a new output channel with the given name and language id If language id is not provided, then Log is used as default language id.

You can access the visible or active output channel as a text document from visible editors or active editor and use the language id to contribute language features like syntax coloring, code lens etc.,

ParameterDescription
name: string

Human-readable string which will be used to represent the channel in the UI.

languageId?: string

The identifier of the language associated with the channel.

ReturnsDescription
OutputChannel

A new output channel.

Creates a new log output channel with the given name.

ParameterDescription
name: string

Human-readable string which will be used to represent the channel in the UI.

options: {log: true}

Options for the log output channel.

ReturnsDescription
LogOutputChannel

A new log output channel.

Creates a QuickPick to let the user pick an item from a list of items of type T.

Note that in many cases the more convenient window.showQuickPick is easier to use. window.createQuickPick should be used when window.showQuickPick does not offer the required flexibility.

ParameterDescription
ReturnsDescription
QuickPick<T>

A new QuickPick.

Creates a status bar item.

ParameterDescription
id: string

The identifier of the item. Must be unique within the extension.

alignment?: StatusBarAlignment

The alignment of the item.

priority?: number

The priority of the item. Higher values mean the item should be shown more to the left.

ReturnsDescription
StatusBarItem

A new status bar item.

Creates a status bar item.

See also createStatusBarItem for creating a status bar item with an identifier.

ParameterDescription
alignment?: StatusBarAlignment

The alignment of the item.

priority?: number

The priority of the item. Higher values mean the item should be shown more to the left.

ReturnsDescription
StatusBarItem

A new status bar item.

Creates a Terminal with a backing shell process. The cwd of the terminal will be the workspace directory if it exists.

  • throws - When running in an environment where a new process cannot be started.
ParameterDescription
name?: string

Optional human-readable string which will be used to represent the terminal in the UI.

shellPath?: string

Optional path to a custom shell executable to be used in the terminal.

shellArgs?: string | readonly string[]

Optional args for the custom shell executable. A string can be used on Windows only which allows specifying shell args in command-line format.

ReturnsDescription
Terminal

A new Terminal.

Creates a Terminal with a backing shell process.

  • throws - When running in an environment where a new process cannot be started.
ParameterDescription
options: TerminalOptions

A TerminalOptions object describing the characteristics of the new terminal.

ReturnsDescription
Terminal

A new Terminal.

Creates a Terminal where an extension controls its input and output.

ParameterDescription
options: ExtensionTerminalOptions

An ExtensionTerminalOptions object describing the characteristics of the new terminal.

ReturnsDescription
Terminal

A new Terminal.

Create a TextEditorDecorationType that can be used to add decorations to text editors.

ParameterDescription
options: DecorationRenderOptions

Rendering options for the decoration type.

ReturnsDescription
TextEditorDecorationType

A new decoration type instance.

Create a TreeView for the view contributed using the extension point views.

ParameterDescription
viewId: string

Id of the view contributed using the extension point views.

options: TreeViewOptions<T>

Options for creating the TreeView

ReturnsDescription
TreeView<T>

Create and show a new webview panel.

ParameterDescription
viewType: string

Identifies the type of the webview panel.

title: string

Title of the panel.

showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}

Where to show the webview in the editor. If preserveFocus is set, the new webview will not take focus.

options?: WebviewPanelOptions & WebviewOptions

Settings for the new panel.

ReturnsDescription
WebviewPanel

New webview panel.

Register a provider for custom editors for the viewType contributed by the customEditors extension point.

When a custom editor is opened, an onCustomEditor:viewType activation event is fired. Your extension must register a CustomTextEditorProvider, CustomReadonlyEditorProvider, CustomEditorProviderfor viewType as part of activation.

ParameterDescription
viewType: string

Unique identifier for the custom editor provider. This should match the viewType from the customEditors contribution point.

provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>

Provider that resolves custom editors.

options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}

Options for the provider.

ReturnsDescription
Disposable

Disposable that unregisters the provider.

Register a file decoration provider.

ParameterDescription
provider: FileDecorationProvider
ReturnsDescription
Disposable

A Disposable that unregisters the provider.

Register provider that enables the detection and handling of links within the terminal.

ParameterDescription
provider: TerminalLinkProvider<TerminalLink>

The provider that provides the terminal links.

ReturnsDescription
Disposable

Disposable that unregisters the provider.

Registers a provider for a contributed terminal profile.

ParameterDescription
id: string

The ID of the contributed terminal profile.

provider: TerminalProfileProvider

The terminal profile provider.

ReturnsDescription
Disposable

A disposable that unregisters the provider.

Register a TreeDataProvider for the view contributed using the extension point views. This will allow you to contribute data to the TreeView and update if the data changes.

Note: To get access to the TreeView and perform operations on it, use createTreeView.

ParameterDescription
viewId: string

Id of the view contributed using the extension point views.

treeDataProvider: TreeDataProvider<T>

A TreeDataProvider that provides tree data for the view

ReturnsDescription
Disposable

A disposable that unregisters the TreeDataProvider.

Registers a uri handler capable of handling system-wide uris. In case there are multiple windows open, the topmost window will handle the uri. A uri handler is scoped to the extension it is contributed from; it will only be able to handle uris which are directed to the extension itself. A uri must respect the following rules:

  • The uri-scheme must be vscode.env.uriScheme;
  • The uri-authority must be the extension id (e.g. my.extension);
  • The uri-path, -query and -fragment parts are arbitrary.

For example, if the my.extension extension registers a uri handler, it will only be allowed to handle uris with the prefix product-name://my.extension.

An extension can only register a single uri handler in its entire activation lifetime.

  • Note: There is an activation event onUri that fires when a uri directed for the current extension is about to be handled.
ParameterDescription
handler: UriHandler

The uri handler to register for this extension.

ReturnsDescription
Disposable

A disposable that unregisters the handler.

Registers a webview panel serializer.

Extensions that support reviving should have an "onWebviewPanel:viewType" activation event and make sure that registerWebviewPanelSerializer is called during activation.

Only a single serializer may be registered at a time for a given viewType.

ParameterDescription
viewType: string

Type of the webview panel that can be serialized.

serializer: WebviewPanelSerializer<unknown>

Webview serializer.

ReturnsDescription
Disposable

A disposable that unregisters the serializer.

Register a new provider for webview views.

ParameterDescription
viewId: string

Unique id of the view. This should match the id from the views contribution in the package.json.

provider: WebviewViewProvider

Provider for the webview views.

options?: {webviewOptions: {retainContextWhenHidden: boolean}}
ReturnsDescription
Disposable

Disposable that unregisters the provider.

Set a message to the status bar. This is a short hand for the more powerful status bar items.

ParameterDescription
text: string

The message to show, supports icon substitution as in status bar items.

hideAfterTimeout: number

Timeout in milliseconds after which the message will be disposed.

ReturnsDescription
Disposable

A disposable which hides the status bar message.

Set a message to the status bar. This is a short hand for the more powerful status bar items.

ParameterDescription
text: string

The message to show, supports icon substitution as in status bar items.

hideWhenDone: Thenable<any>

Thenable on which completion (resolve or reject) the message will be disposed.

ReturnsDescription
Disposable

A disposable which hides the status bar message.

Set a message to the status bar. This is a short hand for the more powerful status bar items.

Note that status bar messages stack and that they must be disposed when no longer used.

ParameterDescription
text: string

The message to show, supports icon substitution as in status bar items.

ReturnsDescription
Disposable

A disposable which hides the status bar message.

Show an error message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an error message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an error message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an error message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an information message to users. Optionally provide an array of items which will be presented as clickable buttons.

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an information message to users. Optionally provide an array of items which will be presented as clickable buttons.

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an information message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show an information message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Opens an input box to ask the user for input.

The returned value will be undefined if the input box was canceled (e.g., pressing ESC). Otherwise the returned value will be the string typed by the user or an empty string if the user did not type anything but dismissed the input box with OK.

ParameterDescription
options?: InputBoxOptions

Configures the behavior of the input box.

token?: CancellationToken

A token that can be used to signal cancellation.

ReturnsDescription
Thenable<string | undefined>

A thenable that resolves to a string the user provided or to undefined in case of dismissal.

Show the given NotebookDocument in a notebook editor.

ParameterDescription
document: NotebookDocument

A text document to be shown.

options?: NotebookDocumentShowOptions

Editor options to configure the behavior of showing the notebook editor.

ReturnsDescription
Thenable<NotebookEditor>

A promise that resolves to an notebook editor.

Shows a file open dialog to the user which allows to select a file for opening-purposes.

ParameterDescription
options?: OpenDialogOptions

Options that control the dialog.

ReturnsDescription
Thenable<Uri[] | undefined>

A promise that resolves to the selected resources or undefined.

Shows a selection list allowing multiple selections.

ParameterDescription
items: readonly string[] | Thenable<readonly string[]>

An array of strings, or a promise that resolves to an array of strings.

options: QuickPickOptions & {canPickMany: true}

Configures the behavior of the selection list.

token?: CancellationToken

A token that can be used to signal cancellation.

ReturnsDescription
Thenable<string[] | undefined>

A thenable that resolves to the selected items or undefined.

Shows a selection list.

ParameterDescription
items: readonly string[] | Thenable<readonly string[]>

An array of strings, or a promise that resolves to an array of strings.

options?: QuickPickOptions

Configures the behavior of the selection list.

token?: CancellationToken

A token that can be used to signal cancellation.

ReturnsDescription
Thenable<string | undefined>

A thenable that resolves to the selected string or undefined.

Shows a selection list allowing multiple selections.

ParameterDescription
items: readonly T[] | Thenable<readonly T[]>

An array of items, or a promise that resolves to an array of items.

options: QuickPickOptions & {canPickMany: true}

Configures the behavior of the selection list.

token?: CancellationToken

A token that can be used to signal cancellation.

ReturnsDescription
Thenable<T[] | undefined>

A thenable that resolves to the selected items or undefined.

Shows a selection list.

ParameterDescription
items: readonly T[] | Thenable<readonly T[]>

An array of items, or a promise that resolves to an array of items.

options?: QuickPickOptions

Configures the behavior of the selection list.

token?: CancellationToken

A token that can be used to signal cancellation.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined.

Shows a file save dialog to the user which allows to select a file for saving-purposes.

ParameterDescription
options?: SaveDialogOptions

Options that control the dialog.

ReturnsDescription
Thenable<Uri | undefined>

A promise that resolves to the selected resource or undefined.

Show the given document in a text editor. A column can be provided to control where the editor is being shown. Might change the active editor.

ParameterDescription
document: TextDocument

A text document to be shown.

column?: ViewColumn

A view column in which the editor should be shown. The default is the active. Columns that do not exist will be created as needed up to the maximum of ViewColumn.Nine. Use ViewColumn.Beside to open the editor to the side of the currently active one.

preserveFocus?: boolean

When true the editor will not take focus.

ReturnsDescription
Thenable<TextEditor>

A promise that resolves to an editor.

Show the given document in a text editor. Options can be provided to control options of the editor is being shown. Might change the active editor.

ParameterDescription
document: TextDocument

A text document to be shown.

options?: TextDocumentShowOptions

Editor options to configure the behavior of showing the editor.

ReturnsDescription
Thenable<TextEditor>

A promise that resolves to an editor.

A short-hand for openTextDocument(uri).then(document => showTextDocument(document, options)).

See also workspace.openTextDocument

ParameterDescription
uri: Uri

A resource identifier.

options?: TextDocumentShowOptions

Editor options to configure the behavior of showing the editor.

ReturnsDescription
Thenable<TextEditor>

A promise that resolves to an editor.

Show a warning message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show a warning message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show a warning message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Show a warning message.

See also showInformationMessage

ParameterDescription
message: string

The message to show.

options: MessageOptions

Configures the behaviour of the message.

...items: T[]

A set of items that will be rendered as actions in the message.

ReturnsDescription
Thenable<T | undefined>

A thenable that resolves to the selected item or undefined when being dismissed.

Shows a selection list of workspace folders to pick from. Returns undefined if no folder is open.

ParameterDescription
options?: WorkspaceFolderPickOptions

Configures the behavior of the workspace folder list.

ReturnsDescription
Thenable<WorkspaceFolder | undefined>

A promise that resolves to the workspace folder or undefined.

Show progress in the editor. Progress is shown while running the given callback and while the promise it returned isn't resolved nor rejected. The location at which progress should show (and other details) is defined via the passed ProgressOptions.

ParameterDescription
options: ProgressOptions

A ProgressOptions-object describing the options to use for showing progress, like its location

task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>

A callback returning a promise. Progress state can be reported with the provided Progress-object.

To report discrete progress, use increment to indicate how much work has been completed. Each call with a increment value will be summed up and reflected as overall progress until 100% is reached (a value of e.g. 10 accounts for 10% of work done). Note that currently only ProgressLocation.Notification is capable of showing discrete progress.

To monitor if the operation has been cancelled by the user, use the provided CancellationToken. Note that currently only ProgressLocation.Notification is supporting to show a cancel button to cancel the long running operation.

ReturnsDescription
Thenable<R>

The thenable the task-callback returned.

Show progress in the Source Control viewlet while running the given callback and while its returned promise isn't resolve or rejected.

  • deprecated - Use withProgress instead.
ParameterDescription
task: (progress: Progress<number>) => Thenable<R>

A callback returning a promise. Progress increments can be reported with the provided Progress-object.

ReturnsDescription
Thenable<R>

The thenable the task did return.

workspace

Namespace for dealing with the current workspace. A workspace is the collection of one or more folders that are opened in an editor window (instance).

It is also possible to open an editor without a workspace. For example, when you open a new editor window by selecting a file from your platform's File menu, you will not be inside a workspace. In this mode, some of the editor's capabilities are reduced but you can still open text files and edit them.

Refer to https://code.visualstudio.com/docs/editor/workspaces for more information on the concept of workspaces.

The workspace offers support for listening to fs events and for finding files. Both perform well and run outside the editor-process so that they should be always used instead of nodejs-equivalents.

Variables

A file system instance that allows to interact with local and remote files, e.g. vscode.workspace.fs.readDirectory(someUri) allows to retrieve all entries of a directory or vscode.workspace.fs.stat(anotherUri) returns the meta data for a file.

When true, the user has explicitly trusted the contents of the workspace.

The name of the workspace. undefined when no workspace has been opened.

Refer to https://code.visualstudio.com/docs/editor/workspaces for more information on the concept of workspaces.

All notebook documents currently known to the editor.

The uri of the first entry of workspaceFolders as string. undefined if there is no first entry.

Refer to https://code.visualstudio.com/docs/editor/workspaces for more information on workspaces.

All text documents currently known to the editor.

The location of the workspace file, for example:

file:///Users/name/Development/myProject.code-workspace

or

untitled:1555503116870

for a workspace that is untitled and not yet saved.

Depending on the workspace that is opened, the value will be:

  • undefined when no workspace is opened
  • the path of the workspace file as Uri otherwise. if the workspace is untitled, the returned URI will use the untitled: scheme

The location can e.g. be used with the vscode.openFolder command to open the workspace again after it has been closed.

Example:

vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);

Refer to https://code.visualstudio.com/docs/editor/workspaces for more information on the concept of workspaces.

Note: it is not advised to use workspace.workspaceFile to write configuration data into the file. You can use workspace.getConfiguration().update() for that purpose which will work both when a single folder is opened as well as an untitled or saved workspace.

List of workspace folders (0-N) that are open in the editor. undefined when no workspace has been opened.

Refer to https://code.visualstudio.com/docs/editor/workspaces for more information on workspaces.

Events

An event that is emitted when the configuration changed.

An event that is emitted when a notebook has changed.

An event that is emitted when a text document is changed. This usually happens when the contents changes but also when other things like the dirty-state changes.

An event that is emitted when a workspace folder is added or removed.

Note: this event will not fire if the first workspace folder is added, removed or changed, because in that case the currently executing extensions (including the one that listens to this event) will be terminated and restarted so that the (deprecated) rootPath property is updated to point to the first workspace folder.

An event that is emitted when a notebook is disposed.

Note 1: There is no guarantee that this event fires when an editor tab is closed.

Note 2: A notebook can be open but not shown in an editor which means this event can fire for a notebook that has not been shown in an editor.

An event that is emitted when a text document is disposed or when the language id of a text document has been changed.

Note 1: There is no guarantee that this event fires when an editor tab is closed, use the onDidChangeVisibleTextEditors-event to know when editors change.

Note 2: A document can be open but not shown in an editor which means this event can fire for a document that has not been shown in an editor.

An event that is emitted when files have been created.

Note: This event is triggered by user gestures, like creating a file from the explorer, or from the workspace.applyEdit-api, but this event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

An event that is emitted when files have been deleted.

Note 1: This event is triggered by user gestures, like deleting a file from the explorer, or from the workspace.applyEdit-api, but this event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

Note 2: When deleting a folder with children only one event is fired.

Event that fires when the current workspace has been trusted.

An event that is emitted when a notebook is opened.

An event that is emitted when a text document is opened or when the language id of a text document has been changed.

To add an event listener when a visible text document is opened, use the TextEditor events in the window namespace. Note that:

An event that is emitted when files have been renamed.

Note 1: This event is triggered by user gestures, like renaming a file from the explorer, and from the workspace.applyEdit-api, but this event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

Note 2: When renaming a folder with children only one event is fired.

An event that is emitted when a notebook is saved.

An event that is emitted when a text document is saved to disk.

An event that is emitted when files are being created.

Note 1: This event is triggered by user gestures, like creating a file from the explorer, or from the workspace.applyEdit-api. This event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

Note 2: When this event is fired, edits to files that are are being created cannot be applied.

An event that is emitted when files are being deleted.

Note 1: This event is triggered by user gestures, like deleting a file from the explorer, or from the workspace.applyEdit-api, but this event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

Note 2: When deleting a folder with children only one event is fired.

An event that is emitted when files are being renamed.

Note 1: This event is triggered by user gestures, like renaming a file from the explorer, and from the workspace.applyEdit-api, but this event is not fired when files change on disk, e.g triggered by another application, or when using the workspace.fs-api.

Note 2: When renaming a folder with children only one event is fired.

An event that is emitted when a notebook document will be saved to disk.

Note 1: Subscribers can delay saving by registering asynchronous work. For the sake of data integrity the editor might save without firing this event. For instance when shutting down with dirty files.

Note 2: Subscribers are called sequentially and they can delay saving by registering asynchronous work. Protection against misbehaving listeners is implemented as such:

  • there is an overall time budget that all listeners share and if that is exhausted no further listener is called
  • listeners that take a long time or produce errors frequently will not be called anymore

The current thresholds are 1.5 seconds as overall time budget and a listener can misbehave 3 times before being ignored.

An event that is emitted when a text document will be saved to disk.

Note 1: Subscribers can delay saving by registering asynchronous work. For the sake of data integrity the editor might save without firing this event. For instance when shutting down with dirty files.

Note 2: Subscribers are called sequentially and they can delay saving by registering asynchronous work. Protection against misbehaving listeners is implemented as such:

  • there is an overall time budget that all listeners share and if that is exhausted no further listener is called
  • listeners that take a long time or produce errors frequently will not be called anymore

The current thresholds are 1.5 seconds as overall time budget and a listener can misbehave 3 times before being ignored.

Functions

Make changes to one or many resources or create, delete, and rename resources as defined by the given workspace edit.

All changes of a workspace edit are applied in the same order in which they have been added. If multiple textual inserts are made at the same position, these strings appear in the resulting text in the order the 'inserts' were made, unless that are interleaved with resource edits. Invalid sequences like 'delete file a' -> 'insert text in file a' cause failure of the operation.

When applying a workspace edit that consists only of text edits an 'all-or-nothing'-strategy is used. A workspace edit with resource creations or deletions aborts the operation, e.g. consecutive edits will not be attempted, when a single edit fails.

ParameterDescription
edit: WorkspaceEdit

A workspace edit.

metadata?: WorkspaceEditMetadata

Optional metadata for the edit.

ReturnsDescription
Thenable<boolean>

A thenable that resolves when the edit could be applied.

Returns a path that is relative to the workspace folder or folders.

When there are no workspace folders or when the path is not contained in them, the input is returned.

ParameterDescription
pathOrUri: string | Uri

A path or uri. When a uri is given its fsPath is used.

includeWorkspaceFolder?: boolean

When true and when the given path is contained inside a workspace folder the name of the workspace is prepended. Defaults to true when there are multiple workspace folders and false otherwise.

ReturnsDescription
string

A path relative to the root or the input.

Creates a file system watcher that is notified on file events (create, change, delete) depending on the parameters provided.

By default, all opened workspace folders will be watched for file changes recursively.

Additional paths can be added for file watching by providing a RelativePattern with a base path to watch. If the path is a folder and the pattern is complex (e.g. contains ** or path segments), it will be watched recursively and otherwise will be watched non-recursively (i.e. only changes to the first level of the path will be reported).

Note that paths that do not exist in the file system will be monitored with a delay until created and then watched depending on the parameters provided. If a watched path is deleted, the watcher will suspend and not report any events until the path is created again.

If possible, keep the use of recursive watchers to a minimum because recursive file watching is quite resource intense.

Providing a string as globPattern acts as convenience method for watching file events in all opened workspace folders. It cannot be used to add more folders for file watching, nor will it report any file events from folders that are not part of the opened workspace folders.

Note that case-sensitivity of the globPattern parameter will depend on the file system where the watcher is running: on Windows and macOS the matching will be case-insensitive and on Linux it will be case-sensitive.

Optionally, flags to ignore certain kinds of events can be provided.

To stop listening to events the watcher must be disposed.

Note that file events from deleting a folder may not include events for the contained files. For example, when a folder is moved to the trash, only one event is reported because technically this is a rename/move operation and not a delete operation for each files within. On top of that, performance optimizations are in place to fold multiple events that all belong to the same parent operation (e.g. delete folder) into one event for that parent. As such, if you need to know about all deleted files, you have to watch with ** and deal with all file events yourself.

Note that file events from recursive file watchers may be excluded based on user configuration. The setting files.watcherExclude helps to reduce the overhead of file events from folders that are known to produce many file changes at once (such as .git folders). As such, it is highly recommended to watch with simple patterns that do not require recursive watchers where the exclude settings are ignored and you have full control over the events.

Note that symbolic links are not automatically followed for file watching unless the path to watch itself is a symbolic link.

Note that the file paths that are reported for having changed may have a different path casing compared to the actual casing on disk on case-insensitive platforms (typically macOS and Windows but not Linux). We allow a user to open a workspace folder with any desired path casing and try to preserve that. This means:

  • if the path is within any of the workspace folders, the path will match the casing of the workspace folder up to that portion of the path and match the casing on disk for children
  • if the path is outside of any of the workspace folders, the casing will match the case of the path that was provided for watching In the same way, symbolic links are preserved, i.e. the file event will report the path of the symbolic link as it was provided for watching and not the target.

Examples

The basic anatomy of a file watcher is as follows:

const watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(<folder>, <pattern>));

watcher.onDidChange(uri => { ... }); // listen to files being changed
watcher.onDidCreate(uri => { ... }); // listen to files/folders being created
watcher.onDidDelete(uri => { ... }); // listen to files/folders getting deleted

watcher.dispose(); // dispose after usage

Workspace file watching

If you only care about file events in a specific workspace folder:

vscode.workspace.createFileSystemWatcher(
  new vscode.RelativePattern(vscode.workspace.workspaceFolders[0], '**/*.js')
);

If you want to monitor file events across all opened workspace folders:

vscode.workspace.createFileSystemWatcher('**/*.js');

Note: the array of workspace folders can be empty if no workspace is opened (empty window).

Out of workspace file watching

To watch a folder for changes to *.js files outside the workspace (non recursively), pass in a Uri to such a folder:

vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));

And use a complex glob pattern to watch recursively:

vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '**/*.js'));

Here is an example for watching the active editor for file changes:

vscode.workspace.createFileSystemWatcher(
  new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*')
);
ParameterDescription
globPattern: GlobPattern

A glob pattern that controls which file events the watcher should report.

ignoreCreateEvents?: boolean

Ignore when files have been created.

ignoreChangeEvents?: boolean

Ignore when files have been changed.

ignoreDeleteEvents?: boolean

Ignore when files have been deleted.

ReturnsDescription
FileSystemWatcher

A new file system watcher instance. Must be disposed when no longer needed.

Decodes the content from a Uint8Array to a string. You MUST provide the entire content at once to ensure that the encoding can properly apply. Do not use this method to decode content in chunks, as that may lead to incorrect results.

Will pick an encoding based on settings and the content of the buffer (for example byte order marks).

Note that if you decode content that is unsupported by the encoding, the result may contain substitution characters as appropriate.

  • throws - This method will throw an error when the content is binary.
ParameterDescription
content: Uint8Array

The text content to decode as a Uint8Array.

ReturnsDescription
Thenable<string>

A thenable that resolves to the decoded string.

Decodes the content from a Uint8Array to a string using the provided encoding. You MUST provide the entire content at once to ensure that the encoding can properly apply. Do not use this method to decode content in chunks, as that may lead to incorrect results.

Note that if you decode content that is unsupported by the encoding, the result may contain substitution characters as appropriate.

  • throws - This method will throw an error when the content is binary.
ParameterDescription
content: Uint8Array

The text content to decode as a Uint8Array.

options: {encoding: string}

Additional context for picking the encoding.

ReturnsDescription
Thenable<string>

A thenable that resolves to the decoded string.

Decodes the content from a Uint8Array to a string. You MUST provide the entire content at once to ensure that the encoding can properly apply. Do not use this method to decode content in chunks, as that may lead to incorrect results.

The encoding is picked based on settings and the content of the buffer (for example byte order marks).

Note that if you decode content that is unsupported by the encoding, the result may contain substitution characters as appropriate.

  • throws - This method will throw an error when the content is binary.
ParameterDescription
content: Uint8Array

The content to decode as a Uint8Array.

options: {uri: Uri}

Additional context for picking the encoding.

ReturnsDescription
Thenable<string>

A thenable that resolves to the decoded string.

Encodes the content of a string to a Uint8Array.

Will pick an encoding based on settings.

ParameterDescription
content: string

The content to decode as a string.

ReturnsDescription
Thenable<Uint8Array>

A thenable that resolves to the encoded Uint8Array.

Encodes the content of a string to a Uint8Array using the provided encoding.

ParameterDescription
content: string

The content to decode as a string.

options: {encoding: string}

Additional context for picking the encoding.

ReturnsDescription
Thenable<Uint8Array>

A thenable that resolves to the encoded Uint8Array.

Encodes the content of a string to a Uint8Array.

The encoding is picked based on settings.

ParameterDescription
content: string

The content to decode as a string.

options: {uri: Uri}

Additional context for picking the encoding.

ReturnsDescription
Thenable<Uint8Array>

A thenable that resolves to the encoded Uint8Array.

Find files across all workspace folders in the workspace.

Example

findFiles('**/*.js', '**/node_modules/**', 10);
ParameterDescription
include: GlobPattern

A glob pattern that defines the files to search for. The glob pattern will be matched against the file paths of resulting matches relative to their workspace. Use a relative pattern to restrict the search results to a workspace folder.

exclude?: GlobPattern

A glob pattern that defines files and folders to exclude. The glob pattern will be matched against the file paths of resulting matches relative to their workspace. When undefined, default file-excludes (e.g. the files.exclude-setting but not search.exclude) will apply. When null, no excludes will apply.

maxResults?: number

An upper-bound for the result.

token?: CancellationToken

A token that can be used to signal cancellation to the underlying search engine.

ReturnsDescription
Thenable<Uri[]>

A thenable that resolves to an array of resource identifiers. Will return no results if no workspace folders are opened.

Get a workspace configuration object.

When a section-identifier is provided only that part of the configuration is returned. Dots in the section-identifier are interpreted as child-access, like { myExt: { setting: { doIt: true }}} and getConfiguration('myExt.setting').get('doIt') === true.

When a scope is provided configuration confined to that scope is returned. Scope can be a resource or a language identifier or both.

ParameterDescription
section?: string

A dot-separated identifier.

scope?: ConfigurationScope

A scope for which the configuration is asked for.

ReturnsDescription
WorkspaceConfiguration

The full configuration or a subset.

Returns the workspace folder that contains a given uri.

  • returns undefined when the given uri doesn't match any workspace folder
  • returns the input when the given uri is a workspace folder itself
ParameterDescription
uri: Uri

An uri.

ReturnsDescription
WorkspaceFolder | undefined

A workspace folder or undefined

Open a notebook. Will return early if this notebook is already loaded. Otherwise the notebook is loaded and the onDidOpenNotebookDocument-event fires.

Note that the lifecycle of the returned notebook is owned by the editor and not by the extension. That means an onDidCloseNotebookDocument-event can occur at any time after.

Note that opening a notebook does not show a notebook editor. This function only returns a notebook document which can be shown in a notebook editor but it can also be used for other things.

ParameterDescription
uri: Uri

The resource to open.

ReturnsDescription
Thenable<NotebookDocument>

A promise that resolves to a notebook

Open an untitled notebook. The editor will prompt the user for a file path when the document is to be saved.

See also workspace.openNotebookDocument

ParameterDescription
notebookType: string

The notebook type that should be used.

content?: NotebookData

The initial contents of the notebook.

ReturnsDescription
Thenable<NotebookDocument>

A promise that resolves to a notebook.

Opens a document. Will return early if this document is already open. Otherwise the document is loaded and the didOpen-event fires.

The document is denoted by an Uri. Depending on the scheme the following rules apply:

  • file-scheme: Open a file on disk (openTextDocument(Uri.file(path))). Will be rejected if the file does not exist or cannot be loaded.
  • untitled-scheme: Open a blank untitled file with associated path (openTextDocument(Uri.file(path).with({ scheme: 'untitled' }))). The language will be derived from the file name.
  • For all other schemes contributed text document content providers and file system providers are consulted.

Note that the lifecycle of the returned document is owned by the editor and not by the extension. That means an onDidClose-event can occur at any time after opening it.

ParameterDescription
uri: Uri

Identifies the resource to open.

options?: {encoding: string}
ReturnsDescription
Thenable<TextDocument>

A promise that resolves to a document.

A short-hand for openTextDocument(Uri.file(path)).

See also workspace.openTextDocument

ParameterDescription
path: string

A path of a file on disk.

options?: {encoding: string}
ReturnsDescription
Thenable<TextDocument>

A promise that resolves to a document.

Opens an untitled text document. The editor will prompt the user for a file path when the document is to be saved. The options parameter allows to specify the language and/or the content of the document.

ParameterDescription
options?: {content: string, encoding: string, language: string}

Options to control how the document will be created.

ReturnsDescription
Thenable<TextDocument>

A promise that resolves to a document.

Register a filesystem provider for a given scheme, e.g. ftp.

There can only be one provider per scheme and an error is being thrown when a scheme has been claimed by another provider or when it is reserved.

ParameterDescription
scheme: string

The uri-scheme the provider registers for.

provider: FileSystemProvider

The filesystem provider.

options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}

Immutable metadata about the provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a notebook serializer.

A notebook serializer must be contributed through the notebooks extension point. When opening a notebook file, the editor will send the onNotebook:<notebookType> activation event, and extensions must register their serializer in return.

ParameterDescription
notebookType: string

A notebook.

serializer: NotebookSerializer

A notebook serializer.

options?: NotebookDocumentContentOptions

Optional context options that define what parts of a notebook should be persisted

ReturnsDescription
Disposable

A Disposable that unregisters this serializer when being disposed.

Register a task provider.

  • deprecated - Use the corresponding function on the tasks namespace instead
ParameterDescription
type: string

The task kind type this provider is registered for.

provider: TaskProvider<Task>

A task provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Register a text document content provider.

Only one provider can be registered per scheme.

ParameterDescription
scheme: string

The uri-scheme to register for.

provider: TextDocumentContentProvider

A content provider.

ReturnsDescription
Disposable

A Disposable that unregisters this provider when being disposed.

Saves the editor identified by the given resource and returns the resulting resource or undefined if save was not successful or no editor with the given resource was found.

Note that an editor with the provided resource must be opened in order to be saved.

ParameterDescription
uri: Uri

the associated uri for the opened editor to save.

ReturnsDescription
Thenable<Uri | undefined>

A thenable that resolves when the save operation has finished.

Save all dirty files.

ParameterDescription
includeUntitled?: boolean

Also save files that have been created during this session.

ReturnsDescription
Thenable<boolean>

A thenable that resolves when the files have been saved. Will return false for any file that failed to save.

Saves the editor identified by the given resource to a new file name as provided by the user and returns the resulting resource or undefined if save was not successful or cancelled or no editor with the given resource was found.

Note that an editor with the provided resource must be opened in order to be saved as.

ParameterDescription
uri: Uri

the associated uri for the opened editor to save as.

ReturnsDescription
Thenable<Uri | undefined>

A thenable that resolves when the save-as operation has finished.

This method replaces deleteCount workspace folders starting at index start by an optional set of workspaceFoldersToAdd on the vscode.workspace.workspaceFolders array. This "splice" behavior can be used to add, remove and change workspace folders in a single operation.

Note: in some cases calling this method may result in the currently executing extensions (including the one that called this method) to be terminated and restarted. For example when the first workspace folder is added, removed or changed the (deprecated) rootPath property is updated to point to the first workspace folder. Another case is when transitioning from an empty or single-folder workspace into a multi-folder workspace (see also: https://code.visualstudio.com/docs/editor/workspaces).

Use the onDidChangeWorkspaceFolders() event to get notified when the workspace folders have been updated.

Example: adding a new workspace folder at the end of workspace folders

workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...});

Example: removing the first workspace folder

workspace.updateWorkspaceFolders(0, 1);

Example: replacing an existing workspace folder with a new one

workspace.updateWorkspaceFolders(0, 1, { uri: ...});

It is valid to remove an existing workspace folder and add it again with a different name to rename that folder.

Note: it is not valid to call updateWorkspaceFolders() multiple times without waiting for the onDidChangeWorkspaceFolders() to fire.

ParameterDescription
start: number

the zero-based location in the list of currently opened workspace folders from which to start deleting workspace folders.

deleteCount: number

the optional number of workspace folders to remove.

...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>

the optional variable set of workspace folders to add in place of the deleted ones. Each workspace is identified with a mandatory URI and an optional name.

ReturnsDescription
boolean

true if the operation was successfully started and false otherwise if arguments were used that would result in invalid workspace folder state (e.g. 2 folders with the same URI).

AccessibilityInformation

Accessibility information which controls screen reader behavior.

Properties

Label to be read out by a screen reader once the item has focus.

Role of the widget which defines how a screen reader interacts with it. The role should be set in special cases when for example a tree-like element behaves like a checkbox. If role is not specified the editor will pick the appropriate role automatically. More about aria roles can be found here https://w3c.github.io/aria/#widget_roles

AuthenticationForceNewSessionOptions

Optional options to be used when calling authentication.getSession with the flag forceNewSession.

AuthenticationGetSessionOptions

Options to be used when getting an AuthenticationSession from an AuthenticationProvider.

Properties

The account that you would like to get a session for. This is passed down to the Authentication Provider to be used for creating the correct session.

Whether the existing session preference should be cleared.

For authentication providers that support being signed into multiple accounts at once, the user will be prompted to select an account to use when getSession is called. This preference is remembered until getSession is called with this flag.

Note: The preference is extension specific. So if one extension calls getSession, it will not affect the session preference for another extension calling getSession. Additionally, the preference is set for the current workspace and also globally. This means that new workspaces will use the "global" value at first and then when this flag is provided, a new value can be set for that workspace. This also means that pre-existing workspaces will not lose their preference if a new workspace sets this flag.

Defaults to false.

Whether login should be performed if there is no matching session.

If true, a modal dialog will be shown asking the user to sign in. If false, a numbered badge will be shown on the accounts activity bar icon. An entry for the extension will be added under the menu to sign in. This allows quietly prompting the user to sign in.

If you provide options, you will also see the dialog but with the additional context provided.

If there is a matching session but the extension has not been granted access to it, setting this to true will also result in an immediate modal dialog, and false will add a numbered badge to the accounts icon.

Defaults to false.

Note: you cannot use this option with silent.

Whether we should attempt to reauthenticate even if there is already a session available.

If true, a modal dialog will be shown asking the user to sign in again. This is mostly used for scenarios where the token needs to be re minted because it has lost some authorization.

If you provide options, you will also see the dialog but with the additional context provided.

If there are no existing sessions and forceNewSession is true, it will behave identically to createIfNone.

This defaults to false.

Whether we should show the indication to sign in in the Accounts menu.

If false, the user will be shown a badge on the Accounts menu with an option to sign in for the extension. If true, no indication will be shown.

Defaults to false.

Note: you cannot use this option with any other options that prompt the user like createIfNone.

AuthenticationGetSessionPresentationOptions

Optional options to be used when calling authentication.getSession with interactive options forceNewSession & createIfNone.

Properties

An optional message that will be displayed to the user when we ask to re-authenticate. Providing additional context as to why you are asking a user to re-authenticate can help increase the odds that they will accept.

AuthenticationProvider

A provider for performing authentication to a service.

Events

An Event which fires when the array of sessions has changed, or data within a session has changed.

Methods

Prompts a user to login.

If login is successful, the onDidChangeSessions event should be fired.

If login fails, a rejected promise should be returned.

If the provider has specified that it does not support multiple accounts, then this should never be called if there is already an existing session matching these scopes.

ParameterDescription
scopes: readonly string[]

A list of scopes, permissions, that the new session should be created with.

options: AuthenticationProviderSessionOptions

Additional options for creating a session.

ReturnsDescription
Thenable<AuthenticationSession>

A promise that resolves to an authentication session.

Get a list of sessions.

ParameterDescription
scopes: readonly string[]

An optional list of scopes. If provided, the sessions returned should match these permissions, otherwise all sessions should be returned.

options: AuthenticationProviderSessionOptions

Additional options for getting sessions.

ReturnsDescription
Thenable<AuthenticationSession[]>

A promise that resolves to an array of authentication sessions.

Removes the session corresponding to session id.

If the removal is successful, the onDidChangeSessions event should be fired.

If a session cannot be removed, the provider should reject with an error message.

ParameterDescription
sessionId: string

The id of the session to remove.

ReturnsDescription
Thenable<void>

AuthenticationProviderAuthenticationSessionsChangeEvent

An Event which fires when an AuthenticationSession is added, removed, or changed.

Properties

The AuthenticationSessions of the AuthenticationProvider that have been added.

The AuthenticationSessions of the AuthenticationProvider that have been changed. A session changes when its data excluding the id are updated. An example of this is a session refresh that results in a new access token being set for the session.

The AuthenticationSessions of the AuthenticationProvider that have been removed.

AuthenticationProviderInformation

Basic information about an AuthenticationProvider

Properties

The unique identifier of the authentication provider.

The human-readable name of the authentication provider.

AuthenticationProviderOptions

Options for creating an AuthenticationProvider.

Properties

Whether it is possible to be signed into multiple accounts at once with this provider. If not specified, will default to false.

AuthenticationProviderSessionOptions

Properties

The account that is being asked about. If this is passed in, the provider should attempt to return the sessions that are only related to this account.

AuthenticationSession

Represents a session of a currently logged in user.

Properties

The access token. This token should be used to authenticate requests to a service. Popularized by OAuth.

The account associated with the session.

The identifier of the authentication session.

The ID token. This token contains identity information about the user. Popularized by OpenID Connect.

The permissions granted by the session's access token. Available scopes are defined by the AuthenticationProvider.

AuthenticationSessionAccountInformation

The information of an account associated with an AuthenticationSession.

Properties

The unique identifier of the account.

The human-readable name of the account.

AuthenticationSessionsChangeEvent

An Event which fires when an AuthenticationSession is added, removed, or changed.

Properties

The AuthenticationProvider that has had its sessions change.

AuthenticationWwwAuthenticateRequest

Represents parameters for creating a session based on a WWW-Authenticate header value. This is used when an API returns a 401 with a WWW-Authenticate header indicating that additional authentication is required. The details of which will be passed down to the authentication provider to create a session.

  • note - The authorization provider must support handling challenges and specifically the challenges in this WWW-Authenticate value.

Properties

The fallback scopes to use if no scopes are found in the WWW-Authenticate header.

The raw WWW-Authenticate header value that triggered this challenge. This will be parsed by the authentication provider to extract the necessary challenge information.

AutoClosingPair

Describes pairs of strings where the close string will be automatically inserted when typing the opening string.

Properties

The closing string that will be automatically inserted when typing the opening string.

A set of tokens where the pair should not be auto closed.

The string that will trigger the automatic insertion of the closing string.

BranchCoverage

Contains coverage information for a branch of a StatementCoverage.

Constructors

ParameterDescription
executed: number | boolean

The number of times this branch was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the branch will be marked as un-covered.

location?: Range | Position

The branch position.

label?: string
ReturnsDescription
BranchCoverage

Properties

The number of times this branch was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the branch will be marked as un-covered.

Label for the branch, used in the context of "the ${label} branch was not taken," for example.

Branch location.

Breakpoint

The base class of all breakpoint types.

Constructors

Creates a new breakpoint

ParameterDescription
enabled?: boolean

Is breakpoint enabled.

condition?: string

Expression for conditional breakpoints

hitCondition?: string

Expression that controls how many hits of the breakpoint are ignored

logMessage?: string

Log message to display when breakpoint is hit

ReturnsDescription
Breakpoint

Properties

An optional expression for conditional breakpoints.

Is breakpoint enabled.

An optional expression that controls how many hits of the breakpoint are ignored.

The unique ID of the breakpoint.

An optional message that gets logged when this breakpoint is hit. Embedded expressions within {} are interpolated by the debug adapter.

BreakpointsChangeEvent

An event describing the changes to the set of breakpoints.

Properties

Added breakpoints.

Changed breakpoints.

Removed breakpoints.

CallHierarchyIncomingCall

Represents an incoming call, e.g. a caller of a method or constructor.

Constructors

Create a new call object.

ParameterDescription
item: CallHierarchyItem

The item making the call.

fromRanges: Range[]

The ranges at which the calls appear.

ReturnsDescription
CallHierarchyIncomingCall

Properties

The item that makes the call.

The range at which at which the calls appears. This is relative to the caller denoted by this.from.

CallHierarchyItem

Represents programming constructs like functions or constructors in the context of call hierarchy.

Constructors

Creates a new call hierarchy item.

ParameterDescription
kind: SymbolKind
name: string
detail: string
uri: Uri
range: Range
selectionRange: Range
ReturnsDescription
CallHierarchyItem

Properties

More detail for this item, e.g. the signature of a function.

The kind of this item.

The name of this item.

The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.

The range that should be selected and revealed when this symbol is being picked, e.g. the name of a function. Must be contained by the range.

Tags for this item.

The resource identifier of this item.

CallHierarchyOutgoingCall

Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc.

Constructors

Create a new call object.

ParameterDescription
item: CallHierarchyItem

The item being called

fromRanges: Range[]

The ranges at which the calls appear.

ReturnsDescription
CallHierarchyOutgoingCall

Properties

The range at which this item is called. This is the range relative to the caller, e.g the item passed to provideCallHierarchyOutgoingCalls and not this.to.

The item that is called.

CallHierarchyProvider

The call hierarchy provider interface describes the contract between extensions and the call hierarchy feature which allows to browse calls and caller of function, methods, constructor etc.

Methods

Bootstraps call hierarchy by returning the item that is denoted by the given document and position. This item will be used as entry into the call graph. Providers should return undefined or null when there is no item at the given location.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<CallHierarchyItem | CallHierarchyItem[]>

One or multiple call hierarchy items or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

Provide all incoming calls for an item, e.g all callers for a method. In graph terms this describes directed and annotated edges inside the call graph, e.g the given item is the starting node and the result is the nodes that can be reached.

ParameterDescription
item: CallHierarchyItem

The hierarchy item for which incoming calls should be computed.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<CallHierarchyIncomingCall[]>

A set of incoming calls or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

Provide all outgoing calls for an item, e.g call calls to functions, methods, or constructors from the given item. In graph terms this describes directed and annotated edges inside the call graph, e.g the given item is the starting node and the result is the nodes that can be reached.

ParameterDescription
item: CallHierarchyItem

The hierarchy item for which outgoing calls should be computed.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<CallHierarchyOutgoingCall[]>

A set of outgoing calls or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

CancellationError

An error type that should be used to signal cancellation of an operation.

This type can be used in response to a cancellation token being cancelled or when an operation is being cancelled by the executor of that operation.

Constructors

Creates a new cancellation error.

ParameterDescription
ReturnsDescription
CancellationError

CancellationToken

A cancellation token is passed to an asynchronous or long running operation to request cancellation, like cancelling a request for completion items because the user continued to type.

To get an instance of a CancellationToken use a CancellationTokenSource.

Properties

Is true when the token has been cancelled, false otherwise.

An Event which fires upon cancellation.

CancellationTokenSource

A cancellation source creates and controls a cancellation token.

Constructors

ParameterDescription
ReturnsDescription
CancellationTokenSource

Properties

The cancellation token of this source.

Methods

Signal cancellation on the token.

ParameterDescription
ReturnsDescription
void

Dispose object and free resources.

ParameterDescription
ReturnsDescription
void

CharacterPair

A tuple of two characters, like a pair of opening and closing brackets.

ChatContext

Extra context passed to a participant.

Properties

All of the chat messages so far in the current chat session. Currently, only chat messages for the current participant are included.

ChatErrorDetails

Represents an error result from a chat request.

Properties

An error message that is shown to the user.

If set to true, the response will be partly blurred out.

ChatFollowup

A followup question suggested by the participant.

Properties

By default, the followup goes to the same participant/command. But this property can be set to invoke a different command.

A title to show the user. The prompt will be shown by default, when this is unspecified.

By default, the followup goes to the same participant/command. But this property can be set to invoke a different participant by ID. Followups can only invoke a participant that was contributed by the same extension.

The message to send to the chat.

ChatFollowupProvider

Will be invoked once after each request to get suggested followup questions to show the user. The user can click the followup to send it to the chat.

Methods

Provide followups for the given result.

ParameterDescription
result: ChatResult

This object has the same properties as the result returned from the participant callback, including metadata, but is not the same instance.

context: ChatContext

Extra context passed to a participant.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<ChatFollowup[]>

ChatLanguageModelToolReference

A reference to a tool that the user manually attached to their request, either using the #-syntax inline, or as an attachment via the paperclip button.

Properties

The tool name. Refers to a tool listed in lm.tools.

The start and end index of the reference in the prompt. When undefined, the reference was not part of the prompt text.

Note that the indices take the leading #-character into account which means they can be used to modify the prompt as-is.

ChatParticipant

A chat participant can be invoked by the user in a chat session, using the prefix. When it is invoked, it handles the chat request and is solely responsible for providing a response to the user. A ChatParticipant is created using chat.createChatParticipant.

Events

An event that fires whenever feedback for a result is received, e.g. when a user up- or down-votes a result.

The passed result is guaranteed to have the same properties as the result that was previously returned from this chat participant's handler.

Properties

This provider will be called once after each request to retrieve suggested followup questions.

An icon for the participant shown in UI.

A unique ID for this participant.

The handler for requests to this participant.

Methods

Dispose this participant and free resources.

ParameterDescription
ReturnsDescription
void

ChatParticipantToolToken

A token that can be passed to lm.invokeTool when invoking a tool inside the context of handling a chat request.

ChatPromptReference

A reference to a value that the user added to their chat request.

Properties

A unique identifier for this kind of reference.

A description of this value that could be used in an LLM prompt.

The start and end index of the reference in the prompt. When undefined, the reference was not part of the prompt text.

Note that the indices take the leading #-character into account which means they can used to modify the prompt as-is.

The value of this reference. The string | Uri | Location types are used today, but this could expand in the future.

ChatRequest

A request to a chat participant.

Properties

The name of the [ChatCommand command](#_ChatCommand command) that was selected for this request.

This is the model that is currently selected in the UI. Extensions can use this or use lm.selectChatModels to pick another model. Don't hold onto this past the lifetime of the request.

The prompt as entered by the user.

Information about references used in this request is stored in ChatRequest.references.

Note that the [ChatParticipant.name name](#_ChatParticipant.name name) of the participant and the [ChatCommand.name command](#_ChatCommand.name command) are not part of the prompt.

The list of references and their values that are referenced in the prompt.

Note that the prompt contains references as authored and that it is up to the participant to further modify the prompt, for instance by inlining reference values or creating links to headings which contain the resolved values. References are sorted in reverse by their range in the prompt. That means the last reference in the prompt is the first in this list. This simplifies string-manipulation of the prompt.

A token that can be passed to lm.invokeTool when invoking a tool inside the context of handling a chat request. This associates the tool invocation to a chat session.

The list of tools that the user attached to their request.

When a tool reference is present, the chat participant should make a chat request using LanguageModelChatToolMode.Required to force the language model to generate input for the tool. Then, the participant can use lm.invokeTool to use the tool attach the result to its request for the user's prompt. The tool may contribute useful extra context for the user's request.

ChatRequestHandler

ChatRequestTurn

Represents a user request in chat history.

Properties

The name of the [ChatCommand command](#_ChatCommand command) that was selected for this request.

The id of the chat participant to which this request was directed.

The prompt as entered by the user.

Information about references used in this request is stored in ChatRequestTurn.references.

Note that the [ChatParticipant.name name](#_ChatParticipant.name name) of the participant and the [ChatCommand.name command](#_ChatCommand.name command) are not part of the prompt.

The references that were used in this message.

The list of tools were attached to this request.

ChatResponseAnchorPart

Represents a part of a chat response that is an anchor, that is rendered as a link to a target.

Constructors

Create a new ChatResponseAnchorPart.

ParameterDescription
value: Uri | Location

A uri or location.

title?: string

An optional title that is rendered with value.

ReturnsDescription
ChatResponseAnchorPart

Properties

An optional title that is rendered with value.

The target of this anchor.

ChatResponseCommandButtonPart

Represents a part of a chat response that is a button that executes a command.

Constructors

Create a new ChatResponseCommandButtonPart.

ParameterDescription
value: Command

A Command that will be executed when the button is clicked.

ReturnsDescription
ChatResponseCommandButtonPart

Properties

The command that will be executed when the button is clicked.

ChatResponseFileTree

Represents a file tree structure in a chat response.

Properties

An array of child file trees, if the current file tree is a directory.

The name of the file or directory.

ChatResponseFileTreePart

Represents a part of a chat response that is a file tree.

Constructors

Create a new ChatResponseFileTreePart.

ParameterDescription
value: ChatResponseFileTree[]

File tree data.

baseUri: Uri

The base uri to which this file tree is relative.

ReturnsDescription
ChatResponseFileTreePart

Properties

The base uri to which this file tree is relative

File tree data.

ChatResponseMarkdownPart

Represents a part of a chat response that is formatted as Markdown.

Constructors

Create a new ChatResponseMarkdownPart.

ParameterDescription
value: string | MarkdownString

A markdown string or a string that should be interpreted as markdown. The boolean form of MarkdownString.isTrusted is NOT supported.

ReturnsDescription
ChatResponseMarkdownPart

Properties

A markdown string or a string that should be interpreted as markdown.

ChatResponsePart

Represents the different chat response types.

ChatResponseProgressPart

Represents a part of a chat response that is a progress message.

Constructors

Create a new ChatResponseProgressPart.

ParameterDescription
value: string

A progress message

ReturnsDescription
ChatResponseProgressPart

Properties

The progress message

ChatResponseReferencePart

Represents a part of a chat response that is a reference, rendered separately from the content.

Constructors

Create a new ChatResponseReferencePart.

ParameterDescription
value: Uri | Location

A uri or location

iconPath?: IconPath

Icon for the reference shown in UI

ReturnsDescription
ChatResponseReferencePart

Properties

The icon for the reference.

The reference target.

ChatResponseStream

The ChatResponseStream is how a participant is able to return content to the chat view. It provides several methods for streaming different types of content which will be rendered in an appropriate way in the chat view. A participant can use the helper method for the type of content it wants to return, or it can instantiate a ChatResponsePart and use the generic ChatResponseStream.push method to return it.

Methods

Push an anchor part to this stream. Short-hand for push(new ChatResponseAnchorPart(value, title)). An anchor is an inline reference to some type of resource.

ParameterDescription
value: Uri | Location

A uri or location.

title?: string

An optional title that is rendered with value.

ReturnsDescription
void

Push a command button part to this stream. Short-hand for push(new ChatResponseCommandButtonPart(value, title)).

ParameterDescription
command: Command

A Command that will be executed when the button is clicked.

ReturnsDescription
void

Push a filetree part to this stream. Short-hand for push(new ChatResponseFileTreePart(value)).

ParameterDescription
value: ChatResponseFileTree[]

File tree data.

baseUri: Uri

The base uri to which this file tree is relative.

ReturnsDescription
void

Push a markdown part to this stream. Short-hand for push(new ChatResponseMarkdownPart(value)).

See also ChatResponseStream.push

ParameterDescription
value: string | MarkdownString

A markdown string or a string that should be interpreted as markdown. The boolean form of MarkdownString.isTrusted is NOT supported.

ReturnsDescription
void

Push a progress part to this stream. Short-hand for push(new ChatResponseProgressPart(value)).

ParameterDescription
value: string

A progress message

ReturnsDescription
void

Pushes a part to this stream.

ParameterDescription
part: ChatResponsePart

A response part, rendered or metadata

ReturnsDescription
void

Push a reference to this stream. Short-hand for push(new ChatResponseReferencePart(value)).

Note that the reference is not rendered inline with the response.

ParameterDescription
value: Uri | Location

A uri or location

iconPath?: IconPath

Icon for the reference shown in UI

ReturnsDescription
void

ChatResponseTurn

Represents a chat participant's response in chat history.

Properties

The name of the command that this response came from.

The id of the chat participant that this response came from.

The content that was received from the chat participant. Only the stream parts that represent actual content (not metadata) are represented.

The result that was received from the chat participant.

ChatResult

The result of a chat request.

Properties

If the request resulted in an error, this property defines the error details.

Arbitrary metadata for this result. Can be anything, but must be JSON-stringifyable.

ChatResultFeedback

Represents user feedback for a result.

Properties

The kind of feedback that was received.

The ChatResult for which the user is providing feedback. This object has the same properties as the result returned from the participant callback, including metadata, but is not the same instance.

ChatResultFeedbackKind

Represents the type of user feedback received.

Enumeration Members

The user marked the result as unhelpful.

The user marked the result as helpful.

Clipboard

The clipboard provides read and write access to the system's clipboard.

Methods

Read the current clipboard contents as text.

ParameterDescription
ReturnsDescription
Thenable<string>

A thenable that resolves to a string.

Writes text into the clipboard.

ParameterDescription
value: string
ReturnsDescription
Thenable<void>

A thenable that resolves when writing happened.

CodeAction

A code action represents a change that can be performed in code, e.g. to fix a problem or to refactor code.

A CodeAction must set either edit and/or a command. If both are supplied, the edit is applied first, then the command is executed.

Constructors

Creates a new code action.

A code action must have at least a title and edits and/or a command.

ParameterDescription
title: string

The title of the code action.

kind?: CodeActionKind

The kind of the code action.

ReturnsDescription
CodeAction

Properties

A Command this code action executes.

If this command throws an exception, the editor displays the exception message to users in the editor at the current cursor position.

Diagnostics that this code action resolves.

Marks that the code action cannot currently be applied.

  • Disabled code actions are not shown in automatic lightbulb code action menu.

  • Disabled actions are shown as faded out in the code action menu when the user request a more specific type of code action, such as refactorings.

  • If the user has a keybinding that auto applies a code action and only a disabled code actions are returned, the editor will show the user an error message with reason in the editor.

ParameterDescription
reason: string

Human readable description of why the code action is currently disabled.

This is displayed in the code actions UI.

A workspace edit this code action performs.

Marks this as a preferred action. Preferred actions are used by the auto fix command and can be targeted by keybindings.

A quick fix should be marked preferred if it properly addresses the underlying error. A refactoring should be marked preferred if it is the most reasonable choice of actions to take.

Kind of the code action.

Used to filter code actions.

A short, human-readable, title for this code action.

CodeActionContext

Contains additional diagnostic information about the context in which a code action is run.

Properties

An array of diagnostics.

Requested kind of actions to return.

Actions not of this kind are filtered out before being shown by the lightbulb.

The reason why code actions were requested.

CodeActionKind

Kind of a code action.

Kinds are a hierarchical list of identifiers separated by ., e.g. "refactor.extract.function".

Code action kinds are used by the editor for UI elements such as the refactoring context menu. Users can also trigger code actions with a specific kind with the editor.action.codeAction command.

Static

Empty kind.

Base kind for all code actions applying to the entire notebook's scope. CodeActionKinds using this should always begin with notebook.

This requires that new CodeActions be created for it and contributed via extensions. Pre-existing kinds can not just have the new notebook. prefix added to them, as the functionality is unique to the full-notebook scope.

Notebook CodeActionKinds can be initialized as either of the following (both resulting in notebook.source.xyz):

  • const newKind = CodeActionKind.Notebook.append(CodeActionKind.Source.append('xyz').value)
  • const newKind = CodeActionKind.Notebook.append('source.xyz')

Example Kinds/Actions:

  • notebook.source.organizeImports (might move all imports to a new top cell)
  • notebook.source.normalizeVariableNames (might rename all variables to a standardized casing format)

Base kind for quickfix actions: quickfix.

Quick fix actions address a problem in the code and are shown in the normal code action context menu.

Base kind for refactoring actions: refactor

Refactoring actions are shown in the refactoring context menu.

Base kind for refactoring extraction actions: refactor.extract

Example extract actions:

  • Extract method
  • Extract function
  • Extract variable
  • Extract interface from class
  • ...

Base kind for refactoring inline actions: refactor.inline

Example inline actions:

  • Inline function
  • Inline variable
  • Inline constant
  • ...

Base kind for refactoring move actions: refactor.move

Example move actions:

  • Move a function to a new file
  • Move a property between classes
  • Move method to base class
  • ...

Base kind for refactoring rewrite actions: refactor.rewrite

Example rewrite actions:

  • Convert JavaScript function to class
  • Add or remove parameter
  • Encapsulate field
  • Make method static
  • ...

Base kind for source actions: source

Source code actions apply to the entire file. They must be explicitly requested and will not show in the normal lightbulb menu. Source actions can be run on save using editor.codeActionsOnSave and are also shown in the source context menu.

Base kind for auto-fix source actions: source.fixAll.

Fix all actions automatically fix errors that have a clear fix that do not require user input. They should not suppress errors or perform unsafe fixes such as generating new types or classes.

Base kind for an organize imports source action: source.organizeImports.

Constructors

Private constructor, use static CodeActionKind.XYZ to derive from an existing code action kind.

ParameterDescription
value: string

The value of the kind, such as refactor.extract.function.

ReturnsDescription
CodeActionKind

Properties

String value of the kind, e.g. "refactor.extract.function".

Methods

Create a new kind by appending a more specific selector to the current kind.

Does not modify the current kind.

ParameterDescription
parts: string
ReturnsDescription
CodeActionKind

Checks if other is a sub-kind of this CodeActionKind.

The kind "refactor.extract" for example contains "refactor.extract" and ``"refactor.extract.function", but not "unicorn.refactor.extract", or "refactor.extractAll"orrefactor`.

ParameterDescription
other: CodeActionKind

Kind to check.

ReturnsDescription
boolean

Checks if this code action kind intersects other.

The kind "refactor.extract" for example intersects refactor, "refactor.extract" and "refactor.extract.function", but not "unicorn.refactor.extract", or "refactor.extractAll".

ParameterDescription
other: CodeActionKind

Kind to check.

ReturnsDescription
boolean

CodeActionProvider<T>

Provides contextual actions for code. Code actions typically either fix problems or beautify/refactor code.

Code actions are surfaced to users in a few different ways:

  • The lightbulb feature, which shows a list of code actions at the current cursor position. The lightbulb's list of actions includes both quick fixes and refactorings.
  • As commands that users can run, such as Refactor. Users can run these from the command palette or with keybindings.
  • As source actions, such Organize Imports.
  • Quick fixes are shown in the problems view.
  • Change applied on save by the editor.codeActionsOnSave setting.

Methods

Get code actions for a given range in a document.

Only return code actions that are relevant to user for the requested range. Also keep in mind how the returned code actions will appear in the UI. The lightbulb widget and Refactor commands for instance show returned code actions as a list, so do not return a large number of code actions that will overwhelm the user.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

range: Range | Selection

The selector or range for which the command was invoked. This will always be a selection if the actions are being requested in the currently active editor.

context: CodeActionContext

Provides additional information about what code actions are being requested. You can use this to see what specific type of code actions are being requested by the editor in order to return more relevant actions and avoid returning irrelevant code actions that the editor will discard.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Array<Command | T>>

An array of code actions, such as quick fixes or refactorings. The lack of a result can be signaled by returning undefined, null, or an empty array.

We also support returning Command for legacy reasons, however all new extensions should return CodeAction object instead.

Given a code action fill in its edit-property. Changes to all other properties, like title, are ignored. A code action that has an edit will not be resolved.

Note that a code action provider that returns commands, not code actions, cannot successfully implement this function. Returning commands is deprecated and instead code actions should be returned.

ParameterDescription
codeAction: T

A code action.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved code action or a thenable that resolves to such. It is OK to return the given item. When no result is returned, the given item will be used.

CodeActionProviderMetadata

Metadata about the type of code actions that a CodeActionProvider provides.

Properties

Static documentation for a class of code actions.

Documentation from the provider is shown in the code actions menu if either:

  • Code actions of kind are requested by the editor. In this case, the editor will show the documentation that most closely matches the requested code action kind. For example, if a provider has documentation for both Refactor and RefactorExtract, when the user requests code actions for RefactorExtract, the editor will use the documentation for RefactorExtract instead of the documentation for Refactor.

  • Any code actions of kind are returned by the provider.

At most one documentation entry will be shown per provider.

List of CodeActionKinds that a CodeActionProvider may return.

This list is used to determine if a given CodeActionProvider should be invoked or not. To avoid unnecessary computation, every CodeActionProvider should list use providedCodeActionKinds. The list of kinds may either be generic, such as [CodeActionKind.Refactor], or list out every kind provided, such as [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...].

CodeActionTriggerKind

The reason why code actions were requested.

Enumeration Members

Code actions were explicitly requested by the user or by an extension.

Code actions were requested automatically.

This typically happens when current selection in a file changes, but can also be triggered when file content changes.

CodeLens

A code lens represents a Command that should be shown along with source text, like the number of references, a way to run tests, etc.

A code lens is unresolved when no command is associated to it. For performance reasons the creation of a code lens and resolving should be done to two stages.

See also

Constructors

Creates a new code lens object.

ParameterDescription
range: Range

The range to which this code lens applies.

command?: Command

The command associated to this code lens.

ReturnsDescription
CodeLens

Properties

The command this code lens represents.

true when there is a command associated.

The range in which this code lens is valid. Should only span a single line.

CodeLensProvider<T>

A code lens provider adds commands to source text. The commands will be shown as dedicated horizontal lines in between the source text.

Events

An optional event to signal that the code lenses from this provider have changed.

Methods

Compute a list of lenses. This call should return as fast as possible and if computing the commands is expensive implementors should only return code lens objects with the range set and implement resolve.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T[]>

An array of code lenses or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

This function will be called for each visible code lens, usually when scrolling and after calls to compute-lenses.

ParameterDescription
codeLens: T

Code lens that must be resolved.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The given, resolved code lens or thenable that resolves to such.

Color

Represents a color in RGBA space.

Constructors

Creates a new color instance.

ParameterDescription
red: number

The red component.

green: number

The green component.

blue: number

The blue component.

alpha: number

The alpha component.

ReturnsDescription
Color

Properties

The alpha component of this color in the range [0-1].

The blue component of this color in the range [0-1].

The green component of this color in the range [0-1].

The red component of this color in the range [0-1].

ColorInformation

Represents a color range from a document.

Constructors

Creates a new color range.

ParameterDescription
range: Range

The range the color appears in. Must not be empty.

color: Color

The value of the color.

ReturnsDescription
ColorInformation

Properties

The actual color value for this color range.

The range in the document where this color appears.

ColorPresentation

A color presentation object describes how a Color should be represented as text and what edits are required to refer to it from source code.

For some languages one color can have multiple presentations, e.g. css can represent the color red with the constant Red, the hex-value #ff0000, or in rgba and hsla forms. In csharp other representations apply, e.g. System.Drawing.Color.Red.

Constructors

Creates a new color presentation.

ParameterDescription
label: string

The label of this color presentation.

ReturnsDescription
ColorPresentation

Properties

An optional array of additional text edits that are applied when selecting this color presentation. Edits must not overlap with the main edit nor with themselves.

The label of this color presentation. It will be shown on the color picker header. By default this is also the text that is inserted when selecting this color presentation.

An edit which is applied to a document when selecting this presentation for the color. When falsy the label is used.

ColorTheme

Represents a color theme.

Properties

The kind of this color theme: light, dark, high contrast dark and high contrast light.

ColorThemeKind

Represents a color theme kind.

Enumeration Members

A light color theme.

A dark color theme.

A dark high contrast color theme.

A light high contrast color theme.

Command

Represents a reference to a command. Provides a title which will be used to represent a command in the UI and, optionally, an array of arguments which will be passed to the command handler function when invoked.

Properties

Arguments that the command handler should be invoked with.

The identifier of the actual command handler.

See also commands.registerCommand

Title of the command, like save.

A tooltip for the command, when represented in the UI.

Comment

A comment is displayed within the editor or the Comments Panel, depending on how it is provided.

Properties

The author information of the comment

The human-readable comment body

Context value of the comment. This can be used to contribute comment specific actions. For example, a comment is given a context value as editable. When contributing actions to comments/comment/title using menus extension point, you can specify context value for key comment in when expression like comment == editable.

    "contributes": {
        "menus": {
            "comments/comment/title": [
                {
                    "command": "extension.deleteComment",
                    "when": "comment == editable"
                }
            ]
        }
    }

This will show action extension.deleteComment only for comments with contextValue is editable.

Optional label describing the Comment Label will be rendered next to authorName if exists.

Comment mode of the comment

Optional reactions of the Comment

Optional timestamp that will be displayed in comments. The date will be formatted according to the user's locale and settings.

CommentAuthorInformation

Author information of a Comment

Properties

The optional icon path for the author

The display name of the author of the comment

CommentController

A comment controller is able to provide comments support to the editor and provide users various ways to interact with comments.

Properties

Optional commenting range provider. Provide a list ranges which support commenting to any given resource uri.

If not provided, users cannot leave any comments.

The id of this comment controller.

The human-readable label of this comment controller.

Comment controller options

Optional reaction handler for creating and deleting reactions on a Comment.

ParameterDescription
comment: Comment
reaction: CommentReaction
ReturnsDescription
Thenable<void>

Methods

Create a comment thread. The comment thread will be displayed in visible text editors (if the resource matches) and Comments Panel once created.

ParameterDescription
uri: Uri

The uri of the document the thread has been created on.

range: Range

The range the comment thread is located within the document.

comments: readonly Comment[]

The ordered comments of the thread.

ReturnsDescription
CommentThread

Dispose this comment controller.

Once disposed, all comment threads created by this comment controller will also be removed from the editor and Comments Panel.

ParameterDescription
ReturnsDescription
void

CommentingRangeProvider

Commenting range provider for a comment controller.

Methods

Provide a list of ranges which allow new comment threads creation or null for a given document

ParameterDescription
document: TextDocument
token: CancellationToken
ReturnsDescription
ProviderResult<Range[] | CommentingRanges>

CommentingRanges

The ranges a CommentingRangeProvider enables commenting on.

Properties

Enables comments to be added to a file without a specific range.

The ranges which allow new comment threads creation.

CommentMode

Comment mode of a Comment

Enumeration Members

Displays the comment editor

Displays the preview of the comment

CommentOptions

Represents a comment controller's options.

Properties

An optional string to show as placeholder in the comment input box when it's focused.

An optional string to show on the comment input box when it's collapsed.

CommentReaction

Reactions of a Comment

Properties

Whether the author of the comment has reacted to this reaction

The number of users who have reacted to this reaction

Icon for the reaction shown in UI.

The human-readable label for the reaction

CommentReply

Command argument for actions registered in comments/commentThread/context.

Properties

The value in the comment editor

The active comment thread

CommentRule

Describes how comments for a language work.

Properties

The block comment character pair, like /* block comment *&#47;

The line comment token, like // this is a comment

CommentThread

A collection of comments representing a conversation at a particular range in a document.

Properties

Whether the thread supports reply. Defaults to true.

Whether the thread should be collapsed or expanded when opening the document. Defaults to Collapsed.

The ordered comments of the thread.

Context value of the comment thread. This can be used to contribute thread specific actions. For example, a comment thread is given a context value as editable. When contributing actions to comments/commentThread/title using menus extension point, you can specify context value for key commentThread in when expression like commentThread == editable.

"contributes": {
  "menus": {
    "comments/commentThread/title": [
      {
        "command": "extension.deleteCommentThread",
        "when": "commentThread == editable"
      }
    ]
  }
}

This will show action extension.deleteCommentThread only for comment threads with contextValue is editable.

The optional human-readable label describing the Comment Thread

The range the comment thread is located within the document. The thread icon will be shown at the last line of the range. When set to undefined, the comment will be associated with the file, and not a specific range.

The optional state of a comment thread, which may affect how the comment is displayed.

The uri of the document the thread has been created on.

Methods

Dispose this comment thread.

Once disposed, this comment thread will be removed from visible editors and Comment Panel when appropriate.

ParameterDescription
ReturnsDescription
void

CommentThreadCollapsibleState

Collapsible state of a comment thread

Enumeration Members

Determines an item is collapsed

Determines an item is expanded

CommentThreadState

The state of a comment thread.

Enumeration Members

Unresolved thread state

Resolved thread state

CompletionContext

Contains additional information about the context in which completion provider is triggered.

Properties

Character that triggered the completion item provider.

undefined if the provider was not triggered by a character.

The trigger character is already in the document when the completion provider is triggered.

How the completion was triggered.

CompletionItem

A completion item represents a text snippet that is proposed to complete text that is being typed.

It is sufficient to create a completion item from just a label. In that case the completion item will replace the word until the cursor with the given label or insertText. Otherwise the given edit is used.

When selecting a completion item in the editor its defined or synthesized text edit will be applied to all cursors/selections whereas additionalTextEdits will be applied as provided.

See also

Constructors

Creates a new completion item.

Completion items must have at least a label which then will be used as insert text as well as for sorting and filtering.

ParameterDescription
label: string | CompletionItemLabel

The label of the completion.

kind?: CompletionItemKind

The kind of the completion.

ReturnsDescription
CompletionItem

Properties

An optional array of additional text edits that are applied when selecting this completion. Edits must not overlap with the main edit nor with themselves.

An optional Command that is executed after inserting this completion. Note that additional modifications to the current document should be described with the additionalTextEdits-property.

An optional set of characters that when pressed while this completion is active will accept it first and then type that character. Note that all commit characters should have length=1 and that superfluous characters will be ignored.

A human-readable string with additional information about this item, like type or symbol information.

A human-readable string that represents a doc-comment.

A string that should be used when filtering a set of completion items. When falsy the label is used.

Note that the filter text is matched against the leading word (prefix) which is defined by the range-property.

A string or snippet that should be inserted in a document when selecting this completion. When falsy the label is used.

Keep whitespace of the insertText as is. By default, the editor adjusts leading whitespace of new lines so that they match the indentation of the line for which the item is accepted - setting this to true will prevent that.

The kind of this completion item. Based on the kind an icon is chosen by the editor.

The label of this completion item. By default this is also the text that is inserted when selecting this completion.

Select this item when showing. Note that only one completion item can be selected and that the editor decides which item that is. The rule is that the first item of those that match best is selected.

A range or a insert and replace range selecting the text that should be replaced by this completion item.

When omitted, the range of the current word is used as replace-range and as insert-range the start of the current word to the current position is used.

Note 1: A range must be a single line and it must contain the position at which completion has been requested. Note 2: A insert range must be a prefix of a replace range, that means it must be contained and starting at the same position.

A string that should be used when comparing this item with other items. When falsy the label is used.

Note that sortText is only used for the initial ordering of completion items. When having a leading word (prefix) ordering is based on how well completions match that prefix and the initial ordering is only used when completions match equally well. The prefix is defined by the range-property and can therefore be different for each completion.

Tags for this completion item.

  • deprecated - Use CompletionItem.insertText and CompletionItem.range instead.

An edit which is applied to a document when selecting this completion. When an edit is provided the value of insertText is ignored.

The Range of the edit must be single-line and on the same line completions were requested at.

CompletionItemKind

Completion item kinds.

Enumeration Members

The Text completion item kind.

The Method completion item kind.

The Function completion item kind.

The Constructor completion item kind.

The Field completion item kind.

The Variable completion item kind.

The Class completion item kind.

The Interface completion item kind.

The Module completion item kind.

The Property completion item kind.

The Unit completion item kind.

The Value completion item kind.

The Enum completion item kind.

The Keyword completion item kind.

The Snippet completion item kind.

The Color completion item kind.

The File completion item kind.

The Reference completion item kind.

The Folder completion item kind.

The EnumMember completion item kind.

The Constant completion item kind.

The Struct completion item kind.

The Event completion item kind.

The Operator completion item kind.

The TypeParameter completion item kind.

The User completion item kind.

The Issue completion item kind.

CompletionItemLabel

A structured label for a completion item.

Properties

An optional string which is rendered less prominently after CompletionItemLabel.detail. Should be used for fully qualified names or file path.

An optional string which is rendered less prominently directly after label, without any spacing. Should be used for function signatures or type annotations.

The label of this completion item.

By default this is also the text that is inserted when this completion is selected.

CompletionItemProvider<T>

The completion item provider interface defines the contract between extensions and IntelliSense.

Providers can delay the computation of the detail and documentation properties by implementing the resolveCompletionItem-function. However, properties that are needed for the initial sorting and filtering, like sortText, filterText, insertText, and range, must not be changed during resolve.

Providers are asked for completions either explicitly by a user gesture or -depending on the configuration- implicitly when typing words or trigger characters.

Methods

Provide completion items for the given position and document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

context: CompletionContext

How the completion was triggered.

ReturnsDescription
ProviderResult<CompletionList<T> | T[]>

An array of completions, a completion list, or a thenable that resolves to either. The lack of a result can be signaled by returning undefined, null, or an empty array.

Given a completion item fill in more data, like doc-comment or details.

The editor will only resolve a completion item once.

Note that this function is called when completion items are already showing in the UI or when an item has been selected for insertion. Because of that, no property that changes the presentation (label, sorting, filtering etc) or the (primary) insert behaviour (insertText) can be changed.

This function may fill in additionalTextEdits. However, that means an item might be inserted before resolving is done and in that case the editor will do a best effort to still apply those additional text edits.

ParameterDescription
item: T

A completion item currently active in the UI.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved completion item or a thenable that resolves to of such. It is OK to return the given item. When no result is returned, the given item will be used.

CompletionItemTag

Completion item tags are extra annotations that tweak the rendering of a completion item.

Enumeration Members

Render a completion as obsolete, usually using a strike-out.

CompletionList<T>

Represents a collection of completion items to be presented in the editor.

Constructors

Creates a new completion list.

ParameterDescription
items?: T[]

The completion items.

isIncomplete?: boolean

The list is not complete.

ReturnsDescription
CompletionList<T>

Properties

This list is not complete. Further typing should result in recomputing this list.

The completion items.

CompletionTriggerKind

How a completion provider was triggered

Enumeration Members

Completion was triggered normally.

Completion was triggered by a trigger character.

Completion was re-triggered as current completion list is incomplete

ConfigurationChangeEvent

An event describing the change in Configuration

Methods

Checks if the given section has changed. If scope is provided, checks if the section has changed for resources under the given scope.

ParameterDescription
section: string

Configuration name, supports dotted names.

scope?: ConfigurationScope

A scope in which to check.

ReturnsDescription
boolean

true if the given section has changed.

ConfigurationScope

The configuration scope which can be:

  • a Uri representing a resource
  • a TextDocument representing an open text document
  • a WorkspaceFolder representing a workspace folder
  • an object containing:
    • uri: an optional Uri of a text document
    • languageId: the language identifier of a text document

ConfigurationTarget

The configuration target

Enumeration Members

Global configuration

Workspace configuration

Workspace folder configuration

CustomDocument

Represents a custom document used by a CustomEditorProvider.

Custom documents are only used within a given CustomEditorProvider. The lifecycle of a CustomDocument is managed by the editor. When no more references remain to a CustomDocument, it is disposed of.

Properties

The associated uri for this document.

Methods

Dispose of the custom document.

This is invoked by the editor when there are no more references to a given CustomDocument (for example when all editors associated with the document have been closed.)

ParameterDescription
ReturnsDescription
void

CustomDocumentBackup

A backup for an CustomDocument.

Properties

Unique identifier for the backup.

This id is passed back to your extension in openCustomDocument when opening a custom editor from a backup.

Methods

Delete the current backup.

This is called by the editor when it is clear the current backup is no longer needed, such as when a new backup is made or when the file is saved.

ParameterDescription
ReturnsDescription
void

CustomDocumentBackupContext

Additional information used to implement CustomDocumentBackup.

Properties

Suggested file location to write the new backup.

Note that your extension is free to ignore this and use its own strategy for backup.

If the editor is for a resource from the current workspace, destination will point to a file inside ExtensionContext.storagePath. The parent folder of destination may not exist, so make sure to created it before writing the backup to this location.

CustomDocumentContentChangeEvent<T>

Event triggered by extensions to signal to the editor that the content of a CustomDocument has changed.

See also CustomEditorProvider.onDidChangeCustomDocument.

Properties

The document that the change is for.

CustomDocumentEditEvent<T>

Event triggered by extensions to signal to the editor that an edit has occurred on an CustomDocument.

See also CustomEditorProvider.onDidChangeCustomDocument.

Properties

The document that the edit is for.

Display name describing the edit.

This will be shown to users in the UI for undo/redo operations.

Methods

Redo the edit operation.

This is invoked by the editor when the user redoes this edit. To implement redo, your extension should restore the document and editor to the state they were in just after this edit was added to the editor's internal edit stack by CustomEditorProvider.onDidChangeCustomDocument.

ParameterDescription
ReturnsDescription
void | Thenable<void>

Undo the edit operation.

This is invoked by the editor when the user undoes this edit. To implement undo, your extension should restore the document and editor to the state they were in just before this edit was added to the editor's internal edit stack by CustomEditorProvider.onDidChangeCustomDocument.

ParameterDescription
ReturnsDescription
void | Thenable<void>

CustomDocumentOpenContext

Additional information about the opening custom document.

Properties

The id of the backup to restore the document from or undefined if there is no backup.

If this is provided, your extension should restore the editor from the backup instead of reading the file from the user's workspace.

If the URI is an untitled file, this will be populated with the byte data of that file

If this is provided, your extension should utilize this byte data rather than executing fs APIs on the URI passed in

CustomEditorProvider<T>

Provider for editable custom editors that use a custom document model.

Custom editors use CustomDocument as their document model instead of a TextDocument. This gives extensions full control over actions such as edit, save, and backup.

You should use this type of custom editor when dealing with binary files or more complex scenarios. For simple text based documents, use CustomTextEditorProvider instead.

Events

Signal that an edit has occurred inside a custom editor.

This event must be fired by your extension whenever an edit happens in a custom editor. An edit can be anything from changing some text, to cropping an image, to reordering a list. Your extension is free to define what an edit is and what data is stored on each edit.

Firing onDidChangeCustomDocument causes the editors to be marked as being dirty. This is cleared when the user either saves or reverts the file.

Editors that support undo/redo must fire a CustomDocumentEditEvent whenever an edit happens. This allows users to undo and redo the edit using the editor's standard keyboard shortcuts. The editor will also mark the editor as no longer being dirty if the user undoes all edits to the last saved state.

Editors that support editing but cannot use the editor's standard undo/redo mechanism must fire a CustomDocumentContentChangeEvent. The only way for a user to clear the dirty state of an editor that does not support undo/redo is to either save or revert the file.

An editor should only ever fire CustomDocumentEditEvent events, or only ever fire CustomDocumentContentChangeEvent events.

Methods

Back up a dirty custom document.

Backups are used for hot exit and to prevent data loss. Your backupCustomDocument method should persist the resource in its current state, i.e. with the edits applied. Most commonly this means saving the resource to disk in the ExtensionContext.storagePath. When the editor reloads and your custom editor is opened for a resource, your extension should first check to see if any backups exist for the resource. If there is a backup, your extension should load the file contents from there instead of from the resource in the workspace.

backupCustomDocument is triggered approximately one second after the user stops editing the document. If the user rapidly edits the document, backupCustomDocument will not be invoked until the editing stops.

backupCustomDocument is not invoked when auto save is enabled (since auto save already persists the resource).

ParameterDescription
document: T

Document to backup.

context: CustomDocumentBackupContext

Information that can be used to backup the document.

cancellation: CancellationToken

Token that signals the current backup since a new backup is coming in. It is up to your extension to decided how to respond to cancellation. If for example your extension is backing up a large file in an operation that takes time to complete, your extension may decide to finish the ongoing backup rather than cancelling it to ensure that the editor has some valid backup.

ReturnsDescription
Thenable<CustomDocumentBackup>

A Thenable signaling that the backup has completed.

Create a new document for a given resource.

openCustomDocument is called when the first time an editor for a given resource is opened. The opened document is then passed to resolveCustomEditor so that the editor can be shown to the user.

Already opened CustomDocuments are re-used if the user opened additional editors. When all editors for a given resource are closed, the CustomDocuments is disposed of. Opening an editor at this point will trigger another call to openCustomDocument.

ParameterDescription
uri: Uri

Uri of the document to open.

openContext: CustomDocumentOpenContext

Additional information about the opening custom document.

token: CancellationToken

A cancellation token that indicates the result is no longer needed.

ReturnsDescription
T | Thenable<T>

The custom document.

Resolve a custom editor for a given resource.

This is called whenever the user opens a new editor for this CustomEditorProvider.

ParameterDescription
document: T

Document for the resource being resolved.

webviewPanel: WebviewPanel

The webview panel used to display the editor UI for this resource.

During resolve, the provider must fill in the initial html for the content webview panel and hook up all the event listeners on it that it is interested in. The provider can also hold onto the WebviewPanel to use later for example in a command. See WebviewPanel for additional details.

token: CancellationToken

A cancellation token that indicates the result is no longer needed.

ReturnsDescription
void | Thenable<void>

Optional thenable indicating that the custom editor has been resolved.

Revert a custom document to its last saved state.

This method is invoked by the editor when the user triggers File: Revert File in a custom editor. (Note that this is only used using the editor's File: Revert File command and not on a git revert of the file).

The implementer must make sure all editor instances (webviews) for document are displaying the document in the same state is saved in. This usually means reloading the file from the workspace.

ParameterDescription
document: T

Document to revert.

cancellation: CancellationToken

Token that signals the revert is no longer required.

ReturnsDescription
Thenable<void>

A Thenable signaling that the revert has completed.

Save a custom document.

This method is invoked by the editor when the user saves a custom editor. This can happen when the user triggers save while the custom editor is active, by commands such as save all, or by auto save if enabled.

The implementer must persist the custom editor. This usually means writing the file data for the custom document to disk. After saveCustomDocument completes, any associated editor instances will no longer be marked as dirty.

ParameterDescription
document: T

Document to save.

cancellation: CancellationToken

Token that signals the save is no longer required (for example, if another save was triggered).

ReturnsDescription
Thenable<void>

A Thenable that saving has completed.

Save a custom document to a different location.

This method is invoked by the editor when the user triggers 'save as' on a custom editor. The implementer must persist the custom editor to destination.

When the user accepts save as, the current editor is be replaced by an non-dirty editor for the newly saved file.

ParameterDescription
document: T

Document to save.

destination: Uri

Location to save to.

cancellation: CancellationToken

Token that signals the save is no longer required.

ReturnsDescription
Thenable<void>

A Thenable signaling that saving has completed.

CustomExecution

Class used to execute an extension callback as a task.

Constructors

Constructs a CustomExecution task object. The callback will be executed when the task is run, at which point the extension should return the Pseudoterminal it will "run in". The task should wait to do further execution until Pseudoterminal.open is called. Task cancellation should be handled using Pseudoterminal.close. When the task is complete fire Pseudoterminal.onDidClose.

ParameterDescription
callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>

The callback that will be called when the task is started by a user. Any ${} style variables that were in the task definition will be resolved and passed into the callback as resolvedDefinition.

ReturnsDescription
CustomExecution

CustomReadonlyEditorProvider<T>

Provider for readonly custom editors that use a custom document model.

Custom editors use CustomDocument as their document model instead of a TextDocument.

You should use this type of custom editor when dealing with binary files or more complex scenarios. For simple text based documents, use CustomTextEditorProvider instead.

Methods

Create a new document for a given resource.

openCustomDocument is called when the first time an editor for a given resource is opened. The opened document is then passed to resolveCustomEditor so that the editor can be shown to the user.

Already opened CustomDocuments are re-used if the user opened additional editors. When all editors for a given resource are closed, the CustomDocuments is disposed of. Opening an editor at this point will trigger another call to openCustomDocument.

ParameterDescription
uri: Uri

Uri of the document to open.

openContext: CustomDocumentOpenContext

Additional information about the opening custom document.

token: CancellationToken

A cancellation token that indicates the result is no longer needed.

ReturnsDescription
T | Thenable<T>

The custom document.

Resolve a custom editor for a given resource.

This is called whenever the user opens a new editor for this CustomEditorProvider.

ParameterDescription
document: T

Document for the resource being resolved.

webviewPanel: WebviewPanel

The webview panel used to display the editor UI for this resource.

During resolve, the provider must fill in the initial html for the content webview panel and hook up all the event listeners on it that it is interested in. The provider can also hold onto the WebviewPanel to use later for example in a command. See WebviewPanel for additional details.

token: CancellationToken

A cancellation token that indicates the result is no longer needed.

ReturnsDescription
void | Thenable<void>

Optional thenable indicating that the custom editor has been resolved.

CustomTextEditorProvider

Provider for text based custom editors.

Text based custom editors use a TextDocument as their data model. This considerably simplifies implementing a custom editor as it allows the editor to handle many common operations such as undo and backup. The provider is responsible for synchronizing text changes between the webview and the TextDocument.

Methods

Resolve a custom editor for a given text resource.

This is called when a user first opens a resource for a CustomTextEditorProvider, or if they reopen an existing editor using this CustomTextEditorProvider.

ParameterDescription
document: TextDocument

Document for the resource to resolve.

webviewPanel: WebviewPanel

The webview panel used to display the editor UI for this resource.

During resolve, the provider must fill in the initial html for the content webview panel and hook up all the event listeners on it that it is interested in. The provider can also hold onto the WebviewPanel to use later for example in a command. See WebviewPanel for additional details.

token: CancellationToken

A cancellation token that indicates the result is no longer needed.

ReturnsDescription
void | Thenable<void>

Thenable indicating that the custom editor has been resolved.

DataTransfer

A map containing a mapping of the mime type of the corresponding transferred data.

Drag and drop controllers that implement handleDrag can add additional mime types to the data transfer. These additional mime types will only be included in the handleDrop when the drag was initiated from an element in the same drag and drop controller.

Constructors

ParameterDescription
ReturnsDescription
DataTransfer

Methods

Get a new iterator with the [mime, item] pairs for each element in this data transfer.

ParameterDescription
ReturnsDescription
IterableIterator<[mimeType: string, item: DataTransferItem]>

Allows iteration through the data transfer items.

ParameterDescription
callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void

Callback for iteration through the data transfer items.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
void

Retrieves the data transfer item for a given mime type.

ParameterDescription
mimeType: string

The mime type to get the data transfer item for, such as text/plain or image/png. Mimes type look ups are case-insensitive.

Special mime types:

  • text/uri-list — A string with toString()ed Uris separated by \r\n. To specify a cursor position in the file, set the Uri's fragment to L3,5, where 3 is the line number and 5 is the column number.
ReturnsDescription
DataTransferItem

Sets a mime type to data transfer item mapping.

ParameterDescription
mimeType: string

The mime type to set the data for. Mimes types stored in lower case, with case-insensitive looks up.

value: DataTransferItem

The data transfer item for the given mime type.

ReturnsDescription
void

DataTransferFile

A file associated with a DataTransferItem.

Instances of this type can only be created by the editor and not by extensions.

Properties

The name of the file.

The full file path of the file.

May be undefined on web.

Methods

The full file contents of the file.

ParameterDescription
ReturnsDescription
Thenable<Uint8Array>

DataTransferItem

Encapsulates data transferred during drag and drop operations.

Constructors

ParameterDescription
value: any

Custom data stored on this item. Can be retrieved using DataTransferItem.value.

ReturnsDescription
DataTransferItem

Properties

Custom data stored on this item.

You can use value to share data across operations. The original object can be retrieved so long as the extension that created the DataTransferItem runs in the same extension host.

Methods

Try getting the file associated with this data transfer item.

Note that the file object is only valid for the scope of the drag and drop operation.

ParameterDescription
ReturnsDescription
DataTransferFile

The file for the data transfer or undefined if the item is either not a file or the file data cannot be accessed.

Get a string representation of this item.

If DataTransferItem.value is an object, this returns the result of json stringifying DataTransferItem.value value.

ParameterDescription
ReturnsDescription
Thenable<string>

DebugAdapter

A debug adapter that implements the Debug Adapter Protocol can be registered with the editor if it implements the DebugAdapter interface.

Events

An event which fires after the debug adapter has sent a Debug Adapter Protocol message to the editor. Messages can be requests, responses, or events.

Methods

Dispose this object.

ParameterDescription
ReturnsDescription
any

Handle a Debug Adapter Protocol message. Messages can be requests, responses, or events. Results or errors are returned via onSendMessage events.

ParameterDescription
message: DebugProtocolMessage

A Debug Adapter Protocol message

ReturnsDescription
void

DebugAdapterDescriptor

Represents the different types of debug adapters

DebugAdapterDescriptorFactory

A debug adapter factory that creates debug adapter descriptors.

Methods

'createDebugAdapterDescriptor' is called at the start of a debug session to provide details about the debug adapter to use. These details must be returned as objects of type DebugAdapterDescriptor. Currently two types of debug adapters are supported:

  • a debug adapter executable is specified as a command path and arguments (see DebugAdapterExecutable),
  • a debug adapter server reachable via a communication port (see DebugAdapterServer). If the method is not implemented the default behavior is this: createDebugAdapter(session: DebugSession, executable: DebugAdapterExecutable) { if (typeof session.configuration.debugServer === 'number') { return new DebugAdapterServer(session.configuration.debugServer); } return executable; }
ParameterDescription
session: DebugSession

The debug session for which the debug adapter will be used.

executable: DebugAdapterExecutable

The debug adapter's executable information as specified in the package.json (or undefined if no such information exists).

ReturnsDescription
ProviderResult<DebugAdapterDescriptor>

a debug adapter descriptor or undefined.

DebugAdapterExecutable

Represents a debug adapter executable and optional arguments and runtime options passed to it.

Constructors

Creates a description for a debug adapter based on an executable program.

ParameterDescription
command: string

The command or executable path that implements the debug adapter.

args?: string[]

Optional arguments to be passed to the command or executable.

options?: DebugAdapterExecutableOptions

Optional options to be used when starting the command or executable.

ReturnsDescription
DebugAdapterExecutable

Properties

The arguments passed to the debug adapter executable. Defaults to an empty array.

The command or path of the debug adapter executable. A command must be either an absolute path of an executable or the name of an command to be looked up via the PATH environment variable. The special value 'node' will be mapped to the editor's built-in Node.js runtime.

Optional options to be used when the debug adapter is started. Defaults to undefined.

DebugAdapterExecutableOptions

Options for a debug adapter executable.

Properties

The current working directory for the executed debug adapter.

The additional environment of the executed program or shell. If omitted the parent process' environment is used. If provided it is merged with the parent process' environment.

DebugAdapterInlineImplementation

A debug adapter descriptor for an inline implementation.

Constructors

Create a descriptor for an inline implementation of a debug adapter.

ParameterDescription
implementation: DebugAdapter
ReturnsDescription
DebugAdapterInlineImplementation

DebugAdapterNamedPipeServer

Represents a debug adapter running as a Named Pipe (on Windows)/UNIX Domain Socket (on non-Windows) based server.

Constructors

Create a description for a debug adapter running as a Named Pipe (on Windows)/UNIX Domain Socket (on non-Windows) based server.

ParameterDescription
path: string
ReturnsDescription
DebugAdapterNamedPipeServer

Properties

The path to the NamedPipe/UNIX Domain Socket.

DebugAdapterServer

Represents a debug adapter running as a socket based server.

Constructors

Create a description for a debug adapter running as a socket based server.

ParameterDescription
port: number
host?: string
ReturnsDescription
DebugAdapterServer

Properties

The host.

The port.

DebugAdapterTracker

A Debug Adapter Tracker is a means to track the communication between the editor and a Debug Adapter.

Events

The debug adapter has sent a Debug Adapter Protocol message to the editor.

ParameterDescription
message: any
ReturnsDescription
void

The debug adapter is about to receive a Debug Adapter Protocol message from the editor.

ParameterDescription
message: any
ReturnsDescription
void

A session with the debug adapter is about to be started.

ParameterDescription
ReturnsDescription
void

The debug adapter session is about to be stopped.

ParameterDescription
ReturnsDescription
void

Methods

An error with the debug adapter has occurred.

ParameterDescription
error: Error
ReturnsDescription
void

The debug adapter has exited with the given exit code or signal.

ParameterDescription
code: number
signal: string
ReturnsDescription
void

DebugAdapterTrackerFactory

A debug adapter factory that creates debug adapter trackers.

Methods

The method 'createDebugAdapterTracker' is called at the start of a debug session in order to return a "tracker" object that provides read-access to the communication between the editor and a debug adapter.

ParameterDescription
session: DebugSession

The debug session for which the debug adapter tracker will be used.

ReturnsDescription
ProviderResult<DebugAdapterTracker>

A debug adapter tracker or undefined.

DebugConfiguration

Configuration for a debug session.

Properties

The name of the debug session.

The request type of the debug session.

The type of the debug session.

DebugConfigurationProvider

A debug configuration provider allows to add debug configurations to the debug service and to resolve launch configurations before they are used to start a debug session. A debug configuration provider is registered via debug.registerDebugConfigurationProvider.

Methods

Provides debug configuration to the debug service. If more than one debug configuration provider is registered for the same type, debug configurations are concatenated in arbitrary order.

ParameterDescription
folder: WorkspaceFolder

The workspace folder for which the configurations are used or undefined for a folderless setup.

token?: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<DebugConfiguration[]>

An array of debug configurations.

Resolves a debug configuration by filling in missing values or by adding/changing/removing attributes. If more than one debug configuration provider is registered for the same type, the resolveDebugConfiguration calls are chained in arbitrary order and the initial debug configuration is piped through the chain. Returning the value 'undefined' prevents the debug session from starting. Returning the value 'null' prevents the debug session from starting and opens the underlying debug configuration instead.

ParameterDescription
folder: WorkspaceFolder

The workspace folder from which the configuration originates from or undefined for a folderless setup.

debugConfiguration: DebugConfiguration

The debug configuration to resolve.

token?: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<DebugConfiguration>

The resolved debug configuration or undefined or null.

This hook is directly called after 'resolveDebugConfiguration' but with all variables substituted. It can be used to resolve or verify a debug configuration by filling in missing values or by adding/changing/removing attributes. If more than one debug configuration provider is registered for the same type, the 'resolveDebugConfigurationWithSubstitutedVariables' calls are chained in arbitrary order and the initial debug configuration is piped through the chain. Returning the value 'undefined' prevents the debug session from starting. Returning the value 'null' prevents the debug session from starting and opens the underlying debug configuration instead.

ParameterDescription
folder: WorkspaceFolder

The workspace folder from which the configuration originates from or undefined for a folderless setup.

debugConfiguration: DebugConfiguration

The debug configuration to resolve.

token?: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<DebugConfiguration>

The resolved debug configuration or undefined or null.

DebugConfigurationProviderTriggerKind

A DebugConfigurationProviderTriggerKind specifies when the provideDebugConfigurations method of a DebugConfigurationProvider is triggered. Currently there are two situations: to provide the initial debug configurations for a newly created launch.json or to provide dynamically generated debug configurations when the user asks for them through the UI (e.g. via the "Select and Start Debugging" command). A trigger kind is used when registering a DebugConfigurationProvider with debug.registerDebugConfigurationProvider.

Enumeration Members

DebugConfigurationProvider.provideDebugConfigurations is called to provide the initial debug configurations for a newly created launch.json.

DebugConfigurationProvider.provideDebugConfigurations is called to provide dynamically generated debug configurations when the user asks for them through the UI (e.g. via the "Select and Start Debugging" command).

DebugConsole

Represents the debug console.

Methods

Append the given value to the debug console.

ParameterDescription
value: string

A string, falsy values will not be printed.

ReturnsDescription
void

Append the given value and a line feed character to the debug console.

ParameterDescription
value: string

A string, falsy values will be printed.

ReturnsDescription
void

DebugConsoleMode

Debug console mode used by debug session, see options.

Enumeration Members

Debug session should have a separate debug console.

Debug session should share debug console with its parent session. This value has no effect for sessions which do not have a parent session.

DebugProtocolBreakpoint

A DebugProtocolBreakpoint is an opaque stand-in type for the Breakpoint type defined in the Debug Adapter Protocol.

DebugProtocolMessage

A DebugProtocolMessage is an opaque stand-in type for the ProtocolMessage type defined in the Debug Adapter Protocol.

DebugProtocolSource

A DebugProtocolSource is an opaque stand-in type for the Source type defined in the Debug Adapter Protocol.

DebugSession

A debug session.

Properties

The "resolved" debug configuration of this session. "Resolved" means that

  • all variables have been substituted and
  • platform specific attribute sections have been "flattened" for the matching platform and removed for non-matching platforms.

The unique ID of this debug session.

The debug session's name is initially taken from the debug configuration. Any changes will be properly reflected in the UI.

The parent session of this debug session, if it was created as a child.

See also DebugSessionOptions.parentSession

The debug session's type from the debug configuration.

The workspace folder of this session or undefined for a folderless setup.

Methods

Send a custom request to the debug adapter.

ParameterDescription
command: string
args?: any
ReturnsDescription
Thenable<any>

Maps a breakpoint in the editor to the corresponding Debug Adapter Protocol (DAP) breakpoint that is managed by the debug adapter of the debug session. If no DAP breakpoint exists (either because the editor breakpoint was not yet registered or because the debug adapter is not interested in the breakpoint), the value undefined is returned.

ParameterDescription
breakpoint: Breakpoint

A Breakpoint in the editor.

ReturnsDescription
Thenable<DebugProtocolBreakpoint>

A promise that resolves to the Debug Adapter Protocol breakpoint or undefined.

DebugSessionCustomEvent

A custom Debug Adapter Protocol event received from a debug session.

Properties

Event specific information.

Type of event.

The debug session for which the custom event was received.

DebugSessionOptions

Properties

Controls if the debug session's parent session is shown in the CALL STACK view even if it has only a single child. By default, the debug session will never hide its parent. If compact is true, debug sessions with a single child are hidden in the CALL STACK view to make the tree more compact.

Controls whether this session should have a separate debug console or share it with the parent session. Has no effect for sessions which do not have a parent session. Defaults to Separate.

Controls whether lifecycle requests like 'restart' are sent to the newly created session or its parent session. By default (if the property is false or missing), lifecycle requests are sent to the new session. This property is ignored if the session has no parent session.

Controls whether this session should run without debugging, thus ignoring breakpoints. When this property is not specified, the value from the parent session (if there is one) is used.

When specified the newly created debug session is registered as a "child" session of this "parent" debug session.

When true, the window statusbar color will not be changed for this session.

When true, the debug toolbar will not be shown for this session.

When true, the debug viewlet will not be automatically revealed for this session.

When true, a save will not be triggered for open editors when starting a debug session, regardless of the value of the debug.saveBeforeStart setting.

Signals to the editor that the debug session was started from a test run request. This is used to link the lifecycle of the debug session and test run in UI actions.

DebugStackFrame

Represents a stack frame in a debug session.

Properties

ID of the stack frame in the debug protocol.

Debug session for thread.

ID of the associated thread in the debug protocol.

DebugThread

Represents a thread in a debug session.

Properties

Debug session for thread.

ID of the associated thread in the debug protocol.

Declaration

The declaration of a symbol representation as one or many locations or location links.

DeclarationCoverage

Contains coverage information for a declaration. Depending on the reporter and language, this may be types such as functions, methods, or namespaces.

Constructors

ParameterDescription
name: string
executed: number | boolean

The number of times this declaration was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the declaration will be marked as un-covered.

location: Range | Position

The declaration position.

ReturnsDescription
DeclarationCoverage

Properties

The number of times this declaration was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the declaration will be marked as un-covered.

Declaration location.

Name of the declaration.

DeclarationProvider

The declaration provider interface defines the contract between extensions and the go to declaration feature.

Methods

Provide the declaration of the symbol at the given position and document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Declaration>

A declaration or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

DecorationInstanceRenderOptions

Represents render options for decoration instances. See DecorationOptions.renderOptions.

Properties

Defines the rendering options of the attachment that is inserted after the decorated text.

Defines the rendering options of the attachment that is inserted before the decorated text.

Overwrite options for dark themes.

Overwrite options for light themes.

DecorationOptions

Represents options for a specific decoration in a decoration set.

Properties

A message that should be rendered when hovering over the decoration.

Range to which this decoration is applied. The range must not be empty.

Render options applied to the current decoration. For performance reasons, keep the number of decoration specific options small, and use decoration types wherever possible.

DecorationRangeBehavior

Describes the behavior of decorations when typing/editing at their edges.

Enumeration Members

The decoration's range will widen when edits occur at the start or end.

The decoration's range will not widen when edits occur at the start or end.

The decoration's range will widen when edits occur at the start, but not at the end.

The decoration's range will widen when edits occur at the end, but not at the start.

DecorationRenderOptions

Represents rendering styles for a text editor decoration.

Properties

Defines the rendering options of the attachment that is inserted after the decorated text.

Background color of the decoration. Use rgba() and define transparent background colors to play well with other decorations. Alternatively a color from the color registry can be referenced.

Defines the rendering options of the attachment that is inserted before the decorated text.

CSS styling property that will be applied to text enclosed by a decoration.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'border' for setting one or more of the individual border properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'border' for setting one or more of the individual border properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'border' for setting one or more of the individual border properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'border' for setting one or more of the individual border properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'border' for setting one or more of the individual border properties.

CSS styling property that will be applied to text enclosed by a decoration.

CSS styling property that will be applied to text enclosed by a decoration.

Overwrite options for dark themes.

CSS styling property that will be applied to text enclosed by a decoration.

CSS styling property that will be applied to text enclosed by a decoration.

An absolute path or an URI to an image to be rendered in the gutter.

Specifies the size of the gutter icon. Available values are 'auto', 'contain', 'cover' and any percentage value. For further information: https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx

Should the decoration be rendered also on the whitespace after the line text. Defaults to false.

CSS styling property that will be applied to text enclosed by a decoration.

Overwrite options for light themes.

CSS styling property that will be applied to text enclosed by a decoration.

CSS styling property that will be applied to text enclosed by a decoration.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'outline' for setting one or more of the individual outline properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'outline' for setting one or more of the individual outline properties.

CSS styling property that will be applied to text enclosed by a decoration. Better use 'outline' for setting one or more of the individual outline properties.

The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations.

The position in the overview ruler where the decoration should be rendered.

Customize the growing behavior of the decoration when edits occur at the edges of the decoration's range. Defaults to DecorationRangeBehavior.OpenOpen.

CSS styling property that will be applied to text enclosed by a decoration.

Definition

The definition of a symbol represented as one or many locations. For most programming languages there is only one location at which a symbol is defined.

Information about where a symbol is defined.

Provides additional metadata over normal Location definitions, including the range of the defining symbol

DefinitionProvider

The definition provider interface defines the contract between extensions and the go to definition and peek definition features.

Methods

Provide the definition of the symbol at the given position and document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Definition | LocationLink[]>

A definition or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

Diagnostic

Represents a diagnostic, such as a compiler error or warning. Diagnostic objects are only valid in the scope of a file.

Constructors

Creates a new diagnostic object.

ParameterDescription
range: Range

The range to which this diagnostic applies.

message: string

The human-readable message.

severity?: DiagnosticSeverity

The severity, default is error.

ReturnsDescription
Diagnostic

Properties

A code or identifier for this diagnostic. Should be used for later processing, e.g. when providing code actions.

The human-readable message.

The range to which this diagnostic applies.

An array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property.

The severity, default is error.

A human-readable string describing the source of this diagnostic, e.g. 'typescript' or 'super lint'.

Additional metadata about the diagnostic.

DiagnosticChangeEvent

The event that is fired when diagnostics change.

Properties

An array of resources for which diagnostics have changed.

DiagnosticCollection

A diagnostics collection is a container that manages a set of diagnostics. Diagnostics are always scopes to a diagnostics collection and a resource.

To get an instance of a DiagnosticCollection use createDiagnosticCollection.

Properties

The name of this diagnostic collection, for instance typescript. Every diagnostic from this collection will be associated with this name. Also, the task framework uses this name when defining problem matchers.

Methods

Remove all diagnostics from this collection. The same as calling #set(undefined);

ParameterDescription
ReturnsDescription
void

Remove all diagnostics from this collection that belong to the provided uri. The same as #set(uri, undefined).

ParameterDescription
uri: Uri

A resource identifier.

ReturnsDescription
void

Dispose and free associated resources. Calls clear.

ParameterDescription
ReturnsDescription
void

Iterate over each entry in this collection.

ParameterDescription
callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any

Function to execute for each entry.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
void

Get the diagnostics for a given resource. Note that you cannot modify the diagnostics-array returned from this call.

ParameterDescription
uri: Uri

A resource identifier.

ReturnsDescription
readonly Diagnostic[]

An immutable array of diagnostics or undefined.

Check if this collection contains diagnostics for a given resource.

ParameterDescription
uri: Uri

A resource identifier.

ReturnsDescription
boolean

true if this collection has diagnostic for the given resource.

Assign diagnostics for given resource. Will replace existing diagnostics for that resource.

ParameterDescription
uri: Uri

A resource identifier.

diagnostics: readonly Diagnostic[]

Array of diagnostics or undefined

ReturnsDescription
void

Replace diagnostics for multiple resources in this collection.

Note that multiple tuples of the same uri will be merged, e.g [[file1, [d1]], [file1, [d2]]] is equivalent to [[file1, [d1, d2]]]. If a diagnostics item is undefined as in [file1, undefined] all previous but not subsequent diagnostics are removed.

ParameterDescription
entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>

An array of tuples, like [[file1, [d1, d2]], [file2, [d3, d4, d5]]], or undefined.

ReturnsDescription
void

DiagnosticRelatedInformation

Represents a related message and source code location for a diagnostic. This should be used to point to code locations that cause or related to a diagnostics, e.g. when duplicating a symbol in a scope.

Constructors

Creates a new related diagnostic information object.

ParameterDescription
location: Location

The location.

message: string

The message.

ReturnsDescription
DiagnosticRelatedInformation

Properties

The location of this related diagnostic information.

The message of this related diagnostic information.

DiagnosticSeverity

Represents the severity of diagnostics.

Enumeration Members

Something not allowed by the rules of a language or other means.

Something suspicious but allowed.

Something to inform about but not a problem.

Something to hint to a better way of doing it, like proposing a refactoring.

DiagnosticTag

Additional metadata about the type of a diagnostic.

Enumeration Members

Unused or unnecessary code.

Diagnostics with this tag are rendered faded out. The amount of fading is controlled by the "editorUnnecessaryCode.opacity" theme color. For example, "editorUnnecessaryCode.opacity": "#000000c0" will render the code with 75% opacity. For high contrast themes, use the "editorUnnecessaryCode.border" theme color to underline unnecessary code instead of fading it out.

Deprecated or obsolete code.

Diagnostics with this tag are rendered with a strike through.

Disposable

Represents a type which can release resources, such as event listening or a timer.

Static

Combine many disposable-likes into one. You can use this method when having objects with a dispose function which aren't instances of Disposable.

ParameterDescription
...disposableLikes: Array<{dispose: () => any}>

Objects that have at least a dispose-function member. Note that asynchronous dispose-functions aren't awaited.

ReturnsDescription
Disposable

Returns a new disposable which, upon dispose, will dispose all provided disposables.

Constructors

Creates a new disposable that calls the provided function on dispose.

Note that an asynchronous function is not awaited.

ParameterDescription
callOnDispose: () => any

Function that disposes something.

ReturnsDescription
Disposable

Methods

Dispose this object.

ParameterDescription
ReturnsDescription
any

DocumentColorProvider

The document color provider defines the contract between extensions and feature of picking and modifying colors in the editor.

Methods

Provide representations for a color.

ParameterDescription
color: Color

The color to show and insert.

context: {document: TextDocument, range: Range}

A context object with additional information

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<ColorPresentation[]>

An array of color presentations or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

Provide colors for the given document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<ColorInformation[]>

An array of color information or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

DocumentDropEdit

An edit operation applied on drop.

Constructors

ParameterDescription
insertText: string | SnippetString

The text or snippet to insert at the drop location.

title?: string

Human readable label that describes the edit.

kind?: DocumentDropOrPasteEditKind

Kind of the edit.

ReturnsDescription
DocumentDropEdit

Properties

An optional additional edit to apply on drop.

The text or snippet to insert at the drop location.

Kind of the edit.

Human readable label that describes the edit.

Controls the ordering or multiple edits. If this provider yield to edits, it will be shown lower in the list.

DocumentDropEditProvider<T>

Provider which handles dropping of resources into a text editor.

This allows users to drag and drop resources (including resources from external apps) into the editor. While dragging and dropping files, users can hold down shift to drop the file into the editor instead of opening it. Requires editor.dropIntoEditor.enabled to be on.

Methods

Provide edits which inserts the content being dragged and dropped into the document.

ParameterDescription
document: TextDocument

The document in which the drop occurred.

position: Position

The position in the document where the drop occurred.

dataTransfer: DataTransfer

A DataTransfer object that holds data about what is being dragged and dropped.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T | T[]>

A DocumentDropEdit or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

Optional method which fills in the DocumentDropEdit.additionalEdit before the edit is applied.

This is called once per edit and should be used if generating the complete edit may take a long time. Resolve can only be used to change DocumentDropEdit.additionalEdit.

ParameterDescription
edit: T

The DocumentDropEdit to resolve.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved edit or a thenable that resolves to such. It is OK to return the given edit. If no result is returned, the given edit is used.

DocumentDropEditProviderMetadata

Provides additional metadata about how a DocumentDropEditProvider works.

Properties

List of DataTransfer mime types that the provider can handle.

This can either be an exact mime type such as image/png, or a wildcard pattern such as image/*.

Use text/uri-list for resources dropped from the explorer or other tree views in the workbench.

Use files to indicate that the provider should be invoked if any files are present in the DataTransfer. Note that DataTransferFile entries are only created when dropping content from outside the editor, such as from the operating system.

List of kinds that the provider may return in provideDocumentDropEdits.

This is used to filter out providers when a specific kind of edit is requested.

DocumentDropOrPasteEditKind

Static

The root kind for basic text edits.

This kind should be used for edits that insert basic text into the document. A good example of this is an edit that pastes the clipboard text while also updating imports in the file based on the pasted text. For this we could use a kind such as text.updateImports.someLanguageId.

Even though most drop/paste edits ultimately insert text, you should not use Text as the base kind for every edit as this is redundant. Instead a more specific kind that describes the type of content being inserted should be used instead. For example, if the edit adds a Markdown link, use markdown.link since even though the content being inserted is text, it's more important to know that the edit inserts Markdown syntax.

Root kind for edits that update imports in a document in addition to inserting text.

Constructors

ParameterDescription
value: string
ReturnsDescription
DocumentDropOrPasteEditKind

Properties

The raw string value of the kind.

Methods

Create a new kind by appending additional scopes to the current kind.

Does not modify the current kind.

ParameterDescription
...parts: string[]
ReturnsDescription
DocumentDropOrPasteEditKind

Checks if other is a sub-kind of this DocumentDropOrPasteEditKind.

The kind "text.plain" for example contains "text.plain" and "text.plain.list", but not "text" or "unicorn.text.plain".

ParameterDescription
other: DocumentDropOrPasteEditKind

Kind to check.

ReturnsDescription
boolean

Checks if this kind intersects other.

The kind "text.plain" for example intersects text, "text.plain" and "text.plain.list", but not "unicorn", or "textUnicorn.plain".

ParameterDescription
other: DocumentDropOrPasteEditKind

Kind to check.

ReturnsDescription
boolean

DocumentFilter

A document filter denotes a document by different properties like the language, the scheme of its resource, or a glob-pattern that is applied to the path.

Example A language filter that applies to typescript files on disk

{ language: 'typescript', scheme: 'file' }

Example A language filter that applies to all package.json paths

{ language: 'json', pattern: '**/package.json' }

Properties

A language id, like typescript.

The type of a notebook, like jupyter-notebook. This allows to narrow down on the type of a notebook that a cell document belongs to.

Note that setting the notebookType-property changes how scheme and pattern are interpreted. When set they are evaluated against the notebook uri, not the document uri.

Example Match python document inside jupyter notebook that aren't stored yet (untitled)

{ language: 'python', notebookType: 'jupyter-notebook', scheme: 'untitled' }

A glob pattern that is matched on the absolute path of the document. Use a relative pattern to filter documents to a workspace folder.

A Uri scheme, like file or untitled.

DocumentFormattingEditProvider

The document formatting provider interface defines the contract between extensions and the formatting-feature.

Methods

Provide formatting edits for a whole document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

options: FormattingOptions

Options controlling formatting.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<TextEdit[]>

A set of text edits or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

DocumentHighlight

A document highlight is a range inside a text document which deserves special attention. Usually a document highlight is visualized by changing the background color of its range.

Constructors

Creates a new document highlight object.

ParameterDescription
range: Range

The range the highlight applies to.

kind?: DocumentHighlightKind

The highlight kind, default is text.

ReturnsDescription
DocumentHighlight

Properties

The highlight kind, default is text.

The range this highlight applies to.

DocumentHighlightKind

A document highlight kind.

Enumeration Members

A textual occurrence.

Read-access of a symbol, like reading a variable.

Write-access of a symbol, like writing to a variable.

DocumentHighlightProvider

The document highlight provider interface defines the contract between extensions and the word-highlight-feature.

Methods

Provide a set of document highlights, like all occurrences of a variable or all exit-points of a function.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<DocumentHighlight[]>

An array of document highlights or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

A document link is a range in a text document that links to an internal or external resource, like another text document or a web site.

Constructors

Creates a new document link.

ParameterDescription
range: Range

The range the document link applies to. Must not be empty.

target?: Uri

The uri the document link points to.

ReturnsDescription
DocumentLink

Properties

The range this link applies to.

The uri this link points to.

The tooltip text when you hover over this link.

If a tooltip is provided, is will be displayed in a string that includes instructions on how to trigger the link, such as {0} (ctrl + click). The specific instructions vary depending on OS, user settings, and localization.

DocumentLinkProvider<T>

The document link provider defines the contract between extensions and feature of showing links in the editor.

Methods

Provide links for the given document. Note that the editor ships with a default provider that detects http(s) and file links.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T[]>

An array of document links or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

Given a link fill in its target. This method is called when an incomplete link is selected in the UI. Providers can implement this method and return incomplete links (without target) from the provideDocumentLinks method which often helps to improve performance.

ParameterDescription
link: T

The link that is to be resolved.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

DocumentPasteEdit

An edit the applies a paste operation.

Constructors

Create a new paste edit.

ParameterDescription
insertText: string | SnippetString

The text or snippet to insert at the pasted locations.

title: string

Human readable label that describes the edit.

kind: DocumentDropOrPasteEditKind

Kind of the edit.

ReturnsDescription
DocumentPasteEdit

Properties

An optional additional edit to apply on paste.

The text or snippet to insert at the pasted locations.

If your edit requires more advanced insertion logic, set this to an empty string and provide an additional edit instead.

Kind of the edit.

Human readable label that describes the edit.

Controls ordering when multiple paste edits can potentially be applied.

If this edit yields to another, it will be shown lower in the list of possible paste edits shown to the user.

DocumentPasteEditContext

Additional information about the paste operation.

Properties

Requested kind of paste edits to return.

When a explicit kind if requested by PasteAs, providers are encourage to be more flexible when generating an edit of the requested kind.

The reason why paste edits were requested.

DocumentPasteEditProvider<T>

Provider invoked when the user copies or pastes in a TextDocument.

Methods

Optional method invoked after the user copies from a text editor.

This allows the provider to attach metadata about the copied text to the DataTransfer. This data transfer is then passed back to providers in provideDocumentPasteEdits.

Note that currently any changes to the DataTransfer are isolated to the current editor window. This means that any added metadata cannot be seen by other editor windows or by other applications.

ParameterDescription
document: TextDocument

Text document where the copy took place.

ranges: readonly Range[]

Ranges being copied in document.

dataTransfer: DataTransfer

The data transfer associated with the copy. You can store additional values on this for later use in provideDocumentPasteEdits. This object is only valid for the duration of this method.

token: CancellationToken

A cancellation token.

ReturnsDescription
void | Thenable<void>

Optional thenable that resolves when all changes to the dataTransfer are complete.

Invoked before the user pastes into a text editor.

Returned edits can replace the standard pasting behavior.

ParameterDescription
document: TextDocument

Document being pasted into

ranges: readonly Range[]

Range in the document to paste into.

dataTransfer: DataTransfer

The data transfer associated with the paste. This object is only valid for the duration of the paste operation.

context: DocumentPasteEditContext

Additional context for the paste.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T[]>

Set of potential edits that can apply the paste. Only a single returned DocumentPasteEdit is applied at a time. If multiple edits are returned from all providers, then the first is automatically applied and a widget is shown that lets the user switch to the other edits.

Optional method which fills in the DocumentPasteEdit.additionalEdit before the edit is applied.

This is called once per edit and should be used if generating the complete edit may take a long time. Resolve can only be used to change DocumentPasteEdit.insertText or DocumentPasteEdit.additionalEdit.

ParameterDescription
pasteEdit: T

The DocumentPasteEdit to resolve.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved paste edit or a thenable that resolves to such. It is OK to return the given pasteEdit. If no result is returned, the given pasteEdit is used.

DocumentPasteProviderMetadata

Provides additional metadata about how a DocumentPasteEditProvider works.

Properties

Mime types that prepareDocumentPaste may add on copy.

Mime types that provideDocumentPasteEdits should be invoked for.

This can either be an exact mime type such as image/png, or a wildcard pattern such as image/*.

Use text/uri-list for resources dropped from the explorer or other tree views in the workbench.

Use files to indicate that the provider should be invoked if any files are present in the DataTransfer. Note that DataTransferFile entries are only created when pasting content from outside the editor, such as from the operating system.

List of kinds that the provider may return in provideDocumentPasteEdits.

This is used to filter out providers when a specific kind of edit is requested.

DocumentPasteTriggerKind

The reason why paste edits were requested.

Enumeration Members

Pasting was requested as part of a normal paste operation.

Pasting was requested by the user with the paste as command.

DocumentRangeFormattingEditProvider

The document formatting provider interface defines the contract between extensions and the formatting-feature.

Methods

Provide formatting edits for a range in a document.

The given range is a hint and providers can decide to format a smaller or larger range. Often this is done by adjusting the start and end of the range to full syntax nodes.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

range: Range

The range which should be formatted.

options: FormattingOptions

Options controlling formatting.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<TextEdit[]>

A set of text edits or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

Provide formatting edits for multiple ranges in a document.

This function is optional but allows a formatter to perform faster when formatting only modified ranges or when formatting a large number of selections.

The given ranges are hints and providers can decide to format a smaller or larger range. Often this is done by adjusting the start and end of the range to full syntax nodes.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

ranges: Range[]

The ranges which should be formatted.

options: FormattingOptions

Options controlling formatting.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<TextEdit[]>

A set of text edits or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

DocumentRangeSemanticTokensProvider

The document range semantic tokens provider interface defines the contract between extensions and semantic tokens.

Events

An optional event to signal that the semantic tokens from this provider have changed.

Methods

ParameterDescription
document: TextDocument
range: Range
token: CancellationToken
ReturnsDescription
ProviderResult<SemanticTokens>

DocumentSelector

A language selector is the combination of one or many language identifiers and language filters.

Note that a document selector that is just a language identifier selects all documents, even those that are not saved on disk. Only use such selectors when a feature works without further context, e.g. without the need to resolve related 'files'.

Example

let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };

DocumentSemanticTokensProvider

The document semantic tokens provider interface defines the contract between extensions and semantic tokens.

Events

An optional event to signal that the semantic tokens from this provider have changed.

Methods

Tokens in a file are represented as an array of integers. The position of each token is expressed relative to the token before it, because most tokens remain stable relative to each other when edits are made in a file.


In short, each token takes 5 integers to represent, so a specific token i in the file consists of the following array indices:

  • at index 5*i - deltaLine: token line number, relative to the previous token
  • at index 5*i+1 - deltaStart: token start character, relative to the previous token (relative to 0 or the previous token's start if they are on the same line)
  • at index 5*i+2 - length: the length of the token. A token cannot be multiline.
  • at index 5*i+3 - tokenType: will be looked up in SemanticTokensLegend.tokenTypes. We currently ask that tokenType < 65536.
  • at index 5*i+4 - tokenModifiers: each set bit will be looked up in SemanticTokensLegend.tokenModifiers

How to encode tokens

Here is an example for encoding a file with 3 tokens in a uint32 array:

   { line: 2, startChar:  5, length: 3, tokenType: "property",  tokenModifiers: ["private", "static"] },
   { line: 2, startChar: 10, length: 4, tokenType: "type",      tokenModifiers: [] },
   { line: 5, startChar:  2, length: 7, tokenType: "class",     tokenModifiers: [] }
  1. First of all, a legend must be devised. This legend must be provided up-front and capture all possible token types. For this example, we will choose the following legend which must be passed in when registering the provider:
   tokenTypes: ['property', 'type', 'class'],
   tokenModifiers: ['private', 'static']
  1. The first transformation step is to encode tokenType and tokenModifiers as integers using the legend. Token types are looked up by index, so a tokenType value of 1 means tokenTypes[1]. Multiple token modifiers can be set by using bit flags, so a tokenModifier value of 3 is first viewed as binary 0b00000011, which means [tokenModifiers[0], tokenModifiers[1]] because bits 0 and 1 are set. Using this legend, the tokens now are:
   { line: 2, startChar:  5, length: 3, tokenType: 0, tokenModifiers: 3 },
   { line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
   { line: 5, startChar:  2, length: 7, tokenType: 2, tokenModifiers: 0 }
  1. The next step is to represent each token relative to the previous token in the file. In this case, the second token is on the same line as the first token, so the startChar of the second token is made relative to the startChar of the first token, so it will be 10 - 5. The third token is on a different line than the second token, so the startChar of the third token will not be altered:
   { deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
   { deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
   { deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
  1. Finally, the last step is to inline each of the 5 fields for a token in a single array, which is a memory friendly representation:
   // 1st token,  2nd token,  3rd token
   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

See also SemanticTokensBuilder for a helper to encode tokens as integers. NOTE: When doing edits, it is possible that multiple edits occur until the editor decides to invoke the semantic tokens provider. NOTE: If the provider cannot temporarily compute semantic tokens, it can indicate this by throwing an error with the message 'Busy'.

ParameterDescription
document: TextDocument
token: CancellationToken
ReturnsDescription
ProviderResult<SemanticTokens>

Instead of always returning all the tokens in a file, it is possible for a DocumentSemanticTokensProvider to implement this method (provideDocumentSemanticTokensEdits) and then return incremental updates to the previously provided semantic tokens.


How tokens change when the document changes

Suppose that provideDocumentSemanticTokens has previously returned the following semantic tokens:

   // 1st token,  2nd token,  3rd token
   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

Also suppose that after some edits, the new semantic tokens in a file are:

   // 1st token,  2nd token,  3rd token
   [  3,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]

It is possible to express these new tokens in terms of an edit applied to the previous tokens:

   [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ] // old tokens
   [  3,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ] // new tokens

   edit: { start:  0, deleteCount: 1, data: [3] } // replace integer at offset 0 with 3

NOTE: If the provider cannot compute SemanticTokensEdits, it can "give up" and return all the tokens in the document again. NOTE: All edits in SemanticTokensEdits contain indices in the old integers array, so they all refer to the previous result state.

ParameterDescription
document: TextDocument
previousResultId: string
token: CancellationToken
ReturnsDescription
ProviderResult<SemanticTokens | SemanticTokensEdits>

DocumentSymbol

Represents programming constructs like variables, classes, interfaces etc. that appear in a document. Document symbols can be hierarchical and they have two ranges: one that encloses its definition and one that points to its most interesting range, e.g. the range of an identifier.

Constructors

Creates a new document symbol.

ParameterDescription
name: string

The name of the symbol.

detail: string

Details for the symbol.

kind: SymbolKind

The kind of the symbol.

range: Range

The full range of the symbol.

selectionRange: Range

The range that should be reveal.

ReturnsDescription
DocumentSymbol

Properties

Children of this symbol, e.g. properties of a class.

More detail for this symbol, e.g. the signature of a function.

The kind of this symbol.

The name of this symbol.

The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.

The range that should be selected and reveal when this symbol is being picked, e.g. the name of a function. Must be contained by the range.

Tags for this symbol.

DocumentSymbolProvider

The document symbol provider interface defines the contract between extensions and the go to symbol-feature.

Methods

Provide symbol information for the given document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<DocumentSymbol[] | SymbolInformation[]>

An array of document highlights or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

DocumentSymbolProviderMetadata

Metadata about a document symbol provider.

Properties

A human-readable string that is shown when multiple outlines trees show for one document.

EndOfLine

Represents an end of line character sequence in a document.

Enumeration Members

The line feed \n character.

The carriage return line feed \r\n sequence.

EnterAction

Describes what to do when pressing Enter.

Properties

Describes text to be appended after the new line and after the indentation.

Describe what to do with the indentation.

Describes the number of characters to remove from the new line's indentation.

EnvironmentVariableCollection

A collection of mutations that an extension can apply to a process environment.

Properties

A description for the environment variable collection, this will be used to describe the changes in the UI.

Whether the collection should be cached for the workspace and applied to the terminal across window reloads. When true the collection will be active immediately such when the window reloads. Additionally, this API will return the cached version if it exists. The collection will be invalidated when the extension is uninstalled or when the collection is cleared. Defaults to true.

Methods

Append a value to an environment variable.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to append to.

value: string

The value to append to the variable.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

Clears all mutators from this collection.

ParameterDescription
ReturnsDescription
void

Deletes this collection's mutator for a variable.

ParameterDescription
variable: string

The variable to delete the mutator for.

ReturnsDescription
void

Iterate over each mutator in this collection.

ParameterDescription
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

Function to execute for each entry.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
void

Gets the mutator that this collection applies to a variable, if any.

ParameterDescription
variable: string

The variable to get the mutator for.

ReturnsDescription
EnvironmentVariableMutator

Prepend a value to an environment variable.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to prepend.

value: string

The value to prepend to the variable.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

Replace an environment variable with a value.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to replace.

value: string

The value to replace the variable with.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

EnvironmentVariableMutator

A type of mutation and its value to be applied to an environment variable.

Properties

Options applied to the mutator.

The type of mutation that will occur to the variable.

The value to use for the variable.

EnvironmentVariableMutatorOptions

Options applied to the mutator.

Properties

Apply to the environment just before the process is created. Defaults to false.

Apply to the environment in the shell integration script. Note that this will not apply the mutator if shell integration is disabled or not working for some reason. Defaults to false.

EnvironmentVariableMutatorType

A type of mutation that can be applied to an environment variable.

Enumeration Members

Replace the variable's existing value.

Append to the end of the variable's existing value.

Prepend to the start of the variable's existing value.

EnvironmentVariableScope

The scope object to which the environment variable collection applies.

Properties

Any specific workspace folder to get collection for.

EvaluatableExpression

An EvaluatableExpression represents an expression in a document that can be evaluated by an active debugger or runtime. The result of this evaluation is shown in a tooltip-like widget. If only a range is specified, the expression will be extracted from the underlying document. An optional expression can be used to override the extracted expression. In this case the range is still used to highlight the range in the document.

Constructors

Creates a new evaluatable expression object.

ParameterDescription
range: Range

The range in the underlying document from which the evaluatable expression is extracted.

expression?: string

If specified overrides the extracted expression.

ReturnsDescription
EvaluatableExpression

Properties

If specified the expression overrides the extracted expression.

The range is used to extract the evaluatable expression from the underlying document and to highlight it.

EvaluatableExpressionProvider

The evaluatable expression provider interface defines the contract between extensions and the debug hover. In this contract the provider returns an evaluatable expression for a given position in a document and the editor evaluates this expression in the active debug session and shows the result in a debug hover.

Methods

Provide an evaluatable expression for the given document and position. The editor will evaluate this expression in the active debug session and will show the result in the debug hover. The expression can be implicitly specified by the range in the underlying document or by explicitly returning an expression.

ParameterDescription
document: TextDocument

The document for which the debug hover is about to appear.

position: Position

The line and character position in the document where the debug hover is about to appear.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<EvaluatableExpression>

An EvaluatableExpression or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

Event<T>

Represents a typed event.

A function that represents an event to which you subscribe by calling it with a listener function as argument.

Example

item.onDidChange(function(event) {
  console.log('Event happened: ' + event);
});

A function that represents an event to which you subscribe by calling it with a listener function as argument.

ParameterDescription
listener: (e: T) => any

The listener function will be called when the event happens.

thisArgs?: any

The this-argument which will be used when calling the event listener.

disposables?: Disposable[]

An array to which a Disposable will be added.

ReturnsDescription
Disposable

A disposable which unsubscribes the event listener.

EventEmitter<T>

An event emitter can be used to create and manage an Event for others to subscribe to. One emitter always owns one event.

Use this class if you want to provide event from within your extension, for instance inside a TextDocumentContentProvider or when providing API to other extensions.

Constructors

ParameterDescription
ReturnsDescription
EventEmitter<T>

Properties

The event listeners can subscribe to.

Methods

Dispose this object and free resources.

ParameterDescription
ReturnsDescription
void

Notify all subscribers of the event. Failure of one or more listener will not fail this function call.

ParameterDescription
data: T

The event object.

ReturnsDescription
void

Extension<T>

Represents an extension.

To get an instance of an Extension use getExtension.

Properties

The public API exported by this extension (return value of activate). It is an invalid action to access this field before this extension has been activated.

The extension kind describes if an extension runs where the UI runs or if an extension runs where the remote extension host runs. The extension kind is defined in the package.json-file of extensions but can also be refined via the remote.extensionKind-setting. When no remote extension host exists, the value is ExtensionKind.UI.

The absolute file path of the directory containing this extension. Shorthand notation for Extension.extensionUri.fsPath (independent of the uri scheme).

The uri of the directory containing the extension.

The canonical extension identifier in the form of: publisher.name.

true if the extension has been activated.

The parsed contents of the extension's package.json.

Methods

Activates this extension and returns its public API.

ParameterDescription
ReturnsDescription
Thenable<T>

A promise that will resolve when this extension has been activated.

ExtensionContext

An extension context is a collection of utilities private to an extension.

An instance of an ExtensionContext is provided as the first parameter to the activate-call of an extension.

Properties

Gets the extension's global environment variable collection for this workspace, enabling changes to be applied to terminal environment variables.

The current Extension instance.

The mode the extension is running in. See ExtensionMode for possible values and scenarios.

The absolute file path of the directory containing the extension. Shorthand notation for ExtensionContext.extensionUri.fsPath (independent of the uri scheme).

The uri of the directory containing the extension.

A memento object that stores state independent of the current opened workspace.

An absolute file path in which the extension can store global state. The directory might not exist on disk and creation is up to the extension. However, the parent directory is guaranteed to be existent.

Use globalState to store key value data.

The uri of a directory in which the extension can store global state. The directory might not exist on disk and creation is up to the extension. However, the parent directory is guaranteed to be existent.

Use globalState to store key value data.

See also workspace.fs for how to read and write files and folders from an uri.

An object that keeps information about how this extension can use language models.

See also LanguageModelChat.sendRequest

An absolute file path of a directory in which the extension can create log files. The directory might not exist on disk and creation is up to the extension. However, the parent directory is guaranteed to be existent.

  • deprecated - Use logUri instead.

The uri of a directory in which the extension can create log files. The directory might not exist on disk and creation is up to the extension. However, the parent directory is guaranteed to be existent.

See also workspace.fs for how to read and write files and folders from an uri.

A secret storage object that stores state independent of the current opened workspace.

An absolute file path of a workspace specific directory in which the extension can store private state. The directory might not exist on disk and creation is up to the extension. However, the parent directory is guaranteed to be existent.

Use workspaceState or globalState to store key value data.

The uri of a workspace specific directory in which the extension can store private state. The directory might not exist and creation is up to the extension. However, the parent directory is guaranteed to be existent. The value is undefined when no workspace nor folder has been opened.

Use workspaceState or globalState to store key value data.

See also workspace.fs for how to read and write files and folders from a uri.

An array to which disposables can be added. When this extension is deactivated the disposables will be disposed.

Note that asynchronous dispose-functions aren't awaited.

A memento object that stores state in the context of the currently opened workspace.

Methods

Get the absolute path of a resource contained in the extension.

Note that an absolute uri can be constructed via Uri.joinPath and extensionUri, e.g. vscode.Uri.joinPath(context.extensionUri, relativePath);

ParameterDescription
relativePath: string

A relative path to a resource contained in the extension.

ReturnsDescription
string

The absolute path of the resource.

ExtensionKind

In a remote window the extension kind describes if an extension runs where the UI (window) runs or if an extension runs remotely.

Enumeration Members

Extension runs where the UI runs.

Extension runs where the remote extension host runs.

ExtensionMode

The ExtensionMode is provided on the ExtensionContext and indicates the mode the specific extension is running in.

Enumeration Members

The extension is installed normally (for example, from the marketplace or VSIX) in the editor.

The extension is running from an --extensionDevelopmentPath provided when launching the editor.

The extension is running from an --extensionTestsPath and the extension host is running unit tests.

ExtensionTerminalOptions

Value-object describing what options a virtual process terminal should use.

Properties

The icon ThemeColor for the terminal. The standard terminal.ansi* theme keys are recommended for the best contrast and consistency across themes.

The icon path or ThemeIcon for the terminal.

Opt-out of the default terminal persistence on restart and reload. This will only take effect when terminal.integrated.enablePersistentSessions is enabled.

A human-readable string which will be used to represent the terminal in the UI.

An implementation of Pseudoterminal that allows an extension to control a terminal.

The nonce to use to verify shell integration sequences are coming from a trusted source. An example impact of UX of this is if the command line is reported with a nonce, it will not need to verify with the user that the command line is correct before rerunning it via the shell integration command decoration.

This should be used if the terminal includes custom shell integration support. It should be set to a random GUID. Inside the Pseudoterminal implementation, this value can be passed through in the relevant sequences to make them trusted.

FileChangeEvent

The event filesystem providers must use to signal a file change.

Properties

The type of change.

The uri of the file that has changed.

FileChangeType

Enumeration of file change types.

Enumeration Members

The contents or metadata of a file have changed.

A file has been created.

A file has been deleted.

FileCoverage

Contains coverage metadata for a file.

Static

Creates a FileCoverage instance with counts filled in from the coverage details.

ParameterDescription
uri: Uri

Covered file URI

details: readonly FileCoverageDetail[]

Detailed coverage information

ReturnsDescription
FileCoverage

Constructors

ParameterDescription
uri: Uri

Covered file URI

statementCoverage: TestCoverageCount

Statement coverage information. If the reporter does not provide statement coverage information, this can instead be used to represent line coverage.

branchCoverage?: TestCoverageCount

Branch coverage information

declarationCoverage?: TestCoverageCount

Declaration coverage information

includesTests?: TestItem[]

Test cases included in this coverage report, see FileCoverage.includesTests

ReturnsDescription
FileCoverage

Properties

Branch coverage information.

Declaration coverage information. Depending on the reporter and language, this may be types such as functions, methods, or namespaces.

A list of test cases that generated coverage in this file. If set, then TestRunProfile.loadDetailedCoverageForTest should also be defined in order to retrieve detailed coverage information.

Statement coverage information. If the reporter does not provide statement coverage information, this can instead be used to represent line coverage.

File URI.

FileCoverageDetail

Coverage details returned from TestRunProfile.loadDetailedCoverage.

FileCreateEvent

An event that is fired after files are created.

Properties

The files that got created.

FileDecoration

A file decoration represents metadata that can be rendered with a file.

Constructors

Creates a new decoration.

ParameterDescription
badge?: string

A letter that represents the decoration.

tooltip?: string

The tooltip of the decoration.

color?: ThemeColor

The color of the decoration.

ReturnsDescription
FileDecoration

Properties

A very short string that represents this decoration.

The color of this decoration.

A flag expressing that this decoration should be propagated to its parents.

A human-readable tooltip for this decoration.

FileDecorationProvider

The decoration provider interfaces defines the contract between extensions and file decorations.

Events

An optional event to signal that decorations for one or many files have changed.

Note that this event should be used to propagate information about children.

See also EventEmitter

Methods

Provide decorations for a given uri.

Note that this function is only called when a file gets rendered in the UI. This means a decoration from a descendent that propagates upwards must be signaled to the editor via the onDidChangeFileDecorations-event.

ParameterDescription
uri: Uri

The uri of the file to provide a decoration for.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<FileDecoration>

A decoration or a thenable that resolves to such.

FileDeleteEvent

An event that is fired after files are deleted.

Properties

The files that got deleted.

FilePermission

Permissions of a file.

Enumeration Members

The file is readonly.

Note: All FileStat from a FileSystemProvider that is registered with the option isReadonly: true will be implicitly handled as if FilePermission.Readonly is set. As a consequence, it is not possible to have a readonly file system provider registered where some FileStat are not readonly.

FileRenameEvent

An event that is fired after files are renamed.

Properties

The files that got renamed.

FileStat

The FileStat-type represents metadata about a file

Properties

The creation timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.

The modification timestamp in milliseconds elapsed since January 1, 1970 00:00:00 UTC.

Note: If the file changed, it is important to provide an updated mtime that advanced from the previous value. Otherwise there may be optimizations in place that will not show the updated file contents in an editor for example.

The permissions of the file, e.g. whether the file is readonly.

Note: This value might be a bitmask, e.g. FilePermission.Readonly | FilePermission.Other.

The size in bytes.

Note: If the file changed, it is important to provide an updated size. Otherwise there may be optimizations in place that will not show the updated file contents in an editor for example.

The type of the file, e.g. is a regular file, a directory, or symbolic link to a file.

Note: This value might be a bitmask, e.g. FileType.File | FileType.SymbolicLink.

FileSystem

The file system interface exposes the editor's built-in and contributed file system providers. It allows extensions to work with files from the local disk as well as files from remote places, like the remote extension host or ftp-servers.

Note that an instance of this interface is available as workspace.fs.

Methods

Copy files or folders.

ParameterDescription
source: Uri

The existing file.

target: Uri

The destination location.

options?: {overwrite: boolean}

Defines if existing files should be overwritten.

ReturnsDescription
Thenable<void>

Create a new directory (Note, that new files are created via write-calls).

Note that missing directories are created automatically, e.g this call has mkdirp semantics.

ParameterDescription
uri: Uri

The uri of the new folder.

ReturnsDescription
Thenable<void>

Delete a file.

ParameterDescription
uri: Uri

The resource that is to be deleted.

options?: {recursive: boolean, useTrash: boolean}

Defines if trash can should be used and if deletion of folders is recursive

ReturnsDescription
Thenable<void>

Check if a given file system supports writing files.

Keep in mind that just because a file system supports writing, that does not mean that writes will always succeed. There may be permissions issues or other errors that prevent writing a file.

ParameterDescription
scheme: string

The scheme of the filesystem, for example file or git.

ReturnsDescription
boolean

true if the file system supports writing, false if it does not support writing (i.e. it is readonly), and undefined if the editor does not know about the filesystem.

Retrieve all entries of a directory.

ParameterDescription
uri: Uri

The uri of the folder.

ReturnsDescription
Thenable<Array<[string, FileType]>>

An array of name/type-tuples or a thenable that resolves to such.

Read the entire contents of a file.

ParameterDescription
uri: Uri

The uri of the file.

ReturnsDescription
Thenable<Uint8Array>

An array of bytes or a thenable that resolves to such.

Rename a file or folder.

ParameterDescription
source: Uri

The existing file.

target: Uri

The new location.

options?: {overwrite: boolean}

Defines if existing files should be overwritten.

ReturnsDescription
Thenable<void>

Retrieve metadata about a file.

ParameterDescription
uri: Uri

The uri of the file to retrieve metadata about.

ReturnsDescription
Thenable<FileStat>

The file metadata about the file.

Write data to a file, replacing its entire contents.

ParameterDescription
uri: Uri

The uri of the file.

content: Uint8Array

The new content of the file.

ReturnsDescription
Thenable<void>

FileSystemError

A type that filesystem providers should use to signal errors.

This class has factory methods for common error-cases, like FileNotFound when a file or folder doesn't exist, use them like so: throw vscode.FileSystemError.FileNotFound(someUri);

Static

Create an error to signal that a file or folder already exists, e.g. when creating but not overwriting a file.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Create an error to signal that a file is a folder.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Create an error to signal that a file is not a folder.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Create an error to signal that a file or folder wasn't found.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Create an error to signal that an operation lacks required permissions.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Create an error to signal that the file system is unavailable or too busy to complete a request.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Constructors

Creates a new filesystem error.

ParameterDescription
messageOrUri?: string | Uri

Message or uri.

ReturnsDescription
FileSystemError

Properties

A code that identifies this error.

Possible values are names of errors, like FileNotFound, or Unknown for unspecified errors.

FileSystemProvider

The filesystem provider defines what the editor needs to read, write, discover, and to manage files and folders. It allows extensions to serve files from remote places, like ftp-servers, and to seamlessly integrate those into the editor.

  • Note 1: The filesystem provider API works with uris and assumes hierarchical paths, e.g. foo:/my/path is a child of foo:/my/ and a parent of foo:/my/path/deeper.
  • Note 2: There is an activation event onFileSystem:<scheme> that fires when a file or folder is being accessed.
  • Note 3: The word 'file' is often used to denote all kinds of files, e.g. folders, symbolic links, and regular files.

Events

An event to signal that a resource has been created, changed, or deleted. This event should fire for resources that are being watched by clients of this provider.

Note: It is important that the metadata of the file that changed provides an updated mtime that advanced from the previous value in the stat and a correct size value. Otherwise there may be optimizations in place that will not show the change in an editor for example.

Methods

Copy files or folders. Implementing this function is optional but it will speedup the copy operation.

  • throws - FileNotFound when parent of destination doesn't exist, e.g. no mkdirp-logic required.
  • throws - FileExists when destination exists and when the overwrite option is not true.
ParameterDescription
source: Uri

The existing file.

destination: Uri

The destination location.

options: {overwrite: boolean}

Defines if existing files should be overwritten.

ReturnsDescription
void | Thenable<void>

Create a new directory (Note, that new files are created via write-calls).

  • throws - FileNotFound when the parent of uri doesn't exist, e.g. no mkdirp-logic required.
ParameterDescription
uri: Uri

The uri of the new folder.

ReturnsDescription
void | Thenable<void>

Delete a file.

ParameterDescription
uri: Uri

The resource that is to be deleted.

options: {recursive: boolean}

Defines if deletion of folders is recursive.

ReturnsDescription
void | Thenable<void>

Retrieve all entries of a directory.

ParameterDescription
uri: Uri

The uri of the folder.

ReturnsDescription
Array<[string, FileType]> | Thenable<Array<[string, FileType]>>

An array of name/type-tuples or a thenable that resolves to such.

Read the entire contents of a file.

ParameterDescription
uri: Uri

The uri of the file.

ReturnsDescription
Uint8Array | Thenable<Uint8Array>

An array of bytes or a thenable that resolves to such.

Rename a file or folder.

  • throws - FileNotFound when parent of newUri doesn't exist, e.g. no mkdirp-logic required.
  • throws - FileExists when newUri exists and when the overwrite option is not true.
ParameterDescription
oldUri: Uri

The existing file.

newUri: Uri

The new location.

options: {overwrite: boolean}

Defines if existing files should be overwritten.

ReturnsDescription
void | Thenable<void>

Retrieve metadata about a file.

Note that the metadata for symbolic links should be the metadata of the file they refer to. Still, the SymbolicLink-type must be used in addition to the actual type, e.g. FileType.SymbolicLink | FileType.Directory.

ParameterDescription
uri: Uri

The uri of the file to retrieve metadata about.

ReturnsDescription
FileStat | Thenable<FileStat>

The file metadata about the file.

Subscribes to file change events in the file or folder denoted by uri. For folders, the option recursive indicates whether subfolders, sub-subfolders, etc. should be watched for file changes as well. With recursive: false, only changes to the files that are direct children of the folder should trigger an event.

The excludes array is used to indicate paths that should be excluded from file watching. It is typically derived from the files.watcherExclude setting that is configurable by the user. Each entry can be be:

  • the absolute path to exclude
  • a relative path to exclude (for example build/output)
  • a simple glob pattern (for example **/build, output/**)

Note that case-sensitivity of the excludes patterns for built-in file system providers will depend on the underlying file system: on Windows and macOS the matching will be case-insensitive and on Linux it will be case-sensitive.

It is the file system provider's job to call onDidChangeFile for every change given these rules. No event should be emitted for files that match any of the provided excludes.

ParameterDescription
uri: Uri

The uri of the file or folder to be watched.

options: {excludes: readonly string[], recursive: boolean}

Configures the watch.

ReturnsDescription
Disposable

A disposable that tells the provider to stop watching the uri.

Write data to a file, replacing its entire contents.

  • throws - FileNotFound when uri doesn't exist and create is not set.
  • throws - FileNotFound when the parent of uri doesn't exist and create is set, e.g. no mkdirp-logic required.
  • throws - FileExists when uri already exists, create is set but overwrite is not set.
ParameterDescription
uri: Uri

The uri of the file.

content: Uint8Array

The new content of the file.

options: {create: boolean, overwrite: boolean}

Defines if missing files should or must be created.

ReturnsDescription
void | Thenable<void>

FileSystemWatcher

A file system watcher notifies about changes to files and folders on disk or from other FileSystemProviders.

To get an instance of a FileSystemWatcher use createFileSystemWatcher.

Events

An event which fires on file/folder change.

An event which fires on file/folder creation.

An event which fires on file/folder deletion.

Properties

true if this file system watcher has been created such that it ignores change file system events.

true if this file system watcher has been created such that it ignores creation file system events.

true if this file system watcher has been created such that it ignores delete file system events.

Methods

Dispose this object.

ParameterDescription
ReturnsDescription
any

FileType

Enumeration of file types. The types File and Directory can also be a symbolic links, in that case use FileType.File | FileType.SymbolicLink and FileType.Directory | FileType.SymbolicLink.

Enumeration Members

The file type is unknown.

A regular file.

A directory.

A symbolic link to a file.

FileWillCreateEvent

An event that is fired when files are going to be created.

To make modifications to the workspace before the files are created, call the waitUntil-function with a thenable that resolves to a workspace edit.

Properties

The files that are going to be created.

A cancellation token.

Methods

Allows to pause the event and to apply a workspace edit.

Note: This function can only be called during event dispatch and not in an asynchronous manner:

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
ParameterDescription
thenable: Thenable<WorkspaceEdit>

A thenable that delays saving.

ReturnsDescription
void

Allows to pause the event until the provided thenable resolves.

Note: This function can only be called during event dispatch.

ParameterDescription
thenable: Thenable<any>

A thenable that delays saving.

ReturnsDescription
void

FileWillDeleteEvent

An event that is fired when files are going to be deleted.

To make modifications to the workspace before the files are deleted, call the waitUntil-function with a thenable that resolves to a workspace edit.

Properties

The files that are going to be deleted.

A cancellation token.

Methods

Allows to pause the event and to apply a workspace edit.

Note: This function can only be called during event dispatch and not in an asynchronous manner:

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
ParameterDescription
thenable: Thenable<WorkspaceEdit>

A thenable that delays saving.

ReturnsDescription
void

Allows to pause the event until the provided thenable resolves.

Note: This function can only be called during event dispatch.

ParameterDescription
thenable: Thenable<any>

A thenable that delays saving.

ReturnsDescription
void

FileWillRenameEvent

An event that is fired when files are going to be renamed.

To make modifications to the workspace before the files are renamed, call the waitUntil-function with a thenable that resolves to a workspace edit.

Properties

The files that are going to be renamed.

A cancellation token.

Methods

Allows to pause the event and to apply a workspace edit.

Note: This function can only be called during event dispatch and not in an asynchronous manner:

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
ParameterDescription
thenable: Thenable<WorkspaceEdit>

A thenable that delays saving.

ReturnsDescription
void

Allows to pause the event until the provided thenable resolves.

Note: This function can only be called during event dispatch.

ParameterDescription
thenable: Thenable<any>

A thenable that delays saving.

ReturnsDescription
void

FoldingContext

Folding context (for future use)

FoldingRange

A line based folding range. To be valid, start and end line must be bigger than zero and smaller than the number of lines in the document. Invalid ranges will be ignored.

Constructors

Creates a new folding range.

ParameterDescription
start: number

The start line of the folded range.

end: number

The end line of the folded range.

kind?: FoldingRangeKind

The kind of the folding range.

ReturnsDescription
FoldingRange

Properties

The zero-based end line of the range to fold. The folded area ends with the line's last character. To be valid, the end must be zero or larger and smaller than the number of lines in the document.

Describes the Kind of the folding range such as Comment or Region. The kind is used to categorize folding ranges and used by commands like 'Fold all comments'. See FoldingRangeKind for an enumeration of all kinds. If not set, the range is originated from a syntax element.

The zero-based start line of the range to fold. The folded area starts after the line's last character. To be valid, the end must be zero or larger and smaller than the number of lines in the document.

FoldingRangeKind

An enumeration of specific folding range kinds. The kind is an optional field of a FoldingRange and is used to distinguish specific folding ranges such as ranges originated from comments. The kind is used by commands like Fold all comments or Fold all regions. If the kind is not set on the range, the range originated from a syntax element other than comments, imports or region markers.

Enumeration Members

Kind for folding range representing a comment.

Kind for folding range representing a import.

Kind for folding range representing regions originating from folding markers like #region and #endregion.

FoldingRangeProvider

The folding range provider interface defines the contract between extensions and Folding in the editor.

Events

An optional event to signal that the folding ranges from this provider have changed.

Methods

Returns a list of folding ranges or null and undefined if the provider does not want to participate or was cancelled.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

context: FoldingContext

Additional context information (for future use)

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<FoldingRange[]>

FormattingOptions

Value-object describing what options formatting should use.

Properties

Prefer spaces over tabs.

Size of a tab in spaces.

FunctionBreakpoint

A breakpoint specified by a function name.

Constructors

Create a new function breakpoint.

ParameterDescription
functionName: string
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
ReturnsDescription
FunctionBreakpoint

Properties

An optional expression for conditional breakpoints.

Is breakpoint enabled.

The name of the function to which this breakpoint is attached.

An optional expression that controls how many hits of the breakpoint are ignored.

The unique ID of the breakpoint.

An optional message that gets logged when this breakpoint is hit. Embedded expressions within {} are interpolated by the debug adapter.

GlobalEnvironmentVariableCollection

A collection of mutations that an extension can apply to a process environment. Applies to all scopes.

Properties

A description for the environment variable collection, this will be used to describe the changes in the UI.

Whether the collection should be cached for the workspace and applied to the terminal across window reloads. When true the collection will be active immediately such when the window reloads. Additionally, this API will return the cached version if it exists. The collection will be invalidated when the extension is uninstalled or when the collection is cleared. Defaults to true.

Methods

Append a value to an environment variable.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to append to.

value: string

The value to append to the variable.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

Clears all mutators from this collection.

ParameterDescription
ReturnsDescription
void

Deletes this collection's mutator for a variable.

ParameterDescription
variable: string

The variable to delete the mutator for.

ReturnsDescription
void

Iterate over each mutator in this collection.

ParameterDescription
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

Function to execute for each entry.

thisArg?: any

The this context used when invoking the handler function.

ReturnsDescription
void

Gets the mutator that this collection applies to a variable, if any.

ParameterDescription
variable: string

The variable to get the mutator for.

ReturnsDescription
EnvironmentVariableMutator

Gets scope-specific environment variable collection for the extension. This enables alterations to terminal environment variables solely within the designated scope, and is applied in addition to (and after) the global collection.

Each object obtained through this method is isolated and does not impact objects for other scopes, including the global collection.

ParameterDescription
scope: EnvironmentVariableScope

The scope to which the environment variable collection applies to.

If a scope parameter is omitted, collection applicable to all relevant scopes for that parameter is returned. For instance, if the 'workspaceFolder' parameter is not specified, the collection that applies across all workspace folders will be returned.

ReturnsDescription
EnvironmentVariableCollection

Environment variable collection for the passed in scope.

Prepend a value to an environment variable.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to prepend.

value: string

The value to prepend to the variable.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

Replace an environment variable with a value.

Note that an extension can only make a single change to any one variable, so this will overwrite any previous calls to replace, append or prepend.

ParameterDescription
variable: string

The variable to replace.

value: string

The value to replace the variable with.

options?: EnvironmentVariableMutatorOptions

Options applied to the mutator, when no options are provided this will default to { applyAtProcessCreation: true }.

ReturnsDescription
void

GlobPattern

A file glob pattern to match file paths against. This can either be a glob pattern string (like **/*.{ts,js} or *.{ts,js}) or a relative pattern.

Glob patterns can have the following syntax:

  • * to match zero or more characters in a path segment
  • ? to match on one character in a path segment
  • ** to match any number of path segments, including none
  • {} to group conditions (e.g. **/*.{ts,js} matches all TypeScript and JavaScript files)
  • [] to declare a range of characters to match in a path segment (e.g., example.[0-9] to match on example.0, example.1, …)
  • [!...] to negate a range of characters to match in a path segment (e.g., example.[!0-9] to match on example.a, example.b, but not example.0)

Note: a backslash (``) is not valid within a glob pattern. If you have an existing file path to match against, consider to use the relative pattern support that takes care of converting any backslash into slash. Otherwise, make sure to convert any backslash to slash when creating the glob pattern.

Hover

A hover represents additional information for a symbol or word. Hovers are rendered in a tooltip-like widget.

Constructors

Creates a new hover object.

ParameterDescription
contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>

The contents of the hover.

range?: Range

The range to which the hover applies.

ReturnsDescription
Hover

Properties

The contents of this hover.

The range to which this hover applies. When missing, the editor will use the range at the current position or the current position itself.

HoverProvider

The hover provider interface defines the contract between extensions and the hover-feature.

Methods

Provide a hover for the given position and document. Multiple hovers at the same position will be merged by the editor. A hover can have a range which defaults to the word range at the position when omitted.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Hover>

A hover or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

IconPath

Represents an icon in the UI. This is either an uri, separate uris for the light- and dark-themes, or a theme icon.

ImplementationProvider

The implementation provider interface defines the contract between extensions and the go to implementation feature.

Methods

Provide the implementations of the symbol at the given position and document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Definition | LocationLink[]>

A definition or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

IndentAction

Describes what to do with the indentation when pressing Enter.

Enumeration Members

Insert new line and copy the previous line's indentation.

Insert new line and indent once (relative to the previous line's indentation).

Insert two new lines:

  • the first one indented which will hold the cursor
  • the second one at the same indentation level

Insert new line and outdent once (relative to the previous line's indentation).

IndentationRule

Describes indentation rules for a language.

Properties

If a line matches this pattern, then all the lines after it should be unindented once (until another rule matches).

If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).

If a line matches this pattern, then only the next line after it should be indented once.

If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.

InlayHint

Inlay hint information.

Constructors

Creates a new inlay hint.

ParameterDescription
position: Position

The position of the hint.

label: string | InlayHintLabelPart[]

The label of the hint.

kind?: InlayHintKind

The kind of the hint.

ReturnsDescription
InlayHint

Properties

The kind of this hint. The inlay hint kind defines the appearance of this inlay hint.

The label of this hint. A human readable string or an array of label parts.

Note that neither the string nor the label part can be empty.

Render padding before the hint. Padding will use the editor's background color, not the background color of the hint itself. That means padding can be used to visually align/separate an inlay hint.

Render padding after the hint. Padding will use the editor's background color, not the background color of the hint itself. That means padding can be used to visually align/separate an inlay hint.

The position of this hint.

Optional text edits that are performed when accepting this inlay hint. The default gesture for accepting an inlay hint is the double click.

Note that edits are expected to change the document so that the inlay hint (or its nearest variant) is now part of the document and the inlay hint itself is now obsolete.

Note that this property can be set late during resolving of inlay hints.

The tooltip text when you hover over this item.

Note that this property can be set late during resolving of inlay hints.

InlayHintKind

Inlay hint kinds.

The kind of an inline hint defines its appearance, e.g the corresponding foreground and background colors are being used.

Enumeration Members

An inlay hint that is for a type annotation.

An inlay hint that is for a parameter.

InlayHintLabelPart

An inlay hint label part allows for interactive and composite labels of inlay hints.

Constructors

Creates a new inlay hint label part.

ParameterDescription
value: string

The value of the part.

ReturnsDescription
InlayHintLabelPart

Properties

An optional command for this label part.

The editor renders parts with commands as clickable links. The command is added to the context menu when a label part defines location and command .

Note that this property can be set late during resolving of inlay hints.

An optional source code location that represents this label part.

The editor will use this location for the hover and for code navigation features: This part will become a clickable link that resolves to the definition of the symbol at the given location (not necessarily the location itself), it shows the hover that shows at the given location, and it shows a context menu with further code navigation commands.

Note that this property can be set late during resolving of inlay hints.

The tooltip text when you hover over this label part.

Note that this property can be set late during resolving of inlay hints.

The value of this label part.

InlayHintsProvider<T>

The inlay hints provider interface defines the contract between extensions and the inlay hints feature.

Events

An optional event to signal that inlay hints from this provider have changed.

Methods

Provide inlay hints for the given range and document.

Note that inlay hints that are not contained by the given range are ignored.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

range: Range

The range for which inlay hints should be computed.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T[]>

An array of inlay hints or a thenable that resolves to such.

Given an inlay hint fill in tooltip, text edits, or complete label parts.

Note that the editor will resolve an inlay hint at most once.

ParameterDescription
hint: T

An inlay hint.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved inlay hint or a thenable that resolves to such. It is OK to return the given item. When no result is returned, the given item will be used.

InlineCompletionContext

Provides information about the context in which an inline completion was requested.

Properties

Provides information about the currently selected item in the autocomplete widget if it is visible.

If set, provided inline completions must extend the text of the selected item and use the same range, otherwise they are not shown as preview. As an example, if the document text is console. and the selected item is .log replacing the . in the document, the inline completion must also replace . and start with .log, for example .log().

Inline completion providers are requested again whenever the selected item changes.

Describes how the inline completion was triggered.

InlineCompletionItem

An inline completion item represents a text snippet that is proposed inline to complete text that is being typed.

See also InlineCompletionItemProvider.provideInlineCompletionItems

Constructors

Creates a new inline completion item.

ParameterDescription
insertText: string | SnippetString

The text to replace the range with.

range?: Range

The range to replace. If not set, the word at the requested position will be used.

command?: Command

An optional Command that is executed after inserting this completion.

ReturnsDescription
InlineCompletionItem

Properties

An optional Command that is executed after inserting this completion.

A text that is used to decide if this inline completion should be shown. When falsy the InlineCompletionItem.insertText is used.

An inline completion is shown if the text to replace is a prefix of the filter text.

The text to replace the range with. Must be set. Is used both for the preview and the accept operation.

The range to replace. Must begin and end on the same line.

Prefer replacements over insertions to provide a better experience when the user deletes typed text.

InlineCompletionItemProvider

The inline completion item provider interface defines the contract between extensions and the inline completion feature.

Providers are asked for completions either explicitly by a user gesture or implicitly when typing.

Methods

Provides inline completion items for the given position and document. If inline completions are enabled, this method will be called whenever the user stopped typing. It will also be called when the user explicitly triggers inline completions or explicitly asks for the next or previous inline completion. In that case, all available inline completions should be returned. context.triggerKind can be used to distinguish between these scenarios.

ParameterDescription
document: TextDocument

The document inline completions are requested for.

position: Position

The position inline completions are requested for.

context: InlineCompletionContext

A context object with additional information.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<InlineCompletionList | InlineCompletionItem[]>

An array of completion items or a thenable that resolves to an array of completion items.

InlineCompletionList

Represents a collection of inline completion items to be presented in the editor.

Constructors

Creates a new list of inline completion items.

ParameterDescription
items: InlineCompletionItem[]
ReturnsDescription
InlineCompletionList

Properties

The inline completion items.

InlineCompletionTriggerKind

Describes how an inline completion provider was triggered.

Enumeration Members

Completion was triggered explicitly by a user gesture. Return multiple completion items to enable cycling through them.

Completion was triggered automatically while editing. It is sufficient to return a single completion item in this case.

InlineValue

Inline value information can be provided by different means:

  • directly as a text value (class InlineValueText).
  • as a name to use for a variable lookup (class InlineValueVariableLookup)
  • as an evaluatable expression (class InlineValueEvaluatableExpression) The InlineValue types combines all inline value types into one type.

InlineValueContext

A value-object that contains contextual information when requesting inline values from a InlineValuesProvider.

Properties

The stack frame (as a DAP Id) where the execution has stopped.

The document range where execution has stopped. Typically the end position of the range denotes the line where the inline values are shown.

InlineValueEvaluatableExpression

Provide an inline value through an expression evaluation. If only a range is specified, the expression will be extracted from the underlying document. An optional expression can be used to override the extracted expression.

Constructors

Creates a new InlineValueEvaluatableExpression object.

ParameterDescription
range: Range

The range in the underlying document from which the evaluatable expression is extracted.

expression?: string

If specified overrides the extracted expression.

ReturnsDescription
InlineValueEvaluatableExpression

Properties

If specified the expression overrides the extracted expression.

The document range for which the inline value applies. The range is used to extract the evaluatable expression from the underlying document.

InlineValuesProvider

The inline values provider interface defines the contract between extensions and the editor's debugger inline values feature. In this contract the provider returns inline value information for a given document range and the editor shows this information in the editor at the end of lines.

Events

An optional event to signal that inline values have changed.

See also EventEmitter

Methods

Provide "inline value" information for a given document and range. The editor calls this method whenever debugging stops in the given document. The returned inline values information is rendered in the editor at the end of lines.

ParameterDescription
document: TextDocument

The document for which the inline values information is needed.

viewPort: Range

The visible document range for which inline values should be computed.

context: InlineValueContext

A bag containing contextual information like the current location.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<InlineValue[]>

An array of InlineValueDescriptors or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null.

InlineValueText

Provide inline value as text.

Constructors

Creates a new InlineValueText object.

ParameterDescription
range: Range

The document line where to show the inline value.

text: string

The value to be shown for the line.

ReturnsDescription
InlineValueText

Properties

The document range for which the inline value applies.

The text of the inline value.

InlineValueVariableLookup

Provide inline value through a variable lookup. If only a range is specified, the variable name will be extracted from the underlying document. An optional variable name can be used to override the extracted name.

Constructors

Creates a new InlineValueVariableLookup object.

ParameterDescription
range: Range

The document line where to show the inline value.

variableName?: string

The name of the variable to look up.

caseSensitiveLookup?: boolean

How to perform the lookup. If missing lookup is case sensitive.

ReturnsDescription
InlineValueVariableLookup

Properties

How to perform the lookup.

The document range for which the inline value applies. The range is used to extract the variable name from the underlying document.

If specified the name of the variable to look up.

InputBox

A concrete QuickInput to let the user input a text value.

Note that in many cases the more convenient window.showInputBox is easier to use. window.createInputBox should be used when window.showInputBox does not offer the required flexibility.

Events

An event signaling when the user indicated acceptance of the input value.

An event signaling when the value has changed.

An event signaling when this input UI is hidden.

There are several reasons why this UI might have to be hidden and the extension will be notified through onDidHide. Examples include: an explicit call to hide, the user pressing Esc, some other input UI opening, etc.

An event signaling when a button was triggered.

Properties

Determines if the UI should show a progress indicator. Defaults to false.

Change this to true, for example, while loading more data or validating user input.

Buttons for actions in the UI.

Determines if the UI should allow for user input. Defaults to true.

Change this to false, for example, while validating user input or loading data for the next step in user input.

Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.

Determines if the input value should be hidden. Defaults to false.

Optional placeholder text shown when no value has been input.

An optional prompt text providing some ask or explanation to the user.

An optional current step count for multi-step input flows.

An optional title for the input UI.

An optional total step count for multi-step input flows.

An optional validation message indicating a problem with the current input value.

By setting a string, the InputBox will use a default InputBoxValidationSeverity of Error. Returning undefined clears the validation message.

The current input value.

Selection range in the input value.

Defined as tuple of two numbers where the first is the inclusive start index and the second the exclusive end index. When undefined the whole pre-filled value will be selected, when empty (start equals end) only the cursor will be set, otherwise the defined range will be selected.

This property does not get updated when the user types or makes a selection, but it can be updated by the extension.

Methods

Dispose of this input UI and any associated resources.

If it is still visible, it is first hidden. After this call the input UI is no longer functional and no additional methods or properties on it should be accessed. Instead a new input UI should be created.

ParameterDescription
ReturnsDescription
void

Hides this input UI.

This will also fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

Makes the input UI visible in its current configuration.

Any other input UI will first fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

InputBoxOptions

Options to configure the behavior of the input box UI.

Properties

Set to true to keep the input box open when focus moves to another part of the editor or to another window. This setting is ignored on iPad and is always false.

Controls if a password input is shown. Password input hides the typed text.

An optional string to show as placeholder in the input box to guide the user what to type.

The text to display underneath the input box.

An optional string that represents the title of the input box.

The value to pre-fill in the input box.

Selection of the pre-filled value. Defined as tuple of two number where the first is the inclusive start index and the second the exclusive end index. When undefined the whole pre-filled value will be selected, when empty (start equals end) only the cursor will be set, otherwise the defined range will be selected.

Methods

An optional function that will be called to validate input and to give a hint to the user.

ParameterDescription
value: string

The current value of the input box.

ReturnsDescription
string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>

Either a human-readable string which is presented as an error message or an InputBoxValidationMessage which can provide a specific message severity. Return undefined, null, or the empty string when 'value' is valid.

InputBoxValidationMessage

Represents a validation message for an InputBox.

Properties

The validation message to display to the user.

The severity level of the validation message.

Note: When using InputBoxValidationSeverity.Error, the user will not be able to accept the input (e.g., by pressing Enter). Info and Warning severities will still allow the input to be accepted.

InputBoxValidationSeverity

Severity levels for input box validation messages.

Enumeration Members

Indicates an informational message that does not prevent input acceptance.

Indicates a warning message that does not prevent input acceptance.

Indicates an error message that prevents the user from accepting the input.

LanguageConfiguration

The language configuration interfaces defines the contract between extensions and various editor features, like automatic bracket insertion, automatic indentation etc.

Properties

Deprecated Do not use.

  • deprecated - * Use the autoClosingPairs property in the language configuration file instead.
ParameterDescription
autoClosingPairs: Array<{close: string, notIn: string[], open: string}>
  • deprecated

Deprecated Do not use.

  • deprecated - Will be replaced by a better API soon.
ParameterDescription
brackets: any

This property is deprecated and will be ignored from the editor.

  • deprecated
docComment: {close: string, lineStart: string, open: string, scope: string}

This property is deprecated and not fully supported anymore by the editor (scope and lineStart are ignored). Use the autoClosingPairs property in the language configuration file instead.

  • deprecated

The language's auto closing pairs.

The language's brackets. This configuration implicitly affects pressing Enter around these brackets.

The language's comment settings.

The language's indentation settings.

The language's rules to be evaluated when pressing Enter.

The language's word definition. If the language supports Unicode identifiers (e.g. JavaScript), it is preferable to provide a word definition that uses exclusion of known separators. e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):

/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g

LanguageModelAccessInformation

Represents extension specific information about the access to language models.

Events

An event that fires when access information changes.

Methods

Checks if a request can be made to a language model.

Note that calling this function will not trigger a consent UI but just checks for a persisted state.

ParameterDescription
chat: LanguageModelChat

A language model chat object.

ReturnsDescription
boolean

true if a request can be made, false if not, undefined if the language model does not exist or consent hasn't been asked for.

LanguageModelChat

Represents a language model for making chat requests.

See also lm.selectChatModels

Properties

Opaque family-name of the language model. Values might be gpt-3.5-turbo, gpt4, phi2, or llama but they are defined by extensions contributing languages and subject to change.

Opaque identifier of the language model.

The maximum number of tokens that can be sent to the model in a single request.

Human-readable name of the language model.

A well-known identifier of the vendor of the language model. An example is copilot, but values are defined by extensions contributing chat models and need to be looked up with them.

Opaque version string of the model. This is defined by the extension contributing the language model and subject to change.

Methods

Count the number of tokens in a message using the model specific tokenizer-logic.

ParameterDescription
text: string | LanguageModelChatMessage

A string or a message instance.

token?: CancellationToken

Optional cancellation token. See CancellationTokenSource for how to create one.

ReturnsDescription
Thenable<number>

A thenable that resolves to the number of tokens.

Make a chat request using a language model.

Note that language model use may be subject to access restrictions and user consent. Calling this function for the first time (for an extension) will show a consent dialog to the user and because of that this function must only be called in response to a user action! Extensions can use LanguageModelAccessInformation.canSendRequest to check if they have the necessary permissions to make a request.

This function will return a rejected promise if making a request to the language model is not possible. Reasons for this can be:

  • user consent not given, see NoPermissions
  • model does not exist anymore, see NotFound
  • quota limits exceeded, see Blocked
  • other issues in which case extension must check [LanguageModelError.cause LanguageModelError.cause](#_LanguageModelError.cause LanguageModelError.cause)

An extension can make use of language model tool calling by passing a set of tools to LanguageModelChatRequestOptions.tools. The language model will return a LanguageModelToolCallPart and the extension can invoke the tool and make another request with the result.

ParameterDescription
messages: LanguageModelChatMessage[]

An array of message instances.

options?: LanguageModelChatRequestOptions

Options that control the request.

token?: CancellationToken

A cancellation token which controls the request. See CancellationTokenSource for how to create one.

ReturnsDescription
Thenable<LanguageModelChatResponse>

A thenable that resolves to a LanguageModelChatResponse. The promise will reject when the request couldn't be made.

LanguageModelChatCapabilities

Various features that the LanguageModelChatInformation supports such as tool calling or image input.

Properties

Whether image input is supported by the model. Common supported images are jpg and png, but each model will vary in supported mimetypes.

Whether tool calling is supported by the model. If a number is provided, that is the maximum number of tools that can be provided in a request to the model.

LanguageModelChatInformation

Represents a language model provided by a LanguageModelChatProvider.

Properties

Various features that the model supports such as tool calling or image input.

An optional, human-readable string which will be rendered alongside the model. Useful for distinguishing models of the same name in the UI.

Opaque family-name of the language model. Values might be gpt-3.5-turbo, gpt4, phi2, or llama

Unique identifier for the language model. Must be unique per provider, but not required to be globally unique.

The maximum number of tokens the model can accept as input.

The maximum number of tokens the model is capable of producing.

Human-readable name of the language model.

The tooltip to render when hovering the model. Used to provide more information about the model.

Opaque version string of the model. This is used as a lookup value in LanguageModelChatSelector.version An example is how GPT 4o has multiple versions like 2024-11-20 and 2024-08-06

LanguageModelChatMessage

Represents a message in a chat. Can assume different roles, like user or assistant.

Static

Utility to create a new assistant message.

ParameterDescription
content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>

The content of the message.

name?: string

The optional name of a user for the message.

ReturnsDescription
LanguageModelChatMessage

Utility to create a new user message.

ParameterDescription
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>

The content of the message.

name?: string

The optional name of a user for the message.

ReturnsDescription
LanguageModelChatMessage

Constructors

Create a new user message.

ParameterDescription
role: LanguageModelChatMessageRole

The role of the message.

content: string | LanguageModelInputPart[]

The content of the message.

name?: string

The optional name of a user for the message.

ReturnsDescription
LanguageModelChatMessage

Properties

A string or heterogeneous array of things that a message can contain as content. Some parts may be message-type specific for some models.

The optional name of a user for this message.

The role of this message.

LanguageModelChatMessageRole

Represents the role of a chat message. This is either the user or the assistant.

Enumeration Members

The user role, e.g the human interacting with a language model.

The assistant role, e.g. the language model generating responses.

LanguageModelChatProvider<T>

A LanguageModelChatProvider implements access to language models, which users can then use through the chat view, or through extension API by acquiring a LanguageModelChat. An example of this would be an OpenAI provider that provides models like gpt-5, o3, etc.

Events

An optional event fired when the available set of language models changes.

Methods

Get the list of available language models provided by this provider

ParameterDescription
options: PrepareLanguageModelChatModelOptions

Options which specify the calling context of this function

token: CancellationToken

A cancellation token

ReturnsDescription
ProviderResult<T[]>

The list of available language models

Returns the response for a chat request, passing the results to the progress callback. The LanguageModelChatProvider must emit the response parts to the progress callback as they are received from the language model.

ParameterDescription
model: T

The language model to use

messages: readonly LanguageModelChatRequestMessage[]

The messages to include in the request

options: ProvideLanguageModelChatResponseOptions

Options for the request

progress: Progress<LanguageModelResponsePart>

The progress to emit the streamed response chunks to

token: CancellationToken

A cancellation token

ReturnsDescription
Thenable<void>

A promise that resolves when the response is complete. Results are actually passed to the progress callback.

Returns the number of tokens for a given text using the model-specific tokenizer logic

ParameterDescription
model: T

The language model to use

text: string | LanguageModelChatRequestMessage

The text to count tokens for

token: CancellationToken

A cancellation token

ReturnsDescription
Thenable<number>

The number of tokens

LanguageModelChatRequestMessage

The provider version of LanguageModelChatMessage.

Properties

A heterogeneous array of things that a message can contain as content. Some parts may be message-type specific for some models.

The optional name of a user for this message.

The role of this message.

LanguageModelChatRequestOptions

Options for making a chat request using a language model.

See also LanguageModelChat.sendRequest

Properties

A human-readable message that explains why access to a language model is needed and what feature is enabled by it.

A set of options that control the behavior of the language model. These options are specific to the language model and need to be looked up in the respective documentation.

The tool-selecting mode to use. LanguageModelChatToolMode.Auto by default.

An optional list of tools that are available to the language model. These could be registered tools available via lm.tools, or private tools that are just implemented within the calling extension.

If the LLM requests to call one of these tools, it will return a LanguageModelToolCallPart in LanguageModelChatResponse.stream. It's the caller's responsibility to invoke the tool. If it's a tool registered in lm.tools, that means calling lm.invokeTool.

Then, the tool result can be provided to the LLM by creating an Assistant-type LanguageModelChatMessage with a LanguageModelToolCallPart, followed by a User-type message with a LanguageModelToolResultPart.

LanguageModelChatResponse

Represents a language model response.

See also ChatRequest

Properties

An async iterable that is a stream of text and tool-call parts forming the overall response. A LanguageModelTextPart is part of the assistant's response to be shown to the user. A LanguageModelToolCallPart is a request from the language model to call a tool. The latter will only be returned if tools were passed in the request via LanguageModelChatRequestOptions.tools. The unknown-type is used as a placeholder for future parts, like image data parts.

Note that this stream will error when during data receiving an error occurs. Consumers of the stream should handle the errors accordingly.

To cancel the stream, the consumer can cancel the token that was used to make the request or break from the for-loop.

Example

try {
  // consume stream
  for await (const chunk of response.stream) {
    if (chunk instanceof LanguageModelTextPart) {
      console.log('TEXT', chunk);
    } else if (chunk instanceof LanguageModelToolCallPart) {
      console.log('TOOL CALL', chunk);
    }
  }
} catch (e) {
  // stream ended with an error
  console.error(e);
}

This is equivalent to filtering everything except for text parts from a LanguageModelChatResponse.stream.

See also LanguageModelChatResponse.stream

LanguageModelChatSelector

Describes how to select language models for chat requests.

See also lm.selectChatModels

Properties

A family of language models.

See also LanguageModelChat.family

The identifier of a language model.

See also LanguageModelChat.id

A vendor of language models.

See also LanguageModelChat.vendor

The version of a language model.

See also LanguageModelChat.version

LanguageModelChatTool

A tool that is available to the language model via LanguageModelChatRequestOptions. A language model uses all the properties of this interface to decide which tool to call, and how to call it.

Properties

The description of the tool.

A JSON schema for the input this tool accepts.

The name of the tool.

LanguageModelChatToolMode

A tool-calling mode for the language model to use.

Enumeration Members

The language model can choose to call a tool or generate a message. Is the default.

The language model must call one of the provided tools. Note- some models only support a single tool when using this mode.

LanguageModelDataPart

A language model response part containing arbitrary data. Can be used in responses, chat messages, tool results, and other language model interactions.

Static

Create a new LanguageModelDataPart for an image.

ParameterDescription
data: Uint8Array

Binary image data

mime: string

The MIME type of the image. Common values are image/png and image/jpeg.

ReturnsDescription
LanguageModelDataPart

Create a new LanguageModelDataPart for a json.

Note that this function is not expecting "stringified JSON" but an object that can be stringified. This function will throw an error when the passed value cannot be JSON-stringified.

ParameterDescription
value: any

A JSON-stringifyable value.

mime?: string

Optional MIME type, defaults to application/json

ReturnsDescription
LanguageModelDataPart

Create a new LanguageModelDataPart for text.

Note that an UTF-8 encoder is used to create bytes for the string.

ParameterDescription
value: string

Text data

mime?: string

The MIME type if any. Common values are text/plain and text/markdown.

ReturnsDescription
LanguageModelDataPart

Constructors

Construct a generic data part with the given content.

ParameterDescription
data: Uint8Array

The byte data for this part.

mimeType: string

The mime type of the data.

ReturnsDescription
LanguageModelDataPart

Properties

The byte data for this part.

The mime type which determines how the data property is interpreted.

LanguageModelError

An error type for language model specific errors.

Consumers of language models should check the code property to determine specific failure causes, like if(someError.code === vscode.LanguageModelError.NotFound.name) {...} for the case of referring to an unknown language model. For unspecified errors the cause-property will contain the actual error.

Static

The requestor is blocked from using this language model.

ParameterDescription
message?: string
ReturnsDescription
LanguageModelError

The requestor does not have permissions to use this language model

ParameterDescription
message?: string
ReturnsDescription
LanguageModelError

The language model does not exist.

ParameterDescription
message?: string
ReturnsDescription
LanguageModelError

Constructors

ParameterDescription
message?: string
ReturnsDescription
LanguageModelError

Properties

A code that identifies this error.

Possible values are names of errors, like NotFound, or Unknown for unspecified errors from the language model itself. In the latter case the cause-property will contain the actual error.

LanguageModelInputPart

The various message types which can be sent via LanguageModelChat.sendRequest and processed by a LanguageModelChatProvider

LanguageModelPromptTsxPart

A language model response part containing a PromptElementJSON from vscode/prompt-tsx.

See also LanguageModelToolResult

Constructors

Construct a prompt-tsx part with the given content.

ParameterDescription
value: unknown

The value of the part, the result of renderElementJSON from vscode/prompt-tsx.

ReturnsDescription
LanguageModelPromptTsxPart

Properties

The value of the part.

LanguageModelResponsePart

The various message types which a LanguageModelChatProvider can emit in the chat response stream

LanguageModelTextPart

A language model response part containing a piece of text, returned from a LanguageModelChatResponse.

Constructors

Construct a text part with the given content.

ParameterDescription
value: string

The text content of the part.

ReturnsDescription
LanguageModelTextPart

Properties

The text content of the part.

LanguageModelTool<T>

A tool that can be invoked by a call to a LanguageModelChat.

Methods

Invoke the tool with the given input and return a result.

The provided LanguageModelToolInvocationOptions.input has been validated against the declared schema.

ParameterDescription
options: LanguageModelToolInvocationOptions<T>
token: CancellationToken
ReturnsDescription
ProviderResult<LanguageModelToolResult>

Called once before a tool is invoked. It's recommended to implement this to customize the progress message that appears while the tool is running, and to provide a more useful message with context from the invocation input. Can also signal that a tool needs user confirmation before running, if appropriate.

  • Note 1: Must be free of side-effects.
  • Note 2: A call to prepareInvocation is not necessarily followed by a call to invoke.
ParameterDescription
options: LanguageModelToolInvocationPrepareOptions<T>
token: CancellationToken
ReturnsDescription
ProviderResult<PreparedToolInvocation>

LanguageModelToolCallPart

A language model response part indicating a tool call, returned from a LanguageModelChatResponse, and also can be included as a content part on a LanguageModelChatMessage, to represent a previous tool call in a chat request.

Constructors

Create a new LanguageModelToolCallPart.

ParameterDescription
callId: string

The ID of the tool call.

name: string

The name of the tool to call.

input: object

The input with which to call the tool.

ReturnsDescription
LanguageModelToolCallPart

Properties

The ID of the tool call. This is a unique identifier for the tool call within the chat request.

The input with which to call the tool.

The name of the tool to call.

LanguageModelToolConfirmationMessages

When this is returned in PreparedToolInvocation, the user will be asked to confirm before running the tool. These messages will be shown with buttons that say "Continue" and "Cancel".

Properties

The body of the confirmation message.

The title of the confirmation message.

LanguageModelToolInformation

Information about a registered tool available in lm.tools.

Properties

A description of this tool that may be passed to a language model.

A JSON schema for the input this tool accepts.

A unique name for the tool.

A set of tags, declared by the tool, that roughly describe the tool's capabilities. A tool user may use these to filter the set of tools to just ones that are relevant for the task at hand.

LanguageModelToolInvocationOptions<T>

Options provided for tool invocation.

Properties

The input with which to invoke the tool. The input must match the schema defined in LanguageModelToolInformation.inputSchema

Options to hint at how many tokens the tool should return in its response, and enable the tool to count tokens accurately.

An opaque object that ties a tool invocation to a chat request from a chat participant.

The only way to get a valid tool invocation token is using the provided toolInvocationToken from a chat request. In that case, a progress bar will be automatically shown for the tool invocation in the chat response view, and if the tool requires user confirmation, it will show up inline in the chat view.

If the tool is being invoked outside of a chat request, undefined should be passed instead, and no special UI except for confirmations will be shown.

Note that a tool that invokes another tool during its invocation, can pass along the toolInvocationToken that it received.

LanguageModelToolInvocationPrepareOptions<T>

Properties

The input that the tool is being invoked with.

LanguageModelToolResult

A result returned from a tool invocation. If using vscode/prompt-tsx, this result may be rendered using a ToolResult.

Constructors

Create a LanguageModelToolResult

ParameterDescription
content: unknown[]

A list of tool result content parts

ReturnsDescription
LanguageModelToolResult

Properties

A list of tool result content parts. Includes unknown because this list may be extended with new content types in the future.

See also lm.invokeTool.

LanguageModelToolResultPart

The result of a tool call. This is the counterpart of a tool call and it can only be included in the content of a User message

Constructors

ParameterDescription
callId: string

The ID of the tool call.

content: unknown[]

The content of the tool result.

ReturnsDescription
LanguageModelToolResultPart

Properties

The ID of the tool call.

Note that this should match the callId of a tool call part.

The value of the tool result.

LanguageModelToolTokenizationOptions

Options related to tokenization for a tool invocation.

Properties

If known, the maximum number of tokens the tool should emit in its result.

Methods

Count the number of tokens in a message using the model specific tokenizer-logic.

ParameterDescription
text: string

A string.

token?: CancellationToken

Optional cancellation token. See CancellationTokenSource for how to create one.

ReturnsDescription
Thenable<number>

A thenable that resolves to the number of tokens.

LanguageStatusItem

A language status item is the preferred way to present language status reports for the active text editors, such as selected linter or notifying about a configuration problem.

Properties

Accessibility information used when a screen reader interacts with this item

Controls whether the item is shown as "busy". Defaults to false.

A command for this item.

Optional, human-readable details for this item.

The identifier of this item.

The short name of this item, like 'Java Language Status', etc.

A selector that defines for what editors this item shows.

The severity of this item.

Defaults to information. You can use this property to signal to users that there is a problem that needs attention, like a missing executable or an invalid configuration.

The text to show for the entry. You can embed icons in the text by leveraging the syntax:

My text $(icon-name) contains icons like $(icon-name) this one.

Where the icon-name is taken from the ThemeIcon icon set, e.g. light-bulb, thumbsup, zap etc.

Methods

Dispose and free associated resources.

ParameterDescription
ReturnsDescription
void

LanguageStatusSeverity

Represents the severity level of a language status.

Enumeration Members

Informational severity level.

Warning severity level.

Error severity level.

LineCommentRule

Configuration for line comments.

Properties

The line comment token, like //

Whether the comment token should not be indented and placed at the first column. Defaults to false.

LinkedEditingRangeProvider

The linked editing range provider interface defines the contract between extensions and the linked editing feature.

Methods

For a given position in a document, returns the range of the symbol at the position and all ranges that have the same content. A change to one of the ranges can be applied to all other ranges if the new content is valid. An optional word pattern can be returned with the result to describe valid contents. If no result-specific word pattern is provided, the word pattern from the language configuration is used.

ParameterDescription
document: TextDocument

The document in which the provider was invoked.

position: Position

The position at which the provider was invoked.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<LinkedEditingRanges>

A list of ranges that can be edited together

LinkedEditingRanges

Represents a list of ranges that can be edited together along with a word pattern to describe valid range contents.

Constructors

Create a new linked editing ranges object.

ParameterDescription
ranges: Range[]

A list of ranges that can be edited together

wordPattern?: RegExp

An optional word pattern that describes valid contents for the given ranges

ReturnsDescription
LinkedEditingRanges

Properties

A list of ranges that can be edited together. The ranges must have identical length and text content. The ranges cannot overlap.

An optional word pattern that describes valid contents for the given ranges. If no pattern is provided, the language configuration's word pattern will be used.

Location

Represents a location inside a resource, such as a line inside a text file.

Constructors

Creates a new location object.

ParameterDescription
uri: Uri

The resource identifier.

rangeOrPosition: Range | Position

The range or position. Positions will be converted to an empty range.

ReturnsDescription
Location

Properties

The document range of this location.

The resource identifier of this location.

Represents the connection of two locations. Provides additional metadata over normal locations, including an origin range.

Properties

Span of the origin of this link.

Used as the underlined span for mouse definition hover. Defaults to the word range at the definition position.

The full target range of this link.

The span of this link.

The target resource identifier of this link.

LogLevel

Log levels

Enumeration Members

No messages are logged with this level.

All messages are logged with this level.

Messages with debug and higher log level are logged with this level.

Messages with info and higher log level are logged with this level.

Messages with warning and higher log level are logged with this level.

Only error messages are logged with this level.

LogOutputChannel

A channel for containing log output.

To get an instance of a LogOutputChannel use createOutputChannel.

Events

An Event which fires when the log level of the channel changes.

Properties

The current log level of the channel. Defaults to editor log level.

The human-readable name of this output channel.

Methods

Append the given value to the channel.

ParameterDescription
value: string

A string, falsy values will not be printed.

ReturnsDescription
void

Append the given value and a line feed character to the channel.

ParameterDescription
value: string

A string, falsy values will be printed.

ReturnsDescription
void

Removes all output from the channel.

ParameterDescription
ReturnsDescription
void

Outputs the given debug message to the channel.

The message is only logged if the channel is configured to display debug log level or lower.

ParameterDescription
message: string

debug message to log

...args: any[]
ReturnsDescription
void

Dispose and free associated resources.

ParameterDescription
ReturnsDescription
void

Outputs the given error or error message to the channel.

The message is only logged if the channel is configured to display error log level or lower.

ParameterDescription
error: string | Error

Error or error message to log

...args: any[]
ReturnsDescription
void

Hide this channel from the UI.

ParameterDescription
ReturnsDescription
void

Outputs the given information message to the channel.

The message is only logged if the channel is configured to display info log level or lower.

ParameterDescription
message: string

info message to log

...args: any[]
ReturnsDescription
void

Replaces all output from the channel with the given value.

ParameterDescription
value: string

A string, falsy values will not be printed.

ReturnsDescription
void

Reveal this channel in the UI.

ParameterDescription
preserveFocus?: boolean

When true the channel will not take focus.

ReturnsDescription
void

Reveal this channel in the UI.

  • deprecated - Use the overload with just one parameter (show(preserveFocus?: boolean): void).
ParameterDescription
column?: ViewColumn

This argument is deprecated and will be ignored.

preserveFocus?: boolean

When true the channel will not take focus.

ReturnsDescription
void

Outputs the given trace message to the channel. Use this method to log verbose information.

The message is only logged if the channel is configured to display trace log level.

ParameterDescription
message: string

trace message to log

...args: any[]
ReturnsDescription
void

Outputs the given warning message to the channel.

The message is only logged if the channel is configured to display warning log level or lower.

ParameterDescription
message: string

warning message to log

...args: any[]
ReturnsDescription
void

MarkdownString

Human-readable text that supports formatting via the markdown syntax.

Rendering of theme icons via the $(<name>)-syntax is supported when the supportThemeIcons is set to true.

Rendering of embedded html is supported when supportHtml is set to true.

Constructors

Creates a new markdown string with the given value.

ParameterDescription
value?: string

Optional, initial value.

supportThemeIcons?: boolean

Optional, Specifies whether ThemeIcons are supported within the MarkdownString.

ReturnsDescription
MarkdownString

Properties

Uri that relative paths are resolved relative to.

If the baseUri ends with /, it is considered a directory and relative paths in the markdown are resolved relative to that directory:

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered markdown resolves to '/path/to/dir/file.js'

If the baseUri is a file, relative paths in the markdown are resolved relative to the parent dir of that file:

const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered markdown resolves to '/path/to/file.js'

Indicates that this markdown string is from a trusted source. Only trusted markdown supports links that execute commands, e.g. [Run it](command:myCommandId).

Defaults to false (commands are disabled).

Indicates that this markdown string can contain raw html tags. Defaults to false.

When supportHtml is false, the markdown renderer will strip out any raw html tags that appear in the markdown text. This means you can only use markdown syntax for rendering.

When supportHtml is true, the markdown render will also allow a safe subset of html tags and attributes to be rendered. See https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296 for a list of all supported tags and attributes.

Indicates that this markdown string can contain ThemeIcons, e.g. $(zap).

The markdown string.

Methods

Appends the given string as codeblock using the provided language.

ParameterDescription
value: string

A code snippet.

language?: string

An optional language identifier.

ReturnsDescription
MarkdownString

Appends the given string 'as is' to this markdown string. When supportThemeIcons is true, ThemeIcons in the value will be iconified.

ParameterDescription
value: string

Markdown string.

ReturnsDescription
MarkdownString

Appends and escapes the given string to this markdown string.

ParameterDescription
value: string

Plain text.

ReturnsDescription
MarkdownString

MarkedString

MarkedString can be used to render human-readable text. It is either a markdown string or a code-block that provides a language and a code snippet. Note that markdown strings will be sanitized - that means html will be escaped.

  • deprecated - This type is deprecated, please use MarkdownString instead.

McpHttpServerDefinition

McpHttpServerDefinition represents an MCP server available using the Streamable HTTP transport.

Constructors

ParameterDescription
label: string

The human-readable name of the server.

uri: Uri

The URI of the server.

headers?: Record<string, string>

Optional additional heads included with each request to the server.

version?: string
ReturnsDescription
McpHttpServerDefinition

Properties

Optional additional heads included with each request to the server.

The human-readable name of the server.

The URI of the server. The editor will make a POST request to this URI to begin each session.

Optional version identification for the server. If this changes, the editor will indicate that tools have changed and prompt to refresh them.

McpServerDefinition

Definitions that describe different types of Model Context Protocol servers, which can be returned from the McpServerDefinitionProvider.

McpServerDefinitionProvider<T>

A type that can provide Model Context Protocol server definitions. This should be registered using lm.registerMcpServerDefinitionProvider during extension activation.

Events

Optional event fired to signal that the set of available servers has changed.

Methods

Provides available MCP servers. The editor will call this method eagerly to ensure the availability of servers for the language model, and so extensions should not take actions which would require user interaction, such as authentication.

ParameterDescription
token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T[]>

An array of MCP available MCP servers

This function will be called when the editor needs to start a MCP server. At this point, the extension may take any actions which may require user interaction, such as authentication. Any non-readonly property of the server may be modified, and the extension should return the resolved server.

The extension may return undefined to indicate that the server should not be started, or throw an error. If there is a pending tool call, the editor will cancel it and return an error message to the language model.

ParameterDescription
server: T

The MCP server to resolve

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<T>

The resolved server or thenable that resolves to such. This may be the given server definition with non-readonly properties filled in.

McpStdioServerDefinition

McpStdioServerDefinition represents an MCP server available by running a local process and operating on its stdin and stdout streams. The process will be spawned as a child process of the extension host and by default will not run in a shell environment.

Constructors

ParameterDescription
label: string

The human-readable name of the server.

command: string

The command used to start the server.

args?: string[]

Additional command-line arguments passed to the server.

env?: Record<string, string | number>

Optional additional environment information for the server.

version?: string

Optional version identification for the server.

ReturnsDescription
McpStdioServerDefinition

Properties

Additional command-line arguments passed to the server.

The command used to start the server. Node.js-based servers may use process.execPath to use the editor's version of Node.js to run the script.

The working directory used to start the server.

Optional additional environment information for the server. Variables in this environment will overwrite or remove (if null) the default environment variables of the editor's extension host.

The human-readable name of the server.

Optional version identification for the server. If this changes, the editor will indicate that tools have changed and prompt to refresh them.

Memento

A memento represents a storage utility. It can store and retrieve values.

Methods

Return a value.

ParameterDescription
key: string

A string.

ReturnsDescription
T

The stored value or undefined.

Return a value.

ParameterDescription
key: string

A string.

defaultValue: T

A value that should be returned when there is no value (undefined) with the given key.

ReturnsDescription
T

The stored value or the defaultValue.

Returns the stored keys.

ParameterDescription
ReturnsDescription
readonly string[]

The stored keys.

Store a value. The value must be JSON-stringifyable.

Note that using undefined as value removes the key from the underlying storage.

ParameterDescription
key: string

A string.

value: any

A value. MUST not contain cyclic references.

ReturnsDescription
Thenable<void>

MessageItem

Represents an action that is shown with an information, warning, or error message.

See also

Properties

A hint for modal dialogs that the item should be triggered when the user cancels the dialog (e.g. by pressing the ESC key).

Note: this option is ignored for non-modal messages.

A short title like 'Retry', 'Open Log' etc.

MessageOptions

Options to configure the behavior of the message.

See also

Properties

Human-readable detail message that is rendered less prominent. Note that detail is only shown for modal messages.

Indicates that this message should be modal.

NotebookCell

Represents a cell of a notebook, either a code-cell or markup-cell.

NotebookCell instances are immutable and are kept in sync for as long as they are part of their notebook.

Properties

The text of this cell, represented as text document.

The most recent execution summary for this cell.

The index of this cell in its containing notebook. The index is updated when a cell is moved within its notebook. The index is -1 when the cell has been removed from its notebook.

The kind of this cell.

The metadata of this cell. Can be anything but must be JSON-stringifyable.

The notebook that contains this cell.

The outputs of this cell.

NotebookCellData

NotebookCellData is the raw representation of notebook cells. Its is part of NotebookData.

Constructors

Create new cell data. Minimal cell data specifies its kind, its source value, and the language identifier of its source.

ParameterDescription
kind: NotebookCellKind

The kind.

value: string

The source value.

languageId: string

The language identifier of the source value.

ReturnsDescription
NotebookCellData

Properties

The execution summary of this cell data.

The kind of this cell data.

The language identifier of the source value of this cell data. Any value from getLanguages is possible.

Arbitrary metadata of this cell data. Can be anything but must be JSON-stringifyable.

The outputs of this cell data.

The source value of this cell data - either source code or formatted text.

NotebookCellExecution

A NotebookCellExecution is how notebook controller modify a notebook cell as it is executing.

When a cell execution object is created, the cell enters the [NotebookCellExecutionState.Pending Pending](#_NotebookCellExecutionState.Pending Pending) state. When start(...) is called on the execution task, it enters the [NotebookCellExecutionState.Executing Executing](#_NotebookCellExecutionState.Executing Executing) state. When end(...) is called, it enters the [NotebookCellExecutionState.Idle Idle](#_NotebookCellExecutionState.Idle Idle) state.

Properties

The cell for which this execution has been created.

Set and unset the order of this cell execution.

A cancellation token which will be triggered when the cell execution is canceled from the UI.

Note that the cancellation token will not be triggered when the controller that created this execution uses an interrupt-handler.

Methods

Append to the output of the cell that is executing or to another cell that is affected by this execution.

ParameterDescription
out: NotebookCellOutput | readonly NotebookCellOutput[]

Output that is appended to the current output.

cell?: NotebookCell

Cell for which output is cleared. Defaults to the cell of this execution.

ReturnsDescription
Thenable<void>

A thenable that resolves when the operation finished.

Append output items to existing cell output.

ParameterDescription
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

Output items that are append to existing output.

output: NotebookCellOutput

Output object that already exists.

ReturnsDescription
Thenable<void>

A thenable that resolves when the operation finished.

Clears the output of the cell that is executing or of another cell that is affected by this execution.

ParameterDescription
cell?: NotebookCell

Cell for which output is cleared. Defaults to the cell of this execution.

ReturnsDescription
Thenable<void>

A thenable that resolves when the operation finished.

Signal that execution has ended.

ParameterDescription
success: boolean

If true, a green check is shown on the cell status bar. If false, a red X is shown. If undefined, no check or X icon is shown.

endTime?: number

The time that execution finished, in milliseconds in the Unix epoch.

ReturnsDescription
void

Replace the output of the cell that is executing or of another cell that is affected by this execution.

ParameterDescription
out: NotebookCellOutput | readonly NotebookCellOutput[]

Output that replaces the current output.

cell?: NotebookCell

Cell for which output is cleared. Defaults to the cell of this execution.

ReturnsDescription
Thenable<void>

A thenable that resolves when the operation finished.

Replace all output items of existing cell output.

ParameterDescription
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

Output items that replace the items of existing output.

output: NotebookCellOutput

Output object that already exists.

ReturnsDescription
Thenable<void>

A thenable that resolves when the operation finished.

Signal that the execution has begun.

ParameterDescription
startTime?: number

The time that execution began, in milliseconds in the Unix epoch. Used to drive the clock that shows for how long a cell has been running. If not given, the clock won't be shown.

ReturnsDescription
void

NotebookCellExecutionSummary

The summary of a notebook cell execution.

Properties

The order in which the execution happened.

If the execution finished successfully.

The times at which execution started and ended, as unix timestamps

ParameterDescription
endTime: number

Execution end time.

startTime: number

Execution start time.

NotebookCellKind

A notebook cell kind.

Enumeration Members

A markup-cell is formatted source that is used for display.

A code-cell is source that can be executed and that produces output.

NotebookCellOutput

Notebook cell output represents a result of executing a cell. It is a container type for multiple output items where contained items represent the same result but use different MIME types.

Constructors

Create new notebook output.

ParameterDescription
items: NotebookCellOutputItem[]

Notebook output items.

metadata?:

Optional metadata.

ReturnsDescription
NotebookCellOutput

Properties

The output items of this output. Each item must represent the same result. Note that repeated MIME types per output is invalid and that the editor will just pick one of them.

new vscode.NotebookCellOutput([
  vscode.NotebookCellOutputItem.text('Hello', 'text/plain'),
  vscode.NotebookCellOutputItem.text('<i>Hello</i>', 'text/html'),
  vscode.NotebookCellOutputItem.text('_Hello_', 'text/markdown'),
  vscode.NotebookCellOutputItem.text('Hey', 'text/plain') // INVALID: repeated type, editor will pick just one
]);

Arbitrary metadata for this cell output. Can be anything but must be JSON-stringifyable.

NotebookCellOutputItem

One representation of a notebook output, defined by MIME type and data.

Static

Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.error mime type.

ParameterDescription
value: Error

An error object.

ReturnsDescription
NotebookCellOutputItem

A new output item object.

Factory function to create a NotebookCellOutputItem from a JSON object.

Note that this function is not expecting "stringified JSON" but an object that can be stringified. This function will throw an error when the passed value cannot be JSON-stringified.

ParameterDescription
value: any

A JSON-stringifyable value.

mime?: string

Optional MIME type, defaults to application/json

ReturnsDescription
NotebookCellOutputItem

A new output item object.

Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.stderr mime type.

ParameterDescription
value: string

A string.

ReturnsDescription
NotebookCellOutputItem

A new output item object.

Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.stdout mime type.

ParameterDescription
value: string

A string.

ReturnsDescription
NotebookCellOutputItem

A new output item object.

Factory function to create a NotebookCellOutputItem from a string.

Note that an UTF-8 encoder is used to create bytes for the string.

ParameterDescription
value: string

A string.

mime?: string

Optional MIME type, defaults to text/plain.

ReturnsDescription
NotebookCellOutputItem

A new output item object.

Constructors

Create a new notebook cell output item.

ParameterDescription
data: Uint8Array

The value of the output item.

mime: string

The mime type of the output item.

ReturnsDescription
NotebookCellOutputItem

Properties

The data of this output item. Must always be an array of unsigned 8-bit integers.

The mime type which determines how the data-property is interpreted.

Notebooks have built-in support for certain mime-types, extensions can add support for new types and override existing types.

NotebookCellStatusBarAlignment

Represents the alignment of status bar items.

Enumeration Members

Aligned to the left side.

Aligned to the right side.

NotebookCellStatusBarItem

A contribution to a cell's status bar

Constructors

Creates a new NotebookCellStatusBarItem.

ParameterDescription
text: string

The text to show for the item.

alignment: NotebookCellStatusBarAlignment

Whether the item is aligned to the left or right.

ReturnsDescription
NotebookCellStatusBarItem

Properties

Accessibility information used when a screen reader interacts with this item.

Whether the item is aligned to the left or right.

An optional Command or identifier of a command to run on click.

The command must be known.

Note that if this is a Command object, only the command and arguments are used by the editor.

The priority of the item. A higher value item will be shown more to the left.

The text to show for the item.

A tooltip to show when the item is hovered.

NotebookCellStatusBarItemProvider

A provider that can contribute items to the status bar that appears below a cell's editor.

Events

An optional event to signal that statusbar items have changed. The provide method will be called again.

Methods

The provider will be called when the cell scrolls into view, when its content, outputs, language, or metadata change, and when it changes execution state.

ParameterDescription
cell: NotebookCell

The cell for which to return items.

token: CancellationToken

A token triggered if this request should be cancelled.

ReturnsDescription
ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>

NotebookController

A notebook controller represents an entity that can execute notebook cells. This is often referred to as a kernel.

There can be multiple controllers and the editor will let users choose which controller to use for a certain notebook. The notebookType-property defines for what kind of notebooks a controller is for and the updateNotebookAffinity-function allows controllers to set a preference for specific notebook documents. When a controller has been selected its onDidChangeSelectedNotebooks-event fires.

When a cell is being run the editor will invoke the executeHandler and a controller is expected to create and finalize a notebook cell execution. However, controllers are also free to create executions by themselves.

Events

An event that fires whenever a controller has been selected or un-selected for a notebook document.

There can be multiple controllers for a notebook and in that case a controllers needs to be selected. This is a user gesture and happens either explicitly or implicitly when interacting with a notebook for which a controller was suggested. When possible, the editor suggests a controller that is most likely to be selected.

Note that controller selection is persisted (by the controllers id) and restored as soon as a controller is re-created or as a notebook is opened.

Properties

The human-readable description which is rendered less prominent.

The human-readable detail which is rendered less prominent.

The execute handler is invoked when the run gestures in the UI are selected, e.g Run Cell, Run All, Run Selection etc. The execute handler is responsible for creating and managing execution-objects.

ParameterDescription
cells: NotebookCell[]
notebook: NotebookDocument
controller: NotebookController
ReturnsDescription
void | Thenable<void>

The identifier of this notebook controller.

Note that controllers are remembered by their identifier and that extensions should use stable identifiers across sessions.

Optional interrupt handler.

By default cell execution is canceled via tokens. Cancellation tokens require that a controller can keep track of its execution so that it can cancel a specific execution at a later point. Not all scenarios allow for that, eg. REPL-style controllers often work by interrupting whatever is currently running. For those cases the interrupt handler exists - it can be thought of as the equivalent of SIGINT or Control+C in terminals.

Note that supporting cancellation tokens is preferred and that interrupt handlers should only be used when tokens cannot be supported.

ParameterDescription
notebook: NotebookDocument
ReturnsDescription
void | Thenable<void>

The human-readable label of this notebook controller.

The notebook type this controller is for.

An array of language identifiers that are supported by this controller. Any language identifier from getLanguages is possible. When falsy all languages are supported.

Samples:

// support JavaScript and TypeScript
myController.supportedLanguages = ['javascript', 'typescript'];

// support all languages
myController.supportedLanguages = undefined; // falsy
myController.supportedLanguages = []; // falsy

Whether this controller supports execution order so that the editor can render placeholders for them.

Methods

Create a cell execution task.

Note that there can only be one execution per cell at a time and that an error is thrown if a cell execution is created while another is still active.

This should be used in response to the execution handler being called or when cell execution has been started else, e.g when a cell was already executing or when cell execution was triggered from another source.

ParameterDescription
cell: NotebookCell

The notebook cell for which to create the execution.

ReturnsDescription
NotebookCellExecution

A notebook cell execution.

Dispose and free associated resources.

ParameterDescription
ReturnsDescription
void

A controller can set affinities for specific notebook documents. This allows a controller to be presented more prominent for some notebooks.

ParameterDescription
notebook: NotebookDocument

The notebook for which a priority is set.

affinity: NotebookControllerAffinity

A controller affinity

ReturnsDescription
void

NotebookControllerAffinity

Notebook controller affinity for notebook documents.

See also NotebookController.updateNotebookAffinity

Enumeration Members

Default affinity.

A controller is preferred for a notebook.

NotebookData

Raw representation of a notebook.

Extensions are responsible for creating NotebookData so that the editor can create a NotebookDocument.

See also NotebookSerializer

Constructors

Create new notebook data.

ParameterDescription
cells: NotebookCellData[]

An array of cell data.

ReturnsDescription
NotebookData

Properties

The cell data of this notebook data.

Arbitrary metadata of notebook data.

NotebookDocument

Represents a notebook which itself is a sequence of code or markup cells. Notebook documents are created from notebook data.

Properties

The number of cells in the notebook.

true if the notebook has been closed. A closed notebook isn't synchronized anymore and won't be re-used when the same resource is opened again.

true if there are unpersisted changes.

Is this notebook representing an untitled file which has not been saved yet.

Arbitrary metadata for this notebook. Can be anything but must be JSON-stringifyable.

The type of notebook.

The associated uri for this notebook.

Note that most notebooks use the file-scheme, which means they are files on disk. However, not all notebooks are saved on disk and therefore the scheme must be checked before trying to access the underlying file or siblings on disk.

See also FileSystemProvider

The version number of this notebook (it will strictly increase after each change, including undo/redo).

Methods

Return the cell at the specified index. The index will be adjusted to the notebook.

ParameterDescription
index: number

The index of the cell to retrieve.

ReturnsDescription
NotebookCell

A cell.

Get the cells of this notebook. A subset can be retrieved by providing a range. The range will be adjusted to the notebook.

ParameterDescription
range?: NotebookRange

A notebook range.

ReturnsDescription
NotebookCell[]

The cells contained by the range or all cells.

Save the document. The saving will be handled by the corresponding serializer.

ParameterDescription
ReturnsDescription
Thenable<boolean>

A promise that will resolve to true when the document has been saved. Will return false if the file was not dirty or when save failed.

NotebookDocumentCellChange

Describes a change to a notebook cell.

See also NotebookDocumentChangeEvent

Properties

The affected cell.

The document of the cell or undefined when it did not change.

Note that you should use the onDidChangeTextDocument-event for detailed change information, like what edits have been performed.

The new execution summary of the cell or undefined when it did not change.

The new metadata of the cell or undefined when it did not change.

The new outputs of the cell or undefined when they did not change.

NotebookDocumentChangeEvent

An event describing a transactional notebook change.

Properties

An array of cell changes.

An array of content changes describing added or removed cells.

The new metadata of the notebook or undefined when it did not change.

The affected notebook.

NotebookDocumentContentChange

Describes a structural change to a notebook document, e.g newly added and removed cells.

See also NotebookDocumentChangeEvent

Properties

Cells that have been added to the document.

The range at which cells have been either added or removed.

Note that no cells have been removed when this range is empty.

Cells that have been removed from the document.

NotebookDocumentContentOptions

Notebook content options define what parts of a notebook are persisted. Note

For instance, a notebook serializer can opt-out of saving outputs and in that case the editor doesn't mark a notebooks as dirty when its output has changed.

Properties

Controls if a cell metadata property change event will trigger notebook document content change events and if it will be used in the diff editor, defaults to false. If the content provider doesn't persist a metadata property in the file document, it should be set to true.

Controls if a document metadata property change event will trigger notebook document content change event and if it will be used in the diff editor, defaults to false. If the content provider doesn't persist a metadata property in the file document, it should be set to true.

Controls if output change events will trigger notebook document content change events and if it will be used in the diff editor, defaults to false. If the content provider doesn't persist the outputs in the file document, this should be set to true.

NotebookDocumentShowOptions

Represents options to configure the behavior of showing a notebook document in an notebook editor.

Properties

An optional flag that when true will stop the notebook editor from taking focus.

An optional flag that controls if an notebook editor-tab shows as preview. Preview tabs will be replaced and reused until set to stay - either explicitly or through editing. The default behaviour depends on the workbench.editor.enablePreview-setting.

An optional selection to apply for the document in the notebook editor.

An optional view column in which the notebook editor should be shown. The default is the active. Columns that do not exist will be created as needed up to the maximum of ViewColumn.Nine. Use ViewColumn.Beside to open the editor to the side of the currently active one.

NotebookDocumentWillSaveEvent

An event that is fired when a notebook document will be saved.

To make modifications to the document before it is being saved, call the waitUntil-function with a thenable that resolves to a workspace edit.

Properties

The notebook document that will be saved.

The reason why save was triggered.

A cancellation token.

Methods

Allows to pause the event loop and to apply workspace edit. Edits of subsequent calls to this function will be applied in order. The edits will be ignored if concurrent modifications of the notebook document happened.

Note: This function can only be called during event dispatch and not in an asynchronous manner:

workspace.onWillSaveNotebookDocument(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
ParameterDescription
thenable: Thenable<WorkspaceEdit>

A thenable that resolves to workspace edit.

ReturnsDescription
void

Allows to pause the event loop until the provided thenable resolved.

Note: This function can only be called during event dispatch.

ParameterDescription
thenable: Thenable<any>

A thenable that delays saving.

ReturnsDescription
void

NotebookEdit

A notebook edit represents edits that should be applied to the contents of a notebook.

Static

Utility to create an edit that deletes cells in a notebook.

ParameterDescription
range: NotebookRange

The range of cells to delete.

ReturnsDescription
NotebookEdit

Utility to create an edit that replaces cells in a notebook.

ParameterDescription
index: number

The index to insert cells at.

newCells: NotebookCellData[]

The new notebook cells.

ReturnsDescription
NotebookEdit

Utility to create a edit that replaces cells in a notebook.

ParameterDescription
range: NotebookRange

The range of cells to replace

newCells: NotebookCellData[]

The new notebook cells.

ReturnsDescription
NotebookEdit

Utility to create an edit that update a cell's metadata.

ParameterDescription
index: number

The index of the cell to update.

newCellMetadata:

The new metadata for the cell.

ReturnsDescription
NotebookEdit

Utility to create an edit that updates the notebook's metadata.

ParameterDescription
newNotebookMetadata:

The new metadata for the notebook.

ReturnsDescription
NotebookEdit

Constructors

Create a new notebook edit.

ParameterDescription
range: NotebookRange

A notebook range.

newCells: NotebookCellData[]

An array of new cell data.

ReturnsDescription
NotebookEdit

Properties

Optional new metadata for the cells.

New cells being inserted. May be empty.

Optional new metadata for the notebook.

Range of the cells being edited. May be empty.

NotebookEditor

Represents a notebook editor that is attached to a notebook. Additional properties of the NotebookEditor are available in the proposed API, which will be finalized later.

Properties

The notebook document associated with this notebook editor.

The primary selection in this notebook editor.

All selections in this notebook editor.

The primary selection (or focused range) is selections[0]. When the document has no cells, the primary selection is empty { start: 0, end: 0 };

The column in which this editor shows.

The current visible ranges in the editor (vertically).

Methods

Scroll as indicated by revealType in order to reveal the given range.

ParameterDescription
range: NotebookRange

A range.

revealType?: NotebookEditorRevealType

The scrolling strategy for revealing range.

ReturnsDescription
void

NotebookEditorRevealType

Represents a notebook editor that is attached to a notebook.

Enumeration Members

The range will be revealed with as little scrolling as possible.

The range will always be revealed in the center of the viewport.

If the range is outside the viewport, it will be revealed in the center of the viewport. Otherwise, it will be revealed with as little scrolling as possible.

The range will always be revealed at the top of the viewport.

NotebookEditorSelectionChangeEvent

Represents an event describing the change in a notebook editor's selections.

Properties

The notebook editor for which the selections have changed.

The new value for the notebook editor's selections.

NotebookEditorVisibleRangesChangeEvent

Represents an event describing the change in a notebook editor's visibleRanges.

Properties

The notebook editor for which the visible ranges have changed.

The new value for the notebook editor's visibleRanges.

NotebookRange

A notebook range represents an ordered pair of two cell indices. It is guaranteed that start is less than or equal to end.

Constructors

Create a new notebook range. If start is not before or equal to end, the values will be swapped.

ParameterDescription
start: number

start index

end: number

end index.

ReturnsDescription
NotebookRange

Properties

The exclusive end index of this range (zero-based).

true if start and end are equal.

The zero-based start index of this range.

Methods

Derive a new range for this range.

ParameterDescription
change: {end: number, start: number}

An object that describes a change to this range.

ReturnsDescription
NotebookRange

A range that reflects the given change. Will return this range if the change is not changing anything.

NotebookRendererMessaging

Renderer messaging is used to communicate with a single renderer. It's returned from notebooks.createRendererMessaging.

Events

An event that fires when a message is received from a renderer.

Methods

Send a message to one or all renderer.

ParameterDescription
message: any

Message to send

editor?: NotebookEditor

Editor to target with the message. If not provided, the message is sent to all renderers.

ReturnsDescription
Thenable<boolean>

a boolean indicating whether the message was successfully delivered to any renderer.

NotebookSerializer

The notebook serializer enables the editor to open notebook files.

At its core the editor only knows a notebook data structure but not how that data structure is written to a file, nor how it is read from a file. The notebook serializer bridges this gap by deserializing bytes into notebook data and vice versa.

Methods

Deserialize contents of a notebook file into the notebook data structure.

ParameterDescription
content: Uint8Array

Contents of a notebook file.

token: CancellationToken

A cancellation token.

ReturnsDescription
NotebookData | Thenable<NotebookData>

Notebook data or a thenable that resolves to such.

Serialize notebook data into file contents.

ParameterDescription
data: NotebookData

A notebook data structure.

token: CancellationToken

A cancellation token.

ReturnsDescription
Uint8Array | Thenable<Uint8Array>

An array of bytes or a thenable that resolves to such.

OnEnterRule

Describes a rule to be evaluated when pressing Enter.

Properties

The action to execute.

This rule will only execute if the text after the cursor matches this regular expression.

This rule will only execute if the text before the cursor matches this regular expression.

This rule will only execute if the text above the current line matches this regular expression.

OnTypeFormattingEditProvider

The document formatting provider interface defines the contract between extensions and the formatting-feature.

Methods

Provide formatting edits after a character has been typed.

The given position and character should hint to the provider what range the position to expand to, like find the matching { when } has been entered.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

ch: string

The character that has been typed.

options: FormattingOptions

Options controlling formatting.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<TextEdit[]>

A set of text edits or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array.

OpenDialogOptions

Options to configure the behavior of a file open dialog.

  • Note 1: On Windows and Linux, a file dialog cannot be both a file selector and a folder selector, so if you set both canSelectFiles and canSelectFolders to true on these platforms, a folder selector will be shown.
  • Note 2: Explicitly setting canSelectFiles and canSelectFolders to false is futile and the editor then silently adjusts the options to select files.

Properties

Allow to select files, defaults to true.

Allow to select folders, defaults to false.

Allow to select many files or folders.

The resource the dialog shows when opened.

A set of file filters that are used by the dialog. Each entry is a human-readable label, like "TypeScript", and an array of extensions, for example:

{
    'Images': ['png', 'jpg'],
    'TypeScript': ['ts', 'tsx']
}

A human-readable string for the open button.

Dialog title.

This parameter might be ignored, as not all operating systems display a title on open dialogs (for example, macOS).

OutputChannel

An output channel is a container for readonly textual information.

To get an instance of an OutputChannel use createOutputChannel.

Properties

The human-readable name of this output channel.

Methods

Append the given value to the channel.

ParameterDescription
value: string

A string, falsy values will not be printed.

ReturnsDescription
void

Append the given value and a line feed character to the channel.

ParameterDescription
value: string

A string, falsy values will be printed.

ReturnsDescription
void

Removes all output from the channel.

ParameterDescription
ReturnsDescription
void

Dispose and free associated resources.

ParameterDescription
ReturnsDescription
void

Hide this channel from the UI.

ParameterDescription
ReturnsDescription
void

Replaces all output from the channel with the given value.

ParameterDescription
value: string

A string, falsy values will not be printed.

ReturnsDescription
void

Reveal this channel in the UI.

ParameterDescription
preserveFocus?: boolean

When true the channel will not take focus.

ReturnsDescription
void

Reveal this channel in the UI.

  • deprecated - Use the overload with just one parameter (show(preserveFocus?: boolean): void).
ParameterDescription
column?: ViewColumn

This argument is deprecated and will be ignored.

preserveFocus?: boolean

When true the channel will not take focus.

ReturnsDescription
void

OverviewRulerLane

Represents different positions for rendering a decoration in an overview ruler. The overview ruler supports three lanes.

Enumeration Members

The left lane of the overview ruler.

The center lane of the overview ruler.

The right lane of the overview ruler.

All lanes of the overview ruler.

ParameterInformation

Represents a parameter of a callable-signature. A parameter can have a label and a doc-comment.

Constructors

Creates a new parameter information object.

ParameterDescription
label: string | [number, number]

A label string or inclusive start and exclusive end offsets within its containing signature label.

documentation?: string | MarkdownString

A doc string.

ReturnsDescription
ParameterInformation

Properties

The human-readable doc-comment of this signature. Will be shown in the UI but can be omitted.

The label of this signature.

Either a string or inclusive start and exclusive end offsets within its containing signature label. Note: A label of type string must be a substring of its containing signature information's label.

Position

Represents a line and character position, such as the position of the cursor.

Position objects are immutable. Use the with or translate methods to derive new positions from an existing position.

Constructors

ParameterDescription
line: number

A zero-based line value.

character: number

A zero-based character value.

ReturnsDescription
Position

Properties

The zero-based character value.

Character offsets are expressed using UTF-16 code units.

The zero-based line value.

Methods

Compare this to other.

ParameterDescription
other: Position

A position.

ReturnsDescription
number

A number smaller than zero if this position is before the given position, a number greater than zero if this position is after the given position, or zero when this and the given position are equal.

Check if this position is after other.

ParameterDescription
other: Position

A position.

ReturnsDescription
boolean

true if position is on a greater line or on the same line on a greater character.

Check if this position is after or equal to other.

ParameterDescription
other: Position

A position.

ReturnsDescription
boolean

true if position is on a greater line or on the same line on a greater or equal character.

Check if this position is before other.

ParameterDescription
other: Position

A position.

ReturnsDescription
boolean

true if position is on a smaller line or on the same line on a smaller character.

Check if this position is before or equal to other.

ParameterDescription
other: Position

A position.

ReturnsDescription
boolean

true if position is on a smaller line or on the same line on a smaller or equal character.

Check if this position is equal to other.

ParameterDescription
other: Position

A position.

ReturnsDescription
boolean

true if the line and character of the given position are equal to the line and character of this position.

Create a new position relative to this position.

ParameterDescription
lineDelta?: number

Delta value for the line value, default is 0.

characterDelta?: number

Delta value for the character value, default is 0.

ReturnsDescription
Position

A position which line and character is the sum of the current line and character and the corresponding deltas.

Derived a new position relative to this position.

ParameterDescription
change: {characterDelta: number, lineDelta: number}

An object that describes a delta to this position.

ReturnsDescription
Position

A position that reflects the given delta. Will return this position if the change is not changing anything.

Create a new position derived from this position.

ParameterDescription
line?: number

Value that should be used as line value, default is the existing value

character?: number

Value that should be used as character value, default is the existing value

ReturnsDescription
Position

A position where line and character are replaced by the given values.

Derived a new position from this position.

ParameterDescription
change: {character: number, line: number}

An object that describes a change to this position.

ReturnsDescription
Position

A position that reflects the given change. Will return this position if the change is not changing anything.

PreparedToolInvocation

The result of a call to LanguageModelTool.prepareInvocation.

Properties

The presence of this property indicates that the user should be asked to confirm before running the tool. The user should be asked for confirmation for any tool that has a side-effect or may potentially be dangerous.

A customized progress message to show while the tool runs.

PrepareLanguageModelChatModelOptions

Properties

Whether or not the user should be prompted via some UI flow, or if models should be attempted to be resolved silently. If silent is true, all models may not be resolved due to lack of info such as API keys.

ProcessExecution

The execution of a task happens as an external process without shell interaction.

Constructors

Creates a process execution.

ParameterDescription
process: string

The process to start.

options?: ProcessExecutionOptions

Optional options for the started process.

ReturnsDescription
ProcessExecution

Creates a process execution.

ParameterDescription
process: string

The process to start.

args: string[]

Arguments to be passed to the process.

options?: ProcessExecutionOptions

Optional options for the started process.

ReturnsDescription
ProcessExecution

Properties

The arguments passed to the process. Defaults to an empty array.

The process options used when the process is executed. Defaults to undefined.

The process to be executed.

ProcessExecutionOptions

Options for a process execution

Properties

The current working directory of the executed program or shell. If omitted the tools current workspace root is used.

The additional environment of the executed program or shell. If omitted the parent process' environment is used. If provided it is merged with the parent process' environment.

Progress<T>

Defines a generalized way of reporting progress updates.

Methods

Report a progress update.

ParameterDescription
value: T

A progress item, like a message and/or an report on how much work finished

ReturnsDescription
void

ProgressLocation

A location in the editor at which progress information can be shown. It depends on the location how progress is visually represented.

Enumeration Members

Show progress for the source control viewlet, as overlay for the icon and as progress bar inside the viewlet (when visible). Neither supports cancellation nor discrete progress nor a label to describe the operation.

Show progress in the status bar of the editor. Neither supports cancellation nor discrete progress. Supports rendering of theme icons via the $(<name>)-syntax in the progress label.

Show progress as notification with an optional cancel button. Supports to show infinite and discrete progress but does not support rendering of icons.

ProgressOptions

Value-object describing where and how progress should show.

Properties

Controls if a cancel button should show to allow the user to cancel the long running operation. Note that currently only ProgressLocation.Notification is supporting to show a cancel button.

The location at which progress should show.

A human-readable string which will be used to describe the operation.

ProvideLanguageModelChatResponseOptions

The provider version of LanguageModelChatRequestOptions

Properties

A set of options that control the behavior of the language model. These options are specific to the language model.

The tool-selecting mode to use. The provider must implement respecting this.

An optional list of tools that are available to the language model. These could be registered tools available via lm.tools, or private tools that are just implemented within the calling extension.

If the LLM requests to call one of these tools, it will return a LanguageModelToolCallPart in LanguageModelChatResponse.stream. It's the caller's responsibility to invoke the tool. If it's a tool registered in lm.tools, that means calling lm.invokeTool.

Then, the tool result can be provided to the LLM by creating an Assistant-type LanguageModelChatMessage with a LanguageModelToolCallPart, followed by a User-type message with a LanguageModelToolResultPart.

ProviderResult<T>

A provider result represents the values a provider, like the HoverProvider, may return. For once this is the actual result type T, like Hover, or a thenable that resolves to that type T. In addition, null and undefined can be returned - either directly or from a thenable.

The snippets below are all valid implementations of the HoverProvider:

let a: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return new Hover('Hello World');
  }
};

let b: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return new Promise(resolve => {
      resolve(new Hover('Hello World'));
    });
  }
};

let c: HoverProvider = {
  provideHover(doc, pos, token): ProviderResult<Hover> {
    return; // undefined
  }
};

Pseudoterminal

Defines the interface of a terminal pty, enabling extensions to control a terminal.

Events

An event that when fired allows changing the name of the terminal.

Events fired before Pseudoterminal.open is called will be be ignored.

Example: Change the terminal name to "My new terminal".

const writeEmitter = new vscode.EventEmitter<string>();
const changeNameEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidChangeName: changeNameEmitter.event,
  open: () => changeNameEmitter.fire('My new terminal'),
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

An event that when fired will signal that the pty is closed and dispose of the terminal.

Events fired before Pseudoterminal.open is called will be be ignored.

A number can be used to provide an exit code for the terminal. Exit codes must be positive and a non-zero exit codes signals failure which shows a notification for a regular terminal and allows dependent tasks to proceed when used with the CustomExecution API.

Example: Exit the terminal when "y" is pressed, otherwise show a notification.

const writeEmitter = new vscode.EventEmitter<string>();
const closeEmitter = new vscode.EventEmitter<void>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidClose: closeEmitter.event,
  open: () => writeEmitter.fire('Press y to exit successfully'),
  close: () => {},
  handleInput: data => {
    if (data !== 'y') {
      vscode.window.showInformationMessage('Something went wrong');
    }
    closeEmitter.fire();
  }
};
const terminal = vscode.window.createTerminal({ name: 'Exit example', pty });
terminal.show(true);

An event that when fired allows overriding the dimensions of the terminal. Note that when set, the overridden dimensions will only take effect when they are lower than the actual dimensions of the terminal (ie. there will never be a scroll bar). Set to undefined for the terminal to go back to the regular dimensions (fit to the size of the panel).

Events fired before Pseudoterminal.open is called will be be ignored.

Example: Override the dimensions of a terminal to 20 columns and 10 rows

const dimensionsEmitter = new vscode.EventEmitter<vscode.TerminalDimensions>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  onDidOverrideDimensions: dimensionsEmitter.event,
  open: () => {
    dimensionsEmitter.fire({
      columns: 20,
      rows: 10
    });
  },
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

An event that when fired will write data to the terminal. Unlike Terminal.sendText which sends text to the underlying child pseudo-device (the child), this will write the text to parent pseudo-device (the terminal itself).

Note writing \n will just move the cursor down 1 row, you need to write \r as well to move the cursor to the left-most cell.

Events fired before Pseudoterminal.open is called will be be ignored.

Example: Write red text to the terminal

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  open: () => writeEmitter.fire('\x1b[31mHello world\x1b[0m'),
  close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });

Example: Move the cursor to the 10th row and 20th column and write an asterisk

writeEmitter.fire('\x1b[10;20H*');

Methods

Implement to handle when the terminal is closed by an act of the user.

ParameterDescription
ReturnsDescription
void

Implement to handle incoming keystrokes in the terminal or when an extension calls Terminal.sendText. data contains the keystrokes/text serialized into their corresponding VT sequence representation.

ParameterDescription
data: string

The incoming data.

Example: Echo input in the terminal. The sequence for enter (\r) is translated to CRLF to go to a new line and move the cursor to the start of the line.

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  open: () => {},
  close: () => {},
  handleInput: data => writeEmitter.fire(data === '\r' ? '\r\n' : data)
};
vscode.window.createTerminal({ name: 'Local echo', pty });
ReturnsDescription
void

Implement to handle when the pty is open and ready to start firing events.

ParameterDescription
initialDimensions: TerminalDimensions

The dimensions of the terminal, this will be undefined if the terminal panel has not been opened before this is called.

ReturnsDescription
void

Implement to handle when the number of rows and columns that fit into the terminal panel changes, for example when font size changes or when the panel is resized. The initial state of a terminal's dimensions should be treated as undefined until this is triggered as the size of a terminal isn't known until it shows up in the user interface.

When dimensions are overridden by onDidOverrideDimensions, setDimensions will continue to be called with the regular panel dimensions, allowing the extension continue to react dimension changes.

ParameterDescription
dimensions: TerminalDimensions

The new dimensions.

ReturnsDescription
void

QuickDiffProvider

A quick diff provider provides a uri to the original state of a modified resource. The editor will use this information to render ad'hoc diffs within the text.

Methods

Provide a Uri to the original resource of any given resource uri.

ParameterDescription
uri: Uri

The uri of the resource open in a text editor.

token: CancellationToken

A cancellation token.

ReturnsDescription
ProviderResult<Uri>

A thenable that resolves to uri of the matching original resource.

QuickInput

The base interface for all quick input types.

Quick input provides a unified way for extensions to interact with users through simple UI elements. A quick input UI is initially not visible. After configuring it through its properties the extension can make it visible by calling show.

There are several reasons why this UI might have to be hidden and the extension will be notified through onDidHide. Examples include: an explicit call to hide, the user pressing Esc, some other input UI opening, etc.

A user pressing Enter or some other gesture implying acceptance of the current state does not automatically hide this UI component. It is up to the extension to decide whether to accept the user's input and if the UI should indeed be hidden through a call to hide.

When the extension no longer needs this input UI, it should dispose it to allow for freeing up any resources associated with it.

See QuickPick and InputBox for concrete UIs.

Events

An event signaling when this input UI is hidden.

There are several reasons why this UI might have to be hidden and the extension will be notified through onDidHide. Examples include: an explicit call to hide, the user pressing Esc, some other input UI opening, etc.

Properties

Determines if the UI should show a progress indicator. Defaults to false.

Change this to true, for example, while loading more data or validating user input.

Determines if the UI should allow for user input. Defaults to true.

Change this to false, for example, while validating user input or loading data for the next step in user input.

Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.

An optional current step count for multi-step input flows.

An optional title for the input UI.

An optional total step count for multi-step input flows.

Methods

Dispose of this input UI and any associated resources.

If it is still visible, it is first hidden. After this call the input UI is no longer functional and no additional methods or properties on it should be accessed. Instead a new input UI should be created.

ParameterDescription
ReturnsDescription
void

Hides this input UI.

This will also fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

Makes the input UI visible in its current configuration.

Any other input UI will first fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

QuickInputButton

A button for an action in a QuickPick or InputBox.

Properties

The icon for the button.

The location where the button should be rendered.

Defaults to QuickInputButtonLocation.Title.

Note: This property is ignored if the button was added to a QuickPickItem.

When present, indicates that the button is a toggle button that can be checked or unchecked.

ParameterDescription
checked: boolean

Indicates whether the toggle button is currently checked. This property will be updated when the button is toggled.

An optional tooltip displayed when hovering over the button.

QuickInputButtonLocation

Specifies the location where a QuickInputButton should be rendered.

Enumeration Members

The button is rendered in the title bar.

The button is rendered inline to the right of the input box.

The button is rendered at the far end inside the input box.

QuickInputButtons

Predefined buttons for QuickPick and InputBox.

Static

A predefined back button for QuickPick and InputBox.

This button should be used for consistency when a navigation back button is needed. It comes with a predefined icon, tooltip, and location.

QuickPick<T>

A concrete QuickInput to let the user pick an item from a list of items of type T.

The items can be filtered through a filter text field and there is an option canSelectMany to allow for selecting multiple items.

Note that in many cases the more convenient window.showQuickPick is easier to use. window.createQuickPick should be used when window.showQuickPick does not offer the required flexibility.

Events

An event signaling when the user indicated acceptance of the selected item(s).

An event signaling when the active items have changed.

An event signaling when the selected items have changed.

An event signaling when the value of the filter text has changed.

An event signaling when this input UI is hidden.

There are several reasons why this UI might have to be hidden and the extension will be notified through onDidHide. Examples include: an explicit call to hide, the user pressing Esc, some other input UI opening, etc.

An event signaling when a button was triggered.

This event fires for buttons stored in the buttons array. This event does not fire for buttons on a QuickPickItem.

An event signaling when a button in a particular QuickPickItem was triggered.

This event does not fire for buttons in the title bar which are part of buttons.

Properties

Active items. This can be read and updated by the extension.

Determines if the UI should show a progress indicator. Defaults to false.

Change this to true, for example, while loading more data or validating user input.

Buttons for actions in the UI.

Determines if multiple items can be selected at the same time. Defaults to false.

Determines if the UI should allow for user input. Defaults to true.

Change this to false, for example, while validating user input or loading data for the next step in user input.

Determines if the UI should stay open even when losing UI focus. Defaults to false. This setting is ignored on iPad and is always false.

Items to pick from. This can be read and updated by the extension.

Determines if the scroll position is maintained when the quick pick items are updated. Defaults to false.

Determines if the filter text should also be matched against the description of the items. Defaults to false.

Determines if the filter text should also be matched against the detail of the items. Defaults to false.

Optional placeholder text displayed in the filter text box when no value has been entered.

Optional text that provides instructions or context to the user.

The prompt is displayed below the input box and above the list of items.

Selected items. This can be read and updated by the extension.

An optional current step count for multi-step input flows.

An optional title for the input UI.

An optional total step count for multi-step input flows.

The current value of the filter text.

Methods

Dispose of this input UI and any associated resources.

If it is still visible, it is first hidden. After this call the input UI is no longer functional and no additional methods or properties on it should be accessed. Instead a new input UI should be created.

ParameterDescription
ReturnsDescription
void

Hides this input UI.

This will also fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

Makes the input UI visible in its current configuration.

Any other input UI will first fire an onDidHide event.

ParameterDescription
ReturnsDescription
void

QuickPickItem

Represents an item that can be selected from a list of items.

Properties

Determines if this item is always shown, even when filtered out by the user's input.

Note: This property is ignored when kind is set to QuickPickItemKind.Separator.

Optional buttons that will be rendered on this particular item.

These buttons will trigger an QuickPickItemButtonEvent when pressed. Buttons are only rendered when using a quick pick created by the createQuickPick API. Buttons are not rendered when using the showQuickPick API.

Note: This property is ignored when kind is set to QuickPickItemKind.Separator.

A human-readable string which is rendered less prominently in the same line.

Supports rendering of theme icons via the $(<name>)-syntax.

Note: This property is ignored when kind is set to QuickPickItemKind.Separator.

A human-readable string which is rendered less prominently in a separate line.

Supports rendering of theme icons via the $(<name>)-syntax.

Note: This property is ignored when kind is set to QuickPickItemKind.Separator.

The icon for the item.

The kind of this item that determines how it is rendered in the quick pick.

When not specified, the default is QuickPickItemKind.Default.

A human-readable string which is rendered prominently.

Supports rendering of theme icons via the $(<name>)-syntax.

Note: When kind is set to QuickPickItemKind.Default (so a regular item instead of a separator), it supports rendering of theme icons via the $(<name>)-syntax.

Optional flag indicating if this item is initially selected.

This is only honored when using the showQuickPick API. To do the same thing with the createQuickPick API, simply set the selectedItems to the items you want selected initially.

Note: This is only honored when the picker allows multiple selections.

See also QuickPickOptions.canPickMany

Note: This property is ignored when kind is set to QuickPickItemKind.Separator.

A Uri representing the resource associated with this item.

When set, this property is used to automatically derive several item properties if they are not explicitly provided:

  • Label: Derived from the resource's file name when label is not provided or is empty.
  • Description: Derived from the resource's path when description is not provided or is empty.
  • Icon: Derived from the current file icon theme when iconPath is set to ThemeIcon.File or ThemeIcon.Folder.

QuickPickItemButtonEvent<T>

An event describing a button that was pressed on a QuickPickItem.

Properties

The button that was pressed.

The item that the button belongs to.

QuickPickItemKind

Defines the kind of quick pick item.

Enumeration Members

A separator item that provides a visual grouping.

When a QuickPickItem has a kind of Separator, the item is just a visual separator and does not represent a selectable item. The only property that applies is label. All other properties on QuickPickItem will be ignored and have no effect.

The default kind for an item that can be selected in the quick pick.

QuickPickOptions

Options to configure the behavior of the quick pick UI.

Events

An optional function that is invoked whenever an item is selected.

ParameterDescription
item: string | QuickPickItem
ReturnsDescription
any

Properties

Determines if the picker allows multiple selections. When true, the result is an array of picks.

Set to true to keep the picker open when focus moves to another part of the editor or to another window. This setting is ignored on iPad and is always false.

Determines if the description should be included when filtering items. Defaults to false.

Determines if the detail should be included when filtering items. Defaults to false.

An optional string to show as placeholder in the input box to guide the user.

Optional text that provides instructions or context to the user.

The prompt is displayed below the input box and above the list of items.

An optional title for the quick pick.

Range

A range represents an ordered pair of two positions. It is guaranteed that start.isBeforeOrEqual(end)

Range objects are immutable. Use the with, intersection, or union methods to derive new ranges from an existing range.

Constructors

Create a new range from two positions. If start is not before or equal to end, the values will be swapped.

ParameterDescription
start: Position

A position.

end: Position

A position.

ReturnsDescription
Range

Create a new range from number coordinates. It is a shorter equivalent of using new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter))

ParameterDescription
startLine: number

A zero-based line value.

startCharacter: number

A zero-based character value.

endLine: number

A zero-based line value.

endCharacter: number

A zero-based character value.

ReturnsDescription
Range

Properties

The end position. It is after or equal to start.

true if start and end are equal.

true if start.line and end.line are equal.

The start position. It is before or equal to end.

Methods

Check if a position or a range is contained in this range.

ParameterDescription
positionOrRange: Range | Position

A position or a range.

ReturnsDescription
boolean

true if the position or range is inside or equal to this range.

Intersect range with this range and returns a new range or undefined if the ranges have no overlap.

ParameterDescription
range: Range

A range.

ReturnsDescription
Range

A range of the greater start and smaller end positions. Will return undefined when there is no overlap.

Check if other equals this range.

ParameterDescription
other: Range

A range.

ReturnsDescription
boolean

true when start and end are equal to start and end of this range.

Compute the union of other with this range.

ParameterDescription
other: Range

A range.

ReturnsDescription
Range

A range of smaller start position and the greater end position.

Derived a new range from this range.

ParameterDescription
start?: Position

A position that should be used as start. The default value is the current start.

end?: Position

A position that should be used as end. The default value is the current end.

ReturnsDescription
Range

A range derived from this range with the given start and end position. If start and end are not different this range will be returned.

Derived a new range from this range.

ParameterDescription
change: {end: Position, start: Position}

An object that describes a change to this range.

ReturnsDescription
Range

A range that reflects the given change. Will return this range if the change is not changing anything.

ReferenceContext

Value-object that contains additional information when requesting references.

Properties

Include the declaration of the current symbol.

ReferenceProvider

The reference provider interface defines the contract between extensions and the find references-feature.

Methods

Provide a set of project-wide references for the given position and document.

ParameterDescription
document: TextDocument

The document in which the command was invoked.

position: Position

The position at which the command was invoked.

context: ReferenceContext

Additional information about the references request.

token: