From 51ca5c79e4174a67aa1e50402c28ecf0a06798e4 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Wed, 15 Apr 2015 16:18:43 +0200
Subject: degesch: show active buffers in prompt
---
degesch.c | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/degesch.c b/degesch.c
index 358e592..1786770 100644
--- a/degesch.c
+++ b/degesch.c
@@ -1216,6 +1216,31 @@ irc_establish_connection (struct app_context *ctx,
// --- More readline funky stuff -----------------------------------------------
+static char *
+get_unseen_prefix (struct app_context *ctx)
+{
+ struct str active_buffers;
+ str_init (&active_buffers);
+
+ size_t i = 0;
+ LIST_FOR_EACH (struct buffer, iter, ctx->buffers)
+ {
+ i++;
+ if (!iter->unseen_messages_count)
+ continue;
+
+ if (active_buffers.len)
+ str_append_c (&active_buffers, ',');
+ str_append_printf (&active_buffers, "%zu", i);
+ }
+
+ if (active_buffers.len)
+ return str_steal (&active_buffers);
+
+ str_free (&active_buffers);
+ return NULL;
+}
+
static void
refresh_prompt (struct app_context *ctx)
{
@@ -1229,8 +1254,11 @@ refresh_prompt (struct app_context *ctx)
else
{
str_append_c (&prompt, '[');
- // TODO: go through all buffers and prepend the active ones,
- // such as "(1,4) "
+
+ char *unseen_prefix = get_unseen_prefix (ctx);
+ if (unseen_prefix)
+ str_append_printf (&prompt, "(%s) ", unseen_prefix);
+ free (unseen_prefix);
// TODO: name of the current buffer
// TODO: the channel user mode
--
cgit v1.2.3-70-g09d2