commit 4ae2a4ff3a376d8f04b13f455454a358d3fe90a6
parent 140241e1d4dde2bde6380a3be653db8da18edd9a
Author: ssnf <ssnf@ssnf.xyz>
Date: Wed, 29 Jan 2025 00:37:22 +0000
simplify pline()
Diffstat:
M | sim.c | | | 53 | +++++++++++++++++++++++------------------------------ |
1 file changed, 23 insertions(+), 30 deletions(-)
diff --git a/sim.c b/sim.c
@@ -879,37 +879,30 @@ paste(int arg)
static void
pline(int arg)
{
- ulong i, j, c, l;
-
- for (l = f->dot.p1 = 0; f->dot.p1 < f->dot.p0; ++l) {
- for (;f->dot.p1 + 1 < f->s.n && f->s.s[f->dot.p1] != '\n';
- ++f->dot.p1
- );
- if (f->dot.p1 + 1 < f->s.n)
- ++f->dot.p1;
- }
- ++l;
- j = 1;
- if (!counter)
- counter = 1;
- for (;;) {
- for (i = 0; i < j * counter && i < w.wy/2 ; ++i)
- printf(CSI "%luH" EL "%lu", w.wy/2 + i, i ? i : l);
- switch (c = fgetc(stdin)) {
- case '!':
- ++j;
- break;
- case '+':
- ++counter;
- break;
- case '-':
- if (counter > 1)
- --counter;
- default:
- counter = 0;
- return;
+ ulong i, l, h, t;
+
+ l = 1;
+ t = fr->a[fr->cur].p0;
+ for (i = 0; i < t; ++i)
+ if (f->s.s[i] == '\n')
+ ++l;
+ h = w.wy / 2;
+ for (i = 0; i < h; ++i)
+ if (h - i < l) {
+ curmov(0, i);
+ printf("%4lu ", h - i);
}
- }
+ t = fr->n - fr->cur;
+ for (i = h + 1; i < w.wy; ++i)
+ if (i - h < t) {
+ curmov(0, i);
+ printf("%4lu ", i - h);
+ }
+ curmov(0, h);
+ printf("%-4lu ", l);
+ i = fgetc(stdin);
+ if (i != Esc)
+ ungetc(i, stdin);
}
static void