mirror of
https://github.com/tmux/tmux.git
synced 2024-11-01 07:08:49 +00:00
Add a way to make the preview larger in tree mode, GitHub issue 4124.
This commit is contained in:
parent
1c1f4c1219
commit
b95a06d2d4
55
mode-tree.c
55
mode-tree.c
@ -30,6 +30,12 @@ enum mode_tree_search_dir {
|
|||||||
MODE_TREE_SEARCH_BACKWARD
|
MODE_TREE_SEARCH_BACKWARD
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum mode_tree_preview {
|
||||||
|
MODE_TREE_PREVIEW_OFF,
|
||||||
|
MODE_TREE_PREVIEW_NORMAL,
|
||||||
|
MODE_TREE_PREVIEW_BIG
|
||||||
|
};
|
||||||
|
|
||||||
struct mode_tree_item;
|
struct mode_tree_item;
|
||||||
TAILQ_HEAD(mode_tree_list, mode_tree_item);
|
TAILQ_HEAD(mode_tree_list, mode_tree_item);
|
||||||
|
|
||||||
@ -414,7 +420,12 @@ mode_tree_start(struct window_pane *wp, struct args *args,
|
|||||||
mtd->sort_list = sort_list;
|
mtd->sort_list = sort_list;
|
||||||
mtd->sort_size = sort_size;
|
mtd->sort_size = sort_size;
|
||||||
|
|
||||||
mtd->preview = !args_has(args, 'N');
|
if (args_has(args, 'N') > 1)
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_BIG;
|
||||||
|
else if (args_has(args, 'N'))
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_OFF;
|
||||||
|
else
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_NORMAL;
|
||||||
|
|
||||||
sort = args_get(args, 'O');
|
sort = args_get(args, 'O');
|
||||||
if (sort != NULL) {
|
if (sort != NULL) {
|
||||||
@ -470,12 +481,21 @@ mode_tree_set_height(struct mode_tree_data *mtd)
|
|||||||
if (height < screen_size_y(s))
|
if (height < screen_size_y(s))
|
||||||
mtd->height = screen_size_y(s) - height;
|
mtd->height = screen_size_y(s) - height;
|
||||||
} else {
|
} else {
|
||||||
mtd->height = (screen_size_y(s) / 3) * 2;
|
if (mtd->preview == MODE_TREE_PREVIEW_NORMAL) {
|
||||||
if (mtd->height > mtd->line_size)
|
mtd->height = (screen_size_y(s) / 3) * 2;
|
||||||
mtd->height = screen_size_y(s) / 2;
|
if (mtd->height > mtd->line_size)
|
||||||
|
mtd->height = screen_size_y(s) / 2;
|
||||||
|
if (mtd->height < 10)
|
||||||
|
mtd->height = screen_size_y(s);
|
||||||
|
} else if (mtd->preview == MODE_TREE_PREVIEW_BIG) {
|
||||||
|
mtd->height = screen_size_y(s) / 4;
|
||||||
|
if (mtd->height > mtd->line_size)
|
||||||
|
mtd->height = mtd->line_size;
|
||||||
|
if (mtd->height < 2)
|
||||||
|
mtd->height = 2;
|
||||||
|
} else
|
||||||
|
mtd->height = screen_size_y(s);
|
||||||
}
|
}
|
||||||
if (mtd->height < 10)
|
|
||||||
mtd->height = screen_size_y(s);
|
|
||||||
if (screen_size_y(s) - mtd->height < 2)
|
if (screen_size_y(s) - mtd->height < 2)
|
||||||
mtd->height = screen_size_y(s);
|
mtd->height = screen_size_y(s);
|
||||||
}
|
}
|
||||||
@ -510,7 +530,7 @@ mode_tree_build(struct mode_tree_data *mtd)
|
|||||||
mode_tree_set_current(mtd, tag);
|
mode_tree_set_current(mtd, tag);
|
||||||
|
|
||||||
mtd->width = screen_size_x(s);
|
mtd->width = screen_size_x(s);
|
||||||
if (mtd->preview)
|
if (mtd->preview != MODE_TREE_PREVIEW_OFF)
|
||||||
mode_tree_set_height(mtd);
|
mode_tree_set_height(mtd);
|
||||||
else
|
else
|
||||||
mtd->height = screen_size_y(s);
|
mtd->height = screen_size_y(s);
|
||||||
@ -742,8 +762,11 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mtd->preview == MODE_TREE_PREVIEW_OFF)
|
||||||
|
goto done;
|
||||||
|
|
||||||
sy = screen_size_y(s);
|
sy = screen_size_y(s);
|
||||||
if (!mtd->preview || sy <= 4 || h <= 4 || sy - h <= 4 || w <= 4)
|
if (sy <= 4 || h < 2 || sy - h <= 4 || w <= 4)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
line = &mtd->line_list[mtd->current];
|
line = &mtd->line_list[mtd->current];
|
||||||
@ -1041,7 +1064,7 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
|
|||||||
if (x > mtd->width || y > mtd->height) {
|
if (x > mtd->width || y > mtd->height) {
|
||||||
if (*key == KEYC_MOUSEDOWN3_PANE)
|
if (*key == KEYC_MOUSEDOWN3_PANE)
|
||||||
mode_tree_display_menu(mtd, c, x, y, 1);
|
mode_tree_display_menu(mtd, c, x, y, 1);
|
||||||
if (!mtd->preview)
|
if (mtd->preview == MODE_TREE_PREVIEW_OFF)
|
||||||
*key = KEYC_NONE;
|
*key = KEYC_NONE;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -1232,9 +1255,19 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
|
|||||||
PROMPT_NOFORMAT, PROMPT_TYPE_SEARCH);
|
PROMPT_NOFORMAT, PROMPT_TYPE_SEARCH);
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'v':
|
||||||
mtd->preview = !mtd->preview;
|
switch (mtd->preview) {
|
||||||
|
case MODE_TREE_PREVIEW_OFF:
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_BIG;
|
||||||
|
break;
|
||||||
|
case MODE_TREE_PREVIEW_NORMAL:
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_OFF;
|
||||||
|
break;
|
||||||
|
case MODE_TREE_PREVIEW_BIG:
|
||||||
|
mtd->preview = MODE_TREE_PREVIEW_NORMAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
mode_tree_build(mtd);
|
mode_tree_build(mtd);
|
||||||
if (mtd->preview)
|
if (mtd->preview != MODE_TREE_PREVIEW_OFF)
|
||||||
mode_tree_check_selected(mtd);
|
mode_tree_check_selected(mtd);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
4
tmux.1
4
tmux.1
@ -2627,7 +2627,7 @@ specifies the format for each item in the list and
|
|||||||
.Fl K
|
.Fl K
|
||||||
a format for each shortcut key; both are evaluated once for each line.
|
a format for each shortcut key; both are evaluated once for each line.
|
||||||
.Fl N
|
.Fl N
|
||||||
starts without the preview.
|
starts without the preview or if given twice with the larger preview.
|
||||||
This command works only if at least one client is attached.
|
This command works only if at least one client is attached.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic choose-tree
|
.Ic choose-tree
|
||||||
@ -2711,7 +2711,7 @@ specifies the format for each item in the tree and
|
|||||||
.Fl K
|
.Fl K
|
||||||
a format for each shortcut key; both are evaluated once for each line.
|
a format for each shortcut key; both are evaluated once for each line.
|
||||||
.Fl N
|
.Fl N
|
||||||
starts without the preview.
|
starts without the preview or if given twice with the larger preview.
|
||||||
.Fl G
|
.Fl G
|
||||||
includes all sessions in any session groups in the tree rather than only the
|
includes all sessions in any session groups in the tree rather than only the
|
||||||
first.
|
first.
|
||||||
|
Loading…
Reference in New Issue
Block a user