summaryrefslogtreecommitdiff
path: root/support/texlab/crates/base-db/src/semantics/tex.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/crates/base-db/src/semantics/tex.rs')
-rw-r--r--support/texlab/crates/base-db/src/semantics/tex.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/support/texlab/crates/base-db/src/semantics/tex.rs b/support/texlab/crates/base-db/src/semantics/tex.rs
index 46c805ba8a..1445ae12e7 100644
--- a/support/texlab/crates/base-db/src/semantics/tex.rs
+++ b/support/texlab/crates/base-db/src/semantics/tex.rs
@@ -105,6 +105,7 @@ impl Semantics {
fn process_label_definition(&mut self, label: latex::LabelDefinition) {
let Some(name) = label.name().and_then(|group| group.key()) else { return };
+ let full_range = latex::small_range(&label);
let mut objects = Vec::new();
for node in label.syntax().ancestors() {
if let Some(section) = latex::Section::cast(node.clone()) {
@@ -169,27 +170,32 @@ impl Semantics {
kind: LabelKind::Definition,
name: Span::from(&name),
targets: objects,
+ full_range,
});
}
fn process_label_reference(&mut self, label: latex::LabelReference) {
let Some(name_list) = label.name_list() else { return };
+ let full_range = latex::small_range(&label);
for name in name_list.keys() {
self.labels.push(Label {
kind: LabelKind::Reference,
name: Span::from(&name),
targets: Vec::new(),
+ full_range,
});
}
}
fn process_label_reference_range(&mut self, label: latex::LabelReferenceRange) {
+ let full_range = latex::small_range(&label);
if let Some(from) = label.from().and_then(|group| group.key()) {
self.labels.push(Label {
kind: LabelKind::ReferenceRange,
name: Span::from(&from),
targets: Vec::new(),
+ full_range,
});
}
@@ -198,6 +204,7 @@ impl Semantics {
kind: LabelKind::ReferenceRange,
name: Span::from(&to),
targets: Vec::new(),
+ full_range,
});
}
}
@@ -216,13 +223,11 @@ impl Semantics {
fn process_theorem_definition(&mut self, theorem_def: latex::TheoremDefinition) {
let Some(name) = theorem_def.name().and_then(|name| name.key()) else { return };
- let Some(description) = theorem_def
- .heading()
- .and_then(|group| group.content_text()) else { return };
+ let Some(heading) = theorem_def.heading() else { return };
self.theorem_definitions.push(TheoremDefinition {
name: Span::from(&name),
- heading: description,
+ heading,
});
}
}
@@ -265,6 +270,7 @@ pub struct Label {
pub kind: LabelKind,
pub name: Span,
pub targets: Vec<LabelTarget>,
+ pub full_range: TextRange,
}
#[derive(Debug, Clone)]