Denton Liu <liu.den...@gmail.com> writes:

>       static int calculate_width(const struct strbuf *row)
>       {
>               int in_termcode = 0;
>               int width = 0;
>               int i;
>
>               for (i = 0; i < row.len; i++) {
>                       if (row.buf[i] == '\033')
>                               in_termcode = 1;
>
>                       if (!in_termcode)
>                               width++;
>                       else if (row.buf[i] == 'm')
>                               in_termcode = 0;
>               }
>       }

Not every byte that is outside the escape sequence contributes to
one display columns.  You would want to take a look at utf8_width()
for inspiration.

Reply via email to