diff options
Diffstat (limited to 'Completion/Unix/Type/_absolute_command_paths')
-rw-r--r-- | Completion/Unix/Type/_absolute_command_paths | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Completion/Unix/Type/_absolute_command_paths b/Completion/Unix/Type/_absolute_command_paths index e9ab17023..0d52ff851 100644 --- a/Completion/Unix/Type/_absolute_command_paths +++ b/Completion/Unix/Type/_absolute_command_paths @@ -7,7 +7,9 @@ _hashed_absolute_command_paths() { integer ret=1 for i in $set_of_dirs_of_hashed_commands do - compadd -M "l:|=$i" "$expl[@]" -a 'commands[(R)${~i}[^/]#]' + local -a matches=( "${(@)commands[(R)${~i}[^/]#]}" ) + local -a descs=( $matches:t ) + compadd -M "l:|=$i" -d descs "$@" -a matches ret=0 done return ret @@ -16,7 +18,13 @@ _hashed_absolute_command_paths() { # This function completes absolute pathnames of executables, e.g., /etc/rc.local _typed-in_absolute_command_paths() { # TODO: the description "full path to an executable" and tag in the caller are ignored by _path_files - _path_files -/ -g '*(-*)' -P / -W / + if [[ -z $PREFIX ]]; then + _path_files -/ -g '*(-*)' -P / -W / + elif [[ $PREFIX[1] == / ]]; then + _path_files -/ -g '*(-*)' -W / + else + return 1 + fi } _absolute_command_paths() { |