summaryrefslogtreecommitdiffstats
path: root/window-copy.c
diff options
context:
space:
mode:
authornicm <nicm>2020-11-10 08:16:52 +0000
committernicm <nicm>2020-11-10 08:16:52 +0000
commitbbab5b7a30717c4455f7725e6adc364f6c274e7d (patch)
tree09e8dd3a680c50db0a6ce9a1ed6f5b319c0b7fe7 /window-copy.c
parentf1193b48910aed15a2c73cdb5784a26f2ea0f64c (diff)
Allow previous-word to scroll onto the first line, noticed by Anindya
Mukherjee.
Diffstat (limited to 'window-copy.c')
-rw-r--r--window-copy.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/window-copy.c b/window-copy.c
index 1dc0c293..6dc03b34 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -4526,10 +4526,11 @@ window_copy_cursor_previous_word_pos(struct window_mode_entry *wme,
const char *separators, int already, u_int *ppx, u_int *ppy)
{
struct window_copy_mode_data *data = wme->data;
- u_int px, py;
+ u_int px, py, hsize;
+ hsize = screen_hsize(data->backing);
px = data->cx;
- py = screen_hsize(data->backing) + data->cy - data->oy;
+ py = hsize + data->cy - data->oy;
/* Move back to the previous word character. */
if (already || window_copy_in_set(wme, px, py, separators)) {
@@ -4542,9 +4543,7 @@ window_copy_cursor_previous_word_pos(struct window_mode_entry *wme,
} else {
if (py == 0 ||
(data->cy == 0 &&
- (screen_hsize(data->backing) == 0 ||
- data->oy >=
- screen_hsize(data->backing) - 1)))
+ (hsize == 0 || data->oy > hsize - 1)))
goto out;
py--;
@@ -4573,10 +4572,11 @@ window_copy_cursor_previous_word(struct window_mode_entry *wme,
const char *separators, int already)
{
struct window_copy_mode_data *data = wme->data;
- u_int px, py;
+ u_int px, py, hsize;
+ hsize = screen_hsize(data->backing);
px = data->cx;
- py = screen_hsize(data->backing) + data->cy - data->oy;
+ py = hsize + data->cy - data->oy;
/* Move back to the previous word character. */
if (already || window_copy_in_set(wme, px, py, separators)) {
@@ -4588,14 +4588,11 @@ window_copy_cursor_previous_word(struct window_mode_entry *wme,
break;
} else {
if (data->cy == 0 &&
- (screen_hsize(data->backing) == 0 ||
- data->oy >=
- screen_hsize(data->backing) - 1))
+ (hsize == 0 || data->oy > hsize - 1))
goto out;
window_copy_cursor_up(wme, 0);
- py = screen_hsize(data->backing) + data->cy -
- data->oy;
+ py = hsize + data->cy - data->oy;
px = window_copy_find_length(wme, py);
/* Stop if separator at EOL. */