zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Marlon Richert <marlon.richert@gmail.com>
Cc: Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: [BUG] zle_highlight fails to highlight suffix added with compadd -R
Date: Tue, 7 Sep 2021 15:19:36 -0700	[thread overview]
Message-ID: <CAH+w=7Y0yT7d+HBuZ37dWGfSf_CQJfHp5Z9h9d9WTuCgRL_Kow@mail.gmail.com> (raw)
In-Reply-To: <CAHLkEDs6wmFE+gPXoJUuiVBHXX9d6umbms53tK65KnDsSFBugg@mail.gmail.com>

On Tue, Sep 7, 2021 at 3:07 AM Marlon Richert <marlon.richert@gmail.com> 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;
 }


  reply	other threads:[~2021-09-07 22:20 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-07 10:05 Marlon Richert
2021-09-07 22:19 ` Bart Schaefer [this message]
2021-09-08  2:13   ` Mikael Magnusson
2021-09-08  2:43     ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAH+w=7Y0yT7d+HBuZ37dWGfSf_CQJfHp5Z9h9d9WTuCgRL_Kow@mail.gmail.com' \
    --to=schaefer@brasslantern.com \
    --cc=marlon.richert@gmail.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).