Solidity Language Server Functions
Here is a demo of a VS Code extension that uses this:
Here we have "Language Server" functions for Solidity via the npm package solc
.
The functions are the underlying workhorse function that would be used to implement the Microsoft Language Server Protocol Specification which is defined here.
To get started and make sure what we have is complete, there is a prototype using this on the client side to provide a VSCode extension for Solidity.
I hope to incorporate this in the remix, etheratom, VSCode solidity and other JavaScript projects that benefit from the information in Solidity's AST.
Prerequisites...
You need to have installed:
Node version 12 and VSCode Problems
One of the npm dependencies is solc
. This npm package has a dependency on the scrypt
cryptographic package. Nodejs version 12
doesn't work with this. See barrysteyn/node-scrypt#193. I developed and tested this on node version 10.16.0.
When used as a client library with the VSCode extension, I also needed to replace script.js
with script-js
which is currently in the web3-eth-accounts
package. Otherwise, VSCode will crash silently. When used inside VSCode with the language server protocol, this won't happen.
Installing from NPM
$ npm install solc-lsp
Installing from the github repository
Clone the repository.
$ git clone https://github.com/rocky/solc-lsp.git
Cloning into 'solc-lsp
remote: Enumerating objects: 169, done.
...
$ cd solc-lsp
$ npm install
Testing
$ npm test
This code runs solc
. Specific versions of the Solidity compiler are downloaded when it is detected they are needed.
Thanks
A big thanks to my employer, ConsenSys, for giving me the opportunity to work on this and providing the funding for this project.