дзеркало
https://github.com/l0ng-ai/openidea.git
синхронізовано 2026-11-09 19:25:54 +02:00
Indexed markers (Edges.markers) were always drawn with the navigation glyph, so a plugin couldn't tell its marker kinds apart. A [[contributes.markerIcons]] entry can now claim them by key prefix (`markers`), with an optional `tooltip` shown above the targets. The host matches the longest prefix and sends the declaration id with each marker; the editor resolves the icon and the translated tooltip from the projected declaration. Manifest only, under the existing API 1.3 gate of markerIcons. Closes #2194
64 рядки
1.6 KiB
Rust
64 рядки
1.6 KiB
Rust
//! Edges a `document-indexer` export returns, and what the host answers from them.
|
|
use ide_core::{Location, Range};
|
|
use serde::{Deserialize, Serialize};
|
|
use specta::Type;
|
|
use std::path::PathBuf;
|
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize, Type)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct Anchor {
|
|
pub key: String,
|
|
pub range: Range,
|
|
}
|
|
|
|
#[derive(Default, Deserialize, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct Alias {
|
|
pub prefix: String,
|
|
pub target: String,
|
|
}
|
|
|
|
#[derive(Default, Deserialize, Serialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct Edges {
|
|
pub definitions: Vec<Anchor>,
|
|
pub references: Vec<Anchor>,
|
|
#[serde(default)]
|
|
pub aliases: Vec<Alias>,
|
|
#[serde(default)]
|
|
pub markers: Vec<Anchor>,
|
|
}
|
|
|
|
/// The resolved gutter markers of one file.
|
|
#[derive(Clone, Debug, Serialize, Type)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct FileMarkers {
|
|
pub path: PathBuf,
|
|
pub version: Option<u32>,
|
|
pub markers: Vec<IndexedMarker>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Type)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct IndexedMarker {
|
|
pub range: Range,
|
|
pub targets: Vec<Location>,
|
|
pub plugin_id: String,
|
|
/// The `[[contributes.markerIcons]]` id whose `markers` prefix matches the marker's key.
|
|
pub icon: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize, Type)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct NavigationResult {
|
|
pub range: Range,
|
|
pub targets: Vec<Location>,
|
|
}
|
|
|
|
pub struct IndexSymbol {
|
|
pub name: String,
|
|
pub kind: String,
|
|
pub container: Option<String>,
|
|
pub range: Range,
|
|
}
|