=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/cmd-choose-buffer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- src/usr.bin/tmux/Attic/cmd-choose-buffer.c 2012/06/25 14:08:55 1.6 +++ src/usr.bin/tmux/Attic/cmd-choose-buffer.c 2012/06/25 14:27:25 1.7 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-choose-buffer.c,v 1.6 2012/06/25 14:08:55 nicm Exp $ */ +/* $OpenBSD: cmd-choose-buffer.c,v 1.7 2012/06/25 14:27:25 nicm Exp $ */ /* * Copyright (c) 2010 Nicholas Marriott @@ -48,8 +48,9 @@ struct window_choose_data *cdata; struct winlink *wl; struct paste_buffer *pb; - u_int idx; + char *action, *action_data; const char *template; + u_int idx; if (ctx->curclient == NULL) { ctx->error(ctx, "must be run interactively"); @@ -68,14 +69,14 @@ if (window_pane_set_mode(wl->window->active, &window_choose_mode) != 0) return (0); + if (args->argc != 0) + action = xstrdup(args->argv[0]); + else + action = xstrdup("paste-buffer -b '%%'"); + idx = 0; while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) { cdata = window_choose_data_create(ctx); - if (args->argc != 0) - cdata->action = xstrdup(args->argv[0]); - else - cdata->action = xstrdup("paste-buffer -b '%%'"); - cdata->idx = idx - 1; cdata->client->references++; @@ -83,8 +84,13 @@ format_add(cdata->ft, "line", "%u", idx - 1); format_paste_buffer(cdata->ft, pb); + xasprintf(&action_data, "%u", idx - 1); + cdata->command = cmd_template_replace(action, action_data, 1); + xfree(action_data); + window_choose_add(wl->window->active, cdata); } + xfree(action); window_choose_ready(wl->window->active, 0, cmd_choose_buffer_callback, cmd_choose_buffer_free); @@ -100,7 +106,6 @@ if (cdata->client->flags & CLIENT_DEAD) return; - xasprintf(&cdata->raw_format, "%u", cdata->idx); window_choose_ctx(cdata); } @@ -114,8 +119,7 @@ cdata->client->references--; + xfree(cdata->command); xfree(cdata->ft_template); - xfree(cdata->action); - xfree(cdata->raw_format); xfree(cdata); }