LanguageClient: move document symbol support check to client

Used there to prevent requesting document symbols from server that do
not support these requests.

Change-Id: Icca64c41415ba7098c769854823431fb05e5ce1d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-12-10 10:49:30 +01:00
parent 92156cc1d6
commit 348652dc26
6 changed files with 45 additions and 34 deletions

View File

@@ -67,6 +67,13 @@ void DocumentSymbolCache::requestSymbols(const DocumentUri &uri, Schedule schedu
}
}
bool clientSupportsDocumentSymbols(const Client *client, const DocumentUri &uri)
{
QTC_ASSERT(client, return false);
const auto doc = TextEditor::TextDocument::textDocumentForFilePath(uri.toFilePath());
return client->supportsDocumentSymbols(doc);
}
void DocumentSymbolCache::requestSymbolsImpl()
{
if (!m_client->reachable()) {
@@ -80,6 +87,11 @@ void DocumentSymbolCache::requestSymbolsImpl()
continue;
}
if (!LanguageClient::clientSupportsDocumentSymbols(m_client, uri)) {
emit gotSymbols(uri, nullptr);
continue;
}
const DocumentSymbolParams params((TextDocumentIdentifier(uri)));
DocumentSymbolsRequest request(params);
request.setResponseCallback([uri, self = QPointer<DocumentSymbolCache>(this)](