difftastic/vendored_parsers/highlights/latex.scm

345 lines
7.0 KiB
Scheme

;; Based on the nvim-treesitter highlighting, which is under the Apache license.
;; https://github.com/nvim-treesitter/nvim-treesitter/blob/07bd1b53bf465e42d53253b48b7437892d6c45e8/queries/latex/highlights.scm
; General syntax
(command_name) @function @nospell
(caption
command: _ @function)
; Turn spelling on for text
(text) @spell
; \text, \intertext, \shortintertext, ...
(text_mode
command: _ @function @nospell
content: (curly_group
(_) @none @spell))
; Variables, parameters
(placeholder) @variable
(key_value_pair
key: (_) @variable.parameter @nospell
value: (_))
(curly_group_spec
(text) @variable.parameter)
(brack_group_argc) @variable.parameter
[
(operator)
"="
"_"
"^"
] @operator
"\\item" @punctuation.special
(delimiter) @punctuation.delimiter
(math_delimiter
left_command: _ @punctuation.delimiter
left_delimiter: _ @punctuation.delimiter
right_command: _ @punctuation.delimiter
right_delimiter: _ @punctuation.delimiter)
[
"["
"]"
"{"
"}"
] @punctuation.bracket ; "(" ")" has no syntactical meaning in LaTeX
; General environments
(begin
command: _ @module
name: (curly_group_text
(text) @label @nospell))
(end
command: _ @module
name: (curly_group_text
(text) @label @nospell))
; Definitions and references
(new_command_definition
command: _ @function.macro @nospell)
(old_command_definition
command: _ @function.macro @nospell)
(let_command_definition
command: _ @function.macro @nospell)
(environment_definition
command: _ @function.macro @nospell
name: (curly_group_text
(_) @label @nospell))
(theorem_definition
command: _ @function.macro @nospell
name: (curly_group_text_list
(_) @label @nospell))
(paired_delimiter_definition
command: _ @function.macro @nospell
declaration: (curly_group_command_name
(_) @function))
(label_definition
command: _ @function.macro
name: (curly_group_text
(_) @markup.link @nospell))
(label_reference_range
command: _ @function.macro
from: (curly_group_text
(_) @markup.link)
to: (curly_group_text
(_) @markup.link))
(label_reference
command: _ @function.macro
names: (curly_group_text_list
(_) @markup.link))
(label_number
command: _ @function.macro
name: (curly_group_text
(_) @markup.link)
number: (_) @markup.link)
(citation
command: _ @function.macro @nospell
keys: (curly_group_text_list) @markup.link @nospell)
((hyperlink
command: _ @function @nospell
uri: (curly_group_uri
(_) @markup.link.url @nospell)) @_hyperlink)
(glossary_entry_definition
command: _ @function.macro @nospell
name: (curly_group_text
(_) @markup.link @nospell))
(glossary_entry_reference
command: _ @function.macro
name: (curly_group_text
(_) @markup.link))
(acronym_definition
command: _ @function.macro @nospell
name: (curly_group_text
(_) @markup.link @nospell))
(acronym_reference
command: _ @function.macro
name: (curly_group_text
(_) @markup.link))
(color_definition
command: _ @function.macro
name: (curly_group_text
(_) @markup.link))
(color_reference
command: _ @function.macro
name: (curly_group_text
(_) @markup.link)?)
; Sectioning
(title_declaration
command: _ @module
options: (brack_group
(_) @markup.heading.1)?
text: (curly_group
(_) @markup.heading.1))
(author_declaration
command: _ @module
authors: (curly_group_author_list
(author)+ @markup.heading.1))
(chapter
command: _ @module
toc: (brack_group
(_) @markup.heading.2)?
text: (curly_group
(_) @markup.heading.2))
(part
command: _ @module
toc: (brack_group
(_) @markup.heading.2)?
text: (curly_group
(_) @markup.heading.2))
(section
command: _ @module
toc: (brack_group
(_) @markup.heading.3)?
text: (curly_group
(_) @markup.heading.3))
(subsection
command: _ @module
toc: (brack_group
(_) @markup.heading.4)?
text: (curly_group
(_) @markup.heading.4))
(subsubsection
command: _ @module
toc: (brack_group
(_) @markup.heading.5)?
text: (curly_group
(_) @markup.heading.5))
(paragraph
command: _ @module
toc: (brack_group
(_) @markup.heading.6)?
text: (curly_group
(_) @markup.heading.6))
(subparagraph
command: _ @module
toc: (brack_group
(_) @markup.heading.6)?
text: (curly_group
(_) @markup.heading.6))
; Beamer frames
(generic_environment
(begin
name: (curly_group_text
(text) @label)
(#any-of? @label "frame"))
.
(curly_group
(_) @markup.heading))
((generic_command
command: (command_name) @_name
arg: (curly_group
(_) @markup.heading))
(#eq? @_name "\\frametitle"))
((generic_command
command: (command_name) @_name
arg: (curly_group
(_) @markup.italic))
(#any-of? @_name "\\emph" "\\textit" "\\mathit"))
((generic_command
command: (command_name) @_name
arg: (curly_group
(_) @markup.strong))
(#any-of? @_name "\\textbf" "\\mathbf"))
(generic_command
(command_name) @keyword.conditional
(#lua-match? @keyword.conditional "^\\if[a-zA-Z@]+$"))
(generic_command
(command_name) @keyword.conditional
(#any-of? @keyword.conditional "\\fi" "\\else"))
; File inclusion commands
(class_include
command: _ @keyword.import
path: (curly_group_path) @string)
(package_include
command: _ @keyword.import
paths: (curly_group_path_list) @string)
(latex_include
command: _ @keyword.import
path: (curly_group_path) @string.special.path)
(verbatim_include
command: _ @keyword.import
path: (curly_group_path) @string.special.path)
(import_include
command: _ @keyword.import
directory: (curly_group_path) @string.special.path
file: (curly_group_path) @string.special.path)
(bibstyle_include
command: _ @keyword.import
path: (curly_group_path) @string)
(bibtex_include
command: _ @keyword.import
paths: (curly_group_path_list) @string.special.path)
(biblatex_include
"\\addbibresource" @keyword.import
glob: (curly_group_glob_pattern) @string.regexp)
(graphics_include
command: _ @keyword.import
path: (curly_group_path) @string.special.path)
(svg_include
command: _ @keyword.import
path: (curly_group_path) @string.special.path)
(inkscape_include
command: _ @keyword.import
path: (curly_group_path) @string.special.path)
(tikz_library_import
command: _ @keyword.import
paths: (curly_group_path_list) @string)
; Turn spelling off for whole nodes
[
(label_reference)
(label_reference_range)
(label_number)
(glossary_entry_reference)
(acronym_reference)
(color_definition)
(color_reference)
(class_include)
(package_include)
(latex_include)
(verbatim_include)
(import_include)
(bibstyle_include)
(bibtex_include)
(biblatex_include)
(graphics_include)
(svg_include)
(inkscape_include)
(tikz_library_import)
] @nospell
; Math
[
(displayed_equation)
(inline_formula)
] @markup.math @nospell
(math_environment
(_) @markup.math)
; Comments
[
(line_comment)
(block_comment)
(comment_environment)
] @comment @spell
((line_comment) @keyword.directive @nospell
(#lua-match? @keyword.directive "^%% !TeX"))
((line_comment) @keyword.directive @nospell
(#lua-match? @keyword.directive "^%%&"))