aboutsummaryrefslogtreecommitdiffstats
path: root/pw.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-04-30 14:29:13 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-04-30 14:29:13 -0700
commitf46115c8fbef8b68bdb426cf7d25ba84b864cdbe (patch)
treedeadd70bdfb8eda7c37eb1f329fcb23580af016b /pw.c
parent76d200dd7f1266bb274d5d792d7645b456bc581a (diff)
downloadpw-f46115c8fbef8b68bdb426cf7d25ba84b864cdbe.tar.gz
pw-f46115c8fbef8b68bdb426cf7d25ba84b864cdbe.tar.bz2
pw-f46115c8fbef8b68bdb426cf7d25ba84b864cdbe.zip
New a, d commands to advance or delay triggers.
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;