Skip to main content

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}