summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/Zle/complist.c10
-rw-r--r--Src/Zle/zle_misc.c2
2 files changed, 12 insertions, 0 deletions
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index 64d7e50ce..0e83cb2a2 100644
--- a/Src/Zle/complist.c
+++ b/Src/Zle/complist.c
@@ -2542,10 +2542,20 @@ domenuselect(Hookdef dummy, Chdata dat)
                 strncpy(zlemetaline, origline, l);
                 zlemetacs = origcs;
 
+		/*
+		 * Horrible quick fix:
+		 * we shouldn't need to metafy and unmetafy
+		 * quite as much.  If we kept unmetafied through
+		 * here we could fix up setmstatus to use unmetafied
+		 * as well.  This is the only use of setmstatus which
+		 * restores the line so that should be doable.
+		 */
+		unmetafy_line();
                 if (cmd == Th(z_selfinsert))
                     selfinsert(zlenoargs);
                 else
                     selfinsertunmeta(zlenoargs);
+		metafy_line();
 
                 saveline = (char *) zhalloc(zlemetall);
                 memcpy(saveline, zlemetaline, zlemetall);
diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index 48739e531..f4c32e454 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -42,6 +42,8 @@ doinsert(ZLE_STRING_T zstr, int len)
     int m = neg ? -zmult : zmult;    /* number of copies to insert */
     int count;
 
+    UNMETACHECK();
+
     iremovesuffix(c1, 0);
     invalidatelist();