xref: /vim-8.2.3635/runtime/syntax/csc.vim (revision 6c391a74)
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