summaryrefslogtreecommitdiff
path: root/ale_linters/go/gobuild.vim
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2018-02-04 13:55:09 +0000
committerw0rp <devw0rp@gmail.com>2018-02-04 13:55:09 +0000
commit33b3331b0499e502f01730af60fb0e9b5a30951f (patch)
tree5d0ee32e8e8fa4b4712ccd54a8bf500a16481701 /ale_linters/go/gobuild.vim
parent0f822b063cb9553c9e00bc63d0184ba8577e6248 (diff)
downloadale-33b3331b0499e502f01730af60fb0e9b5a30951f.zip
#1206 Add support for setting options for gobuild, and escape paths better
Diffstat (limited to 'ale_linters/go/gobuild.vim')
-rw-r--r--ale_linters/go/gobuild.vim21
1 files changed, 17 insertions, 4 deletions
diff --git a/ale_linters/go/gobuild.vim b/ale_linters/go/gobuild.vim
index 783b9e0a..068877a3 100644
--- a/ale_linters/go/gobuild.vim
+++ b/ale_linters/go/gobuild.vim
@@ -1,9 +1,14 @@
" Author: Joshua Rubin <joshua@rubixconsulting.com>, Ben Reedy <https://github.com/breed808>,
" Jeff Willette <jrwillette88@gmail.com>
" Description: go build for Go files
-
" inspired by work from dzhou121 <dzhou121@gmail.com>
+call ale#Set('go_gobuild_options', '')
+
+function! ale_linters#go#gobuild#ResetEnv() abort
+ unlet! s:go_env
+endfunction
+
function! ale_linters#go#gobuild#GoEnv(buffer) abort
if exists('s:go_env')
return ''
@@ -13,6 +18,8 @@ function! ale_linters#go#gobuild#GoEnv(buffer) abort
endfunction
function! ale_linters#go#gobuild#GetCommand(buffer, goenv_output) abort
+ let l:options = ale#Var(a:buffer, 'go_gobuild_options')
+
if !exists('s:go_env')
let s:go_env = {
\ 'GOPATH': a:goenv_output[0],
@@ -20,10 +27,16 @@ function! ale_linters#go#gobuild#GetCommand(buffer, goenv_output) abort
\}
endif
+ let l:gopath_env_command = has('win32')
+ \ ? 'set GOPATH=' . ale#Escape(s:go_env.GOPATH) . ' && '
+ \ : 'GOPATH=' . ale#Escape(s:go_env.GOPATH) . ' '
+
" Run go test in local directory with relative path
- return 'GOPATH=' . s:go_env.GOPATH
- \ . ' cd ' . fnamemodify(bufname(a:buffer), ':.:h')
- \ . ' && go test -c -o /dev/null ./'
+ return l:gopath_env_command
+ \ . ale#path#BufferCdString(a:buffer)
+ \ . 'go test'
+ \ . (!empty(l:options) ? ' ' . l:options : '')
+ \ . ' -c -o /dev/null ./'
endfunction
function! ale_linters#go#gobuild#GetMatches(lines) abort