'Misfeature' fix for eval function - make it force job control when in interactive mode, in order to make commands that expect to control the terminal happy

darcs-hash:20071006102326-75c98-b168d709d54edb21c478ec2d69420468a2c08da1.gz
This commit is contained in:
liljencrantz 2007-10-06 20:23:26 +10:00
parent 188f0454b7
commit 9299515f3e

View File

@ -1,4 +1,26 @@
function eval -S -d "Evaluate parameters as a command"
# If we are in an interactive shell, eval should enable full
# job control since it should behave like the real code was
# executed. If we don't do this, commands that expect to be
# used interactively, like less, wont work using eval.
set -l mode
if status --is-interactive-job-control
set mode interactive
else
if status --is-full-job-control
set mode full
else
set mode none
end
end
if status --is-interactive
status --job-control full
end
echo begin\; $argv \;end eval2_inner \<\&3 3\<\&- | . 3<&0
status --job-control $mode
end