1" Vim syntax file 2" Language: initng .i files 3" Maintainer: Elan Ruusamäe <glen@pld-linux.org> 4" URL: http://glen.alkohol.ee/pld/initng/ 5" License: GPL v2 6" Version: 0.13 7" Last Change: $Date: 2007/05/05 17:17:40 $ 8" 9" Syntax highlighting for initng .i files. Inherits from sh.vim and adds 10" in the hiliting to start/stop {} blocks. Requires vim 6.3 or later. 11 12if &compatible || v:version < 603 13 finish 14endif 15 16if exists("b:current_syntax") 17 finish 18endif 19 20syn case match 21 22let is_bash = 1 23unlet! b:current_syntax 24syn include @shTop syntax/sh.vim 25 26syn region initngService matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster 27syn cluster initngServiceCluster contains=initngComment,initngAction,initngServiceOption,initngServiceHeader,initngDelim,initngVariable 28 29syn region initngAction matchgroup=initngActionHeader start="^\s*\(script start\|script stop\|script run\)\s*=\s*{" end="}" contains=@initngActionCluster 30syn cluster initngActionCluster contains=@shTop 31 32syn match initngDelim /[{}]/ contained 33 34syn region initngString start=/"/ end=/"/ skip=/\\"/ 35 36" option = value 37syn match initngServiceOption /.\+\s*=.\+;/ contains=initngServiceKeywords,initngSubstMacro contained 38" option without value 39syn match initngServiceOption /\w\+;/ contains=initngServiceKeywords,initngSubstMacro contained 40 41" options with value 42syn keyword initngServiceKeywords also_stop need use nice setuid contained 43syn keyword initngServiceKeywords delay chdir suid sgid start_pause env_file env_parse pid_file pidfile contained 44syn keyword initngServiceKeywords pid_of up_when_pid_set stdout stderr syncron just_before contained 45syn keyword initngServiceKeywords provide lockfile daemon_stops_badly contained 46syn match initngServiceKeywords /\(script\|exec\(_args\)\?\) \(start\|stop\|daemon\)/ contained 47syn match initngServiceKeywords /env\s\+\w\+/ contained 48 49" rlimits 50syn keyword initngServiceKeywords rlimit_cpu_hard rlimit_core_soft contained 51 52" single options 53syn keyword initngServiceKeywords last respawn network_provider require_network require_file critical forks contained 54" cron options 55syn keyword initngServiceKeywords hourly contained 56syn match initngVariable /\${\?\w\+\}\?/ 57 58" Substituted @foo@ macros: 59" ========== 60syn match initngSubstMacro /@[^@]\+@/ contained 61syn cluster initngActionCluster add=initngSubstMacro 62syn cluster shCommandSubList add=initngSubstMacro 63 64" Comments: 65" ========== 66syn cluster initngCommentGroup contains=initngTodo,@Spell 67syn keyword initngTodo TODO FIXME XXX contained 68syn match initngComment /#.*$/ contains=@initngCommentGroup 69 70" install_service #macros 71" TODO: syntax check for ifd-endd pairs 72" ========== 73syn region initngDefine start="^#\(endd\|elsed\|exec\|ifd\|endexec\|endd\)\>" skip="\\$" end="$" end="#"me=s-1 74syn cluster shCommentGroup add=initngDefine 75syn cluster initngCommentGroup add=initngDefine 76 77hi def link initngComment Comment 78hi def link initngTodo Todo 79 80hi def link initngString String 81hi def link initngServiceKeywords Define 82 83hi def link initngServiceHeader Keyword 84hi def link initngActionHeader Type 85hi def link initngDelim Delimiter 86 87hi def link initngVariable PreProc 88hi def link initngSubstMacro Comment 89hi def link initngDefine Macro 90 91let b:current_syntax = "initng" 92