forked from qt-creator/qt-creator
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:
@@ -1683,6 +1683,11 @@ void Client::setLogTarget(LogTarget target)
|
||||
}
|
||||
|
||||
void Client::start()
|
||||
{
|
||||
startImpl();
|
||||
}
|
||||
|
||||
void Client::startImpl()
|
||||
{
|
||||
d->m_shutdownTimer.stop();
|
||||
LanguageClientManager::addClient(this);
|
||||
|
@@ -224,6 +224,7 @@ protected:
|
||||
void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message);
|
||||
virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams ¶ms);
|
||||
virtual DiagnosticManager *createDiagnosticManager();
|
||||
virtual void startImpl();
|
||||
|
||||
private:
|
||||
friend class ClientPrivate;
|
||||
|
@@ -66,10 +66,6 @@ QmllsClient *QmllsClient::clientForQmlls(const FilePath &qmlls)
|
||||
QmllsClient::QmllsClient(StdIOClientInterface *interface)
|
||||
: Client(interface)
|
||||
{
|
||||
LanguageServerProtocol::Unregistration unregister;
|
||||
unregister.setMethod("textDocument/semanticTokens");
|
||||
unregister.setId({});
|
||||
dynamicCapabilities().unregisterCapability({unregister});
|
||||
}
|
||||
|
||||
QmllsClient::~QmllsClient()
|
||||
@@ -77,4 +73,14 @@ QmllsClient::~QmllsClient()
|
||||
qmllsClients().remove(qmllsClients().key(this));
|
||||
}
|
||||
|
||||
void QmllsClient::startImpl()
|
||||
{
|
||||
LanguageServerProtocol::Unregistration unregister;
|
||||
unregister.setMethod("textDocument/semanticTokens");
|
||||
unregister.setId({});
|
||||
dynamicCapabilities().unregisterCapability({unregister});
|
||||
|
||||
Client::startImpl();
|
||||
}
|
||||
|
||||
} // namespace QmlJSEditor
|
||||
|
@@ -19,6 +19,7 @@ public:
|
||||
explicit QmllsClient(LanguageClient::StdIOClientInterface *interface);
|
||||
~QmllsClient();
|
||||
|
||||
void startImpl() override;
|
||||
static QmllsClient *clientForQmlls(const Utils::FilePath &qmlls);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user