comparison runtime/syntax/markdown.vim @ 18818:5c40013d45ee

Update runtime files. Commit: https://github.com/vim/vim/commit/c08ee7476b19f9b4de5df287797af87c4e3fba0a Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 5 22:47:25 2019 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Thu, 05 Dec 2019 23:00:04 +0100
parents 43efa4f5a8ea
children 63beef1ca62c
comparison
equal deleted inserted replaced
18817:17aefb9d7c45 18818:5c40013d45ee
1 " Vim syntax file 1 " Vim syntax file
2 " Language: Markdown 2 " Language: Markdown
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org> 3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
4 " Filenames: *.markdown 4 " Filenames: *.markdown
5 " Last Change: 2016 Aug 29 5 " Last Change: 2019 Dec 05
6 6
7 if exists("b:current_syntax") 7 if exists("b:current_syntax")
8 finish 8 finish
9 endif 9 endif
10 10
16 unlet! b:current_syntax 16 unlet! b:current_syntax
17 17
18 if !exists('g:markdown_fenced_languages') 18 if !exists('g:markdown_fenced_languages')
19 let g:markdown_fenced_languages = [] 19 let g:markdown_fenced_languages = []
20 endif 20 endif
21 let s:done_include = {}
21 for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")') 22 for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
23 if has_key(s:done_include, matchstr(s:type,'[^.]*'))
24 continue
25 endif
22 if s:type =~ '\.' 26 if s:type =~ '\.'
23 let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*') 27 let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
24 endif 28 endif
25 exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim' 29 exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
26 unlet! b:current_syntax 30 unlet! b:current_syntax
31 let s:done_include[matchstr(s:type,'[^.]*')] = 1
27 endfor 32 endfor
28 unlet! s:type 33 unlet! s:type
34 unlet! s:done_include
29 35
30 syn sync minlines=10 36 if !exists('g:markdown_minlines')
37 let g:markdown_minlines = 50
38 endif
39 execute 'syn sync minlines=' . g:markdown_minlines
31 syn case ignore 40 syn case ignore
32 41
33 syn match markdownValid '[<>]\c[a-z/$!]\@!' 42 syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE
34 syn match markdownValid '&\%(#\=\w*;\)\@!' 43 syn match markdownValid '&\%(#\=\w*;\)\@!' transparent contains=NONE
35 44
36 syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar 45 syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar
37 46
38 syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule 47 syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule
39 syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError 48 syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError,markdownValid
40 49
41 syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink 50 syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
42 syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink 51 syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
43 52
44 syn match markdownHeadingRule "^[=-]\+$" contained 53 syn match markdownHeadingRule "^[=-]\+$" contained
45 54
46 syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 55 syn region markdownH1 matchgroup=markdownH1Delimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
47 syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 56 syn region markdownH2 matchgroup=markdownH2Delimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
48 syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 57 syn region markdownH3 matchgroup=markdownH3Delimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
49 syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 58 syn region markdownH4 matchgroup=markdownH4Delimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
50 syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 59 syn region markdownH5 matchgroup=markdownH5Delimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
51 syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained 60 syn region markdownH6 matchgroup=markdownH6Delimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
52 61
53 syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock 62 syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock
54 63
55 syn region markdownCodeBlock start=" \|\t" end="$" contained 64 syn region markdownCodeBlock start=" \|\t" end="$" contained
56 65
68 syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained 77 syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained
69 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained 78 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained
70 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained 79 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
71 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained 80 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
72 81
73 syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart 82 syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
74 syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained 83 syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
75 syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained 84 syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
76 syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline 85 syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
77 86
78 let s:concealends = has('conceal') ? ' concealends' : '' 87 let s:concealends = ''
79 exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart' . s:concealends 88 if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1
80 exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart' . s:concealends 89 let s:concealends = ' concealends'
81 exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends 90 endif
82 exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends 91 exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
83 exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart' . s:concealends 92 exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
84 exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart' . s:concealends 93 exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" skip="\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
94 exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
95 exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" skip="\\*" contains=markdownLineStart,@Spell' . s:concealends
96 exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
85 97
86 syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart 98 syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
87 syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart 99 syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
88 syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend 100 syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*````*.*$" end="^\s*````*\ze\s*$" keepend
89 101
90 syn match markdownFootnote "\[^[^\]]\+\]" 102 syn match markdownFootnote "\[^[^\]]\+\]"
91 syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:" 103 syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
92 104
93 if main_syntax ==# 'markdown' 105 if main_syntax ==# 'markdown'
106 let s:done_include = {}
94 for s:type in g:markdown_fenced_languages 107 for s:type in g:markdown_fenced_languages
95 exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') 108 if has_key(s:done_include, matchstr(s:type,'[^.]*'))
109 continue
110 endif
111 exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*````*\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*````*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') . s:concealends
112 let s:done_include[matchstr(s:type,'[^.]*')] = 1
96 endfor 113 endfor
97 unlet! s:type 114 unlet! s:type
115 unlet! s:done_include
98 endif 116 endif
99 117
100 syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]" 118 syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
101 syn match markdownError "\w\@<=_\w\@=" 119 syn match markdownError "\w\@<=_\w\@="
102 120
105 hi def link markdownH3 htmlH3 123 hi def link markdownH3 htmlH3
106 hi def link markdownH4 htmlH4 124 hi def link markdownH4 htmlH4
107 hi def link markdownH5 htmlH5 125 hi def link markdownH5 htmlH5
108 hi def link markdownH6 htmlH6 126 hi def link markdownH6 htmlH6
109 hi def link markdownHeadingRule markdownRule 127 hi def link markdownHeadingRule markdownRule
128 hi def link markdownH1Delimiter markdownHeadingDelimiter
129 hi def link markdownH2Delimiter markdownHeadingDelimiter
130 hi def link markdownH3Delimiter markdownHeadingDelimiter
131 hi def link markdownH4Delimiter markdownHeadingDelimiter
132 hi def link markdownH5Delimiter markdownHeadingDelimiter
133 hi def link markdownH6Delimiter markdownHeadingDelimiter
110 hi def link markdownHeadingDelimiter Delimiter 134 hi def link markdownHeadingDelimiter Delimiter
111 hi def link markdownOrderedListMarker markdownListMarker 135 hi def link markdownOrderedListMarker markdownListMarker
112 hi def link markdownListMarker htmlTagName 136 hi def link markdownListMarker htmlTagName
113 hi def link markdownBlockquote Comment 137 hi def link markdownBlockquote Comment
114 hi def link markdownRule PreProc 138 hi def link markdownRule PreProc