diff runtime/syntax/r.vim @ 2608:7d8af31066c8

Updated runtime files and translations.
author Bram Moolenaar <bram@vim.org>
date Wed, 20 Oct 2010 18:45:33 +0200
parents 8cd729851562
children 6f63330ec225
line wrap: on
line diff
--- a/runtime/syntax/r.vim
+++ b/runtime/syntax/r.vim
@@ -1,111 +1,137 @@
 " Vim syntax file
-" Language:	R (GNU S)
-" Maintainer:	Vaidotas Zemlys <zemlys@gmail.com>
-" Last Change:  2006 Apr 30
-" Filenames:	*.R *.Rout *.r *.Rhistory *.Rt *.Rout.save *.Rout.fail
-" URL:		http://uosis.mif.vu.lt/~zemlys/vim-syntax/r.vim
+" Language:	      R (GNU S)
+" Maintainer:	      Jakson Aquino <jalvesaq@gmail.com>
+" Former Maintainers: Vaidotas Zemlys <zemlys@gmail.com>
+" 		      Tom Payne <tom@tompayne.org>
+" Last Change:	      Wed Sep 29, 2010  09:31AM
+" Filenames:	      *.R *.r *.Rhistory *.Rt
+" 
+" NOTE: The highlighting of R functions is defined in the
+" r-plugin/functions.vim, which is part of vim-r-plugin2:
+" http://www.vim.org/scripts/script.php?script_id=2628
+"
+" Some lines of code were borrowed from Zhuojun Chen.
 
-" First maintainer Tom Payne <tom@tompayne.org>
-" Modified to make syntax less colourful and added the highlighting of
-" R assignment arrow
-
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
   finish
 endif
 
-if version >= 600
-  setlocal iskeyword=@,48-57,_,.
-else
-  set iskeyword=@,48-57,_,.
-endif
+setlocal iskeyword=@,48-57,_,.
 
 syn case match
 
 " Comment
-syn match rComment /\#.*/
+syn match rComment contains=@Spell "\#.*"
 
-" Constant
 " string enclosed in double quotes
-syn region rString start=/"/ skip=/\\\\\|\\"/ end=/"/
+syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/
 " string enclosed in single quotes
-syn region rString start=/'/ skip=/\\\\\|\\'/ end=/'/
-" number with no fractional part or exponent
-syn match rNumber /\d\+/
-" floating point number with integer and fractional parts and optional exponent
-syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
-" floating point number with no integer part and optional exponent
-syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
-" floating point number with no fractional part and optional exponent
-syn match rFloat /\d\+[Ee][-+]\=\d\+/
+syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/
+
+syn match rStrError display contained "\\."
+
+" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash
+syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"
 
-" Identifier
-" identifier with leading letter and optional following keyword characters
-syn match rIdentifier /\a\k*/
-" identifier with leading period, one or more digits, and at least one non-digit keyword character
-syn match rIdentifier /\.\d*\K\k*/
+" Hexadecimal and Octal digits
+syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)"
+
+" Unicode characters
+syn match rSpecial display contained "\\u\x\{1,4}"
+syn match rSpecial display contained "\\U\x\{1,8}"
+syn match rSpecial display contained "\\u{\x\{1,4}}"
+syn match rSpecial display contained "\\U{\x\{1,8}}"
+
+
+syn match rDollar "\$"
 
 " Statement
 syn keyword rStatement   break next return
 syn keyword rConditional if else
 syn keyword rRepeat      for in repeat while
 
+" Constant (not really)
+syn keyword rConstant T F LETTERS letters month.ab month.name pi
+syn keyword rConstant R.version.string
+
 " Constant
-syn keyword rConstant LETTERS letters month.ab month.name pi
 syn keyword rConstant NULL
 syn keyword rBoolean  FALSE TRUE
-syn keyword rNumber   NA
-syn match rArrow /<\{1,2}-/
+syn keyword rNumber   NA NA_integer_ NA_real_ NA_complex_ NA_character_ 
+syn keyword rNumber   Inf NaN 
+
+" integer
+syn match rInteger "\<\d\+L"
+syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L"
+syn match rInteger "\<\d\+[Ee]+\=\d\+L"
+
+syn match rOperator    "[\*\!\&\+\-\<\>\=\^\|\~\`/:@]"
+syn match rOperator    "%\{2}\|%\*%\|%\/%\|%in%\|%o%\|%x%"
 
-" Type
-syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame 
+syn match rComplex "\<\d\+i"
+syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i"
+syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i"
+syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i"
+syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"
+
+" number with no fractional part or exponent
+syn match rNumber "\<\d\+\>"
+" hexadecimal number 
+syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+"
+
+" floating point number with integer and fractional parts and optional exponent
+syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\="
+" floating point number with no integer part and optional exponent
+syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\="
+" floating point number with no fractional part and optional exponent
+syn match rFloat "\<\d\+[Ee][-+]\=\d\+"
+
+syn match rArrow "<\{1,2}-"
+syn match rArrow "->\{1,2}"
 
 " Special
-syn match rDelimiter /[,;:]/
+syn match rDelimiter "[,;:]"
 
 " Error
 syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
 syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
 syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
-syn match rError      /[)\]}]/
-syn match rBraceError /[)}]/ contained
-syn match rCurlyError /[)\]]/ contained
-syn match rParenError /[\]}]/ contained
+syn match rError      "[)\]}]"
+syn match rBraceError "[)}]" contained
+syn match rCurlyError "[)\]]" contained
+syn match rParenError "[\]}]" contained
+
+" Functions that may add new objects
+syn keyword rPreProc     library require attach detach source
+
+" Type
+syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame 
 
 " Define the default highlighting.
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_r_syn_inits")
-  if version < 508
-    let did_r_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-  HiLink rComment     Comment
-  HiLink rConstant    Constant
-  HiLink rString      String
-  HiLink rNumber      Number
-  HiLink rBoolean     Boolean
-  HiLink rFloat       Float
-  HiLink rStatement   Statement
-  HiLink rConditional Conditional
-  HiLink rRepeat      Repeat
-  HiLink rIdentifier  Normal
-  HiLink rArrow	      Statement	
-  HiLink rType        Type
-  HiLink rDelimiter   Delimiter
-  HiLink rError       Error
-  HiLink rBraceError  Error
-  HiLink rCurlyError  Error
-  HiLink rParenError  Error
-  delcommand HiLink
-endif
+hi def link rArrow       Statement	
+hi def link rBoolean     Boolean
+hi def link rBraceError  Error
+hi def link rComment     Comment
+hi def link rComplex     Number
+hi def link rConditional Conditional
+hi def link rConstant    Constant
+hi def link rCurlyError  Error
+hi def link rDelimiter   Delimiter
+hi def link rDollar      SpecialChar
+hi def link rError       Error
+hi def link rFloat       Float
+hi def link rInteger     Number
+hi def link rNumber      Number
+hi def link rOperator    Operator
+hi def link rParenError  Error
+hi def link rPreProc     PreProc
+hi def link rRepeat      Repeat
+hi def link rSpecial     SpecialChar
+hi def link rStatement   Statement
+hi def link rString      String
+hi def link rStrError    Error
+hi def link rType        Type
 
 let b:current_syntax="r"
 
 " vim: ts=8 sw=2
-