I've been continuing working through the steps to implement kilo, but I've been increasingly unhappy with the accesses to the global g_editor_state variable all over the code; it's ugly and makes too much of the code dependent on the precise declaration of that struct.
So I decided to refactor so that all accesses to the editor state are through aptly named functions. I'm a lot happier with the result. As an example, here's the current implementation of editor_draw_rows:
void editor_draw_rows(term_buffer* tb) { for (int y = 0; y < get_screen_height(); y++) { if (y < get_file_lines()) { int len = get_line_size(); if (len > get_screen_width()) len = get_screen_width(); tb_append(tb, get_line_chars(), len); } else if (y != get_screen_height()/3) tb_append_str(tb, get_tilde_str()); else if (get_file_lines() == 0) append_welcome_message(tb); tb_append_str(tb, get_clear_row_str()); if (y + 1 < get_screen_height()) tb_append_str(tb, get_rn_str()); } }
No comments:
Post a Comment