diff --git a/Userland/Libraries/LibGUI/EditingEngine.h b/Userland/Libraries/LibGUI/EditingEngine.h index 0885ae8805..a7588191b7 100644 --- a/Userland/Libraries/LibGUI/EditingEngine.h +++ b/Userland/Libraries/LibGUI/EditingEngine.h @@ -17,6 +17,11 @@ enum CursorWidth { WIDE }; +enum EngineType { + Regular, + Vim, +}; + class EditingEngine { AK_MAKE_NONCOPYABLE(EditingEngine); AK_MAKE_NONMOVABLE(EditingEngine); @@ -37,6 +42,9 @@ public: virtual bool on_key(const KeyEvent& event); + bool is_regular() const { return engine_type() == EngineType::Regular; } + bool is_vim() const { return engine_type() == EngineType::Vim; } + protected: EditingEngine() { } @@ -73,6 +81,8 @@ protected: void delete_line(); void delete_char(); + virtual EngineType engine_type() const = 0; + private: void move_selected_lines_up(); void move_selected_lines_down(); diff --git a/Userland/Libraries/LibGUI/RegularEditingEngine.h b/Userland/Libraries/LibGUI/RegularEditingEngine.h index af07dc35c6..308bb353bc 100644 --- a/Userland/Libraries/LibGUI/RegularEditingEngine.h +++ b/Userland/Libraries/LibGUI/RegularEditingEngine.h @@ -19,6 +19,7 @@ public: private: void sort_selected_lines(); + virtual EngineType engine_type() const override { return EngineType::Regular; } }; } diff --git a/Userland/Libraries/LibGUI/VimEditingEngine.h b/Userland/Libraries/LibGUI/VimEditingEngine.h index 02652f8967..8be34cfbbd 100644 --- a/Userland/Libraries/LibGUI/VimEditingEngine.h +++ b/Userland/Libraries/LibGUI/VimEditingEngine.h @@ -187,6 +187,8 @@ private: bool on_key_in_insert_mode(const KeyEvent& event); bool on_key_in_normal_mode(const KeyEvent& event); bool on_key_in_visual_mode(const KeyEvent& event); + + virtual EngineType engine_type() const override { return EngineType::Vim; } }; }