Navigation Menu

Skip to content
This repository has been archived by the owner on Aug 28, 2023. It is now read-only.

Commit

Permalink
add syntax_vcl
Browse files Browse the repository at this point in the history
  • Loading branch information
bleything committed Sep 23, 2011
1 parent 00e94a6 commit f6e3387
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 0 deletions.
1 change: 1 addition & 0 deletions Rakefile
Expand Up @@ -37,6 +37,7 @@ namespace :update do
:syntax_rdoc => "git://github.com/depuracao/vim-rdoc.git", :syntax_rdoc => "git://github.com/depuracao/vim-rdoc.git",
:syntax_slidedown => "git://github.com/bleything/vim-slidedown.git", :syntax_slidedown => "git://github.com/bleything/vim-slidedown.git",
:syntax_textile => "git://github.com/timcharper/textile.vim.git", :syntax_textile => "git://github.com/timcharper/textile.vim.git",
:syntax_vcl => "git://github.com/smerrill/vcl-vim-plugin.git",


# color schemes # color schemes
:colors_solarized => "git://github.com/altercation/vim-colors-solarized.git" :colors_solarized => "git://github.com/altercation/vim-colors-solarized.git"
Expand Down
21 changes: 21 additions & 0 deletions 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>.


1 change: 1 addition & 0 deletions bundle/syntax_vcl/ftdetect/vcl.vim
@@ -0,0 +1 @@
au BufRead,BufNewFile *.vcl set filetype=vcl
106 changes: 106 additions & 0 deletions 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.