forked from qt-creator/qt-creator
LanguageClient: Decouple plugin and LanguageClientManager a bit
Change-Id: I052156bbc52838e61eb2782af7b48e308eef4a3a Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "languageclientmanager.h"
|
#include "languageclientmanager.h"
|
||||||
|
|
||||||
#include "languageclientplugin.h"
|
|
||||||
#include "languageclientsymbolsupport.h"
|
#include "languageclientsymbolsupport.h"
|
||||||
#include "languageclienttr.h"
|
#include "languageclienttr.h"
|
||||||
#include "locatorfilter.h"
|
#include "locatorfilter.h"
|
||||||
@@ -23,6 +22,7 @@
|
|||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/projectmanager.h>
|
#include <projectexplorer/projectmanager.h>
|
||||||
|
|
||||||
|
#include <texteditor/ioutlinewidget.h>
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
#include <texteditor/texteditor.h>
|
#include <texteditor/texteditor.h>
|
||||||
#include <texteditor/textmark.h>
|
#include <texteditor/textmark.h>
|
||||||
@@ -76,14 +76,6 @@ LanguageClientManager::~LanguageClientManager()
|
|||||||
managerInstance = nullptr;
|
managerInstance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientManager::init()
|
|
||||||
{
|
|
||||||
if (managerInstance)
|
|
||||||
return;
|
|
||||||
QTC_ASSERT(LanguageClientPlugin::instance(), return);
|
|
||||||
new LanguageClientManager(LanguageClientPlugin::instance());
|
|
||||||
}
|
|
||||||
|
|
||||||
void LanguageClient::LanguageClientManager::addClient(Client *client)
|
void LanguageClient::LanguageClientManager::addClient(Client *client)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(managerInstance, return);
|
QTC_ASSERT(managerInstance, return);
|
||||||
@@ -681,4 +673,9 @@ bool LanguageClientManager::isShutdownFinished()
|
|||||||
&& managerInstance->m_scheduledForDeletion.isEmpty();
|
&& managerInstance->m_scheduledForDeletion.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setupLanguageClientManager(QObject *guard)
|
||||||
|
{
|
||||||
|
(void) new LanguageClientManager(guard);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace LanguageClient
|
} // namespace LanguageClient
|
||||||
|
@@ -33,10 +33,6 @@ class LANGUAGECLIENT_EXPORT LanguageClientManager : public QObject
|
|||||||
Q_DISABLE_COPY_MOVE(LanguageClientManager)
|
Q_DISABLE_COPY_MOVE(LanguageClientManager)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~LanguageClientManager() override;
|
|
||||||
|
|
||||||
static void init();
|
|
||||||
|
|
||||||
static void clientStarted(Client *client);
|
static void clientStarted(Client *client);
|
||||||
static void clientFinished(Client *client);
|
static void clientFinished(Client *client);
|
||||||
static Client *startClient(const BaseSettings *setting, ProjectExplorer::Project *project = nullptr);
|
static Client *startClient(const BaseSettings *setting, ProjectExplorer::Project *project = nullptr);
|
||||||
@@ -89,7 +85,10 @@ signals:
|
|||||||
void openCallHierarchy();
|
void openCallHierarchy();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LanguageClientManager(QObject *parent);
|
explicit LanguageClientManager(QObject *parent);
|
||||||
|
~LanguageClientManager() override;
|
||||||
|
|
||||||
|
friend void setupLanguageClientManager(QObject *guard);
|
||||||
|
|
||||||
void editorOpened(Core::IEditor *editor);
|
void editorOpened(Core::IEditor *editor);
|
||||||
void documentOpened(Core::IDocument *document);
|
void documentOpened(Core::IDocument *document);
|
||||||
@@ -119,4 +118,6 @@ template<typename T> bool LanguageClientManager::hasClients()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setupLanguageClientManager(QObject *guard);
|
||||||
|
|
||||||
} // namespace LanguageClient
|
} // namespace LanguageClient
|
||||||
|
@@ -29,19 +29,14 @@ LanguageClientPlugin::~LanguageClientPlugin()
|
|||||||
m_instance = nullptr;
|
m_instance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
LanguageClientPlugin *LanguageClientPlugin::instance()
|
|
||||||
{
|
|
||||||
return m_instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LanguageClientPlugin::initialize()
|
void LanguageClientPlugin::initialize()
|
||||||
{
|
{
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
|
|
||||||
setupCallHierarchyFactory();
|
setupCallHierarchyFactory();
|
||||||
setupLanguageClientProjectPanel();
|
setupLanguageClientProjectPanel();
|
||||||
|
setupLanguageClientManager(this);
|
||||||
|
|
||||||
LanguageClientManager::init();
|
|
||||||
LanguageClientSettings::registerClientType({Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID,
|
LanguageClientSettings::registerClientType({Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID,
|
||||||
Tr::tr("Generic StdIO Language Server"),
|
Tr::tr("Generic StdIO Language Server"),
|
||||||
[]() { return new StdIOSettings; }});
|
[]() { return new StdIOSettings; }});
|
||||||
|
@@ -17,8 +17,6 @@ public:
|
|||||||
LanguageClientPlugin();
|
LanguageClientPlugin();
|
||||||
~LanguageClientPlugin() override;
|
~LanguageClientPlugin() override;
|
||||||
|
|
||||||
static LanguageClientPlugin *instance();
|
|
||||||
|
|
||||||
// IPlugin interface
|
// IPlugin interface
|
||||||
private:
|
private:
|
||||||
void initialize() override;
|
void initialize() override;
|
||||||
|
Reference in New Issue
Block a user