11aeaf8c0SBram Moolenaar" Vim syntax file 21aeaf8c0SBram Moolenaar" Language: Zimbu 31aeaf8c0SBram Moolenaar" Maintainer: Bram Moolenaar 4*ed32d942SBram Moolenaar" Last Change: 2014 Nov 23 51aeaf8c0SBram Moolenaar 61aeaf8c0SBram Moolenaarif exists("b:current_syntax") 71aeaf8c0SBram Moolenaar finish 81aeaf8c0SBram Moolenaarendif 91aeaf8c0SBram Moolenaar 101aeaf8c0SBram Moolenaarsyn include @Ccode syntax/c.vim 111aeaf8c0SBram Moolenaar 121aeaf8c0SBram Moolenaarsyn keyword zimbuTodo TODO FIXME XXX contained 131aeaf8c0SBram Moolenaarsyn match zimbuNoBar "|" contained 141aeaf8c0SBram Moolenaarsyn match zimbuParam "|[^| ]\+|" contained contains=zimbuNoBar 15*ed32d942SBram Moolenaarsyn match zimbuNoBacktick "`" contained 16*ed32d942SBram Moolenaarsyn match zimbuCode "`[^`]\+`" contained contains=zimbuNoBacktick 17*ed32d942SBram Moolenaarsyn match zimbuComment "#.*$" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell 18*ed32d942SBram Moolenaarsyn match zimbuComment "/\*.\{-}\*/" contains=zimbuTodo,zimbuParam,zimbuCode,@Spell 191aeaf8c0SBram Moolenaar 201aeaf8c0SBram Moolenaarsyn match zimbuChar "'\\\=.'" 211aeaf8c0SBram Moolenaar 221aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType bool status 231aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType int1 int2 int3 int4 int5 int6 int7 241aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType int9 int10 int11 int12 int13 int14 int15 251aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType int int8 int16 int32 int64 bigInt 261aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType nat nat8 byte nat16 nat32 nat64 bigNat 271aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType nat1 nat2 nat3 nat4 nat5 nat6 nat7 281aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType nat9 nat10 nat11 nat12 nat13 nat14 nat15 291aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType float float32 float64 float80 float128 301aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType fixed1 fixed2 fixed3 fixed4 fixed5 fixed6 311aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType fixed7 fixed8 fixed9 fixed10 fixed11 fixed12 321aeaf8c0SBram Moolenaarsyn keyword zimbuBasicType fixed13 fixed14 fixed15 331aeaf8c0SBram Moolenaar 34*ed32d942SBram Moolenaarsyn keyword zimbuCompType string varString 35*ed32d942SBram Moolenaarsyn keyword zimbuCompType byteString varByteString 36*ed32d942SBram Moolenaarsyn keyword zimbuCompType tuple array list dict dictList set callback 37*ed32d942SBram Moolenaarsyn keyword zimbuCompType sortedList multiDict multiDictList multiSet 381aeaf8c0SBram Moolenaarsyn keyword zimbuCompType complex complex32 complex64 complex80 complex128 391aeaf8c0SBram Moolenaarsyn keyword zimbuCompType proc func def thread evalThread lock cond pipe 401aeaf8c0SBram Moolenaar 41*ed32d942SBram Moolenaarsyn keyword zimbuType VAR dyn type USE GET 421aeaf8c0SBram Moolenaarsyn match zimbuType "IO.File" 431aeaf8c0SBram Moolenaarsyn match zimbuType "IO.Stat" 441aeaf8c0SBram Moolenaar 45*ed32d942SBram Moolenaarsyn keyword zimbuStatement IF ELSE ELSEIF IFNIL WHILE REPEAT FOR IN TO STEP 461aeaf8c0SBram Moolenaarsyn keyword zimbuStatement DO UNTIL SWITCH WITH 471aeaf8c0SBram Moolenaarsyn keyword zimbuStatement TRY CATCH FINALLY 481aeaf8c0SBram Moolenaarsyn keyword zimbuStatement GENERATE_IF GENERATE_ELSE GENERATE_ELSEIF 49*ed32d942SBram Moolenaarsyn keyword zimbuStatement GENERATE_ERROR 50*ed32d942SBram Moolenaarsyn keyword zimbuStatement BUILD_IF BUILD_ELSE BUILD_ELSEIF 511aeaf8c0SBram Moolenaarsyn keyword zimbuStatement CASE DEFAULT FINAL ABSTRACT VIRTUAL DEFINE REPLACE 521aeaf8c0SBram Moolenaarsyn keyword zimbuStatement IMPLEMENTS EXTENDS PARENT LOCAL 53*ed32d942SBram Moolenaarsyn keyword zimbuStatement PART ALIAS TYPE CONNECT WRAP 541aeaf8c0SBram Moolenaarsyn keyword zimbuStatement BREAK CONTINUE PROCEED 55*ed32d942SBram Moolenaarsyn keyword zimbuStatement RETURN EXIT THROW DEFER 561aeaf8c0SBram Moolenaarsyn keyword zimbuStatement IMPORT AS OPTIONS MAIN 57*ed32d942SBram Moolenaarsyn keyword zimbuStatement INTERFACE PIECE INCLUDE MODULE ENUM BITS 58*ed32d942SBram Moolenaarsyn keyword zimbuStatement SHARED STATIC 59*ed32d942SBram Moolenaarsyn keyword zimbuStatement LAMBDA 601aeaf8c0SBram Moolenaarsyn match zimbuStatement "\<\(FUNC\|PROC\|DEF\)\>" 611aeaf8c0SBram Moolenaarsyn match zimbuStatement "\<CLASS\>" 621aeaf8c0SBram Moolenaarsyn match zimbuStatement "}" 631aeaf8c0SBram Moolenaar 641aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@backtrace=no\>" 651aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@backtrace=yes\>" 661aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@abstract\>" 671aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@earlyInit\>" 681aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@default\>" 691aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@define\>" 701aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@replace\>" 711aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@final\>" 72*ed32d942SBram Moolenaarsyn match zimbuAttribute "@primitive\>" 73*ed32d942SBram Moolenaarsyn match zimbuAttribute "@notOnExit\>" 741aeaf8c0SBram Moolenaar 751aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@private\>" 761aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@protected\>" 771aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@public\>" 78*ed32d942SBram Moolenaarsyn match zimbuAttribute "@local\>" 791aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@file\>" 801aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@directory\>" 811aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@read=private\>" 821aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@read=protected\>" 831aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@read=public\>" 841aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@read=file\>" 851aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@read=directory\>" 861aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@items=private\>" 871aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@items=protected\>" 881aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@items=public\>" 891aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@items=file\>" 901aeaf8c0SBram Moolenaarsyn match zimbuAttribute "@items=directory\>" 911aeaf8c0SBram Moolenaar 92*ed32d942SBram Moolenaarsyn keyword zimbuMethod NEW EQUAL COPY COMPARE SIZE GET SET INIT EARLYINIT 931aeaf8c0SBram Moolenaar 941aeaf8c0SBram Moolenaarsyn keyword zimbuOperator IS ISNOT ISA ISNOTA 951aeaf8c0SBram Moolenaar 96*ed32d942SBram Moolenaarsyn keyword zimbuModule ARG CHECK E GC IO LOG PROTO SYS HTTP ZC ZWT T TIME THREAD 971aeaf8c0SBram Moolenaar 98*ed32d942SBram Moolenaarsyn match zimbuImport "\.\zsPROTO" 99*ed32d942SBram Moolenaarsyn match zimbuImport "\.\zsCHEADER" 100*ed32d942SBram Moolenaar 101*ed32d942SBram Moolenaar"syn match zimbuString +"\([^"\\]\|\\.\)*\("\|$\)+ contains=zimbuStringExpr 102*ed32d942SBram Moolenaarsyn region zimbuString start=+"+ skip=+[^"\\]\|\\.+ end=+"\|$+ contains=zimbuStringExpr 1031aeaf8c0SBram Moolenaarsyn match zimbuString +R"\([^"]\|""\)*\("\|$\)+ 104*ed32d942SBram Moolenaarsyn region zimbuLongString start=+''"+ end=+"''+ 105*ed32d942SBram Moolenaarsyn match zimbuStringExpr +\\([^)]*)+hs=s+2,he=e-1 contained contains=zimbuString,zimbuParenPairOuter 106*ed32d942SBram Moolenaarsyn region zimbuParenPairOuter start=+(+ms=s+1 end=+)+me=e-1 contained contains=zimbuString,zimbuParenPair 107*ed32d942SBram Moolenaarsyn region zimbuParenPair start=+(+ end=+)+ contained contains=zimbuString,zimbuParenPair 1081aeaf8c0SBram Moolenaar 1091aeaf8c0SBram Moolenaarsyn keyword zimbuFixed TRUE FALSE NIL THIS THISTYPE FAIL OK 1101aeaf8c0SBram Moolenaarsyn keyword zimbuError NULL 1111aeaf8c0SBram Moolenaar 1121aeaf8c0SBram Moolenaar" trailing whitespace 1131aeaf8c0SBram Moolenaarsyn match zimbuSpaceError display excludenl "\S\s\+$"ms=s+1 1141aeaf8c0SBram Moolenaar" mixed tabs and spaces 1151aeaf8c0SBram Moolenaarsyn match zimbuSpaceError display " \+\t" 1161aeaf8c0SBram Moolenaarsyn match zimbuSpaceError display "\t\+ " 1171aeaf8c0SBram Moolenaar 118*ed32d942SBram Moolenaarsyn match zimbuUses contained "\<uses([a-zA-Z_ ,]*)" 119*ed32d942SBram Moolenaarsyn match zimbuBlockgc contained "blockgc" 1201aeaf8c0SBram Moolenaarsyn match zimbuBlockComment contained " #.*" 1211aeaf8c0SBram Moolenaar 122*ed32d942SBram Moolenaarsyn region zimbuCregion matchgroup=zimbuCblock start="^>>>" end="^<<<.*" contains=@Ccode,zimbuUses,zimbuBlockgc,zimbuBlockComment keepend 1231aeaf8c0SBram Moolenaar 124*ed32d942SBram Moolenaar" Assume long strings and C regions don't take more than 200 lines. 125*ed32d942SBram Moolenaarsyn sync minlines=200 126*ed32d942SBram Moolenaar 127*ed32d942SBram Moolenaar" When we find the start of a long string, without a # or " before it, we are 128*ed32d942SBram Moolenaar" sure to be inside a long string. 129*ed32d942SBram Moolenaarsyn sync match zimbuLongStringSync grouphere zimbuLongString +^[^"#]*''\"+ 1301aeaf8c0SBram Moolenaar 1311aeaf8c0SBram Moolenaarhi def link zimbuBasicType Type 1321aeaf8c0SBram Moolenaarhi def link zimbuCompType Type 1331aeaf8c0SBram Moolenaarhi def link zimbuType Type 1341aeaf8c0SBram Moolenaarhi def link zimbuStatement Statement 1351aeaf8c0SBram Moolenaarhi def link zimbuOperator Statement 1361aeaf8c0SBram Moolenaarhi def link zimbuMethod PreProc 1371aeaf8c0SBram Moolenaarhi def link zimbuModule PreProc 138*ed32d942SBram Moolenaarhi def link zimbuImport PreProc 1391aeaf8c0SBram Moolenaarhi def link zimbuUses PreProc 140*ed32d942SBram Moolenaarhi def link zimbuBlockgc PreProc 1411aeaf8c0SBram Moolenaarhi def link zimbuAttribute PreProc 1421aeaf8c0SBram Moolenaarhi def link zimbuString Constant 143*ed32d942SBram Moolenaarhi def link zimbuLongString Special 1441aeaf8c0SBram Moolenaarhi def link zimbuChar Constant 1451aeaf8c0SBram Moolenaarhi def link zimbuFixed Constant 1461aeaf8c0SBram Moolenaarhi def link zimbuComment Comment 147*ed32d942SBram Moolenaarhi def link zimbuCommentStart zimbuComment 1481aeaf8c0SBram Moolenaarhi def link zimbuBlockComment Comment 1491aeaf8c0SBram Moolenaarhi def link zimbuCblock Comment 1501aeaf8c0SBram Moolenaarhi def link zimbuTodo Todo 1511aeaf8c0SBram Moolenaarhi def link zimbuParam Constant 152*ed32d942SBram Moolenaarhi def link zimbuCode Statement 1531aeaf8c0SBram Moolenaarhi def link zimbuNoBar Ignore 154*ed32d942SBram Moolenaarhi def link zimbuNoBacktick Ignore 1551aeaf8c0SBram Moolenaarhi def link zimbuSpaceError Error 1561aeaf8c0SBram Moolenaarhi def link zimbuError Error 1571aeaf8c0SBram Moolenaar 1581aeaf8c0SBram Moolenaarlet b:current_syntax = "zimbu" 1591aeaf8c0SBram Moolenaar 1601aeaf8c0SBram Moolenaar" vim: ts=8 161