6051
|
1 " markdown Text with R statements
|
|
2 " Language: markdown with R code chunks
|
|
3 " Last Change: Wed Jul 09, 2014 10:29PM
|
|
4 "
|
|
5 " CONFIGURATION:
|
|
6 " To highlight chunk headers as R code, put in your vimrc:
|
|
7 " let rmd_syn_hl_chunk = 1
|
|
8
|
|
9 " for portability
|
|
10 if version < 600
|
|
11 syntax clear
|
|
12 elseif exists("b:current_syntax")
|
|
13 finish
|
|
14 endif
|
|
15
|
|
16 " load all of pandoc info
|
|
17 runtime syntax/pandoc.vim
|
|
18 if exists("b:current_syntax")
|
|
19 let rmdIsPandoc = 1
|
|
20 unlet b:current_syntax
|
|
21 else
|
|
22 let rmdIsPandoc = 0
|
|
23 runtime syntax/markdown.vim
|
|
24 if exists("b:current_syntax")
|
|
25 unlet b:current_syntax
|
|
26 endif
|
|
27 endif
|
|
28
|
|
29 " load all of the r syntax highlighting rules into @R
|
|
30 syntax include @R syntax/r.vim
|
|
31 if exists("b:current_syntax")
|
|
32 unlet b:current_syntax
|
|
33 endif
|
|
34
|
|
35 if exists("g:rmd_syn_hl_chunk")
|
|
36 " highlight R code inside chunk header
|
|
37 syntax match rmdChunkDelim "^[ \t]*```{r" contained
|
|
38 syntax match rmdChunkDelim "}$" contained
|
|
39 else
|
|
40 syntax match rmdChunkDelim "^[ \t]*```{r.*}$" contained
|
|
41 endif
|
|
42 syntax match rmdChunkDelim "^[ \t]*```$" contained
|
|
43 syntax region rmdChunk start="^[ \t]*``` *{r.*}$" end="^[ \t]*```$" contains=@R,rmdChunkDelim keepend fold
|
|
44
|
|
45 " also match and syntax highlight in-line R code
|
|
46 syntax match rmdEndInline "`" contained
|
|
47 syntax match rmdBeginInline "`r " contained
|
|
48 syntax region rmdrInline start="`r " end="`" contains=@R,rmdBeginInline,rmdEndInline keepend
|
|
49
|
|
50 " match slidify special marker
|
|
51 syntax match rmdSlidifySpecial "\*\*\*"
|
|
52
|
|
53
|
|
54 if rmdIsPandoc == 0
|
|
55 syn match rmdBlockQuote /^\s*>.*\n\(.*\n\@<!\n\)*/ skipnl
|
|
56 " LaTeX
|
|
57 syntax include @LaTeX syntax/tex.vim
|
|
58 if exists("b:current_syntax")
|
|
59 unlet b:current_syntax
|
|
60 endif
|
|
61 " Inline
|
|
62 syntax match rmdLaTeXInlDelim "\$"
|
|
63 syntax match rmdLaTeXInlDelim "\\\$"
|
|
64 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
|
|
65 " Region
|
|
66 syntax match rmdLaTeXRegDelim "\$\$" contained
|
|
67 syntax match rmdLaTeXRegDelim "\$\$latex$" contained
|
|
68 syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend
|
|
69 syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend
|
|
70 hi def link rmdLaTeXSt Statement
|
|
71 hi def link rmdLaTeXInlDelim Special
|
|
72 hi def link rmdLaTeXRegDelim Special
|
|
73 endif
|
|
74
|
|
75 setlocal iskeyword=@,48-57,_,.
|
|
76
|
|
77 syn sync match rmdSyncChunk grouphere rmdChunk "^[ \t]*``` *{r"
|
|
78
|
|
79 hi def link rmdChunkDelim Special
|
|
80 hi def link rmdBeginInline Special
|
|
81 hi def link rmdEndInline Special
|
|
82 hi def link rmdBlockQuote Comment
|
|
83 hi def link rmdSlidifySpecial Special
|
|
84
|
|
85 let b:current_syntax = "rmd"
|
|
86
|
|
87 " vim: ts=8 sw=2
|