rhelp.vim 11.8 KB
Newer Older
1 2 3 4
" Vim syntax file
" Language:    R Help File
" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
" Former Maintainer: Johannes Ranke <jranke@uni-bremen.de>
James McCoy's avatar
James McCoy committed
5
" Homepage: https://github.com/jalvesaq/R-Vim-runtime
Justin M. Keyes's avatar
Justin M. Keyes committed
6
" Last Change: Tue Jun 28, 2016  08:53AM
7 8 9 10 11
" Remarks:     - Includes R syntax highlighting in the appropriate
"                sections if an r.vim file is in the same directory or in the
"                default debian location.
"              - There is no Latex markup in equations
"              - Thanks to Will Gray for finding and fixing a bug
James McCoy's avatar
James McCoy committed
12
"              - No support for \var tag within quoted string
13 14

" Version Clears: {{{1
James McCoy's avatar
James McCoy committed
15
if exists("b:current_syntax")
16 17 18
  finish
endif 

James McCoy's avatar
James McCoy committed
19
scriptencoding utf-8
20 21 22 23 24 25 26

syn case match

" R help identifiers {{{1
syn region rhelpIdentifier matchgroup=rhelpSection	start="\\name{" end="}" 
syn region rhelpIdentifier matchgroup=rhelpSection	start="\\alias{" end="}" 
syn region rhelpIdentifier matchgroup=rhelpSection	start="\\pkg{" end="}" contains=rhelpLink
James McCoy's avatar
James McCoy committed
27
syn region rhelpIdentifier matchgroup=rhelpSection	start="\\CRANpkg{" end="}" contains=rhelpLink
28 29 30
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained
syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}"

James McCoy's avatar
James McCoy committed
31

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
" Highlighting of R code using an existing r.vim syntax file if available {{{1
syn include @R syntax/r.vim

" Strings {{{1
syn region rhelpString start=/"/ skip=/\\"/ end=/"/ contains=rhelpSpecialChar,rhelpCodeSpecial,rhelpLink contained

" Special characters in R strings
syn match rhelpCodeSpecial display contained "\\\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"

" Special characters  ( \$ \& \% \# \{ \} \_)
syn match rhelpSpecialChar        "\\[$&%#{}_]"


" R code {{{1
syn match rhelpDots		"\\dots" containedin=@R
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink,rhelpIdentifier,rhelpString,rhelpSpecialChar,rhelpSection
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R

if v:version > 703
  syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@1<!{.\{-}\\\@1<!}' transparent end="}" contains=@R,rhelpDots,rhelpString,rhelpSpecialChar,rhelpLink keepend
else
  syn region rhelpRcode matchgroup=Delimiter start="\\code{" skip='\\\@<!{.\{-}\\\@<!}' transparent end="}" contains=@R,rhelpDots,rhelpString,rhelpSpecialChar,rhelpLink keepend
endif
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=")" contains=@R,rhelpDots
syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end="}" contains=@R

" PreProc {{{1
syn match rhelpPreProc "^#ifdef.*" 
syn match rhelpPreProc "^#endif.*" 

" Special Delimiters {{{1
syn match rhelpDelimiter		"\\cr"
syn match rhelpDelimiter		"\\tab "

" Keywords {{{1
James McCoy's avatar
James McCoy committed
69 70 71
syn match rhelpKeyword	"\\R\>"
syn match rhelpKeyword	"\\ldots\>"
syn match rhelpKeyword	"\\sspace\>"
72 73 74
syn match rhelpKeyword  "--"
syn match rhelpKeyword  "---"

James McCoy's avatar
James McCoy committed
75 76 77 78 79 80 81
" Condition Keywords {{{2
syn match rhelpKeyword	"\\if\>"
syn match rhelpKeyword	"\\ifelse\>"
syn match rhelpKeyword	"\\out\>"
" Examples of usage:
" \ifelse{latex}{\eqn{p = 5 + 6 - 7 \times 8}}{\eqn{p = 5 + 6 - 7 * 8}}
" \ifelse{latex}{\out{$\alpha$}}{\ifelse{html}{\out{&alpha;}}{alpha}}
82

James McCoy's avatar
James McCoy committed
83 84 85 86 87 88 89 90 91 92
" Keywords and operators valid only if in math mode {{{2
syn match rhelpMathOp  "<" contained
syn match rhelpMathOp  ">" contained
syn match rhelpMathOp  "+" contained
syn match rhelpMathOp  "-" contained
syn match rhelpMathOp  "=" contained

" Conceal function based on syntax/tex.vim {{{2
if exists("g:tex_conceal")
  let s:tex_conceal = g:tex_conceal
93
else
James McCoy's avatar
James McCoy committed
94
  let s:tex_conceal = 'gm'
95
endif
James McCoy's avatar
James McCoy committed
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
function s:HideSymbol(pat, cchar, hide)
  if a:hide
    exe "syn match rhelpMathSymb '" . a:pat . "' contained conceal cchar=" . a:cchar
  else
    exe "syn match rhelpMathSymb '" . a:pat . "' contained"
  endif
endfunction

" Math symbols {{{2
if s:tex_conceal =~ 'm'
  let s:hd = 1
else
  let s:hd = 0
endif
call s:HideSymbol('\\infty\>',  '∞', s:hd)
call s:HideSymbol('\\ge\>',     '≥', s:hd)
call s:HideSymbol('\\le\>',     '≤', s:hd)
call s:HideSymbol('\\prod\>',   '∏', s:hd)
call s:HideSymbol('\\sum\>',    '∑', s:hd)
syn match rhelpMathSymb   	"\\sqrt\>" contained

" Greek letters {{{2
if s:tex_conceal =~ 'g'
  let s:hd = 1
else
  let s:hd = 0
endif
call s:HideSymbol('\\alpha\>',    'α', s:hd)
call s:HideSymbol('\\beta\>',     'β', s:hd)
call s:HideSymbol('\\gamma\>',    'γ', s:hd)
call s:HideSymbol('\\delta\>',    'δ', s:hd)
call s:HideSymbol('\\epsilon\>',  'ϵ', s:hd)
call s:HideSymbol('\\zeta\>',     'ζ', s:hd)
call s:HideSymbol('\\eta\>',      'η', s:hd)
call s:HideSymbol('\\theta\>',    'θ', s:hd)
call s:HideSymbol('\\iota\>',     'ι', s:hd)
call s:HideSymbol('\\kappa\>',    'κ', s:hd)
call s:HideSymbol('\\lambda\>',   'λ', s:hd)
call s:HideSymbol('\\mu\>',       'μ', s:hd)
call s:HideSymbol('\\nu\>',       'ν', s:hd)
call s:HideSymbol('\\xi\>',       'ξ', s:hd)
call s:HideSymbol('\\pi\>',       'π', s:hd)
call s:HideSymbol('\\rho\>',      'ρ', s:hd)
call s:HideSymbol('\\sigma\>',    'σ', s:hd)
call s:HideSymbol('\\tau\>',      'τ', s:hd)
call s:HideSymbol('\\upsilon\>',  'υ', s:hd)
call s:HideSymbol('\\phi\>',      'ϕ', s:hd)
call s:HideSymbol('\\chi\>',      'χ', s:hd)
call s:HideSymbol('\\psi\>',      'ψ', s:hd)
call s:HideSymbol('\\omega\>',    'ω', s:hd)
call s:HideSymbol('\\Gamma\>',    'Γ', s:hd)
call s:HideSymbol('\\Delta\>',    'Δ', s:hd)
call s:HideSymbol('\\Theta\>',    'Θ', s:hd)
call s:HideSymbol('\\Lambda\>',   'Λ', s:hd)
call s:HideSymbol('\\Xi\>',       'Ξ', s:hd)
call s:HideSymbol('\\Pi\>',       'Π', s:hd)
call s:HideSymbol('\\Sigma\>',    'Σ', s:hd)
call s:HideSymbol('\\Upsilon\>',  'Υ', s:hd)
call s:HideSymbol('\\Phi\>',      'Φ', s:hd)
call s:HideSymbol('\\Psi\>',      'Ψ', s:hd)
call s:HideSymbol('\\Omega\>',    'Ω', s:hd)
delfunction s:HideSymbol
" Note: The letters 'omicron', 'Alpha', 'Beta', 'Epsilon', 'Zeta', 'Eta',
" 'Iota', 'Kappa', 'Mu', 'Nu', 'Omicron', 'Rho', 'Tau' and 'Chi' are listed
" at src/library/tools/R/Rd2txt.R because they are valid in HTML, although
" they do not make valid LaTeX code (e.g. &Alpha; versus \Alpha).

" Links {{{1
syn region rhelpLink matchgroup=rhelpType start="\\link{" end="}" contained keepend extend
syn region rhelpLink matchgroup=rhelpType start="\\link\[.\{-}\]{" end="}" contained keepend extend
syn region rhelpLink matchgroup=rhelpType start="\\linkS4class{" end="}" contained keepend extend
syn region rhelpLink matchgroup=rhelpType start="\\url{" end="}" contained keepend extend
syn region rhelpLink matchgroup=rhelpType start="\\href{" end="}" contained keepend extend
syn region rhelpLink matchgroup=rhelpType start="\\figure{" end="}" contained keepend extend

" Verbatim like {{{1
syn region rhelpVerbatim matchgroup=rhelpType start="\\samp{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment
syn region rhelpVerbatim matchgroup=rhelpType start="\\verb{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpSpecialChar,rhelpComment

" Equation {{{1
syn region rhelpEquation matchgroup=rhelpType start="\\eqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
syn region rhelpEquation matchgroup=rhelpType start="\\deqn{" skip='\\\@1<!{.\{-}\\\@1<!}' end="}" contains=rhelpMathSymb,rhelpMathOp,rhelpRegion contained keepend extend
178 179 180 181 182 183 184 185 186 187 188

" Type Styles {{{1
syn match rhelpType		"\\emph\>"
syn match rhelpType		"\\strong\>"
syn match rhelpType		"\\bold\>"
syn match rhelpType		"\\sQuote\>"
syn match rhelpType		"\\dQuote\>"
syn match rhelpType		"\\preformatted\>"
syn match rhelpType		"\\kbd\>"
syn match rhelpType		"\\file\>"
syn match rhelpType		"\\email\>"
James McCoy's avatar
James McCoy committed
189
syn match rhelpType		"\\enc\>"
190 191 192 193 194 195 196 197 198
syn match rhelpType		"\\var\>"
syn match rhelpType		"\\env\>"
syn match rhelpType		"\\option\>"
syn match rhelpType		"\\command\>"
syn match rhelpType		"\\newcommand\>"
syn match rhelpType		"\\renewcommand\>"
syn match rhelpType		"\\dfn\>"
syn match rhelpType		"\\cite\>"
syn match rhelpType		"\\acronym\>"
James McCoy's avatar
James McCoy committed
199
syn match rhelpType		"\\doi\>"
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238

" rhelp sections {{{1
syn match rhelpSection		"\\encoding\>"
syn match rhelpSection		"\\title\>"
syn match rhelpSection		"\\item\>"
syn match rhelpSection		"\\description\>"
syn match rhelpSection		"\\concept\>"
syn match rhelpSection		"\\arguments\>"
syn match rhelpSection		"\\details\>"
syn match rhelpSection		"\\value\>"
syn match rhelpSection		"\\references\>"
syn match rhelpSection		"\\note\>"
syn match rhelpSection		"\\author\>"
syn match rhelpSection		"\\seealso\>"
syn match rhelpSection		"\\keyword\>"
syn match rhelpSection		"\\docType\>"
syn match rhelpSection		"\\format\>"
syn match rhelpSection		"\\source\>"
syn match rhelpSection    "\\itemize\>"
syn match rhelpSection    "\\describe\>"
syn match rhelpSection    "\\enumerate\>"
syn match rhelpSection    "\\item "
syn match rhelpSection    "\\item$"
syn match rhelpSection		"\\tabular{[lcr]*}"
syn match rhelpSection		"\\dontrun\>"
syn match rhelpSection		"\\dontshow\>"
syn match rhelpSection		"\\testonly\>"
syn match rhelpSection		"\\donttest\>"

" Freely named Sections {{{1
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}"
syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}" 

syn match rhelpDelimiter "{\|\[\|(\|)\|\]\|}"

" R help file comments {{{1
syn match rhelpComment /%.*$/

" Error {{{1
James McCoy's avatar
James McCoy committed
239 240 241
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim,rhelpEquation
242 243 244 245 246 247 248 249
syn match rhelpError      /[)\]}]/
syn match rhelpBraceError /[)}]/ contained
syn match rhelpCurlyError /[)\]]/ contained
syn match rhelpParenError /[\]}]/ contained

syntax sync match rhelpSyncRcode grouphere rhelpRcode "\\examples{"

" Define the default highlighting {{{1
James McCoy's avatar
James McCoy committed
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
hi def link rhelpVerbatim    String
hi def link rhelpDelimiter   Delimiter
hi def link rhelpIdentifier  Identifier
hi def link rhelpString      String
hi def link rhelpCodeSpecial Special
hi def link rhelpKeyword     Keyword
hi def link rhelpDots        Keyword
hi def link rhelpLink        Underlined
hi def link rhelpType        Type
hi def link rhelpSection     PreCondit
hi def link rhelpError       Error
hi def link rhelpBraceError  Error
hi def link rhelpCurlyError  Error
hi def link rhelpParenError  Error
hi def link rhelpPreProc     PreProc
hi def link rhelpDelimiter   Delimiter
hi def link rhelpComment     Comment
hi def link rhelpRComment    Comment
hi def link rhelpSpecialChar SpecialChar
hi def link rhelpMathSymb    Special
hi def link rhelpMathOp      Operator
271 272 273 274

let   b:current_syntax = "rhelp"

" vim: foldmethod=marker sw=2