qmlls client: opt out semantic highlighting for QtC 14.x, take 2

When we restart language server, everything is reset including
dynamically registered/unregistered methods but clients aren't
destroyed. Therefore,  we need to register dynamically registered
entities in the Client::start() method rather than the constructor.

Customize the start behavior of qmlls client by applying template
pattern.

Amends df2e55d92a

Task-number: QTCREATORBUG-31148
Change-Id: Ib974500beb46cb79d972756efd0f6c7bbd7a87af
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Semih Yavuz
2024-08-14 11:48:42 +02:00
parent c0573a2047
commit d0a06748a8
4 changed files with 17 additions and 4 deletions

View File

@@ -1683,6 +1683,11 @@ void Client::setLogTarget(LogTarget target)
} }
void Client::start() void Client::start()
{
startImpl();
}
void Client::startImpl()
{ {
d->m_shutdownTimer.stop(); d->m_shutdownTimer.stop();
LanguageClientManager::addClient(this); LanguageClientManager::addClient(this);

View File

@@ -224,6 +224,7 @@ protected:
void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message); void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message);
virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams &params); virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams &params);
virtual DiagnosticManager *createDiagnosticManager(); virtual DiagnosticManager *createDiagnosticManager();
virtual void startImpl();
private: private:
friend class ClientPrivate; friend class ClientPrivate;

View File

@@ -66,10 +66,6 @@ QmllsClient *QmllsClient::clientForQmlls(const FilePath &qmlls)
QmllsClient::QmllsClient(StdIOClientInterface *interface) QmllsClient::QmllsClient(StdIOClientInterface *interface)
: Client(interface) : Client(interface)
{ {
LanguageServerProtocol::Unregistration unregister;
unregister.setMethod("textDocument/semanticTokens");
unregister.setId({});
dynamicCapabilities().unregisterCapability({unregister});
} }
QmllsClient::~QmllsClient() QmllsClient::~QmllsClient()
@@ -77,4 +73,14 @@ QmllsClient::~QmllsClient()
qmllsClients().remove(qmllsClients().key(this)); qmllsClients().remove(qmllsClients().key(this));
} }
void QmllsClient::startImpl()
{
LanguageServerProtocol::Unregistration unregister;
unregister.setMethod("textDocument/semanticTokens");
unregister.setId({});
dynamicCapabilities().unregisterCapability({unregister});
Client::startImpl();
}
} // namespace QmlJSEditor } // namespace QmlJSEditor

View File

@@ -19,6 +19,7 @@ public:
explicit QmllsClient(LanguageClient::StdIOClientInterface *interface); explicit QmllsClient(LanguageClient::StdIOClientInterface *interface);
~QmllsClient(); ~QmllsClient();
void startImpl() override;
static QmllsClient *clientForQmlls(const Utils::FilePath &qmlls); static QmllsClient *clientForQmlls(const Utils::FilePath &qmlls);
}; };