Implement insert mode

This commit is contained in:
Matúš Púll 2025-03-31 20:28:42 +02:00
parent 05213ff3e6
commit 5478f30554

View file

@ -9,6 +9,7 @@
using std::string; using std::string;
using std::vector; using std::vector;
#define ESC 27
#define adds(s) addstr(s.c_str()) #define adds(s) addstr(s.c_str())
enum mode_type { insert, normal }; 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 add_line(int r, string text = "") { file.insert(r, text); }
void remove_line(int r) { file.remove(r); } 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 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 // For normal mode not to write to terminal
void step_back() { void step_back() {
@ -169,12 +170,20 @@ int main(int argc, char* argv[]) {
case 'i': case 'i':
mode = insert; mode = insert;
break; break;
case ESC:
break;
} }
break; break;
case insert: case insert:
insert_char(row, col++, ch); switch(ch) {
print_line(row); case ESC:
break; mode = normal;
break;
default:
insert_char(row, col++, ch);
print_line(row);
break;
}
} }
refresh(); refresh();
} }