From bce9b9ffaacc6b355bd4278356a8cd03a3816627 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 17 Jul 2023 13:04:50 +0200 Subject: [PATCH] Nim: Move code style related code to nimcodestylesettingspage.cpp Not necessarily the final setup, but a step closer. The selected style doesn't seem to stick anymore, but that's already the case in 11.x. Change-Id: I6c094c1222147c31456cf843397ffaaae9252a30 Reviewed-by: Christian Stenger --- .../nim/settings/nimcodestylesettingspage.cpp | 99 ++++++++++++++++++- .../nim/settings/nimcodestylesettingspage.h | 1 + src/plugins/nim/settings/nimsettings.cpp | 68 ------------- src/plugins/nim/settings/nimsettings.h | 5 - 4 files changed, 96 insertions(+), 77 deletions(-) diff --git a/src/plugins/nim/settings/nimcodestylesettingspage.cpp b/src/plugins/nim/settings/nimcodestylesettingspage.cpp index 56919a6c156..32e9525014c 100644 --- a/src/plugins/nim/settings/nimcodestylesettingspage.cpp +++ b/src/plugins/nim/settings/nimcodestylesettingspage.cpp @@ -3,14 +3,19 @@ #include "nimcodestylesettingspage.h" +#include "nimcodestylepreferencesfactory.h" +#include "nimsettings.h" #include "../nimconstants.h" #include "../nimtr.h" -#include "nimsettings.h" -#include +#include + #include -#include +#include +#include +#include #include +#include #include @@ -18,12 +23,78 @@ using namespace TextEditor; namespace Nim { +static SimpleCodeStylePreferences *m_globalCodeStyle = nullptr; +static CodeStylePool *pool = nullptr; + +SimpleCodeStylePreferences *globalCodeStyle() +{ + QTC_CHECK(m_globalCodeStyle); + return m_globalCodeStyle; +} + +static void createGlobalCodeStyle() +{ + auto factory = new NimCodeStylePreferencesFactory(); + TextEditorSettings::registerCodeStyleFactory(factory); + + // code style pool + pool = new CodeStylePool(factory); + TextEditorSettings::registerCodeStylePool(Nim::Constants::C_NIMLANGUAGE_ID, pool); + + m_globalCodeStyle = new SimpleCodeStylePreferences(); + m_globalCodeStyle->setDelegatingPool(pool); + m_globalCodeStyle->setDisplayName(Tr::tr("Global", "Settings")); + m_globalCodeStyle->setId(Nim::Constants::C_NIMGLOBALCODESTYLE_ID); + pool->addCodeStyle(m_globalCodeStyle); + TextEditorSettings::registerCodeStyle(Nim::Constants::C_NIMLANGUAGE_ID, m_globalCodeStyle); + + auto nimCodeStyle = new SimpleCodeStylePreferences(); + nimCodeStyle->setId("nim"); + nimCodeStyle->setDisplayName(Tr::tr("Nim")); + nimCodeStyle->setReadOnly(true); + + TabSettings nimTabSettings; + nimTabSettings.m_tabPolicy = TabSettings::SpacesOnlyTabPolicy; + nimTabSettings.m_tabSize = 2; + nimTabSettings.m_indentSize = 2; + nimTabSettings.m_continuationAlignBehavior = TabSettings::ContinuationAlignWithIndent; + nimCodeStyle->setTabSettings(nimTabSettings); + + pool->addCodeStyle(nimCodeStyle); + + m_globalCodeStyle->setCurrentDelegate(nimCodeStyle); + + pool->loadCustomCodeStyles(); + + // load global settings (after built-in settings are added to the pool) + QSettings *s = Core::ICore::settings(); + m_globalCodeStyle->fromSettings(QLatin1String(Nim::Constants::C_NIMLANGUAGE_ID), s); + + TextEditorSettings::registerMimeTypeForLanguageId(Nim::Constants::C_NIM_MIMETYPE, + Nim::Constants::C_NIMLANGUAGE_ID); + TextEditorSettings::registerMimeTypeForLanguageId(Nim::Constants::C_NIM_SCRIPT_MIMETYPE, + Nim::Constants::C_NIMLANGUAGE_ID); +} + +static void destroyGlobalCodeStyle() +{ + TextEditorSettings::unregisterCodeStyle(Nim::Constants::C_NIMLANGUAGE_ID); + TextEditorSettings::unregisterCodeStylePool(Nim::Constants::C_NIMLANGUAGE_ID); + TextEditorSettings::unregisterCodeStyleFactory(Nim::Constants::C_NIMLANGUAGE_ID); + + delete m_globalCodeStyle; + m_globalCodeStyle = nullptr; + + delete pool; + pool = nullptr; +} + class NimCodeStyleSettingsWidget : public Core::IOptionsPageWidget { public: NimCodeStyleSettingsWidget() { - auto originalTabPreferences = NimSettings::globalCodeStyle(); + auto originalTabPreferences = globalCodeStyle(); m_nimCodeStylePreferences = new SimpleCodeStylePreferences(this); m_nimCodeStylePreferences->setDelegatingPool(originalTabPreferences->delegatingPool()); m_nimCodeStylePreferences->setTabSettings(originalTabPreferences->tabSettings()); @@ -36,12 +107,25 @@ public: auto layout = new QVBoxLayout(this); layout->addWidget(editor); + + QTC_ASSERT(m_globalCodeStyle, return); + QSettings *s = Core::ICore::settings(); + m_globalCodeStyle->toSettings(QLatin1String(Nim::Constants::C_NIMLANGUAGE_ID), s); + } + + void apply() final + { + QTC_ASSERT(m_globalCodeStyle, return); + QSettings *s = Core::ICore::settings(); + m_globalCodeStyle->toSettings(QLatin1String(Nim::Constants::C_NIMLANGUAGE_ID), s); } private: TextEditor::SimpleCodeStylePreferences *m_nimCodeStylePreferences; }; +// NimCodeStyleSettingsPage + NimCodeStyleSettingsPage::NimCodeStyleSettingsPage() { setId(Nim::Constants::C_NIMCODESTYLESETTINGSPAGE_ID); @@ -50,6 +134,13 @@ NimCodeStyleSettingsPage::NimCodeStyleSettingsPage() setDisplayCategory(Tr::tr("Nim")); setCategoryIconPath(":/nim/images/settingscategory_nim.png"); setWidgetCreator([] { return new NimCodeStyleSettingsWidget; }); + + createGlobalCodeStyle(); +} + +NimCodeStyleSettingsPage::~NimCodeStyleSettingsPage() +{ + destroyGlobalCodeStyle(); } } // Nim diff --git a/src/plugins/nim/settings/nimcodestylesettingspage.h b/src/plugins/nim/settings/nimcodestylesettingspage.h index 173b1eeb7db..f0acc402e98 100644 --- a/src/plugins/nim/settings/nimcodestylesettingspage.h +++ b/src/plugins/nim/settings/nimcodestylesettingspage.h @@ -11,6 +11,7 @@ class NimCodeStyleSettingsPage final : public Core::IOptionsPage { public: NimCodeStyleSettingsPage(); + ~NimCodeStyleSettingsPage(); }; } // Nim diff --git a/src/plugins/nim/settings/nimsettings.cpp b/src/plugins/nim/settings/nimsettings.cpp index 1c404ac8503..9df9acd73bf 100644 --- a/src/plugins/nim/settings/nimsettings.cpp +++ b/src/plugins/nim/settings/nimsettings.cpp @@ -5,26 +5,16 @@ #include "../nimconstants.h" #include "../nimtr.h" -#include "nimcodestylepreferencesfactory.h" #include #include -#include -#include -#include -#include -#include - #include -using namespace TextEditor; using namespace Utils; namespace Nim { -static SimpleCodeStylePreferences *m_globalCodeStyle = nullptr; - NimSettings &settings() { static NimSettings theSettings; @@ -47,48 +37,6 @@ NimSettings::NimSettings() }; }); - // code style factory - auto factory = new NimCodeStylePreferencesFactory(); - TextEditorSettings::registerCodeStyleFactory(factory); - - // code style pool - auto pool = new CodeStylePool(factory, this); - TextEditorSettings::registerCodeStylePool(Nim::Constants::C_NIMLANGUAGE_ID, pool); - - m_globalCodeStyle = new SimpleCodeStylePreferences(); - m_globalCodeStyle->setDelegatingPool(pool); - m_globalCodeStyle->setDisplayName(Tr::tr("Global", "Settings")); - m_globalCodeStyle->setId(Nim::Constants::C_NIMGLOBALCODESTYLE_ID); - pool->addCodeStyle(m_globalCodeStyle); - TextEditorSettings::registerCodeStyle(Nim::Constants::C_NIMLANGUAGE_ID, m_globalCodeStyle); - - auto nimCodeStyle = new SimpleCodeStylePreferences(); - nimCodeStyle->setId("nim"); - nimCodeStyle->setDisplayName(Tr::tr("Nim")); - nimCodeStyle->setReadOnly(true); - - TabSettings nimTabSettings; - nimTabSettings.m_tabPolicy = TabSettings::SpacesOnlyTabPolicy; - nimTabSettings.m_tabSize = 2; - nimTabSettings.m_indentSize = 2; - nimTabSettings.m_continuationAlignBehavior = TabSettings::ContinuationAlignWithIndent; - nimCodeStyle->setTabSettings(nimTabSettings); - - pool->addCodeStyle(nimCodeStyle); - - m_globalCodeStyle->setCurrentDelegate(nimCodeStyle); - - pool->loadCustomCodeStyles(); - - // load global settings (after built-in settings are added to the pool) - QSettings *s = Core::ICore::settings(); - m_globalCodeStyle->fromSettings(QLatin1String(Nim::Constants::C_NIMLANGUAGE_ID), s); - - TextEditorSettings::registerMimeTypeForLanguageId(Nim::Constants::C_NIM_MIMETYPE, - Nim::Constants::C_NIMLANGUAGE_ID); - TextEditorSettings::registerMimeTypeForLanguageId(Nim::Constants::C_NIM_SCRIPT_MIMETYPE, - Nim::Constants::C_NIMLANGUAGE_ID); - nimSuggestPath.setSettingsKey("Command"); nimSuggestPath.setExpectedKind(PathChooser::ExistingCommand); nimSuggestPath.setLabelText(Tr::tr("Path:")); @@ -96,22 +44,6 @@ NimSettings::NimSettings() readSettings(); } -NimSettings::~NimSettings() -{ - TextEditorSettings::unregisterCodeStyle(Nim::Constants::C_NIMLANGUAGE_ID); - TextEditorSettings::unregisterCodeStylePool(Nim::Constants::C_NIMLANGUAGE_ID); - TextEditorSettings::unregisterCodeStyleFactory(Nim::Constants::C_NIMLANGUAGE_ID); - - delete m_globalCodeStyle; - m_globalCodeStyle = nullptr; -} - -SimpleCodeStylePreferences *NimSettings::globalCodeStyle() -{ - QTC_ASSERT(m_globalCodeStyle, settings()); // Ensure creation - return m_globalCodeStyle; -} - // NimSettingsPage class NimSettingsPage final : public Core::IOptionsPage diff --git a/src/plugins/nim/settings/nimsettings.h b/src/plugins/nim/settings/nimsettings.h index 5f0e23b8976..4a105bf628c 100644 --- a/src/plugins/nim/settings/nimsettings.h +++ b/src/plugins/nim/settings/nimsettings.h @@ -5,19 +5,14 @@ #include -namespace TextEditor { class SimpleCodeStylePreferences; } - namespace Nim { class NimSettings final : public Utils::AspectContainer { public: NimSettings(); - ~NimSettings(); Utils::FilePathAspect nimSuggestPath{this}; - - static TextEditor::SimpleCodeStylePreferences *globalCodeStyle(); }; NimSettings &settings();