summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/definition/label.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/definition/label.rs')
-rw-r--r--support/texlab/src/features/definition/label.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/support/texlab/src/features/definition/label.rs b/support/texlab/src/features/definition/label.rs
index 65f0981de0..fd30b1fbc5 100644
--- a/support/texlab/src/features/definition/label.rs
+++ b/support/texlab/src/features/definition/label.rs
@@ -1,7 +1,10 @@
use cancellation::CancellationToken;
use lsp_types::{GotoDefinitionParams, LocationLink};
-use crate::{features::cursor::CursorContext, find_label_definition, render_label, LineIndexExt};
+use crate::{
+ features::cursor::CursorContext, find_label_definition, render_label, syntax::CstNode,
+ LineIndexExt,
+};
pub fn goto_label_definition(
context: &CursorContext<GotoDefinitionParams>,
@@ -10,7 +13,7 @@ pub fn goto_label_definition(
let main_document = context.request.main_document();
let (name_text, name_range) = context
- .find_label_name_word()
+ .find_label_name_key()
.or_else(|| context.find_label_name_command())?;
let origin_selection_range = main_document.line_index.line_col_lsp_range(name_range);
@@ -18,10 +21,10 @@ pub fn goto_label_definition(
for document in &context.request.subset.documents {
cancellation_token.result().ok()?;
if let Some(data) = document.data.as_latex() {
- if let Some(definition) = find_label_definition(&data.root, name_text) {
- let target_selection_range = definition.name()?.word()?.text_range();
+ if let Some(definition) = find_label_definition(&data.root, &name_text) {
+ let target_selection_range = definition.name()?.key()?.small_range();
let target_range =
- render_label(&context.request.subset, name_text, Some(definition))
+ render_label(&context.request.subset, &name_text, Some(definition))
.map(|label| label.range)
.unwrap_or(target_selection_range);