diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2013-03-21 16:09:59 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2013-03-21 16:09:59 +0000 |
commit | 180faf73afe07d35e6002993a70d5fe63549ffce (patch) | |
tree | e1a06d7b7042fd2afeb84507c8795a6a5d53cd3e /cmd-choose-buffer.c | |
parent | 8903c1f167839569b7514508b38988aa6486575c (diff) | |
download | rtmux-180faf73afe07d35e6002993a70d5fe63549ffce.tar.gz rtmux-180faf73afe07d35e6002993a70d5fe63549ffce.tar.bz2 rtmux-180faf73afe07d35e6002993a70d5fe63549ffce.zip |
Allow choose commands to be used outside tmux, so long as at least one
client is attached.
Diffstat (limited to 'cmd-choose-buffer.c')
-rw-r--r-- | cmd-choose-buffer.c | 40 |
1 files changed, 5 insertions, 35 deletions
diff --git a/cmd-choose-buffer.c b/cmd-choose-buffer.c index b811a042..a58e38b7 100644 --- a/cmd-choose-buffer.c +++ b/cmd-choose-buffer.c @@ -29,9 +29,6 @@ enum cmd_retval cmd_choose_buffer_exec(struct cmd *, struct cmd_ctx *); -void cmd_choose_buffer_callback(struct window_choose_data *); -void cmd_choose_buffer_free(struct window_choose_data *); - const struct cmd_entry cmd_choose_buffer_entry = { "choose-buffer", NULL, "F:t:", 0, 1, @@ -46,6 +43,7 @@ enum cmd_retval cmd_choose_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) { struct args *args = self->args; + struct client *c; struct window_choose_data *cdata; struct winlink *wl; struct paste_buffer *pb; @@ -53,8 +51,8 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) const char *template; u_int idx; - if (ctx->curclient == NULL) { - ctx->error(ctx, "must be run interactively"); + if ((c = cmd_current_client(ctx)) == NULL) { + ctx->error(ctx, "no client available"); return (CMD_RETURN_ERROR); } @@ -77,9 +75,8 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) idx = 0; while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) { - cdata = window_choose_data_create(ctx); + cdata = window_choose_data_create(TREE_OTHER, c, c->session); cdata->idx = idx - 1; - cdata->client->references++; cdata->ft_template = xstrdup(template); format_add(cdata->ft, "line", "%u", idx - 1); @@ -93,34 +90,7 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) } free(action); - window_choose_ready(wl->window->active, - 0, cmd_choose_buffer_callback, cmd_choose_buffer_free); + window_choose_ready(wl->window->active, 0, NULL); return (CMD_RETURN_NORMAL); } - -void -cmd_choose_buffer_callback(struct window_choose_data *cdata) -{ - if (cdata == NULL) - return; - if (cdata->client->flags & CLIENT_DEAD) - return; - - window_choose_ctx(cdata); -} - -void -cmd_choose_buffer_free(struct window_choose_data *data) -{ - struct window_choose_data *cdata = data; - - if (cdata == NULL) - return; - - cdata->client->references--; - - free(cdata->command); - free(cdata->ft_template); - free(cdata); -} |