DocumentLocatorFilter: Make it more self-contained

Hide public DocumentLocatorFilter::updateCurrentClient()
method and remove
ClangdCurrentDocumentFilter::updateCurrentClient().
Connect DocumentLocatorFilter internally into a new
LanguageClientManager::clientInitialized() signal instead.

Change-Id: Ie74a112bda811525b7d226da1377e5624130e9ed
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Jarek Kobus
2023-03-17 07:18:47 +01:00
parent bff2e12120
commit af84305f12
7 changed files with 14 additions and 20 deletions

View File

@@ -9,7 +9,6 @@
#include "clangdcompletion.h"
#include "clangdfindreferences.h"
#include "clangdfollowsymbol.h"
#include "clangdlocatorfilters.h"
#include "clangdmemoryusagewidget.h"
#include "clangdquickfixes.h"
#include "clangdsemantichighlighting.h"
@@ -471,12 +470,7 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c
}
});
connect(this, &Client::initialized, this, [this] {
auto currentDocumentFilter = static_cast<ClangdCurrentDocumentFilter *>(
CppEditor::CppModelManager::instance()->currentDocumentFilter());
currentDocumentFilter->updateCurrentClient();
d->openedExtraFiles.clear();
});
connect(this, &Client::initialized, this, [this] { d->openedExtraFiles.clear(); });
start();
}

View File

@@ -12,6 +12,7 @@
#include <cppeditor/cpplocatorfilter.h>
#include <cppeditor/cppmodelmanager.h>
#include <cppeditor/indexitem.h>
#include <languageclient/languageclientmanager.h>
#include <languageclient/languageclientutils.h>
#include <languageclient/locatorfilter.h>
#include <projectexplorer/projectmanager.h>
@@ -194,6 +195,7 @@ class LspCurrentDocumentFilter : public DocumentLocatorFilter
{
public:
LspCurrentDocumentFilter()
: DocumentLocatorFilter(LanguageClientManager::instance())
{
setId({});
setDisplayName({});
@@ -313,11 +315,6 @@ ClangdCurrentDocumentFilter::ClangdCurrentDocumentFilter() : d(new Private)
ClangdCurrentDocumentFilter::~ClangdCurrentDocumentFilter() { delete d; }
void ClangdCurrentDocumentFilter::updateCurrentClient()
{
d->lspFilter.updateCurrentClient();
}
void ClangdCurrentDocumentFilter::prepareSearch(const QString &entry)
{
const auto doc = TextEditor::TextDocument::currentTextDocument();

View File

@@ -44,8 +44,6 @@ public:
ClangdCurrentDocumentFilter();
~ClangdCurrentDocumentFilter() override;
void updateCurrentClient();
private:
void prepareSearch(const QString &entry) override;
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,

View File

@@ -41,7 +41,7 @@ static LanguageClientManager *managerInstance = nullptr;
static bool g_shuttingDown = false;
LanguageClientManager::LanguageClientManager(QObject *parent)
: QObject (parent)
: QObject(parent)
{
using namespace Core;
using namespace ProjectExplorer;
@@ -91,7 +91,7 @@ void LanguageClient::LanguageClientManager::addClient(Client *client)
&Client::initialized,
managerInstance,
[client](const LanguageServerProtocol::ServerCapabilities &capabilities) {
managerInstance->m_currentDocumentLocatorFilter.updateCurrentClient();
emit managerInstance->clientInitialized(client);
managerInstance->m_inspector.clientInitialized(client->name(), capabilities);
});
connect(client,

View File

@@ -80,6 +80,7 @@ public:
signals:
void clientAdded(Client *client);
void clientInitialized(Client *client);
void clientRemoved(Client *client);
void shutdownFinished();
@@ -102,7 +103,7 @@ private:
QList<BaseSettings *> m_currentSettings; // owned
QMap<QString, QList<Client *>> m_clientsForSetting;
QHash<TextEditor::TextDocument *, QPointer<Client>> m_clientForDocument;
DocumentLocatorFilter m_currentDocumentLocatorFilter;
DocumentLocatorFilter m_currentDocumentLocatorFilter{this};
WorkspaceLocatorFilter m_workspaceLocatorFilter;
WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter;
WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter;

View File

@@ -24,7 +24,7 @@ using namespace LanguageServerProtocol;
namespace LanguageClient {
DocumentLocatorFilter::DocumentLocatorFilter()
DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageManager)
{
setId(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_ID);
setDisplayName(Tr::tr(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_DISPLAY_NAME));
@@ -35,6 +35,8 @@ DocumentLocatorFilter::DocumentLocatorFilter()
setPriority(ILocatorFilter::Low);
connect(EditorManager::instance(), &EditorManager::currentEditorChanged,
this, &DocumentLocatorFilter::updateCurrentClient);
connect(languageManager, &LanguageClientManager::clientInitialized,
this, &DocumentLocatorFilter::updateCurrentClient);
}
void DocumentLocatorFilter::updateCurrentClient()

View File

@@ -19,13 +19,14 @@ namespace Core { class IEditor; }
namespace LanguageClient {
class LanguageClientManager;
class LANGUAGECLIENT_EXPORT DocumentLocatorFilter : public Core::ILocatorFilter
{
Q_OBJECT
public:
DocumentLocatorFilter();
DocumentLocatorFilter(LanguageClientManager *languageManager);
void updateCurrentClient();
void prepareSearch(const QString &entry) override;
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
const QString &entry) override;
@@ -40,6 +41,7 @@ protected:
Utils::FilePath m_currentFilePath;
private:
void updateCurrentClient();
void updateSymbols(const LanguageServerProtocol::DocumentUri &uri,
const LanguageServerProtocol::DocumentSymbolsResult &symbols);
void resetSymbols();