mirror of
https://github.com/fish-shell/fish-shell
synced 2024-11-11 15:37:24 +00:00
Add funced function, which works like vared, but with functions
darcs-hash:20070422185539-ac50b-9080fb745cec45609e7e29971b55b96e073806e6.gz
This commit is contained in:
parent
cb179c448b
commit
dd48de068d
1 changed files with 39 additions and 0 deletions
39
share/functions/funced.fish
Normal file
39
share/functions/funced.fish
Normal 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
|
||||
|
Loading…
Reference in a new issue