X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/f3c6f23a6b1d280aead56078c18f09003f0837b3..d049d36988e5799b5ee112d45b7a9a3e0019fdf4:/mkd.vim?ds=inline diff --git a/mkd.vim b/mkd.vim index 6c23415..189c721 100644 --- a/mkd.vim +++ b/mkd.vim @@ -2,12 +2,11 @@ " Language: Markdown " Maintainer: Ben Williams " URL: http://plasticboy.com/markdown-vim-mode/ -" Version: 8 -" Last Change: 2008 April 29 +" Version: 9 +" Last Change: 2009 May 18 " Remark: Uses HTML syntax file " Remark: I don't do anything with angle brackets (<>) because that would too easily " easily conflict with HTML syntax -" TODO: Do something appropriate with image syntax " TODO: Handle stuff contained within stuff (e.g. headings within blockquotes) @@ -37,13 +36,23 @@ syn case ignore syn sync linebreaks=1 "additions to HTML groups -syn region htmlBold start=/\(^\|\s\)\*\@) +syn region mkdLinkDef matchgroup=mkdDelimiter start="^ \{,3}\zs\[" end="]:" oneline nextgroup=mkdLinkDefTarget skipwhite +syn region mkdLinkDefTarget start="<\?\zs\S" excludenl end="\ze[>[:space:]\n]" contained nextgroup=mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+"+ end=+"+ contained +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained +syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained "define Markdown groups syn match mkdLineContinue ".$" contained @@ -54,10 +63,11 @@ syn match mkdRule /^\s*-\{3,}$/ syn match mkdRule /^\s*\*\{3,5}$/ syn match mkdListItem "^\s*[-*+]\s\+" syn match mkdListItem "^\s*\d\+\.\s\+" -syn match mkdCode /^\s*\n\(\(\s\{4,}\|[\t]\+\)[^*-+ ].*\n\)\+/ -syn region mkdCode start=/`/ end=/`/ +syn match mkdCode /^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/ +syn match mkdLineBreak / \+$/ +syn region mkdCode start=/\\\@/ end=/$/ contains=mkdLineContinue,@Spell +syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLineBreak,mkdLineContinue,@Spell syn region mkdCode start="]*>" end="" syn region mkdCode start="]*>" end="" @@ -71,6 +81,27 @@ syn region htmlH6 start="^\s*######" end="\($\|#\+\)" contain syn match htmlH1 /^.\+\n=\+$/ contains=@Spell syn match htmlH2 /^.\+\n-\+$/ contains=@Spell + + +" fold region for headings +syn region mkdHeaderFold + \ start="^\s*\z(#\+\)" + \ skip="^\s*\z1#\+" + \ end="^\(\s*#\)\@=" + \ fold contains=TOP + +" fold region for lists +syn region mkdListFold + \ start="^\z(\s*\)\*\z(\s*\)" + \ skip="^\z1 \z2\s*[^#]" + \ end="^\(.\)\@=" + \ fold contains=TOP + +syn sync fromstart +setlocal foldmethod=syntax + + + "highlighting for Markdown groups HtmlHiLink mkdString String HtmlHiLink mkdCode String @@ -78,7 +109,15 @@ HtmlHiLink mkdBlockquote Comment HtmlHiLink mkdLineContinue Comment HtmlHiLink mkdListItem Identifier HtmlHiLink mkdRule Identifier +HtmlHiLink mkdLineBreak Todo +HtmlHiLink mkdLink htmlLink +HtmlHiLink mkdURL htmlString +HtmlHiLink mkdID Identifier +HtmlHiLink mkdLinkDef mkdID +HtmlHiLink mkdLinkDefTarget mkdURL +HtmlHiLink mkdLinkTitle htmlString +HtmlHiLink mkdDelimiter Delimiter let b:current_syntax = "mkd"