Mercurial > dotfiles
comparison .zfun/async @ 497:2ea29b487b06
zsh: update async to 1.8.5
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Tue, 29 Sep 2020 11:11:09 -0400 |
parents | d3d52766cfcd |
children |
comparison
equal
deleted
inserted
replaced
496:1944a98a6774 | 497:2ea29b487b06 |
---|---|
1 #!/usr/bin/env zsh | 1 #!/usr/bin/env zsh |
2 | 2 |
3 # | 3 # |
4 # zsh-async | 4 # zsh-async |
5 # | 5 # |
6 # version: v1.8.4 | 6 # version: v1.8.5 |
7 # author: Mathias Fredriksson | 7 # author: Mathias Fredriksson |
8 # url: https://github.com/mafredri/zsh-async | 8 # url: https://github.com/mafredri/zsh-async |
9 # | 9 # |
10 | 10 |
11 typeset -g ASYNC_VERSION=1.8.4 | 11 typeset -g ASYNC_VERSION=1.8.5 |
12 # Produce debug output from zsh-async when set to 1. | 12 # Produce debug output from zsh-async when set to 1. |
13 typeset -g ASYNC_DEBUG=${ASYNC_DEBUG:-0} | 13 typeset -g ASYNC_DEBUG=${ASYNC_DEBUG:-0} |
14 | 14 |
15 # Execute commands that can manipulate the environment inside the async worker. Return output via callback. | 15 # Execute commands that can manipulate the environment inside the async worker. Return output via callback. |
16 _async_eval() { | 16 _async_eval() { |
559 # Workaround for stderr in the main shell sometimes (incorrectly) being | 559 # Workaround for stderr in the main shell sometimes (incorrectly) being |
560 # reassigned to /dev/null by the reassignment done inside the async | 560 # reassigned to /dev/null by the reassignment done inside the async |
561 # worker. | 561 # worker. |
562 # See https://github.com/mafredri/zsh-async/issues/35. | 562 # See https://github.com/mafredri/zsh-async/issues/35. |
563 integer errfd=-1 | 563 integer errfd=-1 |
564 exec {errfd}>&2 | 564 |
565 # Redirect of errfd is broken on zsh 5.0.2. | |
566 if is-at-least 5.0.8; then | |
567 exec {errfd}>&2 | |
568 fi | |
565 | 569 |
566 # Make sure async worker is started without xtrace | 570 # Make sure async worker is started without xtrace |
567 # (the trace output interferes with the worker). | 571 # (the trace output interferes with the worker). |
568 [[ -o xtrace ]] && { | 572 [[ -o xtrace ]] && { |
569 has_xtrace=1 | 573 has_xtrace=1 |
570 unsetopt xtrace | 574 unsetopt xtrace |
571 } | 575 } |
572 | 576 |
573 zpty -b $worker _async_worker -p $$ $args 2>&$errfd | 577 if (( errfd != -1 )); then |
578 zpty -b $worker _async_worker -p $$ $args 2>&$errfd | |
579 else | |
580 zpty -b $worker _async_worker -p $$ $args | |
581 fi | |
574 local ret=$? | 582 local ret=$? |
575 | 583 |
576 # Re-enable it if it was enabled, for debugging. | 584 # Re-enable it if it was enabled, for debugging. |
577 (( has_xtrace )) && setopt xtrace | 585 (( has_xtrace )) && setopt xtrace |
578 exec {errfd}>& - | 586 (( errfd != -1 )) && exec {errfd}>& - |
579 | 587 |
580 if (( ret )); then | 588 if (( ret )); then |
581 async_stop_worker $worker | 589 async_stop_worker $worker |
582 return 1 | 590 return 1 |
583 fi | 591 fi |