Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
r.vim389 linesDownload Raw Back to syntax
1" Vim syntax file2" Language:	      R (GNU S)3" Maintainer:	      This runtime file is looking for a new maintainer.4" Former Maintainers: Jakson Aquino <jalvesaq@gmail.com>5"                     Vaidotas Zemlys <zemlys@gmail.com>6"                     Tom Payne <tom@tompayne.org>7" Contributor:        Johannes Ranke <jranke@uni-bremen.de>8" Former Repository:  https://github.com/jalvesaq/R-Vim-runtime9" Filenames:          *.R *.r *.Rhistory *.Rt10" Last Change:        2023 Dec 24  08:05AM11"   2024 Feb 19 by Vim Project (announce adoption)12"13" NOTE: The highlighting of R functions might be defined in14" runtime files created by a filetype plugin, if installed.15"16" CONFIGURATION:17"   Syntax folding can be turned on by18"19"      let r_syntax_folding = 120"21"   ROxygen highlighting can be turned off by22"23"      let r_syntax_hl_roxygen = 024"25" Some lines of code were borrowed from Zhuojun Chen.26 27if exists("b:current_syntax")28  finish29endif30 31syn iskeyword @,48-57,_,.32 33" The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017.34if exists("g:r_hl_roxygen")35  let g:r_syntax_hl_roxygen = g:r_hl_roxygen36endif37if exists("g:r_syn_minlines")38  let g:r_syntax_minlines = g:r_syn_minlines39endif40 41if exists("g:r_syntax_folding") && g:r_syntax_folding42  setlocal foldmethod=syntax43endif44 45let g:r_syntax_hl_roxygen = get(g:, 'r_syntax_hl_roxygen', 1)46 47syn case match48 49" Comment50syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):"51syn match rTodoParen contained "\(BUG\|FIXME\|NOTE\|TODO\)\s*(.\{-})\s*:" contains=rTodoKeyw,rTodoInfo transparent52syn keyword rTodoKeyw BUG FIXME NOTE TODO contained53syn match rTodoInfo "(\zs.\{-}\ze)" contained54syn match rComment contains=@Spell,rCommentTodo,rTodoParen "#.*"55 56" Roxygen57if g:r_syntax_hl_roxygen58  " A roxygen block can start at the beginning of a file (first version) and59  " after a blank line (second version). It ends when a line appears that does not60  " contain a roxygen comment. In the following comments, any line containing61  " a roxygen comment marker (one or two hash signs # followed by a single62  " quote ' and preceded only by whitespace) is called a roxygen line. A63  " roxygen line containing only a roxygen comment marker, optionally followed64  " by whitespace is called an empty roxygen line.65 66  syn match rOCommentKey "^\s*#\{1,2}'" contained67  syn region rOExamples start="^\s*#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold68  69  " R6 classes may contain roxygen lines independent of roxygen blocks70  syn region rOR6Class start=/R6Class(/ end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold71  syn match rOR6Block "#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained72  syn match rOR6Block "^\s*#\{1,2}'.*" contains=rOTag,rOExamples,@Spell containedin=rOR6Class contained73 74  " First we match all roxygen blocks as containing only a title. In case an75  " empty roxygen line ending the title or a tag is found, this will be76  " overridden later by the definitions of rOBlock.77  syn match rOTitleBlock "\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag78 79  " A title as part of a block is always at the beginning of the block, i.e.80  " either at the start of a file or after a completely empty line.81  syn match rOTitle "\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag82  syn match rOTitleTag contained "@title"83 84  " When a roxygen block has a title and additional content, the title85  " consists of one or more roxygen lines (as little as possible are matched),86  " followed either by an empty roxygen line87  syn region rOBlock start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold88 89  " or by a roxygen tag (we match everything starting with @ but not @@ which is used as escape sequence for a literal @).90  syn region rOBlock start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold91 92  " If a block contains an @rdname, @describeIn tag, it may have paragraph breaks, but does not have a title93  syn region rOBlockNoTitle start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold94  syn region rOBlockNoTitle start="\(\%^\|^\s*\n\)\@<=\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold95 96  " rOTag list originally generated from the lists that were available in97  " https://github.com/klutometis/roxygen/R/rd.R and98  " https://github.com/klutometis/roxygen/R/namespace.R99  " using s/^    \([A-Za-z0-9]*\) = .*/  syn match rOTag contained "@\1"/100  " Plus we need the @include tag101 102  " rd.R103  syn match rOTag contained "@aliases"104  syn match rOTag contained "@author"105  syn match rOTag contained "@backref"106  syn match rOTag contained "@concept"107  syn match rOTag contained "@describeIn"108  syn match rOTag contained "@description"109  syn match rOTag contained "@details"110  syn match rOTag contained "@docType"111  syn match rOTag contained "@encoding"112  syn match rOTag contained "@evalRd"113  syn match rOTag contained "@example"114  syn match rOTag contained "@examples"115  syn match rOTag contained "@family"116  syn match rOTag contained "@field"117  syn match rOTag contained "@format"118  syn match rOTag contained "@inherit"119  syn match rOTag contained "@inheritParams"120  syn match rOTag contained "@inheritDotParams"121  syn match rOTag contained "@inheritSection"122  syn match rOTag contained "@keywords"123  syn match rOTag contained "@method"124  syn match rOTag contained "@name"125  syn match rOTag contained "@md"126  syn match rOTag contained "@noMd"127  syn match rOTag contained "@noRd"128  syn match rOTag contained "@note"129  syn match rOTag contained "@param"130  syn match rOTag contained "@rdname"131  syn match rOTag contained "@rawRd"132  syn match rOTag contained "@references"133  syn match rOTag contained "@return"134  syn match rOTag contained "@section"135  syn match rOTag contained "@seealso"136  syn match rOTag contained "@slot"137  syn match rOTag contained "@source"138  syn match rOTag contained "@template"139  syn match rOTag contained "@templateVar"140  syn match rOTag contained "@title"141  syn match rOTag contained "@usage"142  " namespace.R143  syn match rOTag contained "@export"144  syn match rOTag contained "@exportClass"145  syn match rOTag contained "@exportMethod"146  syn match rOTag contained "@exportPattern"147  syn match rOTag contained "@import"148  syn match rOTag contained "@importClassesFrom"149  syn match rOTag contained "@importFrom"150  syn match rOTag contained "@importMethodsFrom"151  syn match rOTag contained "@rawNamespace"152  syn match rOTag contained "@S3method"153  syn match rOTag contained "@useDynLib"154  " other155  syn match rOTag contained "@eval"156  syn match rOTag contained "@include"157  syn match rOTag contained "@includeRmd"158  syn match rOTag contained "@order"159endif160 161 162if &filetype == "rhelp"163  " string enclosed in double quotes164  syn region rString contains=rSpecial,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/165  " string enclosed in single quotes166  syn region rString contains=rSpecial,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/167else168  " string enclosed in double quotes169  syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/170  " string enclosed in single quotes171  syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/172endif173 174syn match rStrError display contained "\\."175 176 177" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash178syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"179 180" Hexadecimal and Octal digits181syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)"182 183" Unicode characters184syn match rSpecial display contained "\\u\x\{1,4}"185syn match rSpecial display contained "\\U\x\{1,8}"186syn match rSpecial display contained "\\u{\x\{1,4}}"187syn match rSpecial display contained "\\U{\x\{1,8}}"188 189" Raw string190syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)(/ end=/)\z2\z1/ keepend191syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\){/ end=/}\z2\z1/ keepend192syn region rRawString matchgroup=rRawStrDelim start=/[rR]\z(['"]\)\z(-*\)\[/ end=/\]\z2\z1/ keepend193 194" Statement195syn keyword rStatement   break next return196syn keyword rConditional if else197syn keyword rRepeat      for in repeat while198 199" Constant (not really)200syn keyword rConstant T F LETTERS letters month.abb month.name pi201syn keyword rConstant R.version.string202 203syn keyword rNumber   NA_integer_ NA_real_ NA_complex_ NA_character_204 205" Constants206syn keyword rConstant NULL207syn keyword rBoolean  FALSE TRUE208syn keyword rNumber   NA Inf NaN209 210" integer211syn match rInteger "\<\d\+L"212syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L"213syn match rInteger "\<\d\+[Ee]+\=\d\+L"214 215" number with no fractional part or exponent216syn match rNumber "\<\d\+\>"217" hexadecimal number218syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+"219 220" floating point number with integer and fractional parts and optional exponent221syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\="222" floating point number with no integer part and optional exponent223syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\="224" floating point number with no fractional part and optional exponent225syn match rFloat "\<\d\+[Ee][-+]\=\d\+"226 227" complex number228syn match rComplex "\<\d\+i"229syn match rComplex "\<\d\++\d\+i"230syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i"231syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i"232syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i"233syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"234 235syn match rAssign    '='236syn match rOperator    "&"237syn match rOperator    '-'238syn match rOperator    '\*'239syn match rOperator    '+'240if &filetype == "quarto" || &filetype == "rmd" || &filetype == "rrst"241  syn match rOperator    "[|!<>^~`/:]"242else243  syn match rOperator    "[|!<>^~/:]"244endif245syn match rOperator    "%\{2}\|%\S\{-}%"246syn match rOperator '\([!><]\)\@<=='247syn match rOperator '=='248syn match rOperator '|>'249syn match rOpError  '\*\{3}'250syn match rOpError  '//'251syn match rOpError  '&&&'252syn match rOpError  '|||'253syn match rOpError  '<<'254syn match rOpError  '>>'255 256syn match rAssign "<\{1,2}-"257syn match rAssign "->\{1,2}"258 259" Special260syn match rDelimiter "[,;:]"261 262" Error263if exists("g:r_syntax_folding")264  syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError fold265  syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError fold266  syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError fold267  syn region rSection matchgroup=Title start=/^#.*[-=#]\{4,}/ end=/^#.*[-=#]\{4,}/ms=s-2,me=s-1 transparent contains=ALL fold268else269  syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError270  syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError271  syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError272endif273 274syn match rError      "[)\]}]"275syn match rBraceError "[)}]" contained276syn match rCurlyError "[)\]]" contained277syn match rParenError "[\]}]" contained278 279" Use Nvim-R to highlight functions dynamically if it is installed280if !exists("g:r_syntax_fun_pattern")281  let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n")282  if len(s:ff) > 0283    let g:r_syntax_fun_pattern = 0284  else285    let g:r_syntax_fun_pattern = 1286  endif287endif288 289" Only use Nvim-R to highlight functions if they should not be highlighted290" according to a generic pattern291if g:r_syntax_fun_pattern == 1292  syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze('293else294  " Nvim-R:295  runtime R/functions.vim296endif297 298syn match rDollar display contained "\$"299syn match rDollar display contained "@"300 301" List elements will not be highlighted as functions:302syn match rLstElmt "\$[a-zA-Z0-9\\._]*" contains=rDollar303syn match rLstElmt "@[a-zA-Z0-9\\._]*" contains=rDollar304 305" Functions that may add new objects306syn keyword rPreProc     library require attach detach source307 308if &filetype == "rhelp"309  syn match rHelpIdent '\\method'310  syn match rHelpIdent '\\S4method'311endif312 313" Type314syn match rType "\\"315syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame316 317" Name of object with spaces318if &filetype == "rmd" || &filetype == "rrst" || &filetype == "quarto"319  syn region rNameWSpace start="`" end="`" contains=rSpaceFun containedin=rmdrChunk320else321  syn region rNameWSpace start="`" end="`" contains=rSpaceFun322endif323 324if &filetype == "rhelp"325  syn match rhPreProc "^#ifdef.*"326  syn match rhPreProc "^#endif.*"327  syn match rhSection "\\dontrun\>"328endif329 330if exists("r_syntax_minlines")331  exe "syn sync minlines=" . r_syntax_minlines332else333  syn sync minlines=40334endif335 336" Define the default highlighting.337hi def link rAssign      Statement338hi def link rBoolean     Boolean339hi def link rBraceError  Error340hi def link rComment     Comment341hi def link rTodoParen   Comment342hi def link rTodoInfo    SpecialComment343hi def link rCommentTodo Todo344hi def link rTodoKeyw    Todo345hi def link rComplex     Number346hi def link rConditional Conditional347hi def link rConstant    Constant348hi def link rCurlyError  Error349hi def link rDelimiter   Delimiter350hi def link rDollar      SpecialChar351hi def link rError       Error352hi def link rFloat       Float353hi def link rFunction    Function354hi def link rSpaceFun    Function355hi def link rHelpIdent   Identifier356hi def link rhPreProc    PreProc357hi def link rhSection    PreCondit358hi def link rInteger     Number359hi def link rLstElmt     Normal360hi def link rNameWSpace  Normal361hi def link rNumber      Number362hi def link rOperator    Operator363hi def link rOpError     Error364hi def link rParenError  Error365hi def link rPreProc     PreProc366hi def link rRawString   String367hi def link rRawStrDelim Delimiter368hi def link rRepeat      Repeat369hi def link rSpecial     SpecialChar370hi def link rStatement   Statement371hi def link rString      String372hi def link rStrError    Error373hi def link rType        Type374if g:r_syntax_hl_roxygen375  hi def link rOTitleTag   Operator376  hi def link rOTag        Operator377  hi def link rOTitleBlock Title378  hi def link rOBlock         Comment379  hi def link rOBlockNoTitle  Comment380  hi def link rOR6Block         Comment381  hi def link rOTitle      Title382  hi def link rOCommentKey Comment383  hi def link rOExamples   SpecialComment384endif385 386let b:current_syntax="r"387 388" vim: ts=8 sw=2389 
codekingpro/portable-devtools · Team Ai