File indexing completed on 2024-03-24 04:00:57
0001 /* 0002 SPDX-FileCopyrightText: KDE Developers 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KATE_VIMODE_MARKS_H 0008 #define KATE_VIMODE_MARKS_H 0009 0010 #include <KConfigGroup> 0011 #include <KTextEditor/Document> 0012 0013 #include <QMap> 0014 0015 namespace KTextEditor 0016 { 0017 class DocumentPrivate; 0018 class Cursor; 0019 class MovingCursor; 0020 } 0021 0022 namespace KateVi 0023 { 0024 class InputModeManager; 0025 0026 class Marks : public QObject 0027 { 0028 public: 0029 explicit Marks(InputModeManager *imm); 0030 0031 /** JBOS == Just a Bunch Of Shortcuts **/ 0032 void setStartEditYanked(const KTextEditor::Cursor pos); 0033 void setFinishEditYanked(const KTextEditor::Cursor pos); 0034 void setLastChange(const KTextEditor::Cursor pos); 0035 void setInsertStopped(const KTextEditor::Cursor pos); 0036 void setSelectionStart(const KTextEditor::Cursor pos); 0037 void setSelectionFinish(const KTextEditor::Cursor pos); 0038 void setUserMark(const QChar &mark, const KTextEditor::Cursor pos); 0039 0040 KTextEditor::Cursor getStartEditYanked() const; 0041 KTextEditor::Cursor getFinishEditYanked() const; 0042 KTextEditor::Cursor getLastChange() const; 0043 KTextEditor::Cursor getInsertStopped() const; 0044 KTextEditor::Cursor getSelectionStart() const; 0045 KTextEditor::Cursor getSelectionFinish() const; 0046 KTextEditor::Cursor getMarkPosition(const QChar &mark) const; 0047 0048 void writeSessionConfig(KConfigGroup &config) const; 0049 void readSessionConfig(const KConfigGroup &config); 0050 0051 QString getMarksOnTheLine(int line) const; 0052 0053 private: 0054 void syncViMarksAndBookmarks(); 0055 static bool isShowable(const QChar &mark); 0056 0057 void setMark(const QChar &mark, const KTextEditor::Cursor pos); 0058 0059 private: 0060 void markChanged(KTextEditor::Document *doc, KTextEditor::Mark mark, KTextEditor::Document::MarkChangeAction action); 0061 0062 private: 0063 InputModeManager *m_inputModeManager; 0064 KTextEditor::DocumentPrivate *m_doc; 0065 0066 QMap<QChar, KTextEditor::MovingCursor *> m_marks; 0067 bool m_settingMark; 0068 }; 0069 } 0070 0071 #endif // KATE_VIMODE_MARKS_H