From 4ecdbbd78747e5e5a03c7ef4936bd8096566c723 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 21 Oct 2024 09:17:06 +0200 Subject: [PATCH] LanguageClient: show CodeDescription in Tasks Change-Id: Ia8a20c71d6af9f0168614ecddb4fc0ca4ecf7cbc Reviewed-by: Christian Kandeler --- .../languageclient/diagnosticmanager.cpp | 20 ++++++++++++------- src/plugins/projectexplorer/task.cpp | 9 +++++++++ src/plugins/projectexplorer/task.h | 1 + 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index db63b5a3f96..c437a9f1be6 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -224,13 +224,19 @@ std::optional DiagnosticManager::createTask( } } - return Task(taskType, - taskText(diagnostic), - doc->filePath(), - diagnostic.range().start().line() + 1, - d->m_taskCategory, - icon, - Task::NoOptions); + Task task( + taskType, + taskText(diagnostic), + doc->filePath(), + diagnostic.range().start().line() + 1, + d->m_taskCategory, + icon, + Task::NoOptions); + + if (const std::optional codeDescription = diagnostic.codeDescription()) + task.addLinkDetail(codeDescription->href()); + + return task; } QString DiagnosticManager::taskText(const LanguageServerProtocol::Diagnostic &diagnostic) const diff --git a/src/plugins/projectexplorer/task.cpp b/src/plugins/projectexplorer/task.cpp index 7df36f1cfcc..91788306b82 100644 --- a/src/plugins/projectexplorer/task.cpp +++ b/src/plugins/projectexplorer/task.cpp @@ -163,6 +163,15 @@ QString Task::formattedDescription(DescriptionTags tags, const QString &extraHea .arg(htmlExtraHeading, TextEditor::FontSettings::defaultFixedFontFamily(), text); } +void Task::addLinkDetail(const QString &link) +{ + details.append(link); + QTextCharFormat format; + format.setAnchor(true); + format.setAnchorHref(link); + formats << QTextLayout::FormatRange{0, int(link.length()), format}; +} + // // functions // diff --git a/src/plugins/projectexplorer/task.h b/src/plugins/projectexplorer/task.h index 954db64ef3e..e026c1044b7 100644 --- a/src/plugins/projectexplorer/task.h +++ b/src/plugins/projectexplorer/task.h @@ -54,6 +54,7 @@ public: QIcon icon() const; void setIcon(const QIcon &icon); QString formattedDescription(DescriptionTags tags, const QString &extraHeading = {}) const; + void addLinkDetail(const QString &link); friend PROJECTEXPLORER_EXPORT bool operator==(const Task &t1, const Task &t2); friend PROJECTEXPLORER_EXPORT bool operator<(const Task &a, const Task &b);