Permalink
Browse files

add syntax_vcl

  • Loading branch information...
1 parent 00e94a6 commit f6e33872189cfaaf9c972b5a3811c458131603bf @bleything committed Sep 23, 2011
Showing with 129 additions and 0 deletions.
  1. +1 −0 Rakefile
  2. +21 −0 bundle/syntax_vcl/README.md
  3. +1 −0 bundle/syntax_vcl/ftdetect/vcl.vim
  4. +106 −0 bundle/syntax_vcl/syntax/vcl.vim
View
1 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"
View
21 bundle/syntax_vcl/README.md
@@ -0,0 +1,21 @@
+Vim VCL Highlighting
+====================
+
+by Elan Ruusamäe <glen@delfi.ee>
+
+improvements by Steven Merrill <steven.merrill@gmail.com>
+
+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 <https://github.com/smerrill/vcl-vim-plugin>.
+
+
View
1 bundle/syntax_vcl/ftdetect/vcl.vim
@@ -0,0 +1 @@
+au BufRead,BufNewFile *.vcl set filetype=vcl
View
106 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 <glen@delfi.ee>
+" 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*\<sub\|backend\|director\|acl\>" end="{"he=e-1 contains=vclCodeBlockName,vclFunctionName
+"syn match vclCodeBlockName "\<sub\|backend\|director\|acl\>" 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

0 comments on commit f6e3387

Please sign in to comment.