diff options
Diffstat (limited to 'support/texlab/src/features/definition/label.rs')
-rw-r--r-- | support/texlab/src/features/definition/label.rs | 13 |
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); |