| " Vim syntax file |
| " Language: initng .i files |
| " Maintainer: Elan Ruusamäe <glen@pld-linux.org> |
| " URL: http://glen.alkohol.ee/pld/initng/ |
| " License: GPL v2 |
| " Version: 0.13 |
| " Last Change: $Date: 2007/05/05 17:17:40 $ |
| " |
| " Syntax highlighting for initng .i files. Inherits from sh.vim and adds |
| " in the hiliting to start/stop {} blocks. Requires vim 6.3 or later. |
| |
| if &compatible || v:version < 603 |
| finish |
| endif |
| |
| if exists("b:current_syntax") |
| finish |
| endif |
| |
| syn case match |
| |
| let is_bash = 1 |
| unlet! b:current_syntax |
| syn include @shTop syntax/sh.vim |
| |
| syn region initngService matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster |
| syn cluster initngServiceCluster contains=initngComment,initngAction,initngServiceOption,initngServiceHeader,initngDelim,initngVariable |
| |
| syn region initngAction matchgroup=initngActionHeader start="^\s*\(script start\|script stop\|script run\)\s*=\s*{" end="}" contains=@initngActionCluster |
| syn cluster initngActionCluster contains=@shTop |
| |
| syn match initngDelim /[{}]/ contained |
| |
| syn region initngString start=/"/ end=/"/ skip=/\\"/ |
| |
| " option = value |
| syn match initngServiceOption /.\+\s*=.\+;/ contains=initngServiceKeywords,initngSubstMacro contained |
| " option without value |
| syn match initngServiceOption /\w\+;/ contains=initngServiceKeywords,initngSubstMacro contained |
| |
| " options with value |
| syn keyword initngServiceKeywords also_stop need use nice setuid contained |
| syn keyword initngServiceKeywords delay chdir suid sgid start_pause env_file env_parse pid_file pidfile contained |
| syn keyword initngServiceKeywords pid_of up_when_pid_set stdout stderr syncron just_before contained |
| syn keyword initngServiceKeywords provide lockfile daemon_stops_badly contained |
| syn match initngServiceKeywords /\(script\|exec\(_args\)\?\) \(start\|stop\|daemon\)/ contained |
| syn match initngServiceKeywords /env\s\+\w\+/ contained |
| |
| " rlimits |
| syn keyword initngServiceKeywords rlimit_cpu_hard rlimit_core_soft contained |
| |
| " single options |
| syn keyword initngServiceKeywords last respawn network_provider require_network require_file critical forks contained |
| " cron options |
| syn keyword initngServiceKeywords hourly contained |
| syn match initngVariable /\${\?\w\+\}\?/ |
| |
| " Substituted @foo@ macros: |
| " ========== |
| syn match initngSubstMacro /@[^@]\+@/ contained |
| syn cluster initngActionCluster add=initngSubstMacro |
| syn cluster shCommandSubList add=initngSubstMacro |
| |
| " Comments: |
| " ========== |
| syn cluster initngCommentGroup contains=initngTodo,@Spell |
| syn keyword initngTodo TODO FIXME XXX contained |
| syn match initngComment /#.*$/ contains=@initngCommentGroup |
| |
| " install_service #macros |
| " TODO: syntax check for ifd-endd pairs |
| " ========== |
| syn region initngDefine start="^#\(endd\|elsed\|exec\|ifd\|endexec\|endd\)\>" skip="\\$" end="$" end="#"me=s-1 |
| syn cluster shCommentGroup add=initngDefine |
| syn cluster initngCommentGroup add=initngDefine |
| |
| hi def link initngComment Comment |
| hi def link initngTodo Todo |
| |
| hi def link initngString String |
| hi def link initngServiceKeywords Define |
| |
| hi def link initngServiceHeader Keyword |
| hi def link initngActionHeader Type |
| hi def link initngDelim Delimiter |
| |
| hi def link initngVariable PreProc |
| hi def link initngSubstMacro Comment |
| hi def link initngDefine Macro |
| |
| let b:current_syntax = "initng" |