about summary refs log tree commit diff
path: root/Completion/Base
diff options
context:
space:
mode:
authorSven Wischnowsky <wischnow@users.sourceforge.net>2001-08-20 13:13:49 +0000
committerSven Wischnowsky <wischnow@users.sourceforge.net>2001-08-20 13:13:49 +0000
commit647674f6abe8e6fd01bb115af88b43304ab00025 (patch)
treee0d41c1a185226345a17ed6068fa3fc5d2e8d3b5 /Completion/Base
parent62451960a01a5818d99f00475b933f12f66fe0fb (diff)
downloadzsh-647674f6abe8e6fd01bb115af88b43304ab00025.tar.gz
zsh-647674f6abe8e6fd01bb115af88b43304ab00025.tar.xz
zsh-647674f6abe8e6fd01bb115af88b43304ab00025.zip
undo most of 15650, do that in shell code (15669)
Diffstat (limited to 'Completion/Base')
-rw-r--r--Completion/Base/Completer/_approximate11
1 files changed, 6 insertions, 5 deletions
diff --git a/Completion/Base/Completer/_approximate b/Completion/Base/Completer/_approximate
index 3ed8be730..39518803e 100644
--- a/Completion/Base/Completer/_approximate
+++ b/Completion/Base/Completer/_approximate
@@ -49,15 +49,16 @@ _tags corrections original
 
 if (( ! $+functions[compadd] )); then
   compadd() {
+    local ppre="$argv[(I)-p]"
+
     [[ ${argv[(I)-[a-zA-Z]#U[a-zA-Z]#]} -eq 0 &&
        "${#:-$PREFIX$SUFFIX}" -le _comp_correct ]] && return
 
-    ### This distinction doesn't seem to be needed anymore
-    # if [[ "$PREFIX" = \~*/* ]]; then
-    #   PREFIX="${PREFIX%%/*}/(#a${_comp_correct})${PREFIX#*/}"
-    # else
+    if [[ "$PREFIX" = \~* && ( ppre -eq 0 || "$argv[ppre+1]" != \~* ) ]]; then
+      PREFIX="~(#a${_comp_correct})${PREFIX[2,-1]}"
+    else
       PREFIX="(#a${_comp_correct})$PREFIX"
-    # fi
+    fi
 
     (( $_correct_group && $argv[(I)-*[JV]] )) &&
         _correct_expl[_correct_group]=${argv[(R)-*[JV]]}