summaryrefslogtreecommitdiff
path: root/support/texlab/src/features/completion/color_model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/features/completion/color_model.rs')
-rw-r--r--support/texlab/src/features/completion/color_model.rs31
1 files changed, 8 insertions, 23 deletions
diff --git a/support/texlab/src/features/completion/color_model.rs b/support/texlab/src/features/completion/color_model.rs
index f7f09b6367..a24953caa5 100644
--- a/support/texlab/src/features/completion/color_model.rs
+++ b/support/texlab/src/features/completion/color_model.rs
@@ -18,15 +18,7 @@ pub fn complete_color_models<'a>(
) -> Option<()> {
cancellation_token.result().ok()?;
- let token = context.cursor.as_latex()?;
- let range = if token.kind() == latex::WORD {
- token.text_range()
- } else {
- TextRange::empty(context.offset)
- };
-
- check_color_definition(context, token)
- .or_else(|| check_color_definition_set(context, token))?;
+ let range = check_color_definition(context).or_else(|| check_color_definition_set(context))?;
for name in MODEL_NAMES {
items.push(InternalCompletionItem::new(
@@ -38,30 +30,23 @@ pub fn complete_color_models<'a>(
Some(())
}
-fn check_color_definition(
- context: &CursorContext<CompletionParams>,
- token: &latex::SyntaxToken,
-) -> Option<()> {
- let group = latex::CurlyGroupWord::cast(token.parent())
- .filter(|group| context.is_inside_latex_curly(group))?;
+fn check_color_definition(context: &CursorContext<CompletionParams>) -> Option<TextRange> {
+ let (_, range, group) = context.find_curly_group_word()?;
+
let definition = latex::ColorDefinition::cast(group.syntax().parent()?)?;
definition
.model()
.filter(|model| model.syntax().text_range() == group.syntax().text_range())?;
- Some(())
+ Some(range)
}
-fn check_color_definition_set(
- context: &CursorContext<CompletionParams>,
- token: &latex::SyntaxToken,
-) -> Option<()> {
- let group = latex::CurlyGroupWordList::cast(token.parent())
- .filter(|group| context.is_inside_latex_curly(group))?;
+fn check_color_definition_set(context: &CursorContext<CompletionParams>) -> Option<TextRange> {
+ let (_, range, group) = context.find_curly_group_word_list()?;
let definition = latex::ColorSetDefinition::cast(group.syntax().parent()?)?;
definition
.model_list()
.filter(|model| model.syntax().text_range() == group.syntax().text_range())?;
- Some(())
+ Some(range)
}
#[cfg(test)]