Effortless Language Servers
The goal of the Effortless Language Servers project is to enable the creation of language servers for dynamic languages based on a share language-agnostic infrastructure.
Building a language server with standard features should not take more than a few hundred lines of code.
Currently, we support the following features:
Supported Languages and IDEs
We are building on top of the Language Server Protocol, but provide currently only a VS code extension.
The following languages are supported:
Additionally, we also provide support for the Debug Adapter Protocol for SOMns programs.
Screenshot of SOMns Semantic Highlighting
Screenshot of SOMns Syntax Highlighting
Screencast of debugging a SOMns Program
To work on the extension, you can build it with the following commands:
When working on the extension, it is better to not install it via the
Marketplace, but link the code repo directly into the VS Code extension
directory. Please replace
To debug the extension, open the main folder in VS code and select "Launch Extension" in the debug menu.
Because of current restrictions in VS Code, the same project cannot be opened twice, and it is not possible to debug the debugger and the language server at the same time. As a work around, one can use a separate folder with symlinks:
Debugging the Language Server in Java
When working on the Language Server, which provides the IDE services, it is best to start it for instance from Eclipse.
To instruct VS code to use an already running instance of the language server, add the following to your VS Code User Settings:
The server can also be started from the command line:
This will run the server exactly as VScode would run it.
In this mode it will accept communication from stdin.
To configure it for use with TCP, see the
Debugging the Debugger Adapter
To debug the Debugger Adapter, load the code in VS code, and select "Run Debugger as server" in the debugger menu.
In the configuration of the VS Code instance with the SOM code, add a
configuration that executes a SOM program, and add the