すげー。
nsf's gocode at master - GitHub仕組みはvimスクリプト内でデーモン起こしてコードとキーワードと共にサーバ側でコンパイルし、解析して返すというもの。通信にはRPCが使われている。
Autocompletion/refactoring daemon for Go language.Work in progress..Currently available things: - .a...
http://github.com/nsf/gocode
補完はomniなので<c-x><c-o>で開始。ちゃんと
- インスタンスメソッド一覧
- 構造体のメンバ
- パッケージ内の定数や型、関数
もろもろ補完してくれる。私が無理かもねと思ってた以下の様なコードでもしっかり補完してくれている。すばらしい。
Go書く人はいれるべし。ちなみにこのgocode、出力形式としてemacsもサポートしている(未確認)ので、ぜひ試して欲しい。
追記
さすがにこういうコードは難しいみたい。なんかPANICって補完されてます。
package main
type Foo struct {
Boo func();
Baz string;
}
func foo() *Foo {
return &Foo {}
}
func main() {
foo().PANIC
}