summaryrefslogtreecommitdiff
path: root/support/texlab/src/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/src/syntax')
-rw-r--r--support/texlab/src/syntax/bibtex/cst.rs36
-rw-r--r--support/texlab/src/syntax/bibtex/kind.rs1
-rw-r--r--support/texlab/src/syntax/bibtex/parser.rs14
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap3
-rw-r--r--support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap3
-rw-r--r--support/texlab/src/syntax/latex/analysis/environment.rs2
-rw-r--r--support/texlab/src/syntax/latex/analysis/explicit_link.rs20
-rw-r--r--support/texlab/src/syntax/latex/analysis/label_name.rs24
-rw-r--r--support/texlab/src/syntax/latex/analysis/label_number.rs2
-rw-r--r--support/texlab/src/syntax/latex/analysis/theorem.rs2
-rw-r--r--support/texlab/src/syntax/latex/analysis/types.rs6
-rw-r--r--support/texlab/src/syntax/latex/cst.rs52
-rw-r--r--support/texlab/src/syntax/latex/parser.rs108
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__bibtex_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_missing_brace.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error1.snap15
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap9
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap18
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap12
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap31
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap9
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap6
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_only_name.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap3
-rw-r--r--support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap3
83 files changed, 392 insertions, 215 deletions
diff --git a/support/texlab/src/syntax/bibtex/cst.rs b/support/texlab/src/syntax/bibtex/cst.rs
index 7f824681dc..ba860c1ee7 100644
--- a/support/texlab/src/syntax/bibtex/cst.rs
+++ b/support/texlab/src/syntax/bibtex/cst.rs
@@ -1,4 +1,5 @@
use cstree::TextRange;
+use itertools::{EitherOrBoth, Itertools};
use crate::syntax::CstNode;
@@ -159,15 +160,42 @@ impl<'a> HasType<'a> for Entry<'a> {}
impl<'a> HasDelimiters<'a> for Entry<'a> {}
impl<'a> Entry<'a> {
- pub fn key(&self) -> Option<&'a SyntaxToken> {
+ pub fn key(&self) -> Option<Key<'a>> {
+ self.syntax().children().find_map(Key::cast)
+ }
+
+ pub fn fields(&self) -> impl Iterator<Item = Field<'a>> {
+ self.syntax().children().filter_map(Field::cast)
+ }
+}
+
+cst_node!(Key, KEY);
+
+impl<'a> Key<'a> {
+ pub fn words(&self) -> impl Iterator<Item = &'a SyntaxToken> {
self.syntax()
.children_with_tokens()
.filter_map(|node| node.into_token())
- .find(|node| node.kind() == WORD)
+ .filter(|node| node.kind() == WORD)
}
+}
- pub fn fields(&self) -> impl Iterator<Item = Field<'a>> {
- self.syntax().children().filter_map(Field::cast)
+impl<'a> PartialEq for Key<'a> {
+ fn eq(&self, other: &Self) -> bool {
+ self.words()
+ .zip_longest(other.words())
+ .all(|result| match result {
+ EitherOrBoth::Both(left, right) => left.text() == right.text(),
+ EitherOrBoth::Left(_) | EitherOrBoth::Right(_) => false,
+ })
+ }
+}
+
+impl<'a> Eq for Key<'a> {}
+
+impl<'a> ToString for Key<'a> {
+ fn to_string(&self) -> std::string::String {
+ self.words().map(|word| word.text()).join(" ")
}
}
diff --git a/support/texlab/src/syntax/bibtex/kind.rs b/support/texlab/src/syntax/bibtex/kind.rs
index fcb26b69bd..91f62fd3b8 100644
--- a/support/texlab/src/syntax/bibtex/kind.rs
+++ b/support/texlab/src/syntax/bibtex/kind.rs
@@ -26,6 +26,7 @@ pub enum SyntaxKind {
STRING,
COMMENT,
ENTRY,
+ KEY,
FIELD,
VALUE,
TOKEN,
diff --git a/support/texlab/src/syntax/bibtex/parser.rs b/support/texlab/src/syntax/bibtex/parser.rs
index ffdb1c94a0..6e8c4b3b59 100644
--- a/support/texlab/src/syntax/bibtex/parser.rs
+++ b/support/texlab/src/syntax/bibtex/parser.rs
@@ -174,7 +174,7 @@ impl<'a> Parser<'a> {
self.builder.finish_node();
return;
}
- self.eat();
+ self.key();
while let Some(kind) = self.peek() {
match kind {
@@ -190,6 +190,18 @@ impl<'a> Parser<'a> {
self.builder.finish_node();
}
+ fn key(&mut self) {
+ self.builder.start_node(KEY.into());
+ while self
+ .peek()
+ .filter(|&kind| matches!(kind, WORD | WHITESPACE))
+ .is_some()
+ {
+ self.eat();
+ }
+ self.builder.finish_node();
+ }
+
fn field(&mut self) {
self.builder.start_node(FIELD.into());
self.eat();
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap
index cfd469f161..d86d2fb035 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_complete_parens.snap
@@ -7,7 +7,8 @@ ROOT@0..50
ENTRY@0..50
ENTRY_TYPE@0..8 "@article"
L_PAREN@8..9 "("
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
WHITESPACE@13..14 " "
FIELD@14..32
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap
index a98df7e382..e5df412782 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields.snap
@@ -7,7 +7,8 @@ ROOT@0..14
ENTRY@0..14
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
R_CURLY@13..14 "}"
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap
index b83037aae0..b15c871298 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_no_fields_missing_comma.snap
@@ -7,6 +7,7 @@ ROOT@0..13
ENTRY@0..13
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
R_CURLY@12..13 "}"
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap
index 704cbbbd47..0bd43ac612 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field.snap
@@ -7,7 +7,8 @@ ROOT@0..33
ENTRY@0..33
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
WHITESPACE@13..14 " "
FIELD@14..32
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap
index 8f00c5ee1c..09bb00872f 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_number_key.snap
@@ -7,7 +7,8 @@ ROOT@0..37
ENTRY@0..37
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..16 "foo2021"
+ KEY@9..16
+ WORD@9..16 "foo2021"
COMMA@16..17 ","
WHITESPACE@17..18 " "
FIELD@18..36
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap
index af8b1593df..51adbbc275 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_one_field_trailing_comma.snap
@@ -7,7 +7,8 @@ ROOT@0..34
ENTRY@0..34
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
WHITESPACE@13..14 " "
FIELD@14..32
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap
index f47b3b6917..384d582ef9 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields.snap
@@ -7,7 +7,8 @@ ROOT@0..56
ENTRY@0..56
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
WHITESPACE@13..14 " "
FIELD@14..32
diff --git a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap
index 34a9019582..cbe00beff5 100644
--- a/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap
+++ b/support/texlab/src/syntax/bibtex/snapshots/texlab__syntax__bibtex__parser__tests__entry_two_fields_incomplete.snap
@@ -7,7 +7,8 @@ ROOT@0..36
ENTRY@0..36
ENTRY_TYPE@0..8 "@article"
L_CURLY@8..9 "{"
- WORD@9..12 "foo"
+ KEY@9..12
+ WORD@9..12 "foo"
COMMA@12..13 ","
WHITESPACE@13..14 " "
FIELD@14..32
diff --git a/support/texlab/src/syntax/latex/analysis/environment.rs b/support/texlab/src/syntax/latex/analysis/environment.rs
index 3b83b40b2f..7cda0c126b 100644
--- a/support/texlab/src/syntax/latex/analysis/environment.rs
+++ b/support/texlab/src/syntax/latex/analysis/environment.rs
@@ -4,7 +4,7 @@ use super::LatexAnalyzerContext;
pub fn analyze_begin(context: &mut LatexAnalyzerContext, node: &latex::SyntaxNode) -> Option<()> {
let begin = latex::Begin::cast(node)?;
- let name = begin.name()?.word()?.text();
+ let name = begin.name()?.key()?.to_string();
let extras = &mut context.extras;
extras.environment_names.insert(name.into());
Some(())
diff --git a/support/texlab/src/syntax/latex/analysis/explicit_link.rs b/support/texlab/src/syntax/latex/analysis/explicit_link.rs
index 363a576aaa..f177354ac7 100644
--- a/support/texlab/src/syntax/latex/analysis/explicit_link.rs
+++ b/support/texlab/src/syntax/latex/analysis/explicit_link.rs
@@ -23,22 +23,22 @@ pub fn analyze_include(context: &mut LatexAnalyzerContext, node: &latex::SyntaxN
ExplicitLinkKind::Class => &["cls"],
};
- for path in include.path_list()?.words() {
- let stem = path.text();
- let mut targets = vec![Arc::new(context.base_uri.join(stem).ok()?.into())];
+ for path in include.path_list()?.keys() {
+ let stem = path.to_string();
+ let mut targets = vec![Arc::new(context.base_uri.join(&stem).ok()?.into())];
for extension in extensions {
let path = format!("{}.{}", stem, extension);
targets.push(Arc::new(context.base_uri.join(&path).ok()?.into()));
}
- resolve_distro_file(&context.inner.resolver.lock().unwrap(), stem, extensions)
+ resolve_distro_file(&context.inner.resolver.lock().unwrap(), &stem, extensions)
.into_iter()
.for_each(|target| targets.push(Arc::new(target)));
context.extras.explicit_links.push(ExplicitLink {
kind,
stem: stem.into(),
- stem_range: path.text_range(),
+ stem_range: path.small_range(),
targets,
});
}
@@ -52,19 +52,19 @@ pub fn analyze_import(context: &mut LatexAnalyzerContext, node: &latex::SyntaxNo
let mut targets = Vec::new();
let directory = context
.base_uri
- .join(import.directory()?.word()?.text())
+ .join(&import.directory()?.key()?.to_string())
.ok()?;
- let file = import.file()?.word()?;
- let stem = file.text();
- targets.push(Arc::new(directory.join(stem).ok()?.into()));
+ let file = import.file()?.key()?;
+ let stem = file.to_string();
+ targets.push(Arc::new(directory.join(&stem).ok()?.into()));
targets.push(Arc::new(
directory.join(&format!("{}.tex", stem)).ok()?.into(),
));
context.extras.explicit_links.push(ExplicitLink {
stem: stem.into(),
- stem_range: file.text_range(),
+ stem_range: file.small_range(),
targets,
kind: ExplicitLinkKind::Latex,
});
diff --git a/support/texlab/src/syntax/latex/analysis/label_name.rs b/support/texlab/src/syntax/latex/analysis/label_name.rs
index d0410b953c..e5ff6829cd 100644
--- a/support/texlab/src/syntax/latex/analysis/label_name.rs
+++ b/support/texlab/src/syntax/latex/analysis/label_name.rs
@@ -18,10 +18,10 @@ fn analyze_label_definition_name(
node: &latex::SyntaxNode,
) -> Option<()> {
let label = latex::LabelDefinition::cast(node)?;
- let name = label.name()?.word()?;
+ let name = label.name()?.key()?;
context.extras.label_names.push(LabelName {
- text: name.text().into(),
- range: name.text_range(),
+ text: name.to_string().into(),
+ range: name.small_range(),
is_definition: true,
});
Some(())
@@ -32,10 +32,10 @@ fn analyze_label_reference_name(
node: &latex::SyntaxNode,
) -> Option<()> {
let label = latex::LabelReference::cast(node)?;
- for name in label.name_list()?.words() {
+ for name in label.name_list()?.keys() {
context.extras.label_names.push(LabelName {
- text: name.text().into(),
- range: name.text_range(),
+ text: name.to_string().into(),
+ range: name.small_range(),
is_definition: false,
});
}
@@ -47,18 +47,18 @@ fn analyze_label_reference_range_name(
node: &latex::SyntaxNode,
) -> Option<()> {
let label = LabelReferenceRange::cast(node)?;
- if let Some(name1) = label.from().and_then(|name| name.word()) {
+ if let Some(name1) = label.from().and_then(|name| name.key()) {
context.extras.label_names.push(LabelName {
- text: name1.text().into(),
- range: name1.text_range(),
+ text: name1.to_string().into(),
+ range: name1.small_range(),
is_definition: false,
});
}
- if let Some(name2) = label.to().and_then(|name| name.word()) {
+ if let Some(name2) = label.to().and_then(|name| name.key()) {
context.extras.label_names.push(LabelName {
- text: name2.text().into(),
- range: name2.text_range(),
+ text: name2.to_string().into(),
+ range: name2.small_range(),
is_definition: false,
});
}
diff --git a/support/texlab/src/syntax/latex/analysis/label_number.rs b/support/texlab/src/syntax/latex/analysis/label_number.rs
index de8d0dc1e1..93ad09523f 100644
--- a/support/texlab/src/syntax/latex/analysis/label_number.rs
+++ b/support/texlab/src/syntax/latex/analysis/label_number.rs
@@ -7,7 +7,7 @@ pub fn analyze_label_number(
node: &latex::SyntaxNode,
) -> Option<()> {
let number = latex::LabelNumber::cast(node)?;
- let name = number.name()?.word()?.text().into();
+ let name = number.name()?.key()?.to_string();
let text = number
.text()?
.syntax()
diff --git a/support/texlab/src/syntax/latex/analysis/theorem.rs b/support/texlab/src/syntax/latex/analysis/theorem.rs
index 0c365f0ef5..50236e24a5 100644
--- a/support/texlab/src/syntax/latex/analysis/theorem.rs
+++ b/support/texlab/src/syntax/latex/analysis/theorem.rs
@@ -10,7 +10,7 @@ pub fn analyze_theorem_definition(
node: &latex::SyntaxNode,
) -> Option<()> {
let theorem = latex::TheoremDefinition::cast(node)?;
- let name = theorem.name()?.word()?.text().into();
+ let name = theorem.name()?.key()?.to_string();
let description = theorem.description()?;
let description = description.content_text()?;
diff --git a/support/texlab/src/syntax/latex/analysis/types.rs b/support/texlab/src/syntax/latex/analysis/types.rs
index f089721397..bd2789b3b7 100644
--- a/support/texlab/src/syntax/latex/analysis/types.rs
+++ b/support/texlab/src/syntax/latex/analysis/types.rs
@@ -20,9 +20,9 @@ pub struct Extras {
pub explicit_links: Vec<ExplicitLink>,
pub has_document_environment: bool,
pub command_names: FxHashSet<SmolStr>,
- pub environment_names: FxHashSet<SmolStr>,
+ pub environment_names: FxHashSet<String>,
pub label_names: Vec<LabelName>,
- pub label_numbers_by_name: FxHashMap<SmolStr, String>,
+ pub label_numbers_by_name: FxHashMap<String, String>,
pub theorem_environments: Vec<TheoremEnvironment>,
}
@@ -61,7 +61,7 @@ impl ExplicitLink {
#[derive(Debug, PartialEq, Eq, Clone, Default, Hash)]
pub struct TheoremEnvironment {
- pub name: SmolStr,
+ pub name: String,
pub description: String,
}
diff --git a/support/texlab/src/syntax/latex/cst.rs b/support/texlab/src/syntax/latex/cst.rs
index 0b839b706d..a800236ebf 100644
--- a/support/texlab/src/syntax/latex/cst.rs
+++ b/support/texlab/src/syntax/latex/cst.rs
@@ -1,4 +1,5 @@
use cstree::TextRange;
+use itertools::{EitherOrBoth, Itertools};
use crate::syntax::CstNode;
@@ -6,7 +7,7 @@ use super::{Language, SyntaxKind::*, SyntaxNode, SyntaxToken};
macro_rules! cst_node {
($name:ident, $($kind:pat),+) => {
- #[derive(Clone)]
+ #[derive(Clone, Copy)]
#[repr(transparent)]
pub struct $name<'a>(&'a SyntaxNode);
@@ -45,6 +46,15 @@ macro_rules! cst_node {
cst_node!(Text, TEXT);
+impl<'a> Text<'a> {
+ pub fn words(&self) -> impl Iterator<Item = &'a SyntaxToken> {
+ self.syntax()
+ .children_with_tokens()
+ .filter_map(|node| node.into_token())
+ .filter(|node| node.kind() == WORD)
+ }
+}
+
pub trait HasCurly<'a>: CstNode<'a, Lang = Language> {
fn left_curly(&self) -> Option<&'a SyntaxToken> {
self.syntax()
@@ -168,11 +178,8 @@ cst_node!(CurlyGroupWord, CURLY_GROUP_WORD);
impl<'a> HasCurly<'a> for CurlyGroupWord<'a> {}
impl<'a> CurlyGroupWord<'a> {
- pub fn word(&self) -> Option<&'a SyntaxToken> {
- self.syntax()
- .children_with_tokens()
- .filter_map(|node| node.into_token())
- .find(|node| node.kind() == WORD)
+ pub fn key(&self) -> Option<Key<'a>> {
+ self.syntax().children().find_map(Key::cast)
}
}
@@ -181,11 +188,8 @@ cst_node!(BrackGroupWord, BRACK_GROUP_WORD);
impl<'a> HasBrack<'a> for BrackGroupWord<'a> {}
impl<'a> BrackGroupWord<'a> {
- pub fn word(&self) -> Option<&'a SyntaxToken> {
- self.syntax()
- .children_with_tokens()
- .filter_map(|node| node.into_token())
- .find(|node| node.kind() == WORD)
+ pub fn key(&self) -> Option<Key<'a>> {
+ self.syntax().children().find_map(Key::cast)
}
}
@@ -194,11 +198,8 @@ cst_node!(CurlyGroupWordList, CURLY_GROUP_WORD_LIST);
impl<'a> HasCurly<'a> for CurlyGroupWordList<'a> {}
impl<'a> CurlyGroupWordList<'a> {
- pub fn words(&self) -> impl Iterator<Item = &'a SyntaxToken> {
- self.syntax()
- .children_with_tokens()
- .filter_map(|node| node.into_token())
- .filter(|node| node.kind() == WORD)
+ pub fn keys(&self) -> impl Iterator<Item = Key<'a>> {
+ self.syntax().children().filter_map(Key::cast)
}
}
@@ -226,6 +227,25 @@ impl<'a> Key<'a> {
}
}
+impl<'a> PartialEq for Key<'a> {
+ fn eq(&self, other: &Self) -> bool {
+ self.words()
+ .zip_longest(other.words())
+ .all(|result| match result {
+ EitherOrBoth::Both(left, right) => left.text() == right.text(),
+ EitherOrBoth::Left(_) | EitherOrBoth::Right(_) => false,
+ })
+ }
+}
+
+impl<'a> Eq for Key<'a> {}
+
+impl<'a> ToString for Key<'a> {
+ fn to_string(&self) -> String {
+ self.words().map(|word| word.text()).join(" ")
+ }
+}
+
cst_node!(Value, VALUE);
cst_node!(KeyValuePair, KEY_VALUE_PAIR);
diff --git a/support/texlab/src/syntax/latex/parser.rs b/support/texlab/src/syntax/latex/parser.rs
index 4333235ba5..a21674f51d 100644
--- a/support/texlab/src/syntax/latex/parser.rs
+++ b/support/texlab/src/syntax/latex/parser.rs
@@ -173,20 +173,6 @@ impl<'a> Parser<'a> {
self.builder.finish_node();
}
- fn group_with_token(
- &mut self,
- node_kind: SyntaxKind,
- content_kind: SyntaxKind,
- right_kind: SyntaxKind,
- ) {
- self.builder.start_node(node_kind.into());
- self.eat();
- self.trivia();
- self.expect(content_kind);
- self.expect(right_kind);
- self.builder.finish_node();
- }
-
fn curly_group(&mut self) {
self.builder.start_node(CURLY_GROUP.into());
self.eat();
@@ -219,7 +205,23 @@ impl<'a> Parser<'a> {
}
fn curly_group_word(&mut self) {
- self.group_with_token(CURLY_GROUP_WORD, WORD, R_CURLY);
+ self.builder.start_node(CURLY_GROUP_WORD.into());
+ self.eat();
+ self.trivia();
+ match self.peek() {
+ Some(WORD) => {
+ self.key();
+ }
+ Some(PARAMETER) => {
+ self.eat();
+ self.trivia();
+ }
+ Some(_) | None => {
+ self.builder.token(MISSING.into(), "");
+ }
+ }
+ self.expect(R_CURLY);
+ self.builder.finish_node();
}
fn curly_group_word_list(&mut self) {
@@ -228,10 +230,14 @@ impl<'a> Parser<'a> {
while self
.peek()
- .filter(|&kind| matches!(kind, WHITESPACE | COMMENT | WORD | COMMA))
+ .filter(|&kind| matches!(kind, WHITESPACE | COMMENT | WORD | COMMA | PARAMETER))
.is_some()
{
- self.eat();
+ if self.peek() == Some(WORD) {
+ self.key();
+ } else {
+ self.eat();
+ }
}
self.expect(R_CURLY);
@@ -239,7 +245,24 @@ impl<'a> Parser<'a> {
}
fn curly_group_command(&mut self) {
- self.group_with_token(CURLY_GROUP_COMMAND, GENERIC_COMMAND_NAME, R_CURLY);
+ self.builder.start_node(CURLY_GROUP_COMMAND.into());
+ self.eat();
+ self.trivia();
+ match self.peek() {
+ Some(kind) if kind.is_command_name() => {
+ self.eat();
+ self.trivia();
+ }
+ Some(PARAMETER) => {
+ self.eat();
+ self.trivia();
+ }
+ Some(_) | None => {
+ self.builder.token(MISSING.into(), "");
+ }
+ }
+ self.expect(R_CURLY);
+ self.builder.finish_node();
}
fn brack_group(&mut self) {
@@ -271,37 +294,24 @@ impl<'a> Parser<'a> {
}
fn brack_group_word(&mut self) {
- self.group_with_token(BRACK_GROUP_WORD, WORD, R_BRACK);
- }
-
- // fn paren_group(&mut self) {
- // self.builder.start_node(PAREN_GROUP.into());
- // self.eat();
- // while self
- // .peek()
- // .filter(|&kind| {
- // !matches!(
- // kind,
- // R_CURLY
- // | R_BRACK
- // | R_PAREN
- // | PART_NAME
- // | CHAPTER_NAME
- // | SECTION_NAME
- // | SUBSECTION_NAME
- // | PARAGRAPH_NAME
- // | SUBPARAGRAPH_NAME
- // | ENUM_ITEM_NAME
- // | END_ENVIRONMENT_NAME
- // )
- // })
- // .is_some()
- // {
- // self.content();
- // }
- // self.expect(R_PAREN);
- // self.builder.finish_node();
- // }
+ self.builder.start_node(BRACK_GROUP_WORD.into());
+ self.eat();
+ self.trivia();
+ match self.peek() {
+ Some(WORD) => {
+ self.key();
+ }
+ Some(PARAMETER) => {
+ self.eat();
+ self.trivia();
+ }
+ Some(_) | None => {
+ self.builder.token(MISSING.into(), "");
+ }
+ }
+ self.expect(R_BRACK);
+ self.builder.finish_node();
+ }
fn mixed_group(&mut self) {
self.builder.start_node(MIXED_GROUP.into());
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap
index dfd05750d3..a92180efb3 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acronym_declaration.snap
@@ -9,7 +9,8 @@ ROOT@0..64
ACRONYM_DECLARATION_NAME@0..15 "\\DeclareAcronym"
CURLY_GROUP_WORD@15..19
L_CURLY@15..16 "{"
- WORD@16..18 "eg"
+ KEY@16..18
+ WORD@16..18 "eg"
R_CURLY@18..19 "}"
CURLY_GROUP_KEY_VALUE@19..64
L_CURLY@19..20 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap
index 1838e80f9a..80043c18e7 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_options.snap
@@ -27,7 +27,8 @@ ROOT@0..76
R_BRACK@42..43 "]"
CURLY_GROUP_WORD@43..53
L_CURLY@43..44 "{"
- WORD@44..52 "fpsLabel"
+ KEY@44..52
+ WORD@44..52 "fpsLabel"
R_CURLY@52..53 "}"
CURLY_GROUP@53..58
L_CURLY@53..54 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap
index 1d32bed249..74ae2219de 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_definition_simple.snap
@@ -9,7 +9,8 @@ ROOT@0..44
ACRONYM_DEFINITION_NAME@0..11 "\\newacronym"
CURLY_GROUP_WORD@11..21
L_CURLY@11..12 "{"
- WORD@12..20 "fpsLabel"
+ KEY@12..20
+ WORD@12..20 "fpsLabel"
R_CURLY@20..21 "}"
CURLY_GROUP@21..26
L_CURLY@21..22 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap
index ce5b85c1cf..6a1c2cdcbe 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_options.snap
@@ -24,6 +24,7 @@ ROOT@0..32
R_BRACK@21..22 "]"
CURLY_GROUP_WORD@22..32
L_CURLY@22..23 "{"
- WORD@23..31 "fpsLabel"
+ KEY@23..31
+ WORD@23..31 "fpsLabel"
R_CURLY@31..32 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap
index 5df8059f1b..9924c7175c 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__acroynm_reference_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..19
ACRONYM_REFERENCE_NAME@0..9 "\\acrshort"
CURLY_GROUP_WORD@9..19
L_CURLY@9..10 "{"
- WORD@10..18 "fpsLabel"
+ KEY@10..18
+ WORD@10..18 "fpsLabel"
R_CURLY@18..19 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap
index c910699363..3189cabd46 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_options.snap
@@ -25,6 +25,7 @@ ROOT@0..42
R_BRACK@28..29 "]"
CURLY_GROUP_WORD_LIST@29..42
L_CURLY@29..30 "{"
- WORD@30..41 "foo/bar.bib"
+ KEY@30..41
+ WORD@30..41 "foo/bar.bib"
R_CURLY@41..42 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap
index 3549b985c4..3166d13aff 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__biblatex_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..28
BIBLATEX_INCLUDE_NAME@0..15 "\\addbibresource"
CURLY_GROUP_WORD_LIST@15..28
L_CURLY@15..16 "{"
- WORD@16..27 "foo/bar.bib"
+ KEY@16..27
+ WORD@16..27 "foo/bar.bib"
R_CURLY@27..28 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__bibtex_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__bibtex_include_simple.snap
index f0d30ebfa3..db58621c75 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__bibtex_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__bibtex_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..22
BIBTEX_INCLUDE_NAME@0..13 "\\bibliography"
CURLY_GROUP_WORD_LIST@13..22
L_CURLY@13..14 "{"
- WORD@14..21 "foo/bar"
+ KEY@14..21
+ WORD@14..21 "foo/bar"
R_CURLY@21..22 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap
index 4b963caabd..b3bf7589d8 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__caption_figure.snap
@@ -10,7 +10,8 @@ ROOT@0..39
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..14
L_CURLY@6..7 "{"
- WORD@7..13 "figure"
+ KEY@7..13
+ WORD@7..13 "figure"
R_CURLY@13..14 "}"
CAPTION@14..27
CAPTION_NAME@14..22 "\\caption"
@@ -23,6 +24,7 @@ ROOT@0..39
END_ENVIRONMENT_NAME@27..31 "\\end"
CURLY_GROUP_WORD@31..39
L_CURLY@31..32 "{"
- WORD@32..38 "figure"
+ KEY@32..38
+ WORD@32..38 "figure"
R_CURLY@38..39 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_missing_brace.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_missing_brace.snap
index 363f8b0142..61cd6d8f0b 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_missing_brace.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_missing_brace.snap
@@ -9,6 +9,7 @@ ROOT@0..9
CITATION_NAME@0..5 "\\cite"
CURLY_GROUP_WORD_LIST@5..9
L_CURLY@5..6 "{"
- WORD@6..9 "foo"
+ KEY@6..9
+ WORD@6..9 "foo"
MISSING@9..9 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap
index dafc826a97..7195e8992e 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_multiple_keys.snap
@@ -9,9 +9,11 @@ ROOT@0..15
CITATION_NAME@0..5 "\\cite"
CURLY_GROUP_WORD_LIST@5..15
L_CURLY@5..6 "{"
- WORD@6..9 "foo"
+ KEY@6..9
+ WORD@6..9 "foo"
COMMA@9..10 ","
WHITESPACE@10..11 " "
- WORD@11..14 "bar"
+ KEY@11..14
+ WORD@11..14 "bar"
R_CURLY@14..15 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap
index 93d83bb448..b5d92886aa 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote.snap
@@ -14,6 +14,7 @@ ROOT@0..15
R_BRACK@9..10 "]"
CURLY_GROUP_WORD_LIST@10..15
L_CURLY@10..11 "{"
- WORD@11..14 "bar"
+ KEY@11..14
+ WORD@11..14 "bar"
R_CURLY@14..15 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap
index 3acaafea3b..ba99b66e35 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_prenote_postnote.snap
@@ -19,6 +19,7 @@ ROOT@0..20
R_BRACK@14..15 "]"
CURLY_GROUP_WORD_LIST@15..20
L_CURLY@15..16 "{"
- WORD@16..19 "baz"
+ KEY@16..19
+ WORD@16..19 "baz"
R_CURLY@19..20 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap
index 12f34f16ae..9062479f7a 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_redundant_comma.snap
@@ -10,7 +10,8 @@ ROOT@0..12
CURLY_GROUP_WORD_LIST@5..12
L_CURLY@5..6 "{"
COMMA@6..7 ","
- WORD@7..10 "foo"
+ KEY@7..10
+ WORD@7..10 "foo"
COMMA@10..11 ","
R_CURLY@11..12 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap
index a22129f85f..335b9d461c 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..10
CITATION_NAME@0..5 "\\cite"
CURLY_GROUP_WORD_LIST@5..10
L_CURLY@5..6 "{"
- WORD@6..9 "foo"
+ KEY@6..9
+ WORD@6..9 "foo"
R_CURLY@9..10 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap
index 4388596dfd..e6d5dad128 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__citation_star.snap
@@ -9,6 +9,7 @@ ROOT@0..10
CITATION_NAME@0..7 "\\nocite"
CURLY_GROUP_WORD_LIST@7..10
L_CURLY@7..8 "{"
- WORD@8..9 "*"
+ KEY@8..9
+ WORD@8..9 "*"
R_CURLY@9..10 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap
index 0d0eb1b250..ac20c4b8ac 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_options.snap
@@ -32,6 +32,7 @@ ROOT@0..44
R_BRACK@34..35 "]"
CURLY_GROUP_WORD_LIST@35..44
L_CURLY@35..36 "{"
- WORD@36..43 "article"
+ KEY@36..43
+ WORD@36..43 "article"
R_CURLY@43..44 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_simple.snap
index 85e21b47a8..07c426101e 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__class_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..23
CLASS_INCLUDE_NAME@0..14 "\\documentclass"
CURLY_GROUP_WORD_LIST@14..23
L_CURLY@14..15 "{"
- WORD@15..22 "article"
+ KEY@15..22
+ WORD@15..22 "article"
R_CURLY@22..23 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap
index e4adfd534c..64eee4351b 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_definition_simple.snap
@@ -9,11 +9,13 @@ ROOT@0..33
COLOR_DEFINITION_NAME@0..12 "\\definecolor"
CURLY_GROUP_WORD@12..17
L_CURLY@12..13 "{"
- WORD@13..16 "foo"
+ KEY@13..16
+ WORD@13..16 "foo"
R_CURLY@16..17 "}"
CURLY_GROUP_WORD@17..22
L_CURLY@17..18 "{"
- WORD@18..21 "rgb"
+ KEY@18..21
+ WORD@18..21 "rgb"
R_CURLY@21..22 "}"
CURLY_GROUP@22..33
L_CURLY@22..23 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap
index 41a3700122..cb0ee151b9 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_reference_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..13
COLOR_REFERENCE_NAME@0..6 "\\color"
CURLY_GROUP_WORD@6..13
L_CURLY@6..7 "{"
- WORD@7..12 "black"
+ KEY@7..12
+ WORD@7..12 "black"
R_CURLY@12..13 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error1.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error1.snap
index 42095ff974..59688f0902 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error1.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error1.snap
@@ -9,21 +9,26 @@ ROOT@0..39
COLOR_SET_DEFINITION_NAME@0..15 "\\definecolorset"
BRACK_GROUP_WORD@15..19
L_BRACK@15..16 "["
- WORD@16..18 "ty"
+ KEY@16..18
+ WORD@16..18 "ty"
R_BRACK@18..19 "]"
CURLY_GROUP_WORD_LIST@19..29
L_CURLY@19..20 "{"
- WORD@20..23 "rgb"
+ KEY@20..23
+ WORD@20..23 "rgb"
COMMA@23..24 ","
- WORD@24..28 "HTML"
+ KEY@24..28
+ WORD@24..28 "HTML"
R_CURLY@28..29 "}"
CURLY_GROUP_WORD@29..34
L_CURLY@29..30 "{"
- WORD@30..33 "foo"
+ KEY@30..33
+ WORD@30..33 "foo"
R_CURLY@33..34 "}"
CURLY_GROUP_WORD@34..39
L_CURLY@34..35 "{"
- WORD@35..38 "bar"
+ KEY@35..38
+ WORD@35..38 "bar"
R_CURLY@38..39 "}"
MISSING@39..39 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap
index 718d49a3e3..cbbeacb649 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error2.snap
@@ -9,13 +9,16 @@ ROOT@0..30
COLOR_SET_DEFINITION_NAME@0..15 "\\definecolorset"
CURLY_GROUP_WORD_LIST@15..25
L_CURLY@15..16 "{"
- WORD@16..19 "rgb"
+ KEY@16..19
+ WORD@16..19 "rgb"
COMMA@19..20 ","
- WORD@20..24 "HTML"
+ KEY@20..24
+ WORD@20..24 "HTML"
R_CURLY@24..25 "}"
CURLY_GROUP_WORD@25..30
L_CURLY@25..26 "{"
- WORD@26..29 "foo"
+ KEY@26..29
+ WORD@26..29 "foo"
R_CURLY@29..30 "}"
MISSING@30..30 ""
MISSING@30..30 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap
index f92d813123..826bea28b6 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_error3.snap
@@ -9,9 +9,11 @@ ROOT@0..25
COLOR_SET_DEFINITION_NAME@0..15 "\\definecolorset"
CURLY_GROUP_WORD_LIST@15..25
L_CURLY@15..16 "{"
- WORD@16..19 "rgb"
+ KEY@16..19
+ WORD@16..19 "rgb"
COMMA@19..20 ","
- WORD@20..24 "HTML"
+ KEY@20..24
+ WORD@20..24 "HTML"
R_CURLY@24..25 "}"
MISSING@25..25 ""
MISSING@25..25 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap
index f9a736c65f..9d32e127ef 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__color_set_definition_simple.snap
@@ -9,24 +9,30 @@ ROOT@0..44
COLOR_SET_DEFINITION_NAME@0..15 "\\definecolorset"
BRACK_GROUP_WORD@15..19
L_BRACK@15..16 "["
- WORD@16..18 "ty"
+ KEY@16..18
+ WORD@16..18 "ty"
R_BRACK@18..19 "]"
CURLY_GROUP_WORD_LIST@19..29
L_CURLY@19..20 "{"
- WORD@20..23 "rgb"
+ KEY@20..23
+ WORD@20..23 "rgb"
COMMA@23..24 ","
- WORD@24..28 "HTML"
+ KEY@24..28
+ WORD@24..28 "HTML"
R_CURLY@28..29 "}"
CURLY_GROUP_WORD@29..34
L_CURLY@29..30 "{"
- WORD@30..33 "foo"
+ KEY@30..33
+ WORD@30..33 "foo"
R_CURLY@33..34 "}"
CURLY_GROUP_WORD@34..39
L_CURLY@34..35 "{"
- WORD@35..38 "bar"
+ KEY@35..38
+ WORD@35..38 "bar"
R_CURLY@38..39 "}"
CURLY_GROUP_WORD@39..44
L_CURLY@39..40 "{"
- WORD@40..43 "baz"
+ KEY@40..43
+ WORD@40..43 "baz"
R_CURLY@43..44 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap
index e5f2377fcf..b0d9b225d0 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__command_definition_simple.snap
@@ -10,7 +10,8 @@ ROOT@0..23
MISSING@11..11 ""
BRACK_GROUP_WORD@11..14
L_BRACK@11..12 "["
- WORD@12..13 "1"
+ KEY@12..13
+ WORD@12..13 "1"
R_BRACK@13..14 "]"
CURLY_GROUP@14..19
L_CURLY@14..15 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap
index df3c0d56fb..982d3b8667 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_definition.snap
@@ -9,11 +9,13 @@ ROOT@0..47
ENVIRONMENT_DEFINIITION_NAME@0..15 "\\newenvironment"
CURLY_GROUP_WORD@15..20
L_CURLY@15..16 "{"
- WORD@16..19 "bar"
+ KEY@16..19
+ WORD@16..19 "bar"
R_CURLY@19..20 "}"
BRACK_GROUP_WORD@20..23
L_BRACK@20..21 "["
- WORD@21..22 "1"
+ KEY@21..22
+ WORD@21..22 "1"
R_BRACK@22..23 "]"
CURLY_GROUP@23..36
L_CURLY@23..24 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap
index a5c566f773..3a65af3a2b 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested.snap
@@ -10,7 +10,8 @@ ROOT@0..43
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..12
L_CURLY@6..7 "{"
- WORD@7..10 "foo"
+ KEY@7..10
+ WORD@7..10 "foo"
R_CURLY@10..11 "}"
WHITESPACE@11..12 " "
ENVIRONMENT@12..34
@@ -18,20 +19,23 @@ ROOT@0..43
BEGIN_ENVIRONMENT_NAME@12..18 "\\begin"
CURLY_GROUP_WORD@18..24
L_CURLY@18..19 "{"
- WORD@19..22 "qux"
+ KEY@19..22
+ WORD@19..22 "qux"
R_CURLY@22..23 "}"
WHITESPACE@23..24 " "
END@24..34
END_ENVIRONMENT_NAME@24..28 "\\end"
CURLY_GROUP_WORD@28..34
L_CURLY@28..29 "{"
- WORD@29..32 "baz"
+ KEY@29..32
+ WORD@29..32 "baz"
R_CURLY@32..33 "}"
WHITESPACE@33..34 " "
END@34..43
END_ENVIRONMENT_NAME@34..38 "\\end"
CURLY_GROUP_WORD@38..43
L_CURLY@38..39 "{"
- WORD@39..42 "bar"
+ KEY@39..42
+ WORD@39..42 "bar"
R_CURLY@42..43 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap
index 9ff76605d6..973e6e9a9f 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_nested_missing_braces.snap
@@ -10,33 +10,36 @@ ROOT@0..52
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..11
L_CURLY@6..7 "{"
- WORD@7..10 "foo"
- WHITESPACE@10..11 " "
+ KEY@7..11
+ WORD@7..10 "foo"
+ WHITESPACE@10..11 " "
MISSING@11..11 ""
ENVIRONMENT@11..44
- BEGIN@11..22
+ BEGIN@11..34
BEGIN_ENVIRONMENT_NAME@11..17 "\\begin"
- CURLY_GROUP_WORD@17..22
+ CURLY_GROUP_WORD@17..34
L_CURLY@17..18 "{"
- WORD@18..21 "qux"
- WHITESPACE@21..22 " "
- MISSING@22..22 ""
- TEXT@22..34
- WORD@22..27 "Hello"
- WHITESPACE@27..28 " "
- WORD@28..33 "World"
- WHITESPACE@33..34 " "
+ KEY@18..34
+ WORD@18..21 "qux"
+ WHITESPACE@21..22 " "
+ WORD@22..27 "Hello"
+ WHITESPACE@27..28 " "
+ WORD@28..33 "World"
+ WHITESPACE@33..34 " "
+ MISSING@34..34 ""
END@34..44
END_ENVIRONMENT_NAME@34..38 "\\end"
CURLY_GROUP_WORD@38..44
L_CURLY@38..39 "{"
- WORD@39..42 "baz"
+ KEY@39..42
+ WORD@39..42 "baz"
R_CURLY@42..43 "}"
WHITESPACE@43..44 " "
END@44..52
END_ENVIRONMENT_NAME@44..48 "\\end"
CURLY_GROUP_WORD@48..52
L_CURLY@48..49 "{"
- WORD@49..52 "bar"
+ KEY@49..52
+ WORD@49..52 "bar"
MISSING@52..52 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap
index d58f5b26c4..b8b85f1348 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__environment_simple.snap
@@ -10,7 +10,8 @@ ROOT@0..33
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..12
L_CURLY@6..7 "{"
- WORD@7..10 "foo"
+ KEY@7..10
+ WORD@7..10 "foo"
R_CURLY@10..11 "}"
WHITESPACE@11..12 " "
TEXT@12..24
@@ -22,6 +23,7 @@ ROOT@0..33
END_ENVIRONMENT_NAME@24..28 "\\end"
CURLY_GROUP_WORD@28..33
L_CURLY@28..29 "{"
- WORD@29..32 "bar"
+ KEY@29..32
+ WORD@29..32 "bar"
R_CURLY@32..33 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap
index 7a851233ef..9123fafcf2 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_label_reference_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..11
LABEL_REFERENCE_NAME@0..6 "\\eqref"
CURLY_GROUP_WORD_LIST@6..11
L_CURLY@6..7 "{"
- WORD@7..10 "foo"
+ KEY@7..10
+ WORD@7..10 "foo"
R_CURLY@10..11 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap
index fe065667c3..9a2af78417 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_begin.snap
@@ -10,7 +10,8 @@ ROOT@0..28
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..10
L_CURLY@6..7 "{"
- WORD@7..8 "a"
+ KEY@7..8
+ WORD@7..8 "a"
R_CURLY@8..9 "}"
WHITESPACE@9..10 " "
TEXT@10..18
@@ -25,6 +26,7 @@ ROOT@0..28
END_ENVIRONMENT_NAME@21..25 "\\end"
CURLY_GROUP_WORD@25..28
L_CURLY@25..26 "{"
- WORD@26..27 "b"
+ KEY@26..27
+ WORD@26..27 "b"
R_CURLY@27..28 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap
index f7b6205ffb..3085037fac 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__equation_missing_end.snap
@@ -10,7 +10,8 @@ ROOT@0..28
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..10
L_CURLY@6..7 "{"
- WORD@7..8 "a"
+ KEY@7..8
+ WORD@7..8 "a"
R_CURLY@8..9 "}"
WHITESPACE@9..10 " "
EQUATION@10..21
@@ -26,6 +27,7 @@ ROOT@0..28
END_ENVIRONMENT_NAME@21..25 "\\end"
CURLY_GROUP_WORD@25..28
L_CURLY@25..26 "{"
- WORD@26..27 "b"
+ KEY@26..27
+ WORD@26..27 "b"
R_CURLY@27..28 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap
index d1b31e275a..519abf75e8 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_definition_simple.snap
@@ -9,7 +9,8 @@ ROOT@0..39
GLOSSARY_ENTRY_DEFINITION_NAME@0..17 "\\newglossaryentry"
CURLY_GROUP_WORD@17..22
L_CURLY@17..18 "{"
- WORD@18..21 "foo"
+ KEY@18..21
+ WORD@18..21 "foo"
R_CURLY@21..22 "}"
CURLY_GROUP_KEY_VALUE@22..39
L_CURLY@22..23 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap
index ad5c44885a..494c0be0a0 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_options.snap
@@ -27,6 +27,7 @@ ROOT@0..25
R_BRACK@19..20 "]"
CURLY_GROUP_WORD@20..25
L_CURLY@20..21 "{"
- WORD@21..24 "baz"
+ KEY@21..24
+ WORD@21..24 "baz"
R_CURLY@24..25 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap
index 2a6b845733..94af3796fc 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__glossary_entry_reference_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..9
GLOSSARY_ENTRY_REFERENCE_NAME@0..4 "\\gls"
CURLY_GROUP_WORD@4..9
L_CURLY@4..5 "{"
- WORD@5..8 "foo"
+ KEY@5..8
+ WORD@5..8 "foo"
R_CURLY@8..9 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap
index 910a4848ef..14e2413323 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_options.snap
@@ -20,6 +20,7 @@ ROOT@0..39
R_BRACK@25..26 "]"
CURLY_GROUP_WORD_LIST@26..39
L_CURLY@26..27 "{"
- WORD@27..38 "foo/bar.pdf"
+ KEY@27..38
+ WORD@27..38 "foo/bar.pdf"
R_CURLY@38..39 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap
index fa6fbf1a14..f4c640bca8 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__graphics_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..29
GRAPHICS_INCLUDE_NAME@0..16 "\\includegraphics"
CURLY_GROUP_WORD_LIST@16..29
L_CURLY@16..17 "{"
- WORD@17..28 "foo/bar.pdf"
+ KEY@17..28
+ WORD@17..28 "foo/bar.pdf"
R_CURLY@28..29 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap
index 3dae1f433a..c8634d6269 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_incomplete.snap
@@ -9,7 +9,8 @@ ROOT@0..11
IMPORT_NAME@0..7 "\\import"
CURLY_GROUP_WORD@7..11
L_CURLY@7..8 "{"
- WORD@8..11 "foo"
+ KEY@8..11
+ WORD@8..11 "foo"
MISSING@11..11 ""
MISSING@11..11 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap
index 6e21f65cbf..c94f34eb3f 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__import_simple.snap
@@ -9,10 +9,12 @@ ROOT@0..17
IMPORT_NAME@0..7 "\\import"
CURLY_GROUP_WORD@7..12
L_CURLY@7..8 "{"
- WORD@8..11 "foo"
+ KEY@8..11
+ WORD@8..11 "foo"
R_CURLY@11..12 "}"
CURLY_GROUP_WORD@12..17
L_CURLY@12..13 "{"
- WORD@13..16 "bar"
+ KEY@13..16
+ WORD@13..16 "bar"
R_CURLY@16..17 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap
index d1fd2df652..8b95509be6 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_options.snap
@@ -20,6 +20,7 @@ ROOT@0..30
R_BRACK@20..21 "]"
CURLY_GROUP_WORD_LIST@21..30
L_CURLY@21..22 "{"
- WORD@22..29 "foo/bar"
+ KEY@22..29
+ WORD@22..29 "foo/bar"
R_CURLY@29..30 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap
index 59f50c36d3..e3d1f9bdfd 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__inkscape_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..20
SVG_INCLUDE_NAME@0..11 "\\includesvg"
CURLY_GROUP_WORD_LIST@11..20
L_CURLY@11..12 "{"
- WORD@12..19 "foo/bar"
+ KEY@12..19
+ WORD@12..19 "foo/bar"
R_CURLY@19..20 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap
index 7eacd65c59..2d15533f87 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_definition_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..11
LABEL_DEFINITION_NAME@0..6 "\\label"
CURLY_GROUP_WORD@6..11
L_CURLY@6..7 "{"
- WORD@7..10 "foo"
+ KEY@7..10
+ WORD@7..10 "foo"
R_CURLY@10..11 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap
index 46392d7574..a63752d80e 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_number.snap
@@ -9,7 +9,8 @@ ROOT@0..21
LABEL_NUMBER_NAME@0..9 "\\newlabel"
CURLY_GROUP_WORD@9..14
L_CURLY@9..10 "{"
- WORD@10..13 "foo"
+ KEY@10..13
+ WORD@10..13 "foo"
R_CURLY@13..14 "}"
CURLY_GROUP@14..21
L_CURLY@14..15 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap
index e399397e09..0176c770e8 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_multiple.snap
@@ -9,9 +9,11 @@ ROOT@0..14
LABEL_REFERENCE_NAME@0..4 "\\ref"
CURLY_GROUP_WORD_LIST@4..14
L_CURLY@4..5 "{"
- WORD@5..8 "foo"
+ KEY@5..8
+ WORD@5..8 "foo"
COMMA@8..9 ","
WHITESPACE@9..10 " "
- WORD@10..13 "bar"
+ KEY@10..13
+ WORD@10..13 "bar"
R_CURLY@13..14 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap
index 2894a9c2ec..ee65f8a02f 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_error.snap
@@ -9,10 +9,12 @@ ROOT@0..19
LABEL_REFERENCE_RANGE_NAME@0..10 "\\crefrange"
CURLY_GROUP_WORD@10..14
L_CURLY@10..11 "{"
- WORD@11..14 "foo"
+ KEY@11..14
+ WORD@11..14 "foo"
MISSING@14..14 ""
CURLY_GROUP_WORD@14..19
L_CURLY@14..15 "{"
- WORD@15..18 "bar"
+ KEY@15..18
+ WORD@15..18 "bar"
R_CURLY@18..19 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap
index 0a1753867e..3dbe4bbab6 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_incomplete.snap
@@ -9,7 +9,8 @@ ROOT@0..15
LABEL_REFERENCE_RANGE_NAME@0..10 "\\crefrange"
CURLY_GROUP_WORD@10..15
L_CURLY@10..11 "{"
- WORD@11..14 "foo"
+ KEY@11..14
+ WORD@11..14 "foo"
R_CURLY@14..15 "}"
MISSING@15..15 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap
index c06c31c1b7..094d0e2870 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_range_simple.snap
@@ -9,10 +9,12 @@ ROOT@0..20
LABEL_REFERENCE_RANGE_NAME@0..10 "\\crefrange"
CURLY_GROUP_WORD@10..15
L_CURLY@10..11 "{"
- WORD@11..14 "foo"
+ KEY@11..14
+ WORD@11..14 "foo"
R_CURLY@14..15 "}"
CURLY_GROUP_WORD@15..20
L_CURLY@15..16 "{"
- WORD@16..19 "bar"
+ KEY@16..19
+ WORD@16..19 "bar"
R_CURLY@19..20 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap
index ed06f5dfc1..9b6e622ef9 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__label_reference_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..9
LABEL_REFERENCE_NAME@0..4 "\\ref"
CURLY_GROUP_WORD_LIST@4..9
L_CURLY@4..5 "{"
- WORD@5..8 "foo"
+ KEY@5..8
+ WORD@5..8 "foo"
R_CURLY@8..9 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap
index 34565aa072..dbdeaad2f7 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..17
LATEX_INCLUDE_NAME@0..8 "\\include"
CURLY_GROUP_WORD_LIST@8..17
L_CURLY@8..9 "{"
- WORD@9..16 "foo/bar"
+ KEY@9..16
+ WORD@9..16 "foo/bar"
R_CURLY@16..17 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap
index 208e898407..efa0d9b675 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__latex_input_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..19
LATEX_INCLUDE_NAME@0..6 "\\input"
CURLY_GROUP_WORD_LIST@6..19
L_CURLY@6..7 "{"
- WORD@7..18 "foo/bar.tex"
+ KEY@7..18
+ WORD@7..18 "foo/bar.tex"
R_CURLY@18..19 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap
index e68b98d1b5..2df92fd909 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_multiple.snap
@@ -9,9 +9,11 @@ ROOT@0..28
PACKAGE_INCLUDE_NAME@0..11 "\\usepackage"
CURLY_GROUP_WORD_LIST@11..28
L_CURLY@11..12 "{"
- WORD@12..19 "amsmath"
+ KEY@12..19
+ WORD@12..19 "amsmath"
COMMA@19..20 ","
WHITESPACE@20..21 " "
- WORD@21..27 "lipsum"
+ KEY@21..27
+ WORD@21..27 "lipsum"
R_CURLY@27..28 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap
index a33c4e0bd7..0f87570023 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_options.snap
@@ -32,6 +32,7 @@ ROOT@0..41
R_BRACK@31..32 "]"
CURLY_GROUP_WORD_LIST@32..41
L_CURLY@32..33 "{"
- WORD@33..40 "amsmath"
+ KEY@33..40
+ WORD@33..40 "amsmath"
R_CURLY@40..41 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap
index 00c075fdfe..a28dd39a13 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__package_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..20
PACKAGE_INCLUDE_NAME@0..11 "\\usepackage"
CURLY_GROUP_WORD_LIST@11..20
L_CURLY@11..12 "{"
- WORD@12..19 "amsmath"
+ KEY@12..19
+ WORD@12..19 "amsmath"
R_CURLY@19..20 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap
index 8f289f97a4..c36bf857bb 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__pgf_library_import_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..19
TIKZ_LIBRARY_IMPORT_NAME@0..14 "\\usepgflibrary"
CURLY_GROUP_WORD_LIST@14..19
L_CURLY@14..15 "{"
- WORD@15..18 "foo"
+ KEY@15..18
+ WORD@15..18 "foo"
R_CURLY@18..19 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap
index 43dcae1987..0ca7421ac6 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__structure_enum_item.snap
@@ -10,7 +10,8 @@ ROOT@0..60
BEGIN_ENVIRONMENT_NAME@0..6 "\\begin"
CURLY_GROUP_WORD@6..18
L_CURLY@6..7 "{"
- WORD@7..16 "enumerate"
+ KEY@7..16
+ WORD@7..16 "enumerate"
R_CURLY@16..17 "}"
WHITESPACE@17..18 " "
ENUM_ITEM@18..26
@@ -40,6 +41,7 @@ ROOT@0..60
END_ENVIRONMENT_NAME@45..49 "\\end"
CURLY_GROUP_WORD@49..60
L_CURLY@49..50 "{"
- WORD@50..59 "enumerate"
+ KEY@50..59
+ WORD@50..59 "enumerate"
R_CURLY@59..60 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap
index 863f27cf56..3140282630 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_options.snap
@@ -20,6 +20,7 @@ ROOT@0..34
R_BRACK@20..21 "]"
CURLY_GROUP_WORD_LIST@21..34
L_CURLY@21..22 "{"
- WORD@22..33 "foo/bar.svg"
+ KEY@22..33
+ WORD@22..33 "foo/bar.svg"
R_CURLY@33..34 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap
index 02db942d99..2cf133b4d0 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__svg_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..24
SVG_INCLUDE_NAME@0..11 "\\includesvg"
CURLY_GROUP_WORD_LIST@11..24
L_CURLY@11..12 "{"
- WORD@12..23 "foo/bar.svg"
+ KEY@12..23
+ WORD@12..23 "foo/bar.svg"
R_CURLY@23..24 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap
index d8fe3816ad..7f21c0ef52 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_full.snap
@@ -9,11 +9,13 @@ ROOT@0..31
THEOREM_DEFINITION_NAME@0..11 "\\newtheorem"
CURLY_GROUP_WORD@11..16
L_CURLY@11..12 "{"
- WORD@12..15 "foo"
+ KEY@12..15
+ WORD@12..15 "foo"
R_CURLY@15..16 "}"
BRACK_GROUP_WORD@16..21
L_BRACK@16..17 "["
- WORD@17..20 "bar"
+ KEY@17..20
+ WORD@17..20 "bar"
R_BRACK@20..21 "]"
CURLY_GROUP@21..26
L_CURLY@21..22 "{"
@@ -22,6 +24,7 @@ ROOT@0..31
R_CURLY@25..26 "}"
BRACK_GROUP_WORD@26..31
L_BRACK@26..27 "["
- WORD@27..30 "baz"
+ KEY@27..30
+ WORD@27..30 "baz"
R_BRACK@30..31 "]"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap
index 9e550b19a4..d7bb29bf58 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_counter.snap
@@ -9,11 +9,13 @@ ROOT@0..21
THEOREM_DEFINITION_NAME@0..11 "\\newtheorem"
CURLY_GROUP_WORD@11..16
L_CURLY@11..12 "{"
- WORD@12..15 "foo"
+ KEY@12..15
+ WORD@12..15 "foo"
R_CURLY@15..16 "}"
BRACK_GROUP_WORD@16..21
L_BRACK@16..17 "["
- WORD@17..20 "bar"
+ KEY@17..20
+ WORD@17..20 "bar"
R_BRACK@20..21 "]"
MISSING@21..21 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap
index 356dc079f1..7c8b49efa1 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description.snap
@@ -9,7 +9,8 @@ ROOT@0..21
THEOREM_DEFINITION_NAME@0..11 "\\newtheorem"
CURLY_GROUP_WORD@11..16
L_CURLY@11..12 "{"
- WORD@12..15 "foo"
+ KEY@12..15
+ WORD@12..15 "foo"
R_CURLY@15..16 "}"
CURLY_GROUP@16..21
L_CURLY@16..17 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap
index cc6e34d378..3322a9a116 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_name_with_description_and_counter.snap
@@ -9,11 +9,13 @@ ROOT@0..26
THEOREM_DEFINITION_NAME@0..11 "\\newtheorem"
CURLY_GROUP_WORD@11..16
L_CURLY@11..12 "{"
- WORD@12..15 "foo"
+ KEY@12..15
+ WORD@12..15 "foo"
R_CURLY@15..16 "}"
BRACK_GROUP_WORD@16..21
L_BRACK@16..17 "["
- WORD@17..20 "bar"
+ KEY@17..20
+ WORD@17..20 "bar"
R_BRACK@20..21 "]"
CURLY_GROUP@21..26
L_CURLY@21..22 "{"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_only_name.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_only_name.snap
index 27a040b7ff..0ba62df76c 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_only_name.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__theorem_definition_only_name.snap
@@ -9,7 +9,8 @@ ROOT@0..16
THEOREM_DEFINITION_NAME@0..11 "\\newtheorem"
CURLY_GROUP_WORD@11..16
L_CURLY@11..12 "{"
- WORD@12..15 "foo"
+ KEY@12..15
+ WORD@12..15 "foo"
R_CURLY@15..16 "}"
MISSING@16..16 ""
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap
index 4915306c55..4cd63e6728 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__tikz_library_import_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..20
TIKZ_LIBRARY_IMPORT_NAME@0..15 "\\usetikzlibrary"
CURLY_GROUP_WORD_LIST@15..20
L_CURLY@15..16 "{"
- WORD@16..19 "foo"
+ KEY@16..19
+ WORD@16..19 "foo"
R_CURLY@19..20 "}"
diff --git a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap
index 399e16d791..48d6b816f3 100644
--- a/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap
+++ b/support/texlab/src/syntax/latex/snapshots/texlab__syntax__latex__parser__tests__verbatim_include_simple.snap
@@ -9,6 +9,7 @@ ROOT@0..27
VERBATIM_INCLUDE_NAME@0..14 "\\verbatiminput"
CURLY_GROUP_WORD_LIST@14..27
L_CURLY@14..15 "{"
- WORD@15..26 "foo/bar.txt"
+ KEY@15..26
+ WORD@15..26 "foo/bar.txt"
R_CURLY@26..27 "}"