zsh-users
 help / color / mirror / code / Atom feed
From: "Anthony Heading" <ajrh@ajrh.net>
To: zsh-users@zsh.org
Subject: view onto command pipeline?
Date: Sat, 16 Jul 2022 12:15:48 -0400	[thread overview]
Message-ID: <28c00da7-cfdd-4f58-a539-8deebbe5dfa5@www.fastmail.com> (raw)

I'm trying to wrap 'git' in a shell function to better anticipate when I want colour output.  Which is probably something like "when run from the command line and outputting to a tty or piped a pager, but not when piped to anything else".

The condition seems to make this difficuult post-shell;  while most (all?) of the coloured command support an isatty() test, the traditional ways of commandeering that with pty pairs or LD_PRELOAD or whatever seem no use by themselves without knowing more about the pipeline.   I vaguely built a solution by ferreting about in /proc and using lsof to follow the stdout chain to identify a pager, but that feels misguided.

Is there a zsh way to solve this?  Perhaps just by pattern matching on the command buffer to see if it has "| less" toward the end?  I couldn't find any shell variables that show the current pipeline string,  also found history appears to be written too late to introspect that?

I'd be fine to wrap the pager as well, if there is any way to convey some flag backwards up the pipeline...  but I think by the time that is evaluated everything is running totally concurrently in different subshells, so probably that can't work.






             reply	other threads:[~2022-07-16 16:17 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-16 16:15 Anthony Heading [this message]
2022-07-16 21:30 ` Bart Schaefer
2022-07-20 11:23   ` Anthony Heading
2022-07-20 11:37     ` Dominik Vogt
2022-07-20 12:22       ` Vincent Bernat
2022-07-20 12:35         ` Dominik Vogt
2022-07-20 19:07           ` Lawrence Velázquez
2022-07-21  0:15       ` Anthony Heading
2022-07-21  1:35         ` Lawrence Velázquez
2022-07-21  2:11           ` Anthony Heading
2022-07-21  3:15             ` Lawrence Velázquez
2022-07-21  6:43             ` Dominik Vogt
2022-08-04 21:12             ` Felipe Contreras
2022-07-20 19:27     ` Phil Pennock
2022-07-21  0:18       ` Anthony Heading

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=28c00da7-cfdd-4f58-a539-8deebbe5dfa5@www.fastmail.com \
    --to=ajrh@ajrh.net \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).