From a8983b3aa2ba431f58466bb205add96de7284f4f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 30 Apr 2022 12:31:16 -0700 Subject: Fix issues with the count prefix. - ambiguity with 0 command. - reset to UINT_MAX under right conditions. --- pw.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'pw.c') diff --git a/pw.c b/pw.c index 7a22523..a949617 100644 --- a/pw.c +++ b/pw.c @@ -881,10 +881,6 @@ int main(int argc, char **argv) stat |= stat_force; } break; - case '0': - hpos = 0; - stat |= stat_force; - break; case ' ': if ((stat & stat_eof) == 0) stat |= stat_susp; @@ -927,6 +923,13 @@ int main(int argc, char **argv) snapshot = resizebuf(snapshot, maxlines, maxlines + 1); } break; + case '0': + if (cmdcount == UINT_MAX) { + hpos = 0; + stat |= stat_force; + break; + } + // fallthrough default: if (isdigit(ch)) { if (cmdcount == UINT_MAX) @@ -934,6 +937,8 @@ int main(int argc, char **argv) cmdcount = (cmdcount * 10 + (ch - '0')) % 1000; } } + if (kbd_state == kbd_cmd && !isdigit(ch)) + cmdcount = UINT_MAX; break; case kbd_esc: if (ch == '[') { @@ -1057,7 +1062,7 @@ int main(int argc, char **argv) if (len == 1) { kbd_state = kbd_cmd; curcmd = 0; - cmdcount = UINT_MAX; + // cmdcount deliberately not reset to UNIT_MAX } else { cmdbuf[--len] = 0; } -- cgit v1.2.3