forked from qt-creator/qt-creator
Clang: Improve ClangRefactoringPlugin initializing
Change-Id: I2e45d588e7a8c50b61b401c6dea9f3cf8db45611 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -46,24 +46,34 @@ QString backendProcessPath()
|
|||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
std::unique_ptr<RefactoringClient> ClangRefactoringPlugin::refactoringClient;
|
std::unique_ptr<ClangRefactoringPluginData> ClangRefactoringPlugin::d;
|
||||||
std::unique_ptr<ClangBackEnd::RefactoringConnectionClient> ClangRefactoringPlugin::connectionClient;
|
|
||||||
std::unique_ptr<RefactoringEngine> ClangRefactoringPlugin::engine;
|
class ClangRefactoringPluginData
|
||||||
std::unique_ptr<QtCreatorSearch> ClangRefactoringPlugin::qtCreatorSearch;
|
{
|
||||||
std::unique_ptr<QtCreatorClangQueryFindFilter> ClangRefactoringPlugin::qtCreatorfindFilter;
|
public:
|
||||||
|
RefactoringClient refactoringClient;
|
||||||
|
ClangBackEnd::RefactoringConnectionClient connectionClient{&refactoringClient};
|
||||||
|
RefactoringEngine engine{connectionClient.serverProxy(), refactoringClient};
|
||||||
|
QtCreatorSearch qtCreatorSearch{*Core::SearchResultWindow::instance()};
|
||||||
|
QtCreatorClangQueryFindFilter qtCreatorfindFilter{connectionClient.serverProxy(),
|
||||||
|
qtCreatorSearch,
|
||||||
|
refactoringClient};
|
||||||
|
};
|
||||||
|
|
||||||
|
ClangRefactoringPlugin::ClangRefactoringPlugin()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ClangRefactoringPlugin::~ClangRefactoringPlugin()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool ClangRefactoringPlugin::initialize(const QStringList & /*arguments*/, QString * /*errorMessage*/)
|
bool ClangRefactoringPlugin::initialize(const QStringList & /*arguments*/, QString * /*errorMessage*/)
|
||||||
{
|
{
|
||||||
refactoringClient.reset(new RefactoringClient);
|
d.reset(new ClangRefactoringPluginData);
|
||||||
connectionClient.reset(new ClangBackEnd::RefactoringConnectionClient(refactoringClient.get()));
|
|
||||||
engine.reset(new RefactoringEngine(connectionClient->serverProxy(), *refactoringClient));
|
|
||||||
qtCreatorSearch.reset(new ClangRefactoring::QtCreatorSearch(*Core::SearchResultWindow::instance()));
|
|
||||||
qtCreatorfindFilter.reset(new QtCreatorClangQueryFindFilter(connectionClient->serverProxy(),
|
|
||||||
*qtCreatorSearch.get(),
|
|
||||||
*refactoringClient));
|
|
||||||
|
|
||||||
refactoringClient->setRefactoringEngine(engine.get());
|
d->refactoringClient.setRefactoringEngine(&d->engine);
|
||||||
ExtensionSystem::PluginManager::addObject(qtCreatorfindFilter.get());
|
ExtensionSystem::PluginManager::addObject(&d->qtCreatorfindFilter);
|
||||||
|
|
||||||
connectBackend();
|
connectBackend();
|
||||||
startBackend();
|
startBackend();
|
||||||
@@ -78,34 +88,29 @@ void ClangRefactoringPlugin::extensionsInitialized()
|
|||||||
|
|
||||||
ExtensionSystem::IPlugin::ShutdownFlag ClangRefactoringPlugin::aboutToShutdown()
|
ExtensionSystem::IPlugin::ShutdownFlag ClangRefactoringPlugin::aboutToShutdown()
|
||||||
{
|
{
|
||||||
ExtensionSystem::PluginManager::removeObject(qtCreatorfindFilter.get());
|
ExtensionSystem::PluginManager::removeObject(&d->qtCreatorfindFilter);
|
||||||
refactoringClient->setRefactoringEngine(nullptr);
|
d->refactoringClient.setRefactoringEngine(nullptr);
|
||||||
|
|
||||||
connectionClient->finishProcess();
|
d.reset();
|
||||||
|
|
||||||
qtCreatorfindFilter.reset();
|
|
||||||
engine.reset();
|
|
||||||
connectionClient.reset();
|
|
||||||
refactoringClient.reset();
|
|
||||||
|
|
||||||
return SynchronousShutdown;
|
return SynchronousShutdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefactoringEngine &ClangRefactoringPlugin::refactoringEngine()
|
RefactoringEngine &ClangRefactoringPlugin::refactoringEngine()
|
||||||
{
|
{
|
||||||
return *engine;
|
return d->engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangRefactoringPlugin::startBackend()
|
void ClangRefactoringPlugin::startBackend()
|
||||||
{
|
{
|
||||||
connectionClient->setProcessPath(backendProcessPath());
|
d->connectionClient.setProcessPath(backendProcessPath());
|
||||||
|
|
||||||
connectionClient->startProcessAndConnectToServerAsynchronously();
|
d->connectionClient.startProcessAndConnectToServerAsynchronously();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClangRefactoringPlugin::connectBackend()
|
void ClangRefactoringPlugin::connectBackend()
|
||||||
{
|
{
|
||||||
connect(connectionClient.get(),
|
connect(&d->connectionClient,
|
||||||
&ClangBackEnd::RefactoringConnectionClient::connectedToLocalSocket,
|
&ClangBackEnd::RefactoringConnectionClient::connectedToLocalSocket,
|
||||||
this,
|
this,
|
||||||
&ClangRefactoringPlugin::backendIsConnected);
|
&ClangRefactoringPlugin::backendIsConnected);
|
||||||
@@ -113,7 +118,7 @@ void ClangRefactoringPlugin::connectBackend()
|
|||||||
|
|
||||||
void ClangRefactoringPlugin::backendIsConnected()
|
void ClangRefactoringPlugin::backendIsConnected()
|
||||||
{
|
{
|
||||||
engine->setUsable(true);
|
d->engine.setUsable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ClangRefactoring
|
} // namespace ClangRefactoring
|
||||||
|
|||||||
@@ -39,12 +39,16 @@
|
|||||||
|
|
||||||
namespace ClangRefactoring {
|
namespace ClangRefactoring {
|
||||||
|
|
||||||
|
class ClangRefactoringPluginData;
|
||||||
|
|
||||||
class ClangRefactoringPlugin : public ExtensionSystem::IPlugin
|
class ClangRefactoringPlugin : public ExtensionSystem::IPlugin
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClangRefactoring.json")
|
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClangRefactoring.json")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
ClangRefactoringPlugin();
|
||||||
|
~ClangRefactoringPlugin();
|
||||||
bool initialize(const QStringList &arguments, QString *errorMessage);
|
bool initialize(const QStringList &arguments, QString *errorMessage);
|
||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
ShutdownFlag aboutToShutdown();
|
ShutdownFlag aboutToShutdown();
|
||||||
@@ -57,12 +61,7 @@ private:
|
|||||||
void backendIsConnected();
|
void backendIsConnected();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::unique_ptr<ClangBackEnd::RefactoringConnectionClient> connectionClient;
|
static std::unique_ptr<ClangRefactoringPluginData> d;
|
||||||
static std::unique_ptr<RefactoringClient> refactoringClient;
|
|
||||||
static std::unique_ptr<RefactoringEngine> engine;
|
|
||||||
static std::unique_ptr<QtCreatorClangQueryFindFilter> qtCreatorfindFilter;
|
|
||||||
static std::unique_ptr<QtCreatorSearch> qtCreatorSearch;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ClangRefactoring
|
} // namespace ClangRefactoring
|
||||||
|
|||||||
Reference in New Issue
Block a user