[gnome-builder] Change language server implementation to gopls for Go



commit 26cda7d08e072a81f9a6e5b0af6b806bd1336940
Author: Satyajit Ranjeev <s ranjeev in>
Date:   Tue Feb 4 23:34:15 2020 +0000

    Change language server implementation to gopls for Go
    
    The standard Language Sever implmentation for Go is not gopls. This commit updates the plugin to use it 
instead of go-langserver.

 src/plugins/go-langserv/README.md               | 41 ++++++++-----------------
 src/plugins/go-langserv/go_langserver_plugin.py |  8 ++---
 2 files changed, 17 insertions(+), 32 deletions(-)
---
diff --git a/src/plugins/go-langserv/README.md b/src/plugins/go-langserv/README.md
index 86dc2fa42..4f8ebd4fa 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 efd52b89a..e26cccac1 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.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]