summaryrefslogtreecommitdiffstats
path: root/zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper
diff options
context:
space:
mode:
authorLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2022-10-03 21:42:20 +0530
committerLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2022-10-03 21:42:20 +0530
commitaf120ab348f2e1a5a39dec035ed9dcf84189a64e (patch)
tree2a3aadd7ce1b7b771dfe3fe7c983569726c8d7ed /zsh/oh-my-zsh/plugins/zsh-navigation-tools/znt-usetty-wrapper
downloaddotfiles-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-wrapper40
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: