On Sat, Sep 25, 2010 at 5:20 PM, Bram Moolenaar <[email protected]> wrote: > > Jakson A. Aquino wrote: > >> Some time ago I proposed a patch to syntax/r.vim, but Bram considered >> it would be better to apply the patch after the release of Vim 7.3. >> So, I'm sending the patch again. The previous discussion is archived >> here: >> >> http://groups.google.com/group/vim_dev/browse_thread/thread/d89502034093191e/df231331f354dc7c >> >> Actually, the maintainer of syntax/r.vim replied to my email on >> August, 3, and he suggested that I should become the maintainer of the >> syntax/r.vim since I'm already maintaining a R plugin. > > If anybody sees a problem in this syntax file, let us know. Otherwise > I'll include it.
I noted that my patch has what may be a security weakness: the attempting of sourcing of a script that is not installed by default and which is part of the vim-r-plugin. I'm sending a new version without the "runtime" command. Because I changed the style of the r.vim script (basically the use of quotes instead of slashes) the diff file shows too many differences. So I'm sending both the diff and the syntax/r.vim itself. Best regards, Jakson -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
diff -r d5681bd2661b runtime/syntax/r.vim --- a/runtime/syntax/r.vim Wed Sep 29 13:02:53 2010 +0200 +++ b/runtime/syntax/r.vim Wed Sep 29 09:42:29 2010 -0300 @@ -1,111 +1,137 @@ " Vim syntax file -" Language: R (GNU S) -" Maintainer: Vaidotas Zemlys <[email protected]> -" 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 <[email protected]> +" Former Maintainers: Vaidotas Zemlys <[email protected]> +" Tom Payne <[email protected]> +" 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 <[email protected]> -" 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 contai...@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=/'/ -" 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*/ +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\|'\|\"\)\|\\\\" + +" 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 -" Type -syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame +" 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%" + +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 -
r.vim
Description: Binary data
