" Vim syntax file " Language: Markdown " Maintainer: Ben Williams " URL: http://plasticboy.com/markdown-vim-mode/ " 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: Handle stuff contained within stuff (e.g. headings within blockquotes) " Read the HTML syntax to start with if version < 600 so :p:h/html.vim else runtime! syntax/html.vim unlet b:current_syntax endif if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " don't use standard HiLink, it will not work with included syntax files if version < 508 command! -nargs=+ HtmlHiLink hi link else command! -nargs=+ HtmlHiLink hi def link endif syn spell toplevel syn case ignore syn sync linebreaks=1 "additions to HTML groups syn region htmlBold start=/\\\@) 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 syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/ syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/ syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/ 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\+[^\t]\).*\n\)\+/ syn match mkdLineBreak / \+$/ syn region mkdCode start=/\\\@/ end=/$/ contains=mkdLineBreak,mkdLineContinue,@Spell syn region mkdCode start="]*>" end="" syn region mkdCode start="]*>" end="" "HTML headings syn region htmlH1 start="^\s*#" end="\($\|#\+\)" contains=@Spell syn region htmlH2 start="^\s*##" end="\($\|#\+\)" contains=@Spell syn region htmlH3 start="^\s*###" end="\($\|#\+\)" contains=@Spell syn region htmlH4 start="^\s*####" end="\($\|#\+\)" contains=@Spell syn region htmlH5 start="^\s*#####" end="\($\|#\+\)" contains=@Spell syn region htmlH6 start="^\s*######" end="\($\|#\+\)" contains=@Spell syn match htmlH1 /^.\+\n=\+$/ contains=@Spell syn match htmlH2 /^.\+\n-\+$/ contains=@Spell "highlighting for Markdown groups HtmlHiLink mkdString String HtmlHiLink mkdCode String 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" delcommand HtmlHiLink " vim: ts=8