Status | |
---|---|
Travis CI | |
Gitter |
Go source for deoplete.nvim use gocode.
Asynchronous Go completion for Neovim/Vim8. Use,
Dark powered asynchronous completion framework for neovim/Vim8. Fastetst, Fully asynchronous, Nonblocking user interface, Customizable source for each languages, and more. The Nextgen word completion.
An autocompletion daemon for the Go programming language. Fastest, Context-sensitive, Server/Client architecture, Result caching. The de facto standard completion engine.
https://github.com/Shougo/deoplete.nvim
https://github.com/stamblerre/gocode
For neovim, see Neovim wiki.
See https://github.com/Shougo/deoplete.nvim
go get -u github.com/stamblerre/gocode
deoplete-go
using esnme/ultrajson json module.
It's Python bindings for C library. Need compiling.
So, If you use Plugin manager supported build process, set make
commmand.
" dein.vim
call dein#add('Shougo/deoplete.nvim')
call dein#add('deoplete-plugins/deoplete-go', {'build': 'make'})
" NeoBundle
NeoBundle 'Shougo/deoplete.nvim'
NeoBundle 'deoplete-plugins/deoplete-go', {'build': {'unix': 'make'}}
" vim-plug
Plug 'Shougo/deoplete.nvim'
Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'}
Setting value | Default | Required |
---|---|---|
g:deoplete#sources#go#gocode_binary |
'' |
Recommend |
g:deoplete#sources#go#package_dot |
0 |
No |
g:deoplete#sources#go#sort_class |
[] |
Recommend |
g:deoplete#sources#go#cgo |
0 |
Any |
g:deoplete#sources#go#goos |
'' |
No |
g:deoplete#sources#go#source_importer |
0 |
No |
g:deoplete#sources#go#builtin_objects |
0 |
No |
g:deoplete#sources#go#unimported_packages |
0 |
No |
g:deoplete#sources#go#fallback_to_source |
0 |
No |
Default | '' |
---|---|
Required | Recommend |
Type | string |
Example | $GOPATH.'/bin/gocode' |
deoplete-go
will directly call gocode
. Not vim bypass due to the omnifunc.
By default (not set), Find the gocode binary in $PATH
environment.
This setting is Recommend.
If you set it, deoplete-go
spared look for the binary. It will improve performance.
Also, If you want to use a different from the first found gocode
binary from $PATH
then set:
let g:deoplete#sources#go#gocode_binary = '/path/to/gocode'
Default | 0 |
---|---|
Required | No |
Type | int |
Example | 1 |
Automatically insert dot (period) when you select package
name in popup menu.
By default, no dot (period) is inserted after a package name.
If you would prefer adding a period then set:
let g:deoplete#sources#go#package_dot = 1
Default | [] |
---|---|
Required | Recommend |
Type | list |
Example | See bellow exmaple |
By default, the completion word list is in the sort order of gocode. Same as omnifunc. If you want to change it to an arbitrary order, set it.
Available values are [package
, func
, type
, var
, const
].
If you did not include any value, it will always be hidden in the completion
list.
To display all words while sorting, set:
let g:deoplete#sources#go#sort_class = ['package', 'func', 'type', 'var', 'const']
Default | 0 |
---|---|
Required | Any |
Type | int |
Example | 1 |
Support pointer (*
) match.
Example are bellow code. |
is cursor.
type Foo struct {
FooName string
}
func NewFoo() *Foo {
return &Foo{}
}
func (f *|
Default | 0 |
---|---|
Required | Any |
Type | int |
Example | 1 |
If current buffer has import "C"
also #include <foo.h>
and when you type
C.
, deoplete-go will display the C function in the foo.h
.
Simple example is below. |
is cursor.
package main
/*
#include <stdlib.h>
*/
import "C"
import (
"fmt"
)
func main() {
fmt.Printf()
C.|
}
Will return the pid_t
, malloc
, free
and more.
The real example uses libgit2.
package main
/*
#include <git2.h>
*/
import "C"
import (
"log"
"os"
"path/filepath"
"github.com/libgit2/git2go"
)
func main() {
repoPath := filepath.Join(os.Getenv("GOPATH"), "src/github.com/libgit2/git2go")
gitRepo, err := git.OpenRepository(repoPath)
C.git_blame_|
if err != nil {
log.Fatal(err)
}
commitOid, err := gitRepo.Head()
if err != nil {
}
}
Will return that completion list.
Now support current buffer only.
TODO: Support parses .c
, .h
file.
Default | |
---|---|
Required | Any |
Type | string |
Example | /opt/llvm/lib/libclang.dylib |
libclang shared library path option.
In darwin, libclang.dylib
, In Linux, libclang.so
.
Default | c11 |
---|---|
Required | Any |
Type | string |
Example | c99 |
C language standard version option.
If not set, deoplete-go uses c11
(latest) version.
Default | 0 |
---|---|
Required | No |
Type | boolean |
Example | 1 |
When enabled, deoplete-go will try to set GOOS
by checking the file name for
name_<OS>.go
. If not found, the file will be checked for a // +build <OS>
directive. If the file's OS doesn't match your OS (e.g. file_darwin.go
while on linux
), CGO_ENABLED=0
will also be set.
Note: There may be a 5-10 second delay if gocode
needs to compile the
platform-specific sources for the first time.
Default | 0 |
---|---|
Required | No |
Type | int |
Example | 1 |
When enabled, deoplete-go can complete external packages.
It is deprecated option. You should use the latest gocode. mdempsky/gocode#71
Default | 0 |
---|---|
Required | No |
Type | int |
Example | 1 |
When enabled, deoplete-go can complete builtin objects.
Default | 0 |
---|---|
Required | No |
Type | int |
Example | 1 |
When enabled, deoplete-go can complete standard library packages that are not explicitely imported yet.
Default | 0 |
---|---|
Required | No |
Type | int |
Example | 1 |
When enabled, deoplete-go will try the source importer when it fails to find a dependency on the GOPATH.
" neocomplete like
set completeopt+=noinsert
" deoplete.nvim recommend
set completeopt+=noselect
" Path to python interpreter for neovim
let g:python3_host_prog = '/path/to/python3'
" Skip the check of neovim module
let g:python3_host_skip_check = 1
" Run deoplete.nvim automatically
let g:deoplete#enable_at_startup = 1
" deoplete-go settings
let g:deoplete#sources#go#gocode_binary = $GOPATH.'/bin/gocode'
let g:deoplete#sources#go#sort_class = ['package', 'func', 'type', 'var', 'const']
- Parse included cgo (C, C++ language) headers on current buffer
ctags
will be blockingdeoplete.nvim
- Support static json caching
- See #19
- Support Go stdlib package
import "***"
name completion- This feature has been implemented in gocode. Thanks @nhooyr!
- Execute
gocode
binary instead of call vim function - Get and parse completion list of json format. such as
ycm
- When there is no candidate infomation, deoplete will cause an error
- Support fizzy matching