" Copyright 2011 The Go Authors. All rights reserved. " Use of this source code is governed by a BSD-style " license that can be found in the LICENSE file. " " gotexttmpl.vim: Vim syntax file for Go templates. " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") finish endif syn case match " Go escapes syn match goEscapeOctal display contained "\\[0-7]\{3}" syn match goEscapeC display contained +\\[abfnrtv\\'"]+ syn match goEscapeX display contained "\\x\x\{2}" syn match goEscapeU display contained "\\u\x\{4}" syn match goEscapeBigU display contained "\\U\x\{8}" syn match goEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+ hi def link goEscapeOctal goSpecialString hi def link goEscapeC goSpecialString hi def link goEscapeX goSpecialString hi def link goEscapeU goSpecialString hi def link goEscapeBigU goSpecialString hi def link goSpecialString Special hi def link goEscapeError Error " Strings and their contents syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError syn region goString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup syn region goRawString contained start=+`+ end=+`+ hi def link goString String hi def link goRawString String " Characters; their contents syn cluster goCharacterGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU syn region goCharacter contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@goCharacterGroup hi def link goCharacter Character " Integers syn match goDecimalInt contained "\<\d\+\([Ee]\d\+\)\?\>" syn match goHexadecimalInt contained "\<0x\x\+\>" syn match goOctalInt contained "\<0\o\+\>" syn match goOctalError contained "\<0\o*[89]\d*\>" syn cluster goInt contains=goDecimalInt,goHexadecimalInt,goOctalInt " Floating point syn match goFloat contained "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>" syn match goFloat contained "\<\.\d\+\([Ee][-+]\d\+\)\?\>" syn match goFloat contained "\<\d\+[Ee][-+]\d\+\>" " Imaginary literals syn match goImaginary contained "\<\d\+i\>" syn match goImaginary contained "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>" syn match goImaginary contained "\<\.\d\+\([Ee][-+]\d\+\)\?i\>" syn match goImaginary contained "\<\d\+[Ee][-+]\d\+i\>" hi def link goInt Number hi def link goFloat Number hi def link goImaginary Number " Token groups syn cluster gotplLiteral contains=goString,goRawString,goCharacter,@goInt,goFloat,goImaginary syn keyword gotplControl contained if else end range with template syn keyword gotplFunctions contained and html index js len not or print printf println urlquery eq ne lt le gt ge syn match gotplVariable contained /\$[a-zA-Z0-9_]*\>/ syn match goTplIdentifier contained /\.[^\s}]+\>/ hi def link gotplControl Keyword hi def link gotplFunctions Function hi def link goTplVariable Special syn region gotplAction start="{{" end="}}" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable,goTplIdentifier display syn region gotplAction start="\[\[" end="\]\]" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable display syn region goTplComment start="{{/\*" end="\*/}}" display syn region goTplComment start="\[\[/\*" end="\*/\]\]" display hi def link gotplAction PreProc hi def link goTplComment Comment let b:current_syntax = "gotexttmpl" " vim: sw=2 ts=2 et