mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 16:08:05 +00:00
The snapshot of a released API was a manual step, and v0.1.37 shipped API 1.1.0 without one, so nothing checked the APIs added in 1.1. Each version also added a full copy of wit/. - tests/api/released/ holds the latest released WIT (now 1.1.0) and replaces the per-version folders: each snapshot passed the check against the one before, so the latest covers every release. - api_frozen.rs: under the released version wit/ must match the snapshot exactly; additions need a version bump. Before, a function added to a released version passed, and components built from it didn't link in that release's IDE. - release.yml: create-release fails when the wit/ version differs from the snapshot's, naming the folder to copy wit/ into.
43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
package openidea:plugin@1.1.0;
|
|
|
|
/// Writes to the IDE log, tagged with the plugin id.
|
|
interface log {
|
|
use types.{log-level};
|
|
|
|
log: func(level: log-level, message: string);
|
|
}
|
|
|
|
interface ui {
|
|
use types.{error, notification-level};
|
|
|
|
record status-item {
|
|
text: string,
|
|
tooltip: option<string>,
|
|
/// One of the plugin's commands, run when the item is clicked.
|
|
command: option<string>,
|
|
}
|
|
|
|
/// Shows a notification balloon in the window the current command or
|
|
/// event came from (every window when there is none).
|
|
show-notification: func(level: notification-level, title: string, body: string);
|
|
/// Shows or updates the plugin's status bar item `id` in every window.
|
|
set-status-item: func(id: string, item: status-item);
|
|
remove-status-item: func(id: string);
|
|
/// Copies `text` to the system clipboard. Requires `clipboard`.
|
|
copy-to-clipboard: func(text: string) -> result<_, error>;
|
|
/// Opens an `http://` or `https://` URL in the user's default browser.
|
|
open-url: func(url: string) -> result<_, error>;
|
|
}
|
|
|
|
/// Persistent key-value storage of the plugin (survives restarts and idle
|
|
/// reclaim; instance memory does not). Requires `storage`. At most 1 MiB.
|
|
interface storage {
|
|
use types.{error};
|
|
|
|
get: func(key: string) -> result<option<string>, error>;
|
|
set: func(key: string, value: string) -> result<_, error>;
|
|
delete: func(key: string) -> result<_, error>;
|
|
/// Keys starting with `prefix`, sorted.
|
|
keys: func(prefix: string) -> result<list<string>, error>;
|
|
}
|