[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