summaryrefslogtreecommitdiffstats
path: root/syntax/gotexttmpl.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/gotexttmpl.vim')
-rw-r--r--syntax/gotexttmpl.vim85
1 files changed, 85 insertions, 0 deletions
diff --git a/syntax/gotexttmpl.vim b/syntax/gotexttmpl.vim
new file mode 100644
index 00000000..50b4653d
--- /dev/null
+++ b/syntax/gotexttmpl.vim
@@ -0,0 +1,85 @@
+" 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 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 /\$[^ ]*\>/
+syn match goTplIdentifier contained /\.[^ ]*\>/
+
+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:ts=4:sw=4:et