mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
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.
51 lines
1.6 KiB
Plaintext
51 lines
1.6 KiB
Plaintext
package openidea:plugin@1.7.0;
|
|
|
|
/// What the pane beside the Services tree shows for a plugin's node.
|
|
interface detail-types {
|
|
/// A switch above a log; when on, `args` are appended and the program
|
|
/// starts again.
|
|
record log-toggle {
|
|
id: string,
|
|
label: string,
|
|
args: list<string>,
|
|
}
|
|
|
|
/// A program the IDE runs, its output followed in a log (ANSI stripped,
|
|
/// the last 5000 lines) until it exits or the pane closes. Needs the
|
|
/// plugin's `process:<program>` grant; runs in the project root.
|
|
record process-log {
|
|
program: string,
|
|
args: list<string>,
|
|
toggles: list<log-toggle>,
|
|
}
|
|
|
|
/// The body of a tab.
|
|
variant pane {
|
|
/// A centred message: an empty state or why there is nothing to show.
|
|
message(string),
|
|
/// Read-only text the user can select and copy, at most 1 MiB.
|
|
text(string),
|
|
log(process-log),
|
|
}
|
|
|
|
/// A tab of a node's pane; the IDE switches tabs without calling the plugin.
|
|
record tab {
|
|
id: string,
|
|
label: string,
|
|
body: pane,
|
|
}
|
|
}
|
|
|
|
/// The detail pane of the nodes of a plugin's `location = "services"` views.
|
|
/// The nodes themselves, the toolbar and their events come from
|
|
/// `view-provider` (`render` / `handle` of the view).
|
|
interface detail-provider {
|
|
use types.{error};
|
|
use invocation.{invocation};
|
|
use detail-types.{tab};
|
|
|
|
/// The tabs of node `key` of view `view` (at most 8), rendered when the
|
|
/// node is selected and again after `views.refresh(view)`.
|
|
detail: func(view: string, key: string, ctx: borrow<invocation>) -> result<list<tab>, error>;
|
|
}
|