| " Vim syntax file |
| " Language: R Help File |
| " Maintainer: Jakson Aquino <jalvesaq@gmail.com> |
| " Former Maintainer: Johannes Ranke <jranke@uni-bremen.de> |
| " Homepage: https://github.com/jalvesaq/R-Vim-runtime |
| " Last Change: Tue Jun 28, 2016 08:53AM |
| " 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 |
| " - No support for \var tag within quoted string |
| |
| " Version Clears: {{{1 |
| if exists("b:current_syntax") |
| finish |
| endif |
| |
| scriptencoding utf-8 |
| |
| 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 |
| syn region rhelpIdentifier matchgroup=rhelpSection start="\\CRANpkg{" end="}" contains=rhelpLink |
| syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained |
| syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}" |
| |
| |
| " 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 |
| syn match rhelpKeyword "\\R\>" |
| syn match rhelpKeyword "\\ldots\>" |
| syn match rhelpKeyword "\\sspace\>" |
| syn match rhelpKeyword "--" |
| syn match rhelpKeyword "---" |
| |
| " 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}} |
| |
| " 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 |
| else |
| let s:tex_conceal = 'gm' |
| endif |
| 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. Α 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 |
| |
| " 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\>" |
| syn match rhelpType "\\enc\>" |
| 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\>" |
| syn match rhelpType "\\doi\>" |
| |
| " 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 |
| 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 |
| 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 |
| 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 |
| |
| let b:current_syntax = "rhelp" |
| |
| " vim: foldmethod=marker sw=2 |