mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 21:44:11 +01:00
30 lines
791 B
Plaintext
30 lines
791 B
Plaintext
|
# Call this from the preexec function like so:
|
||
|
# preexec() {
|
||
|
# getjobs "${(z)1}"
|
||
|
# }
|
||
|
setopt localoptions noshwordsplit noksharrays
|
||
|
local texts
|
||
|
case $1 in
|
||
|
fg|bg) shift; [[ -n $1 ]] || set -- %% ;;
|
||
|
%*) ;;
|
||
|
*) return 0 ;;
|
||
|
esac
|
||
|
repeat $#
|
||
|
do
|
||
|
# This case statement emulates jobs.c:getjob()
|
||
|
case $1 in
|
||
|
[\;\&\|]|\|\||\&\&) break ;;
|
||
|
%(|[%+])) 1=${(k)jobstates[(r)*:+:*]} ;;
|
||
|
%-) 1=${(k)jobstates[(r)*:-:*]} ;;
|
||
|
%<->) 1=${1#%} ;;
|
||
|
%[?]*) 1=${${(Ok)jobtexts[(R)*${1#%[?]}*]}[1]} ;;
|
||
|
*) 1=${${(Ok)jobtexts[(R)$1*]}[1]} ;;
|
||
|
esac
|
||
|
[[ -n $1 ]] && texts=($texts ${jobtexts[$1]})
|
||
|
shift
|
||
|
done
|
||
|
# Remove the "-s" below if you'd prefer that this just report
|
||
|
# what jobs are being affected rather than modify the history
|
||
|
(( $#texts )) && print -s ${(j:; :)texts} "$*"
|
||
|
return 0
|