if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Keep user-supplied options if !exists("nim_highlight_numbers") let nim_highlight_numbers = 1 endif if !exists("nim_highlight_builtins") let nim_highlight_builtins = 1 endif if !exists("nim_highlight_exceptions") let nim_highlight_exceptions = 1 endif if !exists("nim_highlight_space_errors") let nim_highlight_space_errors = 1 endif if exists("nim_highlight_all") let nim_highlight_numbers = 1 let nim_highlight_builtins = 1 let nim_highlight_exceptions = 1 let nim_highlight_space_errors = 1 endif syn region nimBrackets contained extend keepend matchgroup=Bold start=+\(\\\)\@" syn match nimNumber "\v<[0-9_]+(\'(i|I|f|F|u|U)(8|16|32|64))?>" syn match nimNumber "\v[0-9]\.[0-9_]+([eE][+-]=[0-9_]+)=>" syn match nimNumber "\v<[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9_]+)?(\'(f|F)(32|64))?>" endif if nim_highlight_builtins == 1 " builtin functions, types and objects, not really part of the syntax syn keyword nimBuiltin int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool syn keyword nimBuiltin char string cstring pointer range array openarray seq syn keyword nimBuiltin set Byte Natural Positive TObject PObject Conversion TResult TAddress syn keyword nimBuiltin BiggestInt BiggestFloat cchar cschar cshort cint csize cuchar cushort syn keyword nimBuiltin clong clonglong cfloat cdouble clongdouble cuint culong culonglong cchar syn keyword nimBuiltin cstringArray TEndian PFloat32 PFloat64 PInt64 PInt32 syn keyword nimBuiltin TGC_Strategy TFile TFileMode TFileHandle isMainModule syn keyword nimBuiltin CompileDate CompileTime nimVersion nimMajor syn keyword nimBuiltin nimMinor nimPatch cpuEndian hostOS hostCPU inf syn keyword nimBuiltin neginf nan QuitSuccess QuitFailure dbgLineHook stdin syn keyword nimBuiltin stdout stderr defined new high low sizeof succ pred syn keyword nimBuiltin inc dec newSeq len incl excl card ord chr ze ze64 syn keyword nimBuiltin toU8 toU16 toU32 abs min max add repr syn match nimBuiltin "\" syn keyword nimBuiltin toFloat toBiggestFloat toInt toBiggestInt addQuitProc syn keyword nimBuiltin copy setLen newString zeroMem copyMem moveMem syn keyword nimBuiltin equalMem alloc alloc0 realloc dealloc setLen assert syn keyword nimBuiltin swap getRefcount getCurrentException Msg syn keyword nimBuiltin getOccupiedMem getFreeMem getTotalMem isNil seqToPtr syn keyword nimBuiltin find pop GC_disable GC_enable GC_fullCollect syn keyword nimBuiltin GC_setStrategy GC_enableMarkAnd Sweep syn keyword nimBuiltin GC_disableMarkAnd Sweep GC_getStatistics GC_ref syn keyword nimBuiltin GC_ref GC_ref GC_unref GC_unref GC_unref quit syn keyword nimBuiltin OpenFile OpenFile CloseFile EndOfFile readChar syn keyword nimBuiltin FlushFile readFile write readLine writeln writeln syn keyword nimBuiltin getFileSize ReadBytes ReadChars readBuffer writeBytes syn keyword nimBuiltin writeChars writeBuffer setFilePos getFilePos syn keyword nimBuiltin fileHandle countdown countup items lines endif if nim_highlight_exceptions == 1 " builtin exceptions and warnings syn keyword nimException E_Base EAsynch ESynch ESystem EIO EOS syn keyword nimException ERessourceExhausted EArithmetic EDivByZero syn keyword nimException EOverflow EAccessViolation EAssertionFailed syn keyword nimException EControlC EInvalidValue EOutOfMemory EInvalidIndex syn keyword nimException EInvalidField EOutOfRange EStackOverflow syn keyword nimException ENoExceptionToReraise EInvalidObjectAssignment syn keyword nimException EInvalidObject EInvalidLibrary EInvalidKey syn keyword nimException EInvalidObjectConversion EFloatingPoint syn keyword nimException EFloatInvalidOp EFloatDivByZero EFloatOverflow syn keyword nimException EFloatInexact EDeadThread EResourceExhausted syn keyword nimException EFloatUnderflow endif if nim_highlight_space_errors == 1 " trailing whitespace syn match nimSpaceError display excludenl "\S\s\+$"ms=s+1 " any tabs are illegal in nim syn match nimSpaceError display "\t" endif syn sync match nimSync grouphere NONE "):$" syn sync maxlines=200 syn sync minlines=2000 if version >= 508 || !exists("did_nim_syn_inits") if version <= 508 let did_nim_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif " The default methods for highlighting. Can be overridden later HiLink nimBrackets Operator HiLink nimKeyword Keyword HiLink nimFunction Function HiLink nimConditional Conditional HiLink nimRepeat Repeat HiLink nimString String HiLink nimRawString String HiLink nimBoolean Boolean HiLink nimEscape Special HiLink nimOperator Operator HiLink nimPreCondit PreCondit HiLink nimComment Comment HiLink nimTodo Todo HiLink nimDecorator Define if nim_highlight_numbers == 1 HiLink nimNumber Number endif if nim_highlight_builtins == 1 HiLink nimBuiltin Number endif if nim_highlight_exceptions == 1 HiLink nimException Exception endif if nim_highlight_space_errors == 1 HiLink nimSpaceError Error endif delcommand HiLink endif let b:current_syntax = "nim" endif