Skip to main content

menusModule

MS Code Extension API


MS Code Extension API / core/extensionAPI/modules/menusModule

core/extensionAPI/modules/menusModule

Type Aliases

MenusModule = ReturnType<typeof createMenusModule>

Defined in: core/extensionAPI/modules/menusModule.ts:68

Functions

createMenusModule()

createMenusModule(_extId): object

Defined in: core/extensionAPI/modules/menusModule.ts:9

Parameters

_extId

string

Returns

registerItem

registerItem: (menuPath, item) => object

Register a single dynamic menu item into a named menu path. Returns a disposable to remove the item on deactivate.

Parameters

string

Target path (e.g., 'editor/context', 'sidebar/files/file-tree/actions')

item

MenuItem

Defines the action, icon, submenu (children), ordering, and structural flatness.

Returns

object

dispose

dispose: () => void

Returns

void

Example
const item = mscode.menus.registerItem('editor/title/context', {
id: 'myExt.runFile',
label: 'Run File',
icon: 'play',
order: 0,
onClick: () => console.log("Run executed!")
});
// Later: item.dispose();
registerItems

registerItems: (menuPath, items) => object

Register multiple dynamic menu items or complete blocks (with separators) into a named menu path at once. Returns a batch disposable to clean up all injected items on extension deactivate. *

Parameters

string

Target path (e.g., 'editor/title', 'editor/context')

items

MenuItem[]

Array of MenuItem objects including separators. *

Returns

object

dispose

dispose: () => void

Returns

void

Example
const batch = mscode.menus.registerItems('editor/title', [
{ id: 'ext-feat-1', label: 'Feature One', icon: 'zap', order: 210 },
{ id: 'ext-sep-1', type: 'separator', order: 215 },
{
id: 'ext-feat-2',
label: 'Feature Two',
icon: 'gear',
order: 220 ,
showOnlyWhenSubOptionAvailable: true,
children: [
{ id: 'sub-option-a', label: 'Option A', icon: 'verified-filled', order: 0, onClick: () => commands.executeCommand('extension.myext.a') },
{ id: 'sub-option-b', label: 'Option B', icon: 'verified-filled', order: 1, onClick: () => commands.executeCommand('extension.myext.b') },
],
}
]);