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