30967
|
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
|