aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--degesch.c21
1 files changed, 15 insertions, 6 deletions
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);