define

fun <V : PluginValue> define(create: (EditorSession) -> V, configure: PluginSpec<V>.() -> PluginSpec<V> = { this }): ViewPlugin<V>

Define a plugin from a factory function.


fun <V : PluginValue> define(create: (EditorSession) -> V, provide: (ViewPlugin<V>) -> Extension? = null, decorations: (V) -> DecorationSet? = null): ViewPlugin<V>

Define a plugin with direct parameter overloads, avoiding the configure = { copy(...) } pattern.

val myPlugin = ViewPlugin.define(
create = { session -> MyPlugin(session) },
decorations = { plugin -> plugin.decorations }
)

Define a plugin from a spec.