diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
commit | 758ff64c69e34965f8af5b2d6ffd65e8d7ab2150 (patch) | |
tree | 6d6b34f8c678862fe9b56c945a7b63f68502c245 /misc | |
parent | 3e45412327a2654a77944249962b3652e6142299 (diff) | |
download | golang-758ff64c69e34965f8af5b2d6ffd65e8d7ab2150.tar.gz |
Imported Upstream version 2011-02-01.1upstream/2011-02-01.1
Diffstat (limited to 'misc')
-rwxr-xr-x | misc/bbedit/Go.plist | 2 | ||||
-rw-r--r-- | misc/cgo/stdio/chain.go | 2 | ||||
-rw-r--r-- | misc/dashboard/builder/main.go | 10 | ||||
-rw-r--r-- | misc/fraise/go.plist | 1 | ||||
-rw-r--r-- | misc/goplay/goplay.go | 4 | ||||
-rw-r--r-- | misc/kate/go.xml | 4 | ||||
-rw-r--r-- | misc/vim/ftplugin/go/import.vim | 201 | ||||
-rw-r--r-- | misc/vim/readme.txt | 14 | ||||
-rw-r--r-- | misc/vim/syntax/go.vim | 13 |
9 files changed, 234 insertions, 17 deletions
diff --git a/misc/bbedit/Go.plist b/misc/bbedit/Go.plist index 39c8f0dc3..9dc3bf6f1 100755 --- a/misc/bbedit/Go.plist +++ b/misc/bbedit/Go.plist @@ -15,7 +15,6 @@ chan, close, closed, - cmplx, complex, complex128, complex64, @@ -27,7 +26,6 @@ else, fallthrough, false, - float, float32, float64, for, diff --git a/misc/cgo/stdio/chain.go b/misc/cgo/stdio/chain.go index c2b105072..c188b2dd9 100644 --- a/misc/cgo/stdio/chain.go +++ b/misc/cgo/stdio/chain.go @@ -23,7 +23,7 @@ func link(left chan<- int, right <-chan int) { for { v := <-right stdio.Stdout.WriteString(strconv.Itoa(v) + "\n") - left <- 1+v + left <- 1 + v } } diff --git a/misc/dashboard/builder/main.go b/misc/dashboard/builder/main.go index 32a2e10da..7e80934e1 100644 --- a/misc/dashboard/builder/main.go +++ b/misc/dashboard/builder/main.go @@ -66,24 +66,24 @@ func main() { for i, builder := range flag.Args() { b, err := NewBuilder(builder) if err != nil { - log.Exit(err) + log.Fatal(err) } builders[i] = b } if err := os.RemoveAll(*buildroot); err != nil { - log.Exitf("Error removing build root (%s): %s", *buildroot, err) + log.Fatalf("Error removing build root (%s): %s", *buildroot, err) } if err := os.Mkdir(*buildroot, mkdirPerm); err != nil { - log.Exitf("Error making build root (%s): %s", *buildroot, err) + log.Fatalf("Error making build root (%s): %s", *buildroot, err) } if err := run(nil, *buildroot, "hg", "clone", hgUrl, goroot); err != nil { - log.Exit("Error cloning repository:", err) + log.Fatal("Error cloning repository:", err) } // if specified, build revision and return if *buildRevision != "" { c, err := getCommit(*buildRevision) if err != nil { - log.Exit("Error finding revision: ", err) + log.Fatal("Error finding revision: ", err) } for _, b := range builders { if err := b.buildCommit(c); err != nil { diff --git a/misc/fraise/go.plist b/misc/fraise/go.plist index 298361501..17f416221 100644 --- a/misc/fraise/go.plist +++ b/misc/fraise/go.plist @@ -70,7 +70,6 @@ <string>chan</string> <string>complex64</string> <string>complex128</string> - <string>float</string> <string>float32</string> <string>float64</string> <string>int</string> diff --git a/misc/goplay/goplay.go b/misc/goplay/goplay.go index 5923360f6..bc11bb759 100644 --- a/misc/goplay/goplay.go +++ b/misc/goplay/goplay.go @@ -42,7 +42,7 @@ func main() { case "386": archChar = "8" default: - log.Exitln("unrecognized GOARCH:", runtime.GOARCH) + log.Fatalln("unrecognized GOARCH:", runtime.GOARCH) } // source of unique numbers @@ -54,7 +54,7 @@ func main() { http.HandleFunc("/", FrontPage) http.HandleFunc("/compile", Compile) - log.Exit(http.ListenAndServe(*httpListen, nil)) + log.Fatal(http.ListenAndServe(*httpListen, nil)) } // FrontPage is an HTTP handler that renders the goplay interface. diff --git a/misc/kate/go.xml b/misc/kate/go.xml index 3a5c39c94..b8ff59267 100644 --- a/misc/kate/go.xml +++ b/misc/kate/go.xml @@ -42,10 +42,8 @@ <item> bool </item> <item> byte </item> <item> chan </item> - <item> complex </item> <item> complex64 </item> <item> complex128 </item> - <item> float </item> <item> float32 </item> <item> float64 </item> <item> int </item> @@ -67,7 +65,7 @@ <item> cap </item> <item> close </item> <item> closed </item> - <item> cmplx </item> + <item> complex </item> <item> copy </item> <item> imag </item> <item> len </item> diff --git a/misc/vim/ftplugin/go/import.vim b/misc/vim/ftplugin/go/import.vim new file mode 100644 index 000000000..b5814ca5d --- /dev/null +++ b/misc/vim/ftplugin/go/import.vim @@ -0,0 +1,201 @@ +" 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. +" +" import.vim: Vim commands to import/drop Go packages. +" +" This filetype plugin adds three new commands for go buffers: +" +" :Import {path} +" +" Import ensures that the provided package {path} is imported +" in the current Go buffer, using proper style and ordering. +" If {path} is already being imported, an error will be +" displayed and the buffer will be untouched. +" +" :ImportAs {localname} {path} +" +" Same as Import, but uses a custom local name for the package. +" +" :Drop {path} +" +" Remove the import line for the provided package {path}, if +" present in the current Go buffer. If {path} is not being +" imported, an error will be displayed and the buffer will be +" untouched. +" +" In addition to these commands, there are also two shortcuts mapped: +" +" \f - Runs :Import fmt +" \F - Runs :Drop fmt +" +" The backslash is the default maplocalleader, so it is possible that +" your vim is set to use a different character (:help maplocalleader). +" +if exists("b:did_ftplugin") + finish +endif + +command! -buffer -nargs=? Drop call s:SwitchImport(0, '', <f-args>) +command! -buffer -nargs=1 Import call s:SwitchImport(1, '', <f-args>) +command! -buffer -nargs=* ImportAs call s:SwitchImport(1, <f-args>) +map <buffer> <LocalLeader>f :Import fmt<CR> +map <buffer> <LocalLeader>F :Drop fmt<CR> + +function! s:SwitchImport(enabled, localname, path) + let view = winsaveview() + let path = a:path + + " Quotes are not necessary, so remove them if provided. + if path[0] == '"' + let path = strpart(path, 1) + endif + if path[len(path)-1] == '"' + let path = strpart(path, 0, len(path) - 1) + endif + if path == '' + call s:Error('Import path not provided') + return + endif + + let qpath = '"' . path . '"' + if a:localname != '' + let qlocalpath = a:localname . ' ' . qpath + else + let qlocalpath = qpath + endif + let indentstr = 0 + let packageline = -1 " Position of package name statement + let appendline = -1 " Position to introduce new import + let deleteline = -1 " Position of line with existing import + let linesdelta = 0 " Lines added/removed + + " Find proper place to add/remove import. + let line = 0 + while line <= line('$') + let linestr = getline(line) + + if linestr =~# '^package\s' + let packageline = line + let appendline = line + + elseif linestr =~# '^import\s\+(' + let appendstr = qlocalpath + let indentstr = 1 + let appendline = line + while line <= line("$") + let line = line + 1 + let linestr = getline(line) + let m = matchlist(getline(line), '^\()\|\(\s\+\)\(\S*\s*\)"\(.\+\)"\)') + if empty(m) + continue + endif + if m[1] == ')' + break + endif + if a:localname != '' && m[3] != '' + let qlocalpath = printf('%-' . (len(m[3])-1) . 's %s', a:localname, qpath) + endif + let appendstr = m[2] . qlocalpath + let indentstr = 0 + if m[4] == path + let appendline = -1 + let deleteline = line + break + elseif m[4] < path + let appendline = line + endif + endwhile + break + + elseif linestr =~# '^import ' + if appendline == packageline + let appendstr = 'import ' . qlocalpath + let appendline = line - 1 + endif + let m = matchlist(linestr, '^import\(\s\+\)\(\S*\s*\)"\(.\+\)"') + if !empty(m) + if m[3] == path + let appendline = -1 + let deleteline = line + break + endif + if m[3] < path + let appendline = line + endif + if a:localname != '' && m[2] != '' + let qlocalpath = printf("%s %" . len(m[2])-1 . "s", a:localname, qpath) + endif + let appendstr = 'import' . m[1] . qlocalpath + endif + + elseif linestr =~# '^\(var\|const\|type\|func\)\>' + break + + endif + let line = line + 1 + endwhile + + " Append or remove the package import, as requested. + if a:enabled + if deleteline != -1 + call s:Error(qpath . ' already being imported') + elseif appendline == -1 + call s:Error('No package line found') + else + if appendline == packageline + call append(appendline + 0, '') + call append(appendline + 1, 'import (') + call append(appendline + 2, ')') + let appendline += 2 + let linesdelta += 3 + let appendstr = qlocalpath + let indentstr = 1 + endif + call append(appendline, appendstr) + execute appendline + 1 + if indentstr + execute 'normal >>' + endif + let linesdelta += 1 + endif + else + if deleteline == -1 + call s:Error(qpath . ' not being imported') + else + execute deleteline . 'd' + let linesdelta -= 1 + + if getline(deleteline-1) =~# '^import\s\+(' && getline(deleteline) =~# '^)' + " Delete empty import block + let deleteline -= 1 + execute deleteline . "d" + execute deleteline . "d" + let linesdelta -= 2 + endif + + if getline(deleteline) == '' && getline(deleteline - 1) == '' + " Delete spacing for removed line too. + execute deleteline . "d" + let linesdelta -= 1 + endif + endif + endif + + " Adjust view for any changes. + let view.lnum += linesdelta + let view.topline += linesdelta + if view.topline < 0 + let view.topline = 0 + endif + + " Put buffer back where it was. + call winrestview(view) + +endfunction + +function! s:Error(s) + echohl Error | echo a:s | echohl None +endfunction + +" vim:ts=4:sw=4:et diff --git a/misc/vim/readme.txt b/misc/vim/readme.txt index bb36d4bbe..f836f58f3 100644 --- a/misc/vim/readme.txt +++ b/misc/vim/readme.txt @@ -21,3 +21,17 @@ commands: ln -s $GOROOT/misc/vim/ftdetect/gofiletype.vim $HOME/.vim/ftdetect/ ln -s $GOROOT/misc/vim/syntax/go.vim $HOME/.vim/syntax echo "syntax on" >> $HOME/.vimrc + + +Vim filetype plugins for Go +=========================== + +To install one of the available filetype plugins for Go: + + 1. Same as 1 above. + 2. Copy or link one or more plugins from ftplugin/go/*.vim to the + Go-specific ftplugin directory underneath your vim runtime directory + (normally $HOME/.vim/ftplugin/go/*.vim). + 3. Add the following line to your .vimrc file (normally $HOME/.vimrc): + + filetype plugin on diff --git a/misc/vim/syntax/go.vim b/misc/vim/syntax/go.vim index 7adbe8e35..7507cada2 100644 --- a/misc/vim/syntax/go.vim +++ b/misc/vim/syntax/go.vim @@ -70,8 +70,8 @@ hi def link goRepeat Repeat syn keyword goType chan map bool string syn keyword goSignedInts int int8 int16 int32 int64 syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr -syn keyword goFloats float float32 float64 -syn keyword goComplexes complex complex64 complex128 +syn keyword goFloats float32 float64 +syn keyword goComplexes complex64 complex128 hi def link goType Type hi def link goSignedInts Type @@ -85,7 +85,7 @@ syn match goType /\<func\>/ syn match goDeclaration /^func\>/ " Predefined functions and values -syn keyword goBuiltins append cap close closed cmplx copy imag len +syn keyword goBuiltins append cap close closed complex copy imag len syn keyword goBuiltins make new panic print println real recover syn keyword goConstants iota true false nil @@ -198,4 +198,11 @@ endif hi def link goExtraType Type hi def link goSpaceError Error +" Search backwards for a global declaration to start processing the syntax. +"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/ + +" There's a bug in the implementation of grouphere. For now, use the +" following as a more expensive/less precise workaround. +syn sync minlines=500 + let b:current_syntax = "go" |