summaryrefslogtreecommitdiff
path: root/ale_linters/go
diff options
context:
space:
mode:
authorJohn Eikenberry <jae@zhar.net>2018-02-25 11:39:45 +0000
committerw0rp <devw0rp@gmail.com>2018-02-25 11:39:45 +0000
commit4941bd8d0e5d64dea92892fe52c14d856518462c (patch)
treed6e5c3d20fc28c61fb26b9aba210668a3b4f5f0c /ale_linters/go
parent89f8d3e456713846d1ebdd934027ae7a910cf5f8 (diff)
downloadale-4941bd8d0e5d64dea92892fe52c14d856518462c.zip
Fix #1358, fix #1369 - Lint the package on save for go vet instead
Diffstat (limited to 'ale_linters/go')
-rw-r--r--ale_linters/go/govet.vim29
1 files changed, 27 insertions, 2 deletions
diff --git a/ale_linters/go/govet.vim b/ale_linters/go/govet.vim
index f5bb47a3..aae5969d 100644
--- a/ale_linters/go/govet.vim
+++ b/ale_linters/go/govet.vim
@@ -1,10 +1,35 @@
" Author: neersighted <bjorn@neersighted.com>
" Description: go vet for Go files
+"
+" Author: John Eikenberry <jae@zhar.net>
+" Description: updated to work with go1.10
+
+function! ale_linters#go#govet#GetCommand(buffer) abort
+ return ale#path#BufferCdString(a:buffer) . ' go vet .'
+endfunction
+
+function! ale_linters#go#govet#Handler(buffer, lines) abort
+ let l:pattern = '\v^([a-zA-Z]?:?[^:]+):(\d+):?(\d+)?:? ?(.+)$'
+ let l:output = []
+ let l:dir = expand('#' . a:buffer . ':p:h')
+
+ for l:match in ale#util#GetMatches(a:lines, l:pattern)
+ call add(l:output, {
+ \ 'filename': ale#path#GetAbsPath(l:dir, l:match[1]),
+ \ 'lnum': l:match[2] + 0,
+ \ 'col': l:match[3] + 0,
+ \ 'text': l:match[4],
+ \ 'type': 'E',
+ \})
+ endfor
+ return l:output
+endfunction
call ale#linter#Define('go', {
\ 'name': 'go vet',
\ 'output_stream': 'stderr',
\ 'executable': 'go',
-\ 'command': 'go vet %t',
-\ 'callback': 'ale#handlers#unix#HandleAsError',
+\ 'command_callback': 'ale_linters#go#govet#GetCommand',
+\ 'callback': 'ale_linters#go#govet#Handler',
+\ 'lint_file': 1,
\})