From: Roman Perepelitsa <roman.perepelitsa@gmail.com>
To: Bart Schaefer <schaefer@brasslantern.com>
Cc: Ray Andrews <rayandrews@eastlink.ca>, zsh-users@zsh.org
Subject: Re: path PATH
Date: Sun, 22 Jan 2023 20:31:31 +0100 [thread overview]
Message-ID: <CAN=4vMoqAbsozUgMyFqRB9xXQEo-iCSY1bBD8AnzmW-KdBGQ7w@mail.gmail.com> (raw)
In-Reply-To: <CAH+w=7Y6h56nojwv3x=NQyWOW-3jr3oVkMh4WBEUVZZjW6Fa1A@mail.gmail.com>
On Sun, Jan 22, 2023 at 8:20 PM Bart Schaefer <schaefer@brasslantern.com> wrote:
>
> On Sun, Jan 22, 2023 at 4:30 AM Roman Perepelitsa
> <roman.perepelitsa@gmail.com> wrote:
> >
> > describe-param() {
> > emulate -L zsh
> > [[ ARGC -eq 1 && -n $1 ]] || return
> > set -- "$@" ${(Pt)1}
> > [[ -$2- == *-hide-* ]] && return 1
>
> I'm curious why you chose to do this? The "hide" attribute means that
> a local does not preserve semantics of a special global, not that it's
> name is invisible.
That's a brainfart on my part. I even know what "hide" means but
somehow I've coded it as if it meant something else.
> > print -rn -- "$2 ${(q-)1}"
> > if [[ -$2- == *-hideval-* ]]; then
> > print
>
> I'd guess that Ray would prefer to see the value even if it's normally
> hidden by "set" but this is more consistent.
I mainly added this after seeing just how much output there is if you
print values of all parameters. Made me appreciate the fact that
`typeset` doesn't print those.
> > else
> > set -- "$@" ${(M)2:#(array|association)(|-*)}
> > print -r -- "=${3:+( }${(j: :)${(@qqq)${(@kv)${(@P)1}}}}${3:+ )}"
>
> If you leave off the "${(q-)1}" in the earlier "print -rn", I think this is just
> typeset -m ${(q)1}
Oh, I only now realized that the output of `typeset -m` isn't the same
as of `typeset -p` (I now see that you've pointed this out in earlier
emails but I missed it). This is definitely an improvement to the code
but makes me wonder whether it's a good thing that typeset behaves
this way. Intuitively, I expected that `typeset -m pat` is equivalent
to `typeset -p [params]..` where `[params]..` is the names of all
parameters matching `pat`.
> (where I'm not even sure the (q) is necessary).
I think it should be (b).
> describe-params () {
> emulate -L zsh -o extendedglob
> zmodload zsh/parameter
> set -- ${(ok)parameters[(I)${~${(j.|.)@}}]}
> while ((ARGC))
> do
> print -rn -- "${parameters[$1]} "
> if [[ -${parameters[$1]}- = *-hideval-* ]]
> then
> print -r -- ${(q-)1}
> else
> typeset -m ${(q)1}
> fi
> shift
> done
> }
This looks great! Simpler and more powerful than my version.
Roman.
next prev parent reply other threads:[~2023-01-22 19:32 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-20 21:57 Ray Andrews
2023-01-20 22:20 ` Bart Schaefer
2023-01-21 2:23 ` Ray Andrews
2023-01-21 6:11 ` Lawrence Velázquez
2023-01-21 15:18 ` Ray Andrews
2023-01-21 15:25 ` Roman Perepelitsa
2023-01-21 16:21 ` Ray Andrews
2023-01-21 16:38 ` Roman Perepelitsa
2023-01-21 16:54 ` Ray Andrews
2023-01-21 17:01 ` Roman Perepelitsa
2023-01-21 18:53 ` Ray Andrews
2023-01-21 19:09 ` Roman Perepelitsa
2023-01-21 20:50 ` Ray Andrews
2023-01-21 21:11 ` Roman Perepelitsa
2023-01-21 20:19 ` Bart Schaefer
2023-01-21 20:26 ` env arrays (was: Re: path PATH) zeurkous
2023-01-22 17:28 ` Bart Schaefer
2023-01-21 21:03 ` path PATH Ray Andrews
2023-01-21 21:52 ` Lawrence Velázquez
2023-01-22 0:42 ` Ray Andrews
2023-01-22 12:29 ` Roman Perepelitsa
2023-01-22 14:17 ` Ray Andrews
2023-01-22 16:15 ` Bart Schaefer
2023-01-22 17:23 ` Ray Andrews
2023-01-22 19:20 ` Bart Schaefer
2023-01-22 19:31 ` Roman Perepelitsa [this message]
2023-01-22 19:51 ` Bart Schaefer
2023-01-22 19:56 ` Roman Perepelitsa
2023-01-22 20:03 ` Bart Schaefer
2023-01-22 21:56 ` Bart Schaefer
2023-01-22 22:02 ` Roman Perepelitsa
2023-01-22 22:27 ` Bart Schaefer
2023-01-22 23:03 ` Ray Andrews
2023-01-22 20:12 ` Ray Andrews
2023-01-22 21:11 ` Bart Schaefer
2023-01-22 22:44 ` Ray Andrews
2023-01-22 23:35 ` Lawrence Velázquez
2023-01-22 23:58 ` Ray Andrews
2023-01-23 0:49 ` Lawrence Velázquez
2023-01-23 1:33 ` Bart Schaefer
2023-01-23 1:49 ` Lawrence Velázquez
2023-01-23 1:11 ` Bart Schaefer
2023-01-23 1:56 ` Ray Andrews
2023-01-23 2:59 ` Lawrence Velázquez
2023-01-23 3:47 ` Ray Andrews
2023-01-23 10:37 ` Roman Perepelitsa
2023-01-23 15:28 ` Ray Andrews
2023-01-23 15:40 ` zeurkous
2023-01-23 16:02 ` Ray Andrews
2023-01-23 16:25 ` zeurkous
2023-01-23 16:26 ` Bart Schaefer
2023-01-24 20:00 ` Ray Andrews
2023-01-24 20:42 ` Bart Schaefer
2023-01-24 20:50 ` Bart Schaefer
2023-01-24 20:54 ` Ray Andrews
2023-01-24 23:28 ` Ray Andrews
2023-01-24 23:42 ` Bart Schaefer
2023-01-25 0:14 ` Ray Andrews
2023-01-25 16:38 ` Ray Andrews
2023-01-25 16:43 ` Roman Perepelitsa
2023-01-25 16:56 ` Ray Andrews
2023-01-25 17:02 ` Roman Perepelitsa
2023-01-25 17:34 ` Ray Andrews
2023-01-25 17:37 ` Roman Perepelitsa
2023-01-25 18:26 ` Ray Andrews
2023-01-25 18:34 ` Roman Perepelitsa
2023-01-25 19:00 ` Ray Andrews
2023-01-26 2:13 ` Ray Andrews
2023-01-26 2:37 ` Bart Schaefer
2023-01-26 4:27 ` Ray Andrews
2023-01-26 20:26 ` Ray Andrews
2023-01-26 20:29 ` Roman Perepelitsa
2023-01-26 20:59 ` Ray Andrews
2023-01-26 21:17 ` Bart Schaefer
2023-01-26 21:41 ` Bart Schaefer
2023-01-26 21:44 ` Bart Schaefer
2023-01-26 22:36 ` Ray Andrews
2023-01-26 22:43 ` Bart Schaefer
2023-01-27 0:19 ` Ray Andrews
2023-01-27 3:36 ` Ray Andrews
2023-01-27 17:51 ` Ray Andrews
2023-01-27 20:45 ` Bart Schaefer
2023-01-27 21:09 ` Ray Andrews
2023-01-27 23:45 ` scowles
2023-01-28 0:12 ` Ray Andrews
2023-01-28 3:47 ` Bart Schaefer
2023-01-28 16:42 ` Ray Andrews
2023-01-28 22:51 ` Bart Schaefer
2023-01-29 2:30 ` Ray Andrews
2023-01-29 3:03 ` Bart Schaefer
2023-01-29 3:44 ` Ray Andrews
2023-01-29 4:35 ` Bart Schaefer
2023-01-29 15:54 ` Ray Andrews
2023-01-29 21:21 ` Lawrence Velázquez
2023-01-29 22:33 ` Ray Andrews
2023-01-29 22:42 ` Lawrence Velázquez
2023-01-30 0:42 ` Ray Andrews
2023-01-30 0:46 ` Ray Andrews
2023-01-30 4:41 ` Bart Schaefer
2023-01-30 5:16 ` Lawrence Velázquez
2023-01-30 6:55 ` Bart Schaefer
2023-01-30 14:40 ` Ray Andrews
2023-01-30 14:55 ` Ray Andrews
2023-01-30 14:56 ` Roman Perepelitsa
2023-01-30 15:56 ` Ray Andrews
2023-01-30 16:09 ` Roman Perepelitsa
2023-01-30 16:24 ` Bart Schaefer
2023-01-30 16:34 ` Roman Perepelitsa
2023-01-30 23:05 ` Ray Andrews
2023-01-30 17:50 ` Bart Schaefer
2023-01-31 0:42 ` Ray Andrews
2023-01-26 22:18 ` Ray Andrews
2023-01-25 22:18 ` Bart Schaefer
2023-01-25 23:10 ` Ray Andrews
2023-01-25 23:19 ` Bart Schaefer
2023-01-26 0:55 ` Ray Andrews
2023-01-22 19:52 ` Ray Andrews
2023-01-21 16:48 ` Bart Schaefer
2023-01-21 5:47 ` Lawrence Velázquez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAN=4vMoqAbsozUgMyFqRB9xXQEo-iCSY1bBD8AnzmW-KdBGQ7w@mail.gmail.com' \
--to=roman.perepelitsa@gmail.com \
--cc=rayandrews@eastlink.ca \
--cc=schaefer@brasslantern.com \
--cc=zsh-users@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).