LanguageClient: add state changed signal to client

Change-Id: I13b69eb386b4e356f4f23c3b464f83a2a1d9ab14
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2024-07-01 12:13:43 +02:00
parent 6c63c42799
commit 3b5547214c
2 changed files with 15 additions and 8 deletions

View File

@@ -299,6 +299,12 @@ public:
bool reset();
void setState(Client::State state)
{
m_state = state;
emit q->stateChanged(state);
}
Client::State m_state = Client::Uninitialized;
QHash<LanguageServerProtocol::MessageId,
LanguageServerProtocol::ResponseHandler::Callback> m_responseHandlers;
@@ -569,7 +575,7 @@ void Client::initialize()
// directly send content now otherwise the state check of sendContent would fail
d->sendMessageNow(initRequest);
d->m_state = InitializeRequested;
d->setState(InitializeRequested);
}
void Client::shutdown()
@@ -581,7 +587,7 @@ void Client::shutdown()
d->shutDownCallback(shutdownResponse);
});
sendMessage(shutdown);
d->m_state = ShutdownRequested;
d->setState(ShutdownRequested);
d->m_shutdownTimer.start();
}
@@ -1526,7 +1532,7 @@ void Client::projectClosed(ProjectExplorer::Project *project)
if (d->m_state == Initialized) {
LanguageClientManager::shutdownClient(this);
} else {
d->m_state = Shutdown; // otherwise the manager would try to restart this server
d->setState(Shutdown); // otherwise the manager would try to restart this server
emit finished();
}
d->m_project = nullptr;
@@ -1696,7 +1702,7 @@ bool ClientPrivate::reset()
}
m_restartCountResetTimer.start();
--m_restartsLeft;
m_state = Client::Uninitialized;
setState(Client::Uninitialized);
m_responseHandlers.clear();
m_clientInterface->resetBuffer();
updateOpenedEditorToolBars();
@@ -1723,7 +1729,7 @@ bool ClientPrivate::reset()
void Client::setError(const QString &message)
{
log(message);
d->m_state = d->m_state < Initialized ? FailedToInitialize : Error;
d->setState(d->m_state < Initialized ? FailedToInitialize : Error);
}
ProgressManager *Client::progressManager()
@@ -2152,7 +2158,7 @@ void ClientPrivate::initializeCallback(const InitializeRequest::Response &initRe
QMessageBox::Retry | QMessageBox::Cancel,
QMessageBox::Retry);
if (result == QMessageBox::Retry) {
m_state = Client::Uninitialized;
setState(Client::Uninitialized);
q->initialize();
return;
}
@@ -2204,7 +2210,7 @@ void ClientPrivate::initializeCallback(const InitializeRequest::Response &initRe
m_tokenSupport.setLegend(tokenProvider.legend());
qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized";
m_state = Client::Initialized;
setState(Client::Initialized);
q->sendMessage(InitializeNotification(InitializedParams()));
q->updateConfiguration(m_configuration);
@@ -2227,7 +2233,7 @@ void ClientPrivate::shutDownCallback(const ShutdownRequest::Response &shutdownRe
// directly send content now otherwise the state check of sendContent would fail
sendMessageNow(ExitNotification());
qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " shutdown";
m_state = Client::Shutdown;
setState(Client::Shutdown);
m_shutdownTimer.start();
}

View File

@@ -215,6 +215,7 @@ signals:
void documentUpdated(TextEditor::TextDocument *document);
void workDone(const LanguageServerProtocol::ProgressToken &token);
void shadowDocumentSwitched(const Utils::FilePath &filePath);
void stateChanged(State state);
void finished();
protected: