forked from qt-creator/qt-creator
ProjectExplorer: Show full lines during compilation
Especially on Windows with VC2022 & Ninja, the output would often display lines that ended in the middle until the next batch of output was added. This patch uses the Process facilities to only show full lines. Change-Id: I38fcb2e8cb115637d15181b39374c533db150c1a Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -79,8 +79,6 @@ public:
|
||||
std::function<void(Environment &)> m_environmentModifier;
|
||||
bool m_ignoreReturnValue = false;
|
||||
bool m_lowPriority = false;
|
||||
std::unique_ptr<QTextDecoder> stdOutDecoder;
|
||||
std::unique_ptr<QTextDecoder> stdErrDecoder;
|
||||
OutputFormatter *outputFormatter = nullptr;
|
||||
};
|
||||
|
||||
@@ -146,9 +144,6 @@ bool AbstractProcessStep::init()
|
||||
if (!setupProcessParameters(processParameters()))
|
||||
return false;
|
||||
|
||||
d->stdOutDecoder = std::make_unique<QTextDecoder>(buildEnvironment().hasKey("VSLANG")
|
||||
? QTextCodec::codecForName("UTF-8") : QTextCodec::codecForLocale());
|
||||
d->stdErrDecoder = std::make_unique<QTextDecoder>(QTextCodec::codecForLocale());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -197,14 +192,18 @@ bool AbstractProcessStep::setupProcess(Process &process)
|
||||
if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority)
|
||||
process.setLowPriority();
|
||||
|
||||
connect(&process, &Process::readyReadStandardOutput, this, [this, &process] {
|
||||
emit addOutput(d->stdOutDecoder->toUnicode(process.readAllRawStandardOutput()),
|
||||
OutputFormat::Stdout, DontAppendNewline);
|
||||
process.setStdOutCodec(buildEnvironment().hasKey("VSLANG")
|
||||
? QTextCodec::codecForName("UTF-8") : QTextCodec::codecForLocale());
|
||||
process.setStdErrCodec(QTextCodec::codecForLocale());
|
||||
|
||||
process.setStdOutLineCallback([this](const QString &s){
|
||||
emit addOutput(s, OutputFormat::Stdout, DontAppendNewline);
|
||||
});
|
||||
connect(&process, &Process::readyReadStandardError, this, [this, &process] {
|
||||
emit addOutput(d->stdErrDecoder->toUnicode(process.readAllRawStandardError()),
|
||||
OutputFormat::Stderr, DontAppendNewline);
|
||||
|
||||
process.setStdErrLineCallback([this](const QString &s){
|
||||
emit addOutput(s, OutputFormat::Stderr, DontAppendNewline);
|
||||
});
|
||||
|
||||
connect(&process, &Process::started, this, [this] {
|
||||
ProcessParameters *params = d->m_displayedParams;
|
||||
emit addOutput(Tr::tr("Starting: \"%1\" %2")
|
||||
|
||||
Reference in New Issue
Block a user