forked from qt-creator/qt-creator
LanguageClient: compress requests from the symbol cache
Change-Id: I58c6863fae6e275073c377558eaba18f7f32b4f2 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -50,24 +50,34 @@ DocumentSymbolCache::DocumentSymbolCache(Client *client)
|
||||
&Core::EditorManager::documentOpened,
|
||||
this,
|
||||
connectDocument);
|
||||
m_compressionTimer.setSingleShot(true);
|
||||
connect(&m_compressionTimer, &QTimer::timeout, this, &DocumentSymbolCache::requestSymbolsImpl);
|
||||
}
|
||||
|
||||
void DocumentSymbolCache::requestSymbols(const DocumentUri &uri)
|
||||
{
|
||||
auto entry = m_cache.find(uri);
|
||||
if (entry != m_cache.end()) {
|
||||
emit gotSymbols(uri, entry.value());
|
||||
return;
|
||||
}
|
||||
m_compressedUris.insert(uri);
|
||||
m_compressionTimer.start(200);
|
||||
}
|
||||
|
||||
const DocumentSymbolParams params((TextDocumentIdentifier(uri)));
|
||||
DocumentSymbolsRequest request(params);
|
||||
request.setResponseCallback([uri, self = QPointer<DocumentSymbolCache>(this)](
|
||||
const DocumentSymbolsRequest::Response &response) {
|
||||
if (self)
|
||||
self->handleResponse(uri, response);
|
||||
});
|
||||
m_client->sendContent(request);
|
||||
void DocumentSymbolCache::requestSymbolsImpl()
|
||||
{
|
||||
for (const DocumentUri &uri : qAsConst(m_compressedUris)) {
|
||||
auto entry = m_cache.find(uri);
|
||||
if (entry != m_cache.end()) {
|
||||
emit gotSymbols(uri, entry.value());
|
||||
return;
|
||||
}
|
||||
|
||||
const DocumentSymbolParams params((TextDocumentIdentifier(uri)));
|
||||
DocumentSymbolsRequest request(params);
|
||||
request.setResponseCallback([uri, self = QPointer<DocumentSymbolCache>(this)](
|
||||
const DocumentSymbolsRequest::Response &response) {
|
||||
if (self)
|
||||
self->handleResponse(uri, response);
|
||||
});
|
||||
m_client->sendContent(request);
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentSymbolCache::handleResponse(const DocumentUri &uri,
|
||||
|
||||
Reference in New Issue
Block a user