From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by melb.werple.net.au (8.7.5/8.7.3/2) with ESMTP id RAA13857 for ; Fri, 21 Jun 1996 17:53:03 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id DAA25795; Fri, 21 Jun 1996 03:31:01 -0400 (EDT) Resent-Date: Fri, 21 Jun 1996 03:31:01 -0400 (EDT) From: "Bart Schaefer" Message-Id: <960621003054.ZM3580@candle.brasslantern.com> Date: Fri, 21 Jun 1996 00:30:52 -0700 In-Reply-To: Mark Borges "Re: zsh-2.6-beta21 released" (Jun 20, 3:03pm) References: Reply-To: schaefer@nbn.com X-Mailer: Z-Mail (4.0b.607 07jun96) To: Clive Messer , Mark Borges , zsh-workers@math.gatech.edu Subject: zsh.texi commentary (actually, HTML pages commentary) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"jIByW2.0.zI6.q-aon"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1393 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu On Jun 20, 3:03pm, Mark Borges wrote: } Subject: Re: zsh-2.6-beta21 released } } I've applied this patch and re-generated the html files via } texi2html-1.50. The URL is still } } http://www.mal.com/zsh/Doc/test/ } } where zsh.texi.gz is version 2.03. I think maybe it should be clearer in the documents that 2.03 is the version number of the document and not the version of zsh to which it refers. `Edition 2.0.3' on the TOC page is confusing. For the rest of these comments, I don't know which need to change the man pages, the FAQ, zsh.texi, and/or all of them; but they're all from reading the HTML at the above URL. I've scattered semi-related thoughts and commentary throughout, usually prefixed with "Aside:". Intro section: hasn't been a usable address for Paul since almost two years ago. He's now . Aside: Question about NO_RCS: Commands are first read from `/etc/zshenv'. If the -f flag is given or if the NO_RCS option is set within `/etc/zshenv', all other initialization files are skipped. Why doesn't NO_RCS in any init file stop reading of any files that would normally follow the one where it is set? Or does it, and the doc just doesn't explicitly say so? Spell checking still hasn't happened ... "defauly"? Shell Grammar section: A simple command is a sequence of optional parameter assignments followed by blank-separated words, ^^^^^ Should this read "whitespace" or some such? (Too early to mention $IFS.) Aside: What's the value of a command executed in the background? E.g. if false & then echo Hmmm & fi Is it always consistent? Precommand modifiers, `exec', should explain that the "parent" zsh is replaced by the exec'd command, as if zsh had exited and the command was run in its place. Spell checking again ... "anexternal" --> "an external". Almost all the complex command descriptions could be clarified. Example: (Existing text) if list then list [ elif list ; then list ] ... [ else list ] fi The if list is executed, and, if it returns a zero exit status, the then list is executed. Otherwise, the elif list is executed and, if its value is zero, the then list is executed. If each elif list returns nonzero, the else list is executed. (Better, I think) if list1 then list2 [ elif list3 then list4 ] ... [ else list5 ] fi First list1 is executed, and, if its value is zero (it returns a zero exit status), then list2 is executed. Otherwise, if any elif is present, list3 is executed, and, if its value is zero, then list4 is executed. There may be more than one elif, each of which is tried in turn. Finally, if an else is present, and if all the if or elif lists returned nonzero values, then list5 is executed. The others aren't quite as bad because they don't need to repeat any one term in so many different places, but "while" and "until" are similar. Further, the whole section could benefit from some vertical white space between defined terms. Looks like it's there in the source but gets squashed out when displayed. I suppose its a texi2html problem (some strategic
need to be output). Aside: "select" is pretty much useless for more than 200 words or so. I've got some scripts that examine the file system that sometimes come up with 1000+ possible choices. Anybody have any solutions? Aside: Why doesn't `foreach name ( word ... )' need CSH_JUNKIE_PARENS? Aside: That it is possible to `disable -r fi' without first disabling `if', scares the willies out of me. Simliarly for `done' and `esac'. Aside: Given the above behavior of `disable -r', it'd be nice to be able to get at the internal tokens for the disabled reserved words. E.g.: foo() { if true ; then echo This function keeps working ; fi } alias endif=fi disable -r fi bar() { if true ; then echo I wish this still worked ; endif } Maybe an option to the alias builtin? The paragraph on Comments still refers to HISTCHARS; it's now histchars. texi2html is still having problems with pairs of single quotes (''), rendering that as a double quote ("). Expansion section: Why doesn't this section order the explanations of the kinds of expansion in the same order in which they are listed as taking place? Or at least in some sensible order, such as alphabetical? I'd love it if there were more hrefs, e.g. from every reference to an option name to the description of that option, or from a builtin's name to its description. E.g., in the sentence: The PUSHD_MINUS option exchanges the effects of ~+ and ~- where they are followed by a number. It'd be great to be able to click on PUSHD_MINUS. Only the "expression" part of identifier=expression is expanded, right? If the option MAGIC_EQUAL_SUBST is set, any unquoted shell argument in the form identifier=expression becomes eligible for file expansion as described in the previous paragraph. Say so? Parameter expansion: Italics on usages of `name[@]' are not consistent. Typo in ${name:#pattern}, "the } flag" should probably be "the @ flag". ${^spec}, ${=spec}, and ${~spec} still say "Toggle ..."; they should say "Turn on ...", right? Also, more details of what `spec' may be would be nice; e.g., is there a difference between ${#${foo}} and ${#foo} ?? The following statement is false for ${name:#pattern}, is it not? If the colon is omitted from one of the above expressions containing a colon, then the shell only checks whether name is set or not, not whether it is null. There's something odd here: Arithmetic Expansion A string of the form $[exp] is substituted with the value of the arithmetic expression exp. exp is subjected to parameter expansion, command substitution and arithmetic expansion before ^^^^^^^^^^^^^^^^^^^^^^^^ it is evaluated. See section Arithmetic Evaluation. Is this wrong, or is it just a goofy way of saying that $[exp] can be nested? (Which doesn't seem to be true, so that's not it.) Aside: Filename generation: If you set both NULL_GLOB and NO_NOMATCH, which one wins? What the heck happened to NO_NOMATCH when the change was made to make the prefix "no" into a magic equivalent of "unsetopt"? `setopt nonomatch' should be the same as `unsetopt nomatch', but what about `setopt nomatch'?? Why isn't it `unsetopt match'? Gaahhh. Or did I completely misunderstand what that was all about? Why isn't ***/ mentioned anywhere? That's like **/ except it follows symlinks, correct? Modifiers: One of either the doc or the behavior of the `g' prefix is wrong. The doc says: g Apply the change to the first occurrence of a match in each word, by prefixing the above (for example, g&). In fact, the behavior is that the change is applied to EVERY occurrence of a match in every word; the `w' modifier does only the first in each. (The description above, and not the actual behavior, is what I'd expect from the `g' modifier based on csh, but ....) That's as far as I'm going to get tonight; tomorrow night I might get to read the rest. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern New male in /home/schaefer: >N 2 Justin William Schaefer Sat May 11 03:43 53/4040 "Happy Birthday"