2018-01-19 06:15:49 +08:00
|
|
|
function suspend --description 'Suspend the current shell.'
|
|
|
|
set -l options 'h/help' 'f/force'
|
|
|
|
argparse -n suspend --max-args=1 $options -- $argv
|
|
|
|
or return
|
|
|
|
|
|
|
|
if set -q _flag_help
|
2016-11-28 13:27:22 +08:00
|
|
|
__fish_print_help suspend
|
2018-01-19 06:15:49 +08:00
|
|
|
return 0
|
2016-10-18 06:30:28 +08:00
|
|
|
end
|
2018-01-19 06:15:49 +08:00
|
|
|
|
|
|
|
if not set -q _flag_force
|
|
|
|
and status is-login
|
|
|
|
and status is-interactive
|
|
|
|
|
|
|
|
echo 2>&1 'Refusing to suspend interactive login shell.'
|
|
|
|
echo 2>&1 'Use --force to override. This might hang your terminal.'
|
|
|
|
return 1
|
2015-08-07 00:49:02 +08:00
|
|
|
end
|
2018-01-19 06:15:49 +08:00
|
|
|
|
|
|
|
if status is-interactive
|
2018-03-09 17:56:19 +08:00
|
|
|
echo -ns 'Suspending ' $pid ': run'
|
|
|
|
echo -n (set_color --bold) 'kill -CONT' $pid (set_color normal)
|
2018-01-19 06:15:49 +08:00
|
|
|
echo 'from another terminal to resume'
|
|
|
|
end
|
|
|
|
|
|
|
|
# XXX always causes a zombie until one fg's when we do this:
|
2018-03-09 17:56:19 +08:00
|
|
|
kill -STOP $pid
|
2015-08-07 00:49:02 +08:00
|
|
|
end
|