From efced7c6e984f26b4c275b19ba61f2c2629d95ea Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Tue, 2 Jul 2013 15:24:09 +1000 Subject: [PATCH] misc/vim: Allow multiple GOOS/GOARCH. R=golang-dev, dsymonds, dominik.honnef CC=golang-dev https://golang.org/cl/9293043 --- misc/vim/autoload/go/complete.vim | 45 ++++++++++++++++++------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/misc/vim/autoload/go/complete.vim b/misc/vim/autoload/go/complete.vim index cc1013b7d33..80fa451583a 100644 --- a/misc/vim/autoload/go/complete.vim +++ b/misc/vim/autoload/go/complete.vim @@ -32,39 +32,46 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos) let dirs = [] if executable('go') - let goroot = substitute(system('go env GOROOT'), '\n', '', 'g') - if v:shell_error - echo '\'go env GOROOT\' failed' - endif + let goroot = substitute(system('go env GOROOT'), '\n', '', 'g') + if v:shell_error + echomsg '\'go env GOROOT\' failed' + endif else - let goroot = $GOROOT + let goroot = $GOROOT endif if len(goroot) != 0 && isdirectory(goroot) - let dirs += [ goroot ] + let dirs += [goroot] endif - let workspaces = split($GOPATH, ':') + let pathsep = ':' + if s:goos == 'windows' + let pathsep = ';' + endif + let workspaces = split($GOPATH, pathsep) if workspaces != [] - let dirs += workspaces + let dirs += workspaces endif if len(dirs) == 0 - " should not happen - return [] + " should not happen + return [] endif let ret = {} for dir in dirs - let root = expand(dir . '/pkg/' . s:goos . '_' . s:goarch) - for i in split(globpath(root, a:ArgLead.'*'), "\n") - if isdirectory(i) - let i .= '/' - elseif i !~ '\.a$' - continue - endif - let i = substitute(substitute(i[len(root)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g') - let ret[i] = i + " this may expand to multiple lines + let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n") + for r in root + for i in split(globpath(r, a:ArgLead.'*'), "\n") + if isdirectory(i) + let i .= '/' + elseif i !~ '\.a$' + continue + endif + let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g') + let ret[i] = i + endfor endfor endfor return sort(keys(ret))