forked from robmiller/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
112 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
" Vim syntax file | ||
" Language: Go | ||
" Maintainer: David Daub <david.daub@googlemail.com> | ||
" Last Change: 2009 Nov 15 | ||
" Version: 0.1 | ||
" | ||
" Early version. Took some (ok, most) stuff from existing syntax files like | ||
" c.vim or d.vim. | ||
" | ||
" | ||
" Todo: | ||
" - very much | ||
|
||
" Quit when a (custom) syntax file was already loaded | ||
if exists("b:current_syntax") | ||
finish | ||
endif | ||
|
||
|
||
" A bunch of useful Go keywords | ||
syn keyword goStatement select | ||
syn keyword goStatement defer | ||
syn keyword goStatement fallthrough range type | ||
syn keyword goStatement return | ||
|
||
syn keyword goClause import package | ||
syn keyword goConditional if else switch | ||
syn keyword goBranch goto break continue | ||
syn keyword goLabel case default | ||
syn keyword goRepeat for | ||
syn keyword goType struct const interface func | ||
syn keyword goType var map | ||
syn keyword goType uint8 uint16 uint32 uint64 | ||
syn keyword goType int8 int16 int32 int64 | ||
syn keyword goType float32 float64 | ||
syn keyword goType float32 float64 | ||
syn keyword goType byte | ||
syn keyword goType uint int float uintptr string | ||
|
||
syn keyword goConcurrent chan go | ||
|
||
syn keyword goValue nil | ||
syn keyword goBoolean true false | ||
|
||
syn keyword goConstant iota | ||
|
||
" Builtin functions | ||
syn keyword goBif len make new close closed cap map | ||
|
||
" According to the language specification it is not garanteed to stay in the | ||
" language. See http://golang.org/doc/go_spec.html#Bootstrapping | ||
syn keyword goBif print println panic panicln | ||
|
||
" Commants | ||
syn keyword goTodo contained TODO FIXME XXX | ||
syn match goLineComment "\/\/.*" contains=@Spell,goTodo | ||
syn match goCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" | ||
syn region goComment start="/\*" end="\*/" contains=@Spell,goTodo | ||
|
||
" Numerals | ||
syn case ignore | ||
"integer number, or floating point number without a dot and with "f". | ||
syn match goNumbers display transparent "\<\d\|\.\d" contains=goNumber,goFloat,goOctError,goOct | ||
syn match goNumbersCom display contained transparent "\<\d\|\.\d" contains=goNumber,goFloat,goOct | ||
syn match goNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" | ||
|
||
" hex number | ||
syn match goNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" | ||
|
||
" oct number | ||
syn match goOct display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=goOctZero | ||
syn match goOctZero display contained "\<0" | ||
|
||
syn match goFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=" | ||
syn match goFloat display contained "\d\+e[-+]\=\d\=\>" | ||
syn match goFloat display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>" | ||
|
||
" Literals | ||
syn region goString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell | ||
|
||
syn match goSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" | ||
syn match goCharacter "L\='[^\\]'" | ||
syn match goCharacter "L'[^']*'" contains=goSpecial | ||
|
||
|
||
hi def link goStatement Statement | ||
hi def link goClause Preproc | ||
hi def link goConditional Conditional | ||
hi def link goBranch Conditional | ||
hi def link goLabel Label | ||
hi def link goRepeat Repeat | ||
hi def link goType Type | ||
hi def link goConcurrent Statement | ||
hi def link goValue Constant | ||
hi def link goBoolean Boolean | ||
hi def link goConstant Constant | ||
hi def link goBif Function | ||
hi def link goTodo Todo | ||
hi def link goLineComment goComment | ||
hi def link goComment Comment | ||
hi def link goNumbers Number | ||
hi def link goNumbersCom Number | ||
hi def link goNumber Number | ||
hi def link goFloat Float | ||
hi def link goOct Number | ||
hi def link goOctZero Number | ||
hi def link goString String | ||
hi def link goSpecial Special | ||
hi def link goCharacter Character | ||
|
||
|
||
let b:current_syntax = "go" |