1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-11-19 13:33:52 +01:00

Write history entries for jobs resumed with fg/bg; from users/3795, plus

a couple of minor bugfixes.
This commit is contained in:
Bart Schaefer 2001-04-05 18:50:45 +00:00
parent 62e9af7ce6
commit 1a4194f176

29
Functions/Misc/getjobs Normal file

@ -0,0 +1,29 @@
# 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