Open dunric opened 5 months ago
I'm only able to duplicate a problem with the folding when other.go
is opened after main.go
. The other settings are applied correctly. I suspect that what's going on here is a Vim bug of some sort, not a vim-go bug. Some quick testing seems to support that idea.
The folding is as expected when other.go
is opened after main.go
when setting foldmethod
is done unconditionally (e.g. not as part of an auto command). And interestingly, executing :setlocal foldmethod=syntax
folds correctly even when setting foldmethod
via the autocommand didn't cause the intended effect.
As far as I can tell, this isn't really a vim-go bug, especially given how the order file opening impacts the results.
@bhcleek Thank you for investigating the issue, however I beg to differ this issue is of stock Vim and not of vim-go plugin. I've experimented with removing vim-go
and using only the rudimentary Go support coming with plain Vim (compiler, ftplugin, indentation & syntax highlight) and the issue didn't manifest. I've altered tabstop
and foldmethod
FileType plugin autocommand settings and they were correctly applied.
I hear you, @dunric. What's throwing me is that the I see tabstop
applied correctly in all scenarios. I've also seen foldmethod
get applied correctly with vim-go when I edit other.go
very quickly after opening main.go
. Something is amiss, but it's hard to track down, and I'm not yet sure what's going on.
Interestingly, it appears that editing other.go
again fixes the folding 🤔 I'm really not sure what to make of this. Vim-go doesn't do anything specific with regard to setting the foldmethod.
Given that expandtab seems to be being applied correctly in all cases and that vim-go does not do anything specific with foldmethod, I'm still inclined to believe that this is some kind of Vim bug. Clearly, if it is a Vim bug, it's triggered by conditions that vim-go creates. I'll continue to see if I can narrow it down, but currently I'm stumped.
I finally have a replication path that I can use to start tracking down the root cause.
Disabling diagnostics highlighting (i.e. g:go_diagnostics_level
) results in the expected behavior. Diagnostic highlighting does a few things with autocmds and also sets text properties. I'm not yet sure exactly what's triggering the errant behavior in Vim, but I suspect it's something to do with setting an autocmd or text properties while Vim is also processing for folding that causes the folds to not be applied when the foldmethod
is syntax
.
What did you do? (required: The issue will be closed when not provided)
go mod init
main.go
file with following-like contents:func main() { report() // function defined in other file }
main.go
in gVim. Autocommands defined in .vimrc get executted.other.go
with:edit
command. Autocommands are not executed.defined in
.vimrc
What did you expect to happen?
Autocommands for
FileType go
will be triggered, despite some syntactic errors, just based on file's extension.go
.What happened instead?
Autocommands were not run, when
other.go
was opened as the second file. Curiously, whenother.go
is opened as the first one, FileType based autocommands are executed, despite the same contents with syntactic errors.Autocommands are also executed when
other.go
contents is fixed and valid, even when opened as the second one. Seems it may be related togopls
response which subsequently will prevent autocommands to be triggered.Configuration (MUST fill this out):
vim-go version:
current, latest commit 5bed70defbd46fc4eb7d80f7eecd26746b50ee00
vimrc
you used to reproduce:vimrc
```vim set nocompatible filetype on filetype plugin on filetype plugin indent on autocmd FileType go setlocal tabstop=4 noexpandtab foldmethod=syntax ```Vim version (first three lines from
:version
):VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Dec 15 2023 17:06:05)
Go version (
go version
):go version go1.21.5 linux/amd64
Go environment
go env
Output:gopls version
gopls version
Output:vim-go configuration:
vim-go configuration
filetype detection configuration:
filetype detection