" Maintainer: Andrew McGill andrewm at lunch.za.net
" Last Change: Apr 06, 2007
" Version: 1
" URL: http://lunch.za.net/
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
syn case match
" set iskeyword=48-57,_,a-z,A-Z
syn match voscmStatement "^!"
syn match voscmStatement "&\(label\|begin_parameters\|end_parameters\|goto\|attach_input\|break\|continue\|control\|detach_input\|display_line\|display_line_partial\|echo\|eof\|eval\|if\|mode\|return\|while\|set\|set_string\|then\|else\|do\|done\|end\)\>"
syn match voscmJump "\(&label\|&goto\) *" nextgroup=voscmLabelId
syn match voscmLabelId contained "\<[A-Za-z][A-Z_a-z0-9]* *$"
syn match voscmSetvar "\(&set_string\|&set\) *" nextgroup=voscmVariable
syn match voscmError "\(&set_string\|&set\) *&"
syn match voscmVariable contained "\<[A-Za-z][A-Z_a-z0-9]\+\>"
syn keyword voscmParamKeyword contained number req string switch allow byte disable_input hidden length longword max min no_abbrev output_path req required req_for_form word
syn region voscmParamList matchgroup=voscmParam start="&begin_parameters" end="&end_parameters" contains=voscmParamKeyword,voscmString,voscmParamName,voscmParamId
syn match voscmParamName contained "\(^\s*[A-Za-z_0-9]\+\s\+\)\@<=\k\+"
syn match voscmParamId contained "\(^\s*\)\@<=\k\+"
syn region par1 matchgroup=par1 start=/(/ end=/)/ contains=voscmFunction,voscmIdentifier,voscmString transparent
" FIXME: functions should only be allowed after a bracket ... ie (ask ...):
syn keyword voscmFunction contained abs access after ask before break byte calc ceil command_status concat
syn keyword voscmFunction contained contents path_name copy count current_dir current_module date date_time
syn keyword voscmFunction contained decimal directory_name end_of_file exists file_info floor given group_name
syn keyword voscmFunction contained has_access hexadecimal home_dir index iso_date iso_date_time language_name
syn keyword voscmFunction contained length lock_type locked ltrim master_disk max message min mod module_info