openvpn.vim (2306B)
1 " Vim syntax file 2 " Language: OpenVPN 3 " Maintainer: ObserverOfTime <chronobserver@disroot.org> 4 " Filenames: *.ovpn 5 " Last Change: 2022 Oct 16 6 7 if exists('b:current_syntax') 8 finish 9 endif 10 11 let s:cpo_save = &cpoptions 12 set cpoptions&vim 13 14 " Options 15 syntax match openvpnOption /^[a-z-]\+/ 16 \ skipwhite nextgroup=openvpnArgList 17 syntax match openvpnArgList /.*$/ transparent contained 18 \ contains=openvpnArgument,openvpnNumber, 19 \ openvpnIPv4Address,openvpnIPv6Address, 20 \ openvpnSignal,openvpnComment 21 22 " Arguments 23 syntax match openvpnArgument /[^\\"' \t]\+/ 24 \ contained contains=openvpnEscape 25 syntax region openvpnArgument matchgroup=openvpnQuote 26 \ start=/"/ skip=/\\"/ end=/"/ 27 \ oneline contained contains=openvpnEscape 28 syntax region openvpnArgument matchgroup=openvpnQuote 29 \ start=/'/ skip=/\\'/ end=/'/ 30 \ oneline contained 31 syntax match openvpnEscape /\\[\\" \t]/ contained 32 33 " Numbers 34 syntax match openvpnNumber /\<[1-9][0-9]*\(\.[0-9]\+\)\?\>/ contained 35 36 " Signals 37 syntax match openvpnSignal /SIG\(HUP\|INT\|TERM\|USER[12]\)/ contained 38 39 " IP addresses 40 syntax match openvpnIPv4Address /\(\d\{1,3}\.\)\{3}\d\{1,3}/ 41 \ contained nextgroup=openvpnSlash 42 syntax match openvpnIPv6Address /\([A-F0-9]\{1,4}:\)\{7}\[A-F0-9]\{1,4}/ 43 \ contained nextgroup=openvpnSlash 44 syntax match openvpnSlash "/" contained 45 \ nextgroup=openvpnIPv4Address,openvpnIPv6Address,openvpnNumber 46 47 " Inline files 48 syntax region openvpnInline matchgroup=openvpnTag 49 \ start=+^<\z([a-z-]\+\)>+ end=+^</\z1>+ 50 51 " Comments 52 syntax keyword openvpnTodo contained TODO FIXME NOTE XXX 53 syntax match openvpnComment /^[;#].*$/ contains=openvpnTodo 54 syntax match openvpnComment /\s\+\zs[;#].*$/ contains=openvpnTodo 55 56 hi def link openvpnArgument String 57 hi def link openvpnComment Comment 58 hi def link openvpnEscape SpecialChar 59 hi def link openvpnIPv4Address Constant 60 hi def link openvpnIPv6Address Constant 61 hi def link openvpnNumber Number 62 hi def link openvpnOption Keyword 63 hi def link openvpnQuote Quote 64 hi def link openvpnSignal Special 65 hi def link openvpnSlash Delimiter 66 hi def link openvpnTag Tag 67 hi def link openvpnTodo Todo 68 69 let b:current_syntax = 'openvpn' 70 71 let &cpoptions = s:cpo_save 72 unlet s:cpo_save