| " Copyright 2011 The Go Authors. All rights reserved. | |
| " Use of this source code is governed by a BSD-style | |
| " license that can be found in the LICENSE file. | |
| " | |
| " This file provides a utility function that performs auto-completion of | |
| " package names, for use by other commands. | |
| let s:goos = $GOOS | |
| let s:goarch = $GOARCH | |
| if len(s:goos) == 0 | |
| if exists('g:golang_goos') | |
| let s:goos = g:golang_goos | |
| elseif has('win32') || has('win64') | |
| let s:goos = 'windows' | |
| elseif has('macunix') | |
| let s:goos = 'darwin' | |
| else | |
| let s:goos = '*' | |
| endif | |
| endif | |
| if len(s:goarch) == 0 | |
| if exists('g:golang_goarch') | |
| let s:goarch = g:golang_goarch | |
| else | |
| let s:goarch = '*' | |
| endif | |
| endif | |
| function! go#complete#Package(ArgLead, CmdLine, CursorPos) | |
| let goroot = $GOROOT | |
| if len(goroot) == 0 | |
| " should not occur. | |
| return [] | |
| endif | |
| let ret = {} | |
| let root = expand(goroot.'/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 | |
| endfor | |
| return sort(keys(ret)) | |
| endfunction |