LanguageClient: show CodeDescription in Tasks

Change-Id: Ia8a20c71d6af9f0168614ecddb4fc0ca4ecf7cbc
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2024-10-21 09:17:06 +02:00
parent ad9099c09b
commit 4ecdbbd787
3 changed files with 23 additions and 7 deletions

View File

@@ -224,13 +224,19 @@ std::optional<Task> DiagnosticManager::createTask(
} }
} }
return Task(taskType, Task task(
taskType,
taskText(diagnostic), taskText(diagnostic),
doc->filePath(), doc->filePath(),
diagnostic.range().start().line() + 1, diagnostic.range().start().line() + 1,
d->m_taskCategory, d->m_taskCategory,
icon, icon,
Task::NoOptions); Task::NoOptions);
if (const std::optional<CodeDescription> codeDescription = diagnostic.codeDescription())
task.addLinkDetail(codeDescription->href());
return task;
} }
QString DiagnosticManager::taskText(const LanguageServerProtocol::Diagnostic &diagnostic) const QString DiagnosticManager::taskText(const LanguageServerProtocol::Diagnostic &diagnostic) const

View File

@@ -163,6 +163,15 @@ QString Task::formattedDescription(DescriptionTags tags, const QString &extraHea
.arg(htmlExtraHeading, TextEditor::FontSettings::defaultFixedFontFamily(), text); .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 // functions
// //

View File

@@ -54,6 +54,7 @@ public:
QIcon icon() const; QIcon icon() const;
void setIcon(const QIcon &icon); void setIcon(const QIcon &icon);
QString formattedDescription(DescriptionTags tags, const QString &extraHeading = {}) const; 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 &t1, const Task &t2);
friend PROJECTEXPLORER_EXPORT bool operator<(const Task &a, const Task &b); friend PROJECTEXPLORER_EXPORT bool operator<(const Task &a, const Task &b);