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

Reply via email to