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 {@link commands.registerCommand registerCommand} and {@link commands.registerTextEditorCommand registerTextEditorCommand} functions. Commands can be executed {@link commands.executeCommand manually} or from a UI gesture. Those are:

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

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

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

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

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

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

Methods

executeCommand<T>(command:String, rest: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 {@linkcode Position}, {@linkcode Range}, {@linkcode Uri} and {@linkcode Location}.
  • Note 2: There are no restrictions when executing commands that have been contributed by extensions.

Parameters:

command

Identifier of the command to execute.

rest

Parameters passed to the command function.

Returns:

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:Bool):Thenable<Array<String>>

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

Parameters:

filterInternal

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

Returns:

Thenable that resolves to a list of command ids.

registerCommand(command:String, callback:Function, ?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.

Parameters:

command

A unique identifier for the command.

callback

A command handler function.

thisArg

The this context used when invoking the handler function.

Returns:

Disposable which unregisters this command on disposal.

registerTextEditorCommand(command:String, callback:(TextEditor, TextEditorEdit) ‑> 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 {@link commands.registerCommand 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 {@link TextEditorEdit edit}-builder. Note that the edit-builder is only valid while the callback executes.

@link TextEditor editor} and an {@link TextEditorEdit edit}.

Parameters:

command

A unique identifier for the command.

callback

A command handler function with access to an {

thisArg

The this context used when invoking the handler function.

Returns:

Disposable which unregisters this command on disposal.