aboutsummaryrefslogtreecommitdiff
path: root/lua/lexers/git-rebase.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lexers/git-rebase.lua')
-rw-r--r--lua/lexers/git-rebase.lua54
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