This patch adds support for Ctrl-up/Ctrl-down (and C-y/C-e for vi) to
choice-mode and output-mode. It also binds C-b/C-f to page-up/page-down
for those modes in the vi bindings.
-mjc
Index: mode-key.c
===================================================================
--- mode-key.c.orig
+++ mode-key.c
@@ -69,6 +69,8 @@
{ MODEKEYCHOICE_DOWN, "down" },
{ MODEKEYCHOICE_PAGEDOWN, "page-down" },
{ MODEKEYCHOICE_PAGEUP, "page-up" },
+ { MODEKEYCHOICE_SCROLLDOWN, "scroll-down" },
+ { MODEKEYCHOICE_SCROLLUP, "scroll-up" },
{ MODEKEYCHOICE_UP, "up" },
{ 0, NULL }
@@ -148,14 +150,20 @@
/* vi choice selection keys. */
const struct mode_key_entry mode_key_vi_choice[] = {
+ { '\002' /* C-b */, 0, MODEKEYCHOICE_PAGEUP },
{ '\003' /* C-c */, 0, MODEKEYCHOICE_CANCEL },
+ { '\005' /* C-e */, 0, MODEKEYCHOICE_SCROLLDOWN },
+ { '\006' /* C-f */, 0, MODEKEYCHOICE_PAGEDOWN },
+ { '\031' /* C-y */, 0, MODEKEYCHOICE_SCROLLUP },
{ '\r', 0, MODEKEYCHOICE_CHOOSE },
{ 'j', 0, MODEKEYCHOICE_DOWN },
{ 'k', 0, MODEKEYCHOICE_UP },
{ 'q', 0, MODEKEYCHOICE_CANCEL },
+ { KEYC_DOWN | KEYC_CTRL,0, MODEKEYCHOICE_SCROLLDOWN },
{ KEYC_DOWN, 0, MODEKEYCHOICE_DOWN },
{ KEYC_NPAGE, 0, MODEKEYCHOICE_PAGEDOWN },
{ KEYC_PPAGE, 0, MODEKEYCHOICE_PAGEUP },
+ { KEYC_UP | KEYC_CTRL, 0, MODEKEYCHOICE_SCROLLUP },
{ KEYC_UP, 0, MODEKEYCHOICE_UP },
{ 0, -1, 0 }
@@ -254,9 +262,11 @@
{ '\r', 0, MODEKEYCHOICE_CHOOSE },
{ 'q', 0, MODEKEYCHOICE_CANCEL },
{ 'v' | KEYC_ESCAPE, 0, MODEKEYCHOICE_PAGEUP },
+ { KEYC_DOWN | KEYC_CTRL,0, MODEKEYCHOICE_SCROLLDOWN },
{ KEYC_DOWN, 0, MODEKEYCHOICE_DOWN },
{ KEYC_NPAGE, 0, MODEKEYCHOICE_PAGEDOWN },
{ KEYC_PPAGE, 0, MODEKEYCHOICE_PAGEUP },
+ { KEYC_UP | KEYC_CTRL, 0, MODEKEYCHOICE_SCROLLUP },
{ KEYC_UP, 0, MODEKEYCHOICE_UP },
{ 0, -1, 0 }
Index: tmux.h
===================================================================
--- tmux.h.orig
+++ tmux.h
@@ -441,6 +441,8 @@
MODEKEYCHOICE_DOWN,
MODEKEYCHOICE_PAGEDOWN,
MODEKEYCHOICE_PAGEUP,
+ MODEKEYCHOICE_SCROLLDOWN,
+ MODEKEYCHOICE_SCROLLUP,
MODEKEYCHOICE_UP,
/* Copy keys. */
Index: window-choose.c
===================================================================
--- window-choose.c.orig
+++ window-choose.c
@@ -236,6 +236,35 @@
screen_write_stop(&ctx);
}
break;
+ case MODEKEYCHOICE_SCROLLUP:
+ if (items == 0 || data->top == 0)
+ break;
+ if (data->selected
+ == data->top + screen_size_y(&data->screen) - 1) {
+ data->selected--;
+ window_choose_scroll_up(wp);
+ screen_write_start(&ctx, wp, NULL);
+ window_choose_write_line(
+ wp, &ctx,
+ screen_size_y(&data->screen) - 1);
+ screen_write_stop(&ctx);
+ } else
+ window_choose_scroll_up(wp);
+ break;
+ case MODEKEYCHOICE_SCROLLDOWN:
+ if (items == 0 ||
+ data->top + screen_size_y(&data->screen) >= items)
+ break;
+ if (data->selected == data->top) {
+ data->selected++;
+ window_choose_scroll_down(wp);
+ screen_write_start(&ctx, wp, NULL);
+ window_choose_write_line(wp, &ctx, 0);
+ screen_write_stop(&ctx);
+ }
+ else
+ window_choose_scroll_down(wp);
+ break;
case MODEKEYCHOICE_PAGEUP:
if (data->selected < screen_size_y(s)) {
data->selected = 0;
Index: window-more.c
===================================================================
--- window-more.c.orig
+++ window-more.c
@@ -135,9 +135,11 @@
window_pane_reset_mode(wp);
break;
case MODEKEYCHOICE_UP:
+ case MODEKEYCHOICE_SCROLLUP:
window_more_scroll_up(wp);
break;
case MODEKEYCHOICE_DOWN:
+ case MODEKEYCHOICE_SCROLLDOWN:
window_more_scroll_down(wp);
break;
case MODEKEYCHOICE_PAGEUP:
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users