Created
June 27, 2012 10:52
-
-
Save vzemlys/3003281 to your computer and use it in GitHub Desktop.
VIM Markdown syntax highlighting file for RStudio markdown
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Vim syntax file | |
" Language: Markdown | |
" Author: Ben Williams <[email protected]> | |
" Maintainer: Hallison Batista <[email protected]> | |
" URL: http://plasticboy.com/markdown-vim-mode/ | |
" Version: 1.0.1 | |
" Last Change: Fri Dec 4 08:36:48 AMT 2009 | |
" 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 <sfile>: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 <args> | |
else | |
command! -nargs=+ HtmlHiLink hi def link <args> | |
endif | |
syntax spell toplevel | |
syntax case ignore | |
syntax sync linebreaks=1 | |
" Additions to HTML groups | |
syntax region htmlBold start=/\\\@<!\(^\|\A\)\@=\*\@<!\*\*\*\@!\S/ end=/\S\\\@<!\*\@<!\*\*\*\@!\($\|\A\)\@=/ contains=htmlItalic,@Spell | |
syntax region htmlItalic start=/\\\@<!\(^\|\A\)\@=\*\@<!\*\*\@!\S/ end=/\S\\\@<!\*\@<!\*\*\@!\($\|\A\)\@=/ contains=htmlBold,@Spell | |
syntax region htmlItalic start=/\\\@<!\(^\|\A\)\@=\<_\@<!___\@!\S/ end=/\S\\\@<!_\@<!___\@!\($\|\A\)\@=/ contains=htmlBold,@Spell | |
syntax region htmlItalic start=/\\\@<!\(^\|\A\)\@=\<_\@<!__\@!\S/ end=/\S\\\@<!_\@<!__\@!\($\|\A\)\@=/ contains=htmlBold,@Spell | |
" [link](URL) | [link][id] | [link][] | |
syntax region mkdLink matchgroup=mkdDelimiter start="\(\\\\\)\@<!\(\!\?\[\)" end="\]\ze\s*[[(]" contains=@Spell nextgroup=mkdURL,mkdID skipwhite | |
syntax region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained | |
syntax region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained | |
" Link definitions: [id]: URL (Optional Title) | |
" TODO handle automatic links without colliding with htmlTag (<URL>) | |
syntax region mkdLinkDef matchgroup=mkdDelimiter start="^ \{,3}\zs\[" end="]:" oneline nextgroup=mkdLinkDefTarget skipwhite | |
syntax region mkdLinkDefTarget start="<\?\zs\S" excludenl end="\ze[>[:space:]\n]" contained nextgroup=mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline | |
syntax region mkdLinkTitle matchgroup=mkdDelimiter start=+"+ end=+"+ contained | |
syntax region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained | |
syntax region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained | |
" Define Markdown groups | |
syntax match mkdLineContinue ".$" contained | |
syntax match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/ | |
syntax match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/ | |
syntax match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/ | |
syntax match mkdRule /^\s*-\{3,}$/ | |
syntax match mkdRule /^\s*\*\{3,5}$/ | |
syntax match mkdListItem /^\s*[-*+]\s\+.*\n\(\(^.\+\n\)*\n\?\)\(\(^\(\s\{4}\|\t\)\+.*\n\)\(^.\+\n\)*\n\?\)*/ contains=mkdListCode,mkdCode,htmlBold,htmlItalic,htmlSpecialChar | |
syntax match mkdListItem /^\s*\d\+\.\s\+.*\n\(\(^.\+\n\)*\n\?\)\(\(^\(\s\{4}\|\t\)\+.*\n\)\(^.\+\n\)*\n\?\)*/ contains=mkdListCode,mkdCode,htmlBold,htmlItalic,htmlSpecialChar | |
" | |
syntax match mkdBlockCode /^\s*\n\(^\(\s\{4}\|\t\).*\n\)\+/ | |
syntax match mkdListCode /^\s*\n\(^\(\s\{8}\|\t{2}\).*\n\)\+/ | |
syntax match mkdLineBreak / \+$/ | |
syntax region mkdCode start=/\\\@<!```/ end=/\\\@<!```/ | |
syntax region mkdCode start=/\s*```/ end=/```\s*/ | |
syntax region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLineBreak,mkdLineContinue,@Spell | |
syntax region mkdCode start="<pre[^>]*>" end="</pre>" | |
syntax region mkdCode start="<code[^>]*>" end="</code>" | |
" Latex formulas | |
" | |
syntax region mkdLaTeX start=/\$\{1,2\}/ end=/\s\?\$\{1,2\}/ | |
syntax region mkdLaTeX start=/\\\\[(\[]\s/ end=/\s\\\\[)\]]/ | |
" HTML headings | |
syntax region htmlH1 start="^\s*#" end="\($\|#\+\)" contains=@Spell | |
syntax region htmlH2 start="^\s*##" end="\($\|#\+\)" contains=@Spell | |
syntax region htmlH3 start="^\s*###" end="\($\|#\+\)" contains=@Spell | |
syntax region htmlH4 start="^\s*####" end="\($\|#\+\)" contains=@Spell | |
syntax region htmlH5 start="^\s*#####" end="\($\|#\+\)" contains=@Spell | |
syntax region htmlH6 start="^\s*######" end="\($\|#\+\)" contains=@Spell | |
syntax match htmlH1 /^.\+\n=\+$/ contains=@Spell | |
syntax match htmlH2 /^.\+\n-\+$/ contains=@Spell | |
"highlighting for Markdown groups | |
HtmlHiLink mkdString String | |
HtmlHiLink mkdCode String | |
HtmlHiLink mkdListCode String | |
HtmlHiLink mkdBlockCode 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 | |
HtmlHiLink mkdLaTeX Special | |
let b:current_syntax = "markdown" | |
delcommand HtmlHiLink | |
" vim: tabstop=2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment