diff --git a/degesch.c b/degesch.c index db07059..f65292a 100644 --- a/degesch.c +++ b/degesch.c @@ -938,6 +938,20 @@ buffer_activate (struct app_context *ctx, struct buffer *buffer) 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 init_buffers (struct app_context *ctx) { @@ -1328,15 +1342,9 @@ on_readline_goto_buffer (int count, int key) if (n == 0) n = 10; - // Activate the n-th buffer - int i = 0; struct app_context *ctx = g_ctx; - LIST_FOR_EACH (struct buffer, iter, ctx->buffers) - if (++i == n) - { - buffer_activate (ctx, iter); - break; - } + if (!buffer_goto (ctx, n)) + rl_ding (); return 0; }