diff options
-rw-r--r-- | src/plugins/cmakeprojectmanager/servermodereader.cpp | 21 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/servermodereader.h | 3 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index a99b6cc77cb..e17843c02d9 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -73,6 +73,17 @@ ServerModeReader::ServerModeReader() if (m_cmakeFiles.contains(document->filePath())) emit dirty(); }); + + connect(&m_parser, &CMakeParser::addOutput, + this, [](const QString &m) { Core::MessageManager::write(m); }); + connect(&m_parser, &CMakeParser::addTask, this, [this](const Task &t) { + Task editable(t); + if (!editable.file.isEmpty()) { + QDir srcDir(m_parameters.sourceDirectory.toString()); + editable.file = FileName::fromString(srcDir.absoluteFilePath(editable.file.toString())); + } + TaskHub::addTask(editable); + }); } ServerModeReader::~ServerModeReader() @@ -98,8 +109,13 @@ void ServerModeReader::setParameters(const BuildDirReader::Parameters &p) this, &ServerModeReader::handleProgress); connect(m_cmakeServer.get(), &ServerMode::cmakeSignal, this, &ServerModeReader::handleSignal); - connect(m_cmakeServer.get(), &ServerMode::cmakeMessage, - this, [this](const QString &m) { Core::MessageManager::write(m); }); + connect(m_cmakeServer.get(), &ServerMode::cmakeMessage, [this](const QString &m) { + const QStringList lines = m.split('\n'); + for (const QString &l : lines) { + m_parser.stdError(l); + Core::MessageManager::write(l + "\n"); + } + }); connect(m_cmakeServer.get(), &ServerMode::message, this, [](const QString &m) { Core::MessageManager::write(m); }); connect(m_cmakeServer.get(), &ServerMode::connected, @@ -168,6 +184,7 @@ void ServerModeReader::stop() m_future->reportFinished(); m_future.reset(); } + m_parser.flush(); } bool ServerModeReader::isReady() const diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index 0c3a3c2fd8c..4265d9627c3 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -27,6 +27,7 @@ #include "builddirreader.h" #include "servermode.h" +#include "cmakeparser.h" #include <memory> @@ -148,6 +149,8 @@ private: QList<Project *> m_projects; mutable QList<Target *> m_targets; QList<FileGroup *> m_fileGroups; + + CMakeParser m_parser; }; } // namespace Internal |