summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2010-02-01 22:15:51 +0000
committernicm <nicm@openbsd.org>2010-02-01 22:15:51 +0000
commit4db190b11814537fe2e4ee6efeea99e66676e1ab (patch)
tree662bfeb8e21dcc6ac1f80abab30ff859b92ffa21
parent- add and enable puc(4) (only com, i didn't test lpt) (diff)
downloadwireguard-openbsd-4db190b11814537fe2e4ee6efeea99e66676e1ab.tar.xz
wireguard-openbsd-4db190b11814537fe2e4ee6efeea99e66676e1ab.zip
Add scroll-up/scroll-down for choose/more mode, from Micah Cowan.
-rw-r--r--usr.bin/tmux/mode-key.c12
-rw-r--r--usr.bin/tmux/tmux.h4
-rw-r--r--usr.bin/tmux/window-choose.c35
-rw-r--r--usr.bin/tmux/window-more.c4
4 files changed, 47 insertions, 8 deletions
diff --git a/usr.bin/tmux/mode-key.c b/usr.bin/tmux/mode-key.c
index c231f03ae70..1b4cf9de227 100644
--- a/usr.bin/tmux/mode-key.c
+++ b/usr.bin/tmux/mode-key.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mode-key.c,v 1.29 2010/01/27 23:26:14 nicm Exp $ */
+/* $OpenBSD: mode-key.c,v 1.30 2010/02/01 22:15:51 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -69,6 +69,8 @@ struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
{ MODEKEYCHOICE_DOWN, "down" },
{ MODEKEYCHOICE_PAGEDOWN, "page-down" },
{ MODEKEYCHOICE_PAGEUP, "page-up" },
+ { MODEKEYCHOICE_SCROLLDOWN, "scroll-down" },
+ { MODEKEYCHOICE_SCROLLUP, "scroll-up" },
{ MODEKEYCHOICE_UP, "up" },
{ 0, NULL }
@@ -145,14 +147,20 @@ struct mode_key_tree mode_key_tree_vi_edit;
/* 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 }
@@ -248,9 +256,11 @@ const struct mode_key_entry mode_key_emacs_choice[] = {
{ '\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 }
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index ff317275d3f..477c1bb74c7 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.200 2010/01/27 20:18:52 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.201 2010/02/01 22:15:51 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -442,6 +442,8 @@ enum mode_key_cmd {
MODEKEYCHOICE_DOWN,
MODEKEYCHOICE_PAGEDOWN,
MODEKEYCHOICE_PAGEUP,
+ MODEKEYCHOICE_SCROLLDOWN,
+ MODEKEYCHOICE_SCROLLUP,
MODEKEYCHOICE_UP,
/* Copy keys. */
diff --git a/usr.bin/tmux/window-choose.c b/usr.bin/tmux/window-choose.c
index d6c6669f5ae..023ec35e013 100644
--- a/usr.bin/tmux/window-choose.c
+++ b/usr.bin/tmux/window-choose.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window-choose.c,v 1.14 2010/01/11 23:46:22 nicm Exp $ */
+/* $OpenBSD: window-choose.c,v 1.15 2010/02/01 22:15:51 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -225,16 +225,41 @@ window_choose_key(struct window_pane *wp, unused struct client *c, int key)
}
data->selected++;
- if (data->selected >= data->top + screen_size_y(&data->screen))
- window_choose_scroll_down(wp);
- else {
+ if (data->selected < data->top + screen_size_y(s)) {
screen_write_start(&ctx, wp, NULL);
window_choose_write_line(
wp, &ctx, data->selected - data->top);
window_choose_write_line(
wp, &ctx, data->selected - 1 - data->top);
screen_write_stop(&ctx);
- }
+ } else
+ window_choose_scroll_down(wp);
+ break;
+ case MODEKEYCHOICE_SCROLLUP:
+ if (items == 0 || data->top == 0)
+ break;
+ if (data->selected == data->top + screen_size_y(s) - 1) {
+ data->selected--;
+ window_choose_scroll_up(wp);
+ screen_write_start(&ctx, wp, NULL);
+ window_choose_write_line(
+ wp, &ctx, screen_size_y(s) - 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)) {
diff --git a/usr.bin/tmux/window-more.c b/usr.bin/tmux/window-more.c
index 8fd7ab2dc5b..008dec75938 100644
--- a/usr.bin/tmux/window-more.c
+++ b/usr.bin/tmux/window-more.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window-more.c,v 1.11 2009/12/03 22:50:10 nicm Exp $ */
+/* $OpenBSD: window-more.c,v 1.12 2010/02/01 22:15:51 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -135,9 +135,11 @@ window_more_key(struct window_pane *wp, unused struct client *c, int key)
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: