diff options
author | 2022-10-03 21:42:20 +0530 | |
---|---|---|
committer | 2022-10-03 21:42:20 +0530 | |
commit | af120ab348f2e1a5a39dec035ed9dcf84189a64e (patch) | |
tree | 2a3aadd7ce1b7b771dfe3fe7c983569726c8d7ed /zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper | |
download | dotfiles-af120ab348f2e1a5a39dec035ed9dcf84189a64e.tar.gz dotfiles-af120ab348f2e1a5a39dec035ed9dcf84189a64e.tar.bz2 dotfiles-af120ab348f2e1a5a39dec035ed9dcf84189a64e.zip |
dotfiles
Diffstat (limited to 'zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper')
-rw-r--r-- | zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper b/zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper new file mode 100644 index 0000000..19c5ac8 --- /dev/null +++ b/zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper @@ -0,0 +1,40 @@ +emulate -L zsh + +zmodload zsh/curses + +test_fd0() { + true <&0 +} + +local restore=0 FD + +# Reattach to terminal +if [ ! -t 0 ]; then + # Check if can reattach to terminal in any way + if [[ ! -c /dev/tty && ! -t 2 ]]; then + echo "No terminal available (no /dev/tty and no terminal at stderr)" + return 1 + fi + + if test_fd0 2>/dev/null; then + exec {FD}<&0 + restore=2 + else + restore=1 + fi + + if [[ ! -c /dev/tty ]]; then + exec <&2 + else + exec </dev/tty + fi +fi + +# Run the command +"$@" + +# Restore FD state +(( restore == 1 )) && exec <&- +(( restore == 2 )) && exec <&$FD && exec {FD}<&- + +# vim: set filetype=zsh: |