[Development] Requesting a module for Qt JSON RPC and Qt Language Server

Ulf Hermann ulf.hermann at qt.io
Mon Dec 16 16:39:07 CET 2019


Hi,

I would like to request a new module and repository for an 
implementation of the JSON RPC and Language Server protocols:

Name of the repository: qt/qtlanguageserver.git
Description: An implementation of the language server protocol
Responsible person: Ulf Hermann
Gerrit user/email: ulf.hermann at qt.io

You can see my previous work on this in the context of the QML language 
server here:

https://codereview.qt-project.org/c/qt/qtdeclarative/+/243394
https://codereview.qt-project.org/c/qt/qtdeclarative/+/233778

The relevant specifications can be found at:

https://www.jsonrpc.org/specification
https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/

The JSON RPC implementation might be moved to QtNetwork, instead. I'm 
eager to hear opinions on this. Mind that the JSON RPC protocol 
implementation doesn't depend on any network classes, but only on 
QIODevice. Indeed you can run many existing language servers over stdio.

Mind also that the language server _protocol_ implementation shown in 
above changes can be used to build both language servers _and_ clients 
for language servers. The basic primitives are automatically generated 
from the specification itself.

There currently is no good place for the language server code in any 
existing modules. We should not commit it to qtdeclarative, as it would 
be useful for a number of other applications, too:

It turned out that we need a language server protocol implementation not 
only for the QML language server, but also for the language client in Qt 
Creator. Qt Creator is using its own, manually written, client-only, 
implementation right now. We should strive to maintain only one Qt-based 
language server protocol implementation.

Another idea is to add rich support for CSS in the style editor of the 
designer by using some existing CSS language server. More generally, we 
could make the integration of existing Qt text editing facilities with 
language support (auto-completion, diagnostics, etc) easier by providing 
a generic language server API.

best regards,
Ulf Hermann


More information about the Development mailing list