diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 976704fed5b..def0016f3ab 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -592,6 +592,11 @@ bool Client::reachable() const return d->m_state == Initialized; } +void Client::resetRestartCounter() +{ + d->m_restartsLeft = ClientPrivate::MaxRestarts; +} + void Client::setClientInfo(const LanguageServerProtocol::ClientInfo &clientInfo) { d->m_clientInfo = clientInfo; diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index aba2b996754..fdeb1356d6c 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -86,6 +86,7 @@ public: State state() const; QString stateString() const; bool reachable() const; + void resetRestartCounter(); void setClientInfo(const LanguageServerProtocol::ClientInfo &clientInfo); // capabilities diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index bb655e2d8f8..81838357bb9 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -159,6 +159,7 @@ void LanguageClientManager::clientFinished(Client *client) QTC_ASSERT(managerInstance, return); if (managerInstance->m_restartingClients.remove(client)) { + client->resetRestartCounter(); client->reset(); client->start(); return;