diff options
Diffstat (limited to 'pw.c')
-rw-r--r-- | pw.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -909,6 +909,34 @@ int main(int argc, char **argv) cmdbuf[1] = 0; curcmd = cmdbuf; break; + case 'a': case 'd': + if ((stat & (stat_htmode | stat_ttmode))) { + int step = ((((stat & stat_htmode) && ch == 'a') || + ((stat & stat_ttmode) && ch == 'd')) + ? -1 : 1); + + if (cmdcount == UINT_MAX) + cmdcount = 1; + + if (step < 0) { + for (; cmdcount && !triglist[0]; cmdcount --) { + memmove(triglist, triglist + 1, + (maxtrig - 1) * sizeof *triglist); + triglist[maxtrig - 1] = 0; + } + } else if (nlines <= maxtrig) { + for (; (cmdcount && + !triglist[nlines - 1] && + !triglist[maxtrig - 1]); + cmdcount --) + { + memmove(triglist + 1, triglist, + (maxtrig - 1) * sizeof *triglist); + triglist[0] = 0; + } + } + } + break; case '+': if (ws.ws_row && maxlines >= ws.ws_row - 1) { break; |