1 /* 2 SPDX-FileCopyrightText: KDE Developers 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KATE_VIMODE_MARKS_H 8 #define KATE_VIMODE_MARKS_H 9 10 #include "KTextEditor/MarkInterface" 11 12 #include <KConfigGroup> 13 14 #include <QMap> 15 16 namespace KTextEditor 17 { 18 class DocumentPrivate; 19 class Cursor; 20 class MovingCursor; 21 } 22 23 namespace KateVi 24 { 25 class InputModeManager; 26 27 class Marks : public QObject 28 { 29 Q_OBJECT 30 31 public: 32 explicit Marks(InputModeManager *imm); 33 34 /** JBOS == Just a Bunch Of Shortcuts **/ 35 void setStartEditYanked(const KTextEditor::Cursor pos); 36 void setFinishEditYanked(const KTextEditor::Cursor pos); 37 void setLastChange(const KTextEditor::Cursor pos); 38 void setInsertStopped(const KTextEditor::Cursor pos); 39 void setSelectionStart(const KTextEditor::Cursor pos); 40 void setSelectionFinish(const KTextEditor::Cursor pos); 41 void setUserMark(const QChar &mark, const KTextEditor::Cursor pos); 42 43 KTextEditor::Cursor getStartEditYanked() const; 44 KTextEditor::Cursor getFinishEditYanked() const; 45 KTextEditor::Cursor getLastChange() const; 46 KTextEditor::Cursor getInsertStopped() const; 47 KTextEditor::Cursor getSelectionStart() const; 48 KTextEditor::Cursor getSelectionFinish() const; 49 KTextEditor::Cursor getMarkPosition(const QChar &mark) const; 50 51 void writeSessionConfig(KConfigGroup &config) const; 52 void readSessionConfig(const KConfigGroup &config); 53 54 QString getMarksOnTheLine(int line) const; 55 56 private: 57 void syncViMarksAndBookmarks(); 58 bool isShowable(const QChar &mark); 59 60 void setMark(const QChar &mark, const KTextEditor::Cursor pos); 61 62 private Q_SLOTS: 63 void markChanged(KTextEditor::Document *doc, KTextEditor::Mark mark, KTextEditor::MarkInterface::MarkChangeAction action); 64 65 private: 66 InputModeManager *m_inputModeManager; 67 KTextEditor::DocumentPrivate *m_doc; 68 69 QMap<QChar, KTextEditor::MovingCursor *> m_marks; 70 bool m_settingMark; 71 }; 72 } 73 74 #endif // KATE_VIMODE_MARKS_H 75