go_analyzer/util.rs
1use tower_lsp::lsp_types::{Position, Range};
2use tree_sitter::Node;
3
4/// Преобразует узел дерева синтаксического разбора (tree-sitter Node)
5/// в диапазон LSP (Range), который используется для выделения текста в редакторе.
6/// Начальная и конечная позиции берутся из node.start_position() и node.end_position().
7pub fn node_to_range(node: Node) -> Range {
8 Range {
9 // Начальная позиция диапазона (строка и столбец)
10 start: Position::new(
11 node.start_position().row as u32,
12 node.start_position().column as u32,
13 ),
14 // Конечная позиция диапазона (строка и столбец)
15 end: Position::new(
16 node.end_position().row as u32,
17 node.end_position().column as u32,
18 ),
19 }
20}