1" Vim syntax file 2" Language: Pascal 3" Version: 2.8 4" Last Change: 2004/10/17 17:47:30 5" Maintainer: Xavier Cr�gut <[email protected]> 6" Previous Maintainer: Mario Eusebio <[email protected]> 7 8" Contributors: Tim Chase <[email protected]>, 9" Stas Grabois <[email protected]>, 10" Mazen NEIFER <[email protected]>, 11" Klaus Hast <[email protected]>, 12" Austin Ziegler <[email protected]>, 13" Markus Koenig <[email protected]> 14 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 40 " 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 54 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 112syn region pascalComment start="(\*\|{" end="\*)\|}" contains=pascalTodo,pascalSpaceError 113 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 131 syn keyword pascalFunction Get Page Put 132 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 147 syn keyword pascalModifier interrupt near virtual 148 syn keyword pascalAcces private public 149 syn keyword pascalStruct object 150 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") 169 syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError 170 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") 183 syn region pascalComment start="//" end="$" contains=pascalTodo,pascalSpaceError 184 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 194 syn keyword pascalStatement library package 195 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 266 syn keyword pascalPredefined TextChar 267 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 351 HiLink pascalSpaceError Error 352 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 374