diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-03-28 22:02:37 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-03-28 22:02:37 +0000 |
commit | 2c4f2393ec0e475ad7308d03c77c295a4d7c086c (patch) | |
tree | 1ea170a329a1ea3d4ab6e5dd4a3ae944b19f165b | |
parent | 6b38334b28d40efd60b39b6cf2230d7c8ee1ce0c (diff) | |
parent | 08bc226527c7adf31d8137c82df9faee56fe4270 (diff) | |
download | rtmux-2c4f2393ec0e475ad7308d03c77c295a4d7c086c.tar.gz rtmux-2c4f2393ec0e475ad7308d03c77c295a4d7c086c.tar.bz2 rtmux-2c4f2393ec0e475ad7308d03c77c295a4d7c086c.zip |
Merge branch 'obsd-master'
-rw-r--r-- | format.c | 17 | ||||
-rw-r--r-- | window-buffer.c | 16 |
2 files changed, 31 insertions, 2 deletions
@@ -1820,6 +1820,23 @@ void format_defaults(struct format_tree *ft, struct client *c, struct session *s, struct winlink *wl, struct window_pane *wp) { + if (c != NULL) + log_debug("%s: c=%s", __func__, c->name); + else + log_debug("%s: s=none", __func__); + if (s != NULL) + log_debug("%s: s=$%u", __func__, s->id); + else + log_debug("%s: s=none", __func__); + if (wl != NULL) + log_debug("%s: wl=%u w=@%u", __func__, wl->idx, wl->window->id); + else + log_debug("%s: wl=none", __func__); + if (wp != NULL) + log_debug("%s: wp=%%%u", __func__, wp->id); + else + log_debug("%s: wp=none", __func__); + if (c != NULL && s != NULL && c->session != s) log_debug("%s: session does not match", __func__); diff --git a/window-buffer.c b/window-buffer.c index 79b02e9b..07cdd80d 100644 --- a/window-buffer.c +++ b/window-buffer.c @@ -66,6 +66,7 @@ struct window_buffer_itemdata { }; struct window_buffer_modedata { + struct cmd_find_state fs; struct mode_tree_data *data; char *command; char *format; @@ -137,6 +138,9 @@ window_buffer_build(void *modedata, u_int sort_type, __unused uint64_t *tag, struct paste_buffer *pb; char *text, *cp; struct format_tree *ft; + struct session *s = NULL; + struct winlink *wl = NULL; + struct window_pane *wp = NULL; for (i = 0; i < data->item_size; i++) window_buffer_free_item(data->item_list[i]); @@ -167,6 +171,12 @@ window_buffer_build(void *modedata, u_int sort_type, __unused uint64_t *tag, break; } + if (cmd_find_valid_state(&data->fs)) { + s = data->fs.s; + wl = data->fs.wl; + wp = data->fs.wp; + } + for (i = 0; i < data->item_size; i++) { item = data->item_list[i]; @@ -174,6 +184,7 @@ window_buffer_build(void *modedata, u_int sort_type, __unused uint64_t *tag, if (pb == NULL) continue; ft = format_create(NULL, NULL, FORMAT_NONE, 0); + format_defaults(ft, NULL, s, wl, wp); format_defaults_paste_buffer(ft, pb); if (filter != NULL) { @@ -253,14 +264,15 @@ window_buffer_search(__unused void *modedata, void *itemdata, const char *ss) } static struct screen * -window_buffer_init(struct window_mode_entry *wme, - __unused struct cmd_find_state *fs, struct args *args) +window_buffer_init(struct window_mode_entry *wme, struct cmd_find_state *fs, + struct args *args) { struct window_pane *wp = wme->wp; struct window_buffer_modedata *data; struct screen *s; wme->data = data = xcalloc(1, sizeof *data); + cmd_find_copy_state(&data->fs, fs); if (args == NULL || !args_has(args, 'F')) data->format = xstrdup(WINDOW_BUFFER_DEFAULT_FORMAT); |