diff options
Diffstat (limited to 'lua/lexers/taskpaper.lua')
| -rw-r--r-- | lua/lexers/taskpaper.lua | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/lua/lexers/taskpaper.lua b/lua/lexers/taskpaper.lua index 4d77285..c314d44 100644 --- a/lua/lexers/taskpaper.lua +++ b/lua/lexers/taskpaper.lua @@ -1,39 +1,27 @@ --- Copyright (c) 2016-2022 Larry Hynes. See LICENSE. +-- Copyright (c) 2016-2024 Larry Hynes. See LICENSE. -- Taskpaper LPeg lexer -local lexer = require('lexer') -local token = lexer.token +local lexer = lexer local P, S = lpeg.P, lpeg.S -local lex = lexer.new('taskpaper', {lex_by_line = true}) - -local delimiter = P(' ') + P('\t') +local lex = lexer.new(..., {lex_by_line = true}) -- Notes. -lex:add_rule('note', token('note', delimiter^1 * lexer.to_eol(lexer.alnum))) -lex:add_style('note', lexer.styles.constant) +local delimiter = lpeg.B(' ') + lpeg.B('\t') +lex:add_rule('note', delimiter * lex:tag('note', lexer.to_eol(lexer.alnum))) -- Tasks. -lex:add_rule('task', token('task', delimiter^1 * '-' + lexer.newline)) -lex:add_style('task', lexer.styles['function']) - --- Whitespace. -lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1)) +lex:add_rule('task', delimiter * lex:tag(lexer.LIST, '-')) -- Projects. -lex:add_rule('project', - token('project', lexer.range(lexer.starts_line(lexer.alnum), ':') * lexer.newline)) -lex:add_style('project', lexer.styles.label) +lex:add_rule('project', lex:tag(lexer.HEADING, + lexer.range(lexer.starts_line(lexer.alnum), ':') * lexer.newline)) -- Tags. -lex:add_rule('extended_tag', token('extended_tag', '@' * lexer.word * '(' * +lex:add_rule('extended_tag', lex:tag(lexer.TAG .. '.extended', '@' * lexer.word * '(' * (lexer.word + lexer.digit + '-')^1 * ')')) -lex:add_style('extended_tag', lexer.styles.comment) -lex:add_rule('day_tag', token('day_tag', (P('@today') + '@tomorrow'))) -lex:add_style('day_tag', lexer.styles.class) -lex:add_rule('overdue_tag', token('overdue_tag', '@overdue')) -lex:add_style('overdue_tag', lexer.styles.preprocessor) -lex:add_rule('plain_tag', token('plain_tag', '@' * lexer.word)) -lex:add_style('plain_tag', lexer.styles.comment) +lex:add_rule('day_tag', lex:tag(lexer.TAG .. '.day', (P('@today') + '@tomorrow'))) +lex:add_rule('overdue_tag', lex:tag(lexer.TAG .. '.overdue', '@overdue')) +lex:add_rule('plain_tag', lex:tag(lexer.TAG .. '.plain', '@' * lexer.word)) return lex |
