From 1a4194f1764f165b927e78cc730569ee9845874e Mon Sep 17 00:00:00 2001 From: Bart Schaefer Date: Thu, 5 Apr 2001 18:50:45 +0000 Subject: Write history entries for jobs resumed with fg/bg; from users/3795, plus a couple of minor bugfixes. --- Functions/Misc/getjobs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Functions/Misc/getjobs (limited to 'Functions/Misc/getjobs') diff --git a/Functions/Misc/getjobs b/Functions/Misc/getjobs new file mode 100644 index 000000000..0ac2972ff --- /dev/null +++ b/Functions/Misc/getjobs @@ -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 -- cgit 1.4.1