nim.vim/syntax/nimrod.vim
2011-12-15 15:17:58 +02:00

180 lines
7.6 KiB
VimL

" 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("nimrod_highlight_numbers")
let nimrod_highlight_numbers = 1
endif
if !exists("nimrod_highlight_builtins")
let nimrod_highlight_builtins = 1
endif
if !exists("nimrod_highlight_exceptions")
let nimrod_highlight_exceptions = 1
endif
if !exists("nimrod_highlight_space_errors")
let nimrod_highlight_space_errors = 1
endif
if exists("nimrod_highlight_all")
let nimrod_highlight_numbers = 1
let nimrod_highlight_builtins = 1
let nimrod_highlight_exceptions = 1
let nimrod_highlight_space_errors = 1
endif
syn region nimrodBrackets contained extend keepend matchgroup=Bold start=+\(\\\)\@<!\[+ end=+]\|$+ skip=+\\\s*$\|\(\\\)\@<!\\]+ contains=@tclCommandCluster
syn keyword nimrodKeyword addr and as asm atomic
syn keyword nimrodKeyword bind block break
syn keyword nimrodKeyword case cast const continue converter
syn keyword nimrodKeyword discard distinct div
syn keyword nimrodKeyword elif else enum except
syn keyword nimrodKeyword finally for from generic
syn keyword nimrodKeyword if implies import in include is isnot iterator
syn keyword nimrodKeyword lambda let
syn keyword nimrodKeyword nil not notin
syn keyword nimrodKeyword object of or out
syn keyword nimrodKeyword proc method macro template nextgroup=nimrodFunction skipwhite
syn keyword nimrodKeyword raise ref return
syn keyword nimrodKeyword shl shr xom mod and
syn keyword nimrodKeyword try tuple type
syn keyword nimrodKeyword ptr var
syn keyword nimrodKeyword when while with without
syn keyword nimrodKeyword yield
syn match nimrodFunction "[a-zA-Z_][a-zA-Z0-9_]*" contained
syn match nimrodClass "[a-zA-Z_][a-zA-Z0-9_]*" contained
syn keyword nimrodRepeat for while
syn keyword nimrodConditional if elif else case of
syn keyword nimrodOperator and in is not or xor shl shr div
syn match nimrodComment "#.*$" contains=nimrodTodo,@Spell
syn keyword nimrodTodo TODO FIXME XXX contained
syn keyword nimrodBoolean true false
" Strings
syn region nimrodString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=nimrodEscape,nimrodEscapeError,@Spell
syn region nimrodString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=nimrodEscape,nimrodEscapeError,@Spell
syn region nimrodString start=+"""+ end=+"""+ keepend contains=nimrodEscape,nimrodEscapeError,@Spell
syn region nimrodRawString matchgroup=Normal start=+[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
syn match nimrodEscape +\\[abfnrtv'"\\]+ contained
syn match nimrodEscape "\\\o\{1,3}" contained
syn match nimrodEscape "\\x\x\{2}" contained
syn match nimrodEscape "\(\\u\x\{4}\|\\U\x\{8}\)" contained
syn match nimrodEscape "\\$"
syn match nimrodEscapeError "\\x\x\=\X" display contained
if nimrod_highlight_numbers == 1
" numbers (including longs and complex)
syn match nimrodNumber "\v<0x\x+(\'(i|I|f|F)(8|16|32|64))?>"
syn match nimrodNumber "\v<[0-9_]+(\'(i|I|f|F)(8|16|32|64))?>"
syn match nimrodNumber "\v\.[0-9_]+([eE][+-]=[0-9_]+)=>"
syn match nimrodNumber "\v<[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9_]+)?(\'(f|F)(32|64))?>"
endif
if nimrod_highlight_builtins == 1
" builtin functions, types and objects, not really part of the syntax
syn keyword nimrodBuiltin int int8 int16 int32 int64 float float32 float64 bool
syn keyword nimrodBuiltin char string cstring pointer range array openarray seq
syn keyword nimrodBuiltin set Byte Natural Positive TObject PObject Conversion TResult TAddress
syn keyword nimrodBuiltin BiggestInt BiggestFloat cchar cschar cshort cint
syn keyword nimrodBuiltin clong clonglong cfloat cdouble clongdouble
syn keyword nimrodBuiltin cstringArray TEndian PFloat32 PFloat64 PInt64 PInt32
syn keyword nimrodBuiltin TGC_Strategy TFile TFileMode TFileHandle isMainModule
syn keyword nimrodBuiltin CompileDate CompileTime NimrodVersion NimrodMajor
syn keyword nimrodBuiltin NimrodMinor NimrodPatch cpuEndian hostOS hostCPU inf
syn keyword nimrodBuiltin neginf nan QuitSuccess QuitFailure dbgLineHook stdin
syn keyword nimrodBuiltin stdout stderr defined new high low sizeof succ pred
syn keyword nimrodBuiltin inc dec newSeq len incl excl card ord chr ze ze64
syn keyword nimrodBuiltin toU8 toU16 toU32 abs min max add repr
syn match nimrodBuiltin "\<contains\>"
syn keyword nimrodBuiltin toFloat toBiggestFloat toInt toBiggestInt addQuitProc
syn keyword nimrodBuiltin copy setLen newString zeroMem copyMem moveMem
syn keyword nimrodBuiltin equalMem alloc alloc0 realloc dealloc setLen assert
syn keyword nimrodBuiltin swap getRefcount getCurrentException Msg
syn keyword nimrodBuiltin getOccupiedMem getFreeMem getTotalMem isNil seqToPtr
syn keyword nimrodBuiltin find pop GC_disable GC_enable GC_fullCollect
syn keyword nimrodBuiltin GC_setStrategy GC_enableMarkAnd Sweep
syn keyword nimrodBuiltin GC_disableMarkAnd Sweep GC_getStatistics GC_ref
syn keyword nimrodBuiltin GC_ref GC_ref GC_unref GC_unref GC_unref quit
syn keyword nimrodBuiltin OpenFile OpenFile CloseFile EndOfFile readChar
syn keyword nimrodBuiltin FlushFile readFile write readLine writeln writeln
syn keyword nimrodBuiltin getFileSize ReadBytes ReadChars readBuffer writeBytes
syn keyword nimrodBuiltin writeChars writeBuffer setFilePos getFilePos
syn keyword nimrodBuiltin fileHandle countdown countup items lines
endif
if nimrod_highlight_exceptions == 1
" builtin exceptions and warnings
syn keyword nimrodException E_Base EAsynch ESynch ESystem EIO EOS
syn keyword nimrodException ERessourceExhausted EArithmetic EDivByZero
syn keyword nimrodException EOverflow EAccessViolation EAssertionFailed
syn keyword nimrodException EControlC EInvalidValue EOutOfMemory EInvalidIndex
syn keyword nimrodException EInvalidField EOutOfRange EStackOverflow
syn keyword nimrodException ENoExceptionToReraise EInvalidObjectAssignment
syn keyword nimrodException EInvalidObject
endif
if nimrod_highlight_space_errors == 1
" trailing whitespace
syn match nimrodSpaceError display excludenl "\S\s\+$"ms=s+1
" any tabs are illegal in nimrod
syn match nimrodSpaceError display "\t"
endif
syn sync match nimrodSync grouphere NONE "):$"
syn sync maxlines=200
syn sync minlines=2000
if version >= 508 || !exists("did_nimrod_syn_inits")
if version <= 508
let did_nimrod_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
" The default methods for highlighting. Can be overridden later
HiLink nimrodBrackets Operator
HiLink nimrodKeyword Keyword
HiLink nimrodFunction Function
HiLink nimrodConditional Conditional
HiLink nimrodRepeat Repeat
HiLink nimrodString String
HiLink nimrodRawString String
HiLink nimrodBoolean Boolean
HiLink nimrodEscape Special
HiLink nimrodOperator Operator
HiLink nimrodPreCondit PreCondit
HiLink nimrodComment Comment
HiLink nimrodTodo Todo
HiLink nimrodDecorator Define
if nimrod_highlight_numbers == 1
HiLink nimrodNumber Number
endif
if nimrod_highlight_builtins == 1
HiLink nimrodBuiltin Number
endif
if nimrod_highlight_exceptions == 1
HiLink nimrodException Exception
endif
if nimrod_highlight_space_errors == 1
HiLink nimrodSpaceError Error
endif
delcommand HiLink
endif
let b:current_syntax = "nimrod"