codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Markdown3" Maintainer: Tim Pope <https://github.com/tpope/vim-markdown>4" Filenames: *.markdown5" Last Change: 2022 Oct 136 7if exists("b:current_syntax")8 finish9endif10 11if !exists('main_syntax')12 let main_syntax = 'markdown'13endif14 15if has('folding')16 let s:foldmethod = &l:foldmethod17 let s:foldtext = &l:foldtext18endif19let s:iskeyword = &l:iskeyword20 21runtime! syntax/html.vim22unlet! b:current_syntax23 24if !exists('g:markdown_fenced_languages')25 let g:markdown_fenced_languages = []26endif27let s:done_include = {}28for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')29 if has_key(s:done_include, matchstr(s:type,'[^.]*'))30 continue31 endif32 if s:type =~ '\.'33 let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')34 endif35 syn case match36 exe 'syn include @markdownHighlight_'.tr(s:type,'.','_').' syntax/'.matchstr(s:type,'[^.]*').'.vim'37 unlet! b:current_syntax38 let s:done_include[matchstr(s:type,'[^.]*')] = 139endfor40unlet! s:type41unlet! s:done_include42 43syn spell toplevel44if exists('s:foldmethod') && s:foldmethod !=# &l:foldmethod45 let &l:foldmethod = s:foldmethod46 unlet s:foldmethod47endif48if exists('s:foldtext') && s:foldtext !=# &l:foldtext49 let &l:foldtext = s:foldtext50 unlet s:foldtext51endif52if s:iskeyword !=# &l:iskeyword53 let &l:iskeyword = s:iskeyword54endif55unlet s:iskeyword56 57if !exists('g:markdown_minlines')58 let g:markdown_minlines = 5059endif60execute 'syn sync minlines=' . g:markdown_minlines61syn sync linebreaks=162syn case ignore63 64syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE65syn match markdownValid '&\%(#\=\w*;\)\@!' transparent contains=NONE66 67syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar68 69syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule70syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError,markdownValid71 72syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink73syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink74 75syn match markdownHeadingRule "^[=-]\+$" contained76 77syn region markdownH1 matchgroup=markdownH1Delimiter start=" \{,3}#\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained78syn region markdownH2 matchgroup=markdownH2Delimiter start=" \{,3}##\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained79syn region markdownH3 matchgroup=markdownH3Delimiter start=" \{,3}###\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained80syn region markdownH4 matchgroup=markdownH4Delimiter start=" \{,3}####\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained81syn region markdownH5 matchgroup=markdownH5Delimiter start=" \{,3}#####\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained82syn region markdownH6 matchgroup=markdownH6Delimiter start=" \{,3}######\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained83 84syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock85 86syn region markdownCodeBlock start="^\n\( \{4,}\|\t\)" end="^\ze \{,3}\S.*$" keepend87 88" TODO: real nesting89syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained90syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained91 92syn match markdownRule "\* *\* *\*[ *]*$" contained93syn match markdownRule "- *- *-[ -]*$" contained94 95syn match markdownLineBreak " \{2,\}$"96 97syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite98syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained99syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained100syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained101syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained102syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained103 104syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^][]*\%(\[\_[^][]*\]\_[^][]*\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart105syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained106syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained107syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline108 109let s:concealends = ''110if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1111 let s:concealends = ' concealends'112endif113exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\*\S\@=" end="\S\@<=\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends114exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends115exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\*\*\S\@=" end="\S\@<=\*\*\|^$" skip="\\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends116exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!\|^$" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends117exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\*\*\*\S\@=" end="\S\@<=\*\*\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends118exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends119exe 'syn region markdownStrike matchgroup=markdownStrikeDelimiter start="\~\~\S\@=" end="\S\@<=\~\~\|^$" contains=markdownLineStart,@Spell' . s:concealends120 121syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart122syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart123syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend124syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend125 126syn match markdownFootnote "\[^[^\]]\+\]"127syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"128 129let s:done_include = {}130for s:type in g:markdown_fenced_languages131 if has_key(s:done_include, matchstr(s:type,'[^.]*'))132 continue133 endif134 exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends135 exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends136 let s:done_include[matchstr(s:type,'[^.]*')] = 1137endfor138unlet! s:type139unlet! s:done_include140 141if get(b:, 'markdown_yaml_head', get(g:, 'markdown_yaml_head', main_syntax ==# 'markdown'))142 syn include @markdownYamlTop syntax/yaml.vim143 unlet! b:current_syntax144 syn region markdownYamlHead start="\%^---$" end="^\%(---\|\.\.\.\)\s*$" keepend contains=@markdownYamlTop,@Spell145endif146 147syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"148syn match markdownError "\w\@<=_\w\@="149 150hi def link markdownH1 htmlH1151hi def link markdownH2 htmlH2152hi def link markdownH3 htmlH3153hi def link markdownH4 htmlH4154hi def link markdownH5 htmlH5155hi def link markdownH6 htmlH6156hi def link markdownHeadingRule markdownRule157hi def link markdownH1Delimiter markdownHeadingDelimiter158hi def link markdownH2Delimiter markdownHeadingDelimiter159hi def link markdownH3Delimiter markdownHeadingDelimiter160hi def link markdownH4Delimiter markdownHeadingDelimiter161hi def link markdownH5Delimiter markdownHeadingDelimiter162hi def link markdownH6Delimiter markdownHeadingDelimiter163hi def link markdownHeadingDelimiter Delimiter164hi def link markdownOrderedListMarker markdownListMarker165hi def link markdownListMarker htmlTagName166hi def link markdownBlockquote Comment167hi def link markdownRule PreProc168 169hi def link markdownFootnote Typedef170hi def link markdownFootnoteDefinition Typedef171 172hi def link markdownLinkText htmlLink173hi def link markdownIdDeclaration Typedef174hi def link markdownId Type175hi def link markdownAutomaticLink markdownUrl176hi def link markdownUrl Float177hi def link markdownUrlTitle String178hi def link markdownIdDelimiter markdownLinkDelimiter179hi def link markdownUrlDelimiter htmlTag180hi def link markdownUrlTitleDelimiter Delimiter181 182hi def link markdownItalic htmlItalic183hi def link markdownItalicDelimiter markdownItalic184hi def link markdownBold htmlBold185hi def link markdownBoldDelimiter markdownBold186hi def link markdownBoldItalic htmlBoldItalic187hi def link markdownBoldItalicDelimiter markdownBoldItalic188hi def link markdownStrike htmlStrike189hi def link markdownStrikeDelimiter markdownStrike190hi def link markdownCodeDelimiter Delimiter191 192hi def link markdownEscape Special193hi def link markdownError Error194 195let b:current_syntax = "markdown"196if main_syntax ==# 'markdown'197 unlet main_syntax198endif199 200" vim:set sw=2:201 