2 " Language: Essbase script
3 " Maintainer: Raul Segura Acevedo <raul@turing.iquimica.unam.mx>
4 " Last change: 2001 May 21
6 " For version 5.x: Clear all syntax items
7 " For version 6.x: Quit when a syntax file was already loaded
10 elseif exists("b:current_syntax")
14 " folds: fix/endfix and comments
15 sy region EssFold start="\<Fix" end="EndFix" transparent fold
17 sy keyword cscTodo contained TODO FIXME XXX
19 " cscCommentGroup allows adding matches for special things in comments
20 sy cluster cscCommentGroup contains=cscTodo
24 sy match cscString '"[^"]*"'
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\+$"
31 if !exists("csc_no_tab_space_error")
32 sy match cscSpaceE " \+\t"me=e-1
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 ")"
41 "integer number, or floating point number without a dot and with "f".
43 sy match cscNumbers transparent "\<\d\|\.\d" contains=cscNumber,cscFloat,cscOctal
44 sy match cscNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
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]\=\>"
57 sy region cscComment start="/\*" end="\*/" contains=@cscCommentGroup,cscSpaceE fold
58 sy match cscCommentE "\*/"
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
95 sy match cscStatement "&"
96 sy keyword cscStatement AGG ARRAY VAR CCONV CLEARDATA DATACOPY
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
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"
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"
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"
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
144 " when wanted, highlighting lhs members or erros in asignments (may lag the editing)
145 if version >= 600 && 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
152 if !exists("csc_minlines")
153 let csc_minlines = 50 " mostly for () constructs
155 exec "sy sync ccomment cscComment minlines=" . csc_minlines
157 " Define the default highlighting.
158 " For version 5.7 and earlier: only when not done already
159 " For version 5.8 and later: only when an item doesn't have highlighting yet
160 if version >= 508 || !exists("did_csc_syntax_inits")
162 let did_csc_syntax_inits = 1
163 command -nargs=+ HiLink hi link <args>
165 command -nargs=+ HiLink hi def link <args>
168 hi cscVarName term=bold ctermfg=9 gui=bold guifg=blue
170 HiLink cscNumber Number
171 HiLink cscOctal Number
172 HiLink cscFloat Float
173 HiLink cscParenE Error
174 HiLink cscCommentE Error
175 HiLink cscSpaceE Error
176 HiLink cscError Error
177 HiLink cscString String
178 HiLink cscComment Comment
180 HiLink cscStatement Statement
181 HiLink cscIfError Error
182 HiLink cscEqError Error
183 HiLink cscFunction Statement
184 HiLink cscCondition Statement
185 HiLink cscWarn WarningMsg
188 HiLink cscCom Statement
189 HiLink cscComW WarningMsg
191 HiLink cscBPMacro Identifier
192 HiLink cscBPW WarningMsg
197 let b:current_syntax = "csc"