DocumentLocatorFilter: Get rid of the arg from c'tor

It's always LanguageClientManager::instance().
Pimpl LanguageClientManager's filters, so that they are
constructed after the managerInstance is being assigned.

Change-Id: Ib1f6f0c96d57d0e4cb7332ce322f6c4e9ef9fdb1
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2023-04-07 09:34:00 +02:00
parent c8ac10b4c1
commit ed120516f6
6 changed files with 18 additions and 10 deletions

View File

@@ -192,7 +192,6 @@ class LspCurrentDocumentFilter : public DocumentLocatorFilter
{ {
public: public:
LspCurrentDocumentFilter() LspCurrentDocumentFilter()
: DocumentLocatorFilter(LanguageClientManager::instance())
{ {
setId({}); setId({});
setDisplayName({}); setDisplayName({});

View File

@@ -27,6 +27,7 @@
#include <cppeditor/editordocumenthandle.h> #include <cppeditor/editordocumenthandle.h>
#include <languageclient/languageclientmanager.h> #include <languageclient/languageclientmanager.h>
#include <languageclient/locatorfilter.h>
#include <texteditor/quickfix.h> #include <texteditor/quickfix.h>

View File

@@ -6,6 +6,7 @@
#include "languageclientplugin.h" #include "languageclientplugin.h"
#include "languageclientsymbolsupport.h" #include "languageclientsymbolsupport.h"
#include "languageclienttr.h" #include "languageclienttr.h"
#include "locatorfilter.h"
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
@@ -41,9 +42,19 @@ static Q_LOGGING_CATEGORY(Log, "qtc.languageclient.manager", QtWarningMsg)
static LanguageClientManager *managerInstance = nullptr; static LanguageClientManager *managerInstance = nullptr;
static bool g_shuttingDown = false; static bool g_shuttingDown = false;
class LanguageClientManagerPrivate
{
DocumentLocatorFilter m_currentDocumentLocatorFilter;
WorkspaceLocatorFilter m_workspaceLocatorFilter;
WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter;
WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter;
};
LanguageClientManager::LanguageClientManager(QObject *parent) LanguageClientManager::LanguageClientManager(QObject *parent)
: QObject(parent) : QObject(parent)
{ {
managerInstance = this;
d.reset(new LanguageClientManagerPrivate);
using namespace Core; using namespace Core;
using namespace ProjectExplorer; using namespace ProjectExplorer;
connect(EditorManager::instance(), &EditorManager::editorOpened, connect(EditorManager::instance(), &EditorManager::editorOpened,
@@ -74,7 +85,7 @@ void LanguageClientManager::init()
if (managerInstance) if (managerInstance)
return; return;
QTC_ASSERT(LanguageClientPlugin::instance(), return); QTC_ASSERT(LanguageClientPlugin::instance(), return);
managerInstance = new LanguageClientManager(LanguageClientPlugin::instance()); new LanguageClientManager(LanguageClientPlugin::instance());
} }
void LanguageClient::LanguageClientManager::addClient(Client *client) void LanguageClient::LanguageClientManager::addClient(Client *client)

View File

@@ -6,7 +6,6 @@
#include "client.h" #include "client.h"
#include "languageclient_global.h" #include "languageclient_global.h"
#include "languageclientsettings.h" #include "languageclientsettings.h"
#include "locatorfilter.h"
#include "lspinspector.h" #include "lspinspector.h"
#include <utils/algorithm.h> #include <utils/algorithm.h>
@@ -25,6 +24,7 @@ namespace ProjectExplorer { class Project; }
namespace LanguageClient { namespace LanguageClient {
class LanguageClientManagerPrivate;
class LanguageClientMark; class LanguageClientMark;
class LANGUAGECLIENT_EXPORT LanguageClientManager : public QObject class LANGUAGECLIENT_EXPORT LanguageClientManager : public QObject
@@ -104,10 +104,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{this}; std::unique_ptr<LanguageClientManagerPrivate> d;
WorkspaceLocatorFilter m_workspaceLocatorFilter;
WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter;
WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter;
LspInspector m_inspector; LspInspector m_inspector;
}; };

View File

@@ -110,7 +110,7 @@ LocatorMatcherTask workspaceFunctionMatcher(Client *client, int maxResultCount)
{SymbolKind::Method, SymbolKind::Function, SymbolKind::Constructor}); {SymbolKind::Method, SymbolKind::Function, SymbolKind::Constructor});
} }
DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageManager) DocumentLocatorFilter::DocumentLocatorFilter()
{ {
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));
@@ -121,7 +121,7 @@ DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageMana
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, connect(LanguageClientManager::instance(), &LanguageClientManager::clientInitialized,
this, &DocumentLocatorFilter::updateCurrentClient); this, &DocumentLocatorFilter::updateCurrentClient);
} }

View File

@@ -33,7 +33,7 @@ class LANGUAGECLIENT_EXPORT DocumentLocatorFilter : public Core::ILocatorFilter
{ {
Q_OBJECT Q_OBJECT
public: public:
DocumentLocatorFilter(LanguageClientManager *languageManager); DocumentLocatorFilter();
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,