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;
                        }
                }
        }