Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Patch 1/3: Fix prefix insertion logic




From 6a4f094ebd11e10a03d8c10016a0f6de392022ba Mon Sep 17 00:00:00 2001
From: Marlon Richert <marlon.richert@xxxxxxxx>
Date: Sat, 29 Apr 2023 19:25:37 +0300
Subject: [PATCH 1/3] 51641: Fix _prefix insertion logic

---
 Completion/Base/Completer/_prefix |  9 +--------
 Test/Y01completion.ztst           | 18 ++++++++++++++++++
 Test/comptest                     |  2 +-
 3 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/Completion/Base/Completer/_prefix b/Completion/Base/Completer/_prefix
index 74be5f47d..01739166e 100644
--- a/Completion/Base/Completer/_prefix
+++ b/Completion/Base/Completer/_prefix
@@ -49,14 +49,7 @@ for tmp in "$comp[@]"; do
     fi
 
     if [[ "$tmp" != _prefix ]] && "$tmp"; then
-      [[ compstate[nmatches] -gt 1 ]] && return 0
-      compadd -U -i "$IPREFIX" -I "$ISUFFIX" - "${compstate[unambiguous]%$suf}x"
-      compstate[list]=
-      if [[ -n $compstate[unambiguous] ]]; then
-        compstate[insert]=unambiguous
-      else
-        compstate[insert]=0
-      fi
+      compstate[to_end]=''
       return 0
     fi
     (( _matcher_num++ ))
diff --git a/Test/Y01completion.ztst b/Test/Y01completion.ztst
index f976f9f91..51e246307 100644
--- a/Test/Y01completion.ztst
+++ b/Test/Y01completion.ztst
@@ -63,6 +63,24 @@
 >NO:{file1}
 >NO:{file2}
 
+  comptesteval 'tst-insert() { compstate[insert]=1; compstate[list]= }'
+  comptesteval 'comppostfuncs=( tst-insert )'
+  comptest $': dir1\ebf\t'
+0:_prefix with compstate[insert]=1 does not move to end
+>line: {: file1}{dir1}
+
+  comptesteval 'unfunction tst-insert'
+  comptesteval 'comppostfuncs=()'
+  comptest $': dir1\ebf\t\t\t\t'
+0:_prefix inserts unambiguous and does not move to end
+>line: {: file}{dir1}
+>line: {: file}{dir1}
+>DESCRIPTION:{file}
+>FI:{file1}
+>FI:{file2}
+>line: {: file1}{dir1}
+>line: {: file2}{dir1}
+
   comptesteval $'zstyle -d \'*\' glob'
   comptesteval '_users () { compadd user1 user2 }'
   comptest $': ~\t\t\t\t\t'
diff --git a/Test/comptest b/Test/comptest
index 79c69979a..a57f4bcc4 100644
--- a/Test/comptest
+++ b/Test/comptest
@@ -40,7 +40,7 @@ KEYTIMEOUT=1
 setopt zle
 autoload -U compinit
 compinit -u
-zstyle ":completion:*" completer _expand _complete _ignored
+zstyle ":completion:*" completer _expand _complete _prefix _ignored
 zstyle ":completion:*:default" list-colors "no=<NO>" "fi=<FI>" "di=<DI>" "ln=<LN>" "pi=<PI>" "so=<SO>" "bd=<BD>" "cd=<CD>" "ex=<EX>" "mi=<MI>" "tc=<TC>" "sp=<SP>" "lc=<LC>" "ec=<EC>\n" "rc=<RC>"
 zstyle ":completion:*" group-name ""
 zstyle ":completion:*:messages" format "<MESSAGE>%d</MESSAGE>
-- 
2.39.2 (Apple Git-143)



Messages sorted by: Reverse Date, Date, Thread, Author