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