Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Feature Patch: Use completion to view parameter values
- X-seq: zsh-workers 48337
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
- Cc: Zsh hackers list <zsh-workers@xxxxxxx>, Marlon Richert <marlon.richert@xxxxxxxxx>
- Subject: Re: Feature Patch: Use completion to view parameter values
- Date: Tue, 30 Mar 2021 07:41:05 +0200
- Archived-at: <https://zsh.org/workers/48337>
- Archived-at: <http://www.zsh.org/sympa/arcsearch_id/zsh-workers/2021-03/CAHYJk3Tfb0xqP_QoAGoTOd3RKOqDLW9o8Zs7MepkCtkEv-8MJw%40mail.gmail.com>
- In-reply-to: <20210329181452.GB6044@tarpaulin.shahaf.local2>
- List-id: <zsh-workers.zsh.org>
- References: <CAHLkEDtf6JqSn86duXjEuQFXGKJn8COcxnEypoOUV=V63SsdPQ@mail.gmail.com> <20210329073913.GP18178@tarpaulin.shahaf.local2> <CAHLkEDuHjvRhXhcX4iqZ0mJuAabcpSnRikunLeK9Y2Ucjhf0oQ@mail.gmail.com> <20210329171120.GA6044@tarpaulin.shahaf.local2> <CAH+w=7bD9bA-AKV4NoQ9YZVM_VpSMgX8GcLjSVhgP06KYokM_A@mail.gmail.com> <20210329181452.GB6044@tarpaulin.shahaf.local2>
On 3/29/21, Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx> wrote:
> Bart Schaefer wrote on Mon, Mar 29, 2021 at 10:20:08 -0700:
>> On Mon, Mar 29, 2021 at 10:11 AM Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>
>> wrote:
>> >
>> > I think that's right. -workers@: Is it possible for a non-PM_SPECIAL
>> > parameter have a custom getfn?
>>
>> Only with the zsh/param/private module, I think, and in that case the
>> getfn is just a wrapper around the default and doesn't add any
>> side-effects.
>
> Thanks, Bart.
>
> And as to $AUTOINCREMENT, this isn't the first time I mentioned it as
> a hypothetical, so I'm going to go ahead and post it here. I suspect
> people from the future will use this for something-or-other.
>
> Works as you'd expect:
> .
> % echo $AUTOINCREMENT $AUTOINCREMENT
> 0 1
> %
>
> And in Marlon's patch with the ${(t)…*special*} exclusion bypassed:
> .
> % zstyle \* extra-verbose yes
> % AUTOFOO=42
> % echo $AUTO<TAB><TAB>
> AUTOFOO -- 42 AUTOINCREMENT -- 2
> AUTOFOO -- 42 AUTOINCREMENT -- 4
>
> Yes, it does actually increment the variable twice, probably because the
> _parameters patch uses both ${(t)${(P)}} and then ${(P)}, and the former
> does an increment too:
> .
> % echo $AUTOINCREMENT ${(tP)AUTOINCREMENT} $AUTOINCREMENT
> 0 array-special 2
> %
>
> I'm not proposing to commit $AUTOINCREMENT.
>
> Cheers,
>
> Daniel
>
> P.S. Another similar example is Perl's magic flip-flop variable:
> «perl -E 'say --$| for (1..10)'»
>
>
> diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c
> index ef9148d7b..179ac068e 100644
> --- a/Src/Modules/parameter.c
> +++ b/Src/Modules/parameter.c
> @@ -2136,6 +2136,24 @@ scanpmusergroups(UNUSED(HashTable ht), ScanFunc func,
> int flags)
> }
>
>
> +/* Functions for the AUTOINCREMENT special parameter. */
> +
> +static zlong autoincrement = 0;
> +
> +static zlong
> +autoincrementgetfn(UNUSED(Param pm))
> +{
> + return autoincrement++;
> +}
> +
> +static void
> +autoincrementsetfn(UNUSED(Param pm), zlong value)
> +{
> + autoincrement = value;
> +}
If someone hypothetically wanted to use this, this (eg, the static
zlong autoincrement variable) should either be a zulong, or
autoincrementgetfn should check for wrapping, otherwise this is
undefined behavior (hypothetically) (unless we use -fwrapv, but I
don't think we do).
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author