diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp index cbb49cbd319..99a614290ab 100644 --- a/src/plugins/clangformat/clangformatplugin.cpp +++ b/src/plugins/clangformat/clangformatplugin.cpp @@ -4,92 +4,70 @@ #include "clangformatplugin.h" #include "clangformatconfigwidget.h" -#include "clangformatglobalconfigwidget.h" #include "clangformatconstants.h" +#include "clangformatglobalconfigwidget.h" #include "clangformatindenter.h" -#include "clangformatsettings.h" #include "clangformatutils.h" #include "tests/clangformat-test.h" -#include - #include #include #include -#include #include #include -#include -#include #include -#include - #include -#include #include -#include -#include #include -#include -#include #include -#include #include -#include - -#include -#include - #include -#include -#include -#include -#include using namespace Core; +using namespace CppEditor; using namespace ProjectExplorer; +using namespace TextEditor; using namespace Utils; namespace ClangFormat { -class ClangFormatStyleFactory : public CppEditor::CppCodeStylePreferencesFactory +class ClangFormatStyleFactory : public CppCodeStylePreferencesFactory { Q_DECLARE_TR_FUNCTIONS(ClangFormatStyleFactory) public: - TextEditor::Indenter *createIndenter(QTextDocument *doc) const override + Indenter *createIndenter(QTextDocument *doc) const override { return new ClangFormatForwardingIndenter(doc); } - std::pair additionalTab( - TextEditor::ICodeStylePreferences *codeStyle, - ProjectExplorer::Project *project, - QWidget *parent) const override + std::pair additionalTab( + ICodeStylePreferences *codeStyle, Project *project, QWidget *parent) const override { return {new ClangFormatConfigWidget(codeStyle, project, parent), tr("ClangFormat")}; } - TextEditor::CodeStyleEditorWidget *createAdditionalGlobalSettings( - ProjectExplorer::Project *project, QWidget *parent) override + CodeStyleEditorWidget *createAdditionalGlobalSettings( + Project *project, QWidget *parent) override { return new ClangFormatGlobalConfigWidget(project, parent); } }; -static void replaceCppCodeStyle() +ClangFormatPlugin::~ClangFormatPlugin() { - using namespace TextEditor; TextEditorSettings::unregisterCodeStyleFactory(CppEditor::Constants::CPP_SETTINGS_ID); - TextEditorSettings::registerCodeStyleFactory(new ClangFormatStyleFactory); + delete m_factory; } void ClangFormatPlugin::initialize() { - replaceCppCodeStyle(); + TextEditorSettings::unregisterCodeStyleFactory(CppEditor::Constants::CPP_SETTINGS_ID); + m_factory = new ClangFormatStyleFactory; + TextEditorSettings::registerCodeStyleFactory(m_factory); ActionContainer *contextMenu = ActionManager::actionContainer(CppEditor::Constants::M_CONTEXT); if (contextMenu) { diff --git a/src/plugins/clangformat/clangformatplugin.h b/src/plugins/clangformat/clangformatplugin.h index 7b3560c4eec..3ab3eae984f 100644 --- a/src/plugins/clangformat/clangformatplugin.h +++ b/src/plugins/clangformat/clangformatplugin.h @@ -5,6 +5,8 @@ #include +namespace TextEditor { class ICodeStylePreferencesFactory; } + namespace ClangFormat { class ClangFormatPlugin : public ExtensionSystem::IPlugin @@ -12,8 +14,11 @@ class ClangFormatPlugin : public ExtensionSystem::IPlugin Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "ClangFormat.json") + ~ClangFormatPlugin() override; void initialize() final; QVector createTestObjects() const override; + + TextEditor::ICodeStylePreferencesFactory *m_factory = nullptr; }; } // namespace ClangTools