diff options
author | hjk <hjk@qt.io> | 2021-02-26 17:55:55 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-03-03 07:12:21 +0000 |
commit | 50f93710b71ea6c27d46d867b37add378dde72e9 (patch) | |
tree | fa0c300099ce0c4abe0f8e74fac4b14b8de1615b /src/plugins/fakevim/fakevimactions.h | |
parent | 3e082109980df5b6f10d7a91fee3e819bf2b976b (diff) |
FakeVim: Aspectify settings
Change-Id: Ic73edce82e192779ed3efe86a5cb747a52d94d36
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/fakevim/fakevimactions.h')
-rw-r--r-- | src/plugins/fakevim/fakevimactions.h | 164 |
1 files changed, 91 insertions, 73 deletions
diff --git a/src/plugins/fakevim/fakevimactions.h b/src/plugins/fakevim/fakevimactions.h index 419232aeb8..69131c7669 100644 --- a/src/plugins/fakevim/fakevimactions.h +++ b/src/plugins/fakevim/fakevimactions.h @@ -26,23 +26,25 @@ #pragma once #ifndef FAKEVIM_STANDALONE -# include <utils/savedaction.h> +# include <utils/aspects.h> #endif #include <QCoreApplication> #include <QHash> #include <QObject> #include <QString> -#include <QSettings> #include <QVariant> namespace FakeVim { namespace Internal { -class DummyAction +#ifdef FAKEVIM_STANDALONE +class FvBaseAspect { public: - DummyAction(void *parent); + FvBaseAspect(); + virtual ~FvBaseAspect() {} + void setValue(const QVariant &value); QVariant value() const; void setDefaultValue(const QVariant &value); @@ -50,105 +52,121 @@ public: void setSettingsKey(const QString &group, const QString &key); QString settingsKey() const; void setCheckable(bool) {} + void setDisplayName(const QString &) {} + void setToolTip(const QString &) {} - void readSettings(QSettings *) {} - void writeSettings(QSettings *) {} - +private: QVariant m_value; QVariant m_defaultValue; QString m_settingsGroup; QString m_settingsKey; }; -#ifdef FAKEVIM_STANDALONE -using FakeVimAction = DummyAction; +class FvBoolAspect : public FvBaseAspect +{ +public: + bool value() const { return FvBaseAspect::value().toBool(); } +}; + +class FvIntegerAspect : public FvBaseAspect +{ +public: + qint64 value() const { return FvBaseAspect::value().toLongLong(); } +}; + +class FvStringAspect : public FvBaseAspect +{ +public: + QString value() const { return FvBaseAspect::value().toString(); } +}; + +class FvAspectContainer : public FvBaseAspect +{ +public: +}; + #else -using FakeVimAction = Utils::SavedAction; + +using FvAspectContainer = Utils::AspectContainer; +using FvBaseAspect = Utils::BaseAspect; +using FvBoolAspect = Utils::BoolAspect; +using FvIntegerAspect = Utils::IntegerAspect; +using FvStringAspect = Utils::StringAspect; + #endif -enum FakeVimSettingsCode +class FakeVimSettings final : public FvAspectContainer { - ConfigUseFakeVim, - ConfigReadVimRc, - ConfigVimRcPath, - - ConfigStartOfLine, - ConfigHlSearch, - ConfigTabStop, - ConfigSmartTab, - ConfigShiftWidth, - ConfigExpandTab, - ConfigAutoIndent, - ConfigSmartIndent, - - ConfigIncSearch, - ConfigUseCoreSearch, - ConfigSmartCase, - ConfigIgnoreCase, - ConfigWrapScan, + Q_DECLARE_TR_FUNCTIONS(FakeVim) + +public: + FakeVimSettings(); + ~FakeVimSettings(); + + FvBaseAspect *item(const QString &name); + QString trySetValue(const QString &name, const QString &value); + + FvBoolAspect useFakeVim; + FvBoolAspect readVimRc; + FvStringAspect vimRcPath; + + FvBoolAspect startOfLine; + FvIntegerAspect tabStop; + FvBoolAspect hlSearch; + FvBoolAspect smartTab; + FvIntegerAspect shiftWidth; + FvBoolAspect expandTab; + FvBoolAspect autoIndent; + FvBoolAspect smartIndent; + + FvBoolAspect incSearch; + FvBoolAspect useCoreSearch; + FvBoolAspect smartCase; + FvBoolAspect ignoreCase; + FvBoolAspect wrapScan; // command ~ behaves as g~ - ConfigTildeOp, + FvBoolAspect tildeOp; // indent allow backspacing over autoindent // eol allow backspacing over line breaks (join lines) // start allow backspacing over the start of insert; CTRL-W and CTRL-U // stop once at the start of insert. - ConfigBackspace, + FvStringAspect backspace; // @,48-57,_,192-255 - ConfigIsKeyword, + FvStringAspect isKeyword; // other actions - ConfigShowMarks, - ConfigPassControlKey, - ConfigPassKeys, - ConfigClipboard, - ConfigShowCmd, - ConfigScrollOff, - ConfigRelativeNumber, - ConfigFormatOptions, + FvBoolAspect showMarks; + FvBoolAspect passControlKey; + FvBoolAspect passKeys; + FvStringAspect clipboard; + FvBoolAspect showCmd; + FvIntegerAspect scrollOff; + FvBoolAspect relativeNumber; + FvStringAspect formatOptions; // Plugin emulation - ConfigEmulateVimCommentary, - ConfigEmulateReplaceWithRegister, - ConfigEmulateExchange, - ConfigEmulateArgTextObj, - ConfigEmulateSurround, - - ConfigBlinkingCursor -}; - -class FakeVimSettings -{ - Q_DECLARE_TR_FUNCTIONS(FakeVim) - -public: - FakeVimSettings(); - ~FakeVimSettings(); - void insertItem(int code, FakeVimAction *item, - const QString &longname = QString(), - const QString &shortname = QString()); - - FakeVimAction *item(int code); - FakeVimAction *item(const QString &name); - QString trySetValue(const QString &name, const QString &value); + FvBoolAspect emulateVimCommentary; + FvBoolAspect emulateReplaceWithRegister; + FvBoolAspect emulateExchange; + FvBoolAspect emulateArgTextObj; + FvBoolAspect emulateSurround; - void readSettings(QSettings *settings); - void writeSettings(QSettings *settings); + FvBoolAspect blinkingCursor; private: - void createAction(int code, const QVariant &value, - const QString &settingsKey = QString(), - const QString &shortKey = QString()); + void setup(FvBaseAspect *aspect, const QVariant &value, + const QString &settingsKey, + const QString &shortName, + const QString &label); - QHash<int, FakeVimAction *> m_items; - QHash<QString, int> m_nameToCode; - QHash<int, QString> m_codeToName; + QHash<QString, FvBaseAspect *> m_nameToAspect; + QHash<FvBaseAspect *, QString> m_aspectToName; }; -FakeVimSettings *theFakeVimSettings(); -FakeVimAction *theFakeVimSetting(int code); +FakeVimSettings *fakeVimSettings(); } // namespace Internal } // namespace FakeVim |