On Mon, Jul 10, 2017 at 11:55:16PM +0200, Martin Ågren wrote:

> +void setup_auto_pager(const char *cmd, int def)
> +{
> +     if (use_pager != -1)
> +             return;

I think you probably also want to return early here if pager_in_use()
is true. If a script runs "git tag -l", you wouldn't want to start a new
pager when the outer script has already been paged (either via config,
or via "git -p").

> +     use_pager = check_pager_config(cmd);
> +
> +     if (use_pager == -1) {
> +             struct strbuf buf = STRBUF_INIT;
> +             size_t len;
> +
> +             strbuf_addstr(&buf, cmd);
> +             len = buf.len;
> +             while (use_pager == -1 && len--) {
> +                     if (buf.buf[len] == '.') {
> +                             strbuf_setlen(&buf, len);
> +                             use_pager = check_pager_config(buf.buf);
> +                     }
> +             }
> +             strbuf_release(&buf);
> +     }

This looks good. I wondered if we could fold this all into a single
loop, rather than having the extra check_pager_config() beforehand
(which confused me for a half-second at first). But I tried and I don't
think the result ended up any more readable.

-Peff

Reply via email to