diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp index 71eb944512f..e658fc49107 100644 --- a/src/plugins/nim/nimplugin.cpp +++ b/src/plugins/nim/nimplugin.cpp @@ -41,26 +41,32 @@ #include #include #include -#include #include -#include - using namespace Utils; using namespace ProjectExplorer; namespace Nim { -static NimPlugin *m_instance = 0; - -NimPlugin::NimPlugin() +class NimPluginRunData { - m_instance = this; -} +public: + NimSettings settings; + NimEditorFactory editorFactory; + NimBuildConfigurationFactory buildConfigFactory; + NimRunConfigurationFactory runConfigFactory; + NimCompilerBuildStepFactory buildStepFactory; + NimCompilerCleanStepFactory cleanStepFactory; + NimCodeStyleSettingsPage codeStyleSettingsPage; + NimCodeStylePreferencesFactory codeStylePreferencesPage; + NimToolChainFactory toolChainFactory; +}; + +static NimPluginRunData *m_runData = nullptr; NimPlugin::~NimPlugin() { - m_instance = 0; + delete m_runData; } bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage) @@ -68,25 +74,18 @@ bool NimPlugin::initialize(const QStringList &arguments, QString *errorMessage) Q_UNUSED(arguments) Q_UNUSED(errorMessage) - ProjectExplorer::ToolChainManager::registerLanguage(Constants::C_NIMLANGUAGE_ID, Constants::C_NIMLANGUAGE_NAME); + m_runData = new NimPluginRunData; + + ToolChainManager::registerLanguage(Constants::C_NIMLANGUAGE_ID, Constants::C_NIMLANGUAGE_NAME); RunControl::registerWorker (ProjectExplorer::Constants::NORMAL_RUN_MODE); - addAutoReleasedObject(new NimSettings); - addAutoReleasedObject(new NimEditorFactory); - addAutoReleasedObject(new NimBuildConfigurationFactory); - addAutoReleasedObject(new NimRunConfigurationFactory); - addAutoReleasedObject(new NimCompilerBuildStepFactory); - addAutoReleasedObject(new NimCompilerCleanStepFactory); - addAutoReleasedObject(new NimCodeStyleSettingsPage); - addAutoReleasedObject(new NimCodeStylePreferencesFactory); - addAutoReleasedObject(new NimToolChainFactory); TextEditor::SnippetProvider::registerGroup(Constants::C_NIMSNIPPETSGROUP_ID, tr("Nim", "SnippetProvider"), &NimEditorFactory::decorateEditor); - ProjectExplorer::ProjectManager::registerProjectType(Constants::C_NIM_PROJECT_MIMETYPE); + ProjectManager::registerProjectType(Constants::C_NIM_PROJECT_MIMETYPE); return true; } diff --git a/src/plugins/nim/nimplugin.h b/src/plugins/nim/nimplugin.h index bb8782f5e5f..3e88ba86413 100644 --- a/src/plugins/nim/nimplugin.h +++ b/src/plugins/nim/nimplugin.h @@ -35,9 +35,8 @@ class NimPlugin : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "Nim.json") public: - NimPlugin(); - - ~NimPlugin(); + NimPlugin() = default; + ~NimPlugin() final; bool initialize(const QStringList &arguments, QString *errorMessage) final; void extensionsInitialized() final;