From 54feec93e3ed1cd840d538f323fb7b42dd4f4432 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 23 Sep 2022 11:50:46 +0200 Subject: [PATCH] LanguageClient: correctly initialize editors of opened documents Change-Id: I2dee2093c0bdb97a204e89bf0db526ae405b8e78 Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 34 +++++++++++-------- src/plugins/languageclient/client.h | 1 + .../languageclient/languageclientmanager.cpp | 3 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 426ee17fad5..16717cdfee0 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -845,21 +845,25 @@ void Client::activateDocument(TextEditor::TextDocument *document) document->setQuickFixAssistProvider(d->m_clientProviders.quickFixAssistProvider); } document->setFormatter(new LanguageClientFormatter(document, this)); - for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document)) { - updateEditorToolBar(editor); - if (editor == Core::EditorManager::currentEditor()) - TextEditor::IOutlineWidgetFactory::updateOutline(); - if (auto textEditor = qobject_cast(editor)) { - TextEditor::TextEditorWidget *widget = textEditor->editorWidget(); - widget->addHoverHandler(&d->m_hoverHandler); - d->requestDocumentHighlights(widget); - uint optionalActions = widget->optionalActions(); - if (symbolSupport().supportsFindUsages(document)) - optionalActions |= TextEditor::TextEditorActionHandler::FindUsage; - if (symbolSupport().supportsRename(document)) - optionalActions |= TextEditor::TextEditorActionHandler::RenameSymbol; - widget->setOptionalActions(optionalActions); - } + for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document)) + activateEditor(editor); +} + +void Client::activateEditor(Core::IEditor *editor) +{ + updateEditorToolBar(editor); + if (editor == Core::EditorManager::currentEditor()) + TextEditor::IOutlineWidgetFactory::updateOutline(); + if (auto textEditor = qobject_cast(editor)) { + TextEditor::TextEditorWidget *widget = textEditor->editorWidget(); + widget->addHoverHandler(&d->m_hoverHandler); + d->requestDocumentHighlights(widget); + uint optionalActions = widget->optionalActions(); + if (symbolSupport().supportsFindUsages(widget->textDocument())) + optionalActions |= TextEditor::TextEditorActionHandler::FindUsage; + if (symbolSupport().supportsRename(widget->textDocument())) + optionalActions |= TextEditor::TextEditorActionHandler::RenameSymbol; + widget->setOptionalActions(optionalActions); } } diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index fe07c7ff27e..5f29f080590 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -111,6 +111,7 @@ public: virtual void openDocument(TextEditor::TextDocument *document); void closeDocument(TextEditor::TextDocument *document); void activateDocument(TextEditor::TextDocument *document); + void activateEditor(Core::IEditor *editor); void deactivateDocument(TextEditor::TextDocument *document); bool documentOpen(const TextEditor::TextDocument *document) const; TextEditor::TextDocument *documentForFilePath(const Utils::FilePath &file) const; diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index fd1aea4e5e2..393ecd7c788 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -471,10 +471,9 @@ void LanguageClientManager::editorOpened(Core::IEditor *editor) if (client->reachable()) client->cursorPositionChanged(widget); }); - updateEditorToolBar(editor); if (TextEditor::TextDocument *document = textEditor->textDocument()) { if (Client *client = m_clientForDocument[document]) - widget->addHoverHandler(client->hoverHandler()); + client->activateEditor(editor); } } }