mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-07 00:07:29 +00:00
Plugin API (breaking; the plugin system is unreleased): - Remove the runtime `contributions` interface (register-command, register-language, register-theme). Commands, languages and themes are declared in plugin.toml only, so everything a plugin contributes goes through the install preview and consent. The registry drops runtime scope, `contribute` and `dispose_runtime`; inline `definition` in language and theme declarations is gone. - `completion-item.kind` is a string (the 25 LSP kinds; unknown kinds show no icon), like the other open-ended kinds. - `lifecycle.activate` and `commands.run` return `types.error` instead of a string. The host maps it to the matching error kind, and only `failed` counts against the plugin: cancelling, a missing grant or an unknown command does not. The SDK's `Plugin` returns `Result<_, Error>`; plain messages convert to `Error::Failed`. Runtime: - Editor providers of several plugins are called at the same time (`Actor::submit` + `Pending::wait`): the wait is the slowest plugin's, not the sum, so each gets the full edit-path budget. Versioning and tooling: - Components are checked at install and by `openidea-plugin check` for the plugin API they were built for; another major or a newer minor is refused with what to do. - Tests: the SDK's WIT matches the host's, a simulated next-minor host links every shipped component, every host function has an SDK wrapper, released APIs only grow (no snapshot until the first release). - plugins/build.sh builds every checked-in component, records a source fingerprint next to it, and `--check` fails on stale components; CI runs it plus fmt, clippy (host and wasm) and tests for the SDK, the official plugins and the fixtures. - The API evolution rules and the checklist for a new host function are in plugins/README.md; the design notes under docs/ are removed.
21 lines
536 B
TOML
21 lines
536 B
TOML
[package]
|
|
name = "openidea-plugin"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "SDK for OpenIDEA plugins: typed host API, plugin trait, and a mock host for `cargo test`"
|
|
license = "Apache-2.0"
|
|
publish = false
|
|
|
|
# Standalone: plugins depend on it by path or version; not part of the IDE workspace.
|
|
[workspace]
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
wit-bindgen = "0.63"
|
|
|
|
[dev-dependencies]
|
|
# Reads the WIT in tests/wit_coverage.rs (the version wit-bindgen already uses).
|
|
wit-parser = "0.262"
|