oak_semantic_tokens/
lib.rs1use oak_core::{language::Language, source::Source, tree::RedNode};
2use oak_vfs::LineMap;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct SemanticToken {
10 pub delta_line: u32,
11 pub delta_start: u32,
12 pub length: u32,
13 pub token_type: u32,
14 pub token_modifiers_bitset: u32,
15}
16
17pub trait SemanticTokensProvider<L: Language> {
19 fn semantic_tokens<S: Source + ?Sized>(&self, root: &RedNode<L>, source: &S, line_map: &LineMap) -> Vec<SemanticToken>;
21}