diff options
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 8 | ||||
| -rw-r--r-- | syntax/ferm.vim | 207 | 
3 files changed, 216 insertions, 0 deletions
| @@ -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)  - [emblem](https://github.com/yalesov/vim-emblem) (syntax, indent, ftplugin)  - [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)  - [fsharp](https://github.com/fsharp/vim-fsharp) (syntax, indent)  - [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin) diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index ccbd2fa4..0a4d36d3 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -297,6 +297,14 @@ au BufNewFile,BufRead *.erl,*.hrl,rebar.config,*.app,*.app.src,*.yaws,*.xrl,*.es    augroup end  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    augroup filetypedetect    " fsharp, from fsharp.vim in fsharp/vim-fsharp:_BASIC diff --git a/syntax/ferm.vim b/syntax/ferm.vim new file mode 100644 index 00000000..bfe1fd4d --- /dev/null +++ b/syntax/ferm.vim @@ -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 | 
