mirror of https://github.com/Wilfred/difftastic/
345 lines
7.0 KiB
Scheme
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 "^%%&"))
|