0% found this document useful (0 votes)
5 views20 pages

VS Code API Overview for Extensions

The document provides an overview of the Visual Studio Code (VS Code) Extension API, detailing various namespaces and classes available for extension authors. It includes information on authentication, chat functionality, commands, debugging, environment variables, and localization, among others. Each section outlines relevant functions and events that developers can utilize to enhance their extensions within VS Code.

Uploaded by

huyvn.502
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views20 pages

VS Code API Overview for Extensions

The document provides an overview of the Visual Studio Code (VS Code) Extension API, detailing various namespaces and classes available for extension authors. It includes information on authentication, chat functionality, commands, debugging, environment variables, and localization, among others. Each section outlines relevant functions and events that developers can utilize to enhance their extensions within VS Code.

Uploaded by

huyvn.502
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

Version 1.108 (/updates) is now available! Read about the new features and fixes from December. ×
TOPICS VS Code API

VS Code API
VS Code API is a set of JavaScript APIs that you can invoke in your Visual Studio Code extension. This page
lists all VS Code APIs available to extension authors.
API namespaces and classes
This listing is compiled from the [Link] ([Link]
dts/[Link]) file from the VS Code repository.
authentication
Namespace for authentication.
Events
onDidChangeSessions: Event<AuthenticationSessionsChangeEvent>

Functions
getAccounts(providerId: string): Thenable<readonly
AuthenticationSessionAccountInformation[]>

getSession(providerId: string, scopeListOrRequest: readonly string[] |


AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions &
{createIfNone: true | AuthenticationGetSessionPresentationOptions}):
Thenable<AuthenticationSession>

getSession(providerId: string, scopeListOrRequest: readonly string[] |


AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions &
{forceNewSession: true | AuthenticationGetSessionPresentationOptions}):
Thenable<AuthenticationSession>

getSession(providerId: string, scopeListOrRequest: readonly string[] |


AuthenticationWwwAuthenticateRequest, options?: AuthenticationGetSessionOptions):
[Link] 1/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

Thenable<AuthenticationSession | undefined>

registerAuthenticationProvider(id: string, label: string, provider: AuthenticationProvider,


options?: AuthenticationProviderOptions): Disposable

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

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 [Link] to make a command show in the command
palette ([Link]
keybinding - Use the keybindings -section in [Link] to enable keybindings
([Link] 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 [Link] .
JavaScript 

[Link]('[Link]', () => {
[Link]('Hello World!');
});

Second, bind the command identifier to a title under which it will show in the palette ( [Link] ).
JSON 

[Link] 2/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

{
"contributes": {
"commands": [
{
"command": "[Link]",
"title": "Hello World"
}
]
}
}

Functions
executeCommand<T>(command: string, ...rest: any[]): Thenable<T>

getCommands(filterInternal?: boolean): Thenable<string[]>

registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable

registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit:


TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable

comments
Functions
createCommentController(id: string, label: string): CommentController

debug
Namespace for debug functionality.
Variables
activeDebugConsole: DebugConsole

activeDebugSession: DebugSession | undefined

activeStackItem: DebugThread | DebugStackFrame | undefined

breakpoints: readonly Breakpoint[]


[Link] 3/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API
Events
onDidChangeActiveDebugSession: Event<DebugSession | undefined>

onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>

onDidChangeBreakpoints: Event<BreakpointsChangeEvent>

onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>

onDidStartDebugSession: Event<DebugSession>

onDidTerminateDebugSession: Event<DebugSession>

Functions
addBreakpoints(breakpoints: readonly Breakpoint[]): void

asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri

registerDebugAdapterDescriptorFactory(debugType: string, factory:


DebugAdapterDescriptorFactory): Disposable

registerDebugAdapterTrackerFactory(debugType: string, factory:


DebugAdapterTrackerFactory): Disposable

registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider,


triggerKind?: DebugConfigurationProviderTriggerKind): Disposable

removeBreakpoints(breakpoints: readonly Breakpoint[]): void

startDebugging(folder: WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration,


parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>

stopDebugging(session?: DebugSession): Thenable<void>

[Link] 4/230
env
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

Namespace describing the environment the editor runs in.


Variables
appHost: string

appName: string

appRoot: string

clipboard: Clipboard

isNewAppInstall: boolean

isTelemetryEnabled: boolean

language: string

logLevel: LogLevel

machineId: string

remoteName: string | undefined

sessionId: string

shell: string

uiKind: UIKind

uriScheme: string

Events

[Link] 5/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

onDidChangeLogLevel: Event<LogLevel>

onDidChangeShell: Event<string>

onDidChangeTelemetryEnabled: Event<boolean>

Functions
asExternalUri(target: Uri): Thenable<Uri>

createTelemetryLogger(sender: TelemetrySender, options?: TelemetryLoggerOptions):


TelemetryLogger

openExternal(target: Uri): Thenable<boolean>

extensions
Namespace for dealing with installed extensions. Extensions are represented by an Extension-interface
which enables reflection on them.
Extension writers can provide APIs to other extensions by returning their API public surface from the
activate -call.

JavaScript 

export function activate(context: [Link]) {


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


[Link] , and use the getExtension-function and the exports-property, like below:

JavaScript 

[Link] 6/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

let mathExt = [Link]('[Link]');


let importedApi = [Link];

[Link]([Link](42, 1));

Variables
all: readonly Extension<any>[]

Events
onDidChange: Event<void>

Functions
getExtension<T>(extensionId: string): Extension<T> | undefined

l10n
Namespace for localization-related functionality in the extension API. To use this properly, you must have
l10n defined in your extension manifest and have bundle.l10n..json files. For more information on how to
generate bundle.l10n..json files, check out the vscode-l10n repo ([Link]
l10n).
Note: Built-in extensions (for example, Git, TypeScript Language Features, GitHub Authentication) are
excluded from the l10n property requirement. In other words, they do not need to specify a l10n in the
extension manifest because their translated strings come from Language Packs.
Variables
bundle: | undefined

uri: Uri | undefined

Functions
t(message: string, ...args: Array<string | number | boolean>): string

t(message: string, args: Record<string, string | number | boolean>): string

t(options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>,


comment: string | string[], message: string}): string
[Link] 7/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

languages
Namespace for participating in language-specific editor features
([Link] like IntelliSense, code actions, diagnostics etc.
Many programming languages exist and there is huge variety in syntaxes, semantics, and paradigms.
Despite that, features like automatic word-completion, code navigation, or code checking have become
popular across different tools for different programming languages.
The editor provides an API that makes it simple to provide such common features by having all UI and
actions already in place and by allowing you to participate by providing data only. For instance, to
contribute a hover all you have to do is provide a function that can be called with a TextDocument and a
Position returning hover info. The rest, like tracking the mouse, positioning the hover, keeping the hover
stable etc. is taken care of by the editor.
JavaScript 

[Link]('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>

Functions
createDiagnosticCollection(name?: string): DiagnosticCollection

createLanguageStatusItem(id: string, selector: DocumentSelector): LanguageStatusItem

getDiagnostics(resource: Uri): Diagnostic[]


[Link] 8/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

getDiagnostics(): Array<[Uri, Diagnostic[]]>

getLanguages(): Thenable<string[]>

match(selector: DocumentSelector, document: TextDocument): number

registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyProvider):


Disposable

registerCodeActionsProvider(selector: DocumentSelector, provider:


CodeActionProvider<CodeAction>, metadata?: CodeActionProviderMetadata): Disposable

registerCodeLensProvider(selector: DocumentSelector, provider:


CodeLensProvider<CodeLens>): Disposable

registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider):


Disposable

registerCompletionItemProvider(selector: DocumentSelector, provider:


CompletionItemProvider<CompletionItem>, ...triggerCharacters: string[]): Disposable

registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider):


Disposable

registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable

registerDocumentDropEditProvider(selector: DocumentSelector, provider:


DocumentDropEditProvider<DocumentDropEdit>, metadata?:
DocumentDropEditProviderMetadata): Disposable

registerDocumentFormattingEditProvider(selector: DocumentSelector, provider:


DocumentFormattingEditProvider): Disposable

[Link] 9/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

registerDocumentHighlightProvider(selector: DocumentSelector, provider:


DocumentHighlightProvider): Disposable

registerDocumentLinkProvider(selector: DocumentSelector, provider:


DocumentLinkProvider<DocumentLink>): Disposable

registerDocumentPasteEditProvider(selector: DocumentSelector, provider:


DocumentPasteEditProvider<DocumentPasteEdit>, metadata:
DocumentPasteProviderMetadata): Disposable

registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider:


DocumentRangeFormattingEditProvider): Disposable

registerDocumentRangeSemanticTokensProvider(selector: DocumentSelector, provider:


DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable

registerDocumentSemanticTokensProvider(selector: DocumentSelector, provider:


DocumentSemanticTokensProvider, legend: SemanticTokensLegend): Disposable

registerDocumentSymbolProvider(selector: DocumentSelector, provider:


DocumentSymbolProvider, metaData?: DocumentSymbolProviderMetadata): Disposable

registerEvaluatableExpressionProvider(selector: DocumentSelector, provider:


EvaluatableExpressionProvider): Disposable

registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider):


Disposable

registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable

registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider):


Disposable

registerInlayHintsProvider(selector: DocumentSelector, provider:


InlayHintsProvider<InlayHint>): Disposable

[Link] 10/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

registerInlineCompletionItemProvider(selector: DocumentSelector, provider:


InlineCompletionItemProvider): Disposable

registerInlineValuesProvider(selector: DocumentSelector, provider: InlineValuesProvider):


Disposable

registerLinkedEditingRangeProvider(selector: DocumentSelector, provider:


LinkedEditingRangeProvider): Disposable

registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider:


OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]):
Disposable

registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider):


Disposable

registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable

registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider):


Disposable

registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider,


...triggerCharacters: string[]): Disposable

registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider,


metadata: SignatureHelpProviderMetadata): Disposable

registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider):


Disposable

registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider):


Disposable

registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>):
Disposable

[Link] 11/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable

setTextDocumentLanguage(document: TextDocument, languageId: string):


Thenable<TextDocument>

lm
Namespace for language model related functionality.
Variables
tools: readonly LanguageModelToolInformation[]

Events
onDidChangeChatModels: Event<void>

Functions
invokeTool(name: string, options: LanguageModelToolInvocationOptions<object>, token?:
CancellationToken): Thenable<LanguageModelToolResult>

registerLanguageModelChatProvider(vendor: string, provider:


LanguageModelChatProvider<LanguageModelChatInformation>): Disposable

registerMcpServerDefinitionProvider(id: string, provider:


McpServerDefinitionProvider<McpServerDefinition>): Disposable

registerTool<T>(name: string, tool: LanguageModelTool<T>): Disposable

selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>

notebooks
Namespace for notebooks.
The notebooks functionality is composed of three loosely coupled components:
1 NotebookSerializer enable the editor to open, show, and save notebooks
2 NotebookController own the execution of notebooks, e.g they create output from code cells.
[Link] 12/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

3 NotebookRenderer present notebook output in the editor. They run in a separate context.
Functions
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells:
NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void |
Thenable<void>): NotebookController

createRendererMessaging(rendererId: string): NotebookRendererMessaging

registerNotebookCellStatusBarItemProvider(notebookType: string, provider:


NotebookCellStatusBarItemProvider): Disposable

scm
Namespace for source control management.
Variables
inputBox: SourceControlInputBox

Functions
createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl

tasks
Namespace for tasks functionality.
Variables
taskExecutions: readonly TaskExecution[]

Events
onDidEndTask: Event<TaskEndEvent>

onDidEndTaskProcess: Event<TaskProcessEndEvent>

onDidStartTask: Event<TaskStartEvent>

[Link] 13/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

onDidStartTaskProcess: Event<TaskProcessStartEvent>

Functions
executeTask(task: Task): Thenable<TaskExecution>

fetchTasks(filter?: TaskFilter): Thenable<Task[]>

registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable

tests
Namespace for testing functionality. Tests are published by registering TestController instances, then
adding TestItems. Controllers may also describe how to run tests by creating one or more TestRunProfile
instances.
Functions
createTestController(id: string, label: string): TestController

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

activeNotebookEditor: NotebookEditor | undefined

activeTerminal: Terminal | undefined

activeTextEditor: TextEditor | undefined

state: WindowState

tabGroups: TabGroups
[Link] 14/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

terminals: readonly Terminal[]

visibleNotebookEditors: readonly NotebookEditor[]

visibleTextEditors: readonly TextEditor[]

Events
onDidChangeActiveColorTheme: Event<ColorTheme>

onDidChangeActiveNotebookEditor: Event<NotebookEditor | undefined>

onDidChangeActiveTerminal: Event<Terminal | undefined>

onDidChangeActiveTextEditor: Event<TextEditor | undefined>

onDidChangeNotebookEditorSelection: Event<NotebookEditorSelectionChangeEvent>

onDidChangeNotebookEditorVisibleRanges: Event<NotebookEditorVisibleRangesChangeEvent>

onDidChangeTerminalShellIntegration: Event<TerminalShellIntegrationChangeEvent>

onDidChangeTerminalState: Event<Terminal>

onDidChangeTextEditorOptions: Event<TextEditorOptionsChangeEvent>

onDidChangeTextEditorSelection: Event<TextEditorSelectionChangeEvent>

onDidChangeTextEditorViewColumn: Event<TextEditorViewColumnChangeEvent>

onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>

onDidChangeVisibleNotebookEditors: Event<readonly NotebookEditor[]>

[Link] 15/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

onDidChangeVisibleTextEditors: Event<readonly TextEditor[]>

onDidChangeWindowState: Event<WindowState>

onDidCloseTerminal: Event<Terminal>

onDidEndTerminalShellExecution: Event<TerminalShellExecutionEndEvent>

onDidOpenTerminal: Event<Terminal>

onDidStartTerminalShellExecution: Event<TerminalShellExecutionStartEvent>

Functions
createInputBox(): InputBox

createOutputChannel(name: string, languageId?: string): OutputChannel

createOutputChannel(name: string, options: {log: true}): LogOutputChannel

createQuickPick<T extends QuickPickItem>(): QuickPick<T>

createStatusBarItem(id: string, alignment?: StatusBarAlignment, priority?: number):


StatusBarItem

createStatusBarItem(alignment?: StatusBarAlignment, priority?: number): StatusBarItem

createTerminal(name?: string, shellPath?: string, shellArgs?: string | readonly string[]): Terminal

createTerminal(options: TerminalOptions): Terminal

createTerminal(options: ExtensionTerminalOptions): Terminal

createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType


[Link] 16/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T>

createWebviewPanel(viewType: string, title: string, showOptions: ViewColumn | {preserveFocus:


boolean, viewColumn: ViewColumn}, options?: WebviewPanelOptions & WebviewOptions):
WebviewPanel

registerCustomEditorProvider(viewType: string, provider: CustomTextEditorProvider |


CustomReadonlyEditorProvider<CustomDocument> |
CustomEditorProvider<CustomDocument>, options?: {supportsMultipleEditorsPerDocument:
boolean, webviewOptions: WebviewPanelOptions}): Disposable

registerFileDecorationProvider(provider: FileDecorationProvider): Disposable

registerTerminalLinkProvider(provider: TerminalLinkProvider<TerminalLink>): Disposable

registerTerminalProfileProvider(id: string, provider: TerminalProfileProvider): Disposable

registerTreeDataProvider<T>(viewId: string, treeDataProvider: TreeDataProvider<T>):


Disposable

registerUriHandler(handler: UriHandler): Disposable

registerWebviewPanelSerializer(viewType: string, serializer:


WebviewPanelSerializer<unknown>): Disposable

registerWebviewViewProvider(viewId: string, provider: WebviewViewProvider, options?:


{webviewOptions: {retainContextWhenHidden: boolean}}): Disposable

setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable

setStatusBarMessage(text: string, hideWhenDone: Thenable<any>): Disposable

setStatusBarMessage(text: string): Disposable


[Link] 17/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

showErrorMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>

showErrorMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]):


Thenable<T | undefined>

showErrorMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T |


undefined>

showErrorMessage<T extends MessageItem>(message: string, options: MessageOptions,


...items: T[]): Thenable<T | undefined>

showInformationMessage<T extends string>(message: string, ...items: T[]): Thenable<T |


undefined>

showInformationMessage<T extends string>(message: string, options: MessageOptions,


...items: T[]): Thenable<T | undefined>

showInformationMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T


| undefined>

showInformationMessage<T extends MessageItem>(message: string, options: MessageOptions,


...items: T[]): Thenable<T | undefined>

showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable<string |


undefined>

showNotebookDocument(document: NotebookDocument, options?:


NotebookDocumentShowOptions): Thenable<NotebookEditor>

showOpenDialog(options?: OpenDialogOptions): Thenable<Uri[] | undefined>

showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options:


QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<string[] |
undefined>

[Link] 18/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options?:


QuickPickOptions, token?: CancellationToken): Thenable<string | undefined>

showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>,


options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<T[] |
undefined>

showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>,


options?: QuickPickOptions, token?: CancellationToken): Thenable<T | undefined>

showSaveDialog(options?: SaveDialogOptions): Thenable<Uri | undefined>

showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?:


boolean): Thenable<TextEditor>

showTextDocument(document: TextDocument, options?: TextDocumentShowOptions):


Thenable<TextEditor>

showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable<TextEditor>

showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T |


undefined>

showWarningMessage<T extends string>(message: string, options: MessageOptions, ...items:


T[]): Thenable<T | undefined>

showWarningMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T |


undefined>

showWarningMessage<T extends MessageItem>(message: string, options: MessageOptions,


...items: T[]): Thenable<T | undefined>

showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions):
Thenable<WorkspaceFolder | undefined>

[Link] 19/230
1/21/26, 2:23 PM VS Code API | Visual Studio Code Extension API

withProgress<R>(options: ProgressOptions, task: (progress: Progress<{increment: number,


message: string}>, token: CancellationToken) => Thenable<R>): Thenable<R>

withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>

workspace
Namespace for dealing with the current workspace. A workspace is the collection of one or more folders
that are opened in an editor window (instance).
It is also possible to open an editor without a workspace. For example, when you open a new editor window
by selecting a file from your platform's File menu, you will not be inside a workspace. In this mode, some of
the editor's capabilities are reduced but you can still open text files and edit them.
Refer to [Link]
([Link] for more information on the concept of
workspaces.
The workspace offers support for listening to fs events and for finding files. Both perform well and run
outside the editor-process so that they should be always used instead of nodejs-equivalents.
Variables
fs: FileSystem

isTrusted: boolean

name: string | undefined

notebookDocuments: readonly NotebookDocument[]

rootPath: string | undefined

textDocuments: readonly TextDocument[]

workspaceFile: Uri | undefined

workspaceFolders: readonly WorkspaceFolder[] | undefined

Events
[Link] 20/230

You might also like