Add funced function, which works like vared, but with functions

darcs-hash:20070422185539-ac50b-9080fb745cec45609e7e29971b55b96e073806e6.gz
This commit is contained in:
axel 2007-04-23 04:55:39 +10:00
parent cb179c448b
commit dd48de068d

View file

@ -0,0 +1,39 @@
function funced --description "Edit function definition"
if test (count $argv) = 1
switch $argv
case '-h' '--h' '--he' '--hel' '--help'
__fish_print_help funced
return 0
case '-*'
printf (_ "%s: Unknown option %s\n") funced $argv
return 1
case '*'
set -l init ''
set -l tmp
# Shadow IFS here to avoid array splitting in command substitution
set -l IFS
if functions -q $argv
set init (functions $argv | fish_indent --no-indent)
end
set -l prompt 'printf "%s%s%s> " (set_color green) '$argv' (set_color normal)'
# Unshadow IFS since the fish_title breaks otherwise
set -e IFS
if read -p $prompt -c "$init" -s cmd
# Shadow IFS _again_ to avoid array splitting in command substitution
set -l IFS
eval (echo -n $cmd | fish_indent)
end
return 0
end
else
printf (_ '%s: Expected exactly one argument, got %s.\n\nSynopsis:\n\t%sfunced%s FUNCTION\n') funced (count $argv) (set_color $fish_color_command) (set_color $fish_color_normal)
end
end