LanguageClient: Do not pop up general messages pane

General messages pane should only be opened on direct user interaction.

Task-number: QTCREATORBUG-24430
Change-Id: I526659110fc67c627cb60fe56e1f709f064667c2
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2020-12-17 10:24:33 +01:00
parent 7883110e45
commit 5c7793b07b
3 changed files with 15 additions and 19 deletions

View File

@@ -329,7 +329,7 @@ void Client::sendContent(const IContent &content)
m_responseHandlers[responseHandler->id] = responseHandler->callback; m_responseHandlers[responseHandler->id] = responseHandler->callback;
QString error; QString error;
if (!QTC_GUARD(content.isValid(&error))) if (!QTC_GUARD(content.isValid(&error)))
Core::MessageManager::write(error); Core::MessageManager::writeFlashing(error);
const BaseMessage message = content.toBaseMessage(); const BaseMessage message = content.toBaseMessage();
LanguageClientManager::logBaseMessage(LspLogMessage::ClientMessage, name(), message); LanguageClientManager::logBaseMessage(LspLogMessage::ClientMessage, name(), message);
m_clientInterface->sendMessage(message); m_clientInterface->sendMessage(message);
@@ -947,9 +947,9 @@ void Client::handleMessage(const BaseMessage &message)
} }
} }
void Client::log(const QString &message, Core::MessageManager::PrintToOutputPaneFlag flag) void Client::log(const QString &message)
{ {
Core::MessageManager::write(QString("LanguageClient %1: %2").arg(name(), message), flag); Core::MessageManager::writeFlashing(QString("LanguageClient %1: %2").arg(name(), message));
} }
const ServerCapabilities &Client::capabilities() const const ServerCapabilities &Client::capabilities() const
@@ -977,10 +977,9 @@ HoverHandler *Client::hoverHandler()
return &m_hoverHandler; return &m_hoverHandler;
} }
void Client::log(const ShowMessageParams &message, void Client::log(const ShowMessageParams &message)
Core::MessageManager::PrintToOutputPaneFlag flag)
{ {
log(message.toString(), flag); log(message.toString());
} }
void Client::showMessageBox(const ShowMessageRequestParams &message, const MessageId &id) void Client::showMessageBox(const ShowMessageRequestParams &message, const MessageId &id)
@@ -1073,8 +1072,7 @@ void Client::handleMethod(const QString &method, const MessageId &id, const ICon
ErrorHierarchy error; ErrorHierarchy error;
auto logError = [&](const JsonObject &content) { auto logError = [&](const JsonObject &content) {
log(QJsonDocument(content).toJson(QJsonDocument::Indented) + '\n' log(QJsonDocument(content).toJson(QJsonDocument::Indented) + '\n'
+ tr("Invalid parameter in \"%1\": %2").arg(method, error.toString()), + tr("Invalid parameter in \"%1\": %2").arg(method, error.toString()));
Core::MessageManager::Flash);
}; };
if (method == PublishDiagnosticsNotification::methodName) { if (method == PublishDiagnosticsNotification::methodName) {
@@ -1086,7 +1084,7 @@ void Client::handleMethod(const QString &method, const MessageId &id, const ICon
} else if (method == LogMessageNotification::methodName) { } else if (method == LogMessageNotification::methodName) {
auto params = dynamic_cast<const LogMessageNotification *>(content)->params().value_or(LogMessageParams()); auto params = dynamic_cast<const LogMessageNotification *>(content)->params().value_or(LogMessageParams());
if (params.isValid(&error)) if (params.isValid(&error))
log(params, Core::MessageManager::Flash); log(params);
else else
logError(params); logError(params);
} else if (method == SemanticHighlightNotification::methodName) { } else if (method == SemanticHighlightNotification::methodName) {

View File

@@ -159,12 +159,12 @@ public:
bool start(); bool start();
bool reset(); bool reset();
void log(const QString &message, void log(const QString &message);
Core::MessageManager::PrintToOutputPaneFlag flag = Core::MessageManager::NoModeSwitch);
template<typename Error> template<typename Error>
void log(const LanguageServerProtocol::ResponseError<Error> &responseError, void log(const LanguageServerProtocol::ResponseError<Error> &responseError)
Core::MessageManager::PrintToOutputPaneFlag flag = Core::MessageManager::NoModeSwitch) {
{ log(responseError.toString(), flag); } log(responseError.toString());
}
const LanguageServerProtocol::ServerCapabilities &capabilities() const; const LanguageServerProtocol::ServerCapabilities &capabilities() const;
const DynamicCapabilities &dynamicCapabilities() const; const DynamicCapabilities &dynamicCapabilities() const;
@@ -196,8 +196,7 @@ private:
void initializeCallback(const LanguageServerProtocol::InitializeRequest::Response &initResponse); void initializeCallback(const LanguageServerProtocol::InitializeRequest::Response &initResponse);
void shutDownCallback(const LanguageServerProtocol::ShutdownRequest::Response &shutdownResponse); void shutDownCallback(const LanguageServerProtocol::ShutdownRequest::Response &shutdownResponse);
bool sendWorkspceFolderChanges() const; bool sendWorkspceFolderChanges() const;
void log(const LanguageServerProtocol::ShowMessageParams &message, void log(const LanguageServerProtocol::ShowMessageParams &message);
Core::MessageManager::PrintToOutputPaneFlag flag = Core::MessageManager::NoModeSwitch);
void showMessageBox(const LanguageServerProtocol::ShowMessageRequestParams &message, void showMessageBox(const LanguageServerProtocol::ShowMessageRequestParams &message,
const LanguageServerProtocol::MessageId &id); const LanguageServerProtocol::MessageId &id);

View File

@@ -385,14 +385,13 @@ void LanguageClientManager::clientFinished(Client *client)
&& client->state() != Client::ShutdownRequested; && client->state() != Client::ShutdownRequested;
if (unexpectedFinish && !m_shuttingDown && client->reset()) { if (unexpectedFinish && !m_shuttingDown && client->reset()) {
client->disconnect(this); client->disconnect(this);
client->log(tr("Unexpectedly finished. Restarting in %1 seconds.").arg(restartTimeoutS), client->log(tr("Unexpectedly finished. Restarting in %1 seconds.").arg(restartTimeoutS));
Core::MessageManager::Flash);
QTimer::singleShot(restartTimeoutS * 1000, client, [client]() { startClient(client); }); QTimer::singleShot(restartTimeoutS * 1000, client, [client]() { startClient(client); });
for (auto it = m_clientForDocument.cbegin(); it != m_clientForDocument.cend(); ++it) for (auto it = m_clientForDocument.cbegin(); it != m_clientForDocument.cend(); ++it)
client->deactivateDocument(it.key()); client->deactivateDocument(it.key());
} else { } else {
if (unexpectedFinish && !m_shuttingDown) if (unexpectedFinish && !m_shuttingDown)
client->log(tr("Unexpectedly finished."), Core::MessageManager::Flash); client->log(tr("Unexpectedly finished."));
for (auto it = m_clientForDocument.cbegin(); it != m_clientForDocument.cend(); ++it) for (auto it = m_clientForDocument.cbegin(); it != m_clientForDocument.cend(); ++it)
m_clientForDocument.remove(it.key()); m_clientForDocument.remove(it.key());
deleteClient(client); deleteClient(client);