Fix #1358, fix #1369 - Lint the package on save for go vet instead

This commit is contained in:
John Eikenberry 2018-02-25 11:39:45 +00:00 committed by w0rp
parent 89f8d3e456
commit 4941bd8d0e
3 changed files with 71 additions and 2 deletions

View File

@ -1,10 +1,35 @@
" Author: neersighted <bjorn@neersighted.com> " Author: neersighted <bjorn@neersighted.com>
" Description: go vet for Go files " 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', { call ale#linter#Define('go', {
\ 'name': 'go vet', \ 'name': 'go vet',
\ 'output_stream': 'stderr', \ 'output_stream': 'stderr',
\ 'executable': 'go', \ 'executable': 'go',
\ 'command': 'go vet %t', \ 'command_callback': 'ale_linters#go#govet#GetCommand',
\ 'callback': 'ale#handlers#unix#HandleAsError', \ 'callback': 'ale_linters#go#govet#Handler',
\ 'lint_file': 1,
\}) \})

View File

@ -0,0 +1,16 @@
Before:
runtime ale_linters/go/govet.vim
call ale#test#SetDirectory('/testplugin/test/command_callback')
After:
Restore
call ale#linter#Reset()
call ale#test#RestoreDirectory()
Execute(The default command should be correct):
AssertEqual
\ 'cd ' . ale#Escape(expand('%:p:h')) . ' && '
\ . ' go vet .',
\ ale_linters#go#govet#GetCommand(bufnr(''))

View File

@ -0,0 +1,28 @@
Before:
runtime ale_linters/go/govet.vim
After:
call ale#linter#Reset()
Execute(The govet handler should return the correct filenames):
AssertEqual
\ [
\ {
\ 'lnum': 27,
\ 'col': 0,
\ 'text': 'some error',
\ 'type': 'E',
\ 'filename': ale#path#Simplify(expand('%:p:h') . '/test.go'),
\ },
\ {
\ 'lnum': 27,
\ 'col': 5,
\ 'text': 'some error with a column',
\ 'type': 'E',
\ 'filename': ale#path#Simplify(expand('%:p:h') . '/other.go'),
\ },
\ ],
\ ale_linters#go#govet#Handler(bufnr(''), [
\ 'test.go:27: some error',
\ 'other.go:27:5: some error with a column',
\ ])