In emacs, using gopls but it cannot find go
on my path. But it's there, I can run it. Reaching out to the community to see if I'm missing something. I can run a basic gin server without issue.
Using this config, from docs.
Output:
panic: err: exec: "go": executable file not found in $PATH: stderr:
goroutine 73 [running]:
golang.org/x/tools/internal/lsp/debug.PrintVersionInfo.func2()
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/debug/info.go:58 +0x1c3
golang.org/x/tools/internal/lsp/debug.section(0x1a2d520, 0xc00013de60, 0x0, 0x18cda9a, 0x7, 0xc0003bb588)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/debug/info.go:69 +0x319
golang.org/x/tools/internal/lsp/debug.PrintVersionInfo(0x1a40560, 0xc000226c60, 0x1a2d520, 0xc00013de60, 0x1, 0x0)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/debug/info.go:52 +0x1a7
golang.org/x/tools/internal/lsp.(*Server).initialized(0xc000230080, 0x1a40560, 0xc000226c60, 0x1fa2ef0, 0x0, 0x0)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/general.go:163 +0x1a3
golang.org/x/tools/internal/lsp.(*Server).Initialized(0xc000230080, 0x1a40560, 0xc000226c60, 0x1fa2ef0, 0x1fa2ef0, 0x0)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/server_gen.go:112 +0x49
golang.org/x/tools/internal/lsp/protocol.ServerHandler.func1(0x1a40560, 0xc000226c60, 0xc00022cd80, 0x1c650b5, 0x1f77a40)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/protocol/tsserver.go:97 +0x757
golang.org/x/tools/internal/lsp/lsprpc.handshaker.func1(0x1a40560, 0xc000226c60, 0xc00022cd80, 0x0, 0x0)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/lsp/lsprpc/lsprpc.go:531 +0x505
golang.org/x/tools/internal/jsonrpc2.MustReply.func1(0x1a40560, 0xc000226c60, 0xc00022cd80, 0x1007aaf, 0xc0002901d8)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/jsonrpc2/handler.go:54 +0x47
golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1.2(0xc00009eb40, 0xc000226de0, 0xc000232130, 0x1a40560, 0xc000226c60, 0xc00022cd80)
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/jsonrpc2/handler.go:110 +0x6c
created by golang.org/x/tools/internal/jsonrpc2.AsyncHandler.func1
/Users/seanh/go/pkg/mod/golang.org/x/[email protected]/internal/jsonrpc2/handler.go:107 +0x187
Process gopls stderr finished
A guess: The
PATH
env var might be different in Emacs compared to whatever other shell you're running. You can check with(getenv "PATH")
in Emacs, and you can set it withAlso if you start Emacs from the same shell that can find
gopls
, Emacs should have the samePATH
var and everything should work.As far as why the
PATH
s are different, it has to do with how you start Emacs and your shell.