oak_navigation/lib.rs
1use oak_core::{language::Language, tree::RedNode};
2use oak_lsp::{Location, Position};
3
4/// Trait for languages that support jumping to definition.
5pub trait DefinitionProvider<L: Language> {
6 /// Returns the definition(s) of the symbol at the given position.
7 fn definition(&self, root: &RedNode<L>, position: Position) -> Vec<Location>;
8}
9
10/// Trait for languages that support finding references.
11pub trait ReferencesProvider<L: Language> {
12 /// Returns the references to the symbol at the given position.
13 fn references(&self, root: &RedNode<L>, position: Position, include_declaration: bool) -> Vec<Location>;
14}