diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-02-24 11:42:13 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-02-24 11:42:57 +0100 |
commit | 41538832c36748068a514c11d0a3be7dcdea77ad (patch) | |
tree | cc0840d8afb41c0c89c358a572f25e8e44054917 /src/plugins/languageclient | |
parent | f1e973de794e2e11f1eb92d6fa4dbad1bee1429c (diff) | |
parent | 0ce098ed878b72e4157449fb762b2d70205f3608 (diff) | |
download | qt-creator-41538832c36748068a514c11d0a3be7dcdea77ad.tar.gz |
Merge remote-tracking branch 'origin/7.0'
Conflicts:
src/libs/utils/qtcprocess.cpp
src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
Change-Id: Id0c31719e46d1c44770ea89663eee321a0517ff4
Diffstat (limited to 'src/plugins/languageclient')
-rw-r--r-- | src/plugins/languageclient/client.cpp | 10 | ||||
-rw-r--r-- | src/plugins/languageclient/diagnosticmanager.cpp | 33 | ||||
-rw-r--r-- | src/plugins/languageclient/diagnosticmanager.h | 4 | ||||
-rw-r--r-- | src/plugins/languageclient/languageclientcompletionassist.cpp | 2 |
4 files changed, 22 insertions, 27 deletions
diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index ec9bed459e..f3b9467667 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -622,7 +622,7 @@ void Client::activateDocument(TextEditor::TextDocument *document) void Client::deactivateDocument(TextEditor::TextDocument *document) { - m_diagnosticManager.hideDiagnostics(document); + m_diagnosticManager.hideDiagnostics(document->filePath()); resetAssistProviders(document); document->setFormatter(nullptr); m_tokenSupport.clearHighlight(document); @@ -1628,12 +1628,8 @@ void Client::shutDownCallback(const ShutdownRequest::Response &shutdownResponse) m_shutdownTimer.stop(); QTC_ASSERT(m_state == ShutdownRequested, return); QTC_ASSERT(m_clientInterface, return); - optional<ShutdownRequest::Response::Error> errorValue = shutdownResponse.error(); - if (errorValue.has_value()) { - ShutdownRequest::Response::Error error = errorValue.value(); - qDebug() << error; - return; - } + if (optional<ShutdownRequest::Response::Error> error = shutdownResponse.error()) + log(*error); // directly send message otherwise the state check of sendContent would fail sendMessage(ExitNotification().toBaseMessage()); qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " shutdown"; diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index 3336726a72..cdaadb7d4a 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -88,26 +88,19 @@ void DiagnosticManager::setDiagnostics(const LanguageServerProtocol::DocumentUri const QList<LanguageServerProtocol::Diagnostic> &diagnostics, const Utils::optional<int> &version) { - removeDiagnostics(uri); + hideDiagnostics(uri.toFilePath()); m_diagnostics[uri] = {version, diagnostics}; } -void DiagnosticManager::hideDiagnostics(TextDocument *doc) +void DiagnosticManager::hideDiagnostics(const Utils::FilePath &filePath) { - if (!doc) - return; - if (m_hideHandler) m_hideHandler(); - for (BaseTextEditor *editor : BaseTextEditor::textEditorsForDocument(doc)) - editor->editorWidget()->setExtraSelections(TextEditorWidget::CodeWarningsSelection, {}); - qDeleteAll(Utils::filtered(doc->marks(), Utils::equal(&TextMark::category, m_client->id()))); -} - -void DiagnosticManager::removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri) -{ - hideDiagnostics(TextDocument::textDocumentForFilePath(uri.toFilePath())); - m_diagnostics.remove(uri); + if (auto doc = TextDocument::textDocumentForFilePath(filePath)) { + for (BaseTextEditor *editor : BaseTextEditor::textEditorsForDocument(doc)) + editor->editorWidget()->setExtraSelections(TextEditorWidget::CodeWarningsSelection, {}); + } + qDeleteAll(m_marks.take(filePath)); } static QTextEdit::ExtraSelection toDiagnosticsSelections(const Diagnostic &diagnostic, @@ -130,11 +123,11 @@ void DiagnosticManager::showDiagnostics(const DocumentUri &uri, int version) const FilePath &filePath = uri.toFilePath(); if (TextDocument *doc = TextDocument::textDocumentForFilePath(filePath)) { QList<QTextEdit::ExtraSelection> extraSelections; - const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri); + const VersionedDiagnostics &versionedDiagnostics = m_diagnostics.value(uri); if (versionedDiagnostics.version.value_or(version) == version) { for (const Diagnostic &diagnostic : versionedDiagnostics.diagnostics) { extraSelections << toDiagnosticsSelections(diagnostic, doc->document()); - doc->addMark(m_textMarkCreator(filePath, diagnostic)); + m_marks[filePath].append(m_textMarkCreator(filePath, diagnostic)); } } @@ -164,7 +157,13 @@ TextEditor::TextMark *DiagnosticManager::createTextMark(const FilePath &filePath void DiagnosticManager::clearDiagnostics() { for (const DocumentUri &uri : m_diagnostics.keys()) - removeDiagnostics(uri); + hideDiagnostics(uri.toFilePath()); + m_diagnostics.clear(); + if (!QTC_GUARD(m_marks.isEmpty())) { + for (const QList<TextEditor::TextMark *> &marks : qAsConst(m_marks)) + qDeleteAll(marks); + m_marks.clear(); + } } QList<Diagnostic> DiagnosticManager::diagnosticsAt(const DocumentUri &uri, diff --git a/src/plugins/languageclient/diagnosticmanager.h b/src/plugins/languageclient/diagnosticmanager.h index e3a2aefcc8..a7e2e47485 100644 --- a/src/plugins/languageclient/diagnosticmanager.h +++ b/src/plugins/languageclient/diagnosticmanager.h @@ -56,10 +56,9 @@ public: void setDiagnostics(const LanguageServerProtocol::DocumentUri &uri, const QList<LanguageServerProtocol::Diagnostic> &diagnostics, const Utils::optional<int> &version); - void removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri); void showDiagnostics(const LanguageServerProtocol::DocumentUri &uri, int version); - void hideDiagnostics(TextEditor::TextDocument *doc); + void hideDiagnostics(const Utils::FilePath &filePath); void clearDiagnostics(); @@ -81,6 +80,7 @@ private: QList<LanguageServerProtocol::Diagnostic> diagnostics; }; QMap<LanguageServerProtocol::DocumentUri, VersionedDiagnostics> m_diagnostics; + QMap<Utils::FilePath, QList<TextEditor::TextMark *>> m_marks; TextMarkCreator m_textMarkCreator; HideDiagnosticsHandler m_hideHandler; Client *m_client; diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index bce818f96a..3cec5a2e49 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -427,7 +427,7 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( items = Utils::get<QList<CompletionItem>>(*result); } auto proposalItems = generateCompletionItems(items); - if (!proposalItems.isEmpty() && !m_snippetsGroup.isEmpty()) { + if (!m_snippetsGroup.isEmpty()) { proposalItems << TextEditor::SnippetAssistCollector( m_snippetsGroup, QIcon(":/texteditor/images/snippet.png")).collect(); } |