Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm
Precedence: bulk
X-No-Archive: yes
List-Id: Zsh Workers List <zsh-workers.zsh.org>
List-Post: <mailto:zsh-workers@zsh.org>
List-Help: <mailto:zsh-workers-help@zsh.org>
X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_PASS
	autolearn=ham autolearn_force=no version=3.4.1
X-Injected-Via-Gmane: http://gmane.org/
To: zsh-workers@zsh.org
From: Thilo Six <zsh@xk2c.de>
Subject: Re: [PATCH] allopt() and question
Date: Tue, 10 May 2016 20:55:55 +0200
Lines: 153
Message-ID: <ngtarr$r90$1@ger.gmane.org>
References: <nggnqs$q8i$1@ger.gmane.org>
 <CAKc7PVCyLYSu72NEqgV+CwfALNz2y6C-wsEyXcCJh_oE6oEbhw@mail.gmail.com>
 <572C697B.9010607@xk2c.de>
Mime-Version: 1.0
Content-Type: multipart/mixed;
 boundary="------------010300010002010302000306"
X-Complaints-To: usenet@ger.gmane.org
X-Gmane-NNTP-Posting-Host: p5de5bc07.dip0.t-ipconnect.de
In-Reply-To: <572C697B.9010607@xk2c.de>
X-Seq: zsh-workers 38465

--------------010300010002010302000306
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hello

>>> % builtin set -o | command grep -E '(\<monitor\>|\<zle\>)'
>>> monitor off
>>> zle off
>>
>> This will start separate process for the first thing in pipeline. The
>> last thing is run in current shell. Which is cool for me, 
> 
> Now that you mention it i can remeber to have read about that. Back then a bash
> user where this is not the default. But iirc they have nowadays a option for it.
> Still to me this seem not to be the whole story.
> For one it only occurs with only some specific shell options and second:
> 
> % foo="$(builtin set -o)"
> % echo $foo | command grep -E '(\<monitor\>|\<zle\>)'
> monitor               off
> zle                   off
> % allopt '(\<monitor\>|\<zle\>)'
> monitor               on
> zle                   on
> 
> Or am i missing s.th.?

i have been working on making the patch better. During that i noticed
this does work as expected:
    for i in ${OPT_NAMES_ALL} ; do OPT_ALL+=($i ${options[$i]}) ; done

This does not:
    for i in ${OPT_NAMES_ALL} ; do OPT_ALL+=($i ${options[$i]}) ; done | while

So it seems as i allready thought that Zsh is reseting some options when inside
a pipe. Same for 'set -o' and 'setopt' by the way.

Now to the "improvements"-
Meantime i have learned about v and k modifiers which saves a for loop.

The main point i did not like about the previous version was code duplication.
The original version of allopt used a function for that.

There are two reasons why i did went the other approach first:
1)
I often fire up a new instance enter some chars and hit <Tab> just to check if
that command exists already. Mostly in cases where i write new functions to
prevent name clashes.
Function definitions inside functions are hidden from the shell unless the outer
function is run once. So this potentially calls then for name clashes.

2)
One thing i haven't verified yet is, if a local PARAMATER in the outer function
is avail to the inner defined function.
If so that would be nice. If Not that would have reduced code duplication at the
end and doubled it at start of the function where the PARAMETERs are defined.

Actually there is way to have both, or better yet one without the other.
See attached.


All of this is TTBOMK @ $EPOCHSECONDS.


Final: I attach a plain autoload func file. If you are actually interested i
produce a proper patch.


OT:

One last thing i want to say if i am allowed:
When one searches around the web after zsh one of the top most named things is:
what one can put into his PS1.
That i nice actually.
Also modifiers are great.

But if i have to name my top most Zsh killer feature it would be this tiny
little sentence which is easly overlooked:

      One commonly encountered difference is that variables substituted  onto
      the  command line are not split into words.

White-listing of splitting is so much more naturally then black-listing it.

THANK you so much for making a sensible shell!


And now i shut up. ;)

Nice day everyone!



kind regards,

     Thilo









--------------010300010002010302000306
Content-Type: text/plain; charset=UTF-8;
 name="allopt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="allopt"

IyB2aW06IHRzPTg6c3c9NDpzdHM9NDpldDpmdD16c2g6CiMga2F0ZTogYnl0ZS1vcmRlci1t
YXJrZXIgZmFsc2U7IGR5bmFtaWMtd29yZC13cmFwIGZhbHNlOyBpbmRlbnQtbW9kZSBub3Jt
YWw7IGluZGVudC1wYXN0ZWQtdGV4dCB0cnVlOyBpbmRlbnQtd2lkdGggNDsga2VlcC1leHRy
YS1zcGFjZXMgZmFsc2U7IG5ld2xpbmUtYXQtZW9mIHRydWU7IHJlbW92ZS10cmFpbGluZy1z
cGFjZXMgYWxsOyByZXBsYWNlLXRhYnMgdHJ1ZTsgcmVwbGFjZS10YWJzLXNhdmUgdHJ1ZTsg
c2hvdy10YWJzIHRydWU7IHNtYXJ0LWhvbWUgdHJ1ZTsgc3ludGF4IFpzaDsgdGFiLXdpZHRo
IDg7IHdvcmQtd3JhcCBmYWxzZTsKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0
aW9uIGxpc3RzIG9wdGlvbnMgd2l0aCB0aGUgbm8ncyBpbiBmcm9udCByZW1vdmVkIGZvcgoj
IGltcHJvdmVkIGNvbXByZWhlbnNpb24sIGkuZS4gYG5vcmNzIG9mZicgYmVjb21lcyBgcmNz
IG9uJy4KIyBUaGUgZm9ybWF0IGlzIG90aGVyd2lzZSBsaWtlIHRoYXQgd2l0aCBga3Nob3B0
aW9ucHJpbnQnIHNldCwKIyBpLmUuIHlvdSBjYW4gc2VlIGFsbCBvcHRpb25zIHdoZXRoZXIg
b24gb3Igb2ZmLgojIEl0IGNhbiB0YWtlIGEgbGlzdCBvZiBvcHRpb24gbmFtZXMgb3IgcGFy
dHMgdGhlcmVvZiB0byBzZWFyY2ggZm9yCiMgdmlhIGVncmVwLgojCiMgV3JpdHRlbiBieSBT
d2V0aCBDaGFuZHJhbW91bGkgd2l0aCBoYWNrcyBieSBCYXJ0IFNjaGFlZmVyLgojIHVwZGF0
ZWQgYnkgVGhpbG8gU2l4CgojIGFsbG9wdCgpIHsKICAgIGxvY2FsICAgIE9QVF9OQU1FIE9Q
VF9WQUxVRSBMRU5HVEggaQogICAgbG9jYWwgLWEgT1BUX05BTUVTX0FMTAogICAgbG9jYWwg
LUEgT1BUX0FMTAogICAgT1BUX05BTUVTX0FMTD0oJHsob2tAKW9wdGlvbnN9KQoKICAgICMg
aHR0cDovL3pzaC5zb3VyY2Vmb3JnZS5uZXQvR3VpZGUvenNoZ3VpZGUwNS5odG1sCiAgICBM
RU5HVEg9JCgoICR7IyR7T1BUX05BTUVTX0FMTFsocikkeyhsLiR7IyR7KE9AKU9QVF9OQU1F
U19BTEwvLz8vWH1bMV19Li4/Lil9XX19ICsgMSApKQoKICAgICMjIyBYWFggbm90ZToKICAg
ICMgICBtYWtlIGEgYmFja3VwIG9mICR7KEApb3B0aW9uc30KICAgICMgICB0aGlzIG5lZWRz
IHRvIGJlIGRvbmUgYmVjYXVzZSBvdGhlcndpc2UKICAgICMgICB0aGUgbGlzdGluZyBpcyBp
bmFjY3VyYXQgZS5nLiAnbW9uaXRvcicgYW5kICd6bGUnIGFyZSBhbHdheXMgb2ZmCiAgICAj
ICAgdGhlIHNldCBidWlsdGluIHRyZWF0cyB0aGVtIHNwZWNpYWwgd2l0aGluIGEgcGlwZS4g
Y29tcGFyZSB0aGlzOgogICAgIyAgICUgYnVpbHRpbiBzZXQgLW8KICAgICMgICAgICAgd2l0
aAogICAgIyAgICUgYnVpbHRpbiBzZXQgLW8gfCBjb21tYW5kIGdyZXAgLUUgJyhcPG1vbml0
b3JcPnxcPHpsZVw+KScKICAgICMKICAgIE9QVF9BTEw9KCR7KGt2QClvcHRpb25zfSkKCiAg
ICB7CiAgICAgICAgZm9yIGkgaW4gJHtPUFRfTkFNRVNfQUxMfSA7IGRvIGVjaG8gIiR7aX0g
JHtPUFRfQUxMWyRpXX0iIDsgZG9uZSB8IHdoaWxlIHJlYWQgT1BUX05BTUUgT1BUX1ZBTFVF
IDsgZG8KICAgICAgICAgICAgaWYgW1sgJHtPUFRfTkFNRSNub30gIT0gJHtPUFRfTkFNRX0g
XV0gOyB0aGVuCiAgICAgICAgICAgICAgICBPUFRfVkFMVUU9JHsoTCkkeyR7T1BUX1ZBTFVF
OnMvb24vT0ZGfTpzL29mZi9vbn19CiAgICAgICAgICAgICAgICBPUFRfTkFNRT0ke09QVF9O
QU1FI25vfQogICAgICAgICAgICBmaQogICAgICAgICAgICBlY2hvICIkeyhyOiR7TEVOR1RI
fTopT1BUX05BTUV9ICR7T1BUX1ZBTFVFfSIKICAgICAgICBkb25lCiAgICB9IHwgewogICAg
ICAgIGlmIFtbIC1uICR7Kn0gXV0gOyB0aGVuCiAgICAgICAgICAgIGVncmVwICR7KGoufC4p
JHskeyR7KEwpQH0jbm99Ly9bLV9dL319CiAgICAgICAgZWxzZQogICAgICAgICAgICBjYXQK
ICAgICAgICBmaQogICAgfQojIH0KCg==
--------------010300010002010302000306--

