mirror of https://github.com/golang/go.git
misc/vim: Autocompletion for :Godoc command
R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/14259043
This commit is contained in:
parent
94a6511b7f
commit
45b830ed31
|
|
@ -28,13 +28,31 @@ if len(s:goarch) == 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
function! go#complete#PackageMembers(package, member)
|
||||||
|
silent! let content = system('godoc ' . a:package)
|
||||||
|
if v:shell_error || !len(content)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
|
||||||
|
try
|
||||||
|
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
|
||||||
|
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
|
||||||
|
let candidates =
|
||||||
|
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
|
||||||
|
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
|
||||||
|
return filter(candidates, '!stridx(v:val, a:member)')
|
||||||
|
catch
|
||||||
|
return []
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
||||||
let dirs = []
|
let dirs = []
|
||||||
|
|
||||||
let words = split(a:CmdLine, '\s\+', 1)
|
let words = split(a:CmdLine, '\s\+', 1)
|
||||||
if len(words) > 2
|
if len(words) > 2
|
||||||
" TODO Complete package members
|
" Complete package members
|
||||||
return []
|
return go#complete#PackageMembers(words[1], words[2])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if executable('go')
|
if executable('go')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue