summaryrefslogtreecommitdiff
path: root/support/texlab/src/features
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features')
-rw-r--r--support/texlab/src/features/completion.rs11
-rw-r--r--support/texlab/src/features/hover/citation.rs4
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)),
};