tImplement mode switching between normal and insert mode - ve - a minimal text editor (work in progress)
(HTM) git clone git://src.adamsgaard.dk/ve
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 514b81a4a6a9b5496e7ebfb9836557c64efa37de
(DIR) parent bc2cd2c1479a6026fcef43418a6e4b9de93a7b3f
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
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(-)
---
(DIR) 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 screen */
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;
}
}
}