From 61ebbe245b29fc20b163d80072c1b6f0b5be0d84 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Fri, 17 Apr 2015 21:40:08 +0200
Subject: degesch: factor out make_prompt()
---
degesch.c | 64 ++++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 37 insertions(+), 27 deletions(-)
diff --git a/degesch.c b/degesch.c
index 072ac71..73ce587 100644
--- a/degesch.c
+++ b/degesch.c
@@ -1315,41 +1315,51 @@ get_unseen_prefix (struct app_context *ctx)
}
static void
-refresh_prompt (struct app_context *ctx)
+make_prompt (struct app_context *ctx, struct str *output)
{
- bool have_attributes = !!get_attribute_printer (stdout);
-
- struct str prompt;
- str_init (&prompt);
-
if (!ctx->irc_ready)
- str_append (&prompt, "(disconnected)");
- else if (soft_assert (ctx->current_buffer))
{
- struct buffer *buffer = ctx->current_buffer;
- str_append_c (&prompt, '[');
+ // XXX: does this make any sense?
+ str_append (output, "(disconnected)");
+ return;
+ }
- char *unseen_prefix = get_unseen_prefix (ctx);
- if (unseen_prefix)
- str_append_printf (&prompt, "(%s) ", unseen_prefix);
- free (unseen_prefix);
+ struct buffer *buffer = ctx->current_buffer;
+ if (!soft_assert (buffer))
+ return;
- 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);
+ str_append_c (output, '[');
- if (buffer != ctx->global_buffer)
- {
- str_append_c (&prompt, ' ');
- str_append (&prompt, ctx->irc_nickname);
- if (*ctx->irc_user_mode)
- str_append_printf (&prompt, "(%s)", ctx->irc_user_mode);
- }
+ char *unseen_prefix = get_unseen_prefix (ctx);
+ if (unseen_prefix)
+ str_append_printf (output, "(%s) ", unseen_prefix);
+ free (unseen_prefix);
- str_append_c (&prompt, ']');
+ str_append_printf (output, "%d:%s",
+ buffer_get_index (ctx, buffer), buffer->name);
+ if (buffer->type == BUFFER_CHANNEL && *buffer->mode)
+ str_append_printf (output, "(%s)", buffer->mode);
+
+ if (buffer != ctx->global_buffer)
+ {
+ str_append_c (output, ' ');
+ str_append (output, ctx->irc_nickname);
+ if (*ctx->irc_user_mode)
+ str_append_printf (output, "(%s)", ctx->irc_user_mode);
}
- str_append (&prompt, " ");
+
+ str_append_c (output, ']');
+}
+
+static void
+refresh_prompt (struct app_context *ctx)
+{
+ bool have_attributes = !!get_attribute_printer (stdout);
+
+ struct str prompt;
+ str_init (&prompt);
+ make_prompt (ctx, &prompt);
+ str_append_c (&prompt, ' ');
// After building the new prompt, replace the old one
free (ctx->readline_prompt);
--
cgit v1.2.3-70-g09d2