mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
Plugins read problems from a host-owned snapshot that records every Diagnostics event per file and producer, instead of the UI-reported Problems reports, so what a plugin sees no longer depends on window lifetime or the invoking window. Adds the problems-changed workbench event (plugin API 1.8.0, gated at needs_api 8), editor focus events for files of other windows, severity style previews in plugin settings, and lays plugin annotations on the line-end chain before code-vision hints and inline blame. Components and fixtures are rebuilt for API 1.8.0. Co-authored-by: muutot <92625353+muutot@users.noreply.github.com>
70 lines
3.3 KiB
Plaintext
70 lines
3.3 KiB
Plaintext
package openidea:plugin@1.8.0;
|
|
|
|
/// Workbench events, delivered in batches to `event-handler.handle`.
|
|
interface events {
|
|
use types.{error, extension};
|
|
|
|
record action-performed {
|
|
/// Action id (`editor.duplicate-line`).
|
|
action: string,
|
|
title: string,
|
|
/// How the user started it: `keyboard`, `menu`, `toolbar`,
|
|
/// `context-menu`, `search` or `other` (more may be added).
|
|
source: string,
|
|
/// Its keyboard shortcut, when it has one (`Ctrl+D`).
|
|
shortcut: option<string>,
|
|
}
|
|
|
|
variant event {
|
|
file-opened(string),
|
|
file-saved(string),
|
|
editor-focused(option<string>),
|
|
action-performed(action-performed),
|
|
vcs-changed(string),
|
|
scheduled,
|
|
/// A kind added after 1.0 (subscribed to by its name).
|
|
other(extension),
|
|
}
|
|
|
|
/// Delivers `kind` events from now on, for the rest of the session (also
|
|
/// across idle reclaim: an event activates the plugin again). Declare
|
|
/// `activation = ["on-event:<kind>"]` to get them before first use.
|
|
/// API 1.4 also delivers `file-closed` (JSON path string), `settings-changed`
|
|
/// (JSON array of the plugin's changed setting keys), and `input-mode-changed`
|
|
/// (JSON {path, mode, sub}) through `other`. The last needs `events.input`.
|
|
/// API 1.5 also delivers `extensions-changed` (JSON array of the extension
|
|
/// points this plugin declares whose contributions changed) through `other`,
|
|
/// to the declaring plugin only and without a capability.
|
|
/// Kinds: `file-opened`, `file-saved`, `document-changed` (versioned UTF-16
|
|
/// replacements from explicit path subscriptions), `websocket-ready`
|
|
/// (a host-owned connection has messages to drain), `files-changed` (batched disk changes
|
|
/// as `other`, with created/modified/removed path lists in JSON), `editor-focused` (the focused editor
|
|
/// changed), `vcs-changed` (a repository's state changed: commit,
|
|
/// checkout, fetch…), `action-performed` (an IDE action ran) and
|
|
/// `scheduled` (the `on-schedule` period elapsed); later IDEs add more,
|
|
/// and an IDE that doesn't know one fails with `invalid`.
|
|
/// Requires `events` (`events.input` for `action-performed`).
|
|
subscribe: func(kind: string) -> result<_, error>;
|
|
/// Replaces this kind's subscription with project-relative globs (OR).
|
|
/// Empty globs pause delivery; `subscribe` restores unfiltered delivery.
|
|
/// Kinds: file-opened, file-saved, document-changed, files-changed. Requires `events`.
|
|
subscribe-paths: func(kind: string, globs: list<string>) -> result<_, error>;
|
|
unsubscribe: func(kind: string);
|
|
}
|
|
|
|
/// Long-running work with a progress indicator. While a task is open, the
|
|
/// call that began it may run for the background budget (60 s) instead of 5 s,
|
|
/// and each `report` or `is-cancelled` renews that budget: work that keeps
|
|
/// saying it is alive is not cut off, while work that goes quiet is.
|
|
interface tasks {
|
|
resource task {
|
|
/// `done` of `total` units (`none`: indeterminate), with a short status.
|
|
report: func(done: u32, total: option<u32>, message: option<string>);
|
|
/// The user cancelled it: stop soon and return.
|
|
is-cancelled: func() -> bool;
|
|
}
|
|
|
|
/// Starts a task shown in the status bar; dropping it ends it.
|
|
begin: func(title: string, cancellable: bool) -> task;
|
|
}
|