Add support for language services through LSP (language server protocol)
Add support for language services in Monaco editor, using LSP.
In this first version, the functionality can only be enabled by WebLab administrators.
First language to support is java.Related tasks:
- extend Monaco editor scripts/templates with ability to connect to a language server, with exchange of the required code file and related data
- extend labback-docker with support for long running interactive jobs
- add proxy service for remote servers on which the docker containers will run
- …
Basic control flow after loading monaco editor with LSP support enabled:
Submitted by Elmer van Chastelet on 1 June 2022 at 09:46
- WebLab instructs backend with task file to spawn a language server instance
- Labback will start a docker container on a remote server that runs the language server, and sets up an endpoint (proxy service on remote server) to which the Monaco editor should connect
- Labback updates task file with endpoint information, WebLab communicates this to the client, which can then connect to the language server.
- LSP container gets destroyed after idle timeout or on client disconnect