diff --git a/mode/markdown.py b/mode/markdown.py index 981a4b0..c22cccb 100644 --- a/mode/markdown.py +++ b/mode/markdown.py @@ -12,21 +12,31 @@ from mode.scala import ScalaGrammar from mode.sql import SqlGrammar from mode.xml import XMLGrammar +class LineGrammar(Grammar): pass +LineGrammar.rules = [ + PatternRule('line', r'.+'), + PatternRule('eol', r'\n'), +] + class MarkdownGrammar(Grammar): pass - MarkdownGrammar.rules = [ - PatternRule('md.head1', r'^# .+'), - PatternRule('md.head2', r'^## .+'), - PatternRule('md.head3', r'^### .+'), - PatternRule('md.head4', r'^#### .+'), - PatternRule('md.head5', r'^##### .+'), - PatternRule('md.head6', r'^###### .+'), + PatternRule('md.head1', r'^#.+'), + PatternRule('md.head2', r'^##.+'), + PatternRule('md.head3', r'^###.+'), + PatternRule('md.head4', r'^####.+'), + PatternRule('md.head5', r'^#####.+'), + PatternRule('md.head6', r'^######.+'), - PatternRule('md.bullet', r'^ *[\*\-\*] '), + RegionRule('md.tag', r'^<(?P[a-zA-Z_][a-zA-Z0-9_]*)>$', HTMLGrammar, r'^$'), + + PatternRule('md.bullet', r'^\s*[\*\-\*] '), PatternMatchRule('', r'(\[.+?\])(\(.+?\))', 'md.linkname', 'md.linkurl'), - PatternRule('md.block', r'^>\s.*$'), + PatternRule('md.block3', r'^(?:>\s*>\s*>\s*)*>\s*>\s*>(?:[^>].*)?\n$'), + PatternRule('md.block2', r'^(?:>\s*>\s*>\s*)*>\s*>(?:[^>].*)?\n$'), + PatternRule('md.block1', r'^(?:>\s*>\s*>\s*)*>(?:[^>].*)?\n$'), + PatternRule('md.code', r'^(?: |\t).*$'), PatternRule('md.inlinelink', r'http://[^`*\t(){}\[\] ]+'), @@ -40,7 +50,7 @@ MarkdownGrammar.rules = [ RegionRule('md.lang', r'^```sql$', SqlGrammar, r'^```'), RegionRule('md.lang', r'^```xml$', XMLGrammar, r'^```'), - RegionRule('md.code', r'^```.+$', Grammar, r'^```'), + RegionRule('md.code', r'^```.+$', LineGrammar, r'^```'), RegionRule('md.bold', r'\*\*', MarkdownGrammar, r'\*\*'), RegionRule('md.tt', r'``', MarkdownGrammar, r'``'), @@ -50,9 +60,9 @@ MarkdownGrammar.rules = [ PatternRule('md.word', r'[a-zA-Z\'"\-]+'), - PatternRule('spaces', ' +'), - PatternRule('eol', ' +'), - PatternRule('null', r'.'), + PatternRule('spaces', '\s+'), + PatternRule('eol', r'\n'), + #PatternRule('null', r'.'), ] @@ -105,9 +115,16 @@ class Markdown(Fundamental): 'md.head5': hi_blue, 'md.head6': hi_blue, + 'md.tag.start': hi_magenta, + 'md.tag.end': hi_magenta, + 'md.linkname': hi_green, 'md.linkurl': hi_cyan, + 'md.block1': hi_yellow, + 'md.block2': hi_orange, + 'md.block3': hi_red, + 'md.code': lo_green, 'md.code.start': lo_green, 'md.code.null': lo_green,