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

Re: [BUG] zle_highlight fails to highlight suffix added with compadd -R



On Tue, Sep 7, 2021 at 3:07 AM Marlon Richert <marlon.richert@xxxxxxxxx> wrote:
>
> _tst() { compadd -S '<SUFFIX>' -q -- '' }
> _tst() { compadd -S '<SUFFIX>' -r '' -- '' }
> _tst() { compadd -S '<SUFFIX>' -R '' -- '' }
>
> With the first two functions, <SUFFIX> correctly gets highlighted as
> autoremovable. However, with the third function, <SUFFIX> does not get
> highlighted, even though it is autoremovable.

-R is supposed to be followed by the name of a function.  You gave it
the empty string.  That should probably have been an error right off
the bat, but it does mean the suffix can't possibly be autoremoved.

However, the same highlight behavior occurs even if you do supply a
working subroutine.  Does anyone remember why suffixfunclen needed to
be stored separately?

diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index 612ac2138..eba28d1ec 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -1508,9 +1508,6 @@ static struct suffixset *suffixlist;
 /**/
 static char *suffixfunc;

-/* Length associated with the suffix function */
-static int suffixfunclen;
-
 /* Whether to remove suffix on uninsertable characters */
 /**/
 int suffixnoinsrem;
@@ -1611,7 +1608,7 @@ makesuffixstr(char *f, char *s, int n)
     if (f) {
        zsfree(suffixfunc);
        suffixfunc = ztrdup(f);
-       suffixfunclen = n;
+       suffixlen = n;
     } else if (s) {
        int inv, i, z = 0;
        ZLE_STRING_T ws, lasts, wptr;
@@ -1685,7 +1682,7 @@ iremovesuffix(ZLE_INT_T c, int keep)
                unmetafy_line();
            }

-           sprintf(buf, "%d", suffixfunclen);
+           sprintf(buf, "%d", suffixlen);
            addlinknode(args, suffixfunc);
            addlinknode(args, buf);

@@ -1800,5 +1797,5 @@ fixsuffix(void)
        suffixlist = next;
     }

-    suffixfunclen = suffixnoinsrem = suffixlen = 0;
+    suffixnoinsrem = suffixlen = 0;
 }




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