sim

the sim text editor
git clone git://ssnf.xyz/sim
Log | Files | Refs | README

commit 4ae2a4ff3a376d8f04b13f455454a358d3fe90a6
parent 140241e1d4dde2bde6380a3be653db8da18edd9a
Author: ssnf <ssnf@ssnf.xyz>
Date:   Wed, 29 Jan 2025 00:37:22 +0000

simplify pline()

Diffstat:
Msim.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