Implement insert mode
This commit is contained in:
parent
05213ff3e6
commit
5478f30554
1 changed files with 13 additions and 4 deletions
17
main.cpp
17
main.cpp
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue