forked from qt-creator/qt-creator
Clang: Add clang query
Clang query is mechanism to use AST matcher to search for code. Think about regular expression but in the context of AST. So you get a semantic search tool for C++. Change-Id: I72e882c5b53a0c52f352a3664847c4c3e4f6fc2e Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
#include <cpptools/cppmodelmanager.h>
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <coreplugin/find/searchresultwindow.h>
|
||||
#include <extensionsystem/pluginmanager.h>
|
||||
|
||||
#include <utils/hostosinfo.h>
|
||||
|
||||
@@ -44,17 +46,24 @@ QString backendProcessPath()
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
std::unique_ptr<RefactoringClient> ClangRefactoringPlugin::client;
|
||||
std::unique_ptr<RefactoringClient> ClangRefactoringPlugin::refactoringClient;
|
||||
std::unique_ptr<ClangBackEnd::RefactoringConnectionClient> ClangRefactoringPlugin::connectionClient;
|
||||
std::unique_ptr<RefactoringEngine> ClangRefactoringPlugin::engine;
|
||||
std::unique_ptr<QtCreatorSearch> ClangRefactoringPlugin::qtCreatorSearch;
|
||||
std::unique_ptr<QtCreatorClangQueryFindFilter> ClangRefactoringPlugin::qtCreatorfindFilter;
|
||||
|
||||
bool ClangRefactoringPlugin::initialize(const QStringList & /*arguments*/, QString * /*errorMessage*/)
|
||||
{
|
||||
client.reset(new RefactoringClient);
|
||||
connectionClient.reset(new ClangBackEnd::RefactoringConnectionClient(client.get()));
|
||||
engine.reset(new RefactoringEngine(connectionClient->serverProxy(), *client));
|
||||
refactoringClient.reset(new RefactoringClient);
|
||||
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));
|
||||
|
||||
client->setRefactoringEngine(engine.get());
|
||||
refactoringClient->setRefactoringEngine(engine.get());
|
||||
ExtensionSystem::PluginManager::addObject(qtCreatorfindFilter.get());
|
||||
|
||||
connectBackend();
|
||||
startBackend();
|
||||
@@ -69,13 +78,15 @@ void ClangRefactoringPlugin::extensionsInitialized()
|
||||
|
||||
ExtensionSystem::IPlugin::ShutdownFlag ClangRefactoringPlugin::aboutToShutdown()
|
||||
{
|
||||
client->setRefactoringEngine(nullptr);
|
||||
ExtensionSystem::PluginManager::removeObject(qtCreatorfindFilter.get());
|
||||
refactoringClient->setRefactoringEngine(nullptr);
|
||||
|
||||
connectionClient->finishProcess();
|
||||
|
||||
qtCreatorfindFilter.reset();
|
||||
engine.reset();
|
||||
connectionClient.reset();
|
||||
client.reset();
|
||||
refactoringClient.reset();
|
||||
|
||||
return SynchronousShutdown;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user