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()
|
void Client::start()
|
||||||
|
{
|
||||||
|
startImpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Client::startImpl()
|
||||||
{
|
{
|
||||||
d->m_shutdownTimer.stop();
|
d->m_shutdownTimer.stop();
|
||||||
LanguageClientManager::addClient(this);
|
LanguageClientManager::addClient(this);
|
||||||
|
@@ -224,6 +224,7 @@ protected:
|
|||||||
void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message);
|
void handleMessage(const LanguageServerProtocol::JsonRpcMessage &message);
|
||||||
virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams ¶ms);
|
virtual void handleDiagnostics(const LanguageServerProtocol::PublishDiagnosticsParams ¶ms);
|
||||||
virtual DiagnosticManager *createDiagnosticManager();
|
virtual DiagnosticManager *createDiagnosticManager();
|
||||||
|
virtual void startImpl();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class ClientPrivate;
|
friend class ClientPrivate;
|
||||||
|
@@ -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
|
||||||
|
@@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user