aboutsummaryrefslogtreecommitdiff
path: root/lua/lexers/latex.lua
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2023-08-11 01:27:32 +0200
committerRandy Palamar <randy@rnpnr.xyz>2024-03-27 06:04:21 -0600
commit4c4392d29df777ff702dfe99b4f3c23142976e05 (patch)
tree5355324abe18952f7d19d6cfc5dbeb5d6cb72b84 /lua/lexers/latex.lua
parent95bf9f59f8a9a37148bdc0787db378d62c7cd032 (diff)
downloadvis-4c4392d29df777ff702dfe99b4f3c23142976e05.tar.gz
vis-4c4392d29df777ff702dfe99b4f3c23142976e05.tar.xz
update lexers to orbitalquark/scintillua@b789dde
Rather than cherry pick patches from after 6.2 we will just grab everything as is.
Diffstat (limited to 'lua/lexers/latex.lua')
-rw-r--r--lua/lexers/latex.lua30
1 files changed, 12 insertions, 18 deletions
diff --git a/lua/lexers/latex.lua b/lua/lexers/latex.lua
index a0b8995..c7e63be 100644
--- a/lua/lexers/latex.lua
+++ b/lua/lexers/latex.lua
@@ -1,50 +1,44 @@
--- Copyright 2006-2022 Mitchell. See LICENSE.
+-- Copyright 2006-2024 Mitchell. See LICENSE.
-- Latex LPeg lexer.
-- Modified by Brian Schott.
-- Modified by Robert Gieseke.
-local lexer = require('lexer')
-local token, word_match = lexer.token, lexer.word_match
+local lexer = lexer
+local word_match = lexer.word_match
local P, S = lpeg.P, lpeg.S
-local lex = lexer.new('latex')
-
--- Whitespace.
-lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1))
+local lex = lexer.new(...)
-- Comments.
local line_comment = lexer.to_eol('%')
local block_comment = lexer.range('\\begin' * P(' ')^0 * '{comment}',
'\\end' * P(' ')^0 * '{comment}')
-lex:add_rule('comment', token(lexer.COMMENT, line_comment + block_comment))
+lex:add_rule('comment', lex:tag(lexer.COMMENT, line_comment + block_comment))
-- Math environments.
local math_word = word_match('align displaymath eqnarray equation gather math multline')
local math_begin_end = (P('begin') + P('end')) * P(' ')^0 * '{' * math_word * P('*')^-1 * '}'
-lex:add_rule('math', token('math', '$' + '\\' * (S('[]()') + math_begin_end)))
-lex:add_style('math', lexer.styles['function'])
+lex:add_rule('math', lex:tag('environment.math', '$' + '\\' * (S('[]()') + math_begin_end)))
-- LaTeX environments.
-lex:add_rule('environment', token('environment', '\\' * (P('begin') + 'end') * P(' ')^0 * '{' *
+lex:add_rule('environment', lex:tag('environment', '\\' * (P('begin') + 'end') * P(' ')^0 * '{' *
lexer.word * P('*')^-1 * '}'))
-lex:add_style('environment', lexer.styles.keyword)
-- Sections.
-lex:add_rule('section', token('section', '\\' *
+lex:add_rule('section', lex:tag('command.section', '\\' *
word_match('part chapter section subsection subsubsection paragraph subparagraph') * P('*')^-1))
-lex:add_style('section', lexer.styles.class)
-- Commands.
-lex:add_rule('command', token('command', '\\' * (lexer.alpha^1 + S('#$&~_^%{}\\'))))
-lex:add_style('command', lexer.styles.keyword)
+lex:add_rule('command', lex:tag('command', '\\' * (lexer.alpha^1 + S('#$&~_^%{}\\'))))
-- Operators.
-lex:add_rule('operator', token(lexer.OPERATOR, S('&#{}[]')))
+lex:add_rule('operator', lex:tag(lexer.OPERATOR, S('&#{}[]')))
-- Fold points.
lex:add_fold_point(lexer.COMMENT, '\\begin', '\\end')
-lex:add_fold_point(lexer.COMMENT, lexer.fold_consecutive_lines('%'))
lex:add_fold_point('environment', '\\begin', '\\end')
lex:add_fold_point(lexer.OPERATOR, '{', '}')
+lexer.property['scintillua.comment'] = '%'
+
return lex