LIGO Language Server
Serokell created a language server for the LIGO smart contract language that improved the LIGO developer experience.
LIGO is a developer-friendly smart contract language for the Tezos blockchain. It has multiple dialects that enable developers to write smart contract code in a language that’s convenient for them.
The team behind LIGO tasked us with improving the development and debugging experience of LIGO, which lacked language-specific features (autocomplete, go-to-definition, etc.) in most common code editors & IDEs.
We implemented a language server, which is the standard solution for introducing language-specific functionality to code editors and IDEs nowadays.
It enabled LIGO to have a better developer experience for all LIGO dialects across all the common code editors.
What is a language server?
A language server is a way to provide language-specific features to multiple code editors at once. Let’s delve into what that means.
A code editor is a text editor that is designed for writing software. To support language-specific features, these editors need to understand the programming languages that are used.


A language server provides an editor or IDE with extra functionality such as autocomplete, go-to-definition, and multiple other features that make developing, debugging, and refactoring much more straightforward. To communicate with the editor, it uses the Language Server Protocol (LSP).
LSP specifies how language servers communicate with different editors such as Emacs, Vim, and VSCode.
The language server provides access
to the following features:

All of these help Tezos developers to be much more productive when working with LIGO smart contract projects.
We decided to support the three most common editor choices: Emacs, Vim, and VSCode. Emacs and Vim support came automatically via the lsp-mode and vim-lsp packages, respectively. For VSCode, we built an extension.
Tech Stack
Haskell
for Web IDE and debugger
LSP in OCaml
for implementing the LSP server
Linol
for the introduction of LSP requests
Summary
We built a language server that enables code editors to have access to language-specific features when working with LIGO and ensured that the language server is supported by popular editor choices – Emacs, Vim, and VSCode.

Our Accomplishment
Developed the LIGO debugger.
Added support for error recovery in their parsers.
Introduced formal verification of the LIGO compiler.
Created a new web-based development environment (WebIDE) for LIGO.

We are glad to be helpful and always work with our partners on a long term basis, providing not only software development services, but also proactively searching for further improvements that answer customer needs.