summaryrefslogtreecommitdiff
path: root/lib/async_prompt.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'lib/async_prompt.zsh')
-rw-r--r--lib/async_prompt.zsh12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/async_prompt.zsh b/lib/async_prompt.zsh
index c6d03328b..384e49d33 100644
--- a/lib/async_prompt.zsh
+++ b/lib/async_prompt.zsh
@@ -5,8 +5,8 @@
zmodload zsh/system
# For now, async prompt function handlers are set up like so:
-# First, define the async function handler and add the function name
-# to the _omz_async_functions array:
+# First, define the async function handler and register the handler
+# with _omz_register_handler:
#
# function _git_prompt_status_async {
# # Do some expensive operation that outputs to stdout
@@ -17,7 +17,7 @@ zmodload zsh/system
# which will show the output of "$_OMZ_ASYNC_OUTPUT[handler_name]":
#
# function git_prompt_status {
-# echo -n $_OMZ_ASYNC_OUTPUT[_git_prompt_status]
+# echo -n $_OMZ_ASYNC_OUTPUT[_git_prompt_status_async]
# }
#
# RPROMPT='$(git_prompt_status)'
@@ -43,6 +43,7 @@ function _omz_register_handler {
# Set up async handlers and callbacks
function _omz_async_request {
+ local -i ret=$?
typeset -gA _OMZ_ASYNC_FDS _OMZ_ASYNC_PIDS _OMZ_ASYNC_OUTPUT
# executor runs a subshell for all async requests based on key
@@ -83,6 +84,8 @@ function _omz_async_request {
builtin echo ${sysparams[pid]}
# Store handler name for callback
builtin echo $handler
+ # Set exit code for the handler if used
+ (exit $ret)
# Run the async function handler
$handler
)
@@ -138,3 +141,6 @@ function _omz_async_callback() {
_OMZ_ASYNC_FDS[$handler]=-1
_OMZ_ASYNC_PIDS[$handler]=-1
}
+
+autoload -Uz add-zsh-hook
+add-zsh-hook precmd _omz_async_request