fatih / vim-go

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

Godef has been Invalid in code with "import C" #3624

Closed BraveSoilder closed 3 months ago

BraveSoilder commented 9 months ago

What did you do? (required: The issue will be closed when not provided)

:GoDef in code with “import C”

What did you expect to happen?

go to taget function

What happened instead?

 Report:vim-go: godef: no file found at search pos 455; 
 but when i deleted "import C",it suddenly successed to go to target function

Configuration (MUST fill this out):

vim-go version:

    code from branch of "master e2e7ad7c" and PluginUpdated by .vimrc

vimrc you used to reproduce:

vimrc ```vim let g:go_bin_path = expand("~/.vim/bin") let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_fields = 1 let g:go_highlight_types = 1 let g:go_highlight_operators = 1 let g:go_highlight_build_constraints = 1 let g:go_def_mode = 'godef' let g:go_fmt_command = "goimports" let g:go_play_open_browser = 0 let g:go_autodetect_gopath = 1 let g:go_list_type = "quickfix" let g:go_gopls_enabled = 1 au FileType go map (go-def) au FileType go nmap dv (go-def-vertical) " go-doc au FileType go nmap gd (go-doc) au FileType go nmap gv (go-doc-vertical) "go-debug au FileType go nmap :GoDebugBreakpoint au FileType go nmap ds :GoDebugStart au FileType go nmap dt :GoDebugStop let g:go_debug_mappings = { \ '(go-debug-continue)': {'key': ''}, \ '(go-debug-print)': {'key': ''}, \ '(go-debug-breakpoint)': {'key': ''}, \ '(go-debug-next)': {'key': ''}, \ '(go-debug-step)': {'key': ''}, \ '(go-debug-halt)': {'key': ''}, \ } let g:go_debug_windows = { \ 'vars': 'rightbelow 30vnew', \ 'stack': 'rightbelow 20new', \ } au FileType go nmap i (go-info) au FileType go nmap e (go-rename) ```

Vim version (first three lines from :version):

VIM - Vi IMproved 8.1

Go version (go version):

go version go1.21.5 linux/386

Go environment

go env Output:

GO111MODULE='on'
GOARCH='386'
GOBIN=''
GOCACHE='/home/myLinux/.cache/go-build'
GOENV=''/home/myLinux/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='386'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE=''/home/myLinux/godev/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH=''/home/myLinux/godev'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct'
GOROOT='/data/env/golang/default'
GOSUMDB='off'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/data/env/golang/default/pkg/tool/linux_386'
GOVCS=''
GOVERSION='go1.21.5'
GCCGO='gccgo'
GO386='sse2'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/dev/null'
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 -m32 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2194529222=/tmp/go-build -gno-record-gcc-switches'

gopls version

gopls version Output:

golang.org/x/tools/gopls v0.8.3
    golang.org/x/tools/gopls@v0.8.3 h1:Mxm94ix8oSARQ6svioO6SxKEYWT/VCP54/448LOHzrk=
bhcleek commented 9 months ago

This would be a problem for https://github.com/rogpeppe/godef then, because the error is actually coming from godef.

BraveSoilder commented 9 months ago

This would be a problem for https://github.com/rogpeppe/godef then, because the error is actually coming from godef.

ok,thanks for your help; but it looks like dosen't been maintained anymore

bhcleek commented 9 months ago

Yes, godef is old and the community has mostly moved on from it. I'd recommend changing your g:go_def_mode setting to use gopls instead (see :help g:go_def_mode). Alternatively, you could fix the problem in godef and install it locally.

bhcleek commented 8 months ago

@BraveSoilder I just want to make sure you know that you can use gopls instead of godef for jumping to definitions. Since 'gopls' is the default value for g:go_def_mode, you can either remove let g:go_def_mode = 'godef' from your .vimrc or you can change it to let g:go_def_mode = 'gopls' to start using gopls instead. You'll find that gopls is faster than godef.