summaryrefslogtreecommitdiffstats
path: root/src/init
diff options
context:
space:
mode:
authorHarald Hoyer <harald@hoyer.xyz>2020-12-02 07:29:02 +0100
committerGitHub <noreply@github.com>2020-12-02 00:29:02 -0600
commitf873a9820e2f24ceadddde82b942711f2dd235db (patch)
tree0801ce7d7671c050047a3fe3d70f1f4832edb66c /src/init
parentcf8a6d07389e6691ef9531daca66f266247a6187 (diff)
fix(bash): Fix background jobs with z/autojump (#1897)
Fixes issue where having z.sh or autojump hooked in bash would cause spurious background job indicators to appear.
Diffstat (limited to 'src/init')
-rw-r--r--src/init/starship.bash7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/init/starship.bash b/src/init/starship.bash
index a51b7c2dd..587315572 100644
--- a/src/init/starship.bash
+++ b/src/init/starship.bash
@@ -28,9 +28,12 @@ starship_preexec() {
# Will be run before the prompt is drawn
starship_precmd() {
+ local NUM_JOBS
# Save the status, because commands in this pipeline will change $?
STATUS=$?
+ NUM_JOBS=$(n=0; while read line; do [[ $line ]] && n=$((n+1));done <<< $(jobs -p) ; echo $n)
+
# Run the bash precmd function, if it's set. If not set, evaluates to no-op
"${starship_precmd_user_func-:}"
@@ -40,10 +43,10 @@ starship_precmd() {
if [[ $STARSHIP_START_TIME ]]; then
STARSHIP_END_TIME=$(::STARSHIP:: time)
STARSHIP_DURATION=$((STARSHIP_END_TIME - STARSHIP_START_TIME))
- PS1="$(::STARSHIP:: prompt --status=$STATUS --jobs="$(jobs -p | wc -l)" --cmd-duration=$STARSHIP_DURATION)"
+ PS1="$(::STARSHIP:: prompt --status=$STATUS --jobs="$NUM_JOBS" --cmd-duration=$STARSHIP_DURATION)"
unset STARSHIP_START_TIME
else
- PS1="$(::STARSHIP:: prompt --status=$STATUS --jobs="$(jobs -p | wc -l)")"
+ PS1="$(::STARSHIP:: prompt --status=$STATUS --jobs="$NUM_JOBS")"
fi
PREEXEC_READY=true # Signal that we can safely restart the timer
}