diff options
Diffstat (limited to 'lua/lexers/git-rebase.lua')
| -rw-r--r-- | lua/lexers/git-rebase.lua | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/lua/lexers/git-rebase.lua b/lua/lexers/git-rebase.lua index 42c0e6c..ee68040 100644 --- a/lua/lexers/git-rebase.lua +++ b/lua/lexers/git-rebase.lua @@ -1,51 +1,41 @@ -- Copyright 2017-2021 Marc André Tanner -- git-rebase(1) LPeg lexer. -local l = require('lexer') -local token, word_match = l.token, l.word_match +local lexer = require('lexer') +local token, word_match = lexer.token, lexer.word_match local P, R = lpeg.P, lpeg.R -local M = {_NAME = 'git-rebase'} +local lex = lexer.new('git-rebase', {lex_by_line = true}) -- Whitespace. -local ws = token(l.WHITESPACE, l.space^1) +lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1)) -- Comments. -local comment = token(l.COMMENT, l.starts_line('#') * l.nonnewline^0) +lex:add_rule('comment', token(lexer.COMMENT, lexer.starts_line('#') * lexer.nonnewline^0)) -- Keywords. -local keywords = l.starts_line(word_match{ - 'p', 'pick', - 'r', 'reword', - 'e', 'edit', - 's', 'squash', - 'f', 'fixup', - 'x', 'exec', - 'd', 'drop', - 'b', 'break', - 'l', 'label', - 't', 'reset', - 'm', 'merge', -}) -local keyword = token(l.KEYWORD, keywords) +local keywords = lexer.starts_line(word_match[[ + p pick + r reword + e edit + s squash + f fixup + x exec + d drop + b break + l label + t reset + m merge +]]) +lex:add_rule('keyword', token(lexer.KEYWORD, keywords)) -- Commit SHA1. local function patn(pat, min, max) return -pat^(max + 1) * pat^min end -local commit = token(l.NUMBER, patn(R('09', 'af'), 7, 40)) +lex:add_rule('commit', token(lexer.NUMBER, patn(R('09', 'af'), 7, 40))) -local message = token(l.STRING, l.nonnewline^1) +lex:add_rule('message', token(lexer.STRING, lexer.nonnewline^1)) -M._rules = { - {'whitespace', ws}, - {'comment', comment}, - {'keyword', keyword}, - {'commit', commit}, - {'message', message}, -} - -M._LEXBYLINE = true - -return M +return lex |
