csc.vim (8451B)
1 " Vim syntax file 2 " Language: Essbase script 3 " Maintainer: Raul Segura Acevedo <raulseguraaceved@netscape.net> 4 " Last change: 2011 Dec 25 by Thilo Six 5 6 " quit when a syntax file was already loaded 7 if exists("b:current_syntax") 8 finish 9 endif 10 11 let s:cpo_save = &cpo 12 set cpo&vim 13 14 " folds: fix/endfix and comments 15 sy region EssFold start="\<Fix" end="EndFix" transparent fold 16 17 sy keyword cscTodo contained TODO FIXME XXX 18 19 " cscCommentGroup allows adding matches for special things in comments 20 sy cluster cscCommentGroup contains=cscTodo 21 22 " Strings in quotes 23 sy match cscError '"' 24 sy match cscString '"[^"]*"' 25 26 "when wanted, highlight trailing white space 27 if exists("csc_space_errors") 28 if !exists("csc_no_trail_space_error") 29 sy match cscSpaceE "\s\+$" 30 endif 31 if !exists("csc_no_tab_space_error") 32 sy match cscSpaceE " \+\t"me=e-1 33 endif 34 endif 35 36 "catch errors caused by wrong parenthesis and brackets 37 sy cluster cscParenGroup contains=cscParenE,@cscCommentGroup,cscUserCont,cscBitField,cscFormat,cscNumber,cscFloat,cscOctal,cscNumbers,cscIfError,cscComW,cscCom,cscFormula,cscBPMacro 38 sy region cscParen transparent start='(' end=')' contains=ALLBUT,@cscParenGroup 39 sy match cscParenE ")" 40 41 "integer number, or floating point number without a dot and with "f". 42 sy case ignore 43 sy match cscNumbers transparent "\<\d\|\.\d" contains=cscNumber,cscFloat,cscOctal 44 sy match cscNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" 45 "hex number 46 sy match cscNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" 47 " Flag the first zero of an octal number as something special 48 sy match cscOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" 49 sy match cscFloat contained "\d\+f" 50 "floating point number, with dot, optional exponent 51 sy match cscFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" 52 "floating point number, starting with a dot, optional exponent 53 sy match cscFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 54 "floating point number, without dot, with exponent 55 sy match cscFloat contained "\d\+e[-+]\=\d\+[fl]\=\>" 56 57 sy region cscComment start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold 58 sy match cscCommentE "\*/" 59 60 sy keyword cscIfError IF ELSE ENDIF ELSEIF 61 sy keyword cscCondition contained IF ELSE ENDIF ELSEIF 62 sy keyword cscFunction contained VARPER VAR UDA TRUNCATE SYD SUMRANGE SUM 63 sy keyword cscFunction contained STDDEVRANGE STDDEV SPARENTVAL SLN SIBLINGS SHIFT 64 sy keyword cscFunction contained SANCESTVAL RSIBLINGS ROUND REMAINDER RELATIVE PTD 65 sy keyword cscFunction contained PRIOR POWER PARENTVAL NPV NEXT MOD MINRANGE MIN 66 sy keyword cscFunction contained MDSHIFT MDPARENTVAL MDANCESTVAL MAXRANGE MAX MATCH 67 sy keyword cscFunction contained LSIBLINGS LEVMBRS LEV 68 sy keyword cscFunction contained ISUDA ISSIBLING ISSAMELEV ISSAMEGEN ISPARENT ISMBR 69 sy keyword cscFunction contained ISLEV ISISIBLING ISIPARENT ISIDESC ISICHILD ISIBLINGS 70 sy keyword cscFunction contained ISIANCEST ISGEN ISDESC ISCHILD ISANCEST ISACCTYPE 71 sy keyword cscFunction contained IRSIBLINGS IRR INTEREST INT ILSIBLINGS IDESCENDANTS 72 sy keyword cscFunction contained ICHILDREN IANCESTORS IALLANCESTORS 73 sy keyword cscFunction contained GROWTH GENMBRS GEN FACTORIAL DISCOUNT DESCENDANTS 74 sy keyword cscFunction contained DECLINE CHILDREN CURRMBRRANGE CURLEV CURGEN 75 sy keyword cscFunction contained COMPOUNDGROWTH COMPOUND AVGRANGE AVG ANCESTVAL 76 sy keyword cscFunction contained ANCESTORS ALLANCESTORS ACCUM ABS 77 sy keyword cscFunction contained @VARPER @VAR @UDA @TRUNCATE @SYD @SUMRANGE @SUM 78 sy keyword cscFunction contained @STDDEVRANGE @STDDEV @SPARENTVAL @SLN @SIBLINGS @SHIFT 79 sy keyword cscFunction contained @SANCESTVAL @RSIBLINGS @ROUND @REMAINDER @RELATIVE @PTD 80 sy keyword cscFunction contained @PRIOR @POWER @PARENTVAL @NPV @NEXT @MOD @MINRANGE @MIN 81 sy keyword cscFunction contained @MDSHIFT @MDPARENTVAL @MDANCESTVAL @MAXRANGE @MAX @MATCH 82 sy keyword cscFunction contained @LSIBLINGS @LEVMBRS @LEV 83 sy keyword cscFunction contained @ISUDA @ISSIBLING @ISSAMELEV @ISSAMEGEN @ISPARENT @ISMBR 84 sy keyword cscFunction contained @ISLEV @ISISIBLING @ISIPARENT @ISIDESC @ISICHILD @ISIBLINGS 85 sy keyword cscFunction contained @ISIANCEST @ISGEN @ISDESC @ISCHILD @ISANCEST @ISACCTYPE 86 sy keyword cscFunction contained @IRSIBLINGS @IRR @INTEREST @INT @ILSIBLINGS @IDESCENDANTS 87 sy keyword cscFunction contained @ICHILDREN @IANCESTORS @IALLANCESTORS 88 sy keyword cscFunction contained @GROWTH @GENMBRS @GEN @FACTORIAL @DISCOUNT @DESCENDANTS 89 sy keyword cscFunction contained @DECLINE @CHILDREN @CURRMBRRANGE @CURLEV @CURGEN 90 sy keyword cscFunction contained @COMPOUNDGROWTH @COMPOUND @AVGRANGE @AVG @ANCESTVAL 91 sy keyword cscFunction contained @ANCESTORS @ALLANCESTORS @ACCUM @ABS 92 sy match cscFunction contained "@" 93 sy match cscError "@\s*\a*" contains=cscFunction 94 95 sy match cscStatement "&" 96 sy keyword cscStatement AGG ARRAY VAR CCONV CLEARDATA DATACOPY 97 98 sy match cscComE contained "^\s*CALC.*" 99 sy match cscComE contained "^\s*CLEARBLOCK.*" 100 sy match cscComE contained "^\s*SET.*" 101 sy match cscComE contained "^\s*FIX" 102 sy match cscComE contained "^\s*ENDFIX" 103 sy match cscComE contained "^\s*ENDLOOP" 104 sy match cscComE contained "^\s*LOOP" 105 " sy keyword cscCom FIX ENDFIX LOOP ENDLOOP 106 107 sy match cscComW "^\s*CALC.*" 108 sy match cscCom "^\s*CALC\s*ALL" 109 sy match cscCom "^\s*CALC\s*AVERAGE" 110 sy match cscCom "^\s*CALC\s*DIM" 111 sy match cscCom "^\s*CALC\s*FIRST" 112 sy match cscCom "^\s*CALC\s*LAST" 113 sy match cscCom "^\s*CALC\s*TWOPASS" 114 115 sy match cscComW "^\s*CLEARBLOCK.*" 116 sy match cscCom "^\s*CLEARBLOCK\s\+ALL" 117 sy match cscCom "^\s*CLEARBLOCK\s\+UPPER" 118 sy match cscCom "^\s*CLEARBLOCK\s\+NONINPUT" 119 120 sy match cscComW "^\s*\<SET.*" 121 sy match cscCom "^\s*\<SET\s\+Commands" 122 sy match cscCom "^\s*\<SET\s\+AGGMISSG" 123 sy match cscCom "^\s*\<SET\s\+CACHE" 124 sy match cscCom "^\s*\<SET\s\+CALCHASHTBL" 125 sy match cscCom "^\s*\<SET\s\+CLEARUPDATESTATUS" 126 sy match cscCom "^\s*\<SET\s\+FRMLBOTTOMUP" 127 sy match cscCom "^\s*\<SET\s\+LOCKBLOCK" 128 sy match cscCom "^\s*\<SET\s\+MSG" 129 sy match cscCom "^\s*\<SET\s\+NOTICE" 130 sy match cscCom "^\s*\<SET\s\+UPDATECALC" 131 sy match cscCom "^\s*\<SET\s\+UPTOLOCAL" 132 133 sy keyword cscBPMacro contained !LoopOnAll !LoopOnLevel !LoopOnSelected 134 sy keyword cscBPMacro contained !CurrentMember !LoopOnDimensions !CurrentDimension 135 sy keyword cscBPMacro contained !CurrentOtherLoopDimension !LoopOnOtherLoopDimensions 136 sy keyword cscBPMacro contained !EndLoop !AllMembers !SelectedMembers !If !Else !EndIf 137 sy keyword cscBPMacro contained LoopOnAll LoopOnLevel LoopOnSelected 138 sy keyword cscBPMacro contained CurrentMember LoopOnDimensions CurrentDimension 139 sy keyword cscBPMacro contained CurrentOtherLoopDimension LoopOnOtherLoopDimensions 140 sy keyword cscBPMacro contained EndLoop AllMembers SelectedMembers If Else EndIf 141 sy match cscBPMacro contained "!" 142 sy match cscBPW "!\s*\a*" contains=cscBPmacro 143 144 " when wanted, highlighting lhs members or errors in assignments (may lag the editing) 145 if exists("csc_asignment") 146 sy match cscEqError '\("[^"]*"\s*\|[^][\t !%()*+,--/:;<=>{}~]\+\s*\|->\s*\)*=\([^=]\@=\|$\)' 147 sy region cscFormula transparent matchgroup=cscVarName start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\s*=\([^=]\@=\|\n\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition 148 sy region cscFormulaIn matchgroup=cscVarName transparent start='\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\(->\("[^"]*"\|[^][\t !%()*+,--/:;<=>{}~]\+\)\)*\s*=\([^=]\@=\|$\)' skip='"[^"]*"' end=';' contains=ALLBUT,cscFormula,cscFormulaIn,cscBPMacro,cscCondition contained 149 sy match cscEq "==" 150 endif 151 152 if !exists("csc_minlines") 153 let csc_minlines = 50 " mostly for () constructs 154 endif 155 exec "sy sync ccomment cscComment minlines=" . csc_minlines 156 157 " Define the default highlighting. 158 " Only when an item doesn't have highlighting yet 159 160 hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue 161 162 hi def link cscNumber Number 163 hi def link cscOctal Number 164 hi def link cscFloat Float 165 hi def link cscParenE Error 166 hi def link cscCommentE Error 167 hi def link cscSpaceE Error 168 hi def link cscError Error 169 hi def link cscString String 170 hi def link cscComment Comment 171 hi def link cscTodo Todo 172 hi def link cscStatement Statement 173 hi def link cscIfError Error 174 hi def link cscEqError Error 175 hi def link cscFunction Statement 176 hi def link cscCondition Statement 177 hi def link cscWarn WarningMsg 178 179 hi def link cscComE Error 180 hi def link cscCom Statement 181 hi def link cscComW WarningMsg 182 183 hi def link cscBPMacro Identifier 184 hi def link cscBPW WarningMsg 185 186 187 let b:current_syntax = "csc" 188 189 let &cpo = s:cpo_save 190 unlet s:cpo_save 191 " vim: ts=8