Files
IdeaSDK/docs/menus.md
Blomios 31925dc1ce docs(sdk): éclate et étend la documentation SDK par sujet
Remplace le README monolithique par un point d'entrée vers des pages dédiées
(manifest, activation/contexte, menus, commandes/feedback, layouts React,
fenêtres, services, packaging/distribution) pour couvrir #142-#144 et
faciliter la navigation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-04 00:39:30 +02:00

1.5 KiB

Menus

Menus are declared in the manifest and implemented by registering command handlers during activation.

{
  "contributes": {
    "menus": [
      {
        "id": "hello-plugin.menu",
        "label": "Hello Plugin",
        "topLevel": true,
        "order": 100
      }
    ],
    "menuItems": [
      {
        "id": "hello-plugin.open.item",
        "targetMenuId": "hello-plugin.menu",
        "label": "Open Dashboard",
        "command": "hello-plugin.open",
        "order": 10,
        "when": "projectOpen"
      }
    ]
  }
}

Then register the command id:

export function activate(ctx: ActivateContext): void {
  const disposable = ctx.commands?.registerCommand("hello-plugin.open", async () => {
    await ctx.services?.windows.open({ layoutType: "hello-plugin.dashboard" });
  });
  if (disposable) ctx.subscriptions.push(disposable);
}

Rules

  • A command can only be registered if at least one manifest menu item declares that exact command id.
  • Missing command handlers are a no-op when the user clicks the menu item.
  • A handler owns precondition checks and feedback. See Commands And Feedback.
  • Menu item when expressions are evaluated by the host; unsupported or false conditions hide/disable the item according to host policy.

Targets

targetMenuId can refer to a plugin top-level menu id or a host menu id exposed by IdeA. Prefer a plugin top-level menu for plugin-specific workflows and host menus only when the action naturally belongs beside native actions.