Add FERM support (#311)
This commit is contained in:
parent
f05b47874b
commit
d4da7817ba
@ -68,6 +68,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
|||||||
- [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin)
|
- [emberscript](https://github.com/yalesov/vim-ember-script) (syntax, indent, ftplugin)
|
||||||
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
|
- [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)
|
||||||
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent)
|
- [erlang](https://github.com/vim-erlang/vim-erlang-runtime) (syntax, indent)
|
||||||
|
- [ferm](https://github.com/vim-scripts/ferm.vim) (syntax)
|
||||||
- [fish](https://github.com/dag/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
|
- [fish](https://github.com/dag/vim-fish) (syntax, indent, compiler, autoload, ftplugin)
|
||||||
- [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent)
|
- [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent)
|
||||||
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
|
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin)
|
||||||
|
@ -297,6 +297,14 @@ au BufNewFile,BufRead *.erl,*.hrl,rebar.config,*.app,*.app.src,*.yaws,*.xrl,*.es
|
|||||||
augroup end
|
augroup end
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ferm') == -1
|
||||||
|
augroup filetypedetect
|
||||||
|
" ferm, from ferm.vim in vim-scripts/ferm.vim
|
||||||
|
autocmd BufNewFile,BufRead ferm.conf setf ferm
|
||||||
|
autocmd BufNewFile,BufRead *.ferm setf ferm
|
||||||
|
augroup end
|
||||||
|
endif
|
||||||
|
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'fsharp') == -1
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" fsharp, from fsharp.vim in fsharp/vim-fsharp:_BASIC
|
" fsharp, from fsharp.vim in fsharp/vim-fsharp:_BASIC
|
||||||
|
207
syntax/ferm.vim
Normal file
207
syntax/ferm.vim
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ferm') == -1
|
||||||
|
|
||||||
|
"============================================================================
|
||||||
|
" ferm syntax highlighter
|
||||||
|
"
|
||||||
|
" Language: ferm; "For Easy Rule Making", a frontend for iptables
|
||||||
|
" Ferm Info: http://ferm.foo-projects.org/
|
||||||
|
" Version: 0.03
|
||||||
|
" Date: 2013-01-09
|
||||||
|
" Maintainer: Benjamin Leopold <benjamin-at-cometsong-dot-net>
|
||||||
|
" URL: http://github.com/cometsong/ferm.vim
|
||||||
|
" Credits: Modeled after Eric Haarbauer's iptables syntax file.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
" 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 = 'ferm'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't use standard HiLink, it will not work with included syntax files
|
||||||
|
if version < 508
|
||||||
|
command! -nargs=+ FermHiLink highlight link <args>
|
||||||
|
else
|
||||||
|
command! -nargs=+ FermHiLink highlight default link <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
syntax case match
|
||||||
|
|
||||||
|
if version < 600
|
||||||
|
set iskeyword+=-
|
||||||
|
else
|
||||||
|
setlocal iskeyword+=-
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Initialize global public variables: {{{2
|
||||||
|
|
||||||
|
" Support deprecated variable name used prior to release 1.07.
|
||||||
|
if exists("g:fermSpecialDelimiters") &&
|
||||||
|
\ !exists("g:Ferm_SpecialDelimiters")
|
||||||
|
|
||||||
|
let g:Ferm_SpecialDelimiters = g:fermSpecialDelimiters
|
||||||
|
unlet g:fermSpecialDelimiters
|
||||||
|
" echohl WarningMsg | echo "Warning:" | echohl None
|
||||||
|
" echo "The g:fermSpecialDelimiters variable is deprecated."
|
||||||
|
" echo "Please use g:Ferm_SpecialDelimiters in your .vimrc instead"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:Ferm_SpecialDelimiters")
|
||||||
|
let s:Ferm_SpecialDelimiters = g:Ferm_SpecialDelimiters
|
||||||
|
else
|
||||||
|
let s:Ferm_SpecialDelimiters = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
"============================================================================
|
||||||
|
" Section: Syntax Definitions {{{1
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
|
syntax keyword fermLocation domain table chain policy @subchain
|
||||||
|
|
||||||
|
syntax keyword fermMatch interface outerface protocol proto
|
||||||
|
\ saddr daddr fragment sport dport syn module mod
|
||||||
|
|
||||||
|
syntax keyword fermBuiltinChain
|
||||||
|
\ INPUT OUTPUT FORWARD PREROUTING POSTROUTING
|
||||||
|
|
||||||
|
syntax match fermInterface "[eth|ppp]\d"
|
||||||
|
|
||||||
|
syntax keyword fermTable filter nat mangle raw
|
||||||
|
|
||||||
|
" TODO: check the use of duplicate terms in two syntax defs; then enable (arp|eb) tables.
|
||||||
|
"syntax keyword fermArpTables source-ip destination-ip source-mac destination-mac
|
||||||
|
"\ interface outerface h-length opcode h-type proto-type
|
||||||
|
"\ mangle-ip-s mangle-ip-d mangle-mac-s mangle-mac-d mangle-target
|
||||||
|
"syntax keyword fermEbTables proto interface outerface logical-in logical-out saddr daddr
|
||||||
|
"\ 802.3 arp ip mark_m pkttype stp vlan log
|
||||||
|
|
||||||
|
syntax keyword fermTarget
|
||||||
|
\ ACCEPT DROP QUEUE RETURN BALANCE CLASSIFY CLUSTERIP CONNMARK
|
||||||
|
\ CONNSECMARK CONNTRACK DNAT DSCP ECN HL IPMARK IPV4OPSSTRIP LOG
|
||||||
|
\ MARK MASQUERADE MIRROR NETMAP NFLOG NFQUEUE NOTRACK REDIRECT REJECT
|
||||||
|
\ ROUTE SAME SECMARK SET SNAT TARPIT TCPMSS TOS TRACE TTL ULOG XOR
|
||||||
|
|
||||||
|
syntax keyword fermModuleName contained
|
||||||
|
\ account addrtype ah childlevel comment condition connbytes connlimit
|
||||||
|
\ connmark connrate conntrack dccp dscp dstlimit ecn esp fuzzy hashlimit
|
||||||
|
\ helper icmp iprange ipv4options length limit lo mac mark mport multiport
|
||||||
|
\ nth osf owner physdev pkttype policy psd quota random realm recent
|
||||||
|
\ sctp set state string tcp tcpmss time tos ttl u32 udp unclean
|
||||||
|
|
||||||
|
syntax keyword fermModuleType
|
||||||
|
\ UNSPEC UNICAST LOCAL BROADCAST ANYCAST MULTICAST BLACKHOLE UNREACHABLE
|
||||||
|
\ PROHIBIT THROW NAT XRESOLVE INVALID ESTABLISHED NEW RELATED SYN ACK FIN
|
||||||
|
\ RST URG PSH ALL NONE
|
||||||
|
|
||||||
|
" From --reject-with option
|
||||||
|
syntax keyword fermModuleType
|
||||||
|
\ icmp-net-unreachable
|
||||||
|
\ icmp-host-unreachable
|
||||||
|
\ icmp-port-unreachable
|
||||||
|
\ icmp-proto-unreachable
|
||||||
|
\ icmp-net-prohibited
|
||||||
|
\ icmp-host-prohibited
|
||||||
|
\ icmp-admin-prohibited
|
||||||
|
|
||||||
|
" From --icmp-type option
|
||||||
|
syntax keyword fermModuleType
|
||||||
|
\ any
|
||||||
|
\ echo-reply
|
||||||
|
\ destination-unreachable
|
||||||
|
\ network-unreachable
|
||||||
|
\ host-unreachable
|
||||||
|
\ protocol-unreachable
|
||||||
|
\ port-unreachable
|
||||||
|
\ fragmentation-needed
|
||||||
|
\ source-route-failed
|
||||||
|
\ network-unknown
|
||||||
|
\ host-unknown
|
||||||
|
\ network-prohibited
|
||||||
|
\ host-prohibited
|
||||||
|
\ TOS-network-unreachable
|
||||||
|
\ TOS-host-unreachable
|
||||||
|
\ communication-prohibited
|
||||||
|
\ host-precedence-violation
|
||||||
|
\ precedence-cutoff
|
||||||
|
\ source-quench
|
||||||
|
\ redirect
|
||||||
|
\ network-redirect
|
||||||
|
\ host-redirect
|
||||||
|
\ TOS-network-redirect
|
||||||
|
\ TOS-host-redirect
|
||||||
|
\ echo-request
|
||||||
|
\ router-advertisement
|
||||||
|
\ router-solicitation
|
||||||
|
\ time-exceeded
|
||||||
|
\ ttl-zero-during-transit
|
||||||
|
\ ttl-zero-during-reassembly
|
||||||
|
\ parameter-problem
|
||||||
|
\ ip-header-bad
|
||||||
|
\ required-option-missing
|
||||||
|
\ timestamp-request
|
||||||
|
\ timestamp-reply
|
||||||
|
\ address-mask-request
|
||||||
|
\ address-mask-reply
|
||||||
|
|
||||||
|
" TODO: check ferm "$variable" & "&function" character matches
|
||||||
|
syntax match fermVariable "$[_A-Za-z0-9]+"
|
||||||
|
syntax keyword fermVarDefine @def
|
||||||
|
|
||||||
|
syntax keyword fermFunction @if @else @include @hook
|
||||||
|
\ @eq @ne @not @resolve @cat @substr @length
|
||||||
|
\ @basename @dirname @ipfilter
|
||||||
|
|
||||||
|
syntax keyword fermUserFunction "&[_A-Za-z0-9]+"
|
||||||
|
|
||||||
|
syntax region fermString start=+"+ skip=+\\"+ end=+"+
|
||||||
|
syntax region fermString start=+'+ skip=+\\'+ end=+'+
|
||||||
|
|
||||||
|
syntax region fermCommand start=+`+ skip=+\\'+ end=+`+
|
||||||
|
|
||||||
|
syntax match fermComment "#.*"
|
||||||
|
|
||||||
|
"============================================================================
|
||||||
|
" Section: Group Linking {{{1
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
|
FermHiLink fermLocation Title
|
||||||
|
FermHiLink fermMatch Special
|
||||||
|
FermHiLink fermTable ErrorMsg
|
||||||
|
FermHiLink fermBuiltinChain Underlined
|
||||||
|
FermHiLink fermTarget Statement
|
||||||
|
FermHiLink fermFunction Identifier
|
||||||
|
FermHiLink fermUserFunction Function
|
||||||
|
FermHiLink fermModuleName PreProc
|
||||||
|
FermHiLink fermModuleType Type
|
||||||
|
FermHiLink fermVarDefine PreProc
|
||||||
|
FermHiLink fermVariable Operator
|
||||||
|
FermHiLink fermString Constant
|
||||||
|
FermHiLink fermCommand Identifier
|
||||||
|
FermHiLink fermComment Comment
|
||||||
|
|
||||||
|
"============================================================================
|
||||||
|
" Section: Clean Up {{{1
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
|
delcommand FermHiLink
|
||||||
|
|
||||||
|
let b:current_syntax = "ferm"
|
||||||
|
|
||||||
|
if main_syntax == 'ferm'
|
||||||
|
unlet main_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Autoconfigure vim indentation settings
|
||||||
|
" vim:ts=4:sw=4:sts=4:fdm=marker:iskeyword+=-
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
Loading…
Reference in New Issue
Block a user