" fix problems with nested comments
try | %s/\*\/\*\//\*\/ \*\//g | catch /^Vim\%((\a\+)\)\=:E/ | endtry
syn clear
syn case ignore
syn keyword keyword not run find format where like put control index field initial no-lock exclusive-lock no-error no-wait by yes no leave view assign create release available delete first return delimiter begins display down with page width no-box no-labels output quit to as view-as alert-box error message import export unformatted from
" this section causes problems with procedure folding and folding of the
" related items
"syn keyword conditional if then else case when next and or
"syn keyword repeat do for each while
syn keyword function locked avail substring trim
" this section causes a problem with the temp-table folding
"syn keyword define contained define def as var variable parameter
"syn match define /^\s*\(def\|define\).*\(temp-table\)\@!/ contains=ALL
syn keyword type int integer char character date logical temp-table shared stream input frame buffer init
syn keyword boolean true false
" we say 'extend' below to make sure that these items don't end the parent
" block; for instance, we don't want a double quoted string containing the
" letters END and a period to actually end a real region
syn region doublestring start=/"/ end=/"/ extend
syn region singlestring start=/'/ end=/'/ extend
syn region form start=/\(\s\|^\)form.*/ end=/\.$\|\.\s/ contains=comment fold
syn region frame start=/\(\s\|^\)\(def\|define\) frame.*/ end=/\.$\|\.\s/ contains=comment fold
syn region temptable start=/\(\s\|^\)\(def\|define\) \(shared \)\=temp-table.*/ end=/\.$\|\.\s/ contains=comment fold
syn region caseregion start=/\(\s\|^\)case[^:.]*:/ end=/\(\s\|^\)end[^.]*\./ contains=ALLBUT,procedure fold keepend extend
syn region doregion start=/\(\s\|^\)do\s*:\|do\s\+\(while\|until\)[^:.]*[:.]/ end=/\(\s\|^\)end[^.]*\./ contains=ALLBUT,procedure fold keepend extend
syn region repeatregion start=/\(\s\|^\)repeat\s*:/ end=/\(\s\|^\)end[^.]*\./ contains=ALLBUT,procedure fold keepend extend
syn region foreachregion start=/\(\s\|^\)for each/ end=/\(\s\|^\)end[^.]*\./ contains=ALLBUT,procedure fold keepend extend
syn region procedure start=/\(\s\|^\)procedure / end=/\(\s\|^\)end[^.]*\./ contains=ALLBUT,procedure fold keepend
" comments work unless a nested comment ends without a space before ending the
" outer comment: example /* test /* nest */*/
syn region comment start=/\/\*/ end=/\*\// contains=comment extend
" use these to help identify syntax bugs...rename the above regions with or
" without a T on the end; then set foldnestmax=20 below
hi caseregionT guifg=black guibg=yellow
hi doregionT guifg=white guibg=blue
hi foreachregionT guifg=white guibg=green
hi procedureT guifg=white guibg=brown
hi link doublestring String
hi link singlestring String
setl fen
setl foldnestmax=1
"setl foldnestmax=20
setl foldlevel=0
setl foldmethod=syntax
syn sync fromstart
" the default progress syntax file is using set expandtab which screws up
" other new buffers
set noexpandtab
setl expandtab