Mercurial > vim
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 |