diff --git a/main.cpp b/main.cpp index 9ad29c6..868425f 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ using std::string; using std::vector; +#define ESC 27 #define adds(s) addstr(s.c_str()) enum mode_type { insert, normal }; @@ -24,7 +25,7 @@ void set(int r, int s, char ch) { file.find(r)->text[s] = ch; } void add_line(int r, string text = "") { file.insert(r, text); } void remove_line(int r) { file.remove(r); } void insert_char(int r, int s, char ch) { file.find(r)->text.insert(s, string{ch}); } -void remove_char(int r, int s) { file.find(r)->text.erase(s); } +void remove_char(int r, int s) { file.find(r)->text.erase(s,1); } // For normal mode not to write to terminal void step_back() { @@ -169,12 +170,20 @@ int main(int argc, char* argv[]) { case 'i': mode = insert; break; + case ESC: + break; } break; case insert: - insert_char(row, col++, ch); - print_line(row); - break; + switch(ch) { + case ESC: + mode = normal; + break; + default: + insert_char(row, col++, ch); + print_line(row); + break; + } } refresh(); }