diff --git a/degesch.c b/degesch.c index 64280c8..b15b464 100644 --- a/degesch.c +++ b/degesch.c @@ -952,6 +952,19 @@ buffer_goto (struct app_context *ctx, int n) return false; } +static int +buffer_get_index (struct app_context *ctx, struct buffer *buffer) +{ + int index = 1; + LIST_FOR_EACH (struct buffer, iter, ctx->buffers) + { + if (iter == buffer) + return index; + index++; + } + return -1; +} + static void init_buffers (struct app_context *ctx) { @@ -1291,12 +1304,8 @@ refresh_prompt (struct app_context *ctx) str_append_printf (&prompt, "(%s) ", unseen_prefix); free (unseen_prefix); - int buffer_index = 1; - for (struct buffer *iter = ctx->buffers; - iter && iter != buffer; iter = iter->next) - buffer_index++; - - str_append_printf (&prompt, "%d:%s", buffer_index, buffer->name); + str_append_printf (&prompt, "%d:%s", + buffer_get_index (ctx, buffer), buffer->name); if (buffer->type == BUFFER_CHANNEL && *buffer->mode) str_append_printf (&prompt, "(%s)", buffer->mode);