blob: d2b6060accb62b032c98a18ec4423050e593b04e [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Pascal
Bram Moolenaar009b2592004-10-24 19:18:58 +00003" Version: 2.8
4" Last Change: 2004/10/17 17:47:30
Bram Moolenaar071d4272004-06-13 20:20:40 +00005" Maintainer: Xavier Crégut <xavier.cregut@enseeiht.fr>
6" Previous Maintainer: Mario Eusebio <bio@dq.fct.unl.pt>
7
Bram Moolenaar009b2592004-10-24 19:18:58 +00008" Contributors: Tim Chase <tchase@csc.com>,
9" Stas Grabois <stsi@vtrails.com>,
Bram Moolenaar071d4272004-06-13 20:20:40 +000010" Mazen NEIFER <mazen.neifer.2001@supaero.fr>,
Bram Moolenaar009b2592004-10-24 19:18:58 +000011" Klaus Hast <Klaus.Hast@arcor.net>,
12" Austin Ziegler <austin@halostatue.ca>,
13" Markus Koenig <markus@stber-koenig.de>
Bram Moolenaar071d4272004-06-13 20:20:40 +000014
15" For version 5.x: Clear all syntax items
16" For version 6.x: Quit when a syntax file was already loaded
17if version < 600
18 syntax clear
19elseif exists("b:current_syntax")
20 finish
21endif
22
23
24syn case ignore
25syn sync lines=250
26
27syn keyword pascalBoolean true false
28syn keyword pascalConditional if else then
29syn keyword pascalConstant nil maxint
30syn keyword pascalLabel case goto label
31syn keyword pascalOperator and div downto in mod not of or packed with
32syn keyword pascalRepeat do for do repeat while to until
33syn keyword pascalStatement procedure function
34syn keyword pascalStatement program begin end const var type
35syn keyword pascalStruct record
36syn keyword pascalType array boolean char integer file pointer real set
37syn keyword pascalType string text variant
38
39
Bram Moolenaar009b2592004-10-24 19:18:58 +000040 " 20011222az: Added new items.
41syn keyword pascalTodo contained TODO FIXME XXX DEBUG NOTE
42
43 " 20010723az: When wanted, highlight the trailing whitespace -- this is
44 " based on c_space_errors; to enable, use "pascal_space_errors".
45if exists("pascal_space_errors")
46 if !exists("pascal_no_trail_space_error")
47 syn match pascalSpaceError "\s\+$"
48 endif
49 if !exists("pascal_no_tab_space_error")
50 syn match pascalSpaceError " \+\t"me=e-1
51 endif
52endif
53
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
55
56" String
57if !exists("pascal_one_line_string")
58 syn region pascalString matchgroup=pascalString start=+'+ end=+'+ contains=pascalStringEscape
59 if exists("pascal_gpc")
60 syn region pascalString matchgroup=pascalString start=+"+ end=+"+ contains=pascalStringEscapeGPC
61 else
62 syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ contains=pascalStringEscape
63 endif
64else
65 "wrong strings
66 syn region pascalStringError matchgroup=pascalStringError start=+'+ end=+'+ end=+$+ contains=pascalStringEscape
67 if exists("pascal_gpc")
68 syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscapeGPC
69 else
70 syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscape
71 endif
72
73 "right strings
74 syn region pascalString matchgroup=pascalString start=+'+ end=+'+ oneline contains=pascalStringEscape
75 " To see the start and end of strings:
76 " syn region pascalString matchgroup=pascalStringError start=+'+ end=+'+ oneline contains=pascalStringEscape
77 if exists("pascal_gpc")
78 syn region pascalString matchgroup=pascalString start=+"+ end=+"+ oneline contains=pascalStringEscapeGPC
79 else
80 syn region pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ oneline contains=pascalStringEscape
81 endif
82end
83syn match pascalStringEscape contained "''"
84syn match pascalStringEscapeGPC contained '""'
85
86
87" syn match pascalIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
88
89
90if exists("pascal_symbol_operator")
91 syn match pascalSymbolOperator "[+\-/*=]"
92 syn match pascalSymbolOperator "[<>]=\="
93 syn match pascalSymbolOperator "<>"
94 syn match pascalSymbolOperator ":="
95 syn match pascalSymbolOperator "[()]"
96 syn match pascalSymbolOperator "\.\."
97 syn match pascalSymbolOperator "[\^.]"
98 syn match pascalMatrixDelimiter "[][]"
99 "if you prefer you can highlight the range
100 "syn match pascalMatrixDelimiter "[\d\+\.\.\d\+]"
101endif
102
103syn match pascalNumber "-\=\<\d\+\>"
104syn match pascalFloat "-\=\<\d\+\.\d\+\>"
105syn match pascalFloat "-\=\<\d\+\.\d\+[eE]-\=\d\+\>"
106syn match pascalHexNumber "\$[0-9a-fA-F]\+\>"
107
108if exists("pascal_no_tabs")
109 syn match pascalShowTab "\t"
110endif
111
Bram Moolenaar009b2592004-10-24 19:18:58 +0000112syn region pascalComment start="(\*\|{" end="\*)\|}" contains=pascalTodo,pascalSpaceError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000113
114
115if !exists("pascal_no_functions")
116 " array functions
117 syn keyword pascalFunction pack unpack
118
119 " memory function
120 syn keyword pascalFunction Dispose New
121
122 " math functions
123 syn keyword pascalFunction Abs Arctan Cos Exp Ln Sin Sqr Sqrt
124
125 " file functions
126 syn keyword pascalFunction Eof Eoln Write Writeln
127 syn keyword pascalPredefined Input Output
128
129 if exists("pascal_traditional")
130 " These functions do not seem to be defined in Turbo Pascal
Bram Moolenaar009b2592004-10-24 19:18:58 +0000131 syn keyword pascalFunction Get Page Put
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132 endif
133
134 " ordinal functions
135 syn keyword pascalFunction Odd Pred Succ
136
137 " transfert functions
138 syn keyword pascalFunction Chr Ord Round Trunc
139endif
140
141
142if !exists("pascal_traditional")
143
144 syn keyword pascalStatement constructor destructor implementation inherited
145 syn keyword pascalStatement interface unit uses
146 syn keyword pascalModifier absolute assembler external far forward inline
Bram Moolenaar009b2592004-10-24 19:18:58 +0000147 syn keyword pascalModifier interrupt near virtual
148 syn keyword pascalAcces private public
149 syn keyword pascalStruct object
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150 syn keyword pascalOperator shl shr xor
151
152 syn region pascalPreProc start="(\*\$" end="\*)" contains=pascalTodo
153 syn region pascalPreProc start="{\$" end="}"
154
155 syn region pascalAsm matchgroup=pascalAsmKey start="\<asm\>" end="\<end\>" contains=pascalComment,pascalPreProc
156
157 syn keyword pascalType ShortInt LongInt Byte Word
158 syn keyword pascalType ByteBool WordBool LongBool
159 syn keyword pascalType Cardinal LongWord
160 syn keyword pascalType Single Double Extended Comp
161 syn keyword pascalType PChar
162
163
164 if !exists ("pascal_fpc")
165 syn keyword pascalPredefined Result
166 endif
167
168 if exists("pascal_fpc")
Bram Moolenaar009b2592004-10-24 19:18:58 +0000169 syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000170 syn keyword pascalStatement fail otherwise operator
171 syn keyword pascalDirective popstack
172 syn keyword pascalPredefined self
173 syn keyword pascalType ShortString AnsiString WideString
174 endif
175
176 if exists("pascal_gpc")
177 syn keyword pascalType SmallInt
178 syn keyword pascalType AnsiChar
179 syn keyword pascalType PAnsiChar
180 endif
181
182 if exists("pascal_delphi")
Bram Moolenaar009b2592004-10-24 19:18:58 +0000183 syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184 syn keyword pascalType SmallInt Int64
185 syn keyword pascalType Real48 Currency
186 syn keyword pascalType AnsiChar WideChar
187 syn keyword pascalType ShortString AnsiString WideString
188 syn keyword pascalType PAnsiChar PWideChar
189 syn match pascalFloat "-\=\<\d\+\.\d\+[dD]-\=\d\+\>"
190 syn match pascalStringEscape contained "#[12][0-9]\=[0-9]\="
191 syn keyword pascalStruct class dispinterface
192 syn keyword pascalException try except raise at on finally
193 syn keyword pascalStatement out
Bram Moolenaar009b2592004-10-24 19:18:58 +0000194 syn keyword pascalStatement library package
Bram Moolenaar071d4272004-06-13 20:20:40 +0000195 syn keyword pascalStatement initialization finalization uses exports
196 syn keyword pascalStatement property out resourcestring threadvar
197 syn keyword pascalModifier contains
198 syn keyword pascalModifier overridden reintroduce abstract
199 syn keyword pascalModifier override export dynamic name message
200 syn keyword pascalModifier dispid index stored default nodefault readonly
201 syn keyword pascalModifier writeonly implements overload requires resident
202 syn keyword pascalAcces protected published automated
203 syn keyword pascalDirective register pascal cvar cdecl stdcall safecall
204 syn keyword pascalOperator as is
205 endif
206
207 if exists("pascal_no_functions")
208 "syn keyword pascalModifier read write
209 "may confuse with Read and Write functions. Not easy to handle.
210 else
211 " control flow functions
212 syn keyword pascalFunction Break Continue Exit Halt RunError
213
214 " ordinal functions
215 syn keyword pascalFunction Dec Inc High Low
216
217 " math functions
218 syn keyword pascalFunction Frac Int Pi
219
220 " string functions
221 syn keyword pascalFunction Concat Copy Delete Insert Length Pos Str Val
222
223 " memory function
224 syn keyword pascalFunction FreeMem GetMem MaxAvail MemAvail
225
226 " pointer and address functions
227 syn keyword pascalFunction Addr Assigned CSeg DSeg Ofs Ptr Seg SPtr SSeg
228
229 " misc functions
230 syn keyword pascalFunction Exclude FillChar Hi Include Lo Move ParamCount
231 syn keyword pascalFunction ParamStr Random Randomize SizeOf Swap TypeOf
232 syn keyword pascalFunction UpCase
233
234 " predefined variables
235 syn keyword pascalPredefined ErrorAddr ExitCode ExitProc FileMode FreeList
236 syn keyword pascalPredefined FreeZero HeapEnd HeapError HeapOrg HeapPtr
237 syn keyword pascalPredefined InOutRes OvrCodeList OvrDebugPtr OvrDosHandle
238 syn keyword pascalPredefined OvrEmsHandle OvrHeapEnd OvrHeapOrg OvrHeapPtr
239 syn keyword pascalPredefined OvrHeapSize OvrLoadList PrefixSeg RandSeed
240 syn keyword pascalPredefined SaveInt00 SaveInt02 SaveInt1B SaveInt21
241 syn keyword pascalPredefined SaveInt23 SaveInt24 SaveInt34 SaveInt35
242 syn keyword pascalPredefined SaveInt36 SaveInt37 SaveInt38 SaveInt39
243 syn keyword pascalPredefined SaveInt3A SaveInt3B SaveInt3C SaveInt3D
244 syn keyword pascalPredefined SaveInt3E SaveInt3F SaveInt75 SegA000 SegB000
245 syn keyword pascalPredefined SegB800 SelectorInc StackLimit Test8087
246
247 " file functions
248 syn keyword pascalFunction Append Assign BlockRead BlockWrite ChDir Close
249 syn keyword pascalFunction Erase FilePos FileSize Flush GetDir IOResult
250 syn keyword pascalFunction MkDir Read Readln Rename Reset Rewrite RmDir
251 syn keyword pascalFunction Seek SeekEof SeekEoln SetTextBuf Truncate
252
253 " crt unit
254 syn keyword pascalFunction AssignCrt ClrEol ClrScr Delay DelLine GotoXY
255 syn keyword pascalFunction HighVideo InsLine KeyPressed LowVideo NormVideo
256 syn keyword pascalFunction NoSound ReadKey Sound TextBackground TextColor
257 syn keyword pascalFunction TextMode WhereX WhereY Window
258 syn keyword pascalPredefined CheckBreak CheckEOF CheckSnow DirectVideo
259 syn keyword pascalPredefined LastMode TextAttr WindMin WindMax
260 syn keyword pascalFunction BigCursor CursorOff CursorOn
261 syn keyword pascalConstant Black Blue Green Cyan Red Magenta Brown
262 syn keyword pascalConstant LightGray DarkGray LightBlue LightGreen
263 syn keyword pascalConstant LightCyan LightRed LightMagenta Yellow White
264 syn keyword pascalConstant Blink ScreenWidth ScreenHeight bw40
265 syn keyword pascalConstant co40 bw80 co80 mono
Bram Moolenaar009b2592004-10-24 19:18:58 +0000266 syn keyword pascalPredefined TextChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000267
268 " DOS unit
269 syn keyword pascalFunction AddDisk DiskFree DiskSize DosExitCode DosVersion
270 syn keyword pascalFunction EnvCount EnvStr Exec Expand FindClose FindFirst
271 syn keyword pascalFunction FindNext FSearch FSplit GetCBreak GetDate
272 syn keyword pascalFunction GetEnv GetFAttr GetFTime GetIntVec GetTime
273 syn keyword pascalFunction GetVerify Intr Keep MSDos PackTime SetCBreak
274 syn keyword pascalFunction SetDate SetFAttr SetFTime SetIntVec SetTime
275 syn keyword pascalFunction SetVerify SwapVectors UnPackTime
276 syn keyword pascalConstant FCarry FParity FAuxiliary FZero FSign FOverflow
277 syn keyword pascalConstant Hidden Sysfile VolumeId Directory Archive
278 syn keyword pascalConstant AnyFile fmClosed fmInput fmOutput fmInout
279 syn keyword pascalConstant TextRecNameLength TextRecBufSize
280 syn keyword pascalType ComStr PathStr DirStr NameStr ExtStr SearchRec
281 syn keyword pascalType FileRec TextBuf TextRec Registers DateTime
282 syn keyword pascalPredefined DosError
283
284 "Graph Unit
285 syn keyword pascalFunction Arc Bar Bar3D Circle ClearDevice ClearViewPort
286 syn keyword pascalFunction CloseGraph DetectGraph DrawPoly Ellipse
287 syn keyword pascalFunction FillEllipse FillPoly FloodFill GetArcCoords
288 syn keyword pascalFunction GetAspectRatio GetBkColor GetColor
289 syn keyword pascalFunction GetDefaultPalette GetDriverName GetFillPattern
290 syn keyword pascalFunction GetFillSettings GetGraphMode GetImage
291 syn keyword pascalFunction GetLineSettings GetMaxColor GetMaxMode GetMaxX
292 syn keyword pascalFunction GetMaxY GetModeName GetModeRange GetPalette
293 syn keyword pascalFunction GetPaletteSize GetPixel GetTextSettings
294 syn keyword pascalFunction GetViewSettings GetX GetY GraphDefaults
295 syn keyword pascalFunction GraphErrorMsg GraphResult ImageSize InitGraph
296 syn keyword pascalFunction InstallUserDriver InstallUserFont Line LineRel
297 syn keyword pascalFunction LineTo MoveRel MoveTo OutText OutTextXY
298 syn keyword pascalFunction PieSlice PutImage PutPixel Rectangle
299 syn keyword pascalFunction RegisterBGIDriver RegisterBGIFont
300 syn keyword pascalFunction RestoreCRTMode Sector SetActivePage
301 syn keyword pascalFunction SetAllPallette SetAspectRatio SetBkColor
302 syn keyword pascalFunction SetColor SetFillPattern SetFillStyle
303 syn keyword pascalFunction SetGraphBufSize SetGraphMode SetLineStyle
304 syn keyword pascalFunction SetPalette SetRGBPalette SetTextJustify
305 syn keyword pascalFunction SetTextStyle SetUserCharSize SetViewPort
306 syn keyword pascalFunction SetVisualPage SetWriteMode TextHeight TextWidth
307 syn keyword pascalType ArcCoordsType FillPatternType FillSettingsType
308 syn keyword pascalType LineSettingsType PaletteType PointType
309 syn keyword pascalType TextSettingsType ViewPortType
310
311 " string functions
312 syn keyword pascalFunction StrAlloc StrBufSize StrCat StrComp StrCopy
313 syn keyword pascalFunction StrDispose StrECopy StrEnd StrFmt StrIComp
314 syn keyword pascalFunction StrLCat StrLComp StrLCopy StrLen StrLFmt
315 syn keyword pascalFunction StrLIComp StrLower StrMove StrNew StrPas
316 syn keyword pascalFunction StrPCopy StrPLCopy StrPos StrRScan StrScan
317 syn keyword pascalFunction StrUpper
318 endif
319
320endif
321
322" Define the default highlighting.
323" For version 5.7 and earlier: only when not done already
324" For version 5.8 and later: only when an item doesn't have highlighting yet
325if version >= 508 || !exists("did_pascal_syn_inits")
326 if version < 508
327 let did_pascal_syn_inits = 1
328 command -nargs=+ HiLink hi link <args>
329 else
330 command -nargs=+ HiLink hi def link <args>
331 endif
332
333 HiLink pascalAcces pascalStatement
334 HiLink pascalBoolean Boolean
335 HiLink pascalComment Comment
336 HiLink pascalConditional Conditional
337 HiLink pascalConstant Constant
338 HiLink pascalDelimiter Identifier
339 HiLink pascalDirective pascalStatement
340 HiLink pascalException Exception
341 HiLink pascalFloat Float
342 HiLink pascalFunction Function
343 HiLink pascalLabel Label
344 HiLink pascalMatrixDelimiter Identifier
345 HiLink pascalModifier Type
346 HiLink pascalNumber Number
347 HiLink pascalOperator Operator
348 HiLink pascalPredefined pascalStatement
349 HiLink pascalPreProc PreProc
350 HiLink pascalRepeat Repeat
Bram Moolenaar009b2592004-10-24 19:18:58 +0000351 HiLink pascalSpaceError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000352 HiLink pascalStatement Statement
353 HiLink pascalString String
354 HiLink pascalStringEscape Special
355 HiLink pascalStringEscapeGPC Special
356 HiLink pascalStringError Error
357 HiLink pascalStruct pascalStatement
358 HiLink pascalSymbolOperator pascalOperator
359 HiLink pascalTodo Todo
360 HiLink pascalType Type
361 HiLink pascalUnclassified pascalStatement
362 " HiLink pascalAsm Assembler
363 HiLink pascalError Error
364 HiLink pascalAsmKey pascalStatement
365 HiLink pascalShowTab Error
366
367 delcommand HiLink
368endif
369
370
371let b:current_syntax = "pascal"
372
373" vim: ts=8 sw=2