degesch: factor out buffer_{previous,next}()
This commit is contained in:
parent
e5b52fcd76
commit
2d91a27714
51
degesch.c
51
degesch.c
@ -938,18 +938,45 @@ buffer_activate (struct app_context *ctx, struct buffer *buffer)
|
|||||||
refresh_prompt (ctx);
|
refresh_prompt (ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Activate the n-th buffer, counting from one
|
static struct buffer *
|
||||||
static bool
|
buffer_at_index (struct app_context *ctx, int n)
|
||||||
buffer_goto (struct app_context *ctx, int n)
|
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
LIST_FOR_EACH (struct buffer, iter, ctx->buffers)
|
LIST_FOR_EACH (struct buffer, iter, ctx->buffers)
|
||||||
if (++i == n)
|
if (++i == n)
|
||||||
{
|
return iter;
|
||||||
buffer_activate (ctx, iter);
|
return NULL;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct buffer *
|
||||||
|
buffer_next (struct app_context *ctx, int count)
|
||||||
|
{
|
||||||
|
struct buffer *new_buffer = ctx->current_buffer;
|
||||||
|
while (count-- > 0)
|
||||||
|
if (!(new_buffer = new_buffer->next))
|
||||||
|
new_buffer = ctx->buffers;
|
||||||
|
return new_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct buffer *
|
||||||
|
buffer_previous (struct app_context *ctx, int count)
|
||||||
|
{
|
||||||
|
struct buffer *new_buffer = ctx->current_buffer;
|
||||||
|
while (count-- > 0)
|
||||||
|
if (!(new_buffer = new_buffer->prev))
|
||||||
|
new_buffer = ctx->buffers_tail;
|
||||||
|
return new_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
buffer_goto (struct app_context *ctx, int n)
|
||||||
|
{
|
||||||
|
struct buffer *buffer = buffer_at_index (ctx, n);
|
||||||
|
if (!buffer)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
buffer_activate (ctx, buffer);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1375,11 +1402,7 @@ on_readline_previous_buffer (int count, int key)
|
|||||||
if (!ctx->current_buffer)
|
if (!ctx->current_buffer)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
struct buffer *new_buffer = ctx->current_buffer;
|
buffer_activate (ctx, buffer_previous (ctx, count));
|
||||||
while (count-- > 0)
|
|
||||||
if (!(new_buffer = new_buffer->prev))
|
|
||||||
new_buffer = ctx->buffers_tail;
|
|
||||||
buffer_activate (ctx, new_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1392,11 +1415,7 @@ on_readline_next_buffer (int count, int key)
|
|||||||
if (!ctx->current_buffer)
|
if (!ctx->current_buffer)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
struct buffer *new_buffer = ctx->current_buffer;
|
buffer_activate (ctx, buffer_next (ctx, count));
|
||||||
while (count-- > 0)
|
|
||||||
if (!(new_buffer = new_buffer->next))
|
|
||||||
new_buffer = ctx->buffers;
|
|
||||||
buffer_activate (ctx, new_buffer);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user