Extension API
Topics Overview Your First Extension Extension Anatomy Wrapping Up Overview Common Capabilities Theming Extending Workbench Overview AI Extensibility Language Model Tool MCP Dev Guide Chat Participant Chat Tutorial Language Model Language Model Tutorial Language Model Chat Provider Prompt TSX Command Color Theme File Icon Theme Product Icon Theme Tree View Webview Notebook Custom Editors Virtual Documents Virtual Workspaces Web Extensions Workspace Trust Task Provider Source Control Debugger Extension Markdown Extension Test Extension Custom Data Extension Telemetry Overview Activity Bar Sidebars Panel Status Bar Views Editor Actions Quick Picks Command Palette Notifications Webviews Context Menus Walkthroughs Settings Overview Syntax Highlight Guide Semantic Highlight Guide Snippet Guide Language Configuration Guide Programmatic Language Features Language Server Extension Guide Embedded Languages Testing Extensions Publishing Extensions Bundling Extensions Continuous Integration Extension Host Remote Development and Codespaces Using Proposed API Migrate from TSLint to ESLint Python Extension Template VS Code API Contribution Points Activation Events Extension Manifest Built-In Commands When Clause Contexts Theme Color Product Icon Reference Document SelectorVS 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
Events
onDidChangeSessions: Event<AuthenticationSessionsChangeEvent>
An Event which fires when the authentication sessions of an authentication provider have been added, removed, or changed.
Functions
getAccounts(providerId: string): Thenable<readonly AuthenticationSessionAccountInformation[]>
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.
| providerId: string | The id of the provider to use |
| Thenable<readonly AuthenticationSessionAccountInformation[]> | A thenable that resolves to a readonly array of authentication accounts. |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
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
| 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} | The AuthenticationGetSessionOptions to use |
| Thenable<AuthenticationSession> | A thenable that resolves to an authentication session |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
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
| 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} | The AuthenticationGetSessionOptions to use |
| Thenable<AuthenticationSession> | A thenable that resolves to an authentication session |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options?: AuthenticationGetSessionOptions): Thenable<AuthenticationSession | undefined>
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
| 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 | The AuthenticationGetSessionOptions to use |
| Thenable<AuthenticationSession | undefined> | A thenable that resolves to an authentication session or undefined if a silent flow was used and no session was found |
registerAuthenticationProvider(id: string, label: string, provider: AuthenticationProvider, options?: AuthenticationProviderOptions): Disposable
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.
| 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. |
| 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
createChatParticipant(id: string, handler: ChatRequestHandler): ChatParticipant
Create a new chat participant instance.
| id: string | A unique identifier for the participant. |
| handler: ChatRequestHandler | A request handler for the participant. |
| 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.
{ "contributes": { "commands": [ { "command": "extension.sayHello", "title": "Hello World" } ] } }Functions
executeCommand<T>(command: string, ...rest: any[]): Thenable<T>
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.
| command: string | Identifier of the command to execute. |
| ...rest: any[] | Parameters passed to the command function. |
| 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. |
getCommands(filterInternal?: boolean): Thenable<string[]>
Retrieve the list of all available commands. Commands starting with an underscore are treated as internal commands.
| filterInternal?: boolean | Set true to not see internal commands (starting with an underscore) |
| Thenable<string[]> | Thenable that resolves to a list of command ids. |
registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable
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.
| 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. |
| Disposable | Disposable which unregisters this command on disposal. |
registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable
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.
| command: string | A unique identifier for the command. |
| callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void | |
| thisArg?: any | The this context used when invoking the handler function. |
| Disposable | Disposable which unregisters this command on disposal. |
comments
Functions
createCommentController(id: string, label: string): CommentController
Creates a new comment controller instance.
| id: string | An id for the comment controller. |
| label: string | A human-readable string for the comment controller. |
| CommentController | An instance of comment controller. |
debug
Namespace for debug functionality.
Variables
activeDebugConsole: DebugConsole
The currently active debug console. If no debug session is active, output sent to the debug console is not shown.
activeDebugSession: DebugSession | undefined
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.
activeStackItem: DebugThread | DebugStackFrame | 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.
breakpoints: readonly Breakpoint[]
List of breakpoints.
Events
onDidChangeActiveDebugSession: Event<DebugSession | undefined>
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.
onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>
An event which fires when the debug.activeStackItem has changed.
onDidChangeBreakpoints: Event<BreakpointsChangeEvent>
An Event that is emitted when the set of breakpoints is added, removed, or changed.
onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>
An Event which fires when a custom DAP event is received from the debug session.
onDidStartDebugSession: Event<DebugSession>
An Event which fires when a new debug session has been started.
onDidTerminateDebugSession: Event<DebugSession>
An Event which fires when a debug session has terminated.
Functions
addBreakpoints(breakpoints: readonly Breakpoint[]): void
Add breakpoints.
| breakpoints: readonly Breakpoint[] | The breakpoints to add. |
| void |
asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri
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.
| 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. |
| Uri | A uri that can be used to load the contents of the source. |
registerDebugAdapterDescriptorFactory(debugType: string, factory: DebugAdapterDescriptorFactory): Disposable
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.
| debugType: string | The debug type for which the factory is registered. |
| factory: DebugAdapterDescriptorFactory | The debug adapter descriptor factory to register. |
| Disposable | A Disposable that unregisters this factory when being disposed. |
registerDebugAdapterTrackerFactory(debugType: string, factory: DebugAdapterTrackerFactory): Disposable
Register a debug adapter tracker factory for the given debug type.
| debugType: string | The debug type for which the factory is registered or '*' for matching all debug types. |
| factory: DebugAdapterTrackerFactory | The debug adapter tracker factory to register. |
| Disposable | A Disposable that unregisters this factory when being disposed. |
registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider, triggerKind?: DebugConfigurationProviderTriggerKind): Disposable
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.
| debugType: string | The debug type for which the provider is registered. |
| provider: DebugConfigurationProvider | The debug configuration provider to register. |
| triggerKind?: DebugConfigurationProviderTriggerKind | The trigger for which the 'provideDebugConfiguration' method of the provider is registered. If triggerKind is missing, the value DebugConfigurationProviderTriggerKind.Initial is assumed. |
| Disposable | A Disposable that unregisters this provider when being disposed. |
removeBreakpoints(breakpoints: readonly Breakpoint[]): void
Remove breakpoints.
| breakpoints: readonly Breakpoint[] | The breakpoints to remove. |
| void |
startDebugging(folder: WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration, parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>
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.
| 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. |
| Thenable<boolean> | A thenable that resolves when debugging could be successfully started. |
stopDebugging(session?: DebugSession): Thenable<void>
Stop the given debug session or stop all debug sessions if session is omitted.
| session?: DebugSession | The debug session to stop; if omitted all sessions are stopped. |
| 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.
clipboard: Clipboard
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.
logLevel: LogLevel
The current log level of the editor.
A unique identifier for the computer.
remoteName: string | undefined
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.
uiKind: UIKind
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
onDidChangeLogLevel: Event<LogLevel>
An Event which fires when the log level of the editor changes.
onDidChangeShell: Event<string>
An Event which fires when the default shell changes. This fires with the new shell path.
onDidChangeTelemetryEnabled: Event<boolean>
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
asExternalUri(target: Uri): Thenable<Uri>
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:
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:
l10n.t('Hello {0}!', 'World');| 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. |
| string | localized string with injected arguments. |
t(message: string, args: Record<string, string | number | boolean>): string
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
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
onDidChangeDiagnostics: Event<DiagnosticChangeEvent>
An Event which fires when the global set of diagnostics changes. This is newly added and removed diagnostics.
Functions
createDiagnosticCollection(name?: string): DiagnosticCollection
Create a diagnostics collection.
| name?: string | The name of the collection. |
| DiagnosticCollection | A new diagnostic collection. |
createLanguageStatusItem(id: string, selector: DocumentSelector): LanguageStatusItem
Creates a new language status item.
| id: string | The identifier of the item. |
| selector: DocumentSelector | The document selector that defines for what editors the item shows. |
| LanguageStatusItem | A new language status item. |
getDiagnostics(resource: Uri): Diagnostic[]
Get all diagnostics for a given resource.
| resource: Uri | A resource |
| Diagnostic[] | An array of diagnostics objects or an empty array. |
getDiagnostics(): Array<[Uri, Diagnostic[]]>
Get all diagnostics.
| Array<[Uri, Diagnostic[]]> | An array of uri-diagnostics tuples or an empty array. |
getLanguages(): Thenable<string[]>
Return the identifiers of all known languages.
| Thenable<string[]> | Promise resolving to an array of identifier strings. |
match(selector: DocumentSelector, document: TextDocument): number
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:
- When DocumentSelector is an array, compute the match for each contained DocumentFilter or language identifier and take the maximum value.
- A string will be desugared to become the language-part of a DocumentFilter, so "fooLang" is like { language: "fooLang" }.
- A DocumentFilter will be matched against the document by comparing its parts with the document. The following rules apply:
- When the DocumentFilter is empty ({}) the result is 0
- When scheme, language, pattern, or notebook are defined but one doesn't match, the result is 0
- Matching against * gives a score of 5, matching via equality or via a glob-pattern gives a score of 10
- The result is the maximum value of each match
Samples:
"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.
| id: string | The ID of the provider, which is unique to the extension. |
| provider: McpServerDefinitionProvider<McpServerDefinition> | The provider to register |
| Disposable | A disposable that unregisters the provider when disposed. |
registerTool<T>(name: string, tool: LanguageModelTool<T>): Disposable
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.
| name: string | |
| tool: LanguageModelTool<T> | |
| Disposable | A Disposable that unregisters the tool when disposed. |
selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>
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.
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.
workspaceFolders: readonly WorkspaceFolder[] | undefined
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
onDidChangeConfiguration: Event<ConfigurationChangeEvent>
An event that is emitted when the configuration changed.
onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>
An event that is emitted when a notebook has changed.
onDidChangeTextDocument: Event<TextDocumentChangeEvent>
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.
onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>
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.
onDidCloseNotebookDocument: Event<NotebookDocument>
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.
onDidCloseTextDocument: Event<TextDocument>
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.
onDidCreateFiles: Event<FileCreateEvent>
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.
onDidDeleteFiles: Event<FileDeleteEvent>
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.
onDidGrantWorkspaceTrust: Event<void>
Event that fires when the current workspace has been trusted.
onDidOpenNotebookDocument: Event<NotebookDocument>
An event that is emitted when a notebook is opened.
onDidOpenTextDocument: Event<TextDocument>
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:
- The event is emitted before the document is updated in the active text editor
- When a text document is already open (e.g.: open in another visible text editor) this event is not emitted
onDidRenameFiles: Event<FileRenameEvent>
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.
onDidSaveNotebookDocument: Event<NotebookDocument>
An event that is emitted when a notebook is saved.
onDidSaveTextDocument: Event<TextDocument>
An event that is emitted when a text document is saved to disk.
onWillCreateFiles: Event<FileWillCreateEvent>
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.
onWillDeleteFiles: Event<FileWillDeleteEvent>
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.
onWillRenameFiles: Event<FileWillRenameEvent>
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.
onWillSaveNotebookDocument: Event<NotebookDocumentWillSaveEvent>
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.
onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>
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
applyEdit(edit: WorkspaceEdit, metadata?: WorkspaceEditMetadata): Thenable<boolean>
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.
| edit: WorkspaceEdit | A workspace edit. |
| metadata?: WorkspaceEditMetadata | Optional metadata for the edit. |
| Thenable<boolean> | A thenable that resolves when the edit could be applied. |
asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string
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.
| 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. |
| string | A path relative to the root or the input. |
createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher
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:
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(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.window.activeTextEditor.document.uri, '*') );| 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. |
| FileSystemWatcher | A new file system watcher instance. Must be disposed when no longer needed. |
decode(content: Uint8Array): Thenable<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.
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.
| content: Uint8Array | The text content to decode as a Uint8Array. |
| Thenable<string> | A thenable that resolves to the decoded string. |
decode(content: Uint8Array, options: {encoding: string}): Thenable<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.
| content: Uint8Array | The text content to decode as a Uint8Array. |
| options: {encoding: string} | Additional context for picking the encoding. |
| Thenable<string> | A thenable that resolves to the decoded string. |
decode(content: Uint8Array, options: {uri: Uri}): Thenable<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.
| content: Uint8Array | The content to decode as a Uint8Array. |
| options: {uri: Uri} | Additional context for picking the encoding. |
| Thenable<string> | A thenable that resolves to the decoded string. |
encode(content: string): Thenable<Uint8Array>
Encodes the content of a string to a Uint8Array.
Will pick an encoding based on settings.
| content: string | The content to decode as a string. |
| Thenable<Uint8Array> | A thenable that resolves to the encoded Uint8Array. |
encode(content: string, options: {encoding: string}): Thenable<Uint8Array>
Encodes the content of a string to a Uint8Array using the provided encoding.
| content: string | The content to decode as a string. |
| options: {encoding: string} | Additional context for picking the encoding. |
| Thenable<Uint8Array> | A thenable that resolves to the encoded Uint8Array. |
encode(content: string, options: {uri: Uri}): Thenable<Uint8Array>
Encodes the content of a string to a Uint8Array.
The encoding is picked based on settings.
| content: string | The content to decode as a string. |
| options: {uri: Uri} | Additional context for picking the encoding. |
| Thenable<Uint8Array> | A thenable that resolves to the encoded Uint8Array. |
findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>
Find files across all workspace folders in the workspace.
Example
workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...});Example: removing the first workspace folder
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.
| 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. |
| 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.
- deprecated - Use AuthenticationGetSessionPresentationOptions instead.
AuthenticationForceNewSessionOptions: AuthenticationGetSessionPresentationOptions
AuthenticationGetSessionOptions
Options to be used when getting an AuthenticationSession from an AuthenticationProvider.
Properties
account?: AuthenticationSessionAccountInformation
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.
clearSessionPreference?: boolean
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.
createIfNone?: boolean | AuthenticationGetSessionPresentationOptions
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.
forceNewSession?: boolean | AuthenticationGetSessionPresentationOptions
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
onDidChangeSessions: Event<AuthenticationProviderAuthenticationSessionsChangeEvent>
An Event which fires when the array of sessions has changed, or data within a session has changed.
Methods
createSession(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession>
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.
| scopes: readonly string[] | A list of scopes, permissions, that the new session should be created with. |
| options: AuthenticationProviderSessionOptions | Additional options for creating a session. |
| Thenable<AuthenticationSession> | A promise that resolves to an authentication session. |
getSessions(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession[]>
Get a list of sessions.
| 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. |
| Thenable<AuthenticationSession[]> | A promise that resolves to an array of authentication sessions. |
removeSession(sessionId: string): Thenable<void>
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.
| sessionId: string | The id of the session to remove. |
| Thenable<void> |
AuthenticationProviderAuthenticationSessionsChangeEvent
An Event which fires when an AuthenticationSession is added, removed, or changed.
Properties
added: readonly AuthenticationSession[]
The AuthenticationSessions of the AuthenticationProvider that have been added.
changed: readonly AuthenticationSession[]
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.
removed: readonly AuthenticationSession[]
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
supportsMultipleAccounts?: boolean
Whether it is possible to be signed into multiple accounts at once with this provider. If not specified, will default to false.
AuthenticationProviderSessionOptions
The options passed in to the AuthenticationProvider.getSessions and AuthenticationProvider.createSession call.
Properties
account?: AuthenticationSessionAccountInformation
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.
- reference - https://oauth.net/2/access-tokens/
account: AuthenticationSessionAccountInformation
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
provider: AuthenticationProviderInformation
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.
- note - For more information on WWW-Authenticate please see https://developer.mozilla.org/docs/Web/HTTP/Reference/Headers/WWW-Authenticate
Properties
fallbackScopes?: readonly string[]
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.
notIn?: SyntaxTokenType[]
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
new BranchCoverage(executed: number | boolean, location?: Range | Position, label?: string): BranchCoverage
| 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 | |
| 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
new Breakpoint(enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): Breakpoint
Creates a new breakpoint
| 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 |
| 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: readonly Breakpoint[]
Added breakpoints.
changed: readonly Breakpoint[]
Changed breakpoints.
removed: readonly Breakpoint[]
Removed breakpoints.
CallHierarchyIncomingCall
Represents an incoming call, e.g. a caller of a method or constructor.
Constructors
new CallHierarchyIncomingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyIncomingCall
Create a new call object.
| item: CallHierarchyItem | The item making the call. |
| fromRanges: Range[] | The ranges at which the calls appear. |
| CallHierarchyIncomingCall |
Properties
from: CallHierarchyItem
The item that makes the call.
fromRanges: Range[]
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
new CallHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): CallHierarchyItem
Creates a new call hierarchy item.
| kind: SymbolKind | |
| name: string | |
| detail: string | |
| uri: Uri | |
| range: Range | |
| selectionRange: Range | |
| CallHierarchyItem |
Properties
More detail for this item, e.g. the signature of a function.
kind: SymbolKind
The kind of this item.
The name of this item.
range: Range
The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
selectionRange: Range
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?: readonly SymbolTag[]
Tags for this item.
uri: Uri
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
new CallHierarchyOutgoingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyOutgoingCall
Create a new call object.
| item: CallHierarchyItem | The item being called |
| fromRanges: Range[] | The ranges at which the calls appear. |
| CallHierarchyOutgoingCall |
Properties
fromRanges: Range[]
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
prepareCallHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyItem | CallHierarchyItem[]>
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.
| 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. |
| 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. |
provideCallHierarchyIncomingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyIncomingCall[]>
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.
| item: CallHierarchyItem | The hierarchy item for which incoming calls should be computed. |
| token: CancellationToken | A cancellation token. |
| 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. |
provideCallHierarchyOutgoingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyOutgoingCall[]>
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.
| item: CallHierarchyItem | The hierarchy item for which outgoing calls should be computed. |
| token: CancellationToken | A cancellation token. |
| 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
new CancellationError(): CancellationError
Creates a new cancellation error.
| 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
isCancellationRequested: boolean
Is true when the token has been cancelled, false otherwise.
onCancellationRequested: Event<any>
An Event which fires upon cancellation.
CancellationTokenSource
A cancellation source creates and controls a cancellation token.
Constructors
new CancellationTokenSource(): CancellationTokenSource
| CancellationTokenSource |
Properties
token: CancellationToken
The cancellation token of this source.
Methods
Signal cancellation on the token.
| void |
Dispose object and free resources.
| void |
CharacterPair
A tuple of two characters, like a pair of opening and closing brackets.
CharacterPair: [string, string]
ChatContext
Extra context passed to a participant.
Properties
history: ReadonlyArray<ChatRequestTurn | ChatResponseTurn>
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
provideFollowups(result: ChatResult, context: ChatContext, token: CancellationToken): ProviderResult<ChatFollowup[]>
Provide followups for the given result.
| 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. |
| 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.
range?: [start: number, end: number]
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
onDidReceiveFeedback: Event<ChatResultFeedback>
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
followupProvider?: ChatFollowupProvider
This provider will be called once after each request to retrieve suggested followup questions.
iconPath?: IconPath
An icon for the participant shown in UI.
A unique ID for this participant.
requestHandler: ChatRequestHandler
The handler for requests to this participant.
Methods
Dispose this participant and free resources.
| void |
ChatParticipantToolToken
A token that can be passed to lm.invokeTool when invoking a tool inside the context of handling a chat request.
ChatParticipantToolToken: never
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.
range?: [start: number, end: number]
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.
model: LanguageModelChat
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.
references: readonly ChatPromptReference[]
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.
toolReferences: readonly ChatLanguageModelToolReference[]
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
ChatRequestHandler: (request: ChatRequest, context: ChatContext, response: ChatResponseStream, token: CancellationToken) => ProviderResult<ChatResult | void>
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.
references: ChatPromptReference[]
The references that were used in this message.
toolReferences: readonly ChatLanguageModelToolReference[]
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
new ChatResponseAnchorPart(value: Uri | Location, title?: string): ChatResponseAnchorPart
Create a new ChatResponseAnchorPart.
| value: Uri | Location | A uri or location. |
| title?: string | An optional title that is rendered with value. |
| 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
new ChatResponseCommandButtonPart(value: Command): ChatResponseCommandButtonPart
Create a new ChatResponseCommandButtonPart.
| value: Command | A Command that will be executed when the button is clicked. |
| ChatResponseCommandButtonPart |
Properties
value: Command
The command that will be executed when the button is clicked.
ChatResponseFileTree
Represents a file tree structure in a chat response.
Properties
children?: ChatResponseFileTree[]
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
new ChatResponseFileTreePart(value: ChatResponseFileTree[], baseUri: Uri): ChatResponseFileTreePart
Create a new ChatResponseFileTreePart.
| value: ChatResponseFileTree[] | File tree data. |
| baseUri: Uri | The base uri to which this file tree is relative. |
| ChatResponseFileTreePart |
Properties
baseUri: Uri
The base uri to which this file tree is relative
value: ChatResponseFileTree[]
File tree data.
ChatResponseMarkdownPart
Represents a part of a chat response that is formatted as Markdown.
Constructors
new ChatResponseMarkdownPart(value: string | MarkdownString): ChatResponseMarkdownPart
Create a new ChatResponseMarkdownPart.
| value: string | MarkdownString | A markdown string or a string that should be interpreted as markdown. The boolean form of MarkdownString.isTrusted is NOT supported. |
| ChatResponseMarkdownPart |
Properties
value: MarkdownString
A markdown string or a string that should be interpreted as markdown.
ChatResponsePart
Represents the different chat response types.
ChatResponsePart: ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseProgressPart | ChatResponseReferencePart | ChatResponseCommandButtonPart
ChatResponseProgressPart
Represents a part of a chat response that is a progress message.
Constructors
new ChatResponseProgressPart(value: string): ChatResponseProgressPart
Create a new ChatResponseProgressPart.
| value: string | A progress message |
| ChatResponseProgressPart |
Properties
The progress message
ChatResponseReferencePart
Represents a part of a chat response that is a reference, rendered separately from the content.
Constructors
new ChatResponseReferencePart(value: Uri | Location, iconPath?: IconPath): ChatResponseReferencePart
Create a new ChatResponseReferencePart.
| value: Uri | Location | A uri or location |
| iconPath?: IconPath | Icon for the reference shown in UI |
| ChatResponseReferencePart |
Properties
iconPath?: IconPath
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
anchor(value: Uri | Location, title?: string): void
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.
button(command: Command): void
Push a command button part to this stream. Short-hand for push(new ChatResponseCommandButtonPart(value, title)).
| command: Command | A Command that will be executed when the button is clicked. |
| void |
filetree(value: ChatResponseFileTree[], baseUri: Uri): void
Push a filetree part to this stream. Short-hand for push(new ChatResponseFileTreePart(value)).
| value: ChatResponseFileTree[] | File tree data. |
| baseUri: Uri | The base uri to which this file tree is relative. |
| void |
markdown(value: string | MarkdownString): void
Push a markdown part to this stream. Short-hand for push(new ChatResponseMarkdownPart(value)).
See also ChatResponseStream.push
| value: string | MarkdownString | A markdown string or a string that should be interpreted as markdown. The boolean form of MarkdownString.isTrusted is NOT supported. |
| void |
Push a progress part to this stream. Short-hand for push(new ChatResponseProgressPart(value)).
| value: string | A progress message |
| void |
push(part: ChatResponsePart): void
Pushes a part to this stream.
| part: ChatResponsePart | A response part, rendered or metadata |
| void |
reference(value: Uri | Location, iconPath?: IconPath): 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.
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.
response: ReadonlyArray<ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseCommandButtonPart>
The content that was received from the chat participant. Only the stream parts that represent actual content (not metadata) are represented.
result: ChatResult
The result that was received from the chat participant.
ChatResult
The result of a chat request.
Properties
errorDetails?: ChatErrorDetails
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
kind: ChatResultFeedbackKind
The kind of feedback that was received.
result: ChatResult
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.
| Thenable<string> | A thenable that resolves to a string. |
writeText(value: string): Thenable<void>
Writes text into the clipboard.
| value: string | |
| 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
new CodeAction(title: string, kind?: CodeActionKind): CodeAction
| title: string | The title of the code action. |
| kind?: CodeActionKind | The kind of the code action. |
| CodeAction |
Properties
command?: Command
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?: Diagnostic[]
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.
| reason: string | Human readable description of why the code action is currently disabled. This is displayed in the code actions UI. |
edit?: WorkspaceEdit
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?: CodeActionKind
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
diagnostics: readonly Diagnostic[]
An array of diagnostics.
only: CodeActionKind
Requested kind of actions to return.
Actions not of this kind are filtered out before being shown by the lightbulb.
triggerKind: CodeActionTriggerKind
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: CodeActionKind
Empty kind.
Notebook: CodeActionKind
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)
QuickFix: CodeActionKind
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.
Refactor: CodeActionKind
Base kind for refactoring actions: refactor
Refactoring actions are shown in the refactoring context menu.
RefactorExtract: CodeActionKind
Base kind for refactoring extraction actions: refactor.extract
Example extract actions:
- Extract method
- Extract function
- Extract variable
- Extract interface from class
- ...
RefactorInline: CodeActionKind
Base kind for refactoring inline actions: refactor.inline
Example inline actions:
- Inline function
- Inline variable
- Inline constant
- ...
RefactorMove: CodeActionKind
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
- ...
RefactorRewrite: CodeActionKind
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
- ...
Source: CodeActionKind
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.
SourceFixAll: CodeActionKind
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.
SourceOrganizeImports: CodeActionKind
Base kind for an organize imports source action: source.organizeImports.
Constructors
new CodeActionKind(value: string): CodeActionKind
Private constructor, use static CodeActionKind.XYZ to derive from an existing code action kind.
| value: string | The value of the kind, such as refactor.extract.function. |
| CodeActionKind |
Properties
String value of the kind, e.g. "refactor.extract.function".
Methods
append(parts: string): CodeActionKind
Create a new kind by appending a more specific selector to the current kind.
Does not modify the current kind.
| parts: string | |
| CodeActionKind |
contains(other: CodeActionKind): boolean
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`.
| other: CodeActionKind | Kind to check. |
| boolean |
intersects(other: CodeActionKind): 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".
| other: CodeActionKind | Kind to check. |
| 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
provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult<Array<Command | T>>
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.
| 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. |
| 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. |
resolveCodeAction(codeAction: T, token: CancellationToken): ProviderResult<T>
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.
| codeAction: T | A code action. |
| token: CancellationToken | A cancellation token. |
| 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
documentation?: ReadonlyArray<{command: Command, kind: CodeActionKind}>
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.
providedCodeActionKinds?: readonly CodeActionKind[]
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
new CodeLens(range: Range, command?: Command): CodeLens
Creates a new code lens object.
Properties
command?: Command
The command this code lens represents.
true when there is a command associated.
range: Range
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
onDidChangeCodeLenses?: Event<void>
An optional event to signal that the code lenses from this provider have changed.
Methods
provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
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.
| document: TextDocument | The document in which the command was invoked. |
| token: CancellationToken | A cancellation token. |
| 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. |
resolveCodeLens(codeLens: T, token: CancellationToken): ProviderResult<T>
This function will be called for each visible code lens, usually when scrolling and after calls to compute-lenses.
| codeLens: T | Code lens that must be resolved. |
| token: CancellationToken | A cancellation token. |
| ProviderResult<T> | The given, resolved code lens or thenable that resolves to such. |
Color
Represents a color in RGBA space.
Constructors
new Color(red: number, green: number, blue: number, alpha: number): Color
Creates a new color instance.
| red: number | The red component. |
| green: number | The green component. |
| blue: number | The blue component. |
| alpha: number | The alpha component. |
| 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
new ColorInformation(range: Range, color: Color): ColorInformation
Creates a new color range.
| range: Range | The range the color appears in. Must not be empty. |
| color: Color | The value of the color. |
| ColorInformation |
Properties
color: Color
The actual color value for this color range.
range: 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
new ColorPresentation(label: string): ColorPresentation
Creates a new color presentation.
| label: string | The label of this color presentation. |
| ColorPresentation |
Properties
additionalTextEdits?: TextEdit[]
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.
textEdit?: TextEdit
ColorTheme
Represents a color theme.
Properties
kind: ColorThemeKind
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
author: CommentAuthorInformation
The author information of the comment
body: string | MarkdownString
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/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
range: Range
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.
state?: CommentThreadState
The optional state of a comment thread, which may affect how the comment is displayed.
uri: Uri
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.
| 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.
triggerKind: CompletionTriggerKind
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
new CompletionItem(label: string | CompletionItemLabel, kind?: CompletionItemKind): CompletionItem
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.
| label: string | CompletionItemLabel | The label of the completion. |
| kind?: CompletionItemKind | The kind of the completion. |
| CompletionItem |
Properties
additionalTextEdits?: TextEdit[]
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.
command?: Command
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.
documentation?: string | MarkdownString
A human-readable string that represents a doc-comment.
insertText?: string | SnippetString
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.
kind?: CompletionItemKind
The kind of this completion item. Based on the kind an icon is chosen by the editor.
label: string | CompletionItemLabel
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.
range?: Range | {inserting: Range, replacing: Range}
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?: readonly CompletionItemTag[]
Tags for this completion item.
textEdit?: TextEdit
- 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
provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult<CompletionList<T> | T[]>
Provide completion items for the given position and document.
| 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. |
| 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. |
resolveCompletionItem(item: T, token: CancellationToken): ProviderResult<T>
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.
| item: T | A completion item currently active in the UI. |
| token: CancellationToken | A cancellation token. |
| 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
new CompletionList<T extends CompletionItem>(items?: T[], isIncomplete?: boolean): CompletionList<T>
Creates a new completion list.
| items?: T[] | The completion items. |
| isIncomplete?: boolean | The list is not complete. |
| 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.
TriggerForIncompleteCompletions: 2
Completion was re-triggered as current completion list is incomplete
ConfigurationChangeEvent
An event describing the change in Configuration
Methods
affectsConfiguration(section: string, scope?: ConfigurationScope): boolean
Checks if the given section has changed. If scope is provided, checks if the section has changed for resources under the given scope.
| section: string | Configuration name, supports dotted names. |
| scope?: ConfigurationScope | A scope in which to check. |
| 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
ConfigurationScope: Uri | TextDocument | WorkspaceFolder | {languageId: string, uri: Uri}
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
uri: Uri
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.)
| 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.
| void |
CustomDocumentBackupContext
Additional information used to implement CustomDocumentBackup.
Properties
destination: Uri
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.
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.
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.
| 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.
| 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.
untitledDocumentData: Uint8Array
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
onDidChangeCustomDocument: Event<CustomDocumentEditEvent<T>> | Event<CustomDocumentContentChangeEvent<T>>
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
backupCustomDocument(document: T, context: CustomDocumentBackupContext, cancellation: CancellationToken): Thenable<CustomDocumentBackup>
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).
| 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. |
| Thenable<CustomDocumentBackup> | A Thenable signaling that the backup has completed. |
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
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.
| 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. |
| T | Thenable<T> | The custom document. |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
Resolve a custom editor for a given resource.
This is called whenever the user opens a new editor for this CustomEditorProvider.
| 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. |
| void | Thenable<void> | Optional thenable indicating that the custom editor has been resolved. |
revertCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
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.
| document: T | Document to revert. |
| cancellation: CancellationToken | Token that signals the revert is no longer required. |
| Thenable<void> | A Thenable signaling that the revert has completed. |
saveCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
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.
| document: T | Document to save. |
| cancellation: CancellationToken | Token that signals the save is no longer required (for example, if another save was triggered). |
| Thenable<void> | A Thenable that saving has completed. |
saveCustomDocumentAs(document: T, destination: Uri, cancellation: CancellationToken): Thenable<void>
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.
| document: T | Document to save. |
| destination: Uri | Location to save to. |
| cancellation: CancellationToken | Token that signals the save is no longer required. |
| Thenable<void> | A Thenable signaling that saving has completed. |
CustomExecution
Class used to execute an extension callback as a task.
Constructors
new CustomExecution(callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>): CustomExecution
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.
| 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. |
| 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
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
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.
| 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. |
| T | Thenable<T> | The custom document. |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
Resolve a custom editor for a given resource.
This is called whenever the user opens a new editor for this CustomEditorProvider.
| 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. |
| 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
resolveCustomTextEditor(document: TextDocument, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
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.
| 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. |
| 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
new DataTransfer(): DataTransfer
| DataTransfer |
Methods
[iterator](): IterableIterator<[mimeType: string, item: DataTransferItem]>
Get a new iterator with the [mime, item] pairs for each element in this data transfer.
| IterableIterator<[mimeType: string, item: DataTransferItem]> |
forEach(callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void, thisArg?: any): void
Allows iteration through the data transfer items.
| 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. |
| void |
get(mimeType: string): DataTransferItem
Retrieves the data transfer item for a given mime type.
| 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:
|
| DataTransferItem |
set(mimeType: string, value: DataTransferItem): void
Sets a mime type to data transfer item mapping.
| 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. |
| 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.
uri?: Uri
The full file path of the file.
May be undefined on web.
Methods
The full file contents of the file.
| Thenable<Uint8Array> |
DataTransferItem
Encapsulates data transferred during drag and drop operations.
Constructors
new DataTransferItem(value: any): DataTransferItem
| value: any | Custom data stored on this item. Can be retrieved using DataTransferItem.value. |
| 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
asFile(): DataTransferFile
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.
| 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.
| 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
onDidSendMessage: Event<DebugProtocolMessage>
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.
| any |
handleMessage(message: DebugProtocolMessage): void
Handle a Debug Adapter Protocol message. Messages can be requests, responses, or events. Results or errors are returned via onSendMessage events.
| message: DebugProtocolMessage | A Debug Adapter Protocol message |
| void |
DebugAdapterDescriptor
Represents the different types of debug adapters
DebugAdapterDescriptor: DebugAdapterExecutable | DebugAdapterServer | DebugAdapterNamedPipeServer | DebugAdapterInlineImplementation
DebugAdapterDescriptorFactory
A debug adapter factory that creates debug adapter descriptors.
Methods
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable): ProviderResult<DebugAdapterDescriptor>
'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; }
| 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). |
| ProviderResult<DebugAdapterDescriptor> | a debug adapter descriptor or undefined. |
DebugAdapterExecutable
Represents a debug adapter executable and optional arguments and runtime options passed to it.
Constructors
new DebugAdapterExecutable(command: string, args?: string[], options?: DebugAdapterExecutableOptions): DebugAdapterExecutable
Creates a description for a debug adapter based on an executable program.
| 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. |
| 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.
options?: DebugAdapterExecutableOptions
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
new DebugAdapterInlineImplementation(implementation: DebugAdapter): DebugAdapterInlineImplementation
Create a descriptor for an inline implementation of a debug adapter.
| implementation: DebugAdapter | |
| DebugAdapterInlineImplementation |
DebugAdapterNamedPipeServer
Represents a debug adapter running as a Named Pipe (on Windows)/UNIX Domain Socket (on non-Windows) based server.
Constructors
new DebugAdapterNamedPipeServer(path: string): DebugAdapterNamedPipeServer
Create a description for a debug adapter running as a Named Pipe (on Windows)/UNIX Domain Socket (on non-Windows) based server.
| path: string | |
| DebugAdapterNamedPipeServer |
Properties
The path to the NamedPipe/UNIX Domain Socket.
DebugAdapterServer
Represents a debug adapter running as a socket based server.
Constructors
new DebugAdapterServer(port: number, host?: string): DebugAdapterServer
Create a description for a debug adapter running as a socket based server.
| port: number | |
| host?: string | |
| 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
onDidSendMessage(message: any): void
The debug adapter has sent a Debug Adapter Protocol message to the editor.
| message: any | |
| void |
onWillReceiveMessage(message: any): void
The debug adapter is about to receive a Debug Adapter Protocol message from the editor.
| message: any | |
| void |
A session with the debug adapter is about to be started.
| void |
The debug adapter session is about to be stopped.
| void |
Methods
An error with the debug adapter has occurred.
| error: Error | |
| void |
onExit(code: number, signal: string): void
The debug adapter has exited with the given exit code or signal.
| code: number | |
| signal: string | |
| void |
DebugAdapterTrackerFactory
A debug adapter factory that creates debug adapter trackers.
Methods
createDebugAdapterTracker(session: DebugSession): ProviderResult<DebugAdapterTracker>
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.
| session: DebugSession | The debug session for which the debug adapter tracker will be used. |
| 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
provideDebugConfigurations(folder: WorkspaceFolder, token?: CancellationToken): ProviderResult<DebugConfiguration[]>
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.
| folder: WorkspaceFolder | The workspace folder for which the configurations are used or undefined for a folderless setup. |
| token?: CancellationToken | A cancellation token. |
| ProviderResult<DebugConfiguration[]> | An array of debug configurations. |
resolveDebugConfiguration(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
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.
| 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. |
| ProviderResult<DebugConfiguration> | The resolved debug configuration or undefined or null. |
resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
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.
| 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. |
| 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.
| value: string | A string, falsy values will not be printed. |
| void |
appendLine(value: string): void
Append the given value and a line feed character to the debug console.
| value: string | A string, falsy values will be printed. |
| 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
configuration: DebugConfiguration
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.
parentSession?: DebugSession
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.
workspaceFolder: WorkspaceFolder
The workspace folder of this session or undefined for a folderless setup.
Methods
customRequest(command: string, args?: any): Thenable<any>
Send a custom request to the debug adapter.
| command: string | |
| args?: any | |
| Thenable<any> |
getDebugProtocolBreakpoint(breakpoint: Breakpoint): Thenable<DebugProtocolBreakpoint>
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.
| breakpoint: Breakpoint | A Breakpoint in the editor. |
| 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.
session: DebugSession
The debug session for which the custom event was received.
DebugSessionOptions
Options for starting a debug session.
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.
consoleMode?: DebugConsoleMode
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.
lifecycleManagedByParent?: boolean
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.
parentSession?: DebugSession
When specified the newly created debug session is registered as a "child" session of this "parent" debug session.
suppressDebugStatusbar?: boolean
When true, the window statusbar color will not be changed for this session.
suppressDebugToolbar?: boolean
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.
suppressSaveBeforeStart?: boolean
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.
testRun?: TestRun
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.
session: DebugSession
Debug session for thread.
ID of the associated thread in the debug protocol.
DebugThread
Represents a thread in a debug session.
Properties
session: DebugSession
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.
Declaration: Location | Location[] | LocationLink[]
DeclarationCoverage
Contains coverage information for a declaration. Depending on the reporter and language, this may be types such as functions, methods, or namespaces.
Constructors
new DeclarationCoverage(name: string, executed: number | boolean, location: Range | Position): DeclarationCoverage
| 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. |
| 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
provideDeclaration(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Declaration>
Provide the declaration of the symbol at the given position and document.
| 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. |
| 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
after?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted after the decorated text.
before?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted before the decorated text.
dark?: ThemableDecorationInstanceRenderOptions
Overwrite options for dark themes.
light?: ThemableDecorationInstanceRenderOptions
Overwrite options for light themes.
DecorationOptions
Represents options for a specific decoration in a decoration set.
Properties
hoverMessage?: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>
A message that should be rendered when hovering over the decoration.
range: Range
Range to which this decoration is applied. The range must not be empty.
renderOptions?: DecorationInstanceRenderOptions
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
after?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted after the decorated text.
backgroundColor?: string | ThemeColor
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.
before?: ThemableDecorationAttachmentRenderOptions
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.
borderColor?: string | ThemeColor
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.
color?: string | ThemeColor
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.
dark?: ThemableDecorationRenderOptions
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.
gutterIconPath?: string | Uri
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.
light?: ThemableDecorationRenderOptions
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.
outlineColor?: string | ThemeColor
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.
overviewRulerColor?: string | ThemeColor
The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations.
overviewRulerLane?: OverviewRulerLane
The position in the overview ruler where the decoration should be rendered.
rangeBehavior?: DecorationRangeBehavior
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.
Definition: Location | Location[]
DefinitionLink
Information about where a symbol is defined.
Provides additional metadata over normal Location definitions, including the range of the defining symbol
DefinitionLink: LocationLink
DefinitionProvider
The definition provider interface defines the contract between extensions and the go to definition and peek definition features.
Methods
provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
Provide the definition of the symbol at the given position and document.
| 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. |
| 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
new Diagnostic(range: Range, message: string, severity?: DiagnosticSeverity): Diagnostic
Creates a new diagnostic object.
| range: Range | The range to which this diagnostic applies. |
| message: string | The human-readable message. |
| severity?: DiagnosticSeverity | The severity, default is error. |
| Diagnostic |
Properties
code?: string | number | {target: Uri, value: string | number}
A code or identifier for this diagnostic. Should be used for later processing, e.g. when providing code actions.
The human-readable message.
range: Range
The range to which this diagnostic applies.
relatedInformation?: DiagnosticRelatedInformation[]
An array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property.
severity: DiagnosticSeverity
The severity, default is error.
A human-readable string describing the source of this diagnostic, e.g. 'typescript' or 'super lint'.
tags?: DiagnosticTag[]
Additional metadata about the diagnostic.
DiagnosticChangeEvent
The event that is fired when diagnostics change.
Properties
uris: readonly Uri[]
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);
| void |
delete(uri: Uri): void
Remove all diagnostics from this collection that belong to the provided uri. The same as #set(uri, undefined).
| uri: Uri | A resource identifier. |
| void |
Dispose and free associated resources. Calls clear.
| void |
forEach(callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any, thisArg?: any): void
Iterate over each entry in this collection.
| 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. |
| void |
get(uri: Uri): readonly Diagnostic[]
Get the diagnostics for a given resource. Note that you cannot modify the diagnostics-array returned from this call.
| uri: Uri | A resource identifier. |
| readonly Diagnostic[] | An immutable array of diagnostics or undefined. |
has(uri: Uri): boolean
Check if this collection contains diagnostics for a given resource.
| uri: Uri | A resource identifier. |
| boolean | true if this collection has diagnostic for the given resource. |
set(uri: Uri, diagnostics: readonly Diagnostic[]): void
Assign diagnostics for given resource. Will replace existing diagnostics for that resource.
| uri: Uri | A resource identifier. |
| diagnostics: readonly Diagnostic[] | Array of diagnostics or undefined |
| void |
set(entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>): 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.
| entries: ReadonlyArray<[Uri, readonly Diagnostic[]]> | An array of tuples, like [[file1, [d1, d2]], [file2, [d3, d4, d5]]], or undefined. |
| 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
new DiagnosticRelatedInformation(location: Location, message: string): DiagnosticRelatedInformation
Creates a new related diagnostic information object.
| location: Location | The location. |
| message: string | The message. |
| DiagnosticRelatedInformation |
Properties
location: Location
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
from(...disposableLikes: Array<{dispose: () => any}>): Disposable
Combine many disposable-likes into one. You can use this method when having objects with a dispose function which aren't instances of Disposable.
| ...disposableLikes: Array<{dispose: () => any}> | Objects that have at least a dispose-function member. Note that asynchronous dispose-functions aren't awaited. |
| Disposable | Returns a new disposable which, upon dispose, will dispose all provided disposables. |
Constructors
new Disposable(callOnDispose: () => any): Disposable
Creates a new disposable that calls the provided function on dispose.
Note that an asynchronous function is not awaited.
| callOnDispose: () => any | Function that disposes something. |
| Disposable |
Methods
Dispose this object.
| any |
DocumentColorProvider
The document color provider defines the contract between extensions and feature of picking and modifying colors in the editor.
Methods
provideColorPresentations(color: Color, context: {document: TextDocument, range: Range}, token: CancellationToken): ProviderResult<ColorPresentation[]>
Provide representations for a color.
| color: Color | The color to show and insert. |
| context: {document: TextDocument, range: Range} | A context object with additional information |
| token: CancellationToken | A cancellation token. |
| 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. |
provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorInformation[]>
Provide colors for the given document.
| document: TextDocument | The document in which the command was invoked. |
| token: CancellationToken | A cancellation token. |
| 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
new DocumentDropEdit(insertText: string | SnippetString, title?: string, kind?: DocumentDropOrPasteEditKind): DocumentDropEdit
| 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. |
| DocumentDropEdit |
Properties
additionalEdit?: WorkspaceEdit
An optional additional edit to apply on drop.
insertText: string | SnippetString
The text or snippet to insert at the drop location.
kind?: DocumentDropOrPasteEditKind
Kind of the edit.
Human readable label that describes the edit.
yieldTo?: readonly DocumentDropOrPasteEditKind[]
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
provideDocumentDropEdits(document: TextDocument, position: Position, dataTransfer: DataTransfer, token: CancellationToken): ProviderResult<T | T[]>
Provide edits which inserts the content being dragged and dropped into the document.
| 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. |
| 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. |
resolveDocumentDropEdit(edit: T, token: CancellationToken): ProviderResult<T>
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.
| edit: T | The DocumentDropEdit to resolve. |
| token: CancellationToken | A cancellation token. |
| 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
dropMimeTypes: readonly string[]
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.
providedDropEditKinds?: readonly DocumentDropOrPasteEditKind[]
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
Identifies a DocumentDropEdit or DocumentPasteEdit
Static
Empty: DocumentDropOrPasteEditKind
Text: DocumentDropOrPasteEditKind
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.
TextUpdateImports: DocumentDropOrPasteEditKind
Root kind for edits that update imports in a document in addition to inserting text.
Constructors
new DocumentDropOrPasteEditKind(value: string): DocumentDropOrPasteEditKind
Use DocumentDropOrPasteEditKind.Empty instead.
| value: string | |
| DocumentDropOrPasteEditKind |
Properties
The raw string value of the kind.
Methods
append(...parts: string[]): DocumentDropOrPasteEditKind
Create a new kind by appending additional scopes to the current kind.
Does not modify the current kind.
| ...parts: string[] | |
| DocumentDropOrPasteEditKind |
contains(other: DocumentDropOrPasteEditKind): boolean
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".
| other: DocumentDropOrPasteEditKind | Kind to check. |
| boolean |
intersects(other: DocumentDropOrPasteEditKind): 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".
| other: DocumentDropOrPasteEditKind | Kind to check. |
| 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: '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)
let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };DocumentSelector: DocumentFilter | string | ReadonlyArray<DocumentFilter | string>
DocumentSemanticTokensProvider
The document semantic tokens provider interface defines the contract between extensions and semantic tokens.
Events
onDidChangeSemanticTokens?: Event<void>
An optional event to signal that the semantic tokens from this provider have changed.
Methods
provideDocumentSemanticTokens(document: TextDocument, token: CancellationToken): ProviderResult<SemanticTokens>
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:
tokenTypes: ['property', 'type', 'class'], tokenModifiers: ['private', 'static']- 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:
- 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:
Also suppose that after some edits, the new semantic tokens in a file are:
[ 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 3NOTE: 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.
| document: TextDocument | |
| previousResultId: string | |
| token: CancellationToken | |
| 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
new DocumentSymbol(name: string, detail: string, kind: SymbolKind, range: Range, selectionRange: Range): DocumentSymbol
Creates a new document symbol.
| 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. |
| DocumentSymbol |
Properties
children: DocumentSymbol[]
Children of this symbol, e.g. properties of a class.
More detail for this symbol, e.g. the signature of a function.
kind: SymbolKind
The kind of this symbol.
The name of this symbol.
range: Range
The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
selectionRange: Range
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?: readonly SymbolTag[]
Tags for this symbol.
DocumentSymbolProvider
The document symbol provider interface defines the contract between extensions and the go to symbol-feature.
Methods
provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult<DocumentSymbol[] | SymbolInformation[]>
Provide symbol information for the given document.
| document: TextDocument | The document in which the command was invoked. |
| token: CancellationToken | A cancellation token. |
| 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.
indentAction: IndentAction
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
description: string | MarkdownString
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(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
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.
| 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 }. |
| void |
Clears all mutators from this collection.
| void |
delete(variable: string): void
Deletes this collection's mutator for a variable.
| variable: string | The variable to delete the mutator for. |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
Iterate over each mutator in this collection.
| 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. |
| void |
get(variable: string): EnvironmentVariableMutator
Gets the mutator that this collection applies to a variable, if any.
| variable: string | The variable to get the mutator for. |
| EnvironmentVariableMutator |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
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.
| 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 }. |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): 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.
| 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 }. |
| void |
EnvironmentVariableMutator
A type of mutation and its value to be applied to an environment variable.
Properties
options: EnvironmentVariableMutatorOptions
Options applied to the mutator.
type: EnvironmentVariableMutatorType
The type of mutation that will occur to the variable.
The value to use for the variable.
EnvironmentVariableMutatorOptions
Options applied to the mutator.
Properties
applyAtProcessCreation?: boolean
Apply to the environment just before the process is created. Defaults to false.
applyAtShellIntegration?: boolean
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
workspaceFolder?: WorkspaceFolder
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
new EvaluatableExpression(range: Range, expression?: string): EvaluatableExpression
Creates a new evaluatable expression object.
| range: Range | The range in the underlying document from which the evaluatable expression is extracted. |
| expression?: string | If specified overrides the extracted expression. |
| EvaluatableExpression |
Properties
If specified the expression overrides the extracted expression.
range: Range
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
provideEvaluatableExpression(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<EvaluatableExpression>
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.
| 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. |
| 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
workspace.onWillCreateFiles(event => { // async, will *throw* an error setTimeout(() => event.waitUntil(promise)); // sync, OK event.waitUntil(promise); });| thenable: Thenable<WorkspaceEdit> | A thenable that delays saving. |
| void |
waitUntil(thenable: Thenable<any>): void
Allows to pause the event until the provided thenable resolves.
Note: This function can only be called during event dispatch.
| thenable: Thenable<any> | A thenable that delays saving. |
| 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
files: readonly Uri[]
The files that are going to be deleted.
token: CancellationToken
A cancellation token.
Methods
waitUntil(thenable: Thenable<WorkspaceEdit>): void
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); });| thenable: Thenable<WorkspaceEdit> | A thenable that delays saving. |
| void |
waitUntil(thenable: Thenable<any>): void
Allows to pause the event until the provided thenable resolves.
Note: This function can only be called during event dispatch.
| thenable: Thenable<any> | A thenable that delays saving. |
| 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
new FoldingRange(start: number, end: number, kind?: FoldingRangeKind): FoldingRange
Creates a new folding range.
| 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. |
| 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.
kind?: FoldingRangeKind
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
onDidChangeFoldingRanges?: Event<void>
An optional event to signal that the folding ranges from this provider have changed.
Methods
provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult<FoldingRange[]>
Returns a list of folding ranges or null and undefined if the provider does not want to participate or was cancelled.
| document: TextDocument | The document in which the command was invoked. |
| context: FoldingContext | Additional context information (for future use) |
| token: CancellationToken | A cancellation token. |
| 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
new FunctionBreakpoint(functionName: string, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): FunctionBreakpoint
Create a new function breakpoint.
| functionName: string | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| 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
description: string | MarkdownString
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(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
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.
| 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 }. |
| void |
Clears all mutators from this collection.
| void |
delete(variable: string): void
Deletes this collection's mutator for a variable.
| variable: string | The variable to delete the mutator for. |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
Iterate over each mutator in this collection.
| 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. |
| void |
get(variable: string): EnvironmentVariableMutator
Gets the mutator that this collection applies to a variable, if any.
| variable: string | The variable to get the mutator for. |
| EnvironmentVariableMutator |
getScoped(scope: EnvironmentVariableScope): EnvironmentVariableCollection
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.
| 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. |
| EnvironmentVariableCollection | Environment variable collection for the passed in scope. |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
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.
| 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 }. |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): 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.
| 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 }. |
| 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.
GlobPattern: string | RelativePattern
Hover
A hover represents additional information for a symbol or word. Hovers are rendered in a tooltip-like widget.
Constructors
new Hover(contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>, range?: Range): Hover
Creates a new hover object.
| contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString> | The contents of the hover. |
| range?: Range | The range to which the hover applies. |
| Hover |
Properties
contents: Array<MarkdownString | MarkedString>
The contents of this hover.
range?: Range
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
provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Hover>
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.
| 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. |
| 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.
IconPath: Uri | {dark: Uri, light: Uri} | ThemeIcon
ImplementationProvider
The implementation provider interface defines the contract between extensions and the go to implementation feature.
Methods
provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
Provide the implementations of the symbol at the given position and document.
| 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. |
| 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).
indentNextLinePattern?: RegExp
If a line matches this pattern, then only the next line after it should be indented once.
unIndentedLinePattern?: RegExp
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
new InlayHint(position: Position, label: string | InlayHintLabelPart[], kind?: InlayHintKind): InlayHint
Creates a new inlay hint.
| position: Position | The position of the hint. |
| label: string | InlayHintLabelPart[] | The label of the hint. |
| kind?: InlayHintKind | The kind of the hint. |
| InlayHint |
Properties
kind?: InlayHintKind
The kind of this hint. The inlay hint kind defines the appearance of this inlay hint.
label: string | InlayHintLabelPart[]
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.
position: Position
The position of this hint.
textEdits?: TextEdit[]
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.
tooltip?: string | MarkdownString
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
new InlayHintLabelPart(value: string): InlayHintLabelPart
Creates a new inlay hint label part.
| value: string | The value of the part. |
| InlayHintLabelPart |
Properties
command?: Command
location?: Location
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.
tooltip?: string | MarkdownString
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
onDidChangeInlayHints?: Event<void>
An optional event to signal that inlay hints from this provider have changed.
Methods
provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<T[]>
Provide inlay hints for the given range and document.
Note that inlay hints that are not contained by the given range are ignored.
| 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. |
| ProviderResult<T[]> | An array of inlay hints or a thenable that resolves to such. |
resolveInlayHint(hint: T, token: CancellationToken): ProviderResult<T>
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.
| hint: T | An inlay hint. |
| token: CancellationToken | A cancellation token. |
| 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
selectedCompletionInfo: SelectedCompletionInfo
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.
triggerKind: InlineCompletionTriggerKind
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
new InlineCompletionItem(insertText: string | SnippetString, range?: Range, command?: Command): InlineCompletionItem
Creates a new inline completion item.
| 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. |
| InlineCompletionItem |
Properties
command?: Command
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.
insertText: string | SnippetString
The text to replace the range with. Must be set. Is used both for the preview and the accept operation.
range?: Range
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
provideInlineCompletionItems(document: TextDocument, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<InlineCompletionList | InlineCompletionItem[]>
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.
| 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. |
| 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
new InlineCompletionList(items: InlineCompletionItem[]): InlineCompletionList
Creates a new list of inline completion items.
| items: InlineCompletionItem[] | |
| InlineCompletionList |
Properties
items: InlineCompletionItem[]
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.
InlineValue: InlineValueText | InlineValueVariableLookup | InlineValueEvaluatableExpression
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.
stoppedLocation: Range
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
new InlineValueEvaluatableExpression(range: Range, expression?: string): InlineValueEvaluatableExpression
Creates a new InlineValueEvaluatableExpression object.
| range: Range | The range in the underlying document from which the evaluatable expression is extracted. |
| expression?: string | If specified overrides the extracted expression. |
| InlineValueEvaluatableExpression |
Properties
If specified the expression overrides the extracted expression.
range: Range
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
onDidChangeInlineValues?: Event<void>
An optional event to signal that inline values have changed.
See also EventEmitter
Methods
provideInlineValues(document: TextDocument, viewPort: Range, context: InlineValueContext, token: CancellationToken): ProviderResult<InlineValue[]>
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.
| 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. |
| 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
new InlineValueText(range: Range, text: string): InlineValueText
Creates a new InlineValueText object.
| range: Range | The document line where to show the inline value. |
| text: string | The value to be shown for the line. |
| InlineValueText |
Properties
range: Range
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
new InlineValueVariableLookup(range: Range, variableName?: string, caseSensitiveLookup?: boolean): InlineValueVariableLookup
Creates a new InlineValueVariableLookup object.
| 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. |
| InlineValueVariableLookup |
Properties
How to perform the lookup.
range: Range
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
onDidAccept: Event<void>
An event signaling when the user indicated acceptance of the input value.
onDidChangeValue: Event<string>
An event signaling when the value has changed.
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
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: readonly QuickInputButton[]
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.
validationMessage: string | InputBoxValidationMessage
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.
valueSelection: readonly [number, number]
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.
| void |
Hides this input UI.
This will also fire an onDidHide event.
| void |
Makes the input UI visible in its current configuration.
Any other input UI will first fire an onDidHide event.
| 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.
valueSelection?: [number, number]
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
validateInput(value: string): string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>
An optional function that will be called to validate input and to give a hint to the user.
| value: string | The current value of the input box. |
| 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.
severity: InputBoxValidationSeverity
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
__characterPairSupport?: {autoClosingPairs: Array<{close: string, notIn: string[], open: string}>}
Deprecated Do not use.
- deprecated - * Use the autoClosingPairs property in the language configuration file instead.
| autoClosingPairs: Array<{close: string, notIn: string[], open: string}> |
|
__electricCharacterSupport?: {brackets: any, docComment: {close: string, lineStart: string, open: string, scope: string}}
Deprecated Do not use.
- deprecated - Will be replaced by a better API soon.
| brackets: any | This property is deprecated and will be ignored from the editor.
|
| 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.
|
autoClosingPairs?: AutoClosingPair[]
The language's auto closing pairs.
brackets?: CharacterPair[]
The language's brackets. This configuration implicitly affects pressing Enter around these brackets.
comments?: CommentRule
The language's comment settings.
indentationRules?: IndentationRule
The language's indentation settings.
onEnterRules?: OnEnterRule[]
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):
/\?\s]+)/gLanguageModelAccessInformation
Represents extension specific information about the access to language models.
Events
onDidChange: Event<void>
An event that fires when access information changes.
Methods
canSendRequest(chat: LanguageModelChat): boolean
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.
| chat: LanguageModelChat | A language model chat object. |
| 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
countTokens(text: string | LanguageModelChatMessage, token?: CancellationToken): Thenable<number>
Count the number of tokens in a message using the model specific tokenizer-logic.
| text: string | LanguageModelChatMessage | A string or a message instance. |
| token?: CancellationToken | Optional cancellation token. See CancellationTokenSource for how to create one. |
| Thenable<number> | A thenable that resolves to the number of tokens. |
sendRequest(messages: LanguageModelChatMessage[], options?: LanguageModelChatRequestOptions, token?: CancellationToken): Thenable<LanguageModelChatResponse>
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.
| 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. |
| 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.
toolCalling?: number | boolean
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
capabilities: LanguageModelChatCapabilities
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
Assistant(content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>, name?: string): LanguageModelChatMessage
Utility to create a new assistant message.
| content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart> | The content of the message. |
| name?: string | The optional name of a user for the message. |
| LanguageModelChatMessage |
User(content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>, name?: string): LanguageModelChatMessage
Utility to create a new user message.
| content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart> | The content of the message. |
| name?: string | The optional name of a user for the message. |
| LanguageModelChatMessage |
Constructors
new LanguageModelChatMessage(role: LanguageModelChatMessageRole, content: string | LanguageModelInputPart[], name?: string): LanguageModelChatMessage
Create a new user message.
| 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. |
| LanguageModelChatMessage |
Properties
content: LanguageModelInputPart[]
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.
role: LanguageModelChatMessageRole
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
onDidChangeLanguageModelChatInformation?: Event<void>
An optional event fired when the available set of language models changes.
Methods
provideLanguageModelChatInformation(options: PrepareLanguageModelChatModelOptions, token: CancellationToken): ProviderResult<T[]>
Get the list of available language models provided by this provider
| options: PrepareLanguageModelChatModelOptions | Options which specify the calling context of this function |
| token: CancellationToken | A cancellation token |
| ProviderResult<T[]> | The list of available language models |
provideLanguageModelChatResponse(model: T, messages: readonly LanguageModelChatRequestMessage[], options: ProvideLanguageModelChatResponseOptions, progress: Progress<LanguageModelResponsePart>, token: CancellationToken): Thenable<void>
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.
| 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 |
| Thenable<void> | A promise that resolves when the response is complete. Results are actually passed to the progress callback. |
provideTokenCount(model: T, text: string | LanguageModelChatRequestMessage, token: CancellationToken): Thenable<number>
Returns the number of tokens for a given text using the model-specific tokenizer logic
| model: T | The language model to use |
| text: string | LanguageModelChatRequestMessage | The text to count tokens for |
| token: CancellationToken | A cancellation token |
| 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.
role: LanguageModelChatMessageRole
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.
toolMode?: LanguageModelChatToolMode
The tool-selecting mode to use. LanguageModelChatToolMode.Auto by default.
tools?: LanguageModelChatTool[]
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
stream: AsyncIterable<unknown>
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
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:
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
error(value: Error): NotebookCellOutputItem
Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.error mime type.
| value: Error | An error object. |
| NotebookCellOutputItem | A new output item object. |
json(value: any, mime?: string): NotebookCellOutputItem
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.
| value: any | A JSON-stringifyable value. |
| mime?: string | Optional MIME type, defaults to application/json |
| NotebookCellOutputItem | A new output item object. |
stderr(value: string): NotebookCellOutputItem
Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.stderr mime type.
| value: string | A string. |
| NotebookCellOutputItem | A new output item object. |
stdout(value: string): NotebookCellOutputItem
Factory function to create a NotebookCellOutputItem that uses uses the application/vnd.code.notebook.stdout mime type.
| value: string | A string. |
| NotebookCellOutputItem | A new output item object. |
text(value: string, mime?: string): NotebookCellOutputItem
Factory function to create a NotebookCellOutputItem from a string.
Note that an UTF-8 encoder is used to create bytes for the string.
| value: string | A string. |
| mime?: string | Optional MIME type, defaults to text/plain. |
| NotebookCellOutputItem | A new output item object. |
Constructors
new NotebookCellOutputItem(data: Uint8Array, mime: string): NotebookCellOutputItem
Create a new notebook cell output item.
| data: Uint8Array | The value of the output item. |
| mime: string | The mime type of the output item. |
| 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
new NotebookCellStatusBarItem(text: string, alignment: NotebookCellStatusBarAlignment): NotebookCellStatusBarItem
Creates a new NotebookCellStatusBarItem.
| text: string | The text to show for the item. |
| alignment: NotebookCellStatusBarAlignment | Whether the item is aligned to the left or right. |
| NotebookCellStatusBarItem |
Properties
accessibilityInformation?: AccessibilityInformation
Accessibility information used when a screen reader interacts with this item.
alignment: NotebookCellStatusBarAlignment
Whether the item is aligned to the left or right.
command?: string | Command
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
onDidChangeCellStatusBarItems?: Event<void>
An optional event to signal that statusbar items have changed. The provide method will be called again.
Methods
provideCellStatusBarItems(cell: NotebookCell, token: CancellationToken): ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>
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.
| cell: NotebookCell | The cell for which to return items. |
| token: CancellationToken | A token triggered if this request should be cancelled. |
| ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]> | One or more cell statusbar items |
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
onDidChangeSelectedNotebooks: Event<{notebook: NotebookDocument, selected: boolean}>
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.
executeHandler: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>
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.
| cells: NotebookCell[] | |
| notebook: NotebookDocument | |
| controller: NotebookController | |
| 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.
interruptHandler?: (notebook: NotebookDocument) => void | Thenable<void>
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.
| notebook: NotebookDocument | |
| 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:
workspace.onWillSaveNotebookDocument(event => { // async, will *throw* an error setTimeout(() => event.waitUntil(promise)); // sync, OK event.waitUntil(promise); });| thenable: Thenable<WorkspaceEdit> | A thenable that resolves to workspace edit. |
| void |
waitUntil(thenable: Thenable<any>): void
Allows to pause the event loop until the provided thenable resolved.
Note: This function can only be called during event dispatch.
| thenable: Thenable<any> | A thenable that delays saving. |
| void |
NotebookEdit
A notebook edit represents edits that should be applied to the contents of a notebook.
Static
deleteCells(range: NotebookRange): NotebookEdit
Utility to create an edit that deletes cells in a notebook.
| range: NotebookRange | The range of cells to delete. |
| NotebookEdit |
insertCells(index: number, newCells: NotebookCellData[]): NotebookEdit
Utility to create an edit that replaces cells in a notebook.
| index: number | The index to insert cells at. |
| newCells: NotebookCellData[] | The new notebook cells. |
| NotebookEdit |
replaceCells(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
Utility to create a edit that replaces cells in a notebook.
| range: NotebookRange | The range of cells to replace |
| newCells: NotebookCellData[] | The new notebook cells. |
| NotebookEdit |
updateCellMetadata(index: number, newCellMetadata: ): NotebookEdit
Utility to create an edit that update a cell's metadata.
| index: number | The index of the cell to update. |
| newCellMetadata: | The new metadata for the cell. |
| NotebookEdit |
updateNotebookMetadata(newNotebookMetadata: ): NotebookEdit
Utility to create an edit that updates the notebook's metadata.
| newNotebookMetadata: | The new metadata for the notebook. |
| NotebookEdit |
Constructors
new NotebookEdit(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
Create a new notebook edit.
| range: NotebookRange | A notebook range. |
| newCells: NotebookCellData[] | An array of new cell data. |
| NotebookEdit |
Properties
Optional new metadata for the cells.
newCells: NotebookCellData[]
New cells being inserted. May be empty.
Optional new metadata for the notebook.
range: NotebookRange
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
notebook: NotebookDocument
The notebook document associated with this notebook editor.
selection: NotebookRange
The primary selection in this notebook editor.
selections: readonly NotebookRange[]
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 };
viewColumn?: ViewColumn
The column in which this editor shows.
visibleRanges: readonly NotebookRange[]
The current visible ranges in the editor (vertically).
Methods
revealRange(range: NotebookRange, revealType?: NotebookEditorRevealType): void
Scroll as indicated by revealType in order to reveal the given range.
| range: NotebookRange | A range. |
| revealType?: NotebookEditorRevealType | The scrolling strategy for revealing range. |
| 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
notebookEditor: NotebookEditor
The notebook editor for which the selections have changed.
selections: readonly NotebookRange[]
The new value for the notebook editor's selections.
NotebookEditorVisibleRangesChangeEvent
Represents an event describing the change in a notebook editor's visibleRanges.
Properties
notebookEditor: NotebookEditor
The notebook editor for which the visible ranges have changed.
visibleRanges: readonly NotebookRange[]
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
new NotebookRange(start: number, end: number): NotebookRange
Create a new notebook range. If start is not before or equal to end, the values will be swapped.
| start: number | start index |
| end: number | end index. |
| 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
with(change: {end: number, start: number}): NotebookRange
Derive a new range for this range.
| change: {end: number, start: number} | An object that describes a change to this range. |
| 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
onDidReceiveMessage: Event<{editor: NotebookEditor, message: any}>
An event that fires when a message is received from a renderer.
Methods
postMessage(message: any, editor?: NotebookEditor): Thenable<boolean>
Send a message to one or all renderer.
| message: any | Message to send |
| editor?: NotebookEditor | Editor to target with the message. If not provided, the message is sent to all renderers. |
| 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
deserializeNotebook(content: Uint8Array, token: CancellationToken): NotebookData | Thenable<NotebookData>
Deserialize contents of a notebook file into the notebook data structure.
| content: Uint8Array | Contents of a notebook file. |
| token: CancellationToken | A cancellation token. |
| NotebookData | Thenable<NotebookData> | Notebook data or a thenable that resolves to such. |
serializeNotebook(data: NotebookData, token: CancellationToken): Uint8Array | Thenable<Uint8Array>
Serialize notebook data into file contents.
| data: NotebookData | A notebook data structure. |
| token: CancellationToken | A cancellation token. |
| 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
action: EnterAction
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
provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
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.
| 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. |
| 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.
defaultUri?: Uri
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:
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 } };ProviderResult: T | undefined | null | Thenable<T | undefined | null>
Pseudoterminal
Defines the interface of a terminal pty, enabling extensions to control a terminal.
Events
onDidChangeName?: Event<string>
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 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);onDidOverrideDimensions?: Event<TerminalDimensions>
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 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
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 });open(initialDimensions: TerminalDimensions): void
Implement to handle when the pty is open and ready to start firing events.
| initialDimensions: TerminalDimensions | The dimensions of the terminal, this will be undefined if the terminal panel has not been opened before this is called. |
| void |
setDimensions(dimensions: TerminalDimensions): 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.
| dimensions: TerminalDimensions | The new dimensions. |
| 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
provideOriginalResource(uri: Uri, token: CancellationToken): ProviderResult<Uri>
Provide a Uri to the original resource of any given resource uri.
| uri: Uri | The uri of the resource open in a text editor. |
| token: CancellationToken | A cancellation token. |
| 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.
Events
onDidHide: Event<void>
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.
| void |
Hides this input UI.
This will also fire an onDidHide event.
| void |
Makes the input UI visible in its current configuration.
Any other input UI will first fire an onDidHide event.
| void |
QuickInputButton
Properties
iconPath: IconPath
The icon for the button.
location?: QuickInputButtonLocation
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.
| 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
Static
Back: QuickInputButton
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
onDidAccept: Event<void>
An event signaling when the user indicated acceptance of the selected item(s).
onDidChangeActive: Event<readonly T[]>
An event signaling when the active items have changed.
onDidChangeSelection: Event<readonly T[]>
An event signaling when the selected items have changed.
onDidChangeValue: Event<string>
An event signaling when the value of the filter text has changed.
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
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.
onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>
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: readonly QuickInputButton[]
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.
| void |
Hides this input UI.
This will also fire an onDidHide event.
| void |
Makes the input UI visible in its current configuration.
Any other input UI will first fire an onDidHide event.
| 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.
buttons?: readonly QuickInputButton[]
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.
iconPath?: IconPath
The icon for the item.
kind?: QuickPickItemKind
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.
resourceUri?: Uri
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
button: QuickInputButton
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
onDidSelectItem(item: string | QuickPickItem): any
An optional function that is invoked whenever an item is selected.
| item: string | QuickPickItem | |
| 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
new Range(start: Position, end: Position): Range
Create a new range from two positions. If start is not before or equal to end, the values will be swapped.
new Range(startLine: number, startCharacter: number, endLine: number, endCharacter: number): 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))
| 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. |
| Range |
Properties
end: Position
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.
start: Position
The start position. It is before or equal to end.
Methods
contains(positionOrRange: Range | Position): boolean
Check if a position or a range is contained in this range.
intersection(range: Range): Range
Intersect range with this range and returns a new range or undefined if the ranges have no overlap.
isEqual(other: Range): boolean
Check if other equals this range.
Compute the union of other with this range.
with(start?: Position, end?: Position): Range
Derived a new range from this range.
| 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. |
| 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. |
with(change: {end: Position, start: Position}): Range
Derived a new range from this range.
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
provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>
Provide a set of project-wide references for the given position and document.
| 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: CancellationToken | A cancellation token. |
| ProviderResult<Location[]> | An array of locations or a thenable that resolves to such. The lack of a result can be signaled by returning undefined, null, or an empty array. |
RelativePattern
A relative pattern is a helper to construct glob patterns that are matched relatively to a base file path. The base path can either be an absolute file path as string or uri or a workspace folder, which is the preferred way of creating the relative pattern.
Constructors
new RelativePattern(base: string | Uri | WorkspaceFolder, pattern: string): RelativePattern
Creates a new relative pattern object with a base file path and pattern to match. This pattern will be matched on file paths relative to the base.
Example:
{ 'Images': ['png', 'jpg'], 'TypeScript': ['ts', 'tsx'] }A human-readable string for the save button.
Dialog title.
This parameter might be ignored, as not all operating systems display a title on save dialogs (for example, macOS).
SecretStorage
Represents a storage utility for secrets (or any information that is sensitive) that will be stored encrypted. The implementation of the secret storage will be different on each platform and the secrets will not be synced across machines.
Events
onDidChange: Event<SecretStorageChangeEvent>
Fires when a secret is stored or deleted.
Methods
delete(key: string): Thenable<void>
Remove a secret from storage.
| key: string | The key the secret was stored under. |
| Thenable<void> |
get(key: string): Thenable<string>
Retrieve a secret that was stored with key. Returns undefined if there is no password matching that key.
| key: string | The key the secret was stored under. |
| Thenable<string> | The stored value or undefined. |
Retrieve the keys of all the secrets stored by this extension.
| Thenable<string[]> |
store(key: string, value: string): Thenable<void>
Store a secret under a given key.
| key: string | The key to store the secret under. |
| value: string | The secret. |
| Thenable<void> |
SecretStorageChangeEvent
The event data that is fired when a secret is added or removed.
Properties
The key of the secret that has changed.
SelectedCompletionInfo
Describes the currently selected completion item.
Properties
range: Range
The range that will be replaced if this completion item is accepted.
The text the range will be replaced with if this completion is accepted.
Selection
Represents a text selection in an editor.
Constructors
new Selection(anchor: Position, active: Position): Selection
Create a selection from two positions.
new Selection(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number): Selection
Create a selection from four coordinates.
| anchorLine: number | A zero-based line value. |
| anchorCharacter: number | A zero-based character value. |
| activeLine: number | A zero-based line value. |
| activeCharacter: number | A zero-based character value. |
| Selection |
Properties
active: Position
The position of the cursor. This position might be before or after anchor.
anchor: Position
The position at which the selection starts. This position might be before or after active.
end: Position
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.
start: Position
The start position. It is before or equal to end.
Methods
contains(positionOrRange: Range | Position): boolean
Check if a position or a range is contained in this range.
intersection(range: Range): Range
Intersect range with this range and returns a new range or undefined if the ranges have no overlap.
isEqual(other: Range): boolean
Check if other equals this range.
Compute the union of other with this range.
with(start?: Position, end?: Position): Range
Derived a new range from this range.
| 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. |
| 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. |
with(change: {end: Position, start: Position}): Range
Derived a new range from this range.
SelectionRange
A selection range represents a part of a selection hierarchy. A selection range may have a parent selection range that contains it.
Constructors
new SelectionRange(range: Range, parent?: SelectionRange): SelectionRange
Creates a new selection range.
| range: Range | The range of the selection range. |
| parent?: SelectionRange | The parent of the selection range. |
| SelectionRange |
Properties
parent?: SelectionRange
The parent selection range containing this range.
range: Range
The Range of this selection range.
SelectionRangeProvider
The selection range provider interface defines the contract between extensions and the "Expand and Shrink Selection" feature.
Methods
provideSelectionRanges(document: TextDocument, positions: readonly Position[], token: CancellationToken): ProviderResult<SelectionRange[]>
Provide selection ranges for the given positions.
Selection ranges should be computed individually and independent for each position. The editor will merge and deduplicate ranges but providers must return hierarchies of selection ranges so that a range is contained by its parent.
| document: TextDocument | The document in which the command was invoked. |
| positions: readonly Position[] | The positions at which the command was invoked. |
| token: CancellationToken | A cancellation token. |
| ProviderResult<SelectionRange[]> | Selection ranges or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null. |
SemanticTokens
Represents semantic tokens, either in a range or in an entire document.
See also
- provideDocumentSemanticTokens for an explanation of the format.
- SemanticTokensBuilder for a helper to create an instance.
Constructors
new SemanticTokens(data: Uint32Array, resultId?: string): SemanticTokens
Create new semantic tokens.
| data: Uint32Array | Token data. |
| resultId?: string | Result identifier. |
| SemanticTokens |
Properties
The actual tokens data.
See also provideDocumentSemanticTokens for an explanation of the format.
The result id of the tokens.
This is the id that will be passed to DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits (if implemented).
SemanticTokensBuilder
A semantic tokens builder can help with creating a SemanticTokens instance which contains delta encoded semantic tokens.
Constructors
new SemanticTokensBuilder(legend?: SemanticTokensLegend): SemanticTokensBuilder
Creates a semantic tokens builder.
| legend?: SemanticTokensLegend | A semantic tokens legend. |
| SemanticTokensBuilder |
Methods
build(resultId?: string): SemanticTokens
Finish and create a SemanticTokens instance.
| resultId?: string | |
| SemanticTokens |
push(line: number, char: number, length: number, tokenType: number, tokenModifiers?: number): void
Add another token.
| line: number | The token start line number (absolute value). |
| char: number | The token start character (absolute value). |
| length: number | The token length in characters. |
| tokenType: number | The encoded token type. |
| tokenModifiers?: number | The encoded token modifiers. |
| void |
push(range: Range, tokenType: string, tokenModifiers?: readonly string[]): void
Add another token. Use only when providing a legend.
| range: Range | The range of the token. Must be single-line. |
| tokenType: string | The token type. |
| tokenModifiers?: readonly string[] | The token modifiers. |
| void |
SemanticTokensEdit
Represents an edit to semantic tokens.
See also provideDocumentSemanticTokensEdits for an explanation of the format.
Constructors
new SemanticTokensEdit(start: number, deleteCount: number, data?: Uint32Array): SemanticTokensEdit
Create a semantic token edit.
| start: number | Start offset |
| deleteCount: number | Number of elements to remove. |
| data?: Uint32Array | Elements to insert |
| SemanticTokensEdit |
Properties
The elements to insert.
The count of elements to remove.
The start offset of the edit.
SemanticTokensEdits
Represents edits to semantic tokens.
See also provideDocumentSemanticTokensEdits for an explanation of the format.
Constructors
new SemanticTokensEdits(edits: SemanticTokensEdit[], resultId?: string): SemanticTokensEdits
Create new semantic tokens edits.
| edits: SemanticTokensEdit[] | An array of semantic token edits |
| resultId?: string | Result identifier. |
| SemanticTokensEdits |
Properties
edits: SemanticTokensEdit[]
The edits to the tokens data. All edits refer to the initial data state.
The result id of the tokens.
This is the id that will be passed to DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits (if implemented).
SemanticTokensLegend
A semantic tokens legend contains the needed information to decipher the integer encoded representation of semantic tokens.
Constructors
new SemanticTokensLegend(tokenTypes: string[], tokenModifiers?: string[]): SemanticTokensLegend
Creates a semantic tokens legend.
| tokenTypes: string[] | An array of token types. |
| tokenModifiers?: string[] | An array of token modifiers. |
| SemanticTokensLegend |
Properties
The possible token modifiers.
The possible token types.
ShellExecution
Represents a task execution that happens inside a shell.
Constructors
new ShellExecution(commandLine: string, options?: ShellExecutionOptions): ShellExecution
Creates a shell execution with a full command line.
| commandLine: string | The command line to execute. |
| options?: ShellExecutionOptions | Optional options for the started the shell. |
| ShellExecution |
new ShellExecution(command: string | ShellQuotedString, args: Array<string | ShellQuotedString>, options?: ShellExecutionOptions): ShellExecution
Creates a shell execution with a command and arguments. For the real execution the editor will construct a command line from the command and the arguments. This is subject to interpretation especially when it comes to quoting. If full control over the command line is needed please use the constructor that creates a ShellExecution with the full command line.
| command: string | ShellQuotedString | The command to execute. |
| args: Array<string | ShellQuotedString> | The command arguments. |
| options?: ShellExecutionOptions | Optional options for the started the shell. |
| ShellExecution |
Properties
args: Array<string | ShellQuotedString>
The shell args. Is undefined if created with a full command line.
command: string | ShellQuotedString
The shell command. Is undefined if created with a full command line.
The shell command line. Is undefined if created with a command and arguments.
options?: ShellExecutionOptions
The shell options used when the command line is executed in a shell. Defaults to undefined.
ShellExecutionOptions
Options for a shell execution
Properties
The current working directory of the executed shell. If omitted the tools current workspace root is used.
The additional environment of the executed shell. If omitted the parent process' environment is used. If provided it is merged with the parent process' environment.
The shell executable.
The arguments to be passed to the shell executable used to run the task. Most shells require special arguments to execute a command. For example bash requires the -c argument to execute a command, PowerShell requires -Command and cmd requires both /d and /c.
shellQuoting?: ShellQuotingOptions
The shell quotes supported by this shell.
ShellQuotedString
A string that will be quoted depending on the used shell.
Properties
quoting: ShellQuoting
The quoting style to use.
The actual string value.
ShellQuoting
Defines how an argument should be quoted if it contains spaces or unsupported characters.
Enumeration Members
Character escaping should be used. This for example uses \ on bash and ` on PowerShell.
Strong string quoting should be used. This for example uses " for Windows cmd and ' for bash and PowerShell. Strong quoting treats arguments as literal strings. Under PowerShell echo 'The value is $(2 * 3)' will print The value is $(2 * 3)
Weak string quoting should be used. This for example uses " for Windows cmd, bash and PowerShell. Weak quoting still performs some kind of evaluation inside the quoted string. Under PowerShell echo "The value is $(2 * 3)" will print The value is 6
ShellQuotingOptions
The shell quoting options.
Properties
escape?: string | {charsToEscape: string, escapeChar: string}
The character used to do character escaping. If a string is provided only spaces are escaped. If a { escapeChar, charsToEscape } literal is provide all characters in charsToEscape are escaped using the escapeChar.
The character used for strong quoting. The string's length must be 1.
The character used for weak quoting. The string's length must be 1.
SignatureHelp
Signature help represents the signature of something callable. There can be multiple signatures but only one active and only one active parameter.
Constructors
new SignatureHelp(): SignatureHelp
| SignatureHelp |
Properties
The active parameter of the active signature.
The active signature.
signatures: SignatureInformation[]
One or more signatures.
SignatureHelpContext
Additional information about the context in which a SignatureHelpProvider was triggered.
Properties
activeSignatureHelp: SignatureHelp
The currently active SignatureHelp.
The activeSignatureHelp has its activeSignature field updated based on the user arrowing through available signatures.
true if signature help was already showing when it was triggered.
Retriggers occur when the signature help is already active and can be caused by actions such as typing a trigger character, a cursor move, or document content changes.
Character that caused signature help to be triggered.
This is undefined when signature help is not triggered by typing, such as when manually invoking signature help or when moving the cursor.
triggerKind: SignatureHelpTriggerKind
Action that caused signature help to be triggered.
SignatureHelpProvider
The signature help provider interface defines the contract between extensions and the parameter hints-feature.
Methods
provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>
Provide help for the signature at the given position and document.
| 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: SignatureHelpContext | Information about how signature help was triggered. |
| ProviderResult<SignatureHelp> | Signature help or a thenable that resolves to such. The lack of a result can be signaled by returning undefined or null. |
SignatureHelpProviderMetadata
Metadata about a registered SignatureHelpProvider.
Properties
retriggerCharacters: readonly string[]
List of characters that re-trigger signature help.
These trigger characters are only active when signature help is already showing. All trigger characters are also counted as re-trigger characters.
triggerCharacters: readonly string[]
List of characters that trigger signature help.
SignatureHelpTriggerKind
How a SignatureHelpProvider was triggered.
Enumeration Members
Signature help was invoked manually by the user or by a command.
Signature help was triggered by a trigger character.
Signature help was triggered by the cursor moving or by the document content changing.
SignatureInformation
Represents the signature of something callable. A signature can have a label, like a function-name, a doc-comment, and a set of parameters.
Constructors
new SignatureInformation(label: string, documentation?: string | MarkdownString): SignatureInformation
Creates a new signature information object.
| label: string | A label string. |
| documentation?: string | MarkdownString | A doc string. |
| SignatureInformation |
Properties
The index of the active parameter.
If provided, this is used in place of SignatureHelp.activeParameter.
documentation?: string | MarkdownString
The human-readable doc-comment of this signature. Will be shown in the UI but can be omitted.
The label of this signature. Will be shown in the UI.
parameters: ParameterInformation[]
The parameters of this signature.
SnippetString
A snippet string is a template which allows to insert text and to control the editor cursor when insertion happens.
A snippet can define tab stops and placeholders with $1, $2 and ${3:foo}. $0 defines the final tab stop, it defaults to the end of the snippet. Variables are defined with $name and ${name:default value}. Also see the full snippet syntax.
Constructors
new SnippetString(value?: string): SnippetString
Create a new snippet string.
| value?: string | A snippet string. |
| SnippetString |
Properties
The snippet string.
Methods
appendChoice(values: readonly string[], number?: number): SnippetString
Builder-function that appends a choice (${1|a,b,c|}) to the value of this snippet string.
| values: readonly string[] | The values for choices - the array of strings |
| number?: number | The number of this tabstop, defaults to an auto-increment value starting at 1. |
| SnippetString | This snippet string. |
appendPlaceholder(value: string | (snippet: SnippetString) => any, number?: number): SnippetString
Builder-function that appends a placeholder (${1:value}) to the value of this snippet string.
| value: string | (snippet: SnippetString) => any | The value of this placeholder - either a string or a function with which a nested snippet can be created. |
| number?: number | The number of this tabstop, defaults to an auto-increment value starting at 1. |
| SnippetString | This snippet string. |
appendTabstop(number?: number): SnippetString
Builder-function that appends a tabstop ($1, $2 etc) to the value of this snippet string.
| number?: number | The number of this tabstop, defaults to an auto-increment value starting at 1. |
| SnippetString | This snippet string. |
appendText(string: string): SnippetString
Builder-function that appends the given string to the value of this snippet string.
| string: string | A value to append 'as given'. The string will be escaped. |
| SnippetString | This snippet string. |
appendVariable(name: string, defaultValue: string | (snippet: SnippetString) => any): SnippetString
Builder-function that appends a variable (${VAR}) to the value of this snippet string.
| name: string | The name of the variable - excluding the $. |
| defaultValue: string | (snippet: SnippetString) => any | The default value which is used when the variable name cannot be resolved - either a string or a function with which a nested snippet can be created. |
| SnippetString | This snippet string. |
SnippetTextEdit
A snippet edit represents an interactive edit that is performed by the editor.
Note that a snippet edit can always be performed as a normal text edit. This will happen when no matching editor is open or when a workspace edit contains snippet edits for multiple files. In that case only those that match the active editor will be performed as snippet edits and the others as normal text edits.
Static
insert(position: Position, snippet: SnippetString): SnippetTextEdit
Utility to create an insert snippet edit.
| position: Position | A position, will become an empty range. |
| snippet: SnippetString | A snippet string. |
| SnippetTextEdit | A new snippet edit object. |
replace(range: Range, snippet: SnippetString): SnippetTextEdit
Utility to create a replace snippet edit.
| range: Range | A range. |
| snippet: SnippetString | A snippet string. |
| SnippetTextEdit | A new snippet edit object. |
Constructors
new SnippetTextEdit(range: Range, snippet: SnippetString): SnippetTextEdit
Create a new snippet edit.
| range: Range | A range. |
| snippet: SnippetString | A snippet string. |
| SnippetTextEdit |
Properties
Whether the snippet edit should be applied with existing whitespace preserved.
range: Range
The range this edit applies to.
snippet: SnippetString
The snippet this edit will perform.
SourceBreakpoint
A breakpoint specified by a source location.
Constructors
new SourceBreakpoint(location: Location, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): SourceBreakpoint
Create a new breakpoint for a source location.
| location: Location | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| SourceBreakpoint |
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.
location: Location
The source and line position of this breakpoint.
An optional message that gets logged when this breakpoint is hit. Embedded expressions within {} are interpolated by the debug adapter.
SourceControl
An source control is able to provide resource states to the editor and interact with the editor in several source control related ways.
Properties
acceptInputCommand?: Command
Optional accept input command.
This command will be invoked when the user accepts the value in the Source Control input.
Optional commit template string.
The Source Control viewlet will populate the Source Control input with this value when appropriate.
The UI-visible count of resource states of this source control.
If undefined, this source control will
- display its UI-visible count as zero, and
- contribute the count of its resource states to the UI-visible aggregated count for all source controls
The id of this source control.
inputBox: SourceControlInputBox
The input box for this source control.
The human-readable label of this source control.
quickDiffProvider?: QuickDiffProvider
An optional quick diff provider.
rootUri: Uri
The (optional) Uri of the root of this source control.
statusBarCommands?: Command[]
Optional status bar commands.
These commands will be displayed in the editor's status bar.
Methods
createResourceGroup(id: string, label: string): SourceControlResourceGroup
Create a new resource group.
| id: string | |
| label: string | |
| SourceControlResourceGroup |
Dispose this source control.
| void |
SourceControlInputBox
Represents the input box in the Source Control viewlet.
Properties
Controls whether the input box is enabled (default is true).
A string to show as placeholder in the input box to guide the user.
Setter and getter for the contents of the input box.
Controls whether the input box is visible (default is true).
SourceControlResourceDecorations
The decorations for a source control resource state. Can be independently specified for light and dark themes.
Properties
dark?: SourceControlResourceThemableDecorations
The dark theme decorations.
Whether the source control resource state should be faded in the UI.
iconPath?: string | Uri | ThemeIcon
The icon path for a specific source control resource state.
light?: SourceControlResourceThemableDecorations
The light theme decorations.
Whether the source control resource state should be striked-through in the UI.
The title for a specific source control resource state.
SourceControlResourceGroup
A source control resource group is a collection of source control resource states.
Properties
Context value of the resource group. This can be used to contribute resource group specific actions. For example, if a resource group is given a context value of exportable, when contributing actions to scm/resourceGroup/context using menus extension point, you can specify context value for key scmResourceGroupState in when expressions, like scmResourceGroupState == exportable.
"contributes": { "menus": { "scm/resourceState/context": [ { "command": "extension.diff", "when": "scmResourceState == diffable" } ] } }This will show action extension.diff only for resources with contextValue is diffable.
decorations?: SourceControlResourceDecorations
The decorations for this source control resource state.
resourceUri: Uri
The Uri of the underlying resource inside the workspace.
SourceControlResourceThemableDecorations
The theme-aware decorations for a source control resource state.
Properties
iconPath?: string | Uri | ThemeIcon
The icon path for a specific source control resource state.
StatementCoverage
Contains coverage information for a single statement or line.
Constructors
new StatementCoverage(executed: number | boolean, location: Range | Position, branches?: BranchCoverage[]): StatementCoverage
| executed: number | boolean | The number of times this statement was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the statement will be marked as un-covered. |
| location: Range | Position | The statement position. |
| branches?: BranchCoverage[] | Coverage from branches of this line. If it's not a conditional, this should be omitted. |
| StatementCoverage |
Properties
branches: BranchCoverage[]
Coverage from branches of this line or statement. If it's not a conditional, this will be empty.
The number of times this statement was executed, or a boolean indicating whether it was executed if the exact count is unknown. If zero or false, the statement will be marked as un-covered.
Statement location.
StatusBarAlignment
Represents the alignment of status bar items.
Enumeration Members
Aligned to the left side.
Aligned to the right side.
StatusBarItem
A status bar item is a status bar contribution that can show text and icons and run a command on click.
Properties
accessibilityInformation: AccessibilityInformation
Accessibility information used when a screen reader interacts with this StatusBar item
alignment: StatusBarAlignment
The alignment of this item.
backgroundColor: ThemeColor
The background color for this entry.
Note: only the following colors are supported:
- new ThemeColor('statusBarItem.errorBackground')
- new ThemeColor('statusBarItem.warningBackground')
More background colors may be supported in the future.
Note: when a background color is set, the statusbar may override the color choice to ensure the entry is readable in all themes.
color: string | ThemeColor
The foreground color for this entry.
command: string | Command
The identifier of this item.
Note: if no identifier was provided by the window.createStatusBarItem method, the identifier will match the extension identifier.
The name of the entry, like 'Python Language Indicator', 'Git Status' etc. Try to keep the length of the name short, yet descriptive enough that users can understand what the status bar item is about.
The priority of this item. Higher value means the item should be shown more to the left.
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.
tooltip: string | MarkdownString
The tooltip text when you hover over this entry.
Methods
Dispose and free associated resources. Call hide.
| void |
Hide the entry in the status bar.
| void |
Shows the entry in the status bar.
| void |
SymbolInformation
Represents information about programming constructs like variables, classes, interfaces etc.
Constructors
new SymbolInformation(name: string, kind: SymbolKind, containerName: string, location: Location): SymbolInformation
Creates a new symbol information object.
| name: string | The name of the symbol. |
| kind: SymbolKind | The kind of the symbol. |
| containerName: string | The name of the symbol containing the symbol. |
| location: Location | The location of the symbol. |
| SymbolInformation |
new SymbolInformation(name: string, kind: SymbolKind, range: Range, uri?: Uri, containerName?: string): SymbolInformation
Creates a new symbol information object.
- deprecated - Please use the constructor taking a Location object.
| name: string | The name of the symbol. |
| kind: SymbolKind | The kind of the symbol. |
| range: Range | The range of the location of the symbol. |
| uri?: Uri | The resource of the location of symbol, defaults to the current document. |
| containerName?: string | The name of the symbol containing the symbol. |
| SymbolInformation |
Properties
The name of the symbol containing this symbol.
kind: SymbolKind
The kind of this symbol.
location: Location
The location of this symbol.
The name of this symbol.
tags?: readonly SymbolTag[]
Tags for this symbol.
SymbolKind
A symbol kind.
Enumeration Members
The File symbol kind.
The Module symbol kind.
The Namespace symbol kind.
The Package symbol kind.
The Class symbol kind.
The Method symbol kind.
The Property symbol kind.
The Field symbol kind.
The Constructor symbol kind.
The Enum symbol kind.
The Interface symbol kind.
The Function symbol kind.
The Variable symbol kind.
The Constant symbol kind.
The String symbol kind.
The Number symbol kind.
The Boolean symbol kind.
The Array symbol kind.
The Object symbol kind.
The Key symbol kind.
The Null symbol kind.
The EnumMember symbol kind.
The Struct symbol kind.
The Event symbol kind.
The Operator symbol kind.
The TypeParameter symbol kind.
SymbolTag
Symbol tags are extra annotations that tweak the rendering of a symbol.
Enumeration Members
Render a symbol as obsolete, usually using a strike-out.
SyntaxTokenType
Enumeration of commonly encountered syntax token types.
Enumeration Members
Everything except tokens that are part of comments, string literals and regular expressions.
A comment.
A string literal.
A regular expression.
Tab
Represents a tab within a group of tabs. Tabs are merely the graphical representation within the editor area. A backing editor is not a guarantee.
Properties
group: TabGroup
The group which the tab belongs to.
Defines the structure of the tab i.e. text, notebook, custom, etc. Resource and other useful properties are defined on the tab kind.
Whether or not the tab is currently active. This is dictated by being the selected tab in the group.
Whether or not the dirty indicator is present on the tab.
Whether or not the tab is pinned (pin icon is present).
Whether or not the tab is in preview mode.
The text displayed on the tab.
TabChangeEvent
An event describing change to tabs.
Properties
changed: readonly Tab[]
Tabs that have changed, e.g have changed their active state.
closed: readonly Tab[]
The tabs that have been closed.
opened: readonly Tab[]
The tabs that have been opened.
TabGroup
Represents a group of tabs. A tab group itself consists of multiple tabs.
Properties
activeTab: Tab
The active tab in the group. This is the tab whose contents are currently being rendered.
Note that there can be one active tab per group but there can only be one active group.
Whether or not the group is currently active.
Note that only one tab group is active at a time, but that multiple tab groups can have an active tab.
See also Tab.isActive
tabs: readonly Tab[]
The list of tabs contained within the group. This can be empty if the group has no tabs open.
viewColumn: ViewColumn
The view column of the group.
TabGroupChangeEvent
An event describing changes to tab groups.
Properties
changed: readonly TabGroup[]
Tab groups that have changed, e.g have changed their active state.
closed: readonly TabGroup[]
Tab groups that have been closed.
opened: readonly TabGroup[]
Tab groups that have been opened.
TabGroups
Represents the main editor area which consists of multiple groups which contain tabs.
Events
onDidChangeTabGroups: Event<TabGroupChangeEvent>
An event which fires when tab groups have changed.
onDidChangeTabs: Event<TabChangeEvent>
Properties
activeTabGroup: TabGroup
The currently active group.
all: readonly TabGroup[]
All the groups within the group container.
Methods
close(tab: Tab | readonly Tab[], preserveFocus?: boolean): Thenable<boolean>
Closes the tab. This makes the tab object invalid and the tab should no longer be used for further actions. Note: In the case of a dirty tab, a confirmation dialog will be shown which may be cancelled. If cancelled the tab is still valid
close(tabGroup: TabGroup | readonly TabGroup[], preserveFocus?: boolean): Thenable<boolean>
Closes the tab group. This makes the tab group object invalid and the tab group should no longer be used for further actions.
TabInputCustom
The tab represents a custom editor.
Constructors
new TabInputCustom(uri: Uri, viewType: string): TabInputCustom
Constructs a custom editor tab input.
| uri: Uri | The uri of the tab. |
| viewType: string | The viewtype of the custom editor. |
| TabInputCustom |
Properties
uri: Uri
The uri that the tab is representing.
The type of custom editor.
TabInputNotebook
The tab represents a notebook.
Constructors
new TabInputNotebook(uri: Uri, notebookType: string): TabInputNotebook
Constructs a new tab input for a notebook.
| uri: Uri | The uri of the notebook. |
| notebookType: string | The type of notebook. Maps to NotebookDocuments's notebookType |
| TabInputNotebook |
Properties
The type of notebook. Maps to NotebookDocuments's notebookType
uri: Uri
The uri that the tab is representing.
TabInputNotebookDiff
The tabs represents two notebooks in a diff configuration.
Constructors
new TabInputNotebookDiff(original: Uri, modified: Uri, notebookType: string): TabInputNotebookDiff
Constructs a notebook diff tab input.
| original: Uri | The uri of the original unmodified notebook. |
| modified: Uri | The uri of the modified notebook. |
| notebookType: string | The type of notebook. Maps to NotebookDocuments's notebookType |
| TabInputNotebookDiff |
Properties
modified: Uri
The uri of the modified notebook.
The type of notebook. Maps to NotebookDocuments's notebookType
original: Uri
The uri of the original notebook.
TabInputTerminal
The tab represents a terminal in the editor area.
Constructors
new TabInputTerminal(): TabInputTerminal
Constructs a terminal tab input.
| TabInputTerminal |
TabInputText
The tab represents a single text based resource.
Constructors
new TabInputText(uri: Uri): TabInputText
Constructs a text tab input with the given URI.
| uri: Uri | The URI of the tab. |
| TabInputText |
Properties
uri: Uri
The uri represented by the tab.
TabInputTextDiff
The tab represents two text based resources being rendered as a diff.
Constructors
new TabInputTextDiff(original: Uri, modified: Uri): TabInputTextDiff
Constructs a new text diff tab input with the given URIs.
| original: Uri | The uri of the original text resource. |
| modified: Uri | The uri of the modified text resource. |
| TabInputTextDiff |
Properties
modified: Uri
The uri of the modified text resource.
original: Uri
The uri of the original text resource.
TabInputWebview
The tab represents a webview.
Constructors
new TabInputWebview(viewType: string): TabInputWebview
Constructs a webview tab input with the given view type.
| viewType: string | The type of webview. Maps to WebviewPanel's viewType |
| TabInputWebview |
Properties
The type of webview. Maps to WebviewPanel's viewType
Task
A task to execute
Constructors
new Task(taskDefinition: TaskDefinition, scope: WorkspaceFolder | Global | Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution | CustomExecution, problemMatchers?: string | string[]): Task
Creates a new task.
| taskDefinition: TaskDefinition | The task definition as defined in the taskDefinitions extension point. |
| scope: WorkspaceFolder | Global | Workspace | Specifies the task's scope. It is either a global or a workspace task or a task for a specific workspace folder. Global tasks are currently not supported. |
| name: string | The task's name. Is presented in the user interface. |
| source: string | The task's source (e.g. 'gulp', 'npm', ...). Is presented in the user interface. |
| execution?: ProcessExecution | ShellExecution | CustomExecution | The process or shell execution. |
| problemMatchers?: string | string[] | the names of problem matchers to use, like '$tsc' or '$eslint'. Problem matchers can be contributed by an extension using the problemMatchers extension point. |
| Task |
new Task(taskDefinition: TaskDefinition, name: string, source: string, execution?: ProcessExecution | ShellExecution, problemMatchers?: string | string[]): Task
Creates a new task.
- deprecated - Use the new constructors that allow specifying a scope for the task.
| taskDefinition: TaskDefinition | The task definition as defined in the taskDefinitions extension point. |
| name: string | The task's name. Is presented in the user interface. |
| source: string | The task's source (e.g. 'gulp', 'npm', ...). Is presented in the user interface. |
| execution?: ProcessExecution | ShellExecution | The process or shell execution. |
| problemMatchers?: string | string[] | the names of problem matchers to use, like '$tsc' or '$eslint'. Problem matchers can be contributed by an extension using the problemMatchers extension point. |
| Task |
Properties
definition: TaskDefinition
The task's definition.
A human-readable string which is rendered less prominently on a separate line in places where the task's name is displayed. Supports rendering of theme icons via the $(<name>)-syntax.
execution?: ProcessExecution | ShellExecution | CustomExecution
The task's execution engine
group?: TaskGroup
The task group this tasks belongs to. See TaskGroup for a predefined set of available groups. Defaults to undefined meaning that the task doesn't belong to any special group.
Whether the task is a background task or not.
The task's name
presentationOptions: TaskPresentationOptions
The presentation options. Defaults to an empty literal.
The problem matchers attached to the task. Defaults to an empty array.
runOptions: RunOptions
Run options for the task
scope: WorkspaceFolder | Global | Workspace
The task's scope.
A human-readable string describing the source of this shell task, e.g. 'gulp' or 'npm'. Supports rendering of theme icons via the $(<name>)-syntax.
TaskDefinition
A structure that defines a task kind in the system. The value must be JSON-stringifyable.
Properties
The task definition describing the task provided by an extension. Usually a task provider defines more properties to identify a task. They need to be defined in the package.json of the extension under the 'taskDefinitions' extension point. The npm task definition for example looks like this
const sender: vscode.TelemetrySender = {...}; const logger = vscode.env.createTelemetryLogger(sender); // GOOD - uses the logger logger.logUsage('myEvent', { myData: 'myValue' }); // BAD - uses the sender directly: no data cleansing, ignores user settings, no echoing to the telemetry output channel etc sender.logEvent('myEvent', { myData: 'myValue' });Methods
flush(): void | Thenable<void>
Optional flush function which will give this sender a chance to send any remaining events as its TelemetryLogger is being disposed
| void | Thenable<void> |
sendErrorData(error: Error, data?: Record<string, any>): void
Function to send an error. Used within a TelemetryLogger
| error: Error | The error being logged |
| data?: Record<string, any> | Any additional data to be collected with the exception |
| void |
sendEventData(eventName: string, data?: Record<string, any>): void
Function to send event data without a stacktrace. Used within a TelemetryLogger
| eventName: string | The name of the event which you are logging |
| data?: Record<string, any> | A serializable key value pair that is being logged |
| void |
TelemetryTrustedValue<T>
A special value wrapper denoting a value that is safe to not clean. This is to be used when you can guarantee no identifiable information is contained in the value and the cleaning is improperly redacting it.
Constructors
new TelemetryTrustedValue<T>(value: T): TelemetryTrustedValue<T>
Creates a new telemetry trusted value.
| value: T | A value to trust |
| TelemetryTrustedValue<T> |
Properties
The value that is trusted to not contain PII.
Terminal
An individual terminal instance within the integrated terminal.
Properties
creationOptions: Readonly<TerminalOptions | ExtensionTerminalOptions>
The object used to initialize the terminal, this is useful for example to detecting the shell type of when the terminal was not launched by this extension or for detecting what folder the shell was launched in.
exitStatus: TerminalExitStatus
The exit status of the terminal, this will be undefined while the terminal is active.
Example: Show a notification with the exit code when the terminal exits with a non-zero exit code.
// Log the details of the command line on start and end window.onDidStartTerminalShellExecution(event => { const commandLine = event.execution.commandLine; console.log(`Command started\n${summarizeCommandLine(commandLine)}`); }); window.onDidEndTerminalShellExecution(event => { const commandLine = event.execution.commandLine; console.log(`Command ended\n${summarizeCommandLine(commandLine)}`); }); function summarizeCommandLine(commandLine: TerminalShellExecutionCommandLine) { return [ ` Command line: ${command.commandLine.value}`, ` Confidence: ${command.commandLine.confidence}`, ` Trusted: ${command.commandLine.isTrusted} ].join('\n'); }cwd: Uri
The working directory that was reported by the shell when this command executed. This Uri may represent a file on another machine (eg. ssh into another machine). This requires the shell integration to support working directory reporting.
Methods
Creates a stream of raw data (including escape sequences) that is written to the terminal. This will only include data that was written after read was called for the first time, ie. you must call read immediately after the command is executed via TerminalShellIntegration.executeCommand or window.onDidStartTerminalShellExecution to not miss any data.
Example
const execution = shellIntegration.executeCommand({ command: 'echo', args: ['Hello world'] }); window.onDidEndTerminalShellExecution(event => { if (event.execution === execution) { if (event.exitCode === undefined) { console.log('Command finished but exit code is unknown'); } else if (event.exitCode === 0) { console.log('Command succeeded'); } else { console.log('Command failed'); } } });shellIntegration: TerminalShellIntegration
The shell integration object.
terminal: Terminal
The terminal that shell integration has been activated in.
TerminalShellExecutionStartEvent
An event signalling that an execution has started in a terminal.
Properties
execution: TerminalShellExecution
The terminal shell execution that has ended.
shellIntegration: TerminalShellIntegration
The shell integration object.
terminal: Terminal
The terminal that shell integration has been activated in.
TerminalShellIntegration
Shell integration-powered capabilities owned by a terminal.
Properties
cwd: Uri
The current working directory of the terminal. This Uri may represent a file on another machine (eg. ssh into another machine). This requires the shell integration to support working directory reporting.
Methods
executeCommand(commandLine: string): TerminalShellExecution
Execute a command, sending ^C as necessary to interrupt any running command if needed.
- throws - When run on a terminal doesn't support this API, such as task terminals.
Example
// Send command to terminal that has been alive for a while const commandLine = 'echo "Hello world"'; if (term.shellIntegration) { const execution = shellIntegration.executeCommand({ commandLine }); window.onDidEndTerminalShellExecution(event => { if (event.execution === execution) { console.log(`Command exited with code ${event.exitCode}`); } }); } else { term.sendText(commandLine); // Without shell integration, we can't know when the command has finished or what the // exit code was. }| commandLine: string | The command line to execute, this is the exact text that will be sent to the terminal. |
| TerminalShellExecution |
executeCommand(executable: string, args: string[]): TerminalShellExecution
Execute a command, sending ^C as necessary to interrupt any running command if needed.
Note This is not guaranteed to work as shell integration must be activated. Check whether TerminalShellExecution.exitCode is rejected to verify whether it was successful.
Example
// Send command to terminal that has been alive for a while const commandLine = 'echo "Hello world"'; if (term.shellIntegration) { const command = term.shellIntegration.executeCommand({ command: 'echo', args: ['Hello world'] }); const code = await command.exitCode; console.log(`Command exited with code ${code}`); } else { term.sendText(commandLine); // Without shell integration, we can't know when the command has finished or what the // exit code was. }| executable: string | A command to run. |
| args: string[] | Arguments to launch the executable with. The arguments will be escaped such that they are interpreted as single arguments when the argument both contains whitespace and does not include any single quote, double quote or backtick characters. Note that this escaping is not intended to be a security measure, be careful when passing untrusted data to this API as strings like $(...) can often be used in shells to execute code within a string. |
| TerminalShellExecution |
TerminalShellIntegrationChangeEvent
An event signalling that a terminal's shell integration has changed.
Properties
shellIntegration: TerminalShellIntegration
The shell integration object.
terminal: Terminal
The terminal that shell integration has been activated in.
TerminalSplitLocationOptions
Uses the parent Terminal's location for the terminal
Properties
parentTerminal: Terminal
The parent terminal to split this terminal beside. This works whether the parent terminal is in the panel or the editor area.
TerminalState
Represents the state of a Terminal.
Properties
Whether the Terminal has been interacted with. Interaction means that the terminal has sent data to the process which depending on the terminal's mode. By default input is sent when a key is pressed or when a command or extension sends text, but based on the terminal's mode it can also happen on:
- a pointer click event
- a pointer scroll event
- a pointer move event
- terminal focus in/out
For more information on events that can send data see "DEC Private Mode Set (DECSET)" on https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
The detected shell type of the Terminal. This will be undefined when there is not a clear signal as to what the shell is, or the shell is not supported yet. This value should change to the shell type of a sub-shell when launched (for example, running bash inside zsh).
Note that the possible values are currently defined as any of the following: 'bash', 'cmd', 'csh', 'fish', 'gitbash', 'julia', 'ksh', 'node', 'nu', 'pwsh', 'python', 'sh', 'wsl', 'xonsh', 'zsh'.
TestController
Entry point to discover and execute tests. It contains TestController.items which are used to populate the editor UI, and is associated with run profiles to allow for tests to be executed.
Properties
The id of the controller passed in tests.createTestController. This must be globally unique.
items: TestItemCollection
A collection of "top-level" TestItem instances, which can in turn have their own children to form the "test tree."
The extension controls when to add tests. For example, extensions should add tests for a file when workspace.onDidOpenTextDocument fires in order for decorations for tests within a file to be visible.
However, the editor may sometimes explicitly request children using the resolveHandler See the documentation on that method for more details.
Human-readable label for the test controller.
refreshHandler: (token: CancellationToken) => void | Thenable<void>
If this method is present, a refresh button will be present in the UI, and this method will be invoked when it's clicked. When called, the extension should scan the workspace for any new, changed, or removed tests.
It's recommended that extensions try to update tests in realtime, using a FileSystemWatcher for example, and use this method as a fallback.
| token: CancellationToken | |
| void | Thenable<void> | A thenable that resolves when tests have been refreshed. |
resolveHandler?: (item: TestItem) => void | Thenable<void>
A function provided by the extension that the editor may call to request children of a test item, if the TestItem.canResolveChildren is true. When called, the item should discover children and call TestController.createTestItem as children are discovered.
Generally the extension manages the lifecycle of test items, but under certain conditions the editor may request the children of a specific item to be loaded. For example, if the user requests to re-run tests after reloading the editor, the editor may need to call this method to resolve the previously-run tests.
The item in the explorer will automatically be marked as "busy" until the function returns or the returned thenable resolves.
Methods
createRunProfile(label: string, kind: TestRunProfileKind, runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>, isDefault?: boolean, tag?: TestTag, supportsContinuousRun?: boolean): TestRunProfile
Creates a profile used for running tests. Extensions must create at least one profile in order for tests to be run.
| label: string | A human-readable label for this profile. |
| kind: TestRunProfileKind | Configures what kind of execution this profile manages. |
| runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void> | Function called to start a test run. |
| isDefault?: boolean | Whether this is the default action for its kind. |
| tag?: TestTag | Profile test tag. |
| supportsContinuousRun?: boolean | Whether the profile supports continuous running. |
| TestRunProfile | An instance of a TestRunProfile, which is automatically associated with this controller. |
createTestItem(id: string, label: string, uri?: Uri): TestItem
Creates a new managed TestItem instance. It can be added into the TestItem.children of an existing item, or into the TestController.items.
| id: string | Identifier for the TestItem. The test item's ID must be unique in the TestItemCollection it's added to. |
| label: string | Human-readable label of the test item. |
| uri?: Uri | URI this TestItem is associated with. May be a file or directory. |
| TestItem |
createTestRun(request: TestRunRequest, name?: string, persist?: boolean): TestRun
Creates a TestRun. This should be called by the TestRunProfile when a request is made to execute tests, and may also be called if a test run is detected externally. Once created, tests that are included in the request will be moved into the queued state.
All runs created using the same request instance will be grouped together. This is useful if, for example, a single suite of tests is run on multiple platforms.
| request: TestRunRequest | Test run request. Only tests inside the include may be modified, and tests in its exclude are ignored. |
| name?: string | The human-readable name of the run. This can be used to disambiguate multiple sets of results in a test run. It is useful if tests are run across multiple platforms, for example. |
| persist?: boolean | Whether the results created by the run should be persisted in the editor. This may be false if the results are coming from a file already saved externally, such as a coverage information file. |
| TestRun | An instance of the TestRun. It will be considered "running" from the moment this method is invoked until TestRun.end is called. |
Unregisters the test controller, disposing of its associated tests and unpersisted results.
| void |
invalidateTestResults(items?: TestItem | readonly TestItem[]): void
Marks an item's results as being outdated. This is commonly called when code or configuration changes and previous results should no longer be considered relevant. The same logic used to mark results as outdated may be used to drive continuous test runs.
If an item is passed to this method, test results for the item and all of its children will be marked as outdated. If no item is passed, then all test owned by the TestController will be marked as outdated.
Any test runs started before the moment this method is called, including runs which may still be ongoing, will be marked as outdated and deprioritized in the editor's UI.
TestCoverageCount
A class that contains information about a covered resource. A count can be give for lines, branches, and declarations in a file.
Constructors
new TestCoverageCount(covered: number, total: number): TestCoverageCount
| covered: number | Value for TestCoverageCount.covered |
| total: number | Value for TestCoverageCount.total |
| TestCoverageCount |
Properties
Number of items covered in the file.
Total number of covered items in the file.
TestItem
An item shown in the "test explorer" view.
A TestItem can represent either a test suite or a test itself, since they both have similar capabilities.
Properties
Controls whether the item is shown as "busy" in the Test Explorer view. This is useful for showing status while discovering children.
Defaults to false.
Indicates whether this test item may have children discovered by resolving.
If true, this item is shown as expandable in the Test Explorer view and expanding the item will cause TestController.resolveHandler to be invoked with the item.
Default to false.
children: TestItemCollection
The children of this test item. For a test suite, this may contain the individual test cases or nested suites.
Optional description that appears next to the label.
error: string | MarkdownString
Optional error encountered while loading the test.
Note that this is not a test result and should only be used to represent errors in test discovery, such as syntax errors.
Identifier for the TestItem. This is used to correlate test results and tests in the document with those in the workspace (test explorer). This cannot change for the lifetime of the TestItem, and must be unique among its parent's direct children.
Display name describing the test case.
parent: TestItem
The parent of this item. It's set automatically, and is undefined top-level items in the TestController.items and for items that aren't yet included in another item's children.
range: Range
Location of the test item in its uri.
This is only meaningful if the uri points to a file.
A string that should be used when comparing this item with other items. When falsy the label is used.
tags: readonly TestTag[]
Tags associated with this test item. May be used in combination with tags, or simply as an organizational feature.
uri: Uri
URI this TestItem is associated with. May be a file or directory.
TestItemCollection
Collection of test items, found in TestItem.children and TestController.items.
Properties
Gets the number of items in the collection.
Methods
add(item: TestItem): void
Adds the test item to the children. If an item with the same ID already exists, it'll be replaced.
| item: TestItem | Item to add. |
| void |
Removes a single test item from the collection.
| itemId: string | Item ID to delete. |
| void |
forEach(callback: (item: TestItem, collection: TestItemCollection) => unknown, thisArg?: any): void
Iterate over each entry in this collection.
| callback: (item: TestItem, collection: TestItemCollection) => unknown | Function to execute for each entry. |
| thisArg?: any | The this context used when invoking the handler function. |
| void |
get(itemId: string): TestItem
Efficiently gets a test item by ID, if it exists, in the children.
| itemId: string | Item ID to get. |
| TestItem | The found item or undefined if it does not exist. |
replace(items: readonly TestItem[]): void
Replaces the items stored by the collection.
| items: readonly TestItem[] | Items to store. |
| void |
TestMessage
Message associated with the test state. Can be linked to a specific source range -- useful for assertion failures, for example.
Static
diff(message: string | MarkdownString, expected: string, actual: string): TestMessage
Creates a new TestMessage that will present as a diff in the editor.
| message: string | MarkdownString | Message to display to the user. |
| expected: string | Expected output. |
| actual: string | Actual output. |
| TestMessage |
Constructors
new TestMessage(message: string | MarkdownString): TestMessage
Creates a new TestMessage instance.
| message: string | MarkdownString | The message to show to the user. |
| TestMessage |
Properties
Actual test output. If given with expectedOutput , a diff view will be shown.
Context value of the test item. This can be used to contribute message- specific actions to the test peek view. The value set here can be found in the testMessage property of the following menus contribution points:
- testing/message/context - context menu for the message in the results tree
- testing/message/content - a prominent button overlaying editor content where the message is displayed.
For example:
workspace.onWillSaveTextDocument(event => { // async, will *throw* an error setTimeout(() => event.waitUntil(promise)); // sync, OK event.waitUntil(promise); });| thenable: Thenable<readonly TextEdit[]> | A thenable that resolves to pre-save-edits. |
| void |
waitUntil(thenable: Thenable<any>): void
Allows to pause the event loop until the provided thenable resolved.
Note: This function can only be called during event dispatch.
| thenable: Thenable<any> | A thenable that delays saving. |
| void |
TextEdit
A text edit represents edits that should be applied to a document.
Static
delete(range: Range): TextEdit
Utility to create a delete edit.
insert(position: Position, newText: string): TextEdit
Utility to create an insert edit.
replace(range: Range, newText: string): TextEdit
Utility to create a replace edit.
setEndOfLine(eol: EndOfLine): TextEdit
Utility to create an eol-edit.
Constructors
new TextEdit(range: Range, newText: string): TextEdit
Create a new TextEdit.
Properties
newEol?: EndOfLine
The eol-sequence used in the document.
Note that the eol-sequence will be applied to the whole document.
The string this edit will insert.
range: Range
The range this edit applies to.
TextEditor
Represents an editor that is attached to a document.
Properties
document: TextDocument
The document associated with this text editor. The document will be the same for the entire lifetime of this text editor.
options: TextEditorOptions
Text editor options.
selection: Selection
The primary selection on this text editor. Shorthand for TextEditor.selections[0].
selections: readonly Selection[]
The selections in this text editor. The primary selection is always at index 0.
viewColumn: ViewColumn
The column in which this editor shows. Will be undefined in case this isn't one of the main editors, e.g. an embedded editor, or when the editor column is larger than three.
visibleRanges: readonly Range[]
The current visible ranges in the editor (vertically). This accounts only for vertical scrolling, and not for horizontal scrolling.
Methods
edit(callback: (editBuilder: TextEditorEdit) => void, options?: {undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
Perform an edit on the document associated with this text editor.
The given callback-function is invoked with an edit-builder which must be used to make edits. Note that the edit-builder is only valid while the callback executes.
| callback: (editBuilder: TextEditorEdit) => void | A function which can create edits using an edit-builder. |
| options?: {undoStopAfter: boolean, undoStopBefore: boolean} | The undo/redo behavior around this edit. By default, undo stops will be created before and after this edit. |
| Thenable<boolean> | A promise that resolves with a value indicating if the edits could be applied. |
Hide the text editor.
- deprecated - Use the command workbench.action.closeActiveEditor instead. This method shows unexpected behavior and will be removed in the next major update.
| void |
insertSnippet(snippet: SnippetString, location?: Range | Position | readonly Range[] | readonly Position[], options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
Insert a snippet and put the editor into snippet mode. "Snippet mode" means the editor adds placeholders and additional cursors so that the user can complete or accept the snippet.
| snippet: SnippetString | The snippet to insert in this edit. |
| location?: Range | Position | readonly Range[] | readonly Position[] | Position or range at which to insert the snippet, defaults to the current editor selection or selections. |
| options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean} | The undo/redo behavior around this edit. By default, undo stops will be created before and after this edit. |
| Thenable<boolean> | A promise that resolves with a value indicating if the snippet could be inserted. Note that the promise does not signal that the snippet is completely filled-in or accepted. |
revealRange(range: Range, revealType?: TextEditorRevealType): void
Scroll as indicated by revealType in order to reveal the given range.
| range: Range | A range. |
| revealType?: TextEditorRevealType | The scrolling strategy for revealing range. |
| void |
setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: readonly Range[] | readonly DecorationOptions[]): void
Adds a set of decorations to the text editor. If a set of decorations already exists with the given decoration type, they will be replaced. If rangesOrOptions is empty, the existing decorations with the given decoration type will be removed.
See also createTextEditorDecorationType.
| decorationType: TextEditorDecorationType | A decoration type. |
| rangesOrOptions: readonly Range[] | readonly DecorationOptions[] | |
| void |
show(column?: ViewColumn): void
Show the text editor.
- deprecated - Use window.showTextDocument instead.
| column?: ViewColumn | The column in which to show this editor. This method shows unexpected behavior and will be removed in the next major update. |
| void |
TextEditorCursorStyle
Rendering style of the cursor.
Enumeration Members
Render the cursor as a vertical thick line.
Render the cursor as a block filled.
Render the cursor as a thick horizontal line.
Render the cursor as a vertical thin line.
Render the cursor as a block outlined.
Render the cursor as a thin horizontal line.
TextEditorDecorationType
Represents a handle to a set of decorations sharing the same styling options in a text editor.
To get an instance of a TextEditorDecorationType use createTextEditorDecorationType.
Properties
Internal representation of the handle.
Methods
Remove this decoration type and all decorations on all text editors using it.
| void |
TextEditorEdit
A complex edit that will be applied in one transaction on a TextEditor. This holds a description of the edits and if the edits are valid (i.e. no overlapping regions, document was not changed in the meantime, etc.) they can be applied on a document associated with a text editor.
Methods
delete(location: Range | Selection): void
Delete a certain text region.
insert(location: Position, value: string): void
Insert text at a location. You can use \r\n or \n in value and they will be normalized to the current document. Although the equivalent text edit can be made with replace, insert will produce a different resulting selection (it will get moved).
| location: Position | The position where the new text should be inserted. |
| value: string | The new text this operation should insert. |
| void |
replace(location: Range | Position | Selection, value: string): void
Replace a certain text region with a new value. You can use \r\n or \n in value and they will be normalized to the current document.
setEndOfLine(endOfLine: EndOfLine): void
Set the end of line sequence.
TextEditorLineNumbersStyle
Rendering style of the line numbers.
Enumeration Members
Do not render the line numbers.
Render the line numbers.
Render the line numbers with values relative to the primary cursor location.
Render the line numbers on every 10th line number.
TextEditorOptions
Represents a text editor's options.
Properties
cursorStyle?: TextEditorCursorStyle
The rendering style of the cursor in this editor. When getting a text editor's options, this property will always be present. When setting a text editor's options, this property is optional.
The number of spaces to insert when insertSpaces is true.
When getting a text editor's options, this property will always be a number (resolved). When setting a text editor's options, this property is optional and it can be a number or "tabSize".
insertSpaces?: string | boolean
When pressing Tab insert n spaces. When getting a text editor's options, this property will always be a boolean (resolved). When setting a text editor's options, this property is optional and it can be a boolean or "auto".
lineNumbers?: TextEditorLineNumbersStyle
Render relative line numbers w.r.t. the current line number. When getting a text editor's options, this property will always be present. When setting a text editor's options, this property is optional.
The size in spaces a tab takes. This is used for two purposes:
- the rendering width of a tab character;
- the number of spaces to insert when insertSpaces is true and indentSize is set to "tabSize".
When getting a text editor's options, this property will always be a number (resolved). When setting a text editor's options, this property is optional and it can be a number or "auto".
TextEditorOptionsChangeEvent
Represents an event describing the change in a text editor's options.
Properties
options: TextEditorOptions
The new value for the text editor's options.
textEditor: TextEditor
The text editor for which the options have changed.
TextEditorRevealType
Represents different reveal strategies in a text editor.
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.
TextEditorSelectionChangeEvent
Represents an event describing the change in a text editor's selections.
Properties
kind: TextEditorSelectionChangeKind
The change kind which has triggered this event. Can be undefined.
selections: readonly Selection[]
The new value for the text editor's selections.
textEditor: TextEditor
The text editor for which the selections have changed.
TextEditorSelectionChangeKind
Represents sources that can cause selection change events.
Enumeration Members
Selection changed due to typing in the editor.
Selection change due to clicking in the editor.
Selection changed because a command ran.
TextEditorViewColumnChangeEvent
Represents an event describing the change of a text editor's view column.
Properties
textEditor: TextEditor
The text editor for which the view column has changed.
viewColumn: ViewColumn
The new value for the text editor's view column.
TextEditorVisibleRangesChangeEvent
Represents an event describing the change in a text editor's visible ranges.
Properties
textEditor: TextEditor
The text editor for which the visible ranges have changed.
visibleRanges: readonly Range[]
The new value for the text editor's visible ranges.
TextLine
Represents a line of text, such as a line of source code.
TextLine objects are immutable. When a document changes, previously retrieved lines will not represent the latest state.
Properties
firstNonWhitespaceCharacterIndex: number
The offset of the first character which is not a whitespace character as defined by /\s/. Note that if a line is all whitespace the length of the line is returned.
Whether this line is whitespace only, shorthand for TextLine.firstNonWhitespaceCharacterIndex === TextLine.text.length.
The zero-based line number.
range: Range
The range this line covers without the line separator characters.
rangeIncludingLineBreak: Range
The range this line covers with the line separator characters.
The text of this line without the line separator characters.
ThemableDecorationAttachmentRenderOptions
Properties
backgroundColor?: string | ThemeColor
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
borderColor?: string | ThemeColor
CSS styling property that will be applied to text enclosed by a decoration.
color?: string | ThemeColor
CSS styling property that will be applied to the decoration attachment.
contentIconPath?: string | Uri
An absolute path or an URI to an image to be rendered in the attachment. Either an icon or a text can be shown, but not both.
Defines a text content that is shown in the attachment. Either an icon or a text can be shown, but not both.
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
CSS styling property that will be applied to the decoration attachment.
ThemableDecorationInstanceRenderOptions
Represents themable render options for decoration instances.
Properties
after?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted after the decorated text.
before?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted before the decorated text.
ThemableDecorationRenderOptions
Represents theme specific rendering styles for a text editor decoration.
Properties
after?: ThemableDecorationAttachmentRenderOptions
Defines the rendering options of the attachment that is inserted after the decorated text.
backgroundColor?: string | ThemeColor
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.
before?: ThemableDecorationAttachmentRenderOptions
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.
borderColor?: string | ThemeColor
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.
color?: string | ThemeColor
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.
CSS styling property that will be applied to text enclosed by a decoration.
gutterIconPath?: string | Uri
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
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.
outlineColor?: string | ThemeColor
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.
overviewRulerColor?: string | ThemeColor
The color of the decoration in the overview ruler. Use rgba() and define transparent colors to play well with other decorations.
CSS styling property that will be applied to text enclosed by a decoration.
ThemeColor
A reference to one of the workbench colors as defined in https://code.visualstudio.com/api/references/theme-color. Using a theme color is preferred over a custom color as it gives theme authors and users the possibility to change the color.
Constructors
new ThemeColor(id: string): ThemeColor
Creates a reference to a theme color.
| id: string | of the color. The available colors are listed in https://code.visualstudio.com/api/references/theme-color. |
| ThemeColor |
Properties
The id of this color.
ThemeIcon
A reference to a named icon. Currently, File, Folder, and ThemeIcon ids are supported. Using a theme icon is preferred over a custom icon as it gives product theme authors the possibility to change the icons.
Note that theme icons can also be rendered inside labels and descriptions. Places that support theme icons spell this out and they use the $(<name>)-syntax, for instance quickPick.label = "Hello World $(globe)".
Static
File: ThemeIcon
Reference to an icon representing a file. The icon is taken from the current file icon theme or a placeholder icon is used.
Folder: ThemeIcon
Reference to an icon representing a folder. The icon is taken from the current file icon theme or a placeholder icon is used.
Constructors
new ThemeIcon(id: string, color?: ThemeColor): ThemeIcon
Creates a reference to a theme icon.
| id: string | id of the icon. The available icons are listed in https://code.visualstudio.com/api/references/icons-in-labels#icon-listing. |
| color?: ThemeColor | optional ThemeColor for the icon. The color is currently only used in TreeItem. |
| ThemeIcon |
Properties
color?: ThemeColor
The optional ThemeColor of the icon. The color is currently only used in TreeItem.
The id of the icon. The available icons are listed in https://code.visualstudio.com/api/references/icons-in-labels#icon-listing.
TreeCheckboxChangeEvent<T>
An event describing the change in a tree item's checkbox state.
Properties
items: ReadonlyArray<[T, TreeItemCheckboxState]>
The items that were checked or unchecked.
TreeDataProvider<T>
A data provider that provides tree data
Events
onDidChangeTreeData?: Event<void | T | T[]>
An optional event to signal that an element or root has changed. This will trigger the view to update the changed element/root and its children recursively (if shown). To signal that root has changed, do not pass any argument or pass undefined or null.
Methods
getChildren(element?: T): ProviderResult<T[]>
Get the children of element or root if no element is passed.
Note: The result is not mutated by the API consumer; readonly arrays may be cast to T[].
| element?: T | The element from which the provider gets children. Can be undefined. |
| ProviderResult<T[]> | Children of element or root if no element is passed. |
getParent(element: T): ProviderResult<T>
Optional method to return the parent of element. Return null or undefined if element is a child of root.
NOTE: This method should be implemented in order to access reveal API.
| element: T | The element for which the parent has to be returned. |
| ProviderResult<T> | Parent of element. |
getTreeItem(element: T): TreeItem | Thenable<TreeItem>
Get TreeItem representation of the element
resolveTreeItem(item: TreeItem, element: T, token: CancellationToken): ProviderResult<TreeItem>
Called on hover to resolve the TreeItem property if it is undefined. Called on tree item click/open to resolve the TreeItem property if it is undefined. Only properties that were undefined can be resolved in resolveTreeItem. Functionality may be expanded later to include being called to resolve other missing properties on selection and/or on open.
Will only ever be called once per TreeItem.
onDidChangeTreeData should not be triggered from within resolveTreeItem.
Note that this function is called when tree items are already showing in the UI. Because of that, no property that changes the presentation (label, description, etc.) can be changed.
| item: TreeItem | Undefined properties of item should be set then item should be returned. |
| element: T | The object associated with the TreeItem. |
| token: CancellationToken | A cancellation token. |
| ProviderResult<TreeItem> | The resolved tree item 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. |
TreeDragAndDropController<T>
Provides support for drag and drop in TreeView.
Properties
dragMimeTypes: readonly string[]
The mime types that the handleDrag method of this TreeDragAndDropController may add to the tree data transfer. This could be well-defined, existing, mime types, and also mime types defined by the extension.
The recommended mime type of the tree (application/vnd.code.tree.<treeidlowercase>) will be automatically added.
dropMimeTypes: readonly string[]
The mime types that the handleDrop method of this DragAndDropController supports. This could be well-defined, existing, mime types, and also mime types defined by the extension.
To support drops from trees, you will need to add the mime type of that tree. This includes drops from within the same tree. The mime type of a tree is recommended to be of the format application/vnd.code.tree.<treeidlowercase>.
Use the special files mime type to support all types of dropped files files, regardless of the file's actual mime type.
To learn the mime type of a dragged item:
- Set up your DragAndDropController
- Use the Developer: Set Log Level... command to set the level to "Debug"
- Open the developer tools and drag the item with unknown mime type over your tree. The mime types will be logged to the developer console
Note that mime types that cannot be sent to the extension will be omitted.
Methods
handleDrag(source: readonly T[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
When the user starts dragging items from this DragAndDropController, handleDrag will be called. Extensions can use handleDrag to add their DataTransferItem items to the drag and drop.
Mime types added in handleDrag won't be available outside the application.
When the items are dropped on another tree item in the same tree, your DataTransferItem objects will be preserved. Use the recommended mime type for the tree (application/vnd.code.tree.<treeidlowercase>) to add tree objects in a data transfer. See the documentation for DataTransferItem for how best to take advantage of this.
To add a data transfer item that can be dragged into the editor, use the application specific mime type "text/uri-list". The data for "text/uri-list" should be 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.
| source: readonly T[] | The source items for the drag and drop operation. |
| dataTransfer: DataTransfer | The data transfer associated with this drag. |
| token: CancellationToken | A cancellation token indicating that drag has been cancelled. |
| void | Thenable<void> |
handleDrop(target: T, dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
Called when a drag and drop action results in a drop on the tree that this DragAndDropController belongs to.
Extensions should fire onDidChangeTreeData for any elements that need to be refreshed.
| target: T | The target tree element that the drop is occurring on. When undefined, the target is the root. |
| dataTransfer: DataTransfer | The data transfer items of the source of the drag. |
| token: CancellationToken | A cancellation token indicating that the drop has been cancelled. |
| void | Thenable<void> |
TreeItem
A tree item is an UI element of the tree. Tree items are created by the data provider.
Constructors
new TreeItem(label: string | TreeItemLabel, collapsibleState?: TreeItemCollapsibleState): TreeItem
| label: string | TreeItemLabel | A human-readable string describing this item |
| collapsibleState?: TreeItemCollapsibleState | TreeItemCollapsibleState of the tree item. Default is TreeItemCollapsibleState.None |
| TreeItem |
new TreeItem(resourceUri: Uri, collapsibleState?: TreeItemCollapsibleState): TreeItem
| resourceUri: Uri | The Uri of the resource representing this item. |
| collapsibleState?: TreeItemCollapsibleState | TreeItemCollapsibleState of the tree item. Default is TreeItemCollapsibleState.None |
| TreeItem |
Properties
accessibilityInformation?: AccessibilityInformation
Accessibility information used when screen reader interacts with this tree item. Generally, a TreeItem has no need to set the role of the accessibilityInformation; however, there are cases where a TreeItem is not displayed in a tree-like way where setting the role may make sense.
checkboxState?: TreeItemCheckboxState | {accessibilityInformation: AccessibilityInformation, state: TreeItemCheckboxState, tooltip: string}
TreeItemCheckboxState of the tree item. onDidChangeTreeData should be fired when checkboxState changes.
collapsibleState?: TreeItemCollapsibleState
TreeItemCollapsibleState of the tree item.
command?: Command
The Command that should be executed when the tree item is selected.
Please use vscode.open or vscode.diff as command IDs when the tree item is opening something in the editor. Using these commands ensures that the resulting editor will appear consistent with how other built-in trees open editors.
Context value of the tree item. This can be used to contribute item specific actions in the tree. For example, a tree item is given a context value as folder. When contributing actions to view/item/context using menus extension point, you can specify context value for key viewItem in when expression like viewItem == folder.
const good = URI.file('/coding/c#/project1'); good.scheme === 'file'; good.path === '/coding/c#/project1'; good.fragment === ''; const bad = URI.parse('file://' + '/coding/c#/project1'); bad.scheme === 'file'; bad.path === '/coding/c'; // path is now broken bad.fragment === '/project1';| path: string | A file system or UNC path. |
| Uri | A new Uri instance. |
from(components: {authority: string, fragment: string, path: string, query: string, scheme: string}): Uri
Create an URI from its component parts
See also Uri.toString
| components: {authority: string, fragment: string, path: string, query: string, scheme: string} | The component parts of an Uri. |
| Uri | A new Uri instance. |
joinPath(base: Uri, ...pathSegments: string[]): Uri
Create a new uri which path is the result of joining the path of the base uri with the provided path segments.
- Note 1: joinPath only affects the path component and all other components (scheme, authority, query, and fragment) are left as they are.
- Note 2: The base uri must have a path; an error is thrown otherwise.
The path segments are normalized in the following ways:
- sequences of path separators (/ or \) are replaced with a single separator
- for file-uris on windows, the backslash-character (``) is considered a path-separator
- the ..-segment denotes the parent segment, the . denotes the current segment
- paths have a root which always remains, for instance on windows drive-letters are roots so that is true: joinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'
parse(value: string, strict?: boolean): Uri
Create an URI from a string, e.g. http://www.example.com/some/path, file:///usr/home, or scheme:with/path.
Note that for a while uris without a scheme were accepted. That is not correct as all uris should have a scheme. To avoid breakage of existing code the optional strict-argument has been added. We strongly advise to use it, e.g. Uri.parse('my:uri', true)
See also Uri.toString
| value: string | The string value of an Uri. |
| strict?: boolean | Throw an error when value is empty or when no scheme can be parsed. |
| Uri | A new Uri instance. |
Constructors
new Uri(scheme: string, authority: string, path: string, query: string, fragment: string): Uri
Use the file and parse factory functions to create new Uri objects.
| scheme: string | |
| authority: string | |
| path: string | |
| query: string | |
| fragment: string | |
| Uri |
Properties
Authority is the www.example.com part of http://www.example.com/some/path?query#fragment. The part between the first double slashes and the next slash.
Fragment is the fragment part of http://www.example.com/some/path?query#fragment.
The string representing the corresponding file system path of this Uri.
Will handle UNC paths and normalize windows drive letters to lower-case. Also uses the platform specific path separator.
- Will not validate the path for invalid characters and semantics.
- Will not look at the scheme of this Uri.
- The resulting string shall not be used for display purposes but for disk operations, like readFile et al.
The difference to the path-property is the use of the platform specific path separator and the handling of UNC paths. The sample below outlines the difference:
let file = Uri.parse('before:some/file/path'); let other = file.with({ scheme: 'after' }); assert.ok(other.toString() === 'after:some/file/path');| change: {authority: string, fragment: string, path: string, query: string, scheme: string} | An object that describes a change to this Uri. To unset components use null or the empty string. |
| Uri | A new Uri that reflects the given change. Will return this Uri if the change is not changing anything. |
UriHandler
A uri handler is responsible for handling system-wide uris.
See also window.registerUriHandler.
Methods
handleUri(uri: Uri): ProviderResult<void>
Handle the provided system-wide Uri.
See also window.registerUriHandler.
| uri: Uri | |
| ProviderResult<void> |
ViewBadge
A badge presenting a value for a view
Properties
A label to present in tooltip for the badge.
The value to present in the badge.
ViewColumn
Denotes a location of an editor in the window. Editors can be arranged in a grid and each column represents one editor location in that grid by counting the editors in order of their appearance.
Enumeration Members
A symbolic editor column representing the column to the side of the active one. This value can be used when opening editors, but the resolved viewColumn-value of editors will always be One, Two, Three,... or undefined but never Beside.
A symbolic editor column representing the currently active column. This value can be used when opening editors, but the resolved viewColumn-value of editors will always be One, Two, Three,... or undefined but never Active.
The first editor column.
The second editor column.
The third editor column.
The fourth editor column.
The fifth editor column.
The sixth editor column.
The seventh editor column.
The eighth editor column.
The ninth editor column.
Webview
Displays html content, similarly to an iframe.
Events
onDidReceiveMessage: Event<any>
Fired when the webview content posts a message.
Webview content can post strings or json serializable objects back to an extension. They cannot post Blob, File, ImageData and other DOM specific objects since the extension that receives the message does not run in a browser environment.
Properties
Content security policy source for webview resources.
This is the origin that should be used in a content security policy rule:
<script> const vscode = acquireVsCodeApi(); // acquireVsCodeApi can only be invoked once vscode.postMessage({ message: 'hello!' }); </script>To load a resources from the workspace inside a webview, use the asWebviewUri method and ensure the resource's directory is listed in WebviewOptions.localResourceRoots.
Keep in mind that even though webviews are sandboxed, they still allow running scripts and loading arbitrary content, so extensions must follow all standard web security best practices when working with webviews. This includes properly sanitizing all untrusted input (including content from the workspace) and setting a content security policy.
options: WebviewOptions
Content settings for the webview.
Methods
asWebviewUri(localResource: Uri): Uri
Convert a uri for the local file system to one that can be used inside webviews.
Webviews cannot directly load resources from the workspace or local file system using file: uris. The asWebviewUri function takes a local file: uri and converts it into a uri that can be used inside of a webview to load the same resource:
// Within the webview const vscode = acquireVsCodeApi(); // Get existing state const oldState = vscode.getState() || { value: 0 }; // Update state setState({ value: oldState.value + 1 });A WebviewPanelSerializer extends this persistence across restarts of the editor. When the editor is shutdown, it will save off the state from setState of all webviews that have a serializer. When the webview first becomes visible after the restart, this state is passed to deserializeWebviewPanel. The extension can then restore the old WebviewPanel from this state.
Methods
deserializeWebviewPanel(webviewPanel: WebviewPanel, state: T): Thenable<void>
Restore a webview panel from its serialized state.
Called when a serialized webview first becomes visible.
| webviewPanel: WebviewPanel | Webview panel to restore. The serializer should take ownership of this panel. The serializer must restore the webview's .html and hook up all webview events. |
| state: T | Persisted state from the webview content. |
| Thenable<void> | Thenable indicating that the webview has been fully restored. |
WebviewPortMapping
Defines a port mapping used for localhost inside the webview.
Properties
Destination port. The webviewPort is resolved to this port.
Localhost port to remap inside the webview.
WebviewView
A webview based view.
Events
onDidChangeVisibility: Event<void>
Event fired when the visibility of the view changes.
Actions that trigger a visibility change:
- The view is collapsed or expanded.
- The user switches to a different view group in the sidebar or panel.
Note that hiding a view using the context menu instead disposes of the view and fires onDidDispose.
onDidDispose: Event<void>
Event fired when the view is disposed.
Views are disposed when they are explicitly hidden by a user (this happens when a user right clicks in a view and unchecks the webview view).
Trying to use the view after it has been disposed throws an exception.
Properties
badge?: ViewBadge
The badge to display for this webview view. To remove the badge, set to undefined.
Human-readable string which is rendered less prominently in the title.
View title displayed in the UI.
The view title is initially taken from the extension package.json contribution.
Identifies the type of the webview view, such as 'hexEditor.dataView'.
Tracks if the webview is currently visible.
Views are visible when they are on the screen and expanded.
webview: Webview
The underlying webview for the view.
Methods
show(preserveFocus?: boolean): void
Reveal the view in the UI.
If the view is collapsed, this will expand it.
| preserveFocus?: boolean | When true the view will not take focus. |
| void |
WebviewViewProvider
Provider for creating WebviewView elements.
Methods
resolveWebviewView(webviewView: WebviewView, context: WebviewViewResolveContext<unknown>, token: CancellationToken): void | Thenable<void>
Resolves a webview view.
resolveWebviewView is called when a view first becomes visible. This may happen when the view is first loaded or when the user hides and then shows a view again.
| webviewView: WebviewView | Webview view to restore. The provider should take ownership of this view. The provider must set the webview's .html and hook up all webview events it is interested in. |
| context: WebviewViewResolveContext<unknown> | Additional metadata about the view being resolved. |
| token: CancellationToken | Cancellation token indicating that the view being provided is no longer needed. |
| void | Thenable<void> | Optional thenable indicating that the view has been fully resolved. |
WebviewViewResolveContext<T>
Additional information the webview view being resolved.
Properties
Persisted state from the webview content.
To save resources, the editor normally deallocates webview documents (the iframe content) that are not visible. For example, when the user collapse a view or switches to another top level activity in the sidebar, the WebviewView itself is kept alive but the webview's underlying document is deallocated. It is recreated when the view becomes visible again.
You can prevent this behavior by setting [WebviewOptions.retainContextWhenHidden retainContextWhenHidden](#_WebviewOptions.retainContextWhenHidden retainContextWhenHidden) in the WebviewOptions. However this increases resource usage and should be avoided wherever possible. Instead, you can use persisted state to save off a webview's state so that it can be quickly recreated as needed.
To save off a persisted state, inside the webview call acquireVsCodeApi().setState() with any json serializable object. To restore the state again, call getState(). For example:
defaultValue = 'on'; globalValue = 'relative'; workspaceFolderValue = 'off'; value = 'off';Example 2: Language Values
defaultValue = { a: 1, b: 2 }; globalValue = { b: 3, c: 4 }; value = { a: 1, b: 3, c: 4 };Note: Workspace and Workspace Folder configurations contains launch and tasks settings. Their basename will be part of the section identifier. The following snippets shows how to retrieve all configurations from launch.json:
provideNumber(): number | Thenable<number>Cancellation Tokens
Often operations are started on volatile state which changes before operations can finish. For instance, computing IntelliSense starts and the user continues to type making the result of that operation obsolete.
APIs that are exposed to such behavior will get passed a CancellationToken on which you can check for cancellation (isCancellationRequested) or get notified when cancellation occurs (onCancellationRequested). The cancellation token is usually the last parameter of a function call and optional.
Disposables
The VS Code API uses the dispose pattern for resources that are obtained from VS Code. This applies to event listening, commands, interacting with the UI, and various language contributions.
For instance, the setStatusBarMessage(value: string) function returns a Disposable which upon calling dispose removes the message again.
Events
Events in the VS Code API are exposed as functions which you call with a listener-function to subscribe. Calls to subscribe return a Disposable which removes the event listener upon dispose.
Namespace for authentication.