diff options
Diffstat (limited to 'support/texlab/src/features')
-rw-r--r-- | support/texlab/src/features/completion.rs | 11 | ||||
-rw-r--r-- | support/texlab/src/features/hover/citation.rs | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/support/texlab/src/features/completion.rs b/support/texlab/src/features/completion.rs index 29559bd808..f9ad8554cd 100644 --- a/support/texlab/src/features/completion.rs +++ b/support/texlab/src/features/completion.rs @@ -22,6 +22,7 @@ mod util; use std::borrow::Cow; use cancellation::CancellationToken; +use cstree::TextSize; use fuzzy_matcher::{skim::SkimMatcherV2, FuzzyMatcher}; use lsp_types::{ CompletionItem, CompletionList, CompletionParams, CompletionTextEdit, Documentation, @@ -147,7 +148,15 @@ fn dedup(items: Vec<InternalCompletionItem>) -> Vec<InternalCompletionItem> { fn score(context: &CursorContext<CompletionParams>, items: &mut Vec<InternalCompletionItem>) { let pattern: Cow<str> = match &context.cursor { - Cursor::Latex(token) if token.kind().is_command_name() => token.text().trim_end().into(), + Cursor::Latex(token) if token.kind().is_command_name() => { + if token.text_range().start() + TextSize::from(1) == context.offset { + // Handle cases similar to this one correctly: + // $\|$ % (| is the cursor) + "\\".into() + } else { + token.text().trim_end().into() + } + } Cursor::Latex(token) if token.kind() == latex::WORD => { if let Some(key) = latex::Key::cast(token.parent()) { key.to_string().into() diff --git a/support/texlab/src/features/hover/citation.rs b/support/texlab/src/features/hover/citation.rs index 1fd6d6c06b..c097a922f7 100644 --- a/support/texlab/src/features/hover/citation.rs +++ b/support/texlab/src/features/hover/citation.rs @@ -95,7 +95,7 @@ mod tests { let expected_hover = Hover { contents: HoverContents::Markup(MarkupContent { kind: MarkupKind::Markdown, - value: "Bar, F. (1337). *Baz Qux*.".into(), + value: "Bar, Foo. (1337). *Baz Qux*.".into(), }), range: Some(Range::new_simple(1, 6, 1, 9)), }; @@ -124,7 +124,7 @@ mod tests { let expected_hover = Hover { contents: HoverContents::Markup(MarkupContent { kind: MarkupKind::Markdown, - value: "Bar, F. (1337). *Baz Qux*.".into(), + value: "Bar, Foo. (1337). *Baz Qux*.".into(), }), range: Some(Range::new_simple(0, 9, 0, 12)), }; |