From 543ab86ebc0eff31a9664d8bdd02183abb449f11 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 12 Mar 2019 12:53:13 +0100 Subject: [PATCH] LanguageClient: connect each editor widget to the LanguageClientManager ... not just the first returned by BaseTextEditor::textEditorForDocument Change-Id: I262cd68e6dea59aa23be718fb85d2ae68c40ef39 Reviewed-by: Eike Ziller --- .../languageclient/languageclientmanager.cpp | 37 ++++++++++--------- .../languageclient/languageclientmanager.h | 1 + 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 7d481816a40..b097f25a378 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -195,30 +195,31 @@ void LanguageClientManager::clientFinished(Client *client) } } -void LanguageClientManager::documentOpened(Core::IDocument *document) +void LanguageClientManager::editorOpened(Core::IEditor *editor) { using namespace TextEditor; - for (Client *interface : reachableClients()) - interface->openDocument(document); - - if (auto textDocument = qobject_cast(document)) { - if (BaseTextEditor *editor = BaseTextEditor::textEditorForDocument(textDocument)) { - if (TextEditorWidget *widget = editor->editorWidget()) { - connect(widget, &TextEditorWidget::requestLinkAt, this, - [this, filePath = document->filePath()] - (const QTextCursor &cursor, Utils::ProcessLinkCallback &callback){ - findLinkAt(filePath, cursor, callback); - }); - connect(widget, &TextEditorWidget::requestUsages, this, - [this, filePath = document->filePath()] - (const QTextCursor &cursor){ - findUsages(filePath, cursor); - }); - } + if (auto *textEditor = qobject_cast(editor)) { + if (TextEditorWidget *widget = textEditor->editorWidget()) { + connect(widget, &TextEditorWidget::requestLinkAt, this, + [this, filePath = editor->document()->filePath()] + (const QTextCursor &cursor, Utils::ProcessLinkCallback &callback){ + findLinkAt(filePath, cursor, callback); + }); + connect(widget, &TextEditorWidget::requestUsages, this, + [this, filePath = editor->document()->filePath()] + (const QTextCursor &cursor){ + findUsages(filePath, cursor); + }); } } } +void LanguageClientManager::documentOpened(Core::IDocument *document) +{ + for (Client *interface : reachableClients()) + interface->openDocument(document); +} + void LanguageClientManager::documentClosed(Core::IDocument *document) { const DidCloseTextDocumentParams params( diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h index 51531c04679..9f075a94b31 100644 --- a/src/plugins/languageclient/languageclientmanager.h +++ b/src/plugins/languageclient/languageclientmanager.h @@ -75,6 +75,7 @@ signals: private: LanguageClientManager(); + void editorOpened(Core::IEditor *editor); void documentOpened(Core::IDocument *document); void documentClosed(Core::IDocument *document); void documentContentsSaved(Core::IDocument *document);