Zsh Mailing List Archive
Messages sorted by:
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: <firstname.lastname@example.org>
- List-help: <mailto:email@example.com>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:firstname.lastname@example.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <email@example.com>
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
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
} 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
print -l -v stuff one two three four
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: