From 25806993f90b476b28c73c15763ad850d3ace67a Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 24 Oct 2017 21:23:32 -0400 Subject: [PATCH] Add DefaultCommandMap module to define the default command map. --- src/core/Command.h | 6 +++++- src/core/DefaultCommandMap.cc | 26 ++++++++++++++++++++++++++ src/core/DefaultCommandMap.h | 19 +++++++++++++++++++ src/jes.cc | 2 ++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/core/DefaultCommandMap.cc create mode 100644 src/core/DefaultCommandMap.h diff --git a/src/core/Command.h b/src/core/Command.h index 3d9af39..72ab446 100644 --- a/src/core/Command.h +++ b/src/core/Command.h @@ -13,8 +13,12 @@ public: FORWARD_ON_TO_CHAR, BACK_UP_TO_CHAR, BACK_ON_TO_CHAR, - DELETE, + DELETE_MOTION, DELETE_LINE, + DELETE_CHAR, + DELETE_CHAR_BACK, + CHANGE_MOTION, + CHANGE_LINE, COMMAND_COUNT, }; diff --git a/src/core/DefaultCommandMap.cc b/src/core/DefaultCommandMap.cc new file mode 100644 index 0000000..c9d365a --- /dev/null +++ b/src/core/DefaultCommandMap.cc @@ -0,0 +1,26 @@ +#include "DefaultCommandMap.h" + +std::shared_ptr g_DefaultCommandMap; + +void DefaultCommandMap::build() +{ + g_DefaultCommandMap = std::make_shared(); + CommandMap * dcm = &*g_DefaultCommandMap; + auto motion_map = std::make_shared(); + + motion_map->add("t", Command::Motion::FORWARD_UP_TO_CHAR, nullptr, true); + motion_map->add("f", Command::Motion::FORWARD_ON_TO_CHAR, nullptr, true); + motion_map->add("T", Command::Motion::BACK_UP_TO_CHAR, nullptr, true); + motion_map->add("F", Command::Motion::BACK_ON_TO_CHAR, nullptr, true); + + dcm->add("t", Command::FORWARD_UP_TO_CHAR, nullptr, true); + dcm->add("f", Command::FORWARD_ON_TO_CHAR, nullptr, true); + dcm->add("T", Command::BACK_UP_TO_CHAR, nullptr, true); + dcm->add("F", Command::BACK_ON_TO_CHAR, nullptr, true); + dcm->add("d", Command::DELETE_MOTION, motion_map, false); + dcm->add("dd", Command::DELETE_LINE, nullptr, false); + dcm->add("x", Command::DELETE_CHAR, nullptr, false); + dcm->add("X", Command::DELETE_CHAR_BACK, nullptr, false); + dcm->add("c", Command::CHANGE_MOTION, motion_map, false); + dcm->add("cc", Command::CHANGE_LINE, nullptr, false); +} diff --git a/src/core/DefaultCommandMap.h b/src/core/DefaultCommandMap.h new file mode 100644 index 0000000..ea0547e --- /dev/null +++ b/src/core/DefaultCommandMap.h @@ -0,0 +1,19 @@ +#ifndef DEFAULTCOMMANDMAP_H +#define DEFAULTCOMMANDMAP_H + +#include "CommandMap.h" + +extern std::shared_ptr g_DefaultCommandMap; + +class DefaultCommandMap +{ +public: + static void build(); + + static std::shared_ptr get() + { + return g_DefaultCommandMap; + } +}; + +#endif diff --git a/src/jes.cc b/src/jes.cc index ee5506c..5e9818c 100644 --- a/src/jes.cc +++ b/src/jes.cc @@ -3,6 +3,7 @@ #include "Runtime.h" #include #include "System.h" +#include "DefaultCommandMap.h" int main(int argc, char * argv[]) { @@ -12,6 +13,7 @@ int main(int argc, char * argv[]) } Runtime::init(System::executable_path().c_str(), APPNAME); + DefaultCommandMap::build(); const char * filename = nullptr; if (argc > 1)