1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Essbase script 3071d4279SBram Moolenaar" Maintainer: Raul Segura Acevedo <[email protected]> 4b6b046b2SBram Moolenaar" Last change: 2011 Dec 25 by Thilo Six 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11b6b046b2SBram Moolenaarlet s:cpo_save = &cpo 12b6b046b2SBram Moolenaarset cpo&vim 13b6b046b2SBram Moolenaar 14071d4279SBram Moolenaar" folds: fix/endfix and comments 15071d4279SBram Moolenaarsy region EssFold start="\<Fix" end="EndFix" transparent fold 16071d4279SBram Moolenaar 17071d4279SBram Moolenaarsy keyword cscTodo contained TODO FIXME XXX 18071d4279SBram Moolenaar 19071d4279SBram Moolenaar" cscCommentGroup allows adding matches for special things in comments 20071d4279SBram Moolenaarsy cluster cscCommentGroup contains=cscTodo 21071d4279SBram Moolenaar 22071d4279SBram Moolenaar" Strings in quotes 23071d4279SBram Moolenaarsy match cscError '"' 24071d4279SBram Moolenaarsy match cscString '"[^"]*"' 25071d4279SBram Moolenaar 26071d4279SBram Moolenaar"when wanted, highlight trailing white space 27071d4279SBram Moolenaarif exists("csc_space_errors") 28071d4279SBram Moolenaar if !exists("csc_no_trail_space_error") 29071d4279SBram Moolenaar sy match cscSpaceE "\s\+$" 30071d4279SBram Moolenaar endif 31071d4279SBram Moolenaar if !exists("csc_no_tab_space_error") 32071d4279SBram Moolenaar sy match cscSpaceE " \+\t"me=e-1 33071d4279SBram Moolenaar endif 34071d4279SBram Moolenaarendif 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar"catch errors caused by wrong parenthesis and brackets 37071d4279SBram Moolenaarsy cluster cscParenGroup contains=cscParenE,@cscCommentGroup,cscUserCont,cscBitField,cscFormat,cscNumber,cscFloat,cscOctal,cscNumbers,cscIfError,cscComW,cscCom,cscFormula,cscBPMacro 38071d4279SBram Moolenaarsy region cscParen transparent start='(' end=')' contains=ALLBUT,@cscParenGroup 39071d4279SBram Moolenaarsy match cscParenE ")" 40071d4279SBram Moolenaar 41071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f". 42071d4279SBram Moolenaarsy case ignore 43071d4279SBram Moolenaarsy match cscNumbers transparent "\<\d\|\.\d" contains=cscNumber,cscFloat,cscOctal 44071d4279SBram Moolenaarsy match cscNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 45071d4279SBram Moolenaar"hex number 46071d4279SBram Moolenaarsy match cscNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 47071d4279SBram Moolenaar" Flag the first zero of an octal number as something special 48071d4279SBram Moolenaarsy match cscOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" 49071d4279SBram Moolenaarsy match cscFloat contained "\d\+f" 50071d4279SBram Moolenaar"floating point number, with dot, optional exponent 51071d4279SBram Moolenaarsy match cscFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 52071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 53071d4279SBram Moolenaarsy match cscFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 54071d4279SBram Moolenaar"floating point number, without dot, with exponent 55071d4279SBram Moolenaarsy match cscFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" 56071d4279SBram Moolenaar 57071d4279SBram Moolenaarsy region cscComment start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold 58071d4279SBram Moolenaarsy match cscCommentE "\*/" 59071d4279SBram Moolenaar 60071d4279SBram Moolenaarsy keyword cscIfError IF ELSE ENDIF ELSEIF 61071d4279SBram Moolenaarsy keyword cscCondition contained IF ELSE ENDIF ELSEIF 62071d4279SBram Moolenaarsy keyword cscFunction contained VARPER VAR UDA TRUNCATE SYD SUMRANGE SUM 63071d4279SBram Moolenaarsy keyword cscFunction contained STDDEVRANGE STDDEV SPARENTVAL SLN SIBLINGS SHIFT 64071d4279SBram Moolenaarsy keyword cscFunction contained SANCESTVAL RSIBLINGS ROUND REMAINDER RELATIVE PTD 65071d4279SBram Moolenaarsy keyword cscFunction contained PRIOR POWER PARENTVAL NPV NEXT MOD MINRANGE MIN 66071d4279SBram Moolenaarsy keyword cscFunction contained MDSHIFT MDPARENTVAL MDANCESTVAL MAXRANGE MAX MATCH 67071d4279SBram Moolenaarsy keyword cscFunction contained LSIBLINGS LEVMBRS LEV 68071d4279SBram Moolenaarsy keyword cscFunction contained ISUDA ISSIBLING ISSAMELEV ISSAMEGEN ISPARENT ISMBR 69071d4279SBram Moolenaarsy keyword cscFunction contained ISLEV ISISIBLING ISIPARENT ISIDESC ISICHILD ISIBLINGS 70071d4279SBram Moolenaarsy keyword cscFunction contained ISIANCEST ISGEN ISDESC ISCHILD ISANCEST ISACCTYPE 71071d4279SBram Moolenaarsy keyword cscFunction contained IRSIBLINGS IRR INTEREST INT ILSIBLINGS IDESCENDANTS 72071d4279SBram Moolenaarsy keyword cscFunction contained ICHILDREN IANCESTORS IALLANCESTORS 73071d4279SBram Moolenaarsy keyword cscFunction contained GROWTH GENMBRS GEN FACTORIAL DISCOUNT DESCENDANTS 74071d4279SBram Moolenaarsy keyword cscFunction contained DECLINE CHILDREN CURRMBRRANGE CURLEV CURGEN 75071d4279SBram Moolenaarsy keyword cscFunction contained COMPOUNDGROWTH COMPOUND AVGRANGE AVG ANCESTVAL 76071d4279SBram Moolenaarsy keyword cscFunction contained ANCESTORS ALLANCESTORS ACCUM ABS 77071d4279SBram Moolenaarsy keyword cscFunction contained @VARPER @VAR @UDA @TRUNCATE @SYD @SUMRANGE @SUM 78071d4279SBram Moolenaarsy keyword cscFunction contained @STDDEVRANGE @STDDEV @SPARENTVAL @SLN @SIBLINGS @SHIFT 79071d4279SBram Moolenaarsy keyword cscFunction contained @SANCESTVAL @RSIBLINGS @ROUND @REMAINDER @RELATIVE @PTD 80071d4279SBram Moolenaarsy keyword cscFunction contained @PRIOR @POWER @PARENTVAL @NPV @NEXT @MOD @MINRANGE @MIN 81071d4279SBram Moolenaarsy keyword cscFunction contained @MDSHIFT @MDPARENTVAL @MDANCESTVAL @MAXRANGE @MAX @MATCH 82071d4279SBram Moolenaarsy keyword cscFunction contained @LSIBLINGS @LEVMBRS @LEV 83071d4279SBram Moolenaarsy keyword cscFunction contained @ISUDA @ISSIBLING @ISSAMELEV @ISSAMEGEN @ISPARENT @ISMBR 84071d4279SBram Moolenaarsy keyword cscFunction contained @ISLEV @ISISIBLING @ISIPARENT @ISIDESC @ISICHILD @ISIBLINGS 85071d4279SBram Moolenaarsy keyword cscFunction contained @ISIANCEST @ISGEN @ISDESC @ISCHILD @ISANCEST @ISACCTYPE 86071d4279SBram Moolenaarsy keyword cscFunction contained @IRSIBLINGS @IRR @INTEREST @INT @ILSIBLINGS @IDESCENDANTS 87071d4279SBram Moolenaarsy keyword cscFunction contained @ICHILDREN @IANCESTORS @IALLANCESTORS 88071d4279SBram Moolenaarsy keyword cscFunction contained @GROWTH @GENMBRS @GEN @FACTORIAL @DISCOUNT @DESCENDANTS 89071d4279SBram Moolenaarsy keyword cscFunction contained @DECLINE @CHILDREN @CURRMBRRANGE @CURLEV @CURGEN 90071d4279SBram Moolenaarsy keyword cscFunction contained @COMPOUNDGROWTH @COMPOUND @AVGRANGE @AVG @ANCESTVAL 91071d4279SBram Moolenaarsy keyword cscFunction contained @ANCESTORS @ALLANCESTORS @ACCUM @ABS 92071d4279SBram Moolenaarsy match cscFunction contained "@" 93071d4279SBram Moolenaarsy match cscError "@\s*\a*" contains=cscFunction 94071d4279SBram Moolenaar 95071d4279SBram Moolenaarsy match cscStatement "&" 96071d4279SBram Moolenaarsy keyword cscStatement AGG ARRAY VAR CCONV CLEARDATA DATACOPY 97071d4279SBram Moolenaar 98071d4279SBram Moolenaarsy match cscComE contained "^\s*CALC.*" 99071d4279SBram Moolenaarsy match cscComE contained "^\s*CLEARBLOCK.*" 100071d4279SBram Moolenaarsy match cscComE contained "^\s*SET.*" 101071d4279SBram Moolenaarsy match cscComE contained "^\s*FIX" 102071d4279SBram Moolenaarsy match cscComE contained "^\s*ENDFIX" 103071d4279SBram Moolenaarsy match cscComE contained "^\s*ENDLOOP" 104071d4279SBram Moolenaarsy match cscComE contained "^\s*LOOP" 105071d4279SBram Moolenaar" sy keyword cscCom FIX ENDFIX LOOP ENDLOOP 106071d4279SBram Moolenaar 107071d4279SBram Moolenaarsy match cscComW "^\s*CALC.*" 108071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*ALL" 109071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*AVERAGE" 110071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*DIM" 111071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*FIRST" 112071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*LAST" 113071d4279SBram Moolenaarsy match cscCom "^\s*CALC\s*TWOPASS" 114071d4279SBram Moolenaar 115071d4279SBram Moolenaarsy match cscComW "^\s*CLEARBLOCK.*" 116071d4279SBram Moolenaarsy match cscCom "^\s*CLEARBLOCK\s\+ALL" 117071d4279SBram Moolenaarsy match cscCom "^\s*CLEARBLOCK\s\+UPPER" 118071d4279SBram Moolenaarsy match cscCom "^\s*CLEARBLOCK\s\+NONINPUT" 119071d4279SBram Moolenaar 120071d4279SBram Moolenaarsy match cscComW "^\s*\<SET.*" 121071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+Commands" 122071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+AGGMISSG" 123071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+CACHE" 124071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+CALCHASHTBL" 125071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+CLEARUPDATESTATUS" 126071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+FRMLBOTTOMUP" 127071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+LOCKBLOCK" 128071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+MSG" 129071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+NOTICE" 130071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+UPDATECALC" 131071d4279SBram Moolenaarsy match cscCom "^\s*\<SET\s\+UPTOLOCAL" 132071d4279SBram Moolenaar 133071d4279SBram Moolenaarsy keyword cscBPMacro contained !LoopOnAll !LoopOnLevel !LoopOnSelected 134071d4279SBram Moolenaarsy keyword cscBPMacro contained !CurrentMember !LoopOnDimensions !CurrentDimension 135071d4279SBram Moolenaarsy keyword cscBPMacro contained !CurrentOtherLoopDimension !LoopOnOtherLoopDimensions 136071d4279SBram Moolenaarsy keyword cscBPMacro contained !EndLoop !AllMembers !SelectedMembers !If !Else !EndIf 137071d4279SBram Moolenaarsy keyword cscBPMacro contained LoopOnAll LoopOnLevel LoopOnSelected 138071d4279SBram Moolenaarsy keyword cscBPMacro contained CurrentMember LoopOnDimensions CurrentDimension 139071d4279SBram Moolenaarsy keyword cscBPMacro contained CurrentOtherLoopDimension LoopOnOtherLoopDimensions 140071d4279SBram Moolenaarsy keyword cscBPMacro contained EndLoop AllMembers SelectedMembers If Else EndIf 141071d4279SBram Moolenaarsy match cscBPMacro contained "!" 142071d4279SBram Moolenaarsy match cscBPW "!\s*\a*" contains=cscBPmacro 143071d4279SBram Moolenaar 144*6c391a74SBram Moolenaar" when wanted, highlighting lhs members or errors in assignments (may lag the editing) 14589bcfda6SBram Moolenaarif exists("csc_asignment") 146071d4279SBram Moolenaar sy match cscEqError '\("[^"]*"\s*\|[^][\t !%()*+,--/:;<=>{}~]\+\s*\|->\s*\)*=\([^=]\@=\|$\)' 147071d4279SBram Moolenaar sy region cscFormula transparent matchgroup=cscVarName start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\s*=\([^=]\@=\|\n\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition 148071d4279SBram Moolenaar sy region cscFormulaIn matchgroup=cscVarName transparent start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\(->\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\)*\s*=\([^=]\@=\|$\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition contained 149071d4279SBram Moolenaar sy match cscEq "==" 150071d4279SBram Moolenaarendif 151071d4279SBram Moolenaar 152071d4279SBram Moolenaarif !exists("csc_minlines") 153071d4279SBram Moolenaar let csc_minlines = 50 " mostly for () constructs 154071d4279SBram Moolenaarendif 155071d4279SBram Moolenaarexec "sy sync ccomment cscComment minlines=" . csc_minlines 156071d4279SBram Moolenaar 157071d4279SBram Moolenaar" Define the default highlighting. 15889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 159071d4279SBram Moolenaar 160071d4279SBram Moolenaarhi cscVarName term=bold ctermfg=9 gui=bold guifg=blue 161071d4279SBram Moolenaar 162f37506f6SBram Moolenaarhi def link cscNumber Number 163f37506f6SBram Moolenaarhi def link cscOctal Number 164f37506f6SBram Moolenaarhi def link cscFloat Float 165f37506f6SBram Moolenaarhi def link cscParenE Error 166f37506f6SBram Moolenaarhi def link cscCommentE Error 167f37506f6SBram Moolenaarhi def link cscSpaceE Error 168f37506f6SBram Moolenaarhi def link cscError Error 169f37506f6SBram Moolenaarhi def link cscString String 170f37506f6SBram Moolenaarhi def link cscComment Comment 171f37506f6SBram Moolenaarhi def link cscTodo Todo 172f37506f6SBram Moolenaarhi def link cscStatement Statement 173f37506f6SBram Moolenaarhi def link cscIfError Error 174f37506f6SBram Moolenaarhi def link cscEqError Error 175f37506f6SBram Moolenaarhi def link cscFunction Statement 176f37506f6SBram Moolenaarhi def link cscCondition Statement 177f37506f6SBram Moolenaarhi def link cscWarn WarningMsg 178071d4279SBram Moolenaar 179f37506f6SBram Moolenaarhi def link cscComE Error 180f37506f6SBram Moolenaarhi def link cscCom Statement 181f37506f6SBram Moolenaarhi def link cscComW WarningMsg 182071d4279SBram Moolenaar 183f37506f6SBram Moolenaarhi def link cscBPMacro Identifier 184f37506f6SBram Moolenaarhi def link cscBPW WarningMsg 185071d4279SBram Moolenaar 186071d4279SBram Moolenaar 187071d4279SBram Moolenaarlet b:current_syntax = "csc" 188071d4279SBram Moolenaar 189b6b046b2SBram Moolenaarlet &cpo = s:cpo_save 190b6b046b2SBram Moolenaarunlet s:cpo_save 191071d4279SBram Moolenaar" vim: ts=8 192