Thomas Adam <[email protected]> writes:
> This improves upon my original POC patch from the other day, to add in
> support for expanding/collapsing sessions in choose-tree.
Thanks, I like it. Two minor suggestions:
- the arrow keys are too far to reach for me, using Space to expand or
collapse the items would be nice. I implemented this in the following
patch, as a new toggle action.
- for the sake of novice users, maybe we could add some help text on the
first line, e.g. "Session list - Return to select, Space to expand or
collapse"
diff --git a/mode-key.c b/mode-key.c
index da068f1..dcbc63c 100644
--- a/mode-key.c
+++ b/mode-key.c
@@ -79,6 +79,7 @@ const struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
{ MODEKEYCHOICE_CHOOSE, "choose" },
{ MODEKEYCHOICE_COLLAPSE, "collapse" },
{ MODEKEYCHOICE_COLLAPSE_ALL, "collapse-all" },
+ { MODEKEYCHOICE_COLLAPSE_TOGGLE, "collapse-toggle" },
{ MODEKEYCHOICE_DOWN, "down" },
{ MODEKEYCHOICE_EXPAND, "expand" },
{ MODEKEYCHOICE_EXPAND_ALL, "expand-all" },
@@ -226,6 +227,7 @@ const struct mode_key_entry mode_key_vi_choice[] = {
{ KEYC_RIGHT, 0, MODEKEYCHOICE_EXPAND },
{ KEYC_LEFT | KEYC_CTRL,0, MODEKEYCHOICE_COLLAPSE_ALL },
{ KEYC_RIGHT | KEYC_CTRL,0,MODEKEYCHOICE_EXPAND_ALL },
+ { ' ', 0, MODEKEYCHOICE_COLLAPSE_TOGGLE },
{ 0, -1, 0 }
};
@@ -367,6 +369,7 @@ const struct mode_key_entry mode_key_emacs_choice[] = {
{ KEYC_RIGHT, 0, MODEKEYCHOICE_EXPAND },
{ KEYC_LEFT | KEYC_CTRL,0, MODEKEYCHOICE_COLLAPSE_ALL },
{ KEYC_RIGHT | KEYC_CTRL,0,MODEKEYCHOICE_EXPAND_ALL },
+ { ' ', 0, MODEKEYCHOICE_COLLAPSE_TOGGLE },
{ 0, -1, 0 }
};
diff --git a/tmux.h b/tmux.h
index 09cb0ae..bd2d52e 100644
--- a/tmux.h
+++ b/tmux.h
@@ -544,6 +544,7 @@ enum mode_key_cmd {
MODEKEYCHOICE_CHOOSE,
MODEKEYCHOICE_COLLAPSE,
MODEKEYCHOICE_COLLAPSE_ALL,
+ MODEKEYCHOICE_COLLAPSE_TOGGLE,
MODEKEYCHOICE_DOWN,
MODEKEYCHOICE_EXPAND,
MODEKEYCHOICE_EXPAND_ALL,
diff --git a/window-choose.c b/window-choose.c
index 77eba8f..5f7ee2f 100644
--- a/window-choose.c
+++ b/window-choose.c
@@ -377,6 +377,7 @@ window_choose_expand(struct window_pane *wp, struct session
*s, u_int pos)
for (i = items; i > 0; i--)
{
item = &ARRAY_ITEM(&data->list_orig, i);
+ item->state |= TREE_EXPANDED;
wcd = item->wcd;
if (s == wcd->tree_session) {
@@ -481,6 +482,15 @@ window_choose_key(struct window_pane *wp, unused struct
session *sess, int key)
case MODEKEYCHOICE_EXPAND_ALL:
window_choose_expand_all(wp);
break;
+ case MODEKEYCHOICE_COLLAPSE_TOGGLE:
+ item = &ARRAY_ITEM(&data->list, data->selected);
+ if (item->state & TREE_EXPANDED)
+ window_choose_collapse(wp, item->wcd->tree_session);
+ else
+ window_choose_expand(wp, item->wcd->tree_session,
+ data->selected);
+ window_choose_redraw_screen(wp);
+ break;
case MODEKEYCHOICE_UP:
if (items == 0)
break;
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users