Scroll by two less than the number of lines in the screen, like emacs, rather

than by the entire screen, to make it easier to pull things out from under the
line indicator. Suggested by claudio.
This commit is contained in:
Nicholas Marriott 2009-08-13 22:11:43 +00:00
parent 375be90fd1
commit 39154402e5
2 changed files with 24 additions and 8 deletions

View File

@ -130,11 +130,15 @@ window_copy_pageup(struct window_pane *wp)
{
struct window_copy_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
u_int n;
if (data->oy + screen_size_y(s) > screen_hsize(&wp->base))
n = 1;
if (screen_size_y(s) > 2)
n = screen_size_y(s) - 2;
if (data->oy + n > screen_hsize(&wp->base))
data->oy = screen_hsize(&wp->base);
else
data->oy += screen_size_y(s);
data->oy += n;
window_copy_update_selection(wp);
window_copy_redraw_screen(wp);
}
@ -167,6 +171,7 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
{
struct window_copy_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
u_int n;
switch (mode_key_lookup(&data->mdata, key)) {
case MODEKEYCOPY_CANCEL:
@ -188,10 +193,13 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
window_copy_pageup(wp);
break;
case MODEKEYCOPY_NEXTPAGE:
if (data->oy < screen_size_y(s))
n = 1;
if (screen_size_y(s) > 2)
n = screen_size_y(s) - 2;
if (data->oy < n)
data->oy = 0;
else
data->oy -= screen_size_y(s);
data->oy -= n;
window_copy_update_selection(wp);
window_copy_redraw_screen(wp);
break;

View File

@ -101,11 +101,15 @@ window_scroll_pageup(struct window_pane *wp)
{
struct window_scroll_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
u_int n;
if (data->oy + screen_size_y(s) > screen_hsize(&wp->base))
n = 1;
if (screen_size_y(s) > 2)
n = screen_size_y(s) - 2;
if (data->oy + n > screen_hsize(&wp->base))
data->oy = screen_hsize(&wp->base);
else
data->oy += screen_size_y(s);
data->oy += n;
window_scroll_redraw_screen(wp);
}
@ -130,6 +134,7 @@ window_scroll_key(struct window_pane *wp, unused struct client *c, int key)
{
struct window_scroll_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
u_int n;
switch (mode_key_lookup(&data->mdata, key)) {
case MODEKEYCOPY_CANCEL:
@ -151,10 +156,13 @@ window_scroll_key(struct window_pane *wp, unused struct client *c, int key)
window_scroll_pageup(wp);
break;
case MODEKEYCOPY_NEXTPAGE:
if (data->oy < screen_size_y(s))
n = 1;
if (screen_size_y(s) > 2)
n = screen_size_y(s) - 2;
if (data->oy < n)
data->oy = 0;
else
data->oy -= screen_size_y(s);
data->oy -= n;
window_scroll_redraw_screen(wp);
break;
default: