Give #() commands a one second grace period where the output is empty
authornicm <nicm@openbsd.org>
Tue, 13 Jul 2021 22:09:29 +0000 (22:09 +0000)
committernicm <nicm@openbsd.org>
Tue, 13 Jul 2021 22:09:29 +0000 (22:09 +0000)
before telling the user they aren't doing anything. GitHub issue 2774.

usr.bin/tmux/format.c

index c701323..19ed932 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: format.c,v 1.287 2021/07/08 11:14:53 nicm Exp $ */
+/* $OpenBSD: format.c,v 1.288 2021/07/13 22:09:29 nicm Exp $ */
 
 /*
  * Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -371,9 +371,6 @@ format_job_get(struct format_expand_state *es, const char *cmd)
                fj->client = ft->client;
                fj->tag = ft->tag;
                fj->cmd = xstrdup(cmd);
-               fj->expanded = NULL;
-
-               xasprintf(&fj->out, "<'%s' not ready>", fj->cmd);
 
                RB_INSERT(format_job_tree, jobs, fj);
        }
@@ -402,11 +399,14 @@ format_job_get(struct format_expand_state *es, const char *cmd)
                }
                fj->last = t;
                fj->updated = 0;
-       }
+       } else if (fj->job != NULL && (t - fj->last) > 1 && fj->out == NULL)
+               xasprintf(&fj->out, "<'%s' not ready>", fj->cmd);
        free(expanded);
 
        if (ft->flags & FORMAT_STATUS)
                fj->status = 1;
+       if (fj->out == NULL)
+               return (xstrdup(""));
        return (format_expand1(&next, fj->out));
 }