From a53583d57387ec629ba9cb16e80bd0710cda31a4 Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Mon, 8 Nov 2010 14:55:50 +0100 Subject: [PATCH] ApplicationOutput: Also linkify qml errors without column. I didn't manage to find one regular expression that matches both lines with and without column correctly. Instead use two distinct ones ... Task-number: QTCREATORBUG-3022 --- .../qt4projectmanager/qtoutputformatter.cpp | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtoutputformatter.cpp b/src/plugins/qt4projectmanager/qtoutputformatter.cpp index 4917a937628..c993cf2a0de 100644 --- a/src/plugins/qt4projectmanager/qtoutputformatter.cpp +++ b/src/plugins/qt4projectmanager/qtoutputformatter.cpp @@ -42,7 +42,10 @@ using namespace Qt4ProjectManager; QtOutputFormatter::QtOutputFormatter(ProjectExplorer::Project *project) : OutputFormatter() - , m_qmlError(QLatin1String("(file:///.+:\\d+:\\d+):")) + , m_qmlError(QLatin1String("^(file:///.+" // file url + ":\\d+" // colon, line + "(?::\\d+)?)" // colon, column (optional) + ":")) // colon , m_qtError(QLatin1String("Object::.*in (.*:\\d+)")) , m_qtAssert(QLatin1String("^ASSERT: .* in file (.+, line \\d+)$")) , m_qtTestFail(QLatin1String("^ Loc: \\[(.*)\\]$")) @@ -176,16 +179,28 @@ void QtOutputFormatter::appendLine(QTextCursor &cursor, LinkResult lr, const QSt void QtOutputFormatter::handleLink(const QString &href) { if (!href.isEmpty()) { - const QRegExp qmlErrorLink(QLatin1String("^(file:///.+):(\\d+):(\\d+)")); - - if (qmlErrorLink.indexIn(href) != -1) { - const QString fileName = QUrl(qmlErrorLink.cap(1)).toLocalFile(); - const int line = qmlErrorLink.cap(2).toInt(); - const int column = qmlErrorLink.cap(3).toInt(); + const QRegExp qmlLineColumnLink(QLatin1String("^(file:///.+)" // file url + ":(\\d+)" // line + ":(\\d+)$")); // column + + if (qmlLineColumnLink.indexIn(href) != -1) { + const QString fileName = QUrl(qmlLineColumnLink.cap(1)).toLocalFile(); + const int line = qmlLineColumnLink.cap(2).toInt(); + const int column = qmlLineColumnLink.cap(3).toInt(); TextEditor::BaseTextEditor::openEditorAt(fileName, line, column - 1); return; } + const QRegExp qmlLineLink(QLatin1String("^(file:///.+)" // file url + ":(\\d+)$")); // line + + if (qmlLineLink.indexIn(href) != -1) { + const QString fileName = QUrl(qmlLineLink.cap(1)).toLocalFile(); + const int line = qmlLineLink.cap(2).toInt(); + TextEditor::BaseTextEditor::openEditorAt(fileName, line); + return; + } + QString fileName; int line = -1; -- GitLab