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