LanguageClient: add current document locator filter

Change-Id: I20442a254e4e016088b2da845d87af6e9f836731
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-04-05 10:05:25 +02:00
parent ac91f6f452
commit 69e880c050
11 changed files with 349 additions and 43 deletions

View File

@@ -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);