Theia capabilities

Hi there! My automation lab faced a need to create an IDE for a language that we’ve created, and we’re quite confused about which framework we can use for it. Different parts of the team are creating different components - debugger, profiler, verifier, all in different languages like Java and C++, and in the end we’re going to need to integrate them all. Is Theia suitable for this purpose? It has scalability, built-in git support, common code for web and desktop version that we need, but we don’t know much about web programming and Theia’s limitations regarding components written in something other than TypeScript. We’re also looking at Theia and Remote Application Platform and struggle to see the difference.

[original thread by Kristina Marchenko]

[Ryan Dunn]

Yes, it is. If you develop your language servers with LSP support (or use off the shelf ones that support LSP)and wrap them into the VS Code plugin format, there is a good chance you can simply load them into Theia and get 1st class IDE support. For debugging purposes, you would want to have your language implement DAP (debug adapter protocol), which would then also allow you to use Theia’s DAP support to debug your custom language. Other languages (e.g. Java, TS, C#, etc.) that already support DAP should also work OOB with Theia.

[Kristina Marchenko]

Let’s say we have a language verifier written in C++. We want to launch it from Theia and see the results also in Theia. Is this even possible?

@keyvit yes, it is possible, @dunnry mentioned language-server-protocol (LSP and debug-adapter-protocol (DAP). These protocols are JSON-based, a server process supporting a language or a debugger can talk to a client process (a tool). Processes can be implemented in any language. If a client is Theia, then you will need to create a Theia or VS Code extension which spawns a server process.

Here some links that you learn more:

I’m not sure what you mean by Remote Application Platform?

@keyvit to add to Anton’s excellent answer: If you want your “language checker” to run in the background and provide diagnostics to the IDE (errors, warnings) in “real time”, then wrapping it as a language server would be the way to go.

Alternatively, If it’s enough to run the checker once in a while (user triggered), you could as well run it as a task (very similar to VS Code tasks). In that mode, you provide a “Problem parser” to the task, that parses the output and can create problem markers for the IDE as well.

[Kristina Marchenko]

@anton-kosyakov thanks for the links, I’m studying them to move forward. By Remote Application Platform I meant another Eclipse project that extends the possibilities of the classic Eclipse and in theory helps to create web-IDE as well.