mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 09:39:52 +08:00
87428672d8
In73f344f41b
, we allowed autoloaded functions to be deleted. For some reason, funcsave immediately deletes the function it creates. This previously did very little, since the function would immediately be re-autoloaded, but with the fix for73f344f41b
the function gets tombstoned. So the effect is that funcsave makes the function disappear! This simply removes the erase call, which dates back to fish 1.x.
44 lines
868 B
Fish
44 lines
868 B
Fish
|
|
function funcsave --description "Save the current definition of all specified functions to file"
|
|
|
|
if count $argv >/dev/null
|
|
switch $argv[1]
|
|
case -h --h --he --hel --help
|
|
__fish_print_help funcsave
|
|
return 0
|
|
end
|
|
else
|
|
printf (_ "%s: Expected function name\n") funcsave
|
|
__fish_print_help funcsave
|
|
return 1
|
|
end
|
|
|
|
set -l res 0
|
|
|
|
set -l configdir ~/.config
|
|
if set -q XDG_CONFIG_HOME
|
|
set configdir $XDG_CONFIG_HOME
|
|
end
|
|
|
|
for i in $configdir $configdir/fish $configdir/fish/functions
|
|
if not test -d $i
|
|
if not command mkdir $i >/dev/null
|
|
printf (_ "%s: Could not create configuration directory\n") funcsave
|
|
return 1
|
|
end
|
|
end
|
|
end
|
|
|
|
for i in $argv
|
|
if functions -q -- $i
|
|
functions -- $i > $configdir/fish/functions/$i.fish
|
|
else
|
|
printf (_ "%s: Unknown function '%s'\n") funcsave $i
|
|
set res 1
|
|
end
|
|
end
|
|
|
|
return $res
|
|
end
|
|
|