neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

pascal.vim (15984B)


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