From 60f5275edf790ecd88a3017d740d62479bb5dc8d Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 22 Aug 2022 09:38:09 +0200 Subject: [PATCH] Client: rerequest document highlight if server is unreachable Makes sure the highlight is properly updated and prevents assert in Client::sendMessage. Change-Id: Ie7ad54c34272867e17f6e20654f27e2fd8711fdc Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 425eee223b0..708c4328c90 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -774,9 +774,13 @@ void ClientPrivate::requestDocumentHighlights(TextEditor::TextEditorWidget *widg delete m_documentHighlightsTimer.take(widget); }); connect(timer, &QTimer::timeout, this, [this, widget, connection]() { - disconnect(connection); - requestDocumentHighlightsNow(widget); - m_documentHighlightsTimer.take(widget)->deleteLater(); + if (q->reachable()) { + disconnect(connection); + requestDocumentHighlightsNow(widget); + m_documentHighlightsTimer.take(widget)->deleteLater(); + } else { + m_documentHighlightsTimer[widget]->start(250); + } }); } timer->start(250); @@ -784,6 +788,7 @@ void ClientPrivate::requestDocumentHighlights(TextEditor::TextEditorWidget *widg void ClientPrivate::requestDocumentHighlightsNow(TextEditor::TextEditorWidget *widget) { + QTC_ASSERT(q->reachable(), return); const auto uri = DocumentUri::fromFilePath(widget->textDocument()->filePath()); if (m_dynamicCapabilities.isRegistered(DocumentHighlightsRequest::methodName).value_or(false)) { TextDocumentRegistrationOptions option(