Thomas Adam <tho...@xteddy.org> 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 tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users