Indicate the marked pane in choose mode in reverse and add key to set

and clear it (m and M) and a key to jump to the starting pane (H).
This commit is contained in:
nicm
2020-04-22 21:01:28 +00:00
parent 662728d6c7
commit 899b3d2436
3 changed files with 54 additions and 9 deletions

View File

@ -37,9 +37,11 @@ static void window_tree_key(struct window_mode_entry *,
#define WINDOW_TREE_DEFAULT_FORMAT \
"#{?pane_format," \
"#{pane_current_command} \"#{pane_title}\"" \
"#{?pane_marked,#[reverse],}" \
"#{pane_current_command}#{?pane_active,*,}#{?pane_marked,M,} \"#{pane_title}\"" \
"," \
"#{?window_format," \
"#{?window_marked_flag,#[reverse],}" \
"#{window_name}#{window_flags} " \
"(#{window_panes} panes)" \
"#{?#{==:#{window_panes},1}, \"#{pane_title}\",}" \
@ -56,6 +58,7 @@ static void window_tree_key(struct window_mode_entry *,
static const struct menu_item window_tree_menu_items[] = {
{ "Select", '\r', NULL },
{ "Expand", KEYC_RIGHT, NULL },
{ "Mark", 'm', NULL },
{ "", KEYC_NONE, NULL },
{ "Tag", 't', NULL },
{ "Tag All", '\024', NULL },
@ -1170,7 +1173,7 @@ window_tree_key(struct window_mode_entry *wme, struct client *c,
struct window_tree_modedata *data = wme->data;
struct window_tree_itemdata *item, *new_item;
char *name, *prompt = NULL;
struct cmd_find_state fs;
struct cmd_find_state fs, *fsp = &data->fs;
int finished;
u_int tagged, x, y, idx;
struct session *ns;
@ -1192,6 +1195,21 @@ window_tree_key(struct window_mode_entry *wme, struct client *c,
case '>':
data->offset++;
break;
case 'H':
mode_tree_expand(data->data, (uint64_t)fsp->s);
mode_tree_expand(data->data, (uint64_t)fsp->wl);
if (!mode_tree_set_current(data->data, (uint64_t)wme->wp))
mode_tree_set_current(data->data, (uint64_t)fsp->wl);
break;
case 'm':
window_tree_pull_item(item, &ns, &nwl, &nwp);
server_set_marked(ns, nwl, nwp);
mode_tree_build(data->data);
break;
case 'M':
server_clear_marked();
mode_tree_build(data->data);
break;
case 'x':
window_tree_pull_item(item, &ns, &nwl, &nwp);
switch (item->type) {