degesch: factor out buffer_goto()

And make M-[0-9] ding if there's no such buffer.
This commit is contained in:
Přemysl Eric Janouch 2015-04-16 21:16:10 +02:00
parent 0c96563545
commit 75b2fc1da2
1 changed files with 16 additions and 8 deletions

View File

@ -938,6 +938,20 @@ buffer_activate (struct app_context *ctx, struct buffer *buffer)
refresh_prompt (ctx); refresh_prompt (ctx);
} }
/// Activate the n-th buffer, counting from one
static bool
buffer_goto (struct app_context *ctx, int n)
{
int i = 0;
LIST_FOR_EACH (struct buffer, iter, ctx->buffers)
if (++i == n)
{
buffer_activate (ctx, iter);
return true;
}
return false;
}
static void static void
init_buffers (struct app_context *ctx) init_buffers (struct app_context *ctx)
{ {
@ -1328,15 +1342,9 @@ on_readline_goto_buffer (int count, int key)
if (n == 0) if (n == 0)
n = 10; n = 10;
// Activate the n-th buffer
int i = 0;
struct app_context *ctx = g_ctx; struct app_context *ctx = g_ctx;
LIST_FOR_EACH (struct buffer, iter, ctx->buffers) if (!buffer_goto (ctx, n))
if (++i == n) rl_ding ();
{
buffer_activate (ctx, iter);
break;
}
return 0; return 0;
} }