diff --git a/Rakefile b/Rakefile index 5ef638f..df6c2a9 100644 --- a/Rakefile +++ b/Rakefile @@ -37,6 +37,7 @@ namespace :update do :syntax_rdoc => "git://github.com/depuracao/vim-rdoc.git", :syntax_slidedown => "git://github.com/bleything/vim-slidedown.git", :syntax_textile => "git://github.com/timcharper/textile.vim.git", + :syntax_vcl => "git://github.com/smerrill/vcl-vim-plugin.git", # color schemes :colors_solarized => "git://github.com/altercation/vim-colors-solarized.git" diff --git a/bundle/syntax_vcl/README.md b/bundle/syntax_vcl/README.md new file mode 100644 index 0000000..f6ff4db --- /dev/null +++ b/bundle/syntax_vcl/README.md @@ -0,0 +1,21 @@ +Vim VCL Highlighting +==================== + +by Elan Ruusamäe + +improvements by Steven Merrill + +Introduction +------------ + +This plugin enables syntax highlighting for VCL (Varnish Configuration Language) +files in the vim editor. + +The plugin is based on code from the PLD Linux distribution. + +Downloads +--------- + +Source code and downloads are available at . + + diff --git a/bundle/syntax_vcl/ftdetect/vcl.vim b/bundle/syntax_vcl/ftdetect/vcl.vim new file mode 100644 index 0000000..8e6cee2 --- /dev/null +++ b/bundle/syntax_vcl/ftdetect/vcl.vim @@ -0,0 +1 @@ +au BufRead,BufNewFile *.vcl set filetype=vcl diff --git a/bundle/syntax_vcl/syntax/vcl.vim b/bundle/syntax_vcl/syntax/vcl.vim new file mode 100644 index 0000000..81d832f --- /dev/null +++ b/bundle/syntax_vcl/syntax/vcl.vim @@ -0,0 +1,106 @@ +" Vim syntax file +" Filename: vcl.vim +" Language: Varnish configuation Language, http://www.varnish-cache.org/wiki/VCL +" Maintainer: Elan Ruusamäe +" Version Info: $Revision: 1.7 $ +" Last Change: $Date: 2010/04/06 08:24:28 $ UTC + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" TODO +" - sub ... +" - backend/director/... +" - acl ... +" - error when invalid operator used in if (...) +" - +=, = operators +" - functions + +" Code Blocks +" sub NAME { +" backend NAME { +" director NAME FLAGS { +" acl NAME { +"syn region vclCodeBlock start="\s*\" end="{"he=e-1 contains=vclCodeBlockName,vclFunctionName +"syn match vclCodeBlockName "\" contained +"syn match vclFunctionName "\h[[:alnum:]_:]*" contained +"syn match vclFunctionName "\h\w*[^:]" contained +" +syn keyword vclOperator set call return error esi synthetic include remove unset +" return modes +syn keyword vclModes deliver pipe pass hash lookup discard fetch restart + +" C strings +syn region vclString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=vclSpecial +syn match vclSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +syn match vclSpecialError "L\='\\[^'\"?\\abfnrtv]'" +syn match vclSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +syn match vclSpecialCharacter display "L\='\\\o\{1,3}'" +syn match vclSpecialCharacter display "'\\x\x\{1,2}'" +syn match vclSpecialCharacter display "L'\\x\x\+'" + +syn keyword vclConditional if else elsif elseif + +" Numbers +syn match vclNumbers display transparent "\<\d\|\.\d" contains=vclNumber,vclNumberTime +syn match vclNumber display contained "\d\+" +" set obj.ttl = 0s, 0m; +syn match vclNumberTime display contained "\d\+[dhsm]" + +" client +syn match vclOption /client\.\(ip\|identity\)/ +" server +syn match vclOption /server\.\(ip\|port\)/ +" req +syn match vclOption /req\.\(hash\|request\|url\|proto\|backend\.healthy\|backend\|grace\|xid\|restarts\)/ +" bereq +syn match vclOption /bereq\.\(request\|url\|proto\|connect_timeout\|first_byte_timeout\|between_bytes_timeout\)/ +" beresp +syn match vclOption /beresp\.\(proto\|status\|response\|cacheable\|ttl\|lastuse\|hits\|hash\|grace\|prefetch\|saintmode\)/ +" obj +syn match vclOption /obj\.\(proto\|status\|response\|cacheable\|ttl\|lastuse\|hits\|hash\|grace\|prefetch\)/ +" resp +syn match vclOption /resp\.\(proto\|status\|response\)/ +" common: http.HEADERNAME +syn match vclOption /\(req\|bereq\|resp\|beresp\|obj\)\.http\.[A-Za-z][-_A-Za-z0-9]*/ + +" Highlight the C block +syn include @vclC syntax/c.vim +unlet b:current_syntax + +" Mark block tags itself as comment +syn region vclCBlock matchgroup=vclComment start=/C{/ end=/}C/ contains=@vclC keepend + +" Synthetic +syn region vclSynthetic start=/{"/hs=s+2 end=/"}/he=e-2 contains=@vclHTML keepend + +" Allow html in synthetic +syn include @vclHTML syntax/html.vim +unlet b:current_syntax + +syn match vclComment '#.*' +syn match vclComment "//.*" +syn region vclComment start="/\*" end="\*/" + +syn sync ccomment vclComment + +hi link vclCodeBlock Function +hi link vclComment Comment +hi link vclStatement Statement +hi link vclFunctionName Identifier +hi link vclCodeBlockName Statement +hi link vclSpecial SpecialChar +hi link vclString String +hi link vclConditional Conditional +hi link vclSynthetic vclString +hi link vclSpecialCharacter vclSpecialSpecial +hi link vclOperator Operator +hi link vclModes Operator +hi link vclOption Identifier +hi link vclNumber Number +hi link vclNumberTime Number