fix: don't panic on bad node range

This commit is contained in:
Myriad-Dreamin 2024-03-08 21:13:22 +08:00
parent 4abde9de2e
commit 964def25a9
13 changed files with 51 additions and 92 deletions

View file

@ -14,8 +14,7 @@ impl SelectionRangeRequest {
) -> Option<Vec<SelectionRange>> {
let mut ranges = Vec::new();
for position in self.positions {
let typst_offset =
lsp_to_typst::position_to_offset(position, position_encoding, &source);
let typst_offset = lsp_to_typst::position(position, position_encoding, &source)?;
let tree = LinkedNode::new(source.root());
let leaf = tree.leaf_at(typst_offset)?;
ranges.push(range_for_node(&source, position_encoding, &leaf));
@ -32,7 +31,7 @@ fn range_for_node(
) -> SelectionRange {
let range = typst_to_lsp::range(node.range(), source, position_encoding);
SelectionRange {
range: range.raw_range,
range,
parent: node
.parent()
.map(|node| Box::new(range_for_node(source, position_encoding, node))),