1" stata.vim -- Vim syntax file for Stata do, ado, and class files.
2" Language:	Stata and/or Mata
3" Maintainer:	Jeff Pitblado <jpitblado@stata.com>
4" Last Change:	26apr2006
5" Version:	1.1.4
6
7" Log:
8" 14apr2006	renamed syntax groups st* to stata*
9"		'syntax clear' only under version control
10"		check for 'b:current_syntax', removed 'did_stata_syntax_inits'
11" 17apr2006	fixed start expression for stataFunc
12" 26apr2006	fixed brace confusion in stataErrInParen and stataErrInBracket
13"		fixed paren/bracket confusion in stataFuncGroup
14
15if version < 600
16	syntax clear
17elseif exists("b:current_syntax")
18	finish
19endif
20
21syntax case match
22
23" comments - single line
24" note that the triple slash continuing line comment comes free
25syn region stataStarComment  start=/^\s*\*/ end=/$/    contains=stataComment oneline
26syn region stataSlashComment start="\s//"   end=/$/    contains=stataComment oneline
27syn region stataSlashComment start="^//"    end=/$/    contains=stataComment oneline
28" comments - multiple line
29syn region stataComment      start="/\*"    end="\*/"  contains=stataComment
30
31" global macros - simple case
32syn match  stataGlobal /\$\a\w*/
33" global macros - general case
34syn region stataGlobal start=/\${/ end=/}/ oneline contains=@stataMacroGroup
35" local macros - general case
36syn region stataLocal  start=/`/ end=/'/   oneline contains=@stataMacroGroup
37
38" numeric formats
39syn match  stataFormat /%-\=\d\+\.\d\+[efg]c\=/
40" numeric hex format
41syn match  stataFormat /%-\=21x/
42" string format
43syn match  stataFormat /%\(\|-\|\~\)\d\+s/
44
45" Statements
46syn keyword stataConditional else if
47syn keyword stataRepeat      foreach
48syn keyword stataRepeat      forv[alues]
49syn keyword stataRepeat      while
50
51" Common programming commands
52syn keyword stataCommand about
53syn keyword stataCommand adopath
54syn keyword stataCommand adoupdate
55syn keyword stataCommand assert
56syn keyword stataCommand break
57syn keyword stataCommand by
58syn keyword stataCommand cap[ture]
59syn keyword stataCommand cd
60syn keyword stataCommand chdir
61syn keyword stataCommand checksum
62syn keyword stataCommand class
63syn keyword stataCommand classutil
64syn keyword stataCommand compress
65syn keyword stataCommand conf[irm]
66syn keyword stataCommand conren
67syn keyword stataCommand continue
68syn keyword stataCommand cou[nt]
69syn keyword stataCommand cscript
70syn keyword stataCommand cscript_log
71syn keyword stataCommand #delimit
72syn keyword stataCommand d[escribe]
73syn keyword stataCommand dir
74syn keyword stataCommand discard
75syn keyword stataCommand di[splay]
76syn keyword stataCommand do
77syn keyword stataCommand doedit
78syn keyword stataCommand drop
79syn keyword stataCommand edit
80syn keyword stataCommand end
81syn keyword stataCommand erase
82syn keyword stataCommand eret[urn]
83syn keyword stataCommand err[or]
84syn keyword stataCommand e[xit]
85syn keyword stataCommand expand
86syn keyword stataCommand expandcl
87syn keyword stataCommand file
88syn keyword stataCommand findfile
89syn keyword stataCommand format
90syn keyword stataCommand g[enerate]
91syn keyword stataCommand gettoken
92syn keyword stataCommand gl[obal]
93syn keyword stataCommand help
94syn keyword stataCommand hexdump
95syn keyword stataCommand include
96syn keyword stataCommand infile
97syn keyword stataCommand infix
98syn keyword stataCommand input
99syn keyword stataCommand insheet
100syn keyword stataCommand joinby
101syn keyword stataCommand la[bel]
102syn keyword stataCommand levelsof
103syn keyword stataCommand list
104syn keyword stataCommand loc[al]
105syn keyword stataCommand log
106syn keyword stataCommand ma[cro]
107syn keyword stataCommand mark
108syn keyword stataCommand markout
109syn keyword stataCommand marksample
110syn keyword stataCommand mata
111syn keyword stataCommand matrix
112syn keyword stataCommand memory
113syn keyword stataCommand merge
114syn keyword stataCommand mkdir
115syn keyword stataCommand more
116syn keyword stataCommand net
117syn keyword stataCommand nobreak
118syn keyword stataCommand n[oisily]
119syn keyword stataCommand note[s]
120syn keyword stataCommand numlist
121syn keyword stataCommand outfile
122syn keyword stataCommand outsheet
123syn keyword stataCommand _parse
124syn keyword stataCommand pause
125syn keyword stataCommand plugin
126syn keyword stataCommand post
127syn keyword stataCommand postclose
128syn keyword stataCommand postfile
129syn keyword stataCommand preserve
130syn keyword stataCommand print
131syn keyword stataCommand printer
132syn keyword stataCommand profiler
133syn keyword stataCommand pr[ogram]
134syn keyword stataCommand q[uery]
135syn keyword stataCommand qui[etly]
136syn keyword stataCommand rcof
137syn keyword stataCommand reg[ress]
138syn keyword stataCommand rename
139syn keyword stataCommand repeat
140syn keyword stataCommand replace
141syn keyword stataCommand reshape
142syn keyword stataCommand ret[urn]
143syn keyword stataCommand _rmcoll
144syn keyword stataCommand _rmcoll
145syn keyword stataCommand _rmcollright
146syn keyword stataCommand rmdir
147syn keyword stataCommand _robust
148syn keyword stataCommand save
149syn keyword stataCommand sca[lar]
150syn keyword stataCommand search
151syn keyword stataCommand serset
152syn keyword stataCommand set
153syn keyword stataCommand shell
154syn keyword stataCommand sleep
155syn keyword stataCommand sort
156syn keyword stataCommand split
157syn keyword stataCommand sret[urn]
158syn keyword stataCommand ssc
159syn keyword stataCommand su[mmarize]
160syn keyword stataCommand syntax
161syn keyword stataCommand sysdescribe
162syn keyword stataCommand sysdir
163syn keyword stataCommand sysuse
164syn keyword stataCommand token[ize]
165syn keyword stataCommand translate
166syn keyword stataCommand type
167syn keyword stataCommand unab
168syn keyword stataCommand unabcmd
169syn keyword stataCommand update
170syn keyword stataCommand use
171syn keyword stataCommand vers[ion]
172syn keyword stataCommand view
173syn keyword stataCommand viewsource
174syn keyword stataCommand webdescribe
175syn keyword stataCommand webseek
176syn keyword stataCommand webuse
177syn keyword stataCommand which
178syn keyword stataCommand who
179syn keyword stataCommand window
180
181" Literals
182syn match  stataQuote   /"/
183syn region stataEString matchgroup=Nothing start=/`"/ end=/"'/ oneline contains=@stataMacroGroup,stataQuote,stataString,stataEString
184syn region stataString  matchgroup=Nothing start=/"/ end=/"/   oneline contains=@stataMacroGroup
185
186" define clusters
187syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring,stataParen,stataBracket
188syn cluster stataMacroGroup contains=stataGlobal,stataLocal
189syn cluster stataParenGroup contains=stataParenError,stataBracketError,stataBraceError,stataSpecial,stataFormat
190
191" Stata functions
192" Math
193syn region stataFunc matchgroup=Function start=/\<abs(/ end=/)/ contains=@stataFuncGroup
194syn region stataFunc matchgroup=Function start=/\<acos(/ end=/)/ contains=@stataFuncGroup
195syn region stataFunc matchgroup=Function start=/\<asin(/ end=/)/ contains=@stataFuncGroup
196syn region stataFunc matchgroup=Function start=/\<atan(/ end=/)/ contains=@stataFuncGroup
197syn region stataFunc matchgroup=Function start=/\<atan2(/ end=/)/ contains=@stataFuncGroup
198syn region stataFunc matchgroup=Function start=/\<atanh(/ end=/)/ contains=@stataFuncGroup
199syn region stataFunc matchgroup=Function start=/\<ceil(/ end=/)/ contains=@stataFuncGroup
200syn region stataFunc matchgroup=Function start=/\<cloglog(/ end=/)/ contains=@stataFuncGroup
201syn region stataFunc matchgroup=Function start=/\<comb(/ end=/)/ contains=@stataFuncGroup
202syn region stataFunc matchgroup=Function start=/\<cos(/ end=/)/ contains=@stataFuncGroup
203syn region stataFunc matchgroup=Function start=/\<digamma(/ end=/)/ contains=@stataFuncGroup
204syn region stataFunc matchgroup=Function start=/\<exp(/ end=/)/ contains=@stataFuncGroup
205syn region stataFunc matchgroup=Function start=/\<floor(/ end=/)/ contains=@stataFuncGroup
206syn region stataFunc matchgroup=Function start=/\<int(/ end=/)/ contains=@stataFuncGroup
207syn region stataFunc matchgroup=Function start=/\<invcloglog(/ end=/)/ contains=@stataFuncGroup
208syn region stataFunc matchgroup=Function start=/\<invlogit(/ end=/)/ contains=@stataFuncGroup
209syn region stataFunc matchgroup=Function start=/\<ln(/ end=/)/ contains=@stataFuncGroup
210syn region stataFunc matchgroup=Function start=/\<lnfact(/ end=/)/ contains=@stataFuncGroup
211syn region stataFunc matchgroup=Function start=/\<lnfactorial(/ end=/)/ contains=@stataFuncGroup
212syn region stataFunc matchgroup=Function start=/\<lngamma(/ end=/)/ contains=@stataFuncGroup
213syn region stataFunc matchgroup=Function start=/\<log(/ end=/)/ contains=@stataFuncGroup
214syn region stataFunc matchgroup=Function start=/\<log10(/ end=/)/ contains=@stataFuncGroup
215syn region stataFunc matchgroup=Function start=/\<logit(/ end=/)/ contains=@stataFuncGroup
216syn region stataFunc matchgroup=Function start=/\<max(/ end=/)/ contains=@stataFuncGroup
217syn region stataFunc matchgroup=Function start=/\<mod(/ end=/)/ contains=@stataFuncGroup
218syn region stataFunc matchgroup=Function start=/\<reldif(/ end=/)/ contains=@stataFuncGroup
219syn region stataFunc matchgroup=Function start=/\<round(/ end=/)/ contains=@stataFuncGroup
220syn region stataFunc matchgroup=Function start=/\<sign(/ end=/)/ contains=@stataFuncGroup
221syn region stataFunc matchgroup=Function start=/\<sin(/ end=/)/ contains=@stataFuncGroup
222syn region stataFunc matchgroup=Function start=/\<sqrt(/ end=/)/ contains=@stataFuncGroup
223syn region stataFunc matchgroup=Function start=/\<sum(/ end=/)/ contains=@stataFuncGroup
224syn region stataFunc matchgroup=Function start=/\<tan(/ end=/)/ contains=@stataFuncGroup
225syn region stataFunc matchgroup=Function start=/\<tanh(/ end=/)/ contains=@stataFuncGroup
226syn region stataFunc matchgroup=Function start=/\<trigamma(/ end=/)/ contains=@stataFuncGroup
227syn region stataFunc matchgroup=Function start=/\<trunc(/ end=/)/ contains=@stataFuncGroup
228" Probability distriubtions and density functions
229syn region stataFunc matchgroup=Function start=/\<betaden(/ end=/)/ contains=@stataFuncGroup
230syn region stataFunc matchgroup=Function start=/\<Binomial(/ end=/)/ contains=@stataFuncGroup
231syn region stataFunc matchgroup=Function start=/\<binorm(/ end=/)/ contains=@stataFuncGroup
232syn region stataFunc matchgroup=Function start=/\<binormal(/ end=/)/ contains=@stataFuncGroup
233syn region stataFunc matchgroup=Function start=/\<chi2(/ end=/)/ contains=@stataFuncGroup
234syn region stataFunc matchgroup=Function start=/\<chi2tail(/ end=/)/ contains=@stataFuncGroup
235syn region stataFunc matchgroup=Function start=/\<dgammapda(/ end=/)/ contains=@stataFuncGroup
236syn region stataFunc matchgroup=Function start=/\<dgammapdada(/ end=/)/ contains=@stataFuncGroup
237syn region stataFunc matchgroup=Function start=/\<dgammapdadx(/ end=/)/ contains=@stataFuncGroup
238syn region stataFunc matchgroup=Function start=/\<dgammapdx(/ end=/)/ contains=@stataFuncGroup
239syn region stataFunc matchgroup=Function start=/\<dgammapdxdx(/ end=/)/ contains=@stataFuncGroup
240syn region stataFunc matchgroup=Function start=/\<F(/ end=/)/ contains=@stataFuncGroup
241syn region stataFunc matchgroup=Function start=/\<Fden(/ end=/)/ contains=@stataFuncGroup
242syn region stataFunc matchgroup=Function start=/\<Ftail(/ end=/)/ contains=@stataFuncGroup
243syn region stataFunc matchgroup=Function start=/\<gammaden(/ end=/)/ contains=@stataFuncGroup
244syn region stataFunc matchgroup=Function start=/\<gammap(/ end=/)/ contains=@stataFuncGroup
245syn region stataFunc matchgroup=Function start=/\<ibeta(/ end=/)/ contains=@stataFuncGroup
246syn region stataFunc matchgroup=Function start=/\<invbinomial(/ end=/)/ contains=@stataFuncGroup
247syn region stataFunc matchgroup=Function start=/\<invchi2(/ end=/)/ contains=@stataFuncGroup
248syn region stataFunc matchgroup=Function start=/\<invchi2tail(/ end=/)/ contains=@stataFuncGroup
249syn region stataFunc matchgroup=Function start=/\<invF(/ end=/)/ contains=@stataFuncGroup
250syn region stataFunc matchgroup=Function start=/\<invFtail(/ end=/)/ contains=@stataFuncGroup
251syn region stataFunc matchgroup=Function start=/\<invgammap(/ end=/)/ contains=@stataFuncGroup
252syn region stataFunc matchgroup=Function start=/\<invibeta(/ end=/)/ contains=@stataFuncGroup
253syn region stataFunc matchgroup=Function start=/\<invnchi2(/ end=/)/ contains=@stataFuncGroup
254syn region stataFunc matchgroup=Function start=/\<invFtail(/ end=/)/ contains=@stataFuncGroup
255syn region stataFunc matchgroup=Function start=/\<invibeta(/ end=/)/ contains=@stataFuncGroup
256syn region stataFunc matchgroup=Function start=/\<invnorm(/ end=/)/ contains=@stataFuncGroup
257syn region stataFunc matchgroup=Function start=/\<invnormal(/ end=/)/ contains=@stataFuncGroup
258syn region stataFunc matchgroup=Function start=/\<invttail(/ end=/)/ contains=@stataFuncGroup
259syn region stataFunc matchgroup=Function start=/\<lnnormal(/ end=/)/ contains=@stataFuncGroup
260syn region stataFunc matchgroup=Function start=/\<lnnormalden(/ end=/)/ contains=@stataFuncGroup
261syn region stataFunc matchgroup=Function start=/\<nbetaden(/ end=/)/ contains=@stataFuncGroup
262syn region stataFunc matchgroup=Function start=/\<nchi2(/ end=/)/ contains=@stataFuncGroup
263syn region stataFunc matchgroup=Function start=/\<nFden(/ end=/)/ contains=@stataFuncGroup
264syn region stataFunc matchgroup=Function start=/\<nFtail(/ end=/)/ contains=@stataFuncGroup
265syn region stataFunc matchgroup=Function start=/\<nibeta(/ end=/)/ contains=@stataFuncGroup
266syn region stataFunc matchgroup=Function start=/\<norm(/ end=/)/ contains=@stataFuncGroup
267syn region stataFunc matchgroup=Function start=/\<normal(/ end=/)/ contains=@stataFuncGroup
268syn region stataFunc matchgroup=Function start=/\<normalden(/ end=/)/ contains=@stataFuncGroup
269syn region stataFunc matchgroup=Function start=/\<normden(/ end=/)/ contains=@stataFuncGroup
270syn region stataFunc matchgroup=Function start=/\<npnchi2(/ end=/)/ contains=@stataFuncGroup
271syn region stataFunc matchgroup=Function start=/\<tden(/ end=/)/ contains=@stataFuncGroup
272syn region stataFunc matchgroup=Function start=/\<ttail(/ end=/)/ contains=@stataFuncGroup
273" Random numbers
274syn region stataFunc matchgroup=Function start=/\<uniform(/ end=/)/ contains=@stataFuncGroup
275" String
276syn region stataFunc matchgroup=Function start=/\<abbrev(/ end=/)/ contains=@stataFuncGroup
277syn region stataFunc matchgroup=Function start=/\<hchar(/ end=/)/ contains=@stataFuncGroup
278syn region stataFunc matchgroup=Function start=/\<indexnot(/ end=/)/ contains=@stataFuncGroup
279syn region stataFunc matchgroup=Function start=/\<itrim(/ end=/)/ contains=@stataFuncGroup
280syn region stataFunc matchgroup=Function start=/\<length(/ end=/)/ contains=@stataFuncGroup
281syn region stataFunc matchgroup=Function start=/\<lower(/ end=/)/ contains=@stataFuncGroup
282syn region stataFunc matchgroup=Function start=/\<ltrim(/ end=/)/ contains=@stataFuncGroup
283syn region stataFunc matchgroup=Function start=/\<plural(/ end=/)/ contains=@stataFuncGroup
284syn region stataFunc matchgroup=Function start=/\<proper(/ end=/)/ contains=@stataFuncGroup
285syn region stataFunc matchgroup=Function start=/\<real(/ end=/)/ contains=@stataFuncGroup
286syn region stataFunc matchgroup=Function start=/\<regexm(/ end=/)/ contains=@stataFuncGroup
287syn region stataFunc matchgroup=Function start=/\<regexr(/ end=/)/ contains=@stataFuncGroup
288syn region stataFunc matchgroup=Function start=/\<regexs(/ end=/)/ contains=@stataFuncGroup
289syn region stataFunc matchgroup=Function start=/\<reverse(/ end=/)/ contains=@stataFuncGroup
290syn region stataFunc matchgroup=Function start=/\<rtrim(/ end=/)/ contains=@stataFuncGroup
291syn region stataFunc matchgroup=Function start=/\<string(/ end=/)/ contains=@stataFuncGroup
292syn region stataFunc matchgroup=Function start=/\<strlen(/ end=/)/ contains=@stataFuncGroup
293syn region stataFunc matchgroup=Function start=/\<strmatch(/ end=/)/ contains=@stataFuncGroup
294syn region stataFunc matchgroup=Function start=/\<strpos(/ end=/)/ contains=@stataFuncGroup
295syn region stataFunc matchgroup=Function start=/\<subinstr(/ end=/)/ contains=@stataFuncGroup
296syn region stataFunc matchgroup=Function start=/\<subinword(/ end=/)/ contains=@stataFuncGroup
297syn region stataFunc matchgroup=Function start=/\<substr(/ end=/)/ contains=@stataFuncGroup
298syn region stataFunc matchgroup=Function start=/\<trim(/ end=/)/ contains=@stataFuncGroup
299syn region stataFunc matchgroup=Function start=/\<upper(/ end=/)/ contains=@stataFuncGroup
300syn region stataFunc matchgroup=Function start=/\<word(/ end=/)/ contains=@stataFuncGroup
301syn region stataFunc matchgroup=Function start=/\<wordcount(/ end=/)/ contains=@stataFuncGroup
302" Programming
303syn region stataFunc matchgroup=Function start=/\<autocode(/ end=/)/ contains=@stataFuncGroup
304syn region stataFunc matchgroup=Function start=/\<byteorder(/ end=/)/ contains=@stataFuncGroup
305syn region stataFunc matchgroup=Function start=/\<c(/ end=/)/ contains=@stataFuncGroup
306syn region stataFunc matchgroup=Function start=/\<_caller(/ end=/)/ contains=@stataFuncGroup
307syn region stataFunc matchgroup=Function start=/\<chop(/ end=/)/ contains=@stataFuncGroup
308syn region stataFunc matchgroup=Function start=/\<clip(/ end=/)/ contains=@stataFuncGroup
309syn region stataFunc matchgroup=Function start=/\<cond(/ end=/)/ contains=@stataFuncGroup
310syn region stataFunc matchgroup=Function start=/\<e(/ end=/)/ contains=@stataFuncGroup
311syn region stataFunc matchgroup=Function start=/\<epsdouble(/ end=/)/ contains=@stataFuncGroup
312syn region stataFunc matchgroup=Function start=/\<epsfloat(/ end=/)/ contains=@stataFuncGroup
313syn region stataFunc matchgroup=Function start=/\<float(/ end=/)/ contains=@stataFuncGroup
314syn region stataFunc matchgroup=Function start=/\<has_eprop(/ end=/)/ contains=@stataFuncGroup
315syn region stataFunc matchgroup=Function start=/\<has_eprop(/ end=/)/ contains=@stataFuncGroup
316syn region stataFunc matchgroup=Function start=/\<inlist(/ end=/)/ contains=@stataFuncGroup
317syn region stataFunc matchgroup=Function start=/\<inrange(/ end=/)/ contains=@stataFuncGroup
318syn region stataFunc matchgroup=Function start=/\<irecode(/ end=/)/ contains=@stataFuncGroup
319syn region stataFunc matchgroup=Function start=/\<matrix(/ end=/)/ contains=@stataFuncGroup
320syn region stataFunc matchgroup=Function start=/\<maxbyte(/ end=/)/ contains=@stataFuncGroup
321syn region stataFunc matchgroup=Function start=/\<maxdouble(/ end=/)/ contains=@stataFuncGroup
322syn region stataFunc matchgroup=Function start=/\<maxfloat(/ end=/)/ contains=@stataFuncGroup
323syn region stataFunc matchgroup=Function start=/\<maxint(/ end=/)/ contains=@stataFuncGroup
324syn region stataFunc matchgroup=Function start=/\<maxlong(/ end=/)/ contains=@stataFuncGroup
325syn region stataFunc matchgroup=Function start=/\<mi(/ end=/)/ contains=@stataFuncGroup
326syn region stataFunc matchgroup=Function start=/\<minbyte(/ end=/)/ contains=@stataFuncGroup
327syn region stataFunc matchgroup=Function start=/\<mindouble(/ end=/)/ contains=@stataFuncGroup
328syn region stataFunc matchgroup=Function start=/\<minfloat(/ end=/)/ contains=@stataFuncGroup
329syn region stataFunc matchgroup=Function start=/\<minint(/ end=/)/ contains=@stataFuncGroup
330syn region stataFunc matchgroup=Function start=/\<minlong(/ end=/)/ contains=@stataFuncGroup
331syn region stataFunc matchgroup=Function start=/\<missing(/ end=/)/ contains=@stataFuncGroup
332syn region stataFunc matchgroup=Function start=/\<r(/ end=/)/ contains=@stataFuncGroup
333syn region stataFunc matchgroup=Function start=/\<recode(/ end=/)/ contains=@stataFuncGroup
334syn region stataFunc matchgroup=Function start=/\<replay(/ end=/)/ contains=@stataFuncGroup
335syn region stataFunc matchgroup=Function start=/\<return(/ end=/)/ contains=@stataFuncGroup
336syn region stataFunc matchgroup=Function start=/\<s(/ end=/)/ contains=@stataFuncGroup
337syn region stataFunc matchgroup=Function start=/\<scalar(/ end=/)/ contains=@stataFuncGroup
338" Date
339syn region stataFunc matchgroup=Function start=/\<d(/ end=/)/ contains=@stataFuncGroup
340syn region stataFunc matchgroup=Function start=/\<date(/ end=/)/ contains=@stataFuncGroup
341syn region stataFunc matchgroup=Function start=/\<day(/ end=/)/ contains=@stataFuncGroup
342syn region stataFunc matchgroup=Function start=/\<dow(/ end=/)/ contains=@stataFuncGroup
343syn region stataFunc matchgroup=Function start=/\<doy(/ end=/)/ contains=@stataFuncGroup
344syn region stataFunc matchgroup=Function start=/\<halfyear(/ end=/)/ contains=@stataFuncGroup
345syn region stataFunc matchgroup=Function start=/\<mdy(/ end=/)/ contains=@stataFuncGroup
346syn region stataFunc matchgroup=Function start=/\<month(/ end=/)/ contains=@stataFuncGroup
347syn region stataFunc matchgroup=Function start=/\<quarter(/ end=/)/ contains=@stataFuncGroup
348syn region stataFunc matchgroup=Function start=/\<week(/ end=/)/ contains=@stataFuncGroup
349syn region stataFunc matchgroup=Function start=/\<year(/ end=/)/ contains=@stataFuncGroup
350" Time-series
351syn region stataFunc matchgroup=Function start=/\<daily(/ end=/)/ contains=@stataFuncGroup
352syn region stataFunc matchgroup=Function start=/\<halfyearly(/ end=/)/ contains=@stataFuncGroup
353syn region stataFunc matchgroup=Function start=/\<monthly(/ end=/)/ contains=@stataFuncGroup
354syn region stataFunc matchgroup=Function start=/\<quarterly(/ end=/)/ contains=@stataFuncGroup
355syn region stataFunc matchgroup=Function start=/\<weekly(/ end=/)/ contains=@stataFuncGroup
356syn region stataFunc matchgroup=Function start=/\<yearly(/ end=/)/ contains=@stataFuncGroup
357"
358syn region stataFunc matchgroup=Function start=/\<yh(/ end=/)/ contains=@stataFuncGroup
359syn region stataFunc matchgroup=Function start=/\<ym(/ end=/)/ contains=@stataFuncGroup
360syn region stataFunc matchgroup=Function start=/\<yq(/ end=/)/ contains=@stataFuncGroup
361syn region stataFunc matchgroup=Function start=/\<yw(/ end=/)/ contains=@stataFuncGroup
362"
363syn region stataFunc matchgroup=Function start=/\<d(/ end=/)/ contains=@stataFuncGroup
364syn region stataFunc matchgroup=Function start=/\<h(/ end=/)/ contains=@stataFuncGroup
365syn region stataFunc matchgroup=Function start=/\<m(/ end=/)/ contains=@stataFuncGroup
366syn region stataFunc matchgroup=Function start=/\<q(/ end=/)/ contains=@stataFuncGroup
367syn region stataFunc matchgroup=Function start=/\<w(/ end=/)/ contains=@stataFuncGroup
368syn region stataFunc matchgroup=Function start=/\<y(/ end=/)/ contains=@stataFuncGroup
369"
370syn region stataFunc matchgroup=Function start=/\<dofd(/ end=/)/ contains=@stataFuncGroup
371syn region stataFunc matchgroup=Function start=/\<dofh(/ end=/)/ contains=@stataFuncGroup
372syn region stataFunc matchgroup=Function start=/\<dofm(/ end=/)/ contains=@stataFuncGroup
373syn region stataFunc matchgroup=Function start=/\<dofq(/ end=/)/ contains=@stataFuncGroup
374syn region stataFunc matchgroup=Function start=/\<dofw(/ end=/)/ contains=@stataFuncGroup
375syn region stataFunc matchgroup=Function start=/\<dofy(/ end=/)/ contains=@stataFuncGroup
376syn region stataFunc matchgroup=Function start=/\<hofd(/ end=/)/ contains=@stataFuncGroup
377syn region stataFunc matchgroup=Function start=/\<mofd(/ end=/)/ contains=@stataFuncGroup
378syn region stataFunc matchgroup=Function start=/\<qofd(/ end=/)/ contains=@stataFuncGroup
379syn region stataFunc matchgroup=Function start=/\<wofd(/ end=/)/ contains=@stataFuncGroup
380syn region stataFunc matchgroup=Function start=/\<yofd(/ end=/)/ contains=@stataFuncGroup
381"
382syn region stataFunc matchgroup=Function start=/\<tin(/ end=/)/ contains=@stataFuncGroup
383syn region stataFunc matchgroup=Function start=/\<twithin(/ end=/)/ contains=@stataFuncGroup
384" Matrix
385syn region stataFunc matchgroup=Function start=/\<colnumb(/ end=/)/ contains=@stataFuncGroup
386syn region stataFunc matchgroup=Function start=/\<colsof(/ end=/)/ contains=@stataFuncGroup
387syn region stataFunc matchgroup=Function start=/\<det(/ end=/)/ contains=@stataFuncGroup
388syn region stataFunc matchgroup=Function start=/\<diag0cnt(/ end=/)/ contains=@stataFuncGroup
389syn region stataFunc matchgroup=Function start=/\<el(/ end=/)/ contains=@stataFuncGroup
390syn region stataFunc matchgroup=Function start=/\<issymmetric(/ end=/)/ contains=@stataFuncGroup
391syn region stataFunc matchgroup=Function start=/\<matmissing(/ end=/)/ contains=@stataFuncGroup
392syn region stataFunc matchgroup=Function start=/\<mreldif(/ end=/)/ contains=@stataFuncGroup
393syn region stataFunc matchgroup=Function start=/\<rownumb(/ end=/)/ contains=@stataFuncGroup
394syn region stataFunc matchgroup=Function start=/\<rowsof(/ end=/)/ contains=@stataFuncGroup
395syn region stataFunc matchgroup=Function start=/\<trace(/ end=/)/ contains=@stataFuncGroup
396"
397syn region stataFunc matchgroup=Function start=/\<cholsky(/ end=/)/ contains=@stataFuncGroup
398syn region stataFunc matchgroup=Function start=/\<corr(/ end=/)/ contains=@stataFuncGroup
399syn region stataFunc matchgroup=Function start=/\<diag(/ end=/)/ contains=@stataFuncGroup
400syn region stataFunc matchgroup=Function start=/\<get(/ end=/)/ contains=@stataFuncGroup
401syn region stataFunc matchgroup=Function start=/\<hadamard(/ end=/)/ contains=@stataFuncGroup
402syn region stataFunc matchgroup=Function start=/\<I(/ end=/)/ contains=@stataFuncGroup
403syn region stataFunc matchgroup=Function start=/\<inv(/ end=/)/ contains=@stataFuncGroup
404syn region stataFunc matchgroup=Function start=/\<invsym(/ end=/)/ contains=@stataFuncGroup
405syn region stataFunc matchgroup=Function start=/\<J(/ end=/)/ contains=@stataFuncGroup
406syn region stataFunc matchgroup=Function start=/\<matuniform(/ end=/)/ contains=@stataFuncGroup
407syn region stataFunc matchgroup=Function start=/\<nullmat(/ end=/)/ contains=@stataFuncGroup
408syn region stataFunc matchgroup=Function start=/\<sweep(/ end=/)/ contains=@stataFuncGroup
409syn region stataFunc matchgroup=Function start=/\<vec(/ end=/)/ contains=@stataFuncGroup
410syn region stataFunc matchgroup=Function start=/\<vecdiag(/ end=/)/ contains=@stataFuncGroup
411
412" Errors to catch
413" taken from $VIMRUNTIME/syntax/c.vim 
414" catch errors caused by wrong parenthesis, braces and brackets
415syn region	stataParen	transparent start=/(/ end=/)/  contains=ALLBUT,@stataParenGroup,stataErrInBracket,stataErrInBrace
416syn region	stataBracket	transparent start=/\[/ end=/]/ contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBrace
417syn region	stataBrace	transparent start=/{/ end=/}/  contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBracket
418syn match	stataParenError	/[\])}]/
419syn match	stataBracketError	/]/
420syn match	stataBraceError	/}/
421syn match	stataErrInParen	contained /[\]}]/
422syn match	stataErrInBracket	contained /[)}]/
423syn match	stataErrInBrace	contained /[)\]]/
424
425" assign highlight groups
426hi def link stataBraceError	stataError
427hi def link stataBracketError	stataError
428hi def link stataErrInBrace	stataError
429hi def link stataErrInBracket	stataError
430hi def link stataErrInParen	stataError
431hi def link stataEString	stataString
432hi def link stataFormat		stataSpecial
433hi def link stataGlobal		stataMacro
434hi def link stataLocal		stataMacro
435hi def link stataParenError	stataError
436hi def link stataSlashComment	stataComment
437hi def link stataStarComment	stataComment
438
439hi def link stataCommand	Define
440hi def link stataComment	Comment
441hi def link stataConditional	Conditional
442hi def link stataError		Error
443hi def link stataFunc		None
444hi def link stataMacro		Define
445hi def link stataRepeat		Repeat
446hi def link stataSpecial	SpecialChar
447hi def link stataString		String
448
449let b:current_syntax = "stata"
450
451" vim: ts=8
452