tImplement mode switching between normal and insert mode - ve - a minimal text … | |
git clone git://src.adamsgaard.dk/ve | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 514b81a4a6a9b5496e7ebfb9836557c64efa37de | |
parent bc2cd2c1479a6026fcef43418a6e4b9de93a7b3f | |
Author: Anders Damsgaard <[email protected]> | |
Date: Tue, 6 Aug 2019 14:09:27 +0200 | |
Implement mode switching between normal and insert mode | |
Diffstat: | |
M input.c | 35 +++++++++++++++++++++++++++++… | |
1 file changed, 35 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/input.c b/input.c | |
t@@ -58,6 +58,10 @@ editor_process_keypress() | |
if (E.mode == 0) { /* normal mode */ | |
switch (c) { | |
+ case 'i': | |
+ E.mode = 1; | |
+ break; | |
+ | |
case CTRL_KEY('q'): | |
write(STDOUT_FILENO, "\x1b[2J", 4); /* clear s… | |
write(STDOUT_FILENO, "\x1b[H", 3); | |
t@@ -70,6 +74,17 @@ editor_process_keypress() | |
editor_move_cursor(c); | |
break; | |
+ case CTRL_KEY('f'): | |
+ i = E.screen_rows - E.status_height; | |
+ while (i--) | |
+ editor_move_cursor('j'); | |
+ break; | |
+ case CTRL_KEY('b'): | |
+ i = E.screen_rows - E.status_height; | |
+ while (i--) | |
+ editor_move_cursor('k'); | |
+ break; | |
+ | |
case CTRL_KEY('d'): | |
i = E.screen_rows/2; | |
while (i--) | |
t@@ -84,6 +99,26 @@ editor_process_keypress() | |
case '0': | |
E.cursor_x = 0; | |
break; | |
+ case '$': | |
+ if (E.cursor_y < E.num_rows) | |
+ E.cursor_x = E.row[E.cursor_y].size; | |
+ break; | |
+ | |
+ case 'I': | |
+ E.cursor_x = 0; | |
+ E.mode = 1; | |
+ break; | |
+ case 'A': | |
+ if (E.cursor_y < E.num_rows) | |
+ E.cursor_x = E.row[E.cursor_y].size; | |
+ E.mode = 1; | |
+ break; | |
+ } | |
+ } else if (E.mode == 1) { /* insert mode */ | |
+ switch (c) { | |
+ case 27: /* escape */ | |
+ E.mode = 0; | |
+ break; | |
} | |
} | |
} |