mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-07 10:16:03 -10:00
Plugin API 1.3 adds an optional semantic-tokens-provider export (world plugin-semantic-tokens). A plugin declares the semantic-tokens kind under [[contributes.providers]] for any language, including ones it does not contribute, and returns single-line tokens with LSP token kinds and modifiers. The host asks it with the other editor providers (50 ms / 500 ms) when the editor requests semantic tokens and joins the result with the language server's: plugin tokens replace the server tokens they overlap, so the colour scheme styles them like any semantic token. Declaring the kind needs engines.openidea ^1.3. API 1.2 shipped with 0.1.38, so wit/ and the SDK's copy, ENGINE_VERSION and both API_VERSION constants move to 1.3 and every shipped component is rebuilt. The SDK gains openidea_plugin::semantic_tokens, and register_plugin! accepts any combination of optional exports (providers, views, indexing, syntax, semantic_tokens) instead of a fixed list of pairs.
74 lines
1.9 KiB
Plaintext
74 lines
1.9 KiB
Plaintext
package openidea:[email protected];
|
|
|
|
/// 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>,
|
|
}
|
|
}
|