forked from qt-creator/qt-creator
ClangCodeModel: Clear existing libclang diagnostics
... when clangd takes over a document. This fixes the problem that temporary diagnostics persisted after opening a session. Change-Id: Ic781f83747cabb4d15c2c1f8181e36f4343e0394 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -65,11 +65,11 @@ public:
|
||||
|
||||
static void clearTaskHubIssues();
|
||||
void generateTaskHubIssues();
|
||||
void cleanMarks();
|
||||
|
||||
static void addTask(const ClangBackEnd::DiagnosticContainer &diagnostic, bool isChild = false);
|
||||
|
||||
private:
|
||||
void cleanMarks();
|
||||
QString filePath() const;
|
||||
void filterDiagnostics(const QVector<ClangBackEnd::DiagnosticContainer> &diagnostics);
|
||||
void generateEditorSelections();
|
||||
|
@@ -251,6 +251,14 @@ void ClangEditorDocumentProcessor::generateTaskHubIssues()
|
||||
m_diagnosticManager.generateTaskHubIssues();
|
||||
}
|
||||
|
||||
void ClangEditorDocumentProcessor::clearTextMarks(const Utils::FilePath &filePath)
|
||||
{
|
||||
if (ClangEditorDocumentProcessor * const proc = get(filePath.toString())) {
|
||||
proc->m_diagnosticManager.cleanMarks();
|
||||
emit proc->codeWarningsUpdated(proc->revision(), {}, {}, {});
|
||||
}
|
||||
}
|
||||
|
||||
void ClangEditorDocumentProcessor::updateHighlighting(
|
||||
const QVector<ClangBackEnd::TokenInfoContainer> &tokenInfos,
|
||||
const QVector<ClangBackEnd::SourceRangeContainer> &skippedPreprocessorRanges,
|
||||
|
@@ -108,6 +108,8 @@ public:
|
||||
static void clearTaskHubIssues();
|
||||
void generateTaskHubIssues();
|
||||
|
||||
static void clearTextMarks(const Utils::FilePath &filePath);
|
||||
|
||||
public:
|
||||
static ClangEditorDocumentProcessor *get(const QString &filePath);
|
||||
|
||||
|
@@ -316,6 +316,7 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
|
||||
if (!project->isKnownFile(entry->fileName()))
|
||||
continue;
|
||||
client->openDocument(textDocument);
|
||||
ClangEditorDocumentProcessor::clearTextMarks(textDocument->filePath());
|
||||
hasDocuments = true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user