From de8ba755df0ed4c2a79fdcd204f9ce593dd56bf2 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Fri, 8 Sep 2023 22:10:21 +1000 Subject: [PATCH] copybuf: switch to embedded-data pattern Signed-off-by: NeilBrown --- lib-copybuf.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib-copybuf.c b/lib-copybuf.c index bbde8b73..352a8ea4 100644 --- a/lib-copybuf.c +++ b/lib-copybuf.c @@ -20,6 +20,7 @@ #include #include +#define PANE_DATA_TYPE struct copy_info #include "core.h" struct copy_info { @@ -31,6 +32,7 @@ struct copy_info { struct command cmd; struct pane *pane; }; +#include "core-pane.h" static struct map *copy_map; DEF_LOOKUP_CMD(copy_handle, copy_map); @@ -46,12 +48,11 @@ static void free_txt(struct txt **tp safe) free(t); } -DEF_CMD(copy_free) +DEF_CMD(copy_close) { struct copy_info *cyi = ci->home->data; free_txt(&cyi->store); - unalloc(cyi, pane); return 1; } @@ -123,15 +124,19 @@ DEF_CB(copy_do) void edlib_init(struct pane *ed safe) { struct copy_info *cyi; + struct pane *p; if (!copy_map) { copy_map = key_alloc(); - key_add(copy_map, "Free", ©_free); + key_add(copy_map, "Close", ©_close); } - alloc(cyi, pane); + p = pane_register(ed, 0, ©_handle.c); + if (!p) + return; + cyi = p->data; cyi->cmd = copy_do; - cyi->pane = pane_register(ed, 0, ©_handle.c, cyi); + cyi->pane = p; call_comm("global-set-command", ed, &cyi->cmd, 0, NULL, "copy:save"); call_comm("global-set-command", ed, &cyi->cmd, 0, NULL, "copy:get"); } -- 2.39.5