Implement insert mode
This commit is contained in:
parent
05213ff3e6
commit
5478f30554
1 changed files with 13 additions and 4 deletions
11
main.cpp
11
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,13 +170,21 @@ int main(int argc, char* argv[]) {
|
|||
case 'i':
|
||||
mode = insert;
|
||||
break;
|
||||
case ESC:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case insert:
|
||||
switch(ch) {
|
||||
case ESC:
|
||||
mode = normal;
|
||||
break;
|
||||
default:
|
||||
insert_char(row, col++, ch);
|
||||
print_line(row);
|
||||
break;
|
||||
}
|
||||
}
|
||||
refresh();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue