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
-

Attachment: r.vim
Description: Binary data

Raspunde prin e-mail lui