File indexing completed on 2024-04-28 15:31:20
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 "KTextEditor/MarkInterface" 0011 0012 #include <KConfigGroup> 0013 0014 #include <QMap> 0015 0016 namespace KTextEditor 0017 { 0018 class DocumentPrivate; 0019 class Cursor; 0020 class MovingCursor; 0021 } 0022 0023 namespace KateVi 0024 { 0025 class InputModeManager; 0026 0027 class Marks : public QObject 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 explicit Marks(InputModeManager *imm); 0033 0034 /** JBOS == Just a Bunch Of Shortcuts **/ 0035 void setStartEditYanked(const KTextEditor::Cursor pos); 0036 void setFinishEditYanked(const KTextEditor::Cursor pos); 0037 void setLastChange(const KTextEditor::Cursor pos); 0038 void setInsertStopped(const KTextEditor::Cursor pos); 0039 void setSelectionStart(const KTextEditor::Cursor pos); 0040 void setSelectionFinish(const KTextEditor::Cursor pos); 0041 void setUserMark(const QChar &mark, const KTextEditor::Cursor pos); 0042 0043 KTextEditor::Cursor getStartEditYanked() const; 0044 KTextEditor::Cursor getFinishEditYanked() const; 0045 KTextEditor::Cursor getLastChange() const; 0046 KTextEditor::Cursor getInsertStopped() const; 0047 KTextEditor::Cursor getSelectionStart() const; 0048 KTextEditor::Cursor getSelectionFinish() const; 0049 KTextEditor::Cursor getMarkPosition(const QChar &mark) const; 0050 0051 void writeSessionConfig(KConfigGroup &config) const; 0052 void readSessionConfig(const KConfigGroup &config); 0053 0054 QString getMarksOnTheLine(int line) const; 0055 0056 private: 0057 void syncViMarksAndBookmarks(); 0058 static bool isShowable(const QChar &mark); 0059 0060 void setMark(const QChar &mark, const KTextEditor::Cursor pos); 0061 0062 private Q_SLOTS: 0063 void markChanged(KTextEditor::Document *doc, KTextEditor::Mark mark, KTextEditor::MarkInterface::MarkChangeAction action); 0064 0065 private: 0066 InputModeManager *m_inputModeManager; 0067 KTextEditor::DocumentPrivate *m_doc; 0068 0069 QMap<QChar, KTextEditor::MovingCursor *> m_marks; 0070 bool m_settingMark; 0071 }; 0072 } 0073 0074 #endif // KATE_VIMODE_MARKS_H