tImplement status bar spacing in a simpler way, add char array for filename - 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 47a9339b4ca25ac94128be6af5f98881381353ca
 (DIR) parent 514b81a4a6a9b5496e7ebfb9836557c64efa37de
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Tue,  6 Aug 2019 14:21:18 +0200
       
       Implement status bar spacing in a simpler way, add char array for filename
       
       Diffstat:
         M byote.h                             |       2 +-
         M input.c                             |       4 ++--
         M io.c                                |       3 +++
         M output.c                            |      15 ++++++---------
         M terminal.c                          |       3 +++
       
       5 files changed, 15 insertions(+), 12 deletions(-)
       ---
 (DIR) diff --git a/byote.h b/byote.h
       t@@ -22,8 +22,8 @@ struct editor_config {
                int num_rows;
                eRow *row;
                int row_offset, column_offset;
       +        char *filename;
                struct termios orig_termios;
       -        int status_height;
                int mode; /* 0: normal, 1: insert, 2: visual */
        };
        
 (DIR) diff --git a/input.c b/input.c
       t@@ -75,12 +75,12 @@ editor_process_keypress()
                                        break;
        
                                case CTRL_KEY('f'):
       -                                i = E.screen_rows - E.status_height;
       +                                i = E.screen_rows;
                                        while (i--)
                                                editor_move_cursor('j');
                                        break;
                                case CTRL_KEY('b'):
       -                                i = E.screen_rows - E.status_height;
       +                                i = E.screen_rows;
                                        while (i--)
                                                editor_move_cursor('k');
                                        break;
 (DIR) diff --git a/io.c b/io.c
       t@@ -64,6 +64,9 @@ editor_append_row(char *s, size_t len)
        void
        file_open(char *filename)
        {
       +        free(E.filename);
       +        E.filename = strdup(filename);
       +
                FILE *fp;
                char *line;
                size_t linecap;
 (DIR) diff --git a/output.c b/output.c
       t@@ -29,9 +29,8 @@ ab_free(struct abuf *ab) {
         * if the screen is narrower than both parts, just show the left status, 
         * truncated, if necessary. */
        void
       -draw_status(struct abuf *ab)
       +editor_draw_status(struct abuf *ab)
        {
       -        E.status_height = 1;
                char left_status[512], right_status[512];
                int left_status_len, right_status_len, padding;
        
       t@@ -93,8 +92,8 @@ editor_scroll()
        
                if (E.cursor_y < E.row_offset)
                        E.row_offset = E.cursor_y;
       -        else if (E.cursor_y >= E.row_offset + E.screen_rows - E.status_height)
       -                E.row_offset = E.cursor_y - E.screen_rows + E.status_height + 1;
       +        else if (E.cursor_y >= E.row_offset + E.screen_rows)
       +                E.row_offset = E.cursor_y - E.screen_rows + 1;
        
                if (E.cursor_rx < E.column_offset)
                        E.column_offset = E.cursor_rx;
       t@@ -110,9 +109,7 @@ editor_draw_rows(struct abuf *ab)
                int y, len, file_row;
                for (y = 0; y < E.screen_rows; ++y) {
                        file_row = y + E.row_offset;
       -                if (y == E.screen_rows-1) {
       -                        draw_status(ab);
       -                } else if (file_row < E.num_rows) {
       +                if (file_row < E.num_rows) {
                                len = E.row[file_row].rsize - E.column_offset;
                                if (len < 0)
                                        len = 0;
       t@@ -124,8 +121,7 @@ editor_draw_rows(struct abuf *ab)
                        }
        
                        ab_append(ab, "\x1b[K", 3); /* erase to end of line */
       -                if (y < E.screen_rows - 1)
       -                        ab_append(ab, "\r\n", 2);
       +                ab_append(ab, "\r\n", 2);
                }
        }
        
       t@@ -145,6 +141,7 @@ editor_refresh_screen()
                ab_append(&ab, "\x1b[H", 3);    /* cursor to home */
                
                editor_draw_rows(&ab);
       +        editor_draw_status(&ab);
        
                char buf[32];
                snprintf(buf, sizeof(buf), "\x1b[%d;%dH",
 (DIR) diff --git a/terminal.c b/terminal.c
       t@@ -106,6 +106,7 @@ get_window_size(int *rows, int *cols)
                }
        }
        
       +/* set editor state variables, make room for status */
        void
        init_editor() {
                E.cursor_x = 0;
       t@@ -116,6 +117,8 @@ init_editor() {
                E.row = NULL;
                E.row_offset = 0;
                E.column_offset = 0;
       +        E.filename = NULL;
                if (get_window_size(&E.screen_rows, &E.screen_columns) == -1)
                        die("get_window_size");
       +        E.screen_rows -= 1;
        }