1" Vim syntax file
2" Informix Structured Query Language (SQL) and Stored Procedure Language (SPL)
3" Language:	SQL, SPL (Informix Dynamic Server 2000 v9.2)
4" Maintainer:	Dean Hill <dhill@hotmail.com>
5" Last Change:	2004 Aug 30
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10  syntax clear
11elseif exists("b:current_syntax")
12  finish
13endif
14
15syn case ignore
16
17
18
19" === Comment syntax group ===
20syn region sqlComment    start="{"  end="}" contains=sqlTodo
21syn match sqlComment	"--.*$" contains=sqlTodo
22syn sync ccomment sqlComment
23
24
25
26" === Constant syntax group ===
27" = Boolean subgroup =
28syn keyword sqlBoolean  true false
29syn keyword sqlBoolean  null
30syn keyword sqlBoolean  public user
31syn keyword sqlBoolean  current today
32syn keyword sqlBoolean  year month day hour minute second fraction
33
34" = String subgroup =
35syn region sqlString		start=+"+  end=+"+
36syn region sqlString		start=+'+  end=+'+
37
38" = Numbers subgroup =
39syn match sqlNumber		"-\=\<\d*\.\=[0-9_]\>"
40
41
42
43" === Statement syntax group ===
44" SQL
45syn keyword sqlStatement allocate alter
46syn keyword sqlStatement begin
47syn keyword sqlStatement close commit connect create
48syn keyword sqlStatement database deallocate declare delete describe disconnect drop
49syn keyword sqlStatement execute fetch flush free get grant info insert
50syn keyword sqlStatement load lock open output
51syn keyword sqlStatement prepare put
52syn keyword sqlStatement rename revoke rollback select set start stop
53syn keyword sqlStatement truncate unload unlock update
54syn keyword sqlStatement whenever
55" SPL
56syn keyword sqlStatement call continue define
57syn keyword sqlStatement exit
58syn keyword sqlStatement let
59syn keyword sqlStatement return system trace
60
61" = Conditional subgroup =
62" SPL
63syn keyword sqlConditional elif else if then
64syn keyword sqlConditional case
65" Highlight "end if" with one or more separating spaces
66syn match  sqlConditional "end \+if"
67
68" = Repeat subgroup =
69" SQL/SPL
70" Handle SQL triggers' "for each row" clause and SPL "for" loop
71syn match  sqlRepeat "for\( \+each \+row\)\="
72" SPL
73syn keyword sqlRepeat foreach while
74" Highlight "end for", etc. with one or more separating spaces
75syn match  sqlRepeat "end \+for"
76syn match  sqlRepeat "end \+foreach"
77syn match  sqlRepeat "end \+while"
78
79" = Exception subgroup =
80" SPL
81syn match  sqlException "on \+exception"
82syn match  sqlException "end \+exception"
83syn match  sqlException "end \+exception \+with \+resume"
84syn match  sqlException "raise \+exception"
85
86" = Keyword subgroup =
87" SQL
88syn keyword sqlKeyword aggregate add as authorization autofree by
89syn keyword sqlKeyword cache cascade check cluster collation
90syn keyword sqlKeyword column connection constraint cross
91syn keyword sqlKeyword dataskip debug default deferred_prepare
92syn keyword sqlKeyword descriptor diagnostics
93syn keyword sqlKeyword each escape explain external
94syn keyword sqlKeyword file foreign fragment from function
95syn keyword sqlKeyword group having
96syn keyword sqlKeyword immediate index inner into isolation
97syn keyword sqlKeyword join key
98syn keyword sqlKeyword left level log
99syn keyword sqlKeyword mode modify mounting new no
100syn keyword sqlKeyword object of old optical option
101syn keyword sqlKeyword optimization order outer
102syn keyword sqlKeyword pdqpriority pload primary procedure
103syn keyword sqlKeyword references referencing release reserve
104syn keyword sqlKeyword residency right role routine row
105syn keyword sqlKeyword schedule schema scratch session set
106syn keyword sqlKeyword statement statistics synonym
107syn keyword sqlKeyword table temp temporary timeout to transaction trigger
108syn keyword sqlKeyword using values view violations
109syn keyword sqlKeyword where with work
110" Highlight "on" (if it's not followed by some words we've already handled)
111syn match sqlKeyword "on \+\(exception\)\@!"
112" SPL
113" Highlight "end" (if it's not followed by some words we've already handled)
114syn match sqlKeyword "end \+\(if\|for\|foreach\|while\|exception\)\@!"
115syn keyword sqlKeyword resume returning
116
117" = Operator subgroup =
118" SQL
119syn keyword sqlOperator	not and or
120syn keyword sqlOperator	in is any some all between exists
121syn keyword sqlOperator	like matches
122syn keyword sqlOperator union intersect
123syn keyword sqlOperator distinct unique
124
125
126
127" === Identifier syntax group ===
128" = Function subgroup =
129" SQL
130syn keyword sqlFunction	abs acos asin atan atan2 avg
131syn keyword sqlFunction	cardinality cast char_length character_length cos count
132syn keyword sqlFunction	exp filetoblob filetoclob hex
133syn keyword sqlFunction	initcap length logn log10 lower lpad
134syn keyword sqlFunction	min max mod octet_length pow range replace root round rpad
135syn keyword sqlFunction	sin sqrt stdev substr substring sum
136syn keyword sqlFunction	to_char tan to_date trim trunc upper variance
137
138
139
140" === Type syntax group ===
141" SQL
142syn keyword sqlType	blob boolean byte char character clob
143syn keyword sqlType	date datetime dec decimal double
144syn keyword sqlType	float int int8 integer interval list lvarchar
145syn keyword sqlType	money multiset nchar numeric nvarchar
146syn keyword sqlType	real serial serial8 smallfloat smallint
147syn keyword sqlType	text varchar varying
148
149
150
151" === Todo syntax group ===
152syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE
153
154
155
156" Define the default highlighting.
157" For version 5.7 and earlier: only when not done already
158" For version 5.8 and later: only when an item doesn't have highlighting yet
159if version >= 508 || !exists("did_sql_syn_inits")
160  if version < 508
161    let did_sql_syn_inits = 1
162    command -nargs=+ HiLink hi link <args>
163  else
164    command -nargs=+ HiLink hi def link <args>
165  endif
166
167
168  " === Comment syntax group ===
169  HiLink sqlComment	Comment
170
171  " === Constant syntax group ===
172  HiLink sqlNumber	Number
173  HiLink sqlBoolean	Boolean
174  HiLink sqlString	String
175
176  " === Statment syntax group ===
177  HiLink sqlStatement	Statement
178  HiLink sqlConditional	Conditional
179  HiLink sqlRepeat		Repeat
180  HiLink sqlKeyword		Keyword
181  HiLink sqlOperator	Operator
182  HiLink sqlException	Exception
183
184  " === Identifier syntax group ===
185  HiLink sqlFunction	Function
186
187  " === Type syntax group ===
188  HiLink sqlType	Type
189
190  " === Todo syntax group ===
191  HiLink sqlTodo	Todo
192
193  delcommand HiLink
194endif
195
196let b:current_syntax = "sqlinformix"
197