diff options
-rw-r--r-- | lexlua/markdown.lua | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lexlua/markdown.lua b/lexlua/markdown.lua index cc56327c6..1b6653141 100644 --- a/lexlua/markdown.lua +++ b/lexlua/markdown.lua @@ -38,9 +38,14 @@ lex:add_rule('list', token('list', lexer.starts_line(S(' \t')^0 * (S('*+-') + S(' \t'))) lex:add_style('list', lexer.STYLE_CONSTANT) -lex:add_rule('blockcode', +lex:add_rule('block_code', token('code', lexer.starts_line(P(' ')^4 + P('\t')) * -P('<') * - lexer.nonnewline^0 * lexer.newline^-1)) + lexer.nonnewline^0 * lexer.newline^-1) + + token('code', lexer.starts_line(P('```')) * (lexer.any - '```')^0 * + P('```')^-1)) +lex:add_rule('inline_code', + token('code', P('``') * (lexer.any - '``')^0 * P('``')^-1 + + lexer.delimited_range('`', false, true))) lex:add_style('code', lexer.STYLE_EMBEDDED..',eolfilled') lex:add_rule('hr', @@ -52,7 +57,8 @@ lex:add_rule('hr', if line:find('[^'..c..']') or #line < 2 then return nil end - return (input:find('\r?\n', index) or #input) + 1 + return (select(2, input:find('\r?\n', index)) or + #input) + 1 end))) lex:add_style('hr', 'back:$(color.black),eolfilled') @@ -78,7 +84,8 @@ lex:add_rule('link', (S(' \t')^1 * lexer.delimited_range('"', false, true))^-1 * ')' + S(' \t')^0 * lexer.delimited_range('[]')) + - P('http://') * (lexer.any - lexer.space)^1)) + 'http' * P('s')^-1 * '://' * + (lexer.any - lexer.space)^1)) lex:add_style('link', 'underlined') lex:add_rule('strong', token('strong', P('**') * (lexer.any - '**')^0 * @@ -86,11 +93,9 @@ lex:add_rule('strong', token('strong', P('**') * (lexer.any - '**')^0 * P('__') * (lexer.any - '__')^0 * P('__')^-1)) lex:add_style('strong', 'bold') -lex:add_rule('em', token('em', lexer.delimited_range('*', true) + - lexer.delimited_range('_', true))) +lex:add_rule('em', token('em', lexer.delimited_range('*', true, true) + + lexer.delimited_range('_', true, true))) lex:add_style('em', 'italics') -lex:add_rule('code', token('code', P('``') * (lexer.any - '``')^0 * P('``')^-1 + - lexer.delimited_range('`', true, true))) -- Embedded HTML. local html = lexer.load('html') |