YAKINDU Solidity Language Server — made for all your favorite IDEs

It was 3 months ago when the YAKINDU Solidity Team has been selected as a grantee for Wave 3 of the EF Grants Program. It has been a busy and productive time. Especially during Devcon4 we met a lot of interesting and inspiring people and gathered valuable insights into the problems and needs of the developer community. We were also able to grow our own team and refined our initial plans. And before I forget to mention we also #buidl some interesting stuff ;-).

YAKINDU@EFDevcon4

For us, Devcon4 started with the grantee science fair, where all grantees were able to present their work. We got some really useful feedback from the developer community and the welcoming and inviting atmosphere was absolutely contagious.

Besides some really inspiring talks, we met the Solidity, Remix and Truffle teams and had a productive exchange of ideas and potential synergies. The discussions at Devcon had some impact on our roadmap and the order in which we plan to implement the next features. Also, completely new topics like a debugger integration were discussed and added to the roadmap. But most importantly, we already finished one major milestone that was initially scheduled for mid of 2019 — the YAKINDU Solidity language server. Let us have a look at the current state of development.

The YAKINDU Solidity Tools Language Server

As we started with YAKINDU Solidity Tools one year ago, we had the vision to support not only Eclipse but all the other lightweight editors. This was written in our introductory blog post about YAKINDU Solidity Tools one year ago:

In the future you can use your favorite editor like Atom, Visual Studio Code, or any other editor that supports LSP and thus benefit from most of the features. Good ol’ Eclipse will do the hard work under the hood and you won’t even notice.

And the future has arrived ;-). Since the time of writing, we put development effort into transforming the Eclipse-based Solidity IDE into a language server. The feature set provided by the YAKINDU Solidity Tools language server includes code completion, code formatting, quick fixes, outline, code navigation, and rename refactoring. Client implementations are currently available for VSCode, Atom and more. If you want to learn more about the Language Server Protocol check out the specification. Let's see it in action.

YAKINDU Solidity Tools for Visual Studio Code

Just a few lines of TypeScript code and our language server is running in Visual Studio Code:

There is already a really good and popular (more than 300T downloads already!) Visual Studio Code plugin for Solidity maintained by Juan Blanco available in the Visual Studio marketplace. That plugin has a much broader scope as our language server and provides — among other things — seamless compiler and linter integration. Instead of publishing another VSCode Solidity plugin to the marketplace, we discussed with Juan how we can integrate our language server into his plugin to add some missing features and improve existing ones.

More IDEs to come

To prototype the Atom integration, just a few lines of Javascript is required.

And even if you want your IDE to entirely work in the web browser, we may have a nice little Christmas present for you ;-). All the stuff can be found on GitHub. If you need help to integrate our language server with another IDE let us know!