Skip to main content
An extension point is a typed list the editor reads. A plugin adds a value with context.contribute(POINT, value) and keeps the returned disposable in context.subscriptions.
Several points can also be filled from the manifest, without code: widgets, menus, keybindings, keymap presets, settings, themes, tours and document editors.

Workbench

From @nanoforge-dev/editor-sdk/ui.

Files

Code

Game and Scene screens

Project

From @nanoforge-dev/editor-sdk. PROJECT_CHECKS: a check of the open project, for the Project screen’s Adapt to the editor report (see Bring an existing project). run(project) resolves with suggestions: an id (stable, so a dismissed one stays dismissed), a title, a detail (what the editor can’t do, why the change helps) and either a fix or an action. A fix computes its change without writing anything: recordChanges runs workspace operations on the files kept in memory, and the editor shows the result as a diff before applying it as one undo step.
Checks run when a project opens, when a check is contributed, and after files change. Run the expensive parts in the code worker (an analyzer), never on the page.

Points of other plugins

A plugin can define its own points with defineExtensionPoint<T>(id), and others contribute to them by declaring the same id. The ECS plugin has three: Declare @nanoforge/ecs in your manifest’s dependencies to contribute to them.

Reading a point