From e8da9999f61c7133b7387b9311068f432cbc8c47 Mon Sep 17 00:00:00 2001 From: Jan Kanis Date: Tue, 5 Feb 2013 20:43:40 +0100 Subject: [PATCH] optimize 'alias', fixing bug #486. Also some minor optimizations in 'type' --- share/functions/alias.fish | 17 ++++++++++++----- share/functions/type.fish | 8 ++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/share/functions/alias.fish b/share/functions/alias.fish index 4b72ecd2f..b6597ee26 100644 --- a/share/functions/alias.fish +++ b/share/functions/alias.fish @@ -35,11 +35,18 @@ function alias --description "Legacy function for creating shellscript functions return 1 end - switch (type -t $name) - case file - set prefix command - case builtin - set prefix builtin + + # If we are shadowing an existing (internal or external) command, set the + # correct prefix. If $name is different from the command in $body, we assume + # the user knows what he/she is doing. + + switch $body + case $name $name\ \* $name\t\* + if contains $name (builtin --names) + set prefix builtin + else if which $name >/dev/null + set prefix command + end end eval "function $name; $prefix $body \$argv; end" diff --git a/share/functions/type.fish b/share/functions/type.fish index 94c77efa7..6eb1a66f4 100644 --- a/share/functions/type.fish +++ b/share/functions/type.fish @@ -85,10 +85,10 @@ function type --description "Print the type of a command" functions $i case type - printf (_ 'function\n') + echo (_ 'function') case path - echo + echo end if test $selection != multi @@ -105,7 +105,7 @@ function type --description "Print the type of a command" printf (_ '%s is a builtin\n') $i case type - printf (_ 'builtin\n') + echo (_ 'builtin') case path echo @@ -126,7 +126,7 @@ function type --description "Print the type of a command" printf (_ '%s is %s\n') $i $path case type - printf (_ 'file\n') + echo (_ 'file') case path echo $path