zsh-workers
 help / color / mirror / Atom feed
* [BUG] zle_highlight fails to highlight suffix added with compadd -R
@ 2021-09-07 10:05 Marlon Richert
  2021-09-07 22:19 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Marlon Richert @ 2021-09-07 10:05 UTC (permalink / raw)
  To: Zsh hackers list

The following completion functions give different highlighting results
in the zle:

_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.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] zle_highlight fails to highlight suffix added with compadd -R
  2021-09-07 10:05 [BUG] zle_highlight fails to highlight suffix added with compadd -R Marlon Richert
@ 2021-09-07 22:19 ` Bart Schaefer
  2021-09-08  2:13   ` Mikael Magnusson
  0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2021-09-07 22:19 UTC (permalink / raw)
  To: Marlon Richert; +Cc: Zsh hackers list

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;
 }


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] zle_highlight fails to highlight suffix added with compadd -R
  2021-09-07 22:19 ` Bart Schaefer
@ 2021-09-08  2:13   ` Mikael Magnusson
  2021-09-08  2:43     ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Mikael Magnusson @ 2021-09-08  2:13 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: Marlon Richert, Zsh hackers list

On 9/8/21, Bart Schaefer <schaefer@brasslantern.com> wrote:
> 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?

I didn't make any attempt to understand the code, but can you usefully
specify both -r and -R? (it doesn't appear to be an error).

-- 
Mikael Magnusson


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] zle_highlight fails to highlight suffix added with compadd -R
  2021-09-08  2:13   ` Mikael Magnusson
@ 2021-09-08  2:43     ` Bart Schaefer
  0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2021-09-08  2:43 UTC (permalink / raw)
  To: Mikael Magnusson; +Cc: Marlon Richert, Zsh hackers list

On Tue, Sep 7, 2021 at 7:13 PM Mikael Magnusson <mikachu@gmail.com> wrote:
>
> On 9/8/21, Bart Schaefer <schaefer@brasslantern.com> wrote:
> > Does anyone remember why suffixfunclen needed to
> > be stored separately?
>
> I didn't make any attempt to understand the code, but can you usefully
> specify both -r and -R? (it doesn't appear to be an error).

You mean in the same call to compadd ?  Sure.  The argument passed to
-r just determines when to invoke the function, it doesn't provide a
different suffix.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-09-08  2:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-07 10:05 [BUG] zle_highlight fails to highlight suffix added with compadd -R Marlon Richert
2021-09-07 22:19 ` Bart Schaefer
2021-09-08  2:13   ` Mikael Magnusson
2021-09-08  2:43     ` Bart Schaefer

zsh-workers

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.vuxu.org/zsh-workers

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 zsh-workers zsh-workers/ https://inbox.vuxu.org/zsh-workers \
		zsh-workers@zsh.org
	public-inbox-index zsh-workers

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.zsh.workers


code repositories for the project(s) associated with this inbox:

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

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git