File indexing completed on 2024-04-28 15:31:19

0001 /*
0002     SPDX-FileCopyrightText: KDE Developers
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KATEVI_MACROS_H
0008 #define KATEVI_MACROS_H
0009 
0010 #include "completion.h"
0011 #include "keyevent.h"
0012 #include "ktexteditor_export.h"
0013 
0014 #include <QKeyEvent>
0015 
0016 class KConfigGroup;
0017 
0018 namespace KateVi
0019 {
0020 class KTEXTEDITOR_EXPORT Macros
0021 {
0022 public:
0023     explicit Macros();
0024     ~Macros();
0025 
0026     void writeConfig(KConfigGroup &config) const;
0027     void readConfig(const KConfigGroup &config);
0028 
0029     void store(const QChar &reg, const QList<KeyEvent> &macroKeyEventLog, const CompletionList &completions);
0030     void remove(const QChar &reg);
0031     void clear();
0032 
0033     QString get(const QChar &reg) const;
0034     CompletionList getCompletions(const QChar &reg) const;
0035 
0036 private:
0037     KTEXTEDITOR_NO_EXPORT
0038     int readMacroCompletions(const QChar &reg, const QStringList &encodedMacroCompletions, int macroCompletionIndex);
0039     KTEXTEDITOR_NO_EXPORT
0040     static QString encodeMacroCompletionForConfig(const Completion &completionForMacro);
0041     KTEXTEDITOR_NO_EXPORT
0042     static Completion decodeMacroCompletionFromConfig(const QString &encodedMacroCompletion);
0043 
0044 private:
0045     QHash<QChar, QString> m_macros;
0046     QHash<QChar, QList<Completion>> m_completions;
0047 };
0048 
0049 }
0050 
0051 #endif // KATEVI_MACROS_H