tsc are installed and in your PATH. There are detailed instructions below. (
tsc -v should be at least
4.2.4.) Get the typescript code for the jsonrpc protocol with
git clone firstname.lastname@example.org:microsoft vscode-languageserver-node.git or
git clone https://github.com/microsoft/vscode-languageserver-node.git
util.ts expects it to be in your HOME directory
If you want to reproduce the existing files you need to be on a branch with the same git hash that
util.ts expects, for instance,
git checkout 7b90c29
Code is generated and normalized by
tsc && node code.js && gofmt -w ts*.go
util.ts.) This generates 3 files in the current directory,
tsprotocol.go containing type definitions, and
tsclient.go containing API stubs.
util.ts use the Typescript compiler's API, which is introduced in their wiki.
util.ts are filled with heuristics and special cases. Therefore they are tied to a specific commit of
vscode-languageserver-node. The hash code of the commit is included in the header of the generated files and stored in the variable
go.ts. It is checked (see
util.ts) on every execution.
ts*.go files is only semi-automated. Please file an issue if the released version is too far behind.
gitHash by hand (
git() shows how to find the hash).
code.ts. This will likely fail because the heuristics don't cover some new case. For instance, some simple type like
string might have changed to a union type
string | [number,number]. Another example is that some generated formal parameter may have anonymous structure type, which is essentially unusable.
internal/lsp/protocol and try to build
gopls and its tests. This will likely fail because types have changed. Generally the fixes are fairly easy. Then run all the tests.
(The instructions are somewhat different for Linux and MacOS. They install some things locally, so
$PATH needs to be changed.)
sudo apt update (if you can't
sudo then these instructions are not helpful)
sudo apt install nodejs (this may install
/usr/bin/nodejs rather than
/usr/bin/node. For me,
/usr/bin/nodejs pointed to an actual executable
/etc/alternatives/nodejs, which should be copied to
sudo apt intall npm
bin directory in your path, perhaps?)
sudo npm install -g npm is the command.)
node -v and
npm -v should produce version numbers.
npm install typescript
node_modules (and a
tsc will be in
node_modules/.bin, so put that directory in your path.
tsc -v should print “Version 4.2.4” (or later). If not you may (as I did) have an obsolete tsc earlier in your path.
npm install @types/node (Without this there will be many incomprehensible typescript error messages.)