mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 08:07:49 +00:00
Released 1.x types never change, so the sets and records that will have to grow are opened up before the API is frozen: - Event kinds and action sources are strings; `event`, view `body`, `view-event` and `field-value` get an `other(extension)` case (a kind and JSON data) that carries later cases to older plugins and IDEs. An IDE refuses an event kind it doesn't know, says a view body needs a newer IDE, and leaves out unknown form fields. - Completion items can be snippets, match on `filter-text` and bring `additional-edits` (imports). Code actions can carry `data` instead of edits; the new `resolve-code-action` export computes them when the user picks the action, under the command budget, through the existing resolve path. - Diagnostics name their `source`, carry `tags` (`unnecessary`, `deprecated`) and `related` locations. - The SDK's enums are `#[non_exhaustive]` with `Other` variants; `Diagnostic::new`, `Providers::resolve_code_action`. - README: 1.x calls stay synchronous and pass documents whole; async and incremental sync come later behind the host adapter or a new interface. Official plugins and fixtures rebuilt.
74 lines
1.9 KiB
Plaintext
74 lines
1.9 KiB
Plaintext
package openidea:plugin@1.0.0;
|
|
|
|
/// Shared types. Positions are 0-based lines and UTF-16 code unit columns,
|
|
/// as in the editor and LSP.
|
|
interface types {
|
|
/// Why a host call failed. A capability that is not granted is reported
|
|
/// as `denied`, so the plugin can degrade (0.1 trapped instead).
|
|
variant error {
|
|
/// Not granted; the payload names the capability (`editor.write`).
|
|
denied(string),
|
|
/// The document changed since the version the edit was made for.
|
|
stale,
|
|
not-found(string),
|
|
invalid(string),
|
|
/// Cancelled by the user, or the plugin is being stopped.
|
|
cancelled,
|
|
failed(string),
|
|
}
|
|
|
|
enum log-level {
|
|
trace,
|
|
debug,
|
|
info,
|
|
warn,
|
|
error,
|
|
}
|
|
|
|
enum notification-level {
|
|
info,
|
|
warning,
|
|
error,
|
|
}
|
|
|
|
record position {
|
|
line: u32,
|
|
character: u32,
|
|
}
|
|
|
|
record range {
|
|
start: position,
|
|
end: position,
|
|
}
|
|
|
|
record text-edit {
|
|
range: range,
|
|
text: string,
|
|
}
|
|
|
|
/// A range in a file (absolute path).
|
|
record location {
|
|
path: string,
|
|
range: range,
|
|
}
|
|
|
|
/// A case added after 1.0, carried by the `other` case of a variant that
|
|
/// grows (events, view bodies, view events, form fields): its kind and its
|
|
/// data as JSON. Whoever doesn't know the kind ignores it or shows a
|
|
/// fallback; the SDKs decode the kinds they know.
|
|
record extension {
|
|
kind: string,
|
|
data: string,
|
|
}
|
|
|
|
/// Passed to `lifecycle.activate`.
|
|
record context {
|
|
plugin-id: string,
|
|
plugin-version: string,
|
|
/// Version of this API the host implements, e.g. "1.0".
|
|
api-version: string,
|
|
/// Capabilities granted to the plugin (`editor.write`, `process:git`, …).
|
|
capabilities: list<string>,
|
|
}
|
|
}
|