Files
openidea/wit/types.wit
T
l0ng-ai a8036ce6fa feat(plugins): open two texts in the diff viewer (API 1.7) (#3055)
Plugins could show their own content in an editor tab (open-content-tab) but
could open the diff viewer only as the reply to one of that tab's actions. A
review plugin (a merge request's files, say) had no way to show a file's
before and after.

views.open-diff opens two texts in the invoking window's diff viewer, with
optional labels and title and a file name that picks the syntax highlighting;
web views send { op: "open-diff", ... }. The SDK wraps it as host::open_diff
with a mock. The plugin API moves to 1.7.0 (1.6.0 is released) and the checked-in
components are rebuilt.
2026-11-13 12:02:36 +08:00

74 lines
1.9 KiB
Plaintext

package openidea:plugin@1.7.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>,
}
}