1
0
mirror of https://github.com/golang/go synced 2024-11-11 22:20:22 -07:00

misc/vim: Separate package and package members.

This change allow to godoc:
    :Godoc github.com/mattn/go-gtk/gtk
    :Godoc github.com/mattn/go-gtk/gtk NewWindow
    :Godoc encoding/json
    :Godoc encoding/json Marshal

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14171043
This commit is contained in:
Yasuhiro Matsumoto 2013-10-02 08:52:51 +10:00 committed by David Symonds
parent ac3d6a56c9
commit fcee50c46e
2 changed files with 26 additions and 16 deletions

View File

@ -31,6 +31,12 @@ endif
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
let dirs = []
let words = split(a:CmdLine, '\s\+', 1)
if len(words) > 2
" TODO Complete package members
return []
endif
if executable('go')
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
if v:shell_error

View File

@ -31,7 +31,7 @@ if !exists('g:go_godoc_commands')
endif
if g:go_godoc_commands
command! -nargs=* -range -complete=customlist,go#complete#Package Godoc :call s:Godoc(<q-args>)
command! -nargs=* -range -complete=customlist,go#complete#Package Godoc :call s:Godoc(<f-args>)
endif
nnoremap <silent> <Plug>(godoc-keyword) :<C-u>call <SID>Godoc('')<CR>
@ -71,7 +71,7 @@ function! s:GodocWord(word)
echo "godoc command not found."
echo " install with: go get code.google.com/p/go.tools/cmd/godoc"
echohl None
return
return 0
endif
let word = a:word
silent! let content = system('godoc ' . word)
@ -80,12 +80,12 @@ function! s:GodocWord(word)
silent! let content = system('godoc ' . s:last_word.'/'.word)
if v:shell_error || !len(content)
echo 'No documentation found for "' . word . '".'
return
return 0
endif
let word = s:last_word.'/'.word
else
echo 'No documentation found for "' . word . '".'
return
return 0
endif
endif
let s:last_word = word
@ -96,30 +96,34 @@ function! s:GodocWord(word)
silent! normal gg
setlocal nomodifiable
setfiletype godoc
return 1
endfunction
function! s:Godoc(...)
let word = join(a:000, ' ')
if !len(word)
if !len(a:000)
let oldiskeyword = &iskeyword
setlocal iskeyword+=.
let word = expand('<cword>')
let &iskeyword = oldiskeyword
let word = substitute(word, '[^a-zA-Z0-9\\/._~-]', '', 'g')
let words = split(word, '\.\ze[^./]\+$')
else
let words = a:000
endif
let word = substitute(word, '[^a-zA-Z0-9\\/._~-]', '', 'g')
let words = split(word, '\.')
if !len(words)
return
endif
call s:GodocWord(words[0])
if len(words) > 1
if search('^\%(const\|var\|type\|\s\+\) ' . words[1] . '\s\+=\s')
return
if s:GodocWord(words[0])
if len(words) > 1
if search('^\%(const\|var\|type\|\s\+\) ' . words[1] . '\s\+=\s')
return
endif
if search('^func ' . words[1] . '(')
silent! normal zt
return
endif
echo 'No documentation found for "' . words[1] . '".'
endif
if search('^func ' . words[1] . '(')
return
endif
echo 'No documentation found for "' . word . '".'
endif
endfunction