diff options
Diffstat (limited to 'share/functions/eval.fish')
-rw-r--r-- | share/functions/eval.fish | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/share/functions/eval.fish b/share/functions/eval.fish index f54dee69..34c4e3aa 100644 --- a/share/functions/eval.fish +++ b/share/functions/eval.fish @@ -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 |