Mercurial > vim
annotate runtime/syntax/rmd.vim @ 34590:4cad34137ea0
runtime(vim): Update base-syntax, disallow '.' at start of menu item names (#14232)
Commit: https://github.com/vim/vim/commit/ec21bafc135a1e78d40e4fc9118e022bbab958e8
Author: dkearns <dougkearns@gmail.com>
Date: Wed Mar 20 04:04:42 2024 +1100
runtime(vim): Update base-syntax, disallow '.' at start of menu item names (https://github.com/vim/vim/issues/14232)
Disallow '.' at the start of a menu item name.
This is the menu path separator character and should be escaped with a
'\' in this case.
Partially fixes #14230. "popup" is still incorrectly matched as the Ex
command.
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 19 Mar 2024 18:15:05 +0100 |
parents | 02bd0fe77c68 |
children |
rev | line source |
---|---|
32061 | 1 " Language: Markdown with chunks of R, Python and other languages |
34375
02bd0fe77c68
runtime(misc): announce adoption of various runtime files
Christian Brabandt <cb@256bit.org>
parents:
34016
diff
changeset
|
2 " Maintainer: This runtime file is looking for a new maintainer. |
02bd0fe77c68
runtime(misc): announce adoption of various runtime files
Christian Brabandt <cb@256bit.org>
parents:
34016
diff
changeset
|
3 " Former Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> |
02bd0fe77c68
runtime(misc): announce adoption of various runtime files
Christian Brabandt <cb@256bit.org>
parents:
34016
diff
changeset
|
4 " Former Repository: https://github.com/jalvesaq/R-Vim-runtime |
02bd0fe77c68
runtime(misc): announce adoption of various runtime files
Christian Brabandt <cb@256bit.org>
parents:
34016
diff
changeset
|
5 " Last Change: 2023 Dec 24 07:21AM |
02bd0fe77c68
runtime(misc): announce adoption of various runtime files
Christian Brabandt <cb@256bit.org>
parents:
34016
diff
changeset
|
6 " 2024 Feb 19 by Vim Project (announce adoption) |
11347 | 7 " |
8 " For highlighting pandoc extensions to markdown like citations and TeX and | |
9 " many other advanced features like folding of markdown sections, it is | |
10 " recommended to install the vim-pandoc filetype plugin as well as the | |
11 " vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc. | |
14637 | 12 |
6051 | 13 |
8497
da01d5da2cfa
commit https://github.com/vim/vim/commit/77cdfd10382e01cc51f4ba1a9177032351843151
Christian Brabandt <cb@256bit.org>
parents:
6051
diff
changeset
|
14 if exists("b:current_syntax") |
6051 | 15 finish |
16 endif | |
17 | |
32061 | 18 let s:cpo_save = &cpo |
19 set cpo&vim | |
20 | |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
21 let g:rmd_include_latex = get(g:, 'rmd_include_latex', 1) |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
22 if g:rmd_include_latex == 0 || g:rmd_include_latex == 1 |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
23 let b:rmd_has_LaTeX = v:false |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
24 elseif g:rmd_include_latex == 2 |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
25 let b:rmd_has_LaTeX = v:true |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
26 endif |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
27 |
24520 | 28 " Highlight the header of the chunks as R code |
29 let g:rmd_syn_hl_chunk = get(g:, 'rmd_syn_hl_chunk', 0) | |
14637 | 30 |
31 " Pandoc-syntax has more features, but it is slower. | |
11347 | 32 " https://github.com/vim-pandoc/vim-pandoc-syntax |
32061 | 33 |
34 " Don't waste time loading syntax that will be discarded: | |
35 let s:save_pandoc_lngs = get(g:, 'pandoc#syntax#codeblocks#embeds#langs', []) | |
36 let g:pandoc#syntax#codeblocks#embeds#langs = [] | |
37 | |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
38 let g:rmd_dynamic_fenced_languages = get(g:, 'rmd_dynamic_fenced_languages', v:true) |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
39 |
32061 | 40 " Step_1: Source pandoc.vim if it is installed: |
6051 | 41 runtime syntax/pandoc.vim |
42 if exists("b:current_syntax") | |
32061 | 43 if hlexists('pandocDelimitedCodeBlock') |
44 syn clear pandocDelimitedCodeBlock | |
45 endif | |
46 | |
47 if len(s:save_pandoc_lngs) > 0 && !exists('g:rmd_fenced_languages') | |
48 let g:rmd_fenced_languages = deepcopy(s:save_pandoc_lngs) | |
49 endif | |
50 | |
24520 | 51 " Recognize inline R code |
32061 | 52 syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr containedin=pandocLaTeXRegion,yamlFlowString keepend |
53 else | |
54 " Step_2: Source markdown.vim if pandoc.vim is not installed | |
55 | |
56 " Configuration if not using pandoc syntax: | |
57 " Add syntax highlighting of YAML header | |
58 let g:rmd_syn_hl_yaml = get(g:, 'rmd_syn_hl_yaml', 1) | |
59 " Add syntax highlighting of citation keys | |
60 let g:rmd_syn_hl_citations = get(g:, 'rmd_syn_hl_citations', 1) | |
61 | |
62 " R chunks will not be highlighted by syntax/markdown because their headers | |
63 " follow a non standard pattern: "```{lang" instead of "^```lang". | |
64 " Make a copy of g:markdown_fenced_languages to highlight the chunks later: | |
65 if exists('g:markdown_fenced_languages') && !exists('g:rmd_fenced_languages') | |
66 let g:rmd_fenced_languages = deepcopy(g:markdown_fenced_languages) | |
67 endif | |
68 | |
69 if exists('g:markdown_fenced_languages') && len(g:markdown_fenced_languages) > 0 | |
70 let s:save_mfl = deepcopy(g:markdown_fenced_languages) | |
71 endif | |
72 " Don't waste time loading syntax that will be discarded: | |
73 let g:markdown_fenced_languages = [] | |
74 runtime syntax/markdown.vim | |
75 if exists('s:save_mfl') > 0 | |
76 let g:markdown_fenced_languages = deepcopy(s:save_mfl) | |
77 unlet s:save_mfl | |
78 endif | |
79 syn region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@Rmdr keepend | |
80 | |
81 " Step_2a: Add highlighting for both YAML and citations which are pandoc | |
82 " specific, but also used in Rmd files | |
24520 | 83 |
32061 | 84 " You don't need this if either your markdown/syntax.vim already highlights |
85 " the YAML header or you are writing standard markdown | |
86 if g:rmd_syn_hl_yaml | |
87 " Basic highlighting of YAML header | |
88 syn match rmdYamlFieldTtl /^\s*\zs\w\%(-\|\w\)*\ze:/ contained | |
89 syn match rmdYamlFieldTtl /^\s*-\s*\zs\w\%(-\|\w\)*\ze:/ contained | |
90 syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start='"' skip='\\"' end='"' contains=yamlEscape,rmdrInline contained | |
91 syn region yamlFlowString matchgroup=yamlFlowStringDelimiter start="'" skip="''" end="'" contains=yamlSingleEscape,rmdrInline contained | |
92 syn match yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)' | |
93 syn match yamlSingleEscape contained "''" | |
94 syn match yamlComment /#.*/ contained | |
32974
d46f974fd69e
runtime: Fix typos in various files
Christian Brabandt <cb@256bit.org>
parents:
32061
diff
changeset
|
95 " A second colon is a syntax error, unless within a string or following !expr |
32061 | 96 syn match yamlColonError /:\s*[^'^"^!]*:/ contained |
97 if &filetype == 'quarto' | |
98 syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^---$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError | |
24520 | 99 else |
32061 | 100 syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^\([-.]\)\1\{2}$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError |
24520 | 101 endif |
32061 | 102 hi def link rmdYamlBlockDelim Delimiter |
103 hi def link rmdYamlFieldTtl Identifier | |
104 hi def link yamlFlowString String | |
105 hi def link yamlComment Comment | |
106 hi def link yamlColonError Error | |
107 endif | |
108 | |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
109 " Conceal char for manual line break |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
110 if &encoding ==# 'utf-8' |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
111 syn match rmdNewLine ' $' conceal cchar=↵ |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
112 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
113 |
32061 | 114 " You don't need this if either your markdown/syntax.vim already highlights |
115 " citations or you are writing standard markdown | |
116 if g:rmd_syn_hl_citations | |
117 " From vim-pandoc-syntax | |
118 " parenthetical citations | |
119 syn match pandocPCite /\^\@<!\[[^\[\]]\{-}-\{0,1}@[[:alnum:]_][[:alnum:]à -öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*.\{-}\]/ contains=pandocEmphasis,pandocStrong,pandocLatex,pandocCiteKey,@Spell,pandocAmpersandEscape display | |
120 " in-text citations with location | |
121 syn match pandocICite /@[[:alnum:]_][[:alnum:]à -öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\s\[.\{-1,}\]/ contains=pandocCiteKey,@Spell display | |
122 " cite keys | |
123 syn match pandocCiteKey /\(-\=@[[:alnum:]_][[:alnum:]à -öø-ÿÀ-ÖØ-ß_:.#$%&\-+?<>~\/]*\)/ containedin=pandocPCite,pandocICite contains=@NoSpell display | |
124 syn match pandocCiteAnchor /[-@]/ contained containedin=pandocCiteKey display | |
125 syn match pandocCiteLocator /[\[\]]/ contained containedin=pandocPCite,pandocICite | |
126 hi def link pandocPCite Operator | |
127 hi def link pandocICite Operator | |
128 hi def link pandocCiteKey Label | |
129 hi def link pandocCiteAnchor Operator | |
130 hi def link pandocCiteLocator Operator | |
131 endif | |
6051 | 132 endif |
133 | |
32061 | 134 " Step_3: Highlight code blocks. |
14637 | 135 |
32061 | 136 syn region rmdCodeBlock matchgroup=rmdCodeDelim start="^\s*```\s*{.*}$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend |
137 syn region rmdCodeBlock matchgroup=rmdCodeDelim start="^\s*```.+$" matchgroup=rmdCodeDelim end="^```$" keepend | |
138 hi link rmdCodeBlock Special | |
6051 | 139 |
14637 | 140 " Now highlight chunks: |
32061 | 141 syn region knitrBodyOptions start='^#| ' end='$' contained containedin=rComment,pythonComment contains=knitrBodyVar,knitrBodyValue transparent |
142 syn match knitrBodyValue ': \zs.*\ze$' keepend contained containedin=knitrBodyOptions | |
143 syn match knitrBodyVar '| \zs\S\{-}\ze:' contained containedin=knitrBodyOptions | |
144 | |
145 let g:rmd_fenced_languages = get(g:, 'rmd_fenced_languages', ['r']) | |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
146 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
147 let s:no_syntax_vim = [] |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
148 function s:IncludeLanguage(lng) |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
149 if a:lng =~ '=' |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
150 let ftpy = substitute(a:lng, '.*=', '', '') |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
151 let lnm = substitute(a:lng, '=.*', '', '') |
14637 | 152 else |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
153 let ftpy = a:lng |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
154 let lnm = a:lng |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
155 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
156 if index(s:no_syntax_vim, ftpy) >= 0 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
157 return |
14637 | 158 endif |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
159 if len(globpath(&rtp, "syntax/" . ftpy . ".vim")) |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
160 unlet! b:current_syntax |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
161 exe 'syn include @Rmd'.lnm.' syntax/'.ftpy.'.vim' |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
162 let b:current_syntax = "rmd" |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
163 if g:rmd_syn_hl_chunk |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
164 exe 'syn match knitrChunkDelim /```\s*{\s*'.lnm.'/ contained containedin=knitrChunkBrace contains=knitrChunkLabel' |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
165 exe 'syn match knitrChunkLabelDelim /```\s*{\s*'.lnm.',\=\s*[-[:alnum:]]\{-1,}[,}]/ contained containedin=knitrChunkBrace' |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
166 syn match knitrChunkDelim /}\s*$/ contained containedin=knitrChunkBrace |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
167 exe 'syn match knitrChunkBrace /```\s*{\s*'.lnm.'.*$/ contained containedin=rmd'.lnm.'Chunk contains=knitrChunkDelim,knitrChunkLabelDelim,@Rmd'.lnm |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
168 exe 'syn region rmd'.lnm.'Chunk start="^\s*```\s*{\s*=\?'.lnm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=knitrChunkBrace,@Rmd'.lnm |
32061 | 169 |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
170 hi link knitrChunkLabel Identifier |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
171 hi link knitrChunkDelim rmdCodeDelim |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
172 hi link knitrChunkLabelDelim rmdCodeDelim |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
173 else |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
174 exe 'syn region rmd'.lnm.'Chunk matchgroup=rmdCodeDelim start="^\s*```\s*{\s*=\?'.lnm.'\>.*$" matchgroup=rmdCodeDelim end="^\s*```\ze\s*$" keepend contains=@Rmd'.lnm |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
175 endif |
14637 | 176 else |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
177 " Avoid the cost of running globpath() whenever the buffer is saved |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
178 let s:no_syntax_vim += [ftpy] |
6051 | 179 endif |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
180 endfunction |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
181 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
182 for s:type in g:rmd_fenced_languages |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
183 call s:IncludeLanguage(s:type) |
14637 | 184 endfor |
185 unlet! s:type | |
186 | |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
187 let s:LaTeX_included = v:false |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
188 function s:IncludeLaTeX() |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
189 let s:LaTeX_included = v:true |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
190 unlet! b:current_syntax |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
191 syn include @RmdLaTeX syntax/tex.vim |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
192 " From vim-pandoc-syntax |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
193 syn region rmdLaTeXInlineMath start=/\v\\@<!\$\S@=/ end=/\v\\@<!\$\d@!/ keepend contains=@RmdLaTeX |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
194 syn match rmdLaTeXCmd /\\[[:alpha:]]\+\(\({.\{-}}\)\=\(\[.\{-}\]\)\=\)*/ contains=@RmdLaTeX |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
195 syn region rmdLaTeX start='\$\$' end='\$\$' keepend contains=@RmdLaTeX |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
196 syn region rmdLaTeX start=/\\begin{\z(.\{-}\)}/ end=/\\end{\z1}/ keepend contains=@RmdLaTeX |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
197 endfunction |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
198 |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
199 function s:CheckRmdFencedLanguages() |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
200 let alines = getline(1, '$') |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
201 call filter(alines, "v:val =~ '^```{'") |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
202 call map(alines, "substitute(v:val, '^```{', '', '')") |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
203 call map(alines, "substitute(v:val, '\\W.*', '', '')") |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
204 for tpy in alines |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
205 if len(tpy) == 0 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
206 continue |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
207 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
208 let has_lng = 0 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
209 for lng in g:rmd_fenced_languages |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
210 if tpy == lng |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
211 let has_lng = 1 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
212 continue |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
213 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
214 endfor |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
215 if has_lng == 0 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
216 let g:rmd_fenced_languages += [tpy] |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
217 call s:IncludeLanguage(tpy) |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
218 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
219 endfor |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
220 |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
221 if hlexists('pandocLaTeXCommand') |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
222 return |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
223 endif |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
224 if g:rmd_include_latex |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
225 if !b:rmd_has_LaTeX && (search('\$\$', 'wn') > 0 || |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
226 \ search('\\begin{', 'wn') > 0) || |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
227 \ search('\\[[:alpha:]]\+', 'wn') || |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
228 \ search('\$[^\$]\+\$', 'wn') |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
229 let b:rmd_has_LaTeX = v:true |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
230 endif |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
231 if b:rmd_has_LaTeX && !s:LaTeX_included |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
232 call s:IncludeLaTeX() |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
233 endif |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
234 endif |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
235 endfunction |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
236 |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
237 if g:rmd_dynamic_fenced_languages |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
238 call s:CheckRmdFencedLanguages() |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
239 augroup RmdSyntax |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
240 autocmd! |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
241 autocmd BufWritePost <buffer> call s:CheckRmdFencedLanguages() |
33368
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
242 augroup END |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
243 endif |
033f22d4a52a
runtime(rmd) Update ftplugin and syntax files (#13193)
Christian Brabandt <cb@256bit.org>
parents:
32974
diff
changeset
|
244 |
32061 | 245 " Step_4: Highlight code recognized by pandoc but not defined in pandoc.vim yet: |
246 syn match pandocDivBegin '^:::\+ {.\{-}}' contains=pandocHeaderAttr | |
247 syn match pandocDivEnd '^:::\+$' | |
24520 | 248 |
32061 | 249 hi def link knitrBodyVar PreProc |
250 hi def link knitrBodyValue Constant | |
251 hi def link knitrBodyOptions rComment | |
252 hi def link pandocDivBegin Delimiter | |
253 hi def link pandocDivEnd Delimiter | |
14637 | 254 hi def link rmdInlineDelim Delimiter |
255 hi def link rmdCodeDelim Delimiter | |
256 | |
32061 | 257 if len(s:save_pandoc_lngs) |
258 let g:pandoc#syntax#codeblocks#embeds#langs = s:save_pandoc_lngs | |
6051 | 259 endif |
32061 | 260 unlet s:save_pandoc_lngs |
261 let &cpo = s:cpo_save | |
262 unlet s:cpo_save | |
6051 | 263 |
34016
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
264 syntax iskeyword clear |
34f6f3678cae
runtime(r): Update R runtime files and docs (#13757)
Christian Brabandt <cb@256bit.org>
parents:
33368
diff
changeset
|
265 |
6051 | 266 let b:current_syntax = "rmd" |
267 | |
268 " vim: ts=8 sw=2 |