blob: c2ecca4ef26a7ed60da221af349373089fd376a3 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: R (GNU S)
3" Maintainer: Tom Payne <tom@tompayne.org>
4" Last Change: 2003 May 11
5" Filenames: *.r
6" URL: http://www.tompayne.org/vim/syntax/r.vim
7
8" For version 5.x: Clear all syntax items
9" For version 6.x: Quit when a syntax file was already loaded
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16if version >= 600
17 setlocal iskeyword=@,48-57,_,.
18else
19 set iskeyword=@,48-57,_,.
20endif
21
22syn case match
23
24" Comment
25syn match rComment /\#.*/
26
27" Constant
28" string enclosed in double quotes
29syn region rString start=/"/ skip=/\\\\\|\\"/ end=/"/
30" string enclosed in single quotes
31syn region rString start=/'/ skip=/\\\\\|\\'/ end=/'/
32" number with no fractional part or exponent
33syn match rNumber /\d\+/
34" floating point number with integer and fractional parts and optional exponent
35syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
36" floating point number with no integer part and optional exponent
37syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
38" floating point number with no fractional part and optional exponent
39syn match rFloat /\d\+[Ee][-+]\=\d\+/
40
41" Identifier
42" identifier with leading letter and optional following keyword characters
43syn match rIdentifier /\a\k*/
44" identifier with leading period, one or more digits, and at least one non-digit keyword character
45syn match rIdentifier /\.\d*\K\k*/
46
47" Statement
48syn keyword rStatement break next return
49syn keyword rConditional if else
50syn keyword rRepeat for in repeat while
51
52" Constant
53syn keyword rConstant LETTERS letters month.ab month.name pi
54syn keyword rConstant NULL
55syn keyword rBoolean FALSE TRUE
56syn keyword rNumber NA
57
58" Type
59syn keyword rType array category character complex double function integer list logical matrix numeric vector
60
61" Special
62syn match rDelimiter /[,;:]/
63
64" Error
65syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
66syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
67syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
68syn match rError /[)\]}]/
69syn match rBraceError /[)}]/ contained
70syn match rCurlyError /[)\]]/ contained
71syn match rParenError /[\]}]/ contained
72
73" Define the default highlighting.
74" For version 5.7 and earlier: only when not done already
75" For version 5.8 and later: only when an item doesn't have highlighting yet
76if version >= 508 || !exists("did_r_syn_inits")
77 if version < 508
78 let did_r_syn_inits = 1
79 command -nargs=+ HiLink hi link <args>
80 else
81 command -nargs=+ HiLink hi def link <args>
82 endif
83 HiLink rComment Comment
84 HiLink rConstant Constant
85 HiLink rString String
86 HiLink rNumber Number
87 HiLink rBoolean Boolean
88 HiLink rFloat Float
89 HiLink rStatement Statement
90 HiLink rConditional Conditional
91 HiLink rRepeat Repeat
92 HiLink rIdentifier Identifier
93 HiLink rType Type
94 HiLink rDelimiter Delimiter
95 HiLink rError Error
96 HiLink rBraceError Error
97 HiLink rCurlyError Error
98 HiLink rParenError Error
99 delcommand HiLink
100endif
101
102let b:current_syntax="r"
103
104" vim: ts=8 sw=2