Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace workspace

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

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

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

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

Index

Variables(8)

Const fs

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

Const rootPath

rootPath: string | undefined

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

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

deprecated

Use workspaceFolders instead.

Const workspaceFolders

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.

Const name

name: string | undefined

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

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

Const workspaceFile

workspaceFile: Uri | undefined

The location of the workspace file, for example:

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

or

untitled:1555503116870

for a workspace that is untitled and not yet saved.

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

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

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

Example:

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

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

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

Const textDocuments

textDocuments: readonly TextDocument[]

All text documents currently known to the editor.

Const notebookDocuments

notebookDocuments: readonly NotebookDocument[]

All notebook documents currently known to the editor.

Const isTrusted

isTrusted: boolean

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

Functions(33)

Const onDidChangeWorkspaceFolders

  • 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.

    Parameters

    Returns Disposable

getWorkspaceFolder

  • Returns the workspace folder that contains a given uri.

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

    Parameters

    • uri: Uri

      An uri.

    Returns WorkspaceFolder | undefined

    A workspace folder or undefined

asRelativePath

  • 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.

    Parameters

    • pathOrUri: string | Uri

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

    • Optional 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.

    Returns string

    A path relative to the root or the input.

updateWorkspaceFolders

  • updateWorkspaceFolders(start: number, deleteCount: number | undefined | null, ...workspaceFoldersToAdd: { uri: Uri; name?: string }[]): boolean
  • This method replaces deleteCount workspace folders starting at index start by an optional set of workspaceFoldersToAdd on the vscode.workspace.workspaceFolders array. This "splice" behavior can be used to add, remove and change workspace folders in a single operation.

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

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

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

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

    Example: removing the first workspace folder

    workspace.updateWorkspaceFolders(0, 1);
    

    Example: replacing an existing workspace folder with a new one

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

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

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

    Parameters

    • start: number

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

    • deleteCount: number | undefined | null

      the optional number of workspace folders to remove.

    • Rest ...workspaceFoldersToAdd: { uri: Uri; name?: string }[]

      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.

    Returns 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).

createFileSystemWatcher

  • 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 pattern is complex (e.g. contains ** or path segments), the path 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 requests for recursive file watchers for a base path that is inside the opened workspace are ignored given all opened workspace folders are watched for file changes recursively by default. Non-recursive file watchers however are always supported, even inside the opened workspace because they allow to bypass the configured settings for excludes (files.watcherExclude). If you need to watch in a location that is typically excluded (for example node_modules or .git folder), then you can use a non-recursive watcher in the workspace for this purpose.

    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.

    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 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 node_modules 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 file changes for the path to be watched may not be delivered when the path itself changes. For example, when watching a path /Users/somename/Desktop and the path itself is being deleted, the watcher may not report an event and may not work anymore from that moment on. The underlying behaviour depends on the path that is provided for watching:

    • if the path is within any of the workspace folders, deletions are tracked and reported unless excluded via files.watcherExclude setting
    • if the path is equal to any of the workspace folders, deletions are not tracked
    • if the path is outside of any of the workspace folders, deletions are not tracked

    If you are interested in being notified when the watched path itself is being deleted, you have to watch it's parent folder. Make sure to use a simple pattern (such as putting the name of the folder) to not accidentally watch all sibling folders recursively.

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

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

    Examples

    The basic anatomy of a file watcher is as follows:

    const watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(<folder>, <pattern>));
    
    watcher.onDidChange(uri => { ... }); // listen to files being changed
    watcher.onDidCreate(uri => { ... }); // listen to files/folders being created
    watcher.onDidDelete(uri => { ... }); // listen to files/folders getting deleted
    
    watcher.dispose(); // dispose after usage
    

    Workspace file watching

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

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

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

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

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

    Out of workspace file watching

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

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

    And use a complex glob pattern to watch recursively:

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

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

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

    Parameters

    • globPattern: GlobPattern

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

    • Optional ignoreCreateEvents: boolean

      Ignore when files have been created.

    • Optional ignoreChangeEvents: boolean

      Ignore when files have been changed.

    • Optional ignoreDeleteEvents: boolean

      Ignore when files have been deleted.

    Returns FileSystemWatcher

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

findFiles

  • Find files across all workspace folders in the workspace.

    example

    findFiles('*​/.js', '​/node_modules/', 10)

    Parameters

    • include: GlobPattern

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

    • Optional exclude: GlobPattern | null

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

    • Optional maxResults: number

      An upper-bound for the result.

    • Optional token: CancellationToken

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

    Returns Thenable<Uri[]>

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

saveAll

  • saveAll(includeUntitled?: boolean): Thenable<boolean>
  • Save all dirty files.

    Parameters

    • Optional includeUntitled: boolean

      Also save files that have been created during this session.

    Returns Thenable<boolean>

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

applyEdit

  • 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.

    Parameters

    Returns Thenable<boolean>

    A thenable that resolves when the edit could be applied.

openTextDocument

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

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

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

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

    Parameters

    • uri: Uri

      Identifies the resource to open.

    Returns Thenable<TextDocument>

    A promise that resolves to a document.

  • A short-hand for openTextDocument(Uri.file(fileName)).

    see

    workspace.openTextDocument

    Parameters

    • fileName: string

      A name of a file on disk.

    Returns Thenable<TextDocument>

    A promise that resolves to a document.

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

    Parameters

    • Optional options: { language?: string; content?: string }

      Options to control how the document will be created.

      • Optional language?: string
      • Optional content?: string

    Returns Thenable<TextDocument>

    A promise that resolves to a document.

registerTextDocumentContentProvider

  • Register a text document content provider.

    Only one provider can be registered per scheme.

    Parameters

    Returns Disposable

    A Disposable that unregisters this provider when being disposed.

Const onDidOpenTextDocument

Const onDidCloseTextDocument

Const onDidChangeTextDocument

Const onWillSaveTextDocument

  • 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.

    Parameters

    Returns Disposable

Const onDidSaveTextDocument

openNotebookDocument

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

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

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

    Parameters

    • uri: Uri

      The resource to open.

    Returns Thenable<NotebookDocument>

    A promise that resolves to a notebook

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

    see

    workspace.openNotebookDocument

    Parameters

    • notebookType: string

      The notebook type that should be used.

    • Optional content: NotebookData

      The initial contents of the notebook.

    Returns Thenable<NotebookDocument>

    A promise that resolves to a notebook.

Const onDidChangeNotebookDocument

Const onWillSaveNotebookDocument

  • 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.

    Parameters

    Returns Disposable

Const onDidSaveNotebookDocument

registerNotebookSerializer

  • Register a notebook serializer.

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

    Parameters

    Returns Disposable

    A Disposable that unregisters this serializer when being disposed.

Const onDidOpenNotebookDocument

Const onDidCloseNotebookDocument

  • 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.

    Parameters

    Returns Disposable

Const onWillCreateFiles

  • 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.

    Parameters

    Returns Disposable

Const onDidCreateFiles

Const onWillDeleteFiles

Const onDidDeleteFiles

  • 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.

    Parameters

    Returns Disposable

Const onWillRenameFiles

Const onDidRenameFiles

  • 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.

    Parameters

    Returns Disposable

getConfiguration

  • Get a workspace configuration object.

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

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

    Parameters

    • Optional section: string

      A dot-separated identifier.

    • Optional scope: ConfigurationScope | null

      A scope for which the configuration is asked for.

    Returns WorkspaceConfiguration

    The full configuration or a subset.

Const onDidChangeConfiguration

registerTaskProvider

  • Register a task provider.

    deprecated

    Use the corresponding function on the tasks namespace instead

    Parameters

    • type: string

      The task kind type this provider is registered for.

    • provider: TaskProvider

      A task provider.

    Returns Disposable

    A Disposable that unregisters this provider when being disposed.

registerFileSystemProvider

  • registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options?: { isCaseSensitive?: boolean; isReadonly?: boolean }): Disposable
  • Register a filesystem provider for a given scheme, e.g. ftp.

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

    Parameters

    • scheme: string

      The uri-scheme the provider registers for.

    • provider: FileSystemProvider

      The filesystem provider.

    • Optional options: { isCaseSensitive?: boolean; isReadonly?: boolean }

      Immutable metadata about the provider.

      • Optional Readonly isCaseSensitive?: boolean
      • Optional Readonly isReadonly?: boolean

    Returns Disposable

    A Disposable that unregisters this provider when being disposed.

Const onDidGrantWorkspaceTrust

  • onDidGrantWorkspaceTrust(listener: (e: void) => any, thisArgs?: any, disposables?: Disposable[]): Disposable
  • Event that fires when the current workspace has been trusted.

    Parameters

    • listener: (e: void) => any
        • (e: void): any
        • Parameters

          • e: void

          Returns any

    • Optional thisArgs: any
    • Optional disposables: Disposable[]

    Returns Disposable

Generated by TypeDoc. Maintained by 洛竹