aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-07-07 12:13:07 +0200
committerhjk <hjk@qt.io>2023-07-10 10:31:14 +0000
commit2c512625c5a002bb1a76d83ebc9d32e7f7142e7b (patch)
tree022e82d7b6405d8fa0e777716f73669412b30caa /src/plugins/fakevim
parent6a068a650908bfbe28708ae88630911b4ce22a69 (diff)
FakeVim: Delay settings creation until actual use
Task-number: QTCREATORBUG-29167 Change-Id: I3a6f1330922f3840cb7e99d8adb60a728d36eb4b Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimactions.cpp41
-rw-r--r--src/plugins/fakevim/fakevimactions.h10
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp21
3 files changed, 38 insertions, 34 deletions
diff --git a/src/plugins/fakevim/fakevimactions.cpp b/src/plugins/fakevim/fakevimactions.cpp
index a6dc84b9b2..c80d17c972 100644
--- a/src/plugins/fakevim/fakevimactions.cpp
+++ b/src/plugins/fakevim/fakevimactions.cpp
@@ -45,29 +45,15 @@ void setAutoApply(bool ) {}
#endif
-static FakeVimSettings *s_settings;
-
FakeVimSettings &settings()
{
- return *s_settings;
+ static FakeVimSettings theSettings;
+ return theSettings;
}
FakeVimSettings::FakeVimSettings()
{
- s_settings = this;
-
-#ifndef FAKEVIM_STANDALONE
- const char SETTINGS_CATEGORY[] = "D.FakeVim";
- const char SETTINGS_ID[] = "A.FakeVim.General";
-
- setId(SETTINGS_ID);
- setDisplayName(Tr::tr("General"));
- setCategory(SETTINGS_CATEGORY);
- setDisplayCategory(Tr::tr("FakeVim"));
- setCategoryIconPath(":/fakevim/images/settingscategory_fakevim.png");
-
setup(&useFakeVim, false, "UseFakeVim", {}, Tr::tr("Use FakeVim"));
-#endif
// Specific FakeVim settings
setup(&readVimRc, false, "ReadVimRc", {}, Tr::tr("Read .vimrc from location:"));
@@ -303,4 +289,27 @@ void FakeVimSettings::setup(FvBaseAspect *aspect,
m_nameToAspect[shortName] = aspect;
}
+#ifndef FAKEVIM_STANDALONE
+
+class FakeVimSettingsPage final : public Core::IOptionsPage
+{
+public:
+ FakeVimSettingsPage()
+ {
+ const char SETTINGS_CATEGORY[] = "D.FakeVim";
+ const char SETTINGS_ID[] = "A.FakeVim.General";
+
+ setId(SETTINGS_ID);
+ setDisplayName(Tr::tr("General"));
+ setCategory(SETTINGS_CATEGORY);
+ setDisplayCategory(Tr::tr("FakeVim"));
+ setCategoryIconPath(":/fakevim/images/settingscategory_fakevim.png");
+ setSettingsProvider([] { return &settings(); });
+ }
+};
+
+const FakeVimSettingsPage settingsPage;
+
+#endif
+
} // FakeVim::Internal
diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h
index 94ba02a7f3..1d72080d9b 100644
--- a/src/plugins/fakevim/fakevimactions.h
+++ b/src/plugins/fakevim/fakevimactions.h
@@ -28,10 +28,10 @@ public:
FvBaseAspect() = default;
virtual ~FvBaseAspect() = default;
- virtual void setVariantValue(const QVariant &value) = 0;
- virtual void setDefaultVariantValue(const QVariant &value) = 0;
- virtual QVariant variantValue() const = 0;
- virtual QVariant defaultVariantValue() const = 0;
+ virtual void setVariantValue(const QVariant &) {}
+ virtual void setDefaultVariantValue(const QVariant &) {}
+ virtual QVariant variantValue() const { return {}; }
+ virtual QVariant defaultVariantValue() const { return {}; }
void setSettingsKey(const QString &group, const QString &key);
QString settingsKey() const;
@@ -84,7 +84,7 @@ public:
#else
-using FvAspectContainer = Core::PagedSettings;
+using FvAspectContainer = Utils::AspectContainer;
using FvBaseAspect = Utils::BaseAspect;
using FvBoolAspect = Utils::BoolAspect;
using FvIntegerAspect = Utils::IntegerAspect;
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index fac40d951a..1a98882197 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -683,6 +683,8 @@ public:
}
};
+const FakeVimExCommandsPage exCommandPage;
+
///////////////////////////////////////////////////////////////////////
//
// FakeVimUserCommandsPage
@@ -752,11 +754,10 @@ public:
class FakeVimUserCommandsPageWidget : public IOptionsPageWidget
{
public:
- FakeVimUserCommandsPageWidget(FakeVimUserCommandsModel *model)
- : m_model(model)
+ FakeVimUserCommandsPageWidget()
{
auto widget = new QTreeView;
- widget->setModel(m_model);
+ widget->setModel(&m_model);
widget->resizeColumnToContents(0);
auto delegate = new FakeVimUserCommandsDelegate(widget);
@@ -771,7 +772,7 @@ private:
void apply() final
{
// now save the mappings if necessary
- const UserCommandMap &current = m_model->commandMap();
+ const UserCommandMap &current = m_model.commandMap();
UserCommandMap &userMap = dd->m_userCommandMap;
if (current != userMap) {
@@ -800,7 +801,7 @@ private:
}
}
- FakeVimUserCommandsModel *m_model;
+ FakeVimUserCommandsModel m_model;
};
class FakeVimUserCommandsPage : public IOptionsPage
@@ -811,13 +812,11 @@ public:
setId(SETTINGS_USER_CMDS_ID);
setDisplayName(Tr::tr("User Command Mapping"));
setCategory(SETTINGS_CATEGORY);
- setWidgetCreator([this] { return new FakeVimUserCommandsPageWidget(&m_model); });
+ setWidgetCreator([this] { return new FakeVimUserCommandsPageWidget; });
}
-
-private:
- FakeVimUserCommandsModel m_model;
};
+const FakeVimUserCommandsPage userCommandsPage;
///////////////////////////////////////////////////////////////////////
//
@@ -978,10 +977,6 @@ IAssistProcessor *FakeVimCompletionAssistProvider::createProcessor(const AssistI
class FakeVimPluginRunData
{
public:
- FakeVimSettings settings;
- FakeVimExCommandsPage exCommandsPage;
- FakeVimUserCommandsPage userCommandsPage;
-
FakeVimCompletionAssistProvider wordProvider;
};