diff options
Diffstat (limited to 'support/texlab/src/features/link/include.rs')
-rw-r--r-- | support/texlab/src/features/link/include.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/support/texlab/src/features/link/include.rs b/support/texlab/src/features/link/include.rs new file mode 100644 index 0000000000..b4d1804cce --- /dev/null +++ b/support/texlab/src/features/link/include.rs @@ -0,0 +1,33 @@ +use std::sync::Arc; + +use lsp_types::DocumentLinkParams; + +use crate::features::FeatureRequest; + +use super::LinkResult; + +pub(super) fn find_include_links( + request: &FeatureRequest<DocumentLinkParams>, + results: &mut Vec<LinkResult>, +) -> Option<()> { + let data = request.main_document().data.as_latex()?; + + for include in &data.extras.explicit_links { + for target in &include.targets { + if request + .workspace + .documents_by_uri + .values() + .any(|document| document.uri.as_ref() == target.as_ref()) + { + results.push(LinkResult { + range: include.stem_range, + target: Arc::clone(target), + }); + break; + } + } + } + + Some(()) +} |