summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/Zle/compmatch.c1
-rw-r--r--Src/Zle/compresult.c4
-rw-r--r--Src/Zle/zle_tricky.c8
4 files changed, 7 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 0d4080e3a..d424d9a0b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2000-06-16  Sven Wischnowsky  <wischnow@zsh.org>
 
+	* 11939: Src/Zle/compmatch.c, Src/Zle/compresult.c, Src/Zle/zle_tricky.c:
+ 	allow completion after `a{{b,c},'; fix for closing brace
+ 	re-insertion when completing from both ends (CLF_MID)
+	
 	* 11938: Completion/Core/_description, Doc/Zsh/compsys.yo: enhance
  	ignore-line to ignore all/current/other word(s)
 	
diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c
index 180dce5df..130cb23b0 100644
--- a/Src/Zle/compmatch.c
+++ b/Src/Zle/compmatch.c
@@ -1608,6 +1608,7 @@ join_psfx(Cline ot, Cline nt, Cline *orest, Cline *nrest, int sfx)
 
 		continue;
 	    }
+	    o->llen = o->llen - ot->slen;
 	    join = 1; line = 0; slen = &(o->wlen); sstr = &(o->word);
 	}
 	if (join) {
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index 7e2e564f1..092971479 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -406,8 +406,8 @@ cline_str(Cline l, int ins, int *csp)
      * with missing characters, we take this, otherwise if we have a
      * prefix with missing characters, we take that, the same for a
      * suffix, and finally a place where the matches differ. */
-    ncs = (cbr >= 0 ? cbr :
-	   (mid >= 0 ? mid :
+    ncs = (mid >= 0 ? mid :
+	   (cbr >= 0 ? cbr :
 	    (pm >= 0 ? pm : (sm >= 0 ? sm : (d >= 0 ? d : cs)))));
 
     if (!ins) {
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index 11f86ba92..af0c43f57 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -1434,10 +1434,6 @@ get_comp_string(void)
 		    }
 		}
 	    } else if (p < curs) {
-		if (*p == Outbrace) {
-		    cant = 1;
-		    break;
-		}
 		if (*p == Inbrace) {
 		    if (bbeg) {
 			Brinfo new;
@@ -1474,10 +1470,6 @@ get_comp_string(void)
 		    hascom = 1;
 		}
 	    } else {
-		if (*p == Inbrace) {
-		    cant = 1;
-		    break;
-		}
 		if (p == curs) {
 		    if (bbeg) {
 			Brinfo new;