Skip to content

CommandHandler

Base class for command handlers.

Unlike the Obsidian Command interface, handlers are never mutated by Obsidian. The buildCommand method produces a plain Command object for registration.

Import:

import { CommandHandler } from 'obsidian-dev-utils/obsidian/command-handlers/command-handler';

Signature:

export class CommandHandler

Constructor

new CommandHandler(params: CommandHandlerConstructorParams)

Creates a new command handler.

Properties

PropertyTypeDescription
iconIconNameThe icon for the command.
idstringThe ID of the command.
namestringThe display name of the command.

Methods

MethodReturnsDescription
buildCommand()CommandBuilds a plain Obsidian Command object for registration.
onRegistered(context)Promise<void>Called after the command has been registered with Obsidian. Subclasses use the provided context to register menu event handlers.

Throws when the same instance is registered twice. A handler stores per-registration state — the plugin name here, the active-file provider and the submenu override in AbstractFileCommandHandler, plus whatever a subclass records — and the menu closures registered here read that state lazily, at menu-render time. So a second registration silently rewrites what the first registration's closures will see. CommandHandlerComponent registers a handler set once per menu surface, which is why CommandHandlerFactory must build FRESH instances on every call; this guard turns a factory that hands out shared instances into a loud failure instead of a wrong context menu.

Links to this page: