summaryrefslogtreecommitdiff
path: root/Completion/Base/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Utility')
-rw-r--r--Completion/Base/Utility/_call_program9
1 files changed, 6 insertions, 3 deletions
diff --git a/Completion/Base/Utility/_call_program b/Completion/Base/Utility/_call_program
index 95c761e65..9a44f2d8e 100644
--- a/Completion/Base/Utility/_call_program
+++ b/Completion/Base/Utility/_call_program
@@ -1,12 +1,15 @@
#autoload +X
-local tmp err_fd=-1
+local curcontext="${curcontext}" tmp err_fd=-1
local -a prefix
if [[ "$1" = -p ]]; then
shift
- zstyle -t ":completion:${curcontext}:${1}" gain-privileges &&
- prefix=( $_comp_priv_prefix )
+ if (( $#_comp_priv_prefix )); then
+ curcontext="${curcontext%:*}/${${(@M)_comp_priv_prefix:#^*[^\\]=*}[1]}:"
+ zstyle -t ":completion:${curcontext}:${1}" gain-privileges &&
+ prefix=( $_comp_priv_prefix )
+ fi
fi
if (( ${debug_fd:--1} > 2 )) || [[ ! -t 2 ]]