1 | /* |
2 | SPDX-FileCopyrightText: KDE Developers |
3 | |
4 | SPDX-License-Identifier: LGPL-2.0-or-later |
5 | */ |
6 | |
7 | #ifndef KATE_VI_INPUT_MODE_H |
8 | #define KATE_VI_INPUT_MODE_H |
9 | |
10 | #include <memory> |
11 | |
12 | #include "kateabstractinputmode.h" |
13 | |
14 | #include <vimode/inputmodemanager.h> |
15 | |
16 | namespace KateVi |
17 | { |
18 | class GlobalState; |
19 | class EmulatedCommandBar; |
20 | } |
21 | class KateViInputModeFactory; |
22 | |
23 | class KTEXTEDITOR_EXPORT KateViInputMode : public KateAbstractInputMode |
24 | { |
25 | explicit KateViInputMode(KateViewInternal *viewInternal, KateVi::GlobalState *global); |
26 | friend KateViInputModeFactory; |
27 | |
28 | public: |
29 | KTextEditor::View::ViewMode viewMode() const override; |
30 | QString viewModeHuman() const override; |
31 | KTextEditor::View::InputMode viewInputMode() const override; |
32 | QString viewInputModeHuman() const override; |
33 | |
34 | void activate() override; |
35 | void deactivate() override; |
36 | void reset() override; |
37 | |
38 | bool overwrite() const override; |
39 | void overwrittenChar(const QChar &) override; |
40 | |
41 | void clearSelection() override; |
42 | bool stealKey(QKeyEvent *) override; |
43 | |
44 | void gotFocus() override; |
45 | void lostFocus() override; |
46 | |
47 | void readSessionConfig(const KConfigGroup &config) override; |
48 | void writeSessionConfig(KConfigGroup &config) override; |
49 | void updateRendererConfig() override; |
50 | void updateConfig() override; |
51 | void readWriteChanged(bool rw) override; |
52 | |
53 | void find() override; |
54 | void findSelectedForwards() override; |
55 | void findSelectedBackwards() override; |
56 | void findReplace() override; |
57 | void findNext() override; |
58 | void findPrevious() override; |
59 | |
60 | void activateCommandLine() override; |
61 | |
62 | bool keyPress(QKeyEvent *) override; |
63 | bool blinkCaret() const override; |
64 | KTextEditor::caretStyles caretStyle() const override; |
65 | |
66 | void toggleInsert() override; |
67 | void launchInteractiveCommand(const QString &command) override; |
68 | |
69 | QString bookmarkLabel(int line) const override; |
70 | |
71 | public: |
72 | void showViModeEmulatedCommandBar(); |
73 | KateVi::EmulatedCommandBar *viModeEmulatedCommandBar(); |
74 | inline KateVi::GlobalState *globalState() const |
75 | { |
76 | return m_viGlobal; |
77 | } |
78 | inline KateVi::InputModeManager *viInputModeManager() const |
79 | { |
80 | return m_viModeManager.get(); |
81 | } |
82 | inline bool isActive() const |
83 | { |
84 | return m_activated; |
85 | } |
86 | void setCaretStyle(const KTextEditor::caretStyles caret); |
87 | |
88 | private: |
89 | KateVi::EmulatedCommandBar *m_viModeEmulatedCommandBar; |
90 | KateVi::GlobalState *m_viGlobal; |
91 | KTextEditor::caretStyles m_caret; |
92 | |
93 | bool m_nextKeypressIsOverriddenShortCut; |
94 | |
95 | // configs |
96 | bool m_relLineNumbers; |
97 | bool m_activated; |
98 | |
99 | std::unique_ptr<KateVi::InputModeManager> m_viModeManager; |
100 | }; |
101 | |
102 | #endif |
103 | |