summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2022-04-18 19:30:42 -0400
committerJakob Kaivo <jkk@ung.org>2022-04-18 19:30:42 -0400
commit9d1acdec46cffad622984cb4fc69932c4ea0cb07 (patch)
tree02997e37769283b1b3dde0598c1322e923551bf8
parent484d07c159795b3e885709d66cce71d63c183797 (diff)
get closer to fixing scrolling
-rw-r--r--more.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/more.c b/more.c
index 8b67540..574db4f 100644
--- a/more.c
+++ b/more.c
@@ -21,7 +21,7 @@ enum {
CTRL_U = 0x15,
};
-void man_refresh(struct more_file *mf)
+static void man_refresh(struct more_file *mf)
{
for (size_t i = mf->topline; i < mf->topline + LINES - 1; i++) {
/* FIXME: account for long lines */
@@ -34,12 +34,12 @@ void man_refresh(struct more_file *mf)
}
}
-void man_scroll(struct more_file *mf, int count, int multiple)
+static void man_scroll(struct more_file *mf, int count, int multiple)
{
int by = count ? count * multiple : multiple;
- scrl(by);
if (by < 0) {
+ scrl(by);
if ((size_t)(-by) > mf->topline) {
mf->topline = 0;
} else {
@@ -59,7 +59,7 @@ void man_scroll(struct more_file *mf, int count, int multiple)
refresh();
}
-void mark(struct more_file *mf)
+static void mark(struct more_file *mf)
{
int c = getch();
if (islower(c)) {
@@ -67,7 +67,7 @@ void mark(struct more_file *mf)
}
}
-void jump(struct more_file *mf)
+static void jump(struct more_file *mf)
{
int c = getch();
if (islower(c)) {
@@ -104,7 +104,7 @@ static int more(const char *path)
case 'f':
case CTRL_F:
if (count == 0) {
- count = LINES;
+ count = LINES - 1;
}
man_scroll(&mf, count, 1);
break;
@@ -112,13 +112,13 @@ static int more(const char *path)
case 'b':
case CTRL_B:
if (count == 0) {
- count = LINES;
+ count = LINES - 1;
}
man_scroll(&mf, count, -1);
break;
case ' ':
- count = count ? count : LINES;
+ count = count ? count : LINES - 1;
/* FALLTHRU */
case 'j':
case '\n':
@@ -131,17 +131,17 @@ static int more(const char *path)
case 'd':
case CTRL_D:
- man_scroll(&mf, count, LINES / 2);
+ man_scroll(&mf, count, (LINES - 1) / 2);
break;
case 's':
count = count ? count : 1;
- man_scroll(&mf, LINES + count, 1);
+ man_scroll(&mf, LINES - 1 + count, 1);
break;
case 'u':
case CTRL_U:
- man_scroll(&mf, count, -LINES / 2);
+ man_scroll(&mf, count, -(LINES - 1) / 2);
break;
case 'G':