summary refs log tree commit diff
path: root/.vim/syntax/gotmpl.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim/syntax/gotmpl.vim')
-rw-r--r--.vim/syntax/gotmpl.vim93
1 files changed, 93 insertions, 0 deletions
diff --git a/.vim/syntax/gotmpl.vim b/.vim/syntax/gotmpl.vim
new file mode 100644
index 0000000..9e6c1e1
--- /dev/null
+++ b/.vim/syntax/gotmpl.vim
@@ -0,0 +1,93 @@
+" 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
+
+if !exists("g:main_syntax")
+  let g:main_syntax = 'html'
+endif
+
+runtime! syntax/html.vim
+
+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
+
+syn cluster htmlPreproc add=gotplAction,goTplComment
+
+let b:current_syntax = "gotmpl"
+
+" vim: sw=2 ts=2 et