aboutsummaryrefslogtreecommitdiffstats
path: root/pw.c
diff options
context:
space:
mode:
Diffstat (limited to 'pw.c')
-rw-r--r--pw.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/pw.c b/pw.c
index 4c25464..81494de 100644
--- a/pw.c
+++ b/pw.c
@@ -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;