neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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