mirror of https://github.com/Wilfred/difftastic/
Merge commit '7b06f6ed394308e7407a1703d2724128c45fc9d7'
commit
d51fb186be
@ -1,252 +1,344 @@
|
||||
;; Based on the nvim-treesitter highlighting, which is under the Apache license.
|
||||
;; https://github.com/nvim-treesitter/nvim-treesitter/blob/f0b50973f334a7a5bb5831cb52b9fd4c770e6cba/queries/latex/highlights.scm
|
||||
;; https://github.com/nvim-treesitter/nvim-treesitter/blob/07bd1b53bf465e42d53253b48b7437892d6c45e8/queries/latex/highlights.scm
|
||||
|
||||
;; General syntax
|
||||
(ERROR) @error
|
||||
; General syntax
|
||||
(command_name) @function @nospell
|
||||
|
||||
(command_name) @function
|
||||
(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: (_) @parameter
|
||||
key: (_) @variable.parameter @nospell
|
||||
value: (_))
|
||||
|
||||
[
|
||||
(line_comment)
|
||||
(block_comment)
|
||||
(comment_environment)
|
||||
] @comment
|
||||
(curly_group_spec
|
||||
(text) @variable.parameter)
|
||||
|
||||
((line_comment) @preproc
|
||||
(#lua-match? @preproc "^%% !TeX"))
|
||||
(brack_group_argc) @variable.parameter
|
||||
|
||||
[
|
||||
(brack_group)
|
||||
(brack_group_argc)
|
||||
] @parameter
|
||||
|
||||
[(operator) "="] @operator
|
||||
(operator)
|
||||
"="
|
||||
"_"
|
||||
"^"
|
||||
] @operator
|
||||
|
||||
"\\item" @punctuation.special
|
||||
|
||||
((word) @punctuation.delimiter
|
||||
(#eq? @punctuation.delimiter "&"))
|
||||
(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
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket ; "(" ")" has no syntactical meaning in LaTeX
|
||||
|
||||
;; General environments
|
||||
; General environments
|
||||
(begin
|
||||
command: _ @text.environment
|
||||
name: (curly_group_text (text) @text.environment.name))
|
||||
command: _ @module
|
||||
name: (curly_group_text
|
||||
(text) @label @nospell))
|
||||
|
||||
(end
|
||||
command: _ @text.environment
|
||||
name: (curly_group_text (text) @text.environment.name))
|
||||
command: _ @module
|
||||
name: (curly_group_text
|
||||
(text) @label @nospell))
|
||||
|
||||
;; Definitions and references
|
||||
; Definitions and references
|
||||
(new_command_definition
|
||||
command: _ @function.macro
|
||||
declaration: (curly_group_command_name (_) @function))
|
||||
command: _ @function.macro @nospell)
|
||||
|
||||
(old_command_definition
|
||||
command: _ @function.macro
|
||||
declaration: (_) @function)
|
||||
command: _ @function.macro @nospell)
|
||||
|
||||
(let_command_definition
|
||||
command: _ @function.macro
|
||||
declaration: (_) @function)
|
||||
command: _ @function.macro @nospell)
|
||||
|
||||
(environment_definition
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro @nospell
|
||||
name: (curly_group_text
|
||||
(_) @label @nospell))
|
||||
|
||||
(theorem_definition
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.environment.name))
|
||||
command: _ @function.macro @nospell
|
||||
name: (curly_group_text_list
|
||||
(_) @label @nospell))
|
||||
|
||||
(paired_delimiter_definition
|
||||
command: _ @function.macro
|
||||
declaration: (curly_group_command_name (_) @function))
|
||||
command: _ @function.macro @nospell
|
||||
declaration: (curly_group_command_name
|
||||
(_) @function))
|
||||
|
||||
(label_definition
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link @nospell))
|
||||
|
||||
(label_reference_range
|
||||
command: _ @function.macro
|
||||
from: (curly_group_text (_) @text.reference)
|
||||
to: (curly_group_text (_) @text.reference))
|
||||
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 (_) @text.reference))
|
||||
command: _ @function.macro
|
||||
names: (curly_group_text_list
|
||||
(_) @markup.link))
|
||||
|
||||
(label_number
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference)
|
||||
number: (_) @text.reference)
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link)
|
||||
number: (_) @markup.link)
|
||||
|
||||
(citation
|
||||
command: _ @function.macro
|
||||
keys: (curly_group_text_list) @text.reference)
|
||||
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
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro @nospell
|
||||
name: (curly_group_text
|
||||
(_) @markup.link @nospell))
|
||||
|
||||
(glossary_entry_reference
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link))
|
||||
|
||||
(acronym_definition
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro @nospell
|
||||
name: (curly_group_text
|
||||
(_) @markup.link @nospell))
|
||||
|
||||
(acronym_reference
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link))
|
||||
|
||||
(color_definition
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
(color_reference
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text (_) @text.reference))
|
||||
|
||||
;; Math
|
||||
[
|
||||
(displayed_equation)
|
||||
(inline_formula)
|
||||
] @text.math
|
||||
|
||||
(math_environment
|
||||
(begin
|
||||
command: _ @text.math
|
||||
name: (curly_group_text (text) @text.math)))
|
||||
|
||||
(math_environment
|
||||
(text) @text.math)
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link))
|
||||
|
||||
(math_environment
|
||||
(end
|
||||
command: _ @text.math
|
||||
name: (curly_group_text (text) @text.math)))
|
||||
(color_reference
|
||||
command: _ @function.macro
|
||||
name: (curly_group_text
|
||||
(_) @markup.link)?)
|
||||
|
||||
;; Sectioning
|
||||
; Sectioning
|
||||
(title_declaration
|
||||
command: _ @namespace
|
||||
options: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
options: (brack_group
|
||||
(_) @markup.heading.1)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.1))
|
||||
|
||||
(author_declaration
|
||||
command: _ @namespace
|
||||
command: _ @module
|
||||
authors: (curly_group_author_list
|
||||
((author)+ @text.title)))
|
||||
(author)+ @markup.heading.1))
|
||||
|
||||
(chapter
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.2)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.2))
|
||||
|
||||
(part
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.2)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.2))
|
||||
|
||||
(section
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.3)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.3))
|
||||
|
||||
(subsection
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.4)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.4))
|
||||
|
||||
(subsubsection
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.5)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.5))
|
||||
|
||||
(paragraph
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.6)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.6))
|
||||
|
||||
(subparagraph
|
||||
command: _ @namespace
|
||||
toc: (brack_group (_) @text.title)?
|
||||
text: (curly_group (_) @text.title))
|
||||
command: _ @module
|
||||
toc: (brack_group
|
||||
(_) @markup.heading.6)?
|
||||
text: (curly_group
|
||||
(_) @markup.heading.6))
|
||||
|
||||
;; Beamer frames
|
||||
; Beamer frames
|
||||
(generic_environment
|
||||
(begin
|
||||
name: (curly_group_text
|
||||
(text) @text.environment.name)
|
||||
(#any-of? @text.environment.name "frame"))
|
||||
(text) @label)
|
||||
(#any-of? @label "frame"))
|
||||
.
|
||||
(curly_group (_) @text.title))
|
||||
(curly_group
|
||||
(_) @markup.heading))
|
||||
|
||||
((generic_command
|
||||
command: (command_name) @_name
|
||||
arg: (curly_group
|
||||
(text) @text.title))
|
||||
(#eq? @_name "\\frametitle"))
|
||||
(_) @markup.heading))
|
||||
(#eq? @_name "\\frametitle"))
|
||||
|
||||
;; Formatting
|
||||
((generic_command
|
||||
command: (command_name) @_name
|
||||
arg: (curly_group (_) @text.emphasis))
|
||||
(#eq? @_name "\\emph"))
|
||||
arg: (curly_group
|
||||
(_) @markup.italic))
|
||||
(#any-of? @_name "\\emph" "\\textit" "\\mathit"))
|
||||
|
||||
((generic_command
|
||||
command: (command_name) @_name
|
||||
arg: (curly_group (_) @text.emphasis))
|
||||
(#match? @_name "^(\\\\textit|\\\\mathit)$"))
|
||||
arg: (curly_group
|
||||
(_) @markup.strong))
|
||||
(#any-of? @_name "\\textbf" "\\mathbf"))
|
||||
|
||||
((generic_command
|
||||
command: (command_name) @_name
|
||||
arg: (curly_group (_) @text.strong))
|
||||
(#match? @_name "^(\\\\textbf|\\\\mathbf)$"))
|
||||
(generic_command
|
||||
(command_name) @keyword.conditional
|
||||
(#lua-match? @keyword.conditional "^\\if[a-zA-Z@]+$"))
|
||||
|
||||
((generic_command
|
||||
command: (command_name) @_name
|
||||
.
|
||||
arg: (curly_group (_) @text.uri))
|
||||
(#match? @_name "^(\\\\url|\\\\href)$"))
|
||||
(generic_command
|
||||
(command_name) @keyword.conditional
|
||||
(#any-of? @keyword.conditional "\\fi" "\\else"))
|
||||
|
||||
;; File inclusion commands
|
||||
; File inclusion commands
|
||||
(class_include
|
||||
command: _ @include
|
||||
command: _ @keyword.import
|
||||
path: (curly_group_path) @string)
|
||||
|
||||
(package_include
|
||||
command: _ @include
|
||||
command: _ @keyword.import
|
||||
paths: (curly_group_path_list) @string)
|
||||
|
||||
(latex_include
|
||||
command: _ @include
|
||||
path: (curly_group_path) @string)
|
||||
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: _ @include
|
||||
directory: (curly_group_path) @string
|
||||
file: (curly_group_path) @string)
|
||||
command: _ @keyword.import
|
||||
directory: (curly_group_path) @string.special.path
|
||||
file: (curly_group_path) @string.special.path)
|
||||
|
||||
(bibtex_include
|
||||
command: _ @include
|
||||
(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" @include
|
||||
glob: (curly_group_glob_pattern) @string.regex)
|
||||
"\\addbibresource" @keyword.import
|
||||
glob: (curly_group_glob_pattern) @string.regexp)
|
||||
|
||||
(graphics_include
|
||||
command: _ @include
|
||||
path: (curly_group_path) @string)
|
||||
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: _ @include
|
||||
command: _ @keyword.import
|
||||
paths: (curly_group_path_list) @string)
|
||||
|
||||
(text) @spell
|
||||
(inline_formula) @nospell
|
||||
(displayed_equation) @nospell
|
||||
(key_value_pair) @nospell
|
||||
(generic_environment
|
||||
begin: _ @nospell
|
||||
end: _ @nospell)
|
||||
(citation
|
||||
keys: _ @nospell)
|
||||
(command_name) @nospell
|
||||
; 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 "^%%&"))
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
{
|
||||
"grammars": [
|
||||
{
|
||||
"name": "@pfoerster/latex",
|
||||
"camelcase": "PfoersterLatex",
|
||||
"scope": "source.tex",
|
||||
"path": ".",
|
||||
"file-types": [
|
||||
"tex",
|
||||
"sty",
|
||||
"cls",
|
||||
"aux"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"version": "0.4.0",
|
||||
"license": "MIT",
|
||||
"description": "LaTeX grammar for the tree-sitter parsing library",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Patrick Förster",
|
||||
"email": "patrick.foerster@outlook.de"
|
||||
}
|
||||
],
|
||||
"links": {
|
||||
"repository": "git+https://github.com/latex-lsp/tree-sitter-latex.git"
|
||||
}
|
||||
},
|
||||
"bindings": {
|
||||
"c": true,
|
||||
"go": true,
|
||||
"node": true,
|
||||
"python": true,
|
||||
"rust": true,
|
||||
"swift": true
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue