@@ -110,7 +110,11 @@ function! go#lint#Gometa(bang, autosave, ...) abort
110
110
" Parse and populate our location list
111
111
112
112
if a: autosave
113
- call s: metalinterautosavecomplete (l: metalinter , fnamemodify (expand (' %:p' ), ' :.' ), 0 , 1 , l: messages )
113
+ if l: metalinter == ' golangci-lint'
114
+ call s: metalinterautosavecomplete (l: metalinter , expand (' %:p' ), 0 , 1 , l: messages )
115
+ elseif l: metalinter == ' staticcheck'
116
+ call s: metalinterautosavecomplete (l: metalinter , fnamemodify (expand (' %:p' ), ' :.' ), 0 , 1 , l: messages )
117
+ endif
114
118
endif
115
119
call go#list#ParseFormat (l: listtype , l: errformat , l: messages , l: for , s: preserveerrors (a: autosave , l: listtype ))
116
120
@@ -396,7 +400,11 @@ function! s:lint_job(metalinter, args, bang, autosave)
396
400
if a: autosave
397
401
let l: opts .for = ' GoMetaLinterAutoSave'
398
402
" s:metalinterautosavecomplete is needed for staticcheck and golangci-lint
399
- let l: opts .complete = funcref (' s:metalinterautosavecomplete' , [a: metalinter , expand (' %:p:t' )])
403
+ if a: metalinter == ' golangci-lint'
404
+ let l: opts .complete = funcref (' s:metalinterautosavecomplete' , [a: metalinter , expand (' %:p' )])
405
+ elseif a: metalinter == ' staticcheck'
406
+ let l: opts .complete = funcref (' s:metalinterautosavecomplete' , [a: metalinter , expand (' %:p:t' )])
407
+ endif
400
408
let l: opts .preserveerrors = funcref (' s:preserveerrors' , [a: autosave ])
401
409
endif
402
410
@@ -423,15 +431,17 @@ endfunction
423
431
function ! s: golangcilintcmd (bin_path, haslinter)
424
432
let l: cmd = [a: bin_path ]
425
433
let l: cmd += [" run" ]
426
- let l: cmd += [" --print-issued-lines=false" ]
434
+ let l: cmd += [" --show-stats=false" ]
435
+ let l: cmd += [" --output.text.print-issued-lines=false" ]
427
436
let l: cmd += [' --build-tags' , go#config#BuildTags ()]
437
+ let l: cmd += [' --path-mode' , ' abs' ]
428
438
" do not use the default exclude patterns, because doing so causes golint
429
439
" problems about missing doc strings to be ignored and other things that
430
440
" golint identifies.
431
- let l: cmd += [" --exclude-use-default=false" ]
441
+ " let l:cmd += ["--exclude-use-default=false"]
432
442
433
443
if a: haslinter
434
- let l: cmd += [" --disable-all " ]
444
+ let l: cmd += [" --default=none " ]
435
445
endif
436
446
437
447
return l: cmd
@@ -446,6 +456,8 @@ function! s:metalinterautosavecomplete(metalinter, filepath, job, exit_code, mes
446
456
return
447
457
endif
448
458
459
+ let l: pathRE = printf (' ^%s:' , a: filepath )
460
+
449
461
let l: idx = 0
450
462
for l: item in a: messages
451
463
" leave in any messages that report errors about a:filepath or that report
@@ -458,7 +470,6 @@ function! s:metalinterautosavecomplete(metalinter, filepath, job, exit_code, mes
458
470
"
459
471
" golangci-lint may provide a relative path to the file, so allow that,
460
472
" too.
461
- let l: pathRE = printf (' ^\%%(\.%s\)\?%s' , go#util#PathSep (), a: filepath )
462
473
if (l: item = ~# l: pathRE && l: item !~# l: pathRE . ' :\d\+: : # ' ) || (a: metalinter == ' golangci-lint' && l: item = ~# ' ^level=' )
463
474
let l: idx += 1
464
475
continue
0 commit comments