Open
Description
What did you do? (required: The issue will be closed when not provided)
- create a new empty project, initialize with
go mod init
- create a new
main.go
file with following-like contents:
package main
func main() {
report() // function defined in other file
}
- create a new file
other.go
in the same project's root directory:
package main
import "fmt"
// error in keyword fnc ⇒ func
fnc report() {
fomt.Println("vim-go") // error in module identifier fomt ⇒ fmt
}
- open
main.go
in gVim. Autocommands defined in .vimrc get executted. - open within the same session
other.go
with:edit
command. Autocommands are not executed.
defined in .vimrc
" This won't get executed when subsequent file contains an invalid syntax
autocmd FileType go setlocal tabstop=4 noexpandtab foldmethod=syntax
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, when other.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 to gopls
response which subsequently will prevent autocommands to be triggered.
Configuration (MUST fill this out):
vim-go version:
current, latest commit 5bed70d
vimrc
you used to reproduce:
vimrc
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:
GO111MODULE='' GOARCH='amd64' GOBIN='' GOCACHE='/home/dunric/.cache/go-build' GOENV='/home/dunric/.config/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='amd64' GOHOSTOS='linux' GOINSECURE='' GOMODCACHE='/home/dunric/.go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='linux' GOPATH='/home/dunric/.go' GOPRIVATE='' GOPROXY='https://proxy.golang.org,direct' GOROOT='/usr/lib/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/usr/lib/go/pkg/tool/linux_amd64' GOVCS='' GOVERSION='go1.21.5' GCCGO='gccgo' GOAMD64='v1' AR='ar' CC='gcc' CXX='g++' CGO_ENABLED='1' GOMOD='/home/dunric/Projects/Go/foo/go.mod' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1460767399=/tmp/go-build -gno-record-gcc-switches'
gopls version
gopls version
Output:
golang.org/x/tools/gopls (devel) golang.org/x/tools/gopls@(devel)
vim-go configuration:
vim-go configuration
g:go_auto_type_info = 1 g:go_term_enabled = 1 g:go_jump_to_error = 0 g:go_doc_popup_window = 0 g:go_get_update = 0 g:go_fold_enable = ['block', 'varconst', 'import'] g:go_auto_sameids = 1 g:go_metalinter_command = 'staticcheck' g:go_doc_balloon = 0 g:go_doc_url = 'http://localhost:6060' g:go_term_mode = 'vertical botright split' g:go_loaded_gosnippets = 1 g:go_fillstruct_mode = 'gopls' g:go_template_file = '/home/dunric/.vim/templates/skeleton.go' g:go_template_test_file = '/home/dunric/.vim/templates/skeleton_test.go' g:go_loaded_install = 1 g:go_updatetime = 800 g:go_doc_keywordprg_enabled = 1 g:go_diagnostics_level = 1 g:go_metalinter_autosave = 1 g:go_gopls_use_placeholders = v:true
filetype detection configuration:
filetype detection
filetype detection:ON plugin:ON indent:ON
Metadata
Metadata
Assignees
Labels
No labels