aboutsummaryrefslogtreecommitdiff
path: root/runtime/queries/latex
diff options
context:
space:
mode:
authorErasin2022-08-10 12:29:43 +0000
committerGitHub2022-08-10 12:29:43 +0000
commit921027fb32018546fa459ffaf4afa4960f56d1b6 (patch)
treeda249a0a76602fbece5baf5887e92416fe3811e8 /runtime/queries/latex
parent598aa7c424246d6955bbadba7b42b895fe492e5c (diff)
Update tree-sitter-latex and highlights (#3370)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Diffstat (limited to 'runtime/queries/latex')
-rw-r--r--runtime/queries/latex/highlights.scm545
-rw-r--r--runtime/queries/latex/textobjects.scm13
2 files changed, 198 insertions, 360 deletions
diff --git a/runtime/queries/latex/highlights.scm b/runtime/queries/latex/highlights.scm
index 0a030b31..e39226a2 100644
--- a/runtime/queries/latex/highlights.scm
+++ b/runtime/queries/latex/highlights.scm
@@ -1,410 +1,235 @@
-;; Math
-[
- (displayed_equation)
- (inline_formula)
-] @text.math
-
-;; This highlights the whole environment like vimtex does
-((environment
- (begin
- name: (word) @_env)) @text.math
- (#any-of? @_env
- "displaymath" "displaymath*"
- "equation" "equation*"
- "multline" "multline*"
- "eqnarray" "eqnarray*"
- "align" "align*"
- "array" "array*"
- "split" "split*"
- "alignat" "alignat*"
- "gather" "gather*"
- "flalign" "flalign*"))
+;; General syntax
+(ERROR) @error
-[
- (generic_command_name)
- "\\newcommand"
- "\\renewcommand"
- "\\DeclareRobustCommand"
- "\\DeclareMathOperator"
- "\\newglossaryentry"
- "\\caption"
- "\\label"
- "\\newlabel"
- "\\color"
- "\\colorbox"
- "\\textcolor"
- "\\pagecolor"
- "\\definecolor"
- "\\definecolorset"
- "\\newtheorem"
- "\\declaretheorem"
- "\\newacronym"
-] @function.macro
+(command_name) @function
+(caption
+ command: _ @function)
-[
- "\\ref"
- "\\vref"
- "\\Vref"
- "\\autoref"
- "\\pageref"
- "\\cref"
- "\\Cref"
- "\\cref*"
- "\\Cref*"
- "\\namecref"
- "\\nameCref"
- "\\lcnamecref"
- "\\namecrefs"
- "\\nameCrefs"
- "\\lcnamecrefs"
- "\\labelcref"
- "\\labelcpageref"
- "\\crefrange"
- "\\crefrange"
- "\\Crefrange"
- "\\Crefrange"
- "\\crefrange*"
- "\\crefrange*"
- "\\Crefrange*"
- "\\Crefrange*"
-] @function.macro
+(key_value_pair
+ key: (_) @variable.parameter
+ value: (_))
[
- "\\cite"
- "\\cite*"
- "\\Cite"
- "\\nocite"
- "\\citet"
- "\\citep"
- "\\citet*"
- "\\citep*"
- "\\citeauthor"
- "\\citeauthor*"
- "\\Citeauthor"
- "\\Citeauthor*"
- "\\citetitle"
- "\\citetitle*"
- "\\citeyear"
- "\\citeyear*"
- "\\citedate"
- "\\citedate*"
- "\\citeurl"
- "\\fullcite"
- "\\citeyearpar"
- "\\citealt"
- "\\citealp"
- "\\citetext"
- "\\parencite"
- "\\parencite*"
- "\\Parencite"
- "\\footcite"
- "\\footfullcite"
- "\\footcitetext"
- "\\textcite"
- "\\Textcite"
- "\\smartcite"
- "\\Smartcite"
- "\\supercite"
- "\\autocite"
- "\\Autocite"
- "\\autocite*"
- "\\Autocite*"
- "\\volcite"
- "\\Volcite"
- "\\pvolcite"
- "\\Pvolcite"
- "\\fvolcite"
- "\\ftvolcite"
- "\\svolcite"
- "\\Svolcite"
- "\\tvolcite"
- "\\Tvolcite"
- "\\avolcite"
- "\\Avolcite"
- "\\notecite"
- "\\notecite"
- "\\pnotecite"
- "\\Pnotecite"
- "\\fnotecite"
-] @function.macro
+ (comment)
+ (line_comment)
+ (block_comment)
+ (comment_environment)
+] @comment
[
- "\\ref"
- "\\vref"
- "\\Vref"
- "\\autoref"
- "\\pageref"
- "\\cref"
- "\\Cref"
- "\\cref*"
- "\\Cref*"
- "\\namecref"
- "\\nameCref"
- "\\lcnamecref"
- "\\namecrefs"
- "\\nameCrefs"
- "\\lcnamecrefs"
- "\\labelcref"
- "\\labelcpageref"
-] @function.macro
+ (brack_group)
+ (brack_group_argc)
+] @variable.parameter
+[(operator) "="] @operator
-[
- "\\crefrange"
- "\\crefrange"
- "\\Crefrange"
- "\\Crefrange"
- "\\crefrange*"
- "\\crefrange*"
- "\\Crefrange*"
- "\\Crefrange*"
-] @function.macro
+"\\item" @punctuation.special
+((word) @punctuation.delimiter
+ (#eq? @punctuation.delimiter "&"))
-[
- "\\gls"
- "\\Gls"
- "\\GLS"
- "\\glspl"
- "\\Glspl"
- "\\GLSpl"
- "\\glsdisp"
- "\\glslink"
- "\\glstext"
- "\\Glstext"
- "\\GLStext"
- "\\glsfirst"
- "\\Glsfirst"
- "\\GLSfirst"
- "\\glsplural"
- "\\Glsplural"
- "\\GLSplural"
- "\\glsfirstplural"
- "\\Glsfirstplural"
- "\\GLSfirstplural"
- "\\glsname"
- "\\Glsname"
- "\\GLSname"
- "\\glssymbol"
- "\\Glssymbol"
- "\\glsdesc"
- "\\Glsdesc"
- "\\GLSdesc"
- "\\glsuseri"
- "\\Glsuseri"
- "\\GLSuseri"
- "\\glsuserii"
- "\\Glsuserii"
- "\\GLSuserii"
- "\\glsuseriii"
- "\\Glsuseriii"
- "\\GLSuseriii"
- "\\glsuseriv"
- "\\Glsuseriv"
- "\\GLSuseriv"
- "\\glsuserv"
- "\\Glsuserv"
- "\\GLSuserv"
- "\\glsuservi"
- "\\Glsuservi"
- "\\GLSuservi"
-] @function.macro
+["[" "]" "{" "}"] @punctuation.bracket ; "(" ")" has no syntactical meaning in LaTeX
+;; General environments
+(begin
+ command: _ @function.builtin
+ name: (curly_group_text (text) @function.macro))
-[
- "\\acrshort"
- "\\Acrshort"
- "\\ACRshort"
- "\\acrshortpl"
- "\\Acrshortpl"
- "\\ACRshortpl"
- "\\acrlong"
- "\\Acrlong"
- "\\ACRlong"
- "\\acrlongpl"
- "\\Acrlongpl"
- "\\ACRlongpl"
- "\\acrfull"
- "\\Acrfull"
- "\\ACRfull"
- "\\acrfullpl"
- "\\Acrfullpl"
- "\\ACRfullpl"
- "\\acs"
- "\\Acs"
- "\\acsp"
- "\\Acsp"
- "\\acl"
- "\\Acl"
- "\\aclp"
- "\\Aclp"
- "\\acf"
- "\\Acf"
- "\\acfp"
- "\\Acfp"
- "\\ac"
- "\\Ac"
- "\\acp"
- "\\glsentrylong"
- "\\Glsentrylong"
- "\\glsentrylongpl"
- "\\Glsentrylongpl"
- "\\glsentryshort"
- "\\Glsentryshort"
- "\\glsentryshortpl"
- "\\Glsentryshortpl"
- "\\glsentryfullpl"
- "\\Glsentryfullpl"
-] @function.macro
-
-(comment) @comment
-
-(bracket_group) @variable.parameter
-
-[(math_operator) "="] @operator
+(end
+ command: _ @function.builtin
+ name: (curly_group_text (text) @function.macro))
+
+;; Definitions and references
+(new_command_definition
+ command: _ @function.macro
+ declaration: (curly_group_command_name (_) @function))
+(old_command_definition
+ command: _ @function.macro
+ declaration: (_) @function)
+(let_command_definition
+ command: _ @function.macro
+ declaration: (_) @function)
+
+(environment_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @constant))
+
+(theorem_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @constant))
+
+(paired_delimiter_definition
+ command: _ @function.macro
+ declaration: (curly_group_command_name (_) @function))
-[
- "\\usepackage"
- "\\documentclass"
- "\\input"
- "\\include"
- "\\subfile"
- "\\subfileinclude"
- "\\subfileinclude"
- "\\includegraphics"
- "\\addbibresource"
- "\\bibliography"
- "\\includesvg"
- "\\includeinkscape"
- "\\usepgflibrary"
- "\\usetikzlibrary"
-] @keyword.control.import
+(label_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @label))
+(label_reference_range
+ command: _ @function.macro
+ from: (curly_group_text (_) @label)
+ to: (curly_group_text (_) @label))
+(label_reference
+ command: _ @function.macro
+ names: (curly_group_text_list (_) @label))
+(label_number
+ command: _ @function.macro
+ name: (curly_group_text (_) @label)
+ number: (_) @markup.link.label)
-[
- "\\part"
- "\\chapter"
- "\\section"
- "\\subsection"
- "\\subsubsection"
- "\\paragraph"
- "\\subparagraph"
-] @type
+(citation
+ command: _ @function.macro
+ keys: (curly_group_text_list) @string)
+
+(glossary_entry_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
+(glossary_entry_reference
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
+
+(acronym_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
+(acronym_reference
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
+
+(color_definition
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
+(color_reference
+ command: _ @function.macro
+ name: (curly_group_text (_) @string))
-"\\item" @punctuation.special
+;; Math
-((word) @punctuation.delimiter
-(#eq? @punctuation.delimiter "&"))
+(displayed_equation) @markup.raw.block
+(inline_formula) @markup.raw.inline
-["$" "\\[" "\\]" "\\(" "\\)"] @punctuation.delimiter
+(math_environment
+ (begin
+ command: _ @function.builtin
+ name: (curly_group_text (text) @markup.raw)))
-(label_definition
- name: (_) @text.reference)
-(label_reference
- label: (_) @text.reference)
-(equation_label_reference
- label: (_) @text.reference)
-(label_reference
- label: (_) @text.reference)
-(label_number
- label: (_) @text.reference)
+(math_environment
+ (text) @markup.raw)
-(citation
- key: (word) @text.reference)
+(math_environment
+ (end
+ command: _ @function.builtin
+ name: (curly_group_text (text) @markup.raw)))
-(key_val_pair
- key: (_) @variable.parameter
- value: (_))
+;; Sectioning
+(title_declaration
+ command: _ @namespace
+ options: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
-["[" "]" "{" "}"] @punctuation.bracket ;"(" ")" is has no special meaning in LaTeX
+(author_declaration
+ command: _ @namespace
+ authors: (curly_group_author_list
+ ((author)+ @markup.heading)))
(chapter
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(part
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(section
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(subsection
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(subsubsection
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(paragraph
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
(subparagraph
- text: (brace_group) @markup.heading)
+ command: _ @namespace
+ toc: (brack_group (_) @markup.heading)?
+ text: (curly_group (_) @markup.heading))
-((environment
+;; Beamer frames
+(generic_environment
(begin
- name: (word) @_frame)
- (brace_group
- child: (text) @markup.heading))
- (#eq? @_frame "frame"))
+ name: (curly_group_text
+ (text) @markup.heading)
+ (#any-of? @markup.heading "frame"))
+ .
+ (curly_group (_) @markup.heading))
((generic_command
- name:(generic_command_name) @_name
- arg: (brace_group
+ command: (command_name) @_name
+ arg: (curly_group
(text) @markup.heading))
- (#eq? @_name "\\frametitle"))
+ (#eq? @_name "\\frametitle"))
;; Formatting
-
((generic_command
- name:(generic_command_name) @_name
- arg: (_) @markup.italic)
- (#eq? @_name "\\emph"))
+ command: (command_name) @_name
+ arg: (curly_group (_) @markup.italic))
+ (#eq? @_name "\\emph"))
((generic_command
- name:(generic_command_name) @_name
- arg: (_) @markup.italic)
- (#match? @_name "^(\\\\textit|\\\\mathit)$"))
+ command: (command_name) @_name
+ arg: (curly_group (_) @markup.italic))
+ (#match? @_name "^(\\\\textit|\\\\mathit)$"))
((generic_command
- name:(generic_command_name) @_name
- arg: (_) @markup.bold)
- (#match? @_name "^(\\\\textbf|\\\\mathbf)$"))
+ command: (command_name) @_name
+ arg: (curly_group (_) @markup.bold))
+ (#match? @_name "^(\\\\textbf|\\\\mathbf)$"))
((generic_command
- name:(generic_command_name) @_name
+ command: (command_name) @_name
.
- arg: (_) @markup.link.url)
- (#match? @_name "^(\\\\url|\\\\href)$"))
-
-(ERROR) @error
-
-[
- "\\begin"
- "\\end"
-] @text.environment
-
-(begin
- name: (_) @text.environment.name
- (#not-any-of? @text.environment.name
- "displaymath" "displaymath*"
- "equation" "equation*"
- "multline" "multline*"
- "eqnarray" "eqnarray*"
- "align" "align*"
- "array" "array*"
- "split" "split*"
- "alignat" "alignat*"
- "gather" "gather*"
- "flalign" "flalign*"))
-
-(end
- name: (_) @text.environment.name
- (#not-any-of? @text.environment.name
- "displaymath" "displaymath*"
- "equation" "equation*"
- "multline" "multline*"
- "eqnarray" "eqnarray*"
- "align" "align*"
- "array" "array*"
- "split" "split*"
- "alignat" "alignat*"
- "gather" "gather*"
- "flalign" "flalign*"))
+ arg: (curly_group (_) @markup.link.uri))
+ (#match? @_name "^(\\\\url|\\\\href)$"))
+
+;; File inclusion commands
+(class_include
+ command: _ @keyword.storage.type
+ path: (curly_group_path) @string)
+
+(package_include
+ command: _ @keyword.storage.type
+ paths: (curly_group_path_list) @string)
+
+(latex_include
+ command: _ @keyword.control.import
+ path: (curly_group_path) @string)
+(import_include
+ command: _ @keyword.control.import
+ directory: (curly_group_path) @string
+ file: (curly_group_path) @string)
+
+(bibtex_include
+ command: _ @keyword.control.import
+ path: (curly_group_path) @string)
+(biblatex_include
+ "\\addbibresource" @include
+ glob: (curly_group_glob_pattern) @string.regex)
+
+(graphics_include
+ command: _ @keyword.control.import
+ path: (curly_group_path) @string)
+(tikz_library_import
+ command: _ @keyword.control.import
+ paths: (curly_group_path_list) @string)
diff --git a/runtime/queries/latex/textobjects.scm b/runtime/queries/latex/textobjects.scm
new file mode 100644
index 00000000..40bb3526
--- /dev/null
+++ b/runtime/queries/latex/textobjects.scm
@@ -0,0 +1,13 @@
+[
+ (generic_command)
+] @function.around
+
+[
+ (chapter)
+ (part)
+ (section)
+ (subsection)
+ (subsubsection)
+ (paragraph)
+ (subparagraph)
+] @class.around