diff --git a/src/plugins/clangcodemodel/clangdlocatorfilters.cpp b/src/plugins/clangcodemodel/clangdlocatorfilters.cpp index a7700d942af..0f37e4fb554 100644 --- a/src/plugins/clangcodemodel/clangdlocatorfilters.cpp +++ b/src/plugins/clangcodemodel/clangdlocatorfilters.cpp @@ -192,7 +192,6 @@ class LspCurrentDocumentFilter : public DocumentLocatorFilter { public: LspCurrentDocumentFilter() - : DocumentLocatorFilter(LanguageClientManager::instance()) { setId({}); setDisplayName({}); diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index d10c9c6e28f..4d9ee95d860 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -27,6 +27,7 @@ #include #include +#include #include diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 2d896f1a2d3..275e9ed9e49 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -6,6 +6,7 @@ #include "languageclientplugin.h" #include "languageclientsymbolsupport.h" #include "languageclienttr.h" +#include "locatorfilter.h" #include #include @@ -41,9 +42,19 @@ static Q_LOGGING_CATEGORY(Log, "qtc.languageclient.manager", QtWarningMsg) static LanguageClientManager *managerInstance = nullptr; static bool g_shuttingDown = false; +class LanguageClientManagerPrivate +{ + DocumentLocatorFilter m_currentDocumentLocatorFilter; + WorkspaceLocatorFilter m_workspaceLocatorFilter; + WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter; + WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter; +}; + LanguageClientManager::LanguageClientManager(QObject *parent) : QObject(parent) { + managerInstance = this; + d.reset(new LanguageClientManagerPrivate); using namespace Core; using namespace ProjectExplorer; connect(EditorManager::instance(), &EditorManager::editorOpened, @@ -74,7 +85,7 @@ void LanguageClientManager::init() if (managerInstance) return; QTC_ASSERT(LanguageClientPlugin::instance(), return); - managerInstance = new LanguageClientManager(LanguageClientPlugin::instance()); + new LanguageClientManager(LanguageClientPlugin::instance()); } void LanguageClient::LanguageClientManager::addClient(Client *client) diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h index cf90a2f7468..dd36da935e8 100644 --- a/src/plugins/languageclient/languageclientmanager.h +++ b/src/plugins/languageclient/languageclientmanager.h @@ -6,7 +6,6 @@ #include "client.h" #include "languageclient_global.h" #include "languageclientsettings.h" -#include "locatorfilter.h" #include "lspinspector.h" #include @@ -25,6 +24,7 @@ namespace ProjectExplorer { class Project; } namespace LanguageClient { +class LanguageClientManagerPrivate; class LanguageClientMark; class LANGUAGECLIENT_EXPORT LanguageClientManager : public QObject @@ -104,10 +104,7 @@ private: QList m_currentSettings; // owned QMap> m_clientsForSetting; QHash> m_clientForDocument; - DocumentLocatorFilter m_currentDocumentLocatorFilter{this}; - WorkspaceLocatorFilter m_workspaceLocatorFilter; - WorkspaceClassLocatorFilter m_workspaceClassLocatorFilter; - WorkspaceMethodLocatorFilter m_workspaceMethodLocatorFilter; + std::unique_ptr d; LspInspector m_inspector; }; diff --git a/src/plugins/languageclient/locatorfilter.cpp b/src/plugins/languageclient/locatorfilter.cpp index 19f1698f3ed..fb883c7603d 100644 --- a/src/plugins/languageclient/locatorfilter.cpp +++ b/src/plugins/languageclient/locatorfilter.cpp @@ -110,7 +110,7 @@ LocatorMatcherTask workspaceFunctionMatcher(Client *client, int maxResultCount) {SymbolKind::Method, SymbolKind::Function, SymbolKind::Constructor}); } -DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageManager) +DocumentLocatorFilter::DocumentLocatorFilter() { setId(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_ID); setDisplayName(Tr::tr(Constants::LANGUAGECLIENT_DOCUMENT_FILTER_DISPLAY_NAME)); @@ -121,7 +121,7 @@ DocumentLocatorFilter::DocumentLocatorFilter(LanguageClientManager *languageMana setPriority(ILocatorFilter::Low); connect(EditorManager::instance(), &EditorManager::currentEditorChanged, this, &DocumentLocatorFilter::updateCurrentClient); - connect(languageManager, &LanguageClientManager::clientInitialized, + connect(LanguageClientManager::instance(), &LanguageClientManager::clientInitialized, this, &DocumentLocatorFilter::updateCurrentClient); } diff --git a/src/plugins/languageclient/locatorfilter.h b/src/plugins/languageclient/locatorfilter.h index bf6ff30a015..d1c000331a9 100644 --- a/src/plugins/languageclient/locatorfilter.h +++ b/src/plugins/languageclient/locatorfilter.h @@ -33,7 +33,7 @@ class LANGUAGECLIENT_EXPORT DocumentLocatorFilter : public Core::ILocatorFilter { Q_OBJECT public: - DocumentLocatorFilter(LanguageClientManager *languageManager); + DocumentLocatorFilter(); void prepareSearch(const QString &entry) override; QList matchesFor(QFutureInterface &future,