aboutsummaryrefslogtreecommitdiff
path: root/lua/lexers/diff.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lexers/diff.lua')
-rw-r--r--lua/lexers/diff.lua51
1 files changed, 18 insertions, 33 deletions
diff --git a/lua/lexers/diff.lua b/lua/lexers/diff.lua
index cc7ab78..4c87dc2 100644
--- a/lua/lexers/diff.lua
+++ b/lua/lexers/diff.lua
@@ -1,44 +1,29 @@
--- Copyright 2006-2017 Mitchell mitchell.att.foicica.com. See LICENSE.
+-- Copyright 2006-2022 Mitchell. See LICENSE.
-- Diff LPeg lexer.
-local l = require('lexer')
-local token, word_match = l.token, l.word_match
-local P, R, S = lpeg.P, lpeg.R, lpeg.S
+local lexer = require('lexer')
+local token, word_match = lexer.token, lexer.word_match
+local P, S = lpeg.P, lpeg.S
-local M = {_NAME = 'diff'}
+local lex = lexer.new('diff', {lex_by_line = true})
-- Text, separators, and file headers.
-local index = token(l.COMMENT, 'Index: ' * l.any^0 * P(-1))
-local separator = token(l.COMMENT, ('---' + P('*')^4 + P('=')^1) * l.space^0 *
- -1)
-local header = token('header', (P('*** ') + '--- ' + '+++ ') * l.any^1)
+lex:add_rule('index', token(lexer.COMMENT, 'Index: ' * lexer.any^0 * -1))
+lex:add_rule('separator', token(lexer.COMMENT, ('---' + P('*')^4 + P('=')^1) * lexer.space^0 * -1))
+lex:add_rule('header', token('header', (P('*** ') + '--- ' + '+++ ') * lexer.any^1))
+lex:add_style('header', lexer.styles.comment)
-- Location.
-local location = token(l.NUMBER, ('@@' + l.digit^1 + '****') * l.any^1)
+lex:add_rule('location', token(lexer.NUMBER, ('@@' + lexer.dec_num + '****') * lexer.any^1))
-- Additions, deletions, and changes.
-local addition = token('addition', S('>+') * l.any^0)
-local deletion = token('deletion', S('<-') * l.any^0)
-local change = token('change', '! ' * l.any^0)
+lex:add_rule('addition', token('addition', S('>+') * lexer.any^0))
+lex:add_style('addition', {fore = lexer.colors.green})
+lex:add_rule('deletion', token('deletion', S('<-') * lexer.any^0))
+lex:add_style('deletion', {fore = lexer.colors.red})
+lex:add_rule('change', token('change', '!' * lexer.any^0))
+lex:add_style('change', {fore = lexer.colors.yellow})
-M._rules = {
- {'index', index},
- {'separator', separator},
- {'header', header},
- {'location', location},
- {'addition', addition},
- {'deletion', deletion},
- {'change', change},
- {'any_line', token('default', l.any^1)},
-}
+lex:add_rule('any_line', token(lexer.DEFAULT, lexer.any^1))
-M._tokenstyles = {
- header = l.STYLE_COMMENT,
- addition = 'fore:green',
- deletion = 'fore:red',
- change = 'fore:yellow',
-}
-
-M._LEXBYLINE = true
-
-return M
+return lex