diff --git a/pkg/omf/functions/cli/omf.cli.reload.fish b/pkg/omf/functions/cli/omf.cli.reload.fish new file mode 100644 index 0000000000000000000000000000000000000000..474622069b6572e10bb50e1a4883470c0a79cd1a --- /dev/null +++ b/pkg/omf/functions/cli/omf.cli.reload.fish @@ -0,0 +1,18 @@ +function omf.cli.reload + if not contains -- --force $argv + if count (jobs) >/dev/null ^&1 + __omf.cli.reload.job_warning + return 1 + end + end + omf.reload +end + +function __omf.cli.reload.job_warning + echo (set_color -u)"Reload aborted. There are background jobs:"(set_color normal) + echo + jobs + echo + echo "For your safety, finish all background jobs before reloading Oh My Fish." + echo "If you are absolutely sure of what you are doing, you can bypass this check using --force." +end diff --git a/pkg/omf/functions/cli/omf.cli.remove.fish b/pkg/omf/functions/cli/omf.cli.remove.fish index 56c12d75fcd114568d5137d3b5830af79c8ecc9a..dbbec72cc1b0905186c03f7a9bf0d1cb4efac785 100644 --- a/pkg/omf/functions/cli/omf.cli.remove.fish +++ b/pkg/omf/functions/cli/omf.cli.remove.fish @@ -7,6 +7,7 @@ function omf.cli.remove -a name switch $code case 0 echo (omf::em)"$name successfully removed."(omf::off) + omf.cli.reload case 1 echo (omf::err)"$name could not be removed."(omf::off) 1^&2 case 2 diff --git a/pkg/omf/functions/cli/omf.cli.update.fish b/pkg/omf/functions/cli/omf.cli.update.fish index b54b65431323de26bd70141f29fdd8c10a0b3ebc..6dd290901849d6b57bd9bf6b5c8ed19274459d3f 100644 --- a/pkg/omf/functions/cli/omf.cli.update.fish +++ b/pkg/omf/functions/cli/omf.cli.update.fish @@ -9,4 +9,6 @@ function omf.cli.update for package in (omf.packages.list --installed) omf.packages.update $package end + + omf.cli.reload end diff --git a/pkg/omf/functions/core/omf.reload.fish b/pkg/omf/functions/core/omf.reload.fish new file mode 100644 index 0000000000000000000000000000000000000000..55a0e5886adf8d7fe411dc39787075e8b8c32552 --- /dev/null +++ b/pkg/omf/functions/core/omf.reload.fish @@ -0,0 +1,11 @@ +function omf.reload -d "Reload fish process via exec(1), keeping some context" + set -q CI; and return 0 + + history --save + set -gx dirprev $dirprev + set -gx dirnext $dirnext + set -gx dirstack $dirstack + set -gx fish_greeting '' + + exec fish +end diff --git a/pkg/omf/functions/omf.fish b/pkg/omf/functions/omf.fish index dab97cb5e0f45cec3e61e9f590cc57e5d3d3f0cb..9acde503c164a60972c96e5876433e414f23b856 100644 --- a/pkg/omf/functions/omf.fish +++ b/pkg/omf/functions/omf.fish @@ -40,6 +40,9 @@ function omf -d "Oh My Fish" case "doctor" omf.cli.doctor + case "reload" + omf.cli.reload $arguments + case "i" "install" "get" omf.cli.install $arguments