Files
openidea/sdk/rust/openidea-plugin/wit/language-features.wit
T
LU XIANGRUIandLU XIANGRUI ff17c3753f feat(plugins): notifications targeted at one project (API 1.5) (#2375)
- Add ui.notify-project: it shows only in that project's window (the most recently focused one if there are several) and works without a calling window
- Button commands run in the window showing the notification; a closed project returns not-found, with nothing shown and no fallback to another window
- Bump the plugin API to 1.5.0 (wit/, SDK copy, ENGINE_VERSION, API_VERSION) and rebuild all components
- Add Project::notify and its mock to the SDK; update plugins/README.md

Co-authored-by: LU XIANGRUI <26499420+wildcatDownstairs@users.noreply.github.com>
2026-11-09 23:20:38 +08:00

115 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package openidea:plugin@1.5.0;
/// Additional language features, called only for declared API 1.4 provider kinds.
/// Editor calls have a 50 ms soft / 500 ms hard budget; formatting has 5 seconds.
interface language-features {
use types.{error, position, range, text-edit, location};
/// A versioned document snapshot. Coordinates are zero-based UTF-16.
record document {
path: string,
language: string,
version: u64,
text: string,
}
/// A parameter label, either literal text or UTF-16 offsets within the signature label.
variant parameter-label { text(string), offsets(tuple<u32, u32>) }
/// Indentation options selected by the editor.
record format-options {
tab-size: u32,
insert-spaces: bool,
}
/// One parameter, with optional Markdown documentation.
record parameter {
label: parameter-label,
documentation: option<string>,
}
/// One callable signature; documentation is Markdown.
record signature {
label: string,
documentation: option<string>,
parameters: list<parameter>,
}
/// Callable signatures and zero-based active signature/parameter indices.
record signature-help-result {
signatures: list<signature>,
active-signature: u32,
active-parameter: u32,
}
/// An occurrence of the symbol. Kind: text, read or write; unknown is text.
record highlight {
range: range,
kind: string,
}
/// An absolute path, project-relative path or HTTP(S) URL to follow on click.
record document-link {
range: range,
target: string,
}
/// An inline action. Command must be this plugin's declared command id.
record code-lens {
range: range,
title: string,
command: string,
argument: option<string>,
}
/// A multi-line fold. Kinds: region, comment or imports; unknown is region.
record fold-range {
start-line: u32,
end-line: u32,
kind: string,
}
/// A color literal. All channels are finite floats in the inclusive range 0–1.
record color-info {
range: range,
red: f32,
green: f32,
blue: f32,
alpha: f32,
}
/// An outline node. Parent indexes this list, precedes the child and contains it.
/// Kinds are LSP-style names (e.g. class, method, enum-member); unknown is neutral.
record document-symbol {
name: string,
detail: string,
kind: string,
range: range,
selection-range: range,
parent: option<u32>,
}
/// A line action for this plugin's own declared command. Icons follow line-marker
/// aliases, registered icon names or declared manifest marker SVG paths.
record gutter-action {
line: u32,
icon: option<string>,
tooltip: string,
command: string,
argument: option<string>,
}
/// Format the whole document or the selected range.
format: func(doc: document, range: option<range>, options: format-options) -> result<list<text-edit>, error>;
/// Signature help when the language server has no signatures.
signature-help: func(doc: document, at: position) -> option<signature-help-result>;
/// Occurrences at the caret, appended to language-server highlights.
document-highlights: func(doc: document, at: position) -> list<highlight>;
/// Navigable ranges, appended to language-server document links.
document-links: func(doc: document) -> list<document-link>;
/// Clicks run only this plugin's declared commands.
code-lenses: func(doc: document) -> list<code-lens>;
/// Nested ranges, innermost to outermost.
selection-ranges: func(doc: document, at: position) -> list<range>;
/// Folds to merge with tree-sitter, for any declared language.
folding: func(doc: document) -> list<fold-range>;
/// Color literals to show in the existing color-preview gutter and picker.
colors: func(doc: document) -> list<color-info>;
/// Replacement strings for the selected color range.
color-presentations: func(doc: document, color: color-info) -> list<string>;
/// Used only when no LSP document symbols are available.
document-symbols: func(doc: document) -> list<document-symbol>;
/// Implementation locations, merged with language-server results.
implementation: func(doc: document, at: position) -> list<location>;
/// Type-declaration locations, merged with language-server results.
type-definition: func(doc: document, at: position) -> list<location>;
/// Clicks run only this plugin's declared commands.
gutter-actions: func(doc: document) -> list<gutter-action>;
}