LanguageClient: Decouple plugin and LanguageClientManager a bit

Change-Id: I052156bbc52838e61eb2782af7b48e308eef4a3a
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2024-01-15 11:33:29 +01:00
parent 9d59b790ae
commit 27471f6c55
4 changed files with 13 additions and 22 deletions

View File

@@ -3,7 +3,6 @@
#include "languageclientmanager.h"
#include "languageclientplugin.h"
#include "languageclientsymbolsupport.h"
#include "languageclienttr.h"
#include "locatorfilter.h"
@@ -23,6 +22,7 @@
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectmanager.h>
#include <texteditor/ioutlinewidget.h>
#include <texteditor/textdocument.h>
#include <texteditor/texteditor.h>
#include <texteditor/textmark.h>
@@ -76,14 +76,6 @@ LanguageClientManager::~LanguageClientManager()
managerInstance = nullptr;
}
void LanguageClientManager::init()
{
if (managerInstance)
return;
QTC_ASSERT(LanguageClientPlugin::instance(), return);
new LanguageClientManager(LanguageClientPlugin::instance());
}
void LanguageClient::LanguageClientManager::addClient(Client *client)
{
QTC_ASSERT(managerInstance, return);
@@ -681,4 +673,9 @@ bool LanguageClientManager::isShutdownFinished()
&& managerInstance->m_scheduledForDeletion.isEmpty();
}
void setupLanguageClientManager(QObject *guard)
{
(void) new LanguageClientManager(guard);
}
} // namespace LanguageClient

View File

@@ -33,10 +33,6 @@ class LANGUAGECLIENT_EXPORT LanguageClientManager : public QObject
Q_DISABLE_COPY_MOVE(LanguageClientManager)
public:
~LanguageClientManager() override;
static void init();
static void clientStarted(Client *client);
static void clientFinished(Client *client);
static Client *startClient(const BaseSettings *setting, ProjectExplorer::Project *project = nullptr);
@@ -89,7 +85,10 @@ signals:
void openCallHierarchy();
private:
LanguageClientManager(QObject *parent);
explicit LanguageClientManager(QObject *parent);
~LanguageClientManager() override;
friend void setupLanguageClientManager(QObject *guard);
void editorOpened(Core::IEditor *editor);
void documentOpened(Core::IDocument *document);
@@ -119,4 +118,6 @@ template<typename T> bool LanguageClientManager::hasClients()
});
}
void setupLanguageClientManager(QObject *guard);
} // namespace LanguageClient

View File

@@ -29,19 +29,14 @@ LanguageClientPlugin::~LanguageClientPlugin()
m_instance = nullptr;
}
LanguageClientPlugin *LanguageClientPlugin::instance()
{
return m_instance;
}
void LanguageClientPlugin::initialize()
{
using namespace Core;
setupCallHierarchyFactory();
setupLanguageClientProjectPanel();
setupLanguageClientManager(this);
LanguageClientManager::init();
LanguageClientSettings::registerClientType({Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID,
Tr::tr("Generic StdIO Language Server"),
[]() { return new StdIOSettings; }});

View File

@@ -17,8 +17,6 @@ public:
LanguageClientPlugin();
~LanguageClientPlugin() override;
static LanguageClientPlugin *instance();
// IPlugin interface
private:
void initialize() override;