aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/languageclient/languageclientmanager.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-04-05 10:05:25 +0200
committerDavid Schulz <david.schulz@qt.io>2019-04-30 05:19:31 +0000
commit69e880c050bd5afa7930600cab30370c202c11fd (patch)
tree75143aac9a0a964897f58009314016b649cb02b3 /src/plugins/languageclient/languageclientmanager.cpp
parentac91f6f4528c3f2ac34d3caeb0d65abb8167db3b (diff)
LanguageClient: add current document locator filter
Change-Id: I20442a254e4e016088b2da845d87af6e9f836731 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientmanager.cpp')
-rw-r--r--src/plugins/languageclient/languageclientmanager.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp
index 75fae98545b..789e5758f5c 100644
--- a/src/plugins/languageclient/languageclientmanager.cpp
+++ b/src/plugins/languageclient/languageclientmanager.cpp
@@ -110,6 +110,11 @@ void LanguageClientManager::startClient(Client *client)
client->initialize();
else
managerInstance->clientFinished(client);
+
+ connect(client,
+ &Client::initialized,
+ &managerInstance->m_currentDocumentLocatorFilter,
+ &DocumentLocatorFilter::updateCurrentClient);
}
void LanguageClientManager::startClient(BaseSettings *setting, ProjectExplorer::Project *project)
@@ -275,6 +280,20 @@ const BaseSettings *LanguageClientManager::settingForClient(Client *client)
return nullptr;
}
+Client *LanguageClientManager::clientForEditor(Core::IEditor *iEditor)
+{
+ QTC_ASSERT(managerInstance, return nullptr);
+
+ auto editor = qobject_cast<TextEditor::BaseTextEditor *>(iEditor);
+ if (!editor)
+ return nullptr;
+
+ return Utils::findOrDefault(managerInstance->reachableClients(),
+ [doc = editor->textDocument()](Client *client) {
+ return client->documentOpen(doc);
+ });
+}
+
QVector<Client *> LanguageClientManager::reachableClients()
{
return Utils::filtered(m_clients, &Client::reachable);