diff --git a/src/plugins/languageclient/lsplogger.cpp b/src/plugins/languageclient/lsplogger.cpp index a633d5c84c8..843809357cb 100644 --- a/src/plugins/languageclient/lsplogger.cpp +++ b/src/plugins/languageclient/lsplogger.cpp @@ -93,15 +93,14 @@ void LspLogger::log(const LspLogMessage::MessageSender sender, const QString &clientName, const BaseMessage &message) { - QLinkedList &clientLog = m_logs[clientName]; - auto delta = clientLog.size() - m_logSize + 1; - if (delta > 0) - clientLog.erase(clientLog.begin(), clientLog.begin() + delta); - m_logs[clientName].append({sender, QTime::currentTime(), message}); - emit newMessage(clientName, m_logs[clientName].last()); + std::list &clientLog = m_logs[clientName]; + for (auto delta = clientLog.size() - m_logSize + 1; delta > 0; --delta) + clientLog.pop_front(); + m_logs[clientName].push_back({sender, QTime::currentTime(), message}); + emit newMessage(clientName, m_logs[clientName].back()); } -QLinkedList LspLogger::messages(const QString &clientName) const +std::list LspLogger::messages(const QString &clientName) const { return m_logs[clientName]; } diff --git a/src/plugins/languageclient/lsplogger.h b/src/plugins/languageclient/lsplogger.h index 0cb85967c48..8d736d249d4 100644 --- a/src/plugins/languageclient/lsplogger.h +++ b/src/plugins/languageclient/lsplogger.h @@ -25,12 +25,13 @@ #pragma once -#include #include #include #include +#include + namespace LanguageClient { struct LspLogMessage @@ -53,14 +54,14 @@ public: const QString &clientName, const LanguageServerProtocol::BaseMessage &message); - QLinkedList messages(const QString &clientName) const; + std::list messages(const QString &clientName) const; QList clients() const; signals: void newMessage(const QString &clientName, const LspLogMessage &message); private: - QMap> m_logs; + QMap> m_logs; int m_logSize = 100; // default log size if no widget is currently visible };