Added OpenVPN syntax highlighting plugin
parent
d7283200d2
commit
b5206063de
|
@ -0,0 +1,262 @@
|
|||
"============================================================================
|
||||
"
|
||||
" OpenVPN configuration syntax file
|
||||
"
|
||||
" Language: OpenVPN Configuration File
|
||||
" Version: 1.10
|
||||
" Date: 27-Mar-2010
|
||||
" Maintainer: Eric Haarbauer <ehaar{DOT}com{AT}grithix{DOT}dyndns{DOT}org>
|
||||
" License: This file is placed in the public domain.
|
||||
"
|
||||
"============================================================================
|
||||
" Section: Notes {{{1
|
||||
"============================================================================
|
||||
"
|
||||
" This vim syntax script highlights configuration files used with James
|
||||
" Yonan's OpenVPN application (http://openvpn.net).
|
||||
"
|
||||
" Features:
|
||||
"
|
||||
" * Highlights options, comment lines, and arguments
|
||||
" * Recognizes quoted strings and escaped characters (e.g. \\, \")
|
||||
" * Flags arguments given for options that take no arguments
|
||||
" * Special highlighting for route and server command arguments
|
||||
"
|
||||
" Reporting Issues:
|
||||
"
|
||||
" If you discover an OpenVPN file that this script highlights incorrectly,
|
||||
" please email the author (address at the top of the file) with the
|
||||
" following information:
|
||||
"
|
||||
" * Problem OpenVPN file WITH ANY SENSITIVE INFORMATION REMOVED
|
||||
" * The release version of this script (see top of the file)
|
||||
" * If possible, a patch to fix the problem
|
||||
"
|
||||
" Design Notes:
|
||||
"
|
||||
" Part of this script is autogenerated from the output of openvpn --help.
|
||||
" The source code for generating the script is available from the author on
|
||||
" request (see email address at the top of the script). The script should
|
||||
" build from source on most Linux systems with openvpn installed.
|
||||
"
|
||||
" The build system that generates this script strips special CVS tokens
|
||||
" (like "Id:") so that CVS no longer recognizes them. This allows users to
|
||||
" place this script in their own version control system without losing
|
||||
" information. The author encourages other vim script developers to adopt a
|
||||
" similar approach in their own scripts.
|
||||
"
|
||||
" Installation:
|
||||
"
|
||||
" Put this file in your user runtime syntax directory, usually ~/.vim/syntax
|
||||
" in *NIX or C:\Program Files\vim\vimfiles\syntax in Windows. (Type "h
|
||||
" syn-files" from within vim for more information.)
|
||||
"
|
||||
" Setting up automatic filetype definition requires some knowledge about
|
||||
" your system. The OpenVPN application itself does not require a naming
|
||||
" standard for configuration files, although most distribution packages use
|
||||
" a .conf suffix. However, the .conf suffix is also used by many other
|
||||
" applications with different syntaxes, so one cannot determine filetype by
|
||||
" filename alone.
|
||||
"
|
||||
" One way to overcome this ambiguity is to incorporate the directory name
|
||||
" into the recognition process. For example, adding the following lines to
|
||||
" the filetype.vim file in the user runtime directory should work for many
|
||||
" *NIX systems:
|
||||
"
|
||||
" au BufNewFile,BufRead *openvpn*/*.conf setfiletype openvpn |
|
||||
" \ set commentstring=#%s
|
||||
"
|
||||
" On the Fedora Core Linux distribution, this technique recognizes
|
||||
" configuration files in /etc/openvpn and
|
||||
" /usr/share/doc/openvpn-X.X.X/sample-config-files. Setting the
|
||||
" commentstring option in the second line allows Meikel Brandmeyer's
|
||||
" EnhancedCommentify script (vimscript #23) to work with openvpn files.
|
||||
" (Advanced users may want to set the commentstring option in an ftplugin
|
||||
" file or in autocommands defined in .vimrc.)
|
||||
"
|
||||
" If filename- and directory-based recognition is impractical, the easiest
|
||||
" alternative is to embed the following modeline in your OpenVPN
|
||||
" configuration files:
|
||||
"
|
||||
" # vim:ft=openvpn:
|
||||
"
|
||||
"============================================================================
|
||||
" Source File: Id: openvpn.src.vim 71 2007-04-12 11:41:00Z ehaar
|
||||
"============================================================================
|
||||
" Section: Initialization {{{1
|
||||
"============================================================================
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: Quit when a syntax file was already loaded
|
||||
if !exists("main_syntax")
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let main_syntax = 'openvpn'
|
||||
endif
|
||||
|
||||
" Don't use standard HiLink, it will not work with included syntax files
|
||||
if version < 508
|
||||
command! -nargs=+ OpenvpnHiLink highlight link <args>
|
||||
else
|
||||
command! -nargs=+ OpenvpnHiLink highlight default link <args>
|
||||
endif
|
||||
|
||||
if version < 600
|
||||
set iskeyword+=-
|
||||
else
|
||||
setlocal iskeyword+=-
|
||||
endif
|
||||
|
||||
syntax case match
|
||||
|
||||
"============================================================================
|
||||
" Section: Group Definitions {{{1
|
||||
"============================================================================
|
||||
|
||||
syntax region openvpnNoArgLine start=" " end="$" contained transparent
|
||||
\ contains=openvpnExtraneousArg
|
||||
syntax region openvpnArgLine start=" " end="$" contained transparent
|
||||
\ contains=openvpnDevice,openvpnNumber,openvpnSpecial,openvpnQuote
|
||||
|
||||
syntax match openvpnNumber "\<[.0-9]\+\>" contained
|
||||
syntax match openvpnDevice "\<\(tun\|tap\|null\)\d*\>" contained
|
||||
|
||||
syntax region openvpnQuote start=+"+ skip=+\\\\\\|\\"+ end=+"+
|
||||
\ contained contains=openvpnSpecial
|
||||
|
||||
syntax match openvpnSpecial +\\[ "\\]+ contained
|
||||
syntax match openvpnExtraneousArg "\S\+\p*" contained
|
||||
|
||||
" The openvpn man page specifies that the comment character must be in the
|
||||
" first column; however, some config files provided in the distribution have
|
||||
" comment characters after options. This file follows the spec rather than
|
||||
" the examples.
|
||||
syntax match openvpnComment "^[;#].*" contains=openvpnTodo
|
||||
syntax keyword openvpnTodo contained TODO FIXME XXX NOT NOTE
|
||||
|
||||
" IP patterns for use in special options
|
||||
syntax match openvpnAddress "\<\d\+\.\d\+\.\d\+\.\d\+\>" contained
|
||||
syntax match openvpnMaskAddress "\<\d\+\.\d\+\.\d\+\.\d\+\>" contained
|
||||
|
||||
" route option {{{2
|
||||
|
||||
syntax match openvpnOption "^route\s\+" nextgroup=openvpnRouteNetwork
|
||||
|
||||
syntax match openvpnRouteNetwork "\S\+" nextgroup=openvpnRouteMask
|
||||
\ contained skipwhite contains=openvpnAddress,openvpnRouteAddress
|
||||
|
||||
syntax match openvpnRouteMask "\S\+" nextgroup=openvpnRouteGateway
|
||||
\ contained skipwhite contains=openvpnMaskAddress
|
||||
|
||||
syntax match openvpnRouteGateway "\S\+" nextgroup=openvpnRouteMetric
|
||||
\ contained skipwhite contains=openvpnAddress,openvpnRouteAddress
|
||||
|
||||
syntax match openvpnRouteMetric "\d\+" contained
|
||||
\ skipwhite nextgroup=openvpnExtraneousArg
|
||||
|
||||
syntax keyword openvpnRouteAddress
|
||||
\ default vpn_gateway net_gateway remote_host
|
||||
\ contained
|
||||
|
||||
" server option {{{2
|
||||
|
||||
syntax match openvpnOption "^server\s\+" nextgroup=openvpnServerNetwork
|
||||
|
||||
syntax match openvpnServerNetwork "\S\+" nextgroup=openvpnServerMask
|
||||
\ contained skipwhite contains=openvpnAddress
|
||||
|
||||
syntax match openvpnServerMask "\S\+" nextgroup=openvpnExtraneousArg
|
||||
\ contained skipwhite contains=openvpnMaskAddress
|
||||
|
||||
"============================================================================
|
||||
" Section: Autogenerated Groups {{{2
|
||||
"============================================================================
|
||||
|
||||
" Begin autogenerated section.
|
||||
" openvpn: "OpenVPN 2.1.1 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 5 2010"
|
||||
" openvpn2vim: "openvpn2vim 73 2008-07-13 02:10:18Z ehaar"
|
||||
|
||||
syntax keyword openvpnOption
|
||||
\ username-as-common-name up-restart up-delay tun-ipv6 tls-server
|
||||
\ tls-exit tls-client test-crypto tcp-nodelay suppress-timestamps
|
||||
\ socks-proxy-retry single-session show-tls show-engines show-digests
|
||||
\ show-ciphers route-nopull route-noexec rmtun remote-random-hostname
|
||||
\ remote-random push-reset pull pkcs11-id-management ping-timer-rem
|
||||
\ persist-tun persist-remote-ip persist-local-ip persist-key passtos
|
||||
\ opt-verify nobind no-replay no-name-remapping no-iv
|
||||
\ mute-replay-warnings multihome mtu-test mlock mktun management-signal
|
||||
\ management-query-passwords management-hold
|
||||
\ management-forget-disconnect management-client-pf
|
||||
\ management-client-auth management-client ifconfig-pool-linear
|
||||
\ ifconfig-nowarn ifconfig-noexec http-proxy-retry genkey float fast-io
|
||||
\ duplicate-cn down-pre disable-occ disable comp-noadapt comp-lzo
|
||||
\ client-to-client client-cert-not-required client ccd-exclusive bind
|
||||
\ auto-proxy auth-user-pass-optional auth-nocache allow-pull-fqdn
|
||||
\ nextgroup=openvpnNoArgLine
|
||||
|
||||
syntax keyword openvpnOption
|
||||
\ writepid verb user up txqueuelen tun-mtu-extra tun-mtu tran-window
|
||||
\ topology tmp-dir tls-verify tls-timeout tls-remote tls-cipher tls-auth
|
||||
\ tcp-queue-limit syslog status-version status socks-proxy sndbuf
|
||||
\ show-pkcs11-ids shaper setenv setcon server-poll-timeout server-bridge
|
||||
\ secret script-security rport route-up route-metric route-gateway
|
||||
\ route-delay resolv-retry replay-window replay-persist reneg-sec
|
||||
\ reneg-pkts reneg-bytes remote-cert-tls remote-cert-ku remote-cert-eku
|
||||
\ remote remap-usr1 redirect-private redirect-gateway rcvbuf push proto
|
||||
\ prng port-share port plugin pkcs12 pkcs11-providers
|
||||
\ pkcs11-protected-authentication pkcs11-private-mode pkcs11-pin-cache
|
||||
\ pkcs11-id pkcs11-cert-private ping-restart ping-exit ping ns-cert-type
|
||||
\ nice mute mtu-disc mssfix mode max-routes-per-client max-routes
|
||||
\ max-clients management-log-cache management-client-user
|
||||
\ management-client-group management lport log-append log local lladdr
|
||||
\ link-mtu learn-address keysize key-method key keepalive iroute iproute
|
||||
\ ipchange inetd inactive ifconfig-push ifconfig-pool-persist
|
||||
\ ifconfig-pool ifconfig http-proxy-timeout http-proxy-option http-proxy
|
||||
\ hash-size hand-window group gremlin fragment explicit-exit-notify
|
||||
\ engine echo down dh dev-type dev-node dev daemon crl-verify
|
||||
\ connect-timeout connect-retry-max connect-retry connect-freq
|
||||
\ client-disconnect client-connect client-config-dir cipher chroot cert
|
||||
\ cd capath ca bcast-buffers auth-user-pass-verify auth-user-pass
|
||||
\ auth-retry auth askpass
|
||||
\ nextgroup=openvpnArgLine
|
||||
|
||||
" End autogenerated section.
|
||||
|
||||
"============================================================================
|
||||
" Section: Group Linking {{{1
|
||||
"============================================================================
|
||||
|
||||
OpenvpnHiLink openvpnOption Keyword
|
||||
OpenvpnHiLink openvpnComment Comment
|
||||
OpenvpnHiLink openvpnQuote String
|
||||
|
||||
OpenvpnHiLink openvpnDevice Identifier
|
||||
OpenvpnHiLink openvpnNumber Number
|
||||
|
||||
OpenvpnHiLink openvpnAddress Constant
|
||||
OpenvpnHiLink openvpnMaskAddress Special
|
||||
|
||||
OpenvpnHiLink openvpnRouteAddress Identifier
|
||||
OpenvpnHiLink openvpnRouteMetric Number
|
||||
|
||||
OpenvpnHiLink openvpnSpecial Special
|
||||
OpenvpnHiLink openvpnExtraneousArg Error
|
||||
OpenvpnHiLink openvpnTodo Todo
|
||||
|
||||
"============================================================================
|
||||
" Section: Clean Up {{{1
|
||||
"============================================================================
|
||||
|
||||
delcommand OpenvpnHiLink
|
||||
|
||||
let b:current_syntax = "openvpn"
|
||||
|
||||
if main_syntax == 'openvpn'
|
||||
unlet main_syntax
|
||||
endif
|
||||
|
||||
" Autoconfigure vim indentation settings
|
||||
" vim:ts=4:sw=4:sts=4:fdm=marker:iskeyword+=-
|
Reference in New Issue