summaryrefslogtreecommitdiff
path: root/support/texlab/src/hover/latex_include.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/hover/latex_include.rs')
-rw-r--r--support/texlab/src/hover/latex_include.rs104
1 files changed, 0 insertions, 104 deletions
diff --git a/support/texlab/src/hover/latex_include.rs b/support/texlab/src/hover/latex_include.rs
deleted file mode 100644
index 9073d99465..0000000000
--- a/support/texlab/src/hover/latex_include.rs
+++ /dev/null
@@ -1,104 +0,0 @@
-use crate::range::RangeExt;
-use crate::syntax::*;
-use crate::workspace::*;
-use futures_boxed::boxed;
-use lsp_types::*;
-
-#[derive(Debug, PartialEq, Eq, Clone, Copy)]
-pub struct LatexIncludeHoverProvider;
-
-impl FeatureProvider for LatexIncludeHoverProvider {
- type Params = TextDocumentPositionParams;
- type Output = Option<Hover>;
-
- #[boxed]
- async fn execute<'a>(
- &'a self,
- request: &'a FeatureRequest<TextDocumentPositionParams>,
- ) -> Option<Hover> {
- let (range, targets) = Self::find_include(request)?;
- for target in targets {
- if let Some(document) = request.workspace().find(&target) {
- let path = document.uri.to_file_path().ok()?;
- return Some(Hover {
- range: Some(range),
- contents: HoverContents::Markup(MarkupContent {
- kind: MarkupKind::PlainText,
- value: path.to_string_lossy().into_owned(),
- }),
- });
- }
- }
- None
- }
-}
-
-impl LatexIncludeHoverProvider {
- fn find_include(
- request: &FeatureRequest<TextDocumentPositionParams>,
- ) -> Option<(Range, &[Uri])> {
- if let SyntaxTree::Latex(tree) = &request.document().tree {
- for include in &tree.includes {
- for (i, path) in include.paths().iter().enumerate() {
- let range = path.range();
- if range.contains(request.params.position) {
- return Some((range, &include.all_targets[i]));
- }
- }
- }
- }
- None
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use crate::range::RangeExt;
-
- #[test]
- fn test_multiple_paths() {
- let hover = test_feature(
- LatexIncludeHoverProvider,
- FeatureSpec {
- files: vec![
- FeatureSpec::file("foo.tex", "\\include{bar, baz}"),
- FeatureSpec::file("bar.tex", ""),
- FeatureSpec::file("baz.tex", ""),
- ],
- main_file: "foo.tex",
- position: Position::new(0, 16),
- ..FeatureSpec::default()
- },
- );
-
- assert_eq!(
- hover,
- Some(Hover {
- contents: HoverContents::Markup(MarkupContent {
- kind: MarkupKind::PlainText,
- value: FeatureSpec::uri("baz.tex")
- .to_file_path()
- .unwrap()
- .to_string_lossy()
- .into_owned(),
- }),
- range: Some(Range::new_simple(0, 14, 0, 17)),
- })
- );
- }
-
- #[test]
- fn test_empty() {
- let hover = test_feature(
- LatexIncludeHoverProvider,
- FeatureSpec {
- files: vec![FeatureSpec::file("foo.tex", "")],
- main_file: "foo.tex",
- position: Position::new(0, 0),
- ..FeatureSpec::default()
- },
- );
- assert_eq!(hover, None);
- }
-}