fatih / vim-go

Go development plugin for Vim
https://www.patreon.com/bhcleek
Other
15.98k stars 1.45k forks source link

`g:go_metalinter_autosave_enabled` option can be set to not use any linter #3589

Closed jinleileiking closed 10 months ago

jinleileiking commented 12 months ago

I only want to run :GoBuild when save file :w

image
bhcleek commented 11 months ago

Vim-go does not have an option to build on save. It's not too difficult to set such a thing up if you want it, though, by leveraging autocommands.

But I want to be clear on what you're asking for. Are you asking for a new feature, asking for help to know how to build on save with vim-go, asking how to keep other things from running when saving, or something else entirely?

bhcleek commented 11 months ago

I see the title changed from what it was originally. Are you saying that you're not seeing the metalinter run when saving or are you concerned that saving does not build when g:go_metalinter_autosave is enabled?

bhcleek commented 11 months ago

Closing for lack of feedback.

jinleileiking commented 11 months ago

I see the title changed from what it was originally. Are you saying that you're not seeing the metalinter run when saving or are you concerned that saving does not build when g:go_metalinter_autosave is enabled?

I just enable autosave of errcheck.

the steps of vim is:

  1. :w
  2. call metalinter_autosave cmd errcheck
  3. call :GoBuild

What I want is do not call any checker like errcheck.

I you give it an "". I will enable the default linters.

jinleileiking commented 11 months ago

@bhcleek

bhcleek commented 11 months ago

I think what you want is to not call the metalinter when you run :GoBuild. Is that right?

If so, then you'll need to disable the metalinter by using g:go_metalinter_autosave. :GoBuild has to before building so that the files will be persisted to disk so they're available to go build.

jinleileiking commented 10 months ago

I think what you want is to not call the metalinter when you run :GoBuild. Is that right?

I want not call the metalinter when I run :w (save file to disk)

my linters are controlled by ale

bhcleek commented 10 months ago

If you don't want to call the metalinter when saving a file, then disable by leveraging g:go_metalinter_autosave. You can either remove let g:go_metalinter_autosave = 1 from your vimrc or change it to let g:go_metalinter_autosave = 0

jinleileiking commented 10 months ago

Afaik, if let g:go_metalinter_autosave = 1, when :w vim-go will call metalinter and then call :GoBuild.

I just want: when :w vim-go only call :GoBuild

bhcleek commented 10 months ago

g:go_metalinter_autosave does not cause a build. Builds do not happen on save automatically. But if that's something you want, you can create your own autocmd to do it.

jinleileiking commented 10 months ago

I seem to understand what's going on. The metalinter I use is golangci-lint. If the codes cannot go build , golangci-lint will fail. So if linters is set to empty, a build will be executed indirectly. So, Can the enabled linter be set to none? Currently empty means that default linters are enabled.

bhcleek commented 10 months ago

To prevent the metalinter from executing when writing the file, use let g:go_metalinter_autosave = 0.