From 2ff5f18bff8c5a5d7a18353148e1ed9e1e81310f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 24 Nov 2022 10:57:55 +0100 Subject: [PATCH] Transform doc.qt.io/qt-creator links to internal qthelp links, for links that are found locally in the documentation. That opens such links in Qt Creator, instead of in the web, if possible. Change-Id: I2270c6947db22f4aeb4968bf5b7245de57521c92 Reviewed-by: Cristian Adam --- src/plugins/coreplugin/mainwindow.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 9c63e36e708..4950eb909b1 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -11,6 +11,7 @@ #include "externaltoolmanager.h" #include "fancytabwidget.h" #include "generalsettings.h" +#include "helpmanager.h" #include "icore.h" #include "idocumentfactory.h" #include "jsexpander.h" @@ -1516,8 +1517,17 @@ void MainWindow::changeLog() return; const FilePath file = versionedFiles.at(index).second; QString contents = QString::fromUtf8(file.fileContents().value_or(QByteArray())); - contents.replace(QRegularExpression("(QT(CREATOR)?BUG-[0-9]+)"), - "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression bugexpr("(QT(CREATOR)?BUG-[0-9]+)"); + contents.replace(bugexpr, "[\\1](https://bugreports.qt.io/browse/\\1)"); + static const QRegularExpression docexpr("https://doc[.]qt[.]io/qtcreator/([.a-zA-Z/_-]*)"); + QList matches; + for (const QRegularExpressionMatch &m : docexpr.globalMatch(contents)) + matches.append(m); + Utils::reverseForeach(matches, [&contents](const QRegularExpressionMatch &match) { + const QString qthelpUrl = "qthelp://org.qt-project.qtcreator/doc/" + match.captured(1); + if (!HelpManager::fileData(qthelpUrl).isEmpty()) + contents.replace(match.capturedStart(), match.capturedLength(), qthelpUrl); + }); textEdit->setMarkdown(contents); }; connect(versionCombo, &QComboBox::currentIndexChanged, textEdit, showLog);