diff options
Diffstat (limited to 'support/texlab/src/features/reference.rs')
-rw-r--r-- | support/texlab/src/features/reference.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/support/texlab/src/features/reference.rs b/support/texlab/src/features/reference.rs new file mode 100644 index 0000000000..14cf3bc297 --- /dev/null +++ b/support/texlab/src/features/reference.rs @@ -0,0 +1,25 @@ +mod entry; +mod label; +mod string; + +use cancellation::CancellationToken; +use lsp_types::{Location, ReferenceParams}; + +use self::{ + entry::find_entry_references, label::find_label_references, string::find_string_references, +}; + +use super::{cursor::CursorContext, FeatureRequest}; + +pub fn find_all_references( + request: FeatureRequest<ReferenceParams>, + cancellation_token: &CancellationToken, +) -> Option<Vec<Location>> { + let mut references = Vec::new(); + let context = CursorContext::new(request); + log::debug!("[References] Cursor: {:?}", context.cursor); + find_label_references(&context, cancellation_token, &mut references); + find_entry_references(&context, cancellation_token, &mut references); + find_string_references(&context, cancellation_token, &mut references); + Some(references) +} |