@@ -110,7 +110,11 @@ function! go#lint#Gometa(bang, autosave, ...) abort
110110 " Parse and populate our location list
111111
112112 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
114118 endif
115119 call go#list#ParseFormat (l: listtype , l: errformat , l: messages , l: for , s: preserveerrors (a: autosave , l: listtype ))
116120
@@ -396,7 +400,11 @@ function! s:lint_job(metalinter, args, bang, autosave)
396400 if a: autosave
397401 let l: opts .for = ' GoMetaLinterAutoSave'
398402 " 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
400408 let l: opts .preserveerrors = funcref (' s:preserveerrors' , [a: autosave ])
401409 endif
402410
@@ -423,15 +431,17 @@ endfunction
423431function ! s: golangcilintcmd (bin_path, haslinter)
424432 let l: cmd = [a: bin_path ]
425433 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" ]
427436 let l: cmd += [' --build-tags' , go#config#BuildTags ()]
437+ let l: cmd += [' --path-mode' , ' abs' ]
428438 " do not use the default exclude patterns, because doing so causes golint
429439 " problems about missing doc strings to be ignored and other things that
430440 " golint identifies.
431- let l: cmd += [" --exclude-use-default=false" ]
441+ " let l:cmd += ["--exclude-use-default=false"]
432442
433443 if a: haslinter
434- let l: cmd += [" --disable-all " ]
444+ let l: cmd += [" --default=none " ]
435445 endif
436446
437447 return l: cmd
@@ -446,6 +456,8 @@ function! s:metalinterautosavecomplete(metalinter, filepath, job, exit_code, mes
446456 return
447457 endif
448458
459+ let l: pathRE = printf (' ^%s:' , a: filepath )
460+
449461 let l: idx = 0
450462 for l: item in a: messages
451463 " 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
458470 "
459471 " golangci-lint may provide a relative path to the file, so allow that,
460472 " too.
461- let l: pathRE = printf (' ^\%%(\.%s\)\?%s' , go#util#PathSep (), a: filepath )
462473 if (l: item = ~# l: pathRE && l: item !~# l: pathRE . ' :\d\+: : # ' ) || (a: metalinter == ' golangci-lint' && l: item = ~# ' ^level=' )
463474 let l: idx += 1
464475 continue
0 commit comments