Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: print -v with an array
- X-seq: zsh-workers 39390
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: Re: PATCH: print -v with an array
- Date: Mon, 19 Sep 2016 13:30:47 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;        d=brasslantern-com.20150623.gappssmtp.com; s=20150623;        h=from:message-id:date:in-reply-to:comments:references:to:subject         :mime-version;        bh=TJ9WWB7cuu6WEhNfONEJxMoJz+t2zH+x8eBdgB9soTc=;        b=gV6CKqT1RV7hrP+TbmF1hlZ5GbRoX2zUVxrtGGatUMeOwrS1Ko9okUDgy5mz0WiZeT         K+fqb+e7g8L84YAM33800LGEg647+WSDsz5XJG34z6sesXv1ycm7PozzFgeQ4LZr7X2P         7SnAz2rYU1PwzX1IvM284bddgVPjK2lU5hQG9yXUn2dvhSaPyUcHLg0tQ/GHlPNWzuFe         mLcOW1fUr18ahLDuxt3CpQjnig6e36COcPymcj2u3bhDeAKmt8uBE3rgKFrl3X7NVOgn         rh6J0YnWb04FWujvtYwcd/Y8gQB6+WUuJea5asJX9zVVnI1wfBIEHx9dLH02ET80G78y         TgTQ==
- In-reply-to: <53992.1474303843@hydra.kiddle.eu>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <53992.1474303843@hydra.kiddle.eu>
On Sep 19,  6:50pm, Oliver Kiddle wrote:
}
} This patch makes print -v check if the variable is an array and if
} so, each reuse of the format string will correspond to a separate
} array element.  [...]  printf -v was added
} after zsh 5.2 was released so we've no compatibility concern there.
} [...]
} With a bit of rearrangment of bin_print it would now be possible
} to use this to allow more mixing of print options: -f with -c, for
} example.
When did we get the ability to do "print -z -f ..."  It might be
useful to have every reuse of the format add a separate entry to
the buffer stack.  Similarly for "print -s -f" and the history.
(Currently -S is silently ignored if -f is given.  Hmm.  Not sure
how that ought to work anyway.)
} Alternatives to checking if the variable is an array first would
} be a -A option or perhaps making the feature specific to print
} (which bash lacks) and not to printf.
I'd lean toward the -A option (especially if we alter -z / -s as I
just mentioned above).  Right now print -v / printf -v can create a
variable (for which BTW we are lacking a WARN_CREATE_GLOBAL warning),
it'd be nice to create it as an array.
I see you've implemented it by building up the array and then doing
the assignment all at once, rather than appending one element at a
time.  This makes it possible to use it for associative arrays, even
though it'd be a bit unusual to have the same format for both keys
and values.
} Back in January, when I wasn't paying attention, Bart wrote:
} > - Should "print -v foo bar" write the trailing newline into $foo ?  In the
} >   patch below I've chosen to make -n implicit with -v.  This does not
} >   involve "printf" which always needs an explicit newline.
} 
} I'd suggest we include the trailing newline if the -l option was
} specified. Seems it does get included with -c.
It's probably a mistake/oversight with -c.  The *embedded* newlines
always get included.  The question is whether
    print -l one two three four
and
    print -l -v stuff one two three four
    print "$stuff"
should produce identical output, rather than the latter having two
consecutive newlines at the end.  Whichever way we decide, the same
really should also apply to -c.
} With print -v the open_memstream stuff might see more usage. Should
} we be concerned with more efficient alternatives to the temporary
} file fallback?
I have no opinion here, except to grumble about ending up with three
or four #ifdef'd implementations of the same thing.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author