diff --git a/src/plugins/go-langserv/README.md b/src/plugins/go-langserv/README.md index 86dc2fa4251adc1e33dc20fdb03ab25dff0e574d..4f8ebd4fa02ec9a9256861bc7680da74aca4e83d 100644 --- a/src/plugins/go-langserv/README.md +++ b/src/plugins/go-langserv/README.md @@ -1,9 +1,6 @@ -# a quick langserver plugin for go +# A Language server plugin for go -Meant to wrap [Sourcegraph's](https://github.com/sourcegraph/go-langserver) -`go-langserver`. It's a straight copy & paste of the rust-langserver -implementation, with some sketchy additional `bash` magic to try and better -support flatpak-packaged Builder. +This plugin provides an implementation of the language server support for Go. `gopls` is the new standard language server implementation for Go which this plugin uses. ## Installing and testing @@ -12,28 +9,16 @@ support flatpak-packaged Builder. ``` export GOPATH=$HOME/go export PATH="$GOPATH/bin:$PATH" -go get github.com/sourcegraph/go-langserver -go install github.com/sourcegraph/go-langserver ``` -3. Launch Builder, open ~/go/src/github.com/sourcegraph as a project -4. Right click on a method and click 'go to definition' - -## Runtime configuration -Go has a simple environment convention for managing source code. All user code -imports come from $GOPATH/src, so to manage separate projects, you can change -your $GOPATH- think of it as a one-variable equivalent to Python's -`virtualenv`. Developing inside of $GOPATH/src/$PROJECT is the encouraged way -to do things, but you don't have to. Newer versions of Go define a default -'global scrum' $GOPATH in $HOME/go. - -The standard library is in $GOROOT/src. If you manually install `go` to a place -that isn't `/usr/local/go`, you'll need to set this, but normally you don't have -to worry about it. +3. Install `gopls`, refer https://github.com/golang/tools/blob/master/gopls/README.md +Either +``` +go get golang.org/x/tools/gopls@latest +``` +or if it fails +``` +GO111MODULE=on go get golang.org/x/tools/gopls@latest +``` +4. Launch Builder, open any Go source file +5. Right click on a method and click 'go to definition' -## Bugs: -* I have to disable the rust-langserver extension, or else it seems to take - precedence -* `go-langserver` claims to support formatting, but I don't know how to ask - Builder to ask it to do that -* `go-langserver` has recently merged completion support, but it seems crashy - from Builder diff --git a/src/plugins/go-langserv/go_langserver_plugin.py b/src/plugins/go-langserv/go_langserver_plugin.py index efd52b89a4c620467a948a935b87a1ee330c1a89..e26cccac1184f7975bf49b57987c73edba27c526 100644 --- a/src/plugins/go-langserv/go_langserver_plugin.py +++ b/src/plugins/go-langserv/go_langserver_plugin.py @@ -35,10 +35,10 @@ class GoService(Ide.Object): supervisor.stop() def _which_go_lanserver(self): - path = os.path.expanduser('~/go/bin/go-langserver') + path = os.path.expanduser('~/go/bin/gopls') if os.path.exists(path): return path - return "go-langserver" + return "gopls" def _ensure_started(self): # To avoid starting the process unconditionally at startup, lazily @@ -62,9 +62,9 @@ class GoService(Ide.Object): launcher.push_argv("/bin/bash") launcher.push_argv("--login") launcher.push_argv("-c") - launcher.push_argv('exec %s %s -gocodecompletion' % ( + launcher.push_argv('exec %s %s serve' % ( self._which_go_lanserver(), - "-trace" if DEV_MODE else "")) + "-debug" if DEV_MODE else "")) # Spawn our peer process and monitor it for # crashes. We may need to restart it occasionally.