This version of zsh is based on 3.1.5 and includes the following patches. Old stuff: Zoli's AIX dynamic loading patch from 3933, slightly updated, without some hunks which weren't needed on AIX 3.x so I don't know how to update them properly My completion widgets patch Patches which have appeared since 3.1.5 (it's already a week, after all...): Bart's addon collection 4473 (excluding the bit from 4105), 4475, 4476 My patch in 4477 to rename three functions to avoid clashes when dynamic loading (particularly necessary on IRIX and AIX), including the effect of Sven's additional fix in 4488 Sven's magna opera patch-or 4510 and patch-match 4509 to add control of alternative matches and arbitrary mapping between characters in the command line and the matched string, plus all known related fixes 4526, 4527, 4534, 4555, 4557 My patch 4513 for case-insensitive globbing via flags, plus fixlet 4552 My ~PWD patch 4533 My suggestion for fixing the suffix on a yank in 4564 Bart's deltochar patch including new flags to allow commands not to interrupt cumulative effects in 4570 (new flag merged with compctl widgets flags). Bart's doc fix 4574 A fixsuffix() added by hand in delcharorlist() which I've somehow missed along the way. The fixsuffix() horror is probably not yet resolved; 4576 has side effects and hasn't been applied. My latest version of lete2ctl, not posted but available at http://www.ifh.de/~pws/computing/lete2ctl . Bart's chpwd() fix 4589 Second edition Added line in zle_tricky.c missed when patching by hand, spotted by Bart. (Whitespace is still non-canonical in the completion code where I have merged patches by hand.) Fixed up my compctl widgets patch for use with Sven's rewrite, which I hadn't done properly before. Bart's function fixes, 4471 Bart's doc fixes, 4472 Bart's PWD and OLDPWD reshuffle, 4589 My test-line-length patch for prompts, 4591 (`%(40l.yes.no)' outputs `yes' if at least 40 characters have already appeared on the line, `no' otherwise.) Configure patch from Wilfredo Sanchez in 4594, with some extra tabbification and without the setterm() hunk, since I've already renamed that to zsetterm(), avoiding the conflict My globbing fix for a bug which shows up in `case' constructs, 4595 Alternative version of the ~PWD patch (allow users to hash PWD explicitly if that's what turns them on), 4596 Bart's experimental associative array patch, 4598, plus various additions, 4599, 4602, 4608, 4641, 4653, 4654. No documentation yet; if you want to play with this, so far: % typeset -A hash # create associative array $hash % hash[one]=eins hash[two]=zwei # assign elements % hash=(one eins two zwei) # same, assign whole array (*) % print $hash[one] # retrieve elements eins % print $hash # whole array looks like normal array eins zwei % print ${(k)hash} # flag to get keys one two % print ${(kv)hash} # flag to get keys and values (**) one eins two zwei Comparison of (*) and (**) will reveal how to copy an associative array, `hash2=(${(kv}hash})', but you always need to `typeset -A hash2' first or an ordinary array will appear. There is a predefined special associative array $testhash, for testing purposes only, which will eventually disappear. My rewrite of prompt truncation, 4601 --- note this introduces a slight incompatibility in that the string to be truncated now runs by default to the end of the string, instead of only covering individual %-substitutions. If necessary, stick in an extra '%>>' to turn truncation off at the point you want. Bart's params error message fix, 4606 My input fix for 8 bit characters, 4612 Bart's version of the *** fix, 4624 Bart's parameter substitution flag delimiter fix, 4644 My special parameter unset fix, 4662 Third edition I've taken the plunge and changed $ZSH_VERSION, the current one is now 3.1.5.pws-3 . It seemed rational to have something incremental at the end for testing, so I abandoned using the date. 4482 (cdmatch2)and 4641 (${assoc[0]}) now applied; 4641 was supposed to be there before. nroff manual pages deleted, you now need yodl. deleted modules-bltin by hand, which `make distclean' somehow missed. Caused problems when building a statically linked shell. Bart's scanmatchtable fix, 4674 Commented out vifirstnonblank() in vioperswapcase(), pending any better patch for it. Bart's viforwardword fix, 4678 My case-independent globbing fix, 4693 Sven's zle_tricky.c, 4697 Sven's patch to ignore completions if the cursor is not in a part to be completed, 4698, plus addition, 4707 I have not added Sven's zerr() patch, 4699, in case it has side effects, but I haven't heard anything on the subject and I haven't looked at it. Sven's pennockite heap memory patch, 4700 Sven's condition module patch, 4716, and addition, 4732, and the function wrapper patch, 4734, and additions, 4742, 4769: the module.c bits of these have been moved around a little to avoid clashes with the AIXDYNAMIC stuff. The wrapper stuff is still not finished, but doesn't currently impinge on use of the shell. Phil Pennock's patch to use associative arrays in stat, 4727 Unposted fix for use of printcompctlptr in completion widgets: printcompctl() had acquired another argument. My bash-like ${foo/orig/new} patch, 4736, and the version to do shortest matching together with optimizations of all pattern matching in variable strings, 4754. Phil's patch for typeset -a docs, 4737 Nobody wanted my fix for `FOO=x eval external', so it's not there. zftp, 4761 Bart's fix for conddef without dynamical modules, 4762 Bart's associative array patches for implentation of subscripting flags, 4763, plus fix 4766; typeset output 4764 Sven's completion listing fix, 4767 Fourth edition Compilation fix for static linking, 4779 Phil's patch for wtmp in /var/log on Linux, which someone else sent before... except it needs to be applied to aczsh.m4 and propagated from there, 4783 Phil's removal of now useless j in glob.c, 4784 Bart's collection in 4788: put back some missing patches. Param's patches from Bart in 4789, 4794, 4795: fix sethparam() and move flags; make sure setsparam() and sethparam() are consistent with existing parameters; allow assoc array assignment with ${(AA)=assoc::=key1 value1 key2 value2} Return to not hashing PWD from Bart in 4791 Handle --program-suffix and --program-prefix (but not --target, so I removed the comment) from Bart in 4792 Compilation with no HAVE_GETPWUID, 4801 INADDR_NONE in zftp, 4805 Sven's unloading modules, 4806, 4815, 4820, plus my AIX (and DYNAMIC_NAME_CLASH_OK) fix, 4822, then Sven's 4830 Parameter's documentation changes by Bart, 4817 Network order fix for zftp from Sven, 4821 My patch (with Gene Cohler's suggestions) for dynamical loading under HPUX 10, 4824, plus fixes, 4833, 4843 Bart's random assoc array fixes, 4826, 4836, plus Sven's 4831 Sven's ignored character fix, 4828 More Sven condition patches, 4837, 4842 Final (???) isident() fix from Sven, 4845 pws-5 Name of top level directory is now zsh-3.1.5-pws-5 Missing part of Bart's sethparam() changes, 4851 zftp test subcommand, 4852 Geoff's refresh fix for a line the same length as the terminal width, 4855 Bart's fix for array slices, 4874 Sven's accept-and-menu-complete-fix, 4878 Sven's group completion fix, 4879 Sven's module condition fixes, 4880 Oliver Kiddle's autoconf fix, 4887 My zftp fix (actually due to Andrej Borsenkow) for systems which only allow dup'ing sockets after they are connected, 4888. Bart's fix to making setting associative array elements inside substitutions consistent, 4893 My typeset neatness and -a and -m fix, 4902 My brief Etc/MACHINES addition, 4912 My modification to findcmd() for memory leaks, 4923, plus comment alteration by Bart, 4924 Sven's patch for completion after various reserved words, 4930 My patch for compiler warnings, 4931 My configuration fix for when tgetent() accepts a null argument but then tgetstr() dumps core, 4939 Sven's alteration of `-t' behaviour, 4940. This is slightly incompatible with previous patched versions of 3.1.5 since now you don't need '-tc' with -T. However, you now do need '-tn' in cases where you don't want normal completion tried after a -T matches. Sven's new completion functions, 4850, 4881, 4941, 4942, 4943, 4944, 4946, 4949, 4950, plus my addition of function pointers, 4945. The example file is now in Misc/new-completion-examples. (Effect of) fix from Helmut Jarausch in 4947 partly due to change missed in patch. pws-6 Sven: fix for completion after redirection, 4957 Bart: add-on, 4965 Andrej: configure patch for Reliant UNIX et al., 5021 (as resubmitted) Sven: compctl list with a single string, 4974 Sven: compctl -M matches with *'s, 4975, 5007 Sven: compadd and new-completion-examples, 4976 Sven: funky new glob modifiers: change sort order, select item from list, 4979; make time order work like ls -t, 4987 Sven: fix completion whitespace for copy-previous-word, 4981 Sven: fix for new-style completion after redirection, 4986, 4988 New mirror site ftp://ftp.win.ne.jp/pub/shell/zsh/ in META-FAQ (not posted) Andrej: when installing info files, insert zsh.info into dir, 5016 Sven: ${(t)param} flag, 5022, 5045; no unset behaviour, 5078 Phil: zless, 5032, simplified by Bart, 5037, also added a `setopt localoptions' after spending an hour wondering why nothing worked any more. pws: `make install' does not do `make install.info', 5047 Sven: compcall tries old-style completion from new-style function, compctl -K ' func' handles newstyle completion, 5059; avoid recursion, 5065; my dynamic fix-up, 5085 Sven: inserting completion inside brace expansion, 5060 Sven: extra completion context, 5092 pws: typeset -T MYPATH mypath, 5094, plus fix for MYPATH=(foo), mypath=foo (and also existing PATH=(foo) bug), 5120 Sven: doc fix for glob qualifiers, 5102 Drazen Kacar, modified by me: workaround for terminal bug on Solaris, 5103; modified by Bart, 5113 Sven: zle and widget information via variables in new completion functions, 5104 pws: remove old zle -C, zle -C now does new completion, 5105 Sven: glob qualifier o for modes, 5107 pws: fix for unsetting special zle variables, 5111 Drazen Kacar, modified by me: unlock terminal device on Solaris, 5118 (5117 was wrong) pws-7 pws: patch for zls, 5054 (appeared in pws-6 but not in corresponding patchlist). Bart: finally added missing hunk from 4965 which allowed unsetting an assoc array when it was assigned to as a scalar which should have been there all along Bart: vared to edit associative arrays and array elements, 5129 Matt Armstrong: makepro.awk can spit out preprocessor lines, 5132 (+ move init.pro inclusion, 5151) Matt: cygwin needs to use native getcwd(), 5133 Sven: partial word completion fix, 5144 Sven: compadd -m, -F, -r, 5145, 5204 Bart: unset can unset assoc array elements, 5174 Sven: fix for command completion and pattern completions, 5178 Sven: ${(P)...} 5183, 5199, 5200 pws: compctl documentation tidy-up, 5185, 5198 Sven: zle commands which use the minibuffer erase completion listings, 5201 Sven: glob qualifiers o -> f, O -> o, new O = ^o, 5203 Sven: completion in arrays, 5206 Sven: new completion in conditions, 5207 Sven: ${foo:q}, 5208, preliminary Sven: use ${foo:q} for quoting prefix and suffix in new completion, 5120 pws: bashautolist option, 5229; Sven's addition, 5234, and doc 5235; 5269 pws: .zlogout doc, 5233 pws: added note on Linux Alpha with egcs to Etc/MACHINES, not posted pws: typeset -T fix, 5247 Bart: parameter scoping docs, 5258 Bart: new mailing lists in Meta-FAQ, 5260 Sven: GLOB_COMPLETE docs, 5261, 5268 Sven: compctl -M and REC_EXACT fixes, 5262 Sven: rewrite of $foo:q, 5265, +doc, 5284 Sven: get matcher number in new completion function, 5266 pws: interrupts in getquery() weren't gracefully handled, 5281 pws-8 Geoff: no ld -g for NetBSD, 5295 Bart: alter local variables and $argv documentation, 5297 Bart: PWD and OLDPWD export confusion (fixing, not creating), 5299 Bart: trashzle() crashed shell with dynamical loading and zle builtin, 5305 Matt: CHAR(+) -> CHAR(43) in zmacros, 5311 Sven: compctl matcher to use reference counts, 5316 Sven: keys available in zle widget functions, 5320 pws: compctl -LM, 5321 pws: revamped signames.c generation, 5326, 5329, plus Matt fix, 5330 Sweth, Bart, Me: Functions/allopt, basically as in 2121 with the odd emulate and local. pws: emulate -L, 5332 Sven: printing of zle condition codes, 5335 Sven: Modularisation of new completion shell code, 5341 Sven: ignoring ignored prefix in new conditions, 5342; related fixes, 5343 pws: patch for completion init and __normal, 5344; Sven fix, 5351 pws: "$foo[@]" didn't remove the argument if $foo wasn't set, 5349; Bart's fix so this works on OSes other than AIX, 5361 Sven: change fignore handling, 5352 Sven: redisplay of completion lists; remove display when completion failed, 5354 Sven: compadd -R function for suffix removal, 5355 pws: #key-* completions now allow 0 or more key bindings, 5362 pws: Moved Misc/Completion to Functions/Completion; added some of my own new-style completions: not posted pws: 5281 now works, 5364 pws: make dependencies for main.o, Makemod, zshpaths.h, 5365 pws-9 Bart: CVS should ignore version.h, 5367 Oliver Kiddle: another change of mailing list host, 5372 Oliver: compctl -T documentation for ~dirs, 5374 Andrej: Reliant UNIX configuration, 5377 Sven: Manual for new completion (so far), 5384, 5397 pws: dump new completion status for fast initialisation, 5393 pws: bug fixlet for __path_files, 5398 Sven: overhaul of do_ambiguous with some bug-fixage, 5399, 5407 Sven: print needs - in Functions/Completion/dump, 5400; auto-dump and use $COMPDUMP file, 5402 Sven: files -> __files, 5401 pws: magicequalsubst now affects all arguments ...=~...:~..., 5403 pws: set -x output for [[ ... ]], 5408 pws: IRIX 6.5 problems in Etc/MACHINES (see 5410 from Helmut Jarausch). Sven: 5412: better matcher control. Sven: 5415: anchors in matchers shouldn't match variable part of completion Sven: 5417: multiple subscripts with undefined array Sven: 5418: small addmatches fixes pws: 5421: setting same element of assoc array in full array assignment crashed Sven: 5422: braces in completions were not tokenized; array parameters were used uncopied Sven: 5423: compadd accepts either - or -- to end options Sven: 5424: addmatches fix when not doing matching pws: 5425: fix pattern matching for new completion Sven: 5429: $CONTEXT strings Sven: 5430: rewrite Functions/Completions with simplified syntax (no #array type completions). pws: 5436: set -x for function calls and ((...)). pws: unposted (but see 5440): zftp changes: more return 6's, functions now do auto-open and avoid subshells. pws-10 Martin Buchholz: 5448: libc.h can't be included on Debian Linux, so only include it on NeXT where it's necessary. Matt: 5330: I've put this back the way it original was. I hate sed almost as much as awk. Sven: 5455: keep track of which matcher specification to use Sven: 5466: compwid manual for -after and -between Sven: 5467: expn manual typo Sven: 5469: init fix and Functions/Completion/_comp_parts Sven: 5470: new completion conditions didn't handle untokenization consistently. Sven: 5471: range code knows not to handle associative arrays Sven: 5476: quoting of tildes in Functions/Completion/_path_files Sven: 5483: completeinword fixes Sven: 5489: control for matching in _path_files and _comp_parts Sven: 5490: unset test for AA elements when substituting pws: unposted, see 5503: remove dynamic=no from configure.in when underscore is needed. pws: 5508: init and dump, globbing and printing. Sven: 5511: make sure compctl is available for new completion Sven: 5512, 5525: globcomplete fix for new completion Sven: 5521: improved option handling for _path_files Sven: 5529: cleanup for Functions/Completion pws: 5531: small init fix pws: 5538: approximate pattern matching, (#a1)readme etc. Sven: 5543: compadd -X, zshcompwid manual Sven: 5544: another completion cleanup pws: 5545: silly set -x mistake Sven: 5547: group handling -J/-V in compadd Sven: 5548: _path_files, _comp_parts Matt: 5553: under _WIN32, .exe suffix is optional for commands pws: unposted: Functions/Completion moved to Completion; subdirectories Core, Base, Builtins, User, Commands created; Completion/README created. pws-11 pws: 5557: configure.in for making sure signals really are defined in the file found. This was in pws-10, but the patch didn't appear on the list for four days. Larry P. Schrof: 5550: last -> previous in history documentation pws: 5559: cd /.. doesn't show .. (except if RFS was detected). Sven: 5560: subscripting fixes in params.c: flags for scalars and converting integer AA element to string pws: 5561: attempted (untested) fix for QNX4 compilation; halloc() is now zhalloc(). (By private email from probin@qnx.co.uk, it seems the QNX problems are more considerable with 3.1.5.) Sven: 5564, 5577, 5579: massive new completion reworking with $words, $compstate, etc., etc. Sven: 5565, 5576: $NUMERIC gives the numeric argument in a zle widget Sven: 5566: $foo[(b..i)] starts searching $foo for for at Sven: 5571: Functions/Builtins/_cd tests if $cdpath is set Sven: 5574, 5578: Completion/README notes Sven: 5582: _path_files will expand /u/ -> /usr/ even if /u exists if nothing later on would match otherwise (got that?) pws: 5583: post-patch restructuring of _mh, _zftp, _most_recent_file. Sven: 5586: addmatch fix (old completion wasn't working) Sven: 5588: fix _most_recent_file idiocy Sven: 5590: compadd -p, -s and -P fixes Sven: 5593: _path_files -w Matt: 5596: Makefile dependencies for module compilation pws; 5597: Use separate file mymods.conf for your own builtin modules rather than the automatically generated modules-bltin. Sven: 5598: a neater way of handling compadd -p/-P Sven: 5599: _comp_parts, _path_files tweaks Sven: 5601: compstate[exact_string] and compstate[total_matchers] pws: 5602: _tar Sven: 5603: compstat[pattern_match] Sven: 5604: approximate completion. (this is it. every other shell is out of the game.) Sven: 5605: explanation listing fix Sven: 5613: copy scalar variable used for compgen -y Bart: 5614: Completion/Base/_match_test works out of the box Sven: 5620: fix for completion inside expansible braces Sven: 5621: manual for nmatches and matcher Sven: 5622: zshcompwid manual: clarifications Sven: 5623: -X strings with compadd were mishandled Sven: 5624: CCORIG required to be offered original string when correcting using COMPCORRECT pws: 5628: _builtin, _cd, _most_recent_file Sven: 5629: approximate correction patches Sven: 5631: compilation warnings Sven: 5634: return values for compgen and compadd Sven: 5637: mustuseheap check in complistflags Sven: 5640: _multi_parts, _path_files, _tar Sven: 5647: _multi_parts doesn't replace so many *'s Andrej: 5650: more tricks with _configure Sven: 5651: widespread completion fixes Sven: 5659: globcomplete changes Sven: 5662: / following brace parameter Sven: 5663: compctl -i _completion_function Sven: 5665: return values from completion functions Sven: 5666: calling inststrlen() with a null string pws: from autoconf 2.13: new config.sub pws-12 Sven: 5670: parameter completion fix Sven: 5671: another small parameter fix for multiple braces Sven: 5675: tidying up for zle_tricky.c pws: from autoconf 2.13: new config.guess, too. Sven: 5676: all Completion example functions return a status Sven: 5677, 5679: Completion/User/_long_options and consequent upgrades for Completion/User files which use long GNU-style options. Sven: 5682: bindkey fix Sven: 5692: remove compstate[matcher] test from _long_options Sven: 5696, 5697: "${${path}[1]}" indexes on characters again Sven: 5698: array indexing in _long_options and _multi_parts Sven: 5699: matching prefixes of various sorts Sven: 5701: _main_complete, _multi_parts, _path_files, a few cosmetic changes. Sven: 5704: _long_options Sven: 5707: tokenization changes Sven: 5708: completion manual, -M anchors must be matched explicitly Sven: 5710: zle_tricky.c, completion inside words Sven: 5712: _path_files, noglobcomplete fix Sven: 5713: zle_tricky.c, interesting code specimen made extinct Sven: 5714: _path_files: failed completions get left alone more often Sven: 5716: zle.h, zle_misc.c, zle_tricky.c: iremovesuffix() can be told whether to keep a list of matches Andrej: 5719: _bindkey can use - as anchor for wildcard matching Will Day: 5724 (+postprocessing, 5741): signames2.awk: match extra spaces if produced by CPP. Sven: 5726: zle_tricky.c: ctokenize() fix and parameter completion pws: 5729: _bindkey doc Sven: 5732: _a2ps, _long_options Sven: 5736: completion before = in assignment pws: 5737: ${foo#* } is more efficient in ordinary cases Sven: zsh-users/2211 (+ p -> s): setopt -m handles underscores and case sensitivity Lehti Rami: 5754: --disable-restricted-r stops the shell becoming restricted when its name starts with r Sven: 5756: compstate[force_list] Sven: 5757: compconfig Sven: 5758: _path_files accepts -q, -r and -R options pws: www archive: updated Etc/FAQ finally, keep forgetting Sven: 5759: math environment fixes Sven: 5761: remove unnecessary compiler warnings in compctl.c Sven: 5766: _path_files closer to compctl/compgen behaviour Sven: 5770: _path_files again Sven: 5775: correcting completion will not ignore everything the user has typed; prefix quote fix pws: 5776: untested patch for typeahead problems when reading multiple lines of input pws: unposted archive changes: .distfiles in Completion hierarchy, dunno what these do but it looks better; _comp_parts is now _sep_parts; moved _long_options into Base and mentioned it in Completion/README. Geoff: 5779: correct mistakes some bozo (guess who) made testing rlim_t for long long. pws-13 pws: 5780: Completion/Base/_brace_parameter change Sven (reposted by Bart): 5783: zerr() sets errflag even if noerrs is set Sven: 5795: parsing change for assignment and arrays in nested substitution. Sven: 5796: globcomplete shouldn't always turn on menucompletion pws: 5797: set CLOBBERS_TYPEAHEAD for Irix; old config.guess change for Reliant UNIX and Apple Rhapsody re-imported from old config.guess. Sven: 5800: _path_files; path altered when no possible match Sven: 5804: _pdf Sven: 5811: put back _multi_parts which got left out when it was moved into Core. Sven: 5818: parameter name in subscript which looks math-like; _subscript. Sven: 5829: clear the completion list in more zle functions Sven: 5830: in ${#:-stuff}, stuff is treated as a single word (unless split for some other reason). Sven: 5831: in subscripts and math environments, the whole string is always passed down to the function handler. pws: 5844: don't set errflag if noerrs = 2. Sven: 5852: warnings about _long_options pws: 5854: man page dependencies in Doc/Makefile.in Sven: 5862: _path_files (turning on menu) and _cd (include . in path) pws: 5863: substitution rules pws-14 Bart: 5868: expn.yo fixes Sven: 5871, 5875: big zle_tricky.c cleanup, with compstate changes and IFSUFFIX Sven: 5872, 5881, 5889: corresponding Completion function rewrite Sven: 5879, 5899: completion documentation Sven: 5890: _match completer Sven: 5895, 5898, 5906: fix completion prefixes Sven: 5904: print local for parameters pws: 5905: _main_complete should at least try to get _unset_options correct. Sven: 5912: compiler warnings Sven: 5913: zle -C test Sven: 5914: _main_complete takes optional completer arguments pws: 5915: minor type fixes Sven: 5916: _expand completer Sven: 5918: _list completer Sven: 5925: path_expand Sven: 5926: $HISTNO Sven: 5928: copy context in zle_tricky pws: 5931: more parameter substitution rules Sven: 5933: don't complete local parameters; _setopt/_unsetopt complete all options (code to use currently unset/set options remains in comments) pws: 5934: option GLOBAL_RCS_FIRST runs /etc/z* files before user's files. Sven: 5938, 5937: compset to replace modifying conditions Sven: 5940: move cursor Sven: 5942: spaces in file names with old completion Sven: 5947: completion functions fix pws: unposted: updated .distfiles under Completion