1" Vim syntax file
2" Language:	OPL
3" Maintainer:	Czo <Olivier.Sirol@lip6.fr>
4" $Id: opl.vim,v 1.1 2004/06/13 17:34:11 vimboss Exp $
5
6" Open Psion Language... (EPOC16/EPOC32)
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
16" case is not significant
17syn case ignore
18
19" A bunch of useful OPL keywords
20syn keyword OPLStatement proc endp abs acos addr adjustalloc alert alloc app
21syn keyword OPLStatement append appendsprite asc asin at atan back beep
22syn keyword OPLStatement begintrans bookmark break busy byref cache
23syn keyword OPLStatement cachehdr cacherec cachetidy call cancel caption
24syn keyword OPLStatement changesprite chr$ clearflags close closesprite cls
25syn keyword OPLStatement cmd$ committrans compact compress const continue
26syn keyword OPLStatement copy cos count create createsprite cursor
27syn keyword OPLStatement datetosecs datim$ day dayname$ days daystodate
28syn keyword OPLStatement dbuttons dcheckbox dchoice ddate declare dedit
29syn keyword OPLStatement deditmulti defaultwin deg delete dfile dfloat
30syn keyword OPLStatement dialog diaminit diampos dinit dir$ dlong do dow
31syn keyword OPLStatement dposition drawsprite dtext dtime dxinput edit else
32syn keyword OPLStatement elseif enda endif endv endwh entersend entersend0
33syn keyword OPLStatement eof erase err err$ errx$ escape eval exist exp ext
34syn keyword OPLStatement external find findfield findlib first fix$ flags
35syn keyword OPLStatement flt font freealloc gat gborder gbox gbutton
36syn keyword OPLStatement gcircle gclock gclose gcls gcolor gcopy gcreate
37syn keyword OPLStatement gcreatebit gdrawobject gellipse gen$ get get$
38syn keyword OPLStatement getcmd$ getdoc$ getevent getevent32 geteventa32
39syn keyword OPLStatement geteventc getlibh gfill gfont ggmode ggrey gheight
40syn keyword OPLStatement gidentity ginfo ginfo32 ginvert giprint glineby
41syn keyword OPLStatement glineto gloadbit gloadfont global gmove gorder
42syn keyword OPLStatement goriginx goriginy goto gotomark gpatt gpeekline
43syn keyword OPLStatement gpoly gprint gprintb gprintclip grank gsavebit
44syn keyword OPLStatement gscroll gsetpenwidth gsetwin gstyle gtmode gtwidth
45syn keyword OPLStatement gunloadfont gupdate guse gvisible gwidth gx
46syn keyword OPLStatement gxborder gxprint gy hex$ hour iabs icon if include
47syn keyword OPLStatement input insert int intf intrans key key$ keya keyc
48syn keyword OPLStatement killmark kmod last lclose left$ len lenalloc
49syn keyword OPLStatement linklib ln loadlib loadm loc local lock log lopen
50syn keyword OPLStatement lower$ lprint max mcard mcasc mean menu mid$ min
51syn keyword OPLStatement minit minute mkdir modify month month$ mpopup
52syn keyword OPLStatement newobj newobjh next notes num$ odbinfo off onerr
53syn keyword OPLStatement open openr opx os parse$ path pause peek pi
54syn keyword OPLStatement pointerfilter poke pos position possprite print
55syn keyword OPLStatement put rad raise randomize realloc recsize rename
56syn keyword OPLStatement rept$ return right$ rmdir rnd rollback sci$ screen
57syn keyword OPLStatement screeninfo second secstodate send setdoc setflags
58syn keyword OPLStatement setname setpath sin space sqr statuswin
59syn keyword OPLStatement statwininfo std stop style sum tan testevent trap
60syn keyword OPLStatement type uadd unloadlib unloadm until update upper$
61syn keyword OPLStatement use usr usr$ usub val var vector week while year
62" syn keyword OPLStatement rem
63
64
65syn match  OPLNumber		"\<\d\+\>"
66syn match  OPLNumber		"\<\d\+\.\d*\>"
67syn match  OPLNumber		"\.\d\+\>"
68
69syn region  OPLString		start=+"+   end=+"+
70syn region  OPLComment		start="REM[\t ]" end="$"
71syn match   OPLMathsOperator    "-\|=\|[:<>+\*^/\\]"
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_OPL_syntax_inits")
77  if version < 508
78    let did_OPL_syntax_inits = 1
79    command -nargs=+ HiLink hi link <args>
80  else
81    command -nargs=+ HiLink hi def link <args>
82  endif
83
84  HiLink OPLStatement		Statement
85  HiLink OPLNumber		Number
86  HiLink OPLString		String
87  HiLink OPLComment		Comment
88  HiLink OPLMathsOperator	Conditional
89"  HiLink OPLError		Error
90
91  delcommand HiLink
92endif
93
94let b:current_syntax = "opl"
95
96" vim: ts=8
97