Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: coloring substitution seems to eat next line.

On Thu, Nov 10, 2022 at 10:42 PM Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:
> On 2022-11-10 12:22, Bart Schaefer wrote:
> >
> > Most of the time you want the parens when assigning all the elements
> > of an array at once.  You should not use the parens for anything
> > that's meant to be a single string (or number).
> Slowly I figure out what's really going on and don't have to rely on
> rote copying of syntax.
> > which should never appear except inside a function, and should only
> > appear at the beginning of the function and not inside a loop.
> Heavy duty diagnostic stuff it seems.
> > $~foo (or ${~foo} means that the value of $foo should be interpreted
> > as a glob pattern rather than as a literal string.
> Ah!  When you type it in there verbatim it seems to always be the
> pattern, but as a variable who's to say that the intention is?  So some
> way of making it explicit avoids semantic confusion.  That's robust, I
> like it.  One more little thing:
> string="${cc[$aa]/*(#i)$filter*/}"
> if [[ "$string" ]]; then
> cc[aa]=''
> else
> cc[$aa]=${cc[$aa]/(#b)($~zsh_case${filter})/$'\e['$color;1m${match[1]}$'\e[0m'}

If you look back, you can find in my answers a way to:

1. Remove all elements of an array that don't match a pattern. It has this form:


2. Perform a replacement in all elements of an array. Like this:


Perhaps now you have enough familiarity with the syntax to see how it works.

You can save a tremendous amount of time by reading the official guide
and the reference. Set aside an evening or two and read them from
start to end. Exploring a language as a science project is a great way
to get started but at some point you'll become more efficient by
reading the blueprint. After that the language becomes an artifact
rather than a blackbox.


Messages sorted by: Reverse Date, Date, Thread, Author