forked from qt-creator/qt-creator
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:
@@ -9,7 +9,6 @@
|
|||||||
#include "clangdcompletion.h"
|
#include "clangdcompletion.h"
|
||||||
#include "clangdfindreferences.h"
|
#include "clangdfindreferences.h"
|
||||||
#include "clangdfollowsymbol.h"
|
#include "clangdfollowsymbol.h"
|
||||||
#include "clangdlocatorfilters.h"
|
|
||||||
#include "clangdmemoryusagewidget.h"
|
#include "clangdmemoryusagewidget.h"
|
||||||
#include "clangdquickfixes.h"
|
#include "clangdquickfixes.h"
|
||||||
#include "clangdsemantichighlighting.h"
|
#include "clangdsemantichighlighting.h"
|
||||||
@@ -471,12 +470,7 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(this, &Client::initialized, this, [this] {
|
connect(this, &Client::initialized, this, [this] { d->openedExtraFiles.clear(); });
|
||||||
auto currentDocumentFilter = static_cast<ClangdCurrentDocumentFilter *>(
|
|
||||||
CppEditor::CppModelManager::instance()->currentDocumentFilter());
|
|
||||||
currentDocumentFilter->updateCurrentClient();
|
|
||||||
d->openedExtraFiles.clear();
|
|
||||||
});
|
|
||||||
|
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include <cppeditor/cpplocatorfilter.h>
|
#include <cppeditor/cpplocatorfilter.h>
|
||||||
#include <cppeditor/cppmodelmanager.h>
|
#include <cppeditor/cppmodelmanager.h>
|
||||||
#include <cppeditor/indexitem.h>
|
#include <cppeditor/indexitem.h>
|
||||||
|
#include <languageclient/languageclientmanager.h>
|
||||||
#include <languageclient/languageclientutils.h>
|
#include <languageclient/languageclientutils.h>
|
||||||
#include <languageclient/locatorfilter.h>
|
#include <languageclient/locatorfilter.h>
|
||||||
#include <projectexplorer/projectmanager.h>
|
#include <projectexplorer/projectmanager.h>
|
||||||
@@ -194,6 +195,7 @@ class LspCurrentDocumentFilter : public DocumentLocatorFilter
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LspCurrentDocumentFilter()
|
LspCurrentDocumentFilter()
|
||||||
|
: DocumentLocatorFilter(LanguageClientManager::instance())
|
||||||
{
|
{
|
||||||
setId({});
|
setId({});
|
||||||
setDisplayName({});
|
setDisplayName({});
|
||||||
@@ -313,11 +315,6 @@ ClangdCurrentDocumentFilter::ClangdCurrentDocumentFilter() : d(new Private)
|
|||||||
|
|
||||||
ClangdCurrentDocumentFilter::~ClangdCurrentDocumentFilter() { delete d; }
|
ClangdCurrentDocumentFilter::~ClangdCurrentDocumentFilter() { delete d; }
|
||||||
|
|
||||||
void ClangdCurrentDocumentFilter::updateCurrentClient()
|
|
||||||
{
|
|
||||||
d->lspFilter.updateCurrentClient();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClangdCurrentDocumentFilter::prepareSearch(const QString &entry)
|
void ClangdCurrentDocumentFilter::prepareSearch(const QString &entry)
|
||||||
{
|
{
|
||||||
const auto doc = TextEditor::TextDocument::currentTextDocument();
|
const auto doc = TextEditor::TextDocument::currentTextDocument();
|
||||||
|
|||||||
@@ -44,8 +44,6 @@ public:
|
|||||||
ClangdCurrentDocumentFilter();
|
ClangdCurrentDocumentFilter();
|
||||||
~ClangdCurrentDocumentFilter() override;
|
~ClangdCurrentDocumentFilter() override;
|
||||||
|
|
||||||
void updateCurrentClient();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void prepareSearch(const QString &entry) override;
|
void prepareSearch(const QString &entry) override;
|
||||||
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
|
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ static LanguageClientManager *managerInstance = nullptr;
|
|||||||
static bool g_shuttingDown = false;
|
static bool g_shuttingDown = false;
|
||||||
|
|
||||||
LanguageClientManager::LanguageClientManager(QObject *parent)
|
LanguageClientManager::LanguageClientManager(QObject *parent)
|
||||||
: QObject (parent)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
@@ -91,7 +91,7 @@ void LanguageClient::LanguageClientManager::addClient(Client *client)
|
|||||||
&Client::initialized,
|
&Client::initialized,
|
||||||
managerInstance,
|
managerInstance,
|
||||||
[client](const LanguageServerProtocol::ServerCapabilities &capabilities) {
|
[client](const LanguageServerProtocol::ServerCapabilities &capabilities) {
|
||||||
managerInstance->m_currentDocumentLocatorFilter.updateCurrentClient();
|
emit managerInstance->clientInitialized(client);
|
||||||
managerInstance->m_inspector.clientInitialized(client->name(), capabilities);
|
managerInstance->m_inspector.clientInitialized(client->name(), capabilities);
|
||||||
});
|
});
|
||||||
connect(client,
|
connect(client,
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void clientAdded(Client *client);
|
void clientAdded(Client *client);
|
||||||
|
void clientInitialized(Client *client);
|
||||||
void clientRemoved(Client *client);
|
void clientRemoved(Client *client);
|
||||||
void shutdownFinished();
|
void shutdownFinished();
|
||||||
|
|
||||||
@@ -102,7 +103,7 @@ private:
|
|||||||
QList<BaseSettings *> m_currentSettings; // owned
|
QList<BaseSettings *> m_currentSettings; // owned
|
||||||
QMap<QString, QList<Client *>> m_clientsForSetting;
|
QMap<QString, QList<Client *>> m_clientsForSetting;
|
||||||
QHash<TextEditor::TextDocument *, QPointer<Client>> m_clientForDocument;
|
QHash<TextEditor::TextDocument *, QPointer<Client>> m_clientForDocument;
|
||||||
DocumentLocatorFilter m_currentDocumentLocatorFilter;
|
DocumentLocatorFilter m_currentDocumentLocatorFilter{this};
|
||||||
WorkspaceLocatorFilter m_workspaceLocatorFilter;
|
WorkspaceLocatorFilter m_workspaceLocatorFilter;
|
||||||
WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter;
|
WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter;
|
||||||
WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter;
|
WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ using namespace LanguageServerProtocol;
|
|||||||
|
|
||||||
namespace LanguageClient {
|
namespace LanguageClient {
|
||||||
|
|
||||||
DocumentLocatorFilter::DocumentLocatorFilter()
|
DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageManager)
|
||||||
{
|
{
|
||||||
setId(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_ID);
|
setId(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_ID);
|
||||||
setDisplayName(Tr::tr(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_DISPLAY_NAME));
|
setDisplayName(Tr::tr(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_DISPLAY_NAME));
|
||||||
@@ -35,6 +35,8 @@ DocumentLocatorFilter::DocumentLocatorFilter()
|
|||||||
setPriority(ILocatorFilter::Low);
|
setPriority(ILocatorFilter::Low);
|
||||||
connect(EditorManager::instance(), &EditorManager::currentEditorChanged,
|
connect(EditorManager::instance(), &EditorManager::currentEditorChanged,
|
||||||
this, &DocumentLocatorFilter::updateCurrentClient);
|
this, &DocumentLocatorFilter::updateCurrentClient);
|
||||||
|
connect(languageManager, &LanguageClientManager::clientInitialized,
|
||||||
|
this, &DocumentLocatorFilter::updateCurrentClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentLocatorFilter::updateCurrentClient()
|
void DocumentLocatorFilter::updateCurrentClient()
|
||||||
|
|||||||
@@ -19,13 +19,14 @@ namespace Core { class IEditor; }
|
|||||||
|
|
||||||
namespace LanguageClient {
|
namespace LanguageClient {
|
||||||
|
|
||||||
|
class LanguageClientManager;
|
||||||
|
|
||||||
class LANGUAGECLIENT_EXPORT DocumentLocatorFilter : public Core::ILocatorFilter
|
class LANGUAGECLIENT_EXPORT DocumentLocatorFilter : public Core::ILocatorFilter
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
DocumentLocatorFilter();
|
DocumentLocatorFilter(LanguageClientManager *languageManager);
|
||||||
|
|
||||||
void updateCurrentClient();
|
|
||||||
void prepareSearch(const QString &entry) override;
|
void prepareSearch(const QString &entry) override;
|
||||||
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
|
QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
|
||||||
const QString &entry) override;
|
const QString &entry) override;
|
||||||
@@ -40,6 +41,7 @@ protected:
|
|||||||
Utils::FilePath m_currentFilePath;
|
Utils::FilePath m_currentFilePath;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void updateCurrentClient();
|
||||||
void updateSymbols(const LanguageServerProtocol::DocumentUri &uri,
|
void updateSymbols(const LanguageServerProtocol::DocumentUri &uri,
|
||||||
const LanguageServerProtocol::DocumentSymbolsResult &symbols);
|
const LanguageServerProtocol::DocumentSymbolsResult &symbols);
|
||||||
void resetSymbols();
|
void resetSymbols();
|
||||||
|
|||||||
Reference in New Issue
Block a user