vim-polyglot/syntax/cdl.vim
2017-09-27 20:43:42 +02:00

83 lines
3.1 KiB
VimL

if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
" Vim syntax file
" Language: Comshare Dimension Definition Language
" Maintainer: Raul Segura Acevedo <raulseguraaceved@netscape.net>
" Last change: 2016 Sep 20
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
sy case ignore
sy sync fromstart
sy keyword cdlStatement dimension hierarchy group grouphierarchy schedule class
sy keyword cdlType add update file category main altername removeall required notrequired
sy keyword cdlConditional if then elseif else endif and or not cons rpt xlt
sy keyword cdlFunction ChildOf IChildOf LeafChildOf DescendantOf IDescendantOf LeafDescendantOf MemberIs CountOf
sy keyword cdlIdentifier contained id name desc description xlttype precision symbol curr_ name group_name rate_name
sy keyword cdlIdentifier contained xcheck endbal accounttype natsign consolidate formula pctown usage periodicity
sy match cdlIdentifier contained 'child\s*name'
sy match cdlIdentifier contained 'parent\s*name'
sy match cdlIdentifier contained 'grp\s*description'
sy match cdlIdentifier contained 'grpchild\s*name'
sy match cdlIdentifier contained 'grpparent\s*name'
sy match cdlIdentifier contained 'preceding\s*member'
sy match cdlIdentifier contained 'unit\s*name'
sy match cdlIdentifier contained 'unit\s*id'
sy match cdlIdentifier contained 'schedule\s*name'
sy match cdlIdentifier contained 'schedule\s*id'
sy match cdlString /\[[^]]*]/ contains=cdlRestricted,cdlNotSupported
sy match cdlRestricted contained /[&*,_]/
" not supported
sy match cdlNotSupported contained /[:"!']/
sy keyword cdlTodo contained TODO FIXME XXX
sy cluster cdlCommentGroup contains=cdlTodo
sy match cdlComment '//.*' contains=@cdlCommentGroup
sy region cdlComment start="/\*" end="\*/" contains=@cdlCommentGroup fold
sy match cdlCommentE "\*/"
sy region cdlParen transparent start='(' end=')' contains=ALLBUT,cdlParenE,cdlRestricted,cdlNotSupported
"sy region cdlParen transparent start='(' end=')' contains=cdlIdentifier,cdlComment,cdlParenWordE
sy match cdlParenE ")"
"sy match cdlParenWordE contained "\k\+"
sy keyword cdlFxType allocation downfoot expr xltgain
"sy keyword cdlFxType contained allocation downfoot expr xltgain
"sy region cdlFx transparent start='\k\+(' end=')' contains=cdlConditional,cdlFunction,cdlString,cdlComment,cdlFxType
set foldmethod=expr
set foldexpr=(getline(v:lnum+1)=~'{'\|\|getline(v:lnum)=~'//\\s\\*\\{5}.*table')?'>1':1
%foldo!
set foldmethod=manual
let b:match_words='\<if\>:\<then\>:\<elseif\>:\<else\>:\<endif\>'
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
hi def link cdlStatement Statement
hi def link cdlType Type
hi def link cdlFxType Type
hi def link cdlIdentifier Identifier
hi def link cdlString String
hi def link cdlRestricted WarningMsg
hi def link cdlNotSupported ErrorMsg
hi def link cdlTodo Todo
hi def link cdlComment Comment
hi def link cdlCommentE ErrorMsg
hi def link cdlParenE ErrorMsg
hi def link cdlParenWordE ErrorMsg
hi def link cdlFunction Function
hi def link cdlConditional Conditional
let b:current_syntax = "cdl"
" vim: ts=8
endif