From ed199da1dfc035c26ee3674ce8f1f7fcd7412327 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 7 Jul 2021 07:42:47 +0200 Subject: [PATCH] LanguageClient: update outline after document Do not react on documents contents changes, but postpone the document symbol request after these document changes were send to the server. Change-Id: I43ec8f832c6a1fa6471146a5ec6e3e9223b02c91 Reviewed-by: Christian Kandeler --- src/plugins/languageclient/languageclientoutline.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 4257efb1ff8..a9c3bf5b8b6 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -283,7 +283,7 @@ private: void updateModel(const DocumentUri &resultUri, const DocumentSymbolsResult &result); void updateEntry(); void activateEntry(); - void requestSymbols(); + void documentUpdated(TextEditor::TextDocument *document); LanguageClientOutlineModel m_model; QPointer m_client; @@ -318,13 +318,12 @@ OutlineComboBox::OutlineComboBox(Client *client, TextEditor::BaseTextEditor *edi connect(client->documentSymbolCache(), &DocumentSymbolCache::gotSymbols, this, &OutlineComboBox::updateModel); - connect(editor->textDocument(), &TextEditor::TextDocument::contentsChanged, - this, &OutlineComboBox::requestSymbols); + connect(client, &Client::documentUpdated, this, &OutlineComboBox::documentUpdated); connect(m_editorWidget, &TextEditor::TextEditorWidget::cursorPositionChanged, this, &OutlineComboBox::updateEntry); connect(this, QOverload::of(&QComboBox::activated), this, &OutlineComboBox::activateEntry); - requestSymbols(); + documentUpdated(editor->textDocument()); } void OutlineComboBox::updateModel(const DocumentUri &resultUri, const DocumentSymbolsResult &result) @@ -365,9 +364,9 @@ void OutlineComboBox::activateEntry() } } -void OutlineComboBox::requestSymbols() +void OutlineComboBox::documentUpdated(TextEditor::TextDocument *document) { - if (m_client) + if (document == m_editorWidget->textDocument()) m_client->documentSymbolCache()->requestSymbols(m_uri); }