mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			706 lines
		
	
	
	
		
			31 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			706 lines
		
	
	
	
		
			31 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| -------------------------------------
 | |
| CHANGES FROM PREVIOUS VERSIONS OF ZSH
 | |
| -------------------------------------
 | |
| 
 | |
| Major changes between versions 4.2 and 4.3
 | |
| ------------------------------------------
 | |
| 
 | |
| - There is support for multibyte character sets.  This is now reasonably
 | |
|   close to complete, although Unicode combining characters don't work
 | |
|   properly.  See Multibyte Character Support in INSTALL.
 | |
| 
 | |
| - The shell can now run an installation function for a new user
 | |
|   (a user with no .zshrc, .zshenv, .zprofile or .zlogin file) without
 | |
|   any additional setting up by the administrator.  See "THE ZSH/NEWUSER
 | |
|   MODULE" in the zshmodules manual page.
 | |
| 
 | |
| - The manual now has a Roadmap section (manual page zshroadmap) to
 | |
|   give new users an indication of the most interesting parts of the
 | |
|   manual.
 | |
| 
 | |
| - New option PROMPT_SP (on by default): works around the problem that the
 | |
|   line editor can overwrite output with no newline at the end.  See the
 | |
|   zshoptions manual page.
 | |
| 
 | |
| - New option HIST_SAVE_BY_COPY (on by default): history is saved by
 | |
|   copying and renaming instead of directly overwriting.  See the
 | |
|   zshoptions manual page.
 | |
| 
 | |
| - New redirection syntax e.g. {myfd}>file opens a new file descriptor
 | |
|   and stores the number in $myfd, so that >&$myfd will work.  Chosen
 | |
|   not to break existing code (and to be compatible with proposals for the
 | |
|   Korn shell).  See the section REDIRECTION in the zshmisc manual page.
 | |
| 
 | |
| - Substitutions of the form ${var:-"$@"}, ${var:+"$@"} and similar where
 | |
|   word-splitting is applied to the text after the :- or :+ (in particular,
 | |
|   where the SH_WORD_SPLIT option is in effect for compatibility) now
 | |
|   behave as in other Bourne- and POSIX-compatible shells when in the
 | |
|   appropriate emulation mode.
 | |
| 
 | |
| - New Posix-style zsh-specific tests [[:IDENT:]], [[:IFS:]],
 | |
|   [[:IFSSPACE:]], [[:WORD:]] test if character can appear in identifier,
 | |
|   is an IFS character, is an IFS whitespace character, or is considered
 | |
|   as part of a word (is alphanumeric or appears in $WORDCHARS).  These
 | |
|   works correctly on multibyte characters if the appropriate support
 | |
|   is present.  See the section FILENAME GENERATION in the zshexpn
 | |
|   manual page.
 | |
| 
 | |
| - The idiom =(<<<...) is optimised so that the shell internally turns
 | |
|   the ... into the contents of a file whose name is then substituted.
 | |
|   The syntax has always been usable by means of the NULLCMD feature,
 | |
|   but previously it generated an intermediate process; it has now
 | |
|   been rewritten along the same lines as the optimisation for $(<...)
 | |
|   that inserts a file into the command line without the use of an
 | |
|   external programme.
 | |
| 
 | |
| - Supplied functions catch and throw provide limited support for
 | |
|   exception handling using the `{ ... } always { ... }' syntax.
 | |
|   See the section EXCEPTION HANDLING in the zshcontrib manual page.
 | |
| 
 | |
| - Signals now accept the SIG as part of the name for compatibility with
 | |
|   other shells.
 | |
| 
 | |
| - Editor function argument-base allows non-decimal arguments for
 | |
|   editor widgets.  See the entry in the zshzle manual page.
 | |
| 
 | |
| - As always, there are many enhancements to completion functions.
 | |
| 
 | |
| Changes in 4.2 since version 4.2.0
 | |
| ----------------------------------
 | |
| 
 | |
| - The autoload and related builtins take options -k and -z to indicate
 | |
|   ksh or zsh autoloading style for given functions, making it possible
 | |
|   to mix and match.
 | |
| 
 | |
| - Assignments to associative arrays can use the i and r index flags.
 | |
|   For example,
 | |
|     assoc[(i)alpha*]=bravo
 | |
|   sets the value for the element whose key matches the pattern `alpha*';
 | |
|     assoc[(r)activ*]=passive
 | |
|   sets the value for the element whose current value matches the pattern
 | |
|   `activ*'.
 | |
| 
 | |
| - The glob qualifier F indicates a non-empty directory.  Hence *(F)
 | |
|   indicates all subdirectories with entries, *(/^F) means all
 | |
|   subdirectories with no entries.
 | |
| 
 | |
| - fc -p and fc -P provide push/pop for the status of the shell's
 | |
|   history (both internal and using the history file).  With automatic
 | |
|   scoping (fc -ap) it becomes easy to use a temporary history in a
 | |
|   function.  This has been added to the calculator function zcalc to make
 | |
|   its internal history work more seamlessly.
 | |
| 
 | |
| - A new `try block' and `always block' syntax has been introduced
 | |
|   to make it easier to ensure the shell runs important tidy-up code
 | |
|   in the event of an error.  It also runs after a break, continue, or
 | |
|   return, including a return forced by the ERR_RETURN option
 | |
|   (but not an exit, which is immediate).  The syntax is:
 | |
|     `{' try-block-list `}' `always' `{' always-block-list `}'
 | |
|   where no newline or semicolon may appear between `}' and `always'.
 | |
|   This is compatible with all previous valid zsh syntax as an `always'
 | |
|   at that point used to be a syntax error.  For example,
 | |
|     { echo Code run in current shell } always { echo Tidy-up code }
 | |
| 
 | |
| - A new zle widget reset-prompt has been added to re-expand the current
 | |
|   prompt.  Changes to the variable in use as well as changes in its
 | |
|   expanions are both taken into account.  The same effect is now forced by
 | |
|   a job change notification, making the %j prompt escape and %(j..) ternary
 | |
|   expression more useful.
 | |
| 
 | |
| - The zftp module supports ports following the hostname in the normal suffix
 | |
|   notation, `host:port'.  This requires IPv6 colon-style addresses to be
 | |
|   specified in suitably quoted square brackets, for example:
 | |
| 
 | |
|   zftp open '[f000::baaa]'
 | |
|   zftp open '[f000::baaa]:ftp'
 | |
| 
 | |
|   (the two are equivalent).
 | |
| 
 | |
| - Special traps, those that don't correspond to signals, i.e. ZERR, DEBUG
 | |
|   and EXIT are no longer executed inside other traps.  This caused
 | |
|   unnecessary confusion if, for example, both DEBUG and EXIT traps
 | |
|   were set.  The new behaviour is more compatible with other shells.
 | |
| 
 | |
| - New option TRAPS_ASYNC which if set allows traps to run while the
 | |
|   shell is waiting for a child process.  This is the traditional zsh
 | |
|   behaviour; POSIX requires the option to be unset.  In sh/ksh
 | |
|   compatibility mode the option is turned off by default and the option
 | |
|   letter -T turns it on, for compatibility with FreeBSD sh.
 | |
| 
 | |
| - New WIDGETSTYLE, WIDGETFUNC parameters in ZLE.
 | |
| 
 | |
| - Glob qualifier (+func) is shorthand for (e:func:) (calls a command,
 | |
|   typically a shell function, with no argument).
 | |
| 
 | |
| New features between zsh versions 4.0 and 4.2
 | |
| ---------------------------------------------
 | |
| 
 | |
| Configuration:
 | |
| - upgraded to use autoconf post-2.50
 | |
| - improved compatibility with other shells through shell options,
 | |
|   builtin arguments and improved builtin option parsing
 | |
| 
 | |
| Syntax and builtins:
 | |
| - new printf builtin
 | |
| - `+=' to append to parameters which works for scalars, arrays and (with
 | |
|   pairs) associative arrays.
 | |
| - enhanced multiple parameter `for' loops:
 | |
|     for key value in key1 value1 key2 value2 ...
 | |
|   maintaining full compatibility with POSIX syntax.
 | |
| - Suffix aliases allow the shell to run a command on a file by suffix,
 | |
|   e.g `alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'.  Supplied
 | |
|   function zsh-mime-setup uses existing mailcap and mime.types files
 | |
|   to set up suitable aliases.  Supplied function pick-web-browser is
 | |
|   suitable for finding a browser to show .html etc. files by suffix alias.
 | |
| - new option `no_case_glob' for case-insensitive globbing.
 | |
| 
 | |
| Add-on modules and functions:
 | |
| - zsh/datetime modules makes date formatting and seconds since EPOCH
 | |
|   available inside the shell.
 | |
| - zsh/net/tcp module provides builtin interface to TCP through ztcp
 | |
|   builtin.  Function suite for interactive and script use with expect-style
 | |
|   pattern matching.
 | |
| - zsh/net/socket module provides zsocket builtin.
 | |
| - zcalc calculator function with full line editing.
 | |
| - builtin interface to pcre library
 | |
| - zsh/zselect module provides zselect builtin as interface to select
 | |
|   system call
 | |
| 
 | |
| Completion system:
 | |
| - general improvements to command and context support, low-level functions,
 | |
|   display code.
 | |
| - in verbose mode, matches with the same description are grouped
 | |
| - highly configurable completions for values of specific parameters,
 | |
|   specific redirections for specific commands
 | |
| - support for bash completion functions (typically zsh native functions are
 | |
|   more powerful where available)
 | |
| - New completions provided for (some of these may be in later 4.0
 | |
|   releases):  valgrind, tidy, texinfo, infocmp, Java classes, larch, limit,
 | |
|   locale parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange
 | |
|   (dch), email addresses, file system types, Perforce, xsltproc.
 | |
|   Plus many others.
 | |
| 
 | |
| Line editor:
 | |
| - special parameters $PREDISPLAY, $POSTDISPLAY available in function
 | |
|   widgets to configure uneditable text (for narrowing)
 | |
| - recursive editing
 | |
| - supplied widgets read-from-minibuffer, replace-string use these features
 | |
|   (more intuitive prompting and argument reading than 4.0)
 | |
| - access to killed text via $CUTBUFFER and $killring
 | |
| - supplied highly configurable word widgets forward-word-match etc., can
 | |
|   set what constitutes a word interactively or in startup script
 | |
|   (implement bash-style behaviour, replacing previous bash-* word widgets)
 | |
| - interface to incremental search via $LASTSEARCH
 | |
| - better handling of keymaps in zle and widgets
 | |
| - better support for output from user-defined widgets while zle is active
 | |
| - tetris game which runs entirely in zle
 | |
| - several other contributed widgets
 | |
| 
 | |
| Local internal improvements:
 | |
| - disowned jobs are automatically restarted
 | |
| - \u and \U print escapes for Unicode
 | |
| - read -d <delimiter> allows a custom line ending.
 | |
| - read -t <timeout>.
 | |
| - line numbers in error messages and $PS4 output are more consistent
 | |
| - `=prog' expands only paths, no longer aliases for consistency
 | |
| - job display in prompts; `jobs' command output can be piped
 | |
| - prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
 | |
| - rand48() function in zsh/mathfunc for better randomness in arithmetic
 | |
|   (if the corresponding math library function is present)
 | |
| - $SECONDS parameter can be made floating point via `typeset -F SECONDS'
 | |
|   for better timing accuracy
 | |
| - improvements to command line history mechanism
 | |
| - job table is dynamically sized, preventing overflow (typically seen
 | |
|   previously in complex completions).
 | |
| - many bugfixes
 | |
| 
 | |
| 
 | |
| New features in zsh version 4.0.1
 | |
| ---------------------------------
 | |
| 
 | |
| Compared with 3.1.9, there are mostly incremental improvements to
 | |
|   - the new completion system --- more functions, completers, styles...
 | |
|   - the line editor
 | |
|   - handling of signals and traps
 | |
|   - the configuration system, particularly for modules
 | |
|   - Cygwin support (now essentially complete)
 | |
|   - arithmetic evaluation
 | |
|   - the zpty (pseudoterminal handling) module
 | |
|   - the test suite
 | |
| plus various bug fixes and compatibility improvements.
 | |
| 
 | |
| The alias modules (zle.so as an alias for zsh/zle.so, etc.) have been
 | |
| removed; use `zmodload -A' to load modules under other names.  This is
 | |
| irrelevant if you are upgrading from 3.0.
 | |
| 
 | |
| Compared with the 3.0 series of releases (the last stable set), the most
 | |
| significant of a large number of improvements in the shell are:
 | |
|   - Dynamically loadable modules with hierarchical naming system
 | |
|   - Shell functions as editor functions, with much additional builtin support
 | |
|   - Incredibly rich new completion system; just needs a single
 | |
|     initialization command to provide completion for all sorts of commands
 | |
|     and contexts
 | |
|   - Associative arrays
 | |
|   - Lots of new features in parameter substitution and globbing; more
 | |
|     logical handling of nested parameter substitutions
 | |
|   - Rewritten pattern-matching (globbing) code supports approximate
 | |
|     and case-insensitive matching and backreferences
 | |
|   - Various custom modules for pty's, FTP, special parameters, etc.
 | |
|   - Rewrites of many internal parts of the code: execution code to
 | |
|     provide compilation to internal representation, pattern matching
 | |
|   - Floating point arithmetic and mathematical functions module
 | |
|   - A test suite
 | |
|   - Various new options for compatibility with this, that and the other
 | |
| See the 3.1.x changes below for more detail.
 | |
| 
 | |
| New features in zsh version 3.1.8 and 3.1.9
 | |
| -------------------------------------------
 | |
| These are primarily bug-fix versions.  There are only a few user-visible
 | |
| changes.
 | |
|  - Array slices ${array[a,b]} with b < a now correctly have zero length.
 | |
| 
 | |
| New features in zsh version 3.1.7
 | |
| ---------------------------------
 | |
| Further enhancements to new completion system:
 | |
|  - Comprehensive context-sensitive configuration via `styles', which
 | |
|    can be set by the menu-driven front end in compinstall
 | |
|  - General mechanism for setting patterns to be ignored in a completion;
 | |
|    overriding  of patterns to be matched for functions
 | |
|  - New completers: _prefix to complete word before cursor, _ignored
 | |
|    to complete using words so far ignored (like $fignore but more
 | |
|    powerful), _history to complete words from shell history
 | |
|  - Multiple use of completers with different options, similarly splitting
 | |
|    of different types of completion (`tags') so they are considered with
 | |
|    different styles
 | |
|  - Many more supplied completions for standard commands which work out of
 | |
|    the box, and better handling of command line options/arguments which
 | |
|    behave in the usual way   
 | |
|  - $fpath now set up to use installed functions by default; functions
 | |
|    can be loaded just by `autoload -U compinit; compinit'
 | |
|  - Much improved handling of nested quoting and nested braces
 | |
|  - New LIST_PACKED and LIST_ROWS_FIRST completion options and corresponding
 | |
|    styles
 | |
|  - compctl library separated out (frozen but still supported)
 | |
|  - User-friendly introduction available at zsh website
 | |
|    http://sunsite.auc.dk/zsh/
 | |
| 
 | |
| Additions to complist listing library (coloured completion and menu
 | |
| selection):
 | |
|  - Listings can be shown page by page (are by default for new completion)
 | |
|  - Menu selection allows full up and down scrolling of long lists
 | |
| 
 | |
| Other editing features:
 | |
|  - new parameters $PENDING, $MARK, $BUFFERLINES
 | |
|  - Easy display of a prompt from within an editing widget
 | |
| 
 | |
| Code parsing, storing and execution:
 | |
|  - Completely new system of storing code internally, greatly optimised
 | |
|  - Much less memory for shell functions etc.
 | |
|  - Can compile shell functions to .zwc `wordcode' functions for fast
 | |
|    loading
 | |
|  - Can create `digest' files of entire directories in .zwc format
 | |
| 
 | |
| Parameters:
 | |
|  - Floating point support added, similar to ksh93, `typeset -F' and
 | |
|    `typeset -E' declare floating point variables; usual C/Fortran-like
 | |
|    rules for integer/float conversion
 | |
|  - Mathematical library zsh/mathfunc contains all the standard mathematical
 | |
|    functions for use in arithmetical expressions
 | |
|  - Improved parsing of arithmetical expressions and better error messages
 | |
|  - Special parameters can be made local
 | |
|  - `typeset -h' hides specialness of parameters, either as parameter
 | |
|    attribute or when declaring new local variable
 | |
|  - Local parameters can now be exported as in other shells; new option
 | |
|    GLOBAL_EXPORTS on by default provides old behaviour that `typeset -x'
 | |
|    referred to global parameters.
 | |
|  - zsh/parameter module enhanced: now needed for new completion; parameters
 | |
|    provided have `-h' flag set so that they are hidden by `typeset', so
 | |
|    that existing functions don't need to be changed
 | |
|  - Quotes can be stripped from parameter values with ${(Q)...}, providing
 | |
|    reverse of ${(q...)...} facility
 | |
| 
 | |
| Globbing and pattern matching:
 | |
|  - Pattern matching rewritten for efficiency
 | |
|  - Supports `backreferences', i.e. extracting parenthesised chunks of
 | |
|    matches, e.g.
 | |
|      [[ $foo = (#b)(*/)[^/]* ]]
 | |
|    stores the part of $foo up to the last / in $match[1] and the indexes of
 | |
|    the match in $mbegin[1], $mend[1].  (#m) is also available to set $MATCH
 | |
|    to the entire match and corresponding $MBEGIN, $MEND:  useful in
 | |
|    parameter substitutions like ${.../.../...}.
 | |
|  - (#s) and (#e) match start and end of pattern like ^ and $ in regular
 | |
|    expression, useful in complex expressions such as ((#s)|/)dirname((#e)|/)
 | |
|    and in parameter expressions.
 | |
| 
 | |
|  - Depth-first/last listing of recursive glob lists
 | |
| 
 | |
| Functions etc.:
 | |
|  - `autoload -X' inside a function body instructs the shell to
 | |
|    bootstrap the function at that point
 | |
|  - `autoload +X fn' says load the function fn but don't execute it
 | |
|  - Prompt `themes' make customization of prompts easier
 | |
| 
 | |
| Modules:
 | |
|  - New hierarchical naming scheme for modules; supplied modules go into
 | |
|    zsh subdirectory, so zle becomes zsh/zle etc.; aliases supplied for
 | |
|    compatibility for existing code, but the new format should be used in
 | |
|    future.
 | |
|  - zmodload is more consistent between dynamically and statically linked
 | |
|    shells
 | |
|  - zsh/zftp and its function suite support multiple sessions (zfsession
 | |
|    command); zftransfer allows transfer of files between two ftp sessions
 | |
|    with no local file; use styles for e.g. progress style; IPv6 supported;
 | |
|    recursive put `zfput -r' for uploads
 | |
|  - zsh/zpty module creates pseudoterminal and allows builtin `expect'-like
 | |
|    behaviour
 | |
| 
 | |
| Other:
 | |
|  - Test suite, not yet complete (`make test')
 | |
|  - use of Linux task limits
 | |
|  - Many fixes including output redirection with `setopt xtrace' and
 | |
|    other redirection fixes; NIS+ problem.
 | |
|  - Better null-command behaviour in sh and csh emulation
 | |
|  - Internal memory usage optimisations
 | |
| 
 | |
| New features in zsh version 3.1.6 (beta version)
 | |
| ------------------------------------------------
 | |
| Note also the changes for 3.0.6, which include changes between 3.1.5. and
 | |
| 3.1.6.
 | |
| 
 | |
| New completion system via shell functions; massive degree of
 | |
| programmability and configurability:
 | |
|  - ready-made function suite to use, see zshcompsys(1)
 | |
|  - approximate completion and spelling correction via completion
 | |
|  - control over matching for case-independence, partial word completion, etc.
 | |
|  - menu selection:  choose a completion by moving the cursor
 | |
|  - coloured completion lists
 | |
|  - completion of filenames in quotes is now more reliable; splitting
 | |
|    quoted strings into command arguments is also possible.
 | |
| 
 | |
| Other editing changes:
 | |
|   - enhancements to function/editing interface:  new parameters, numeric
 | |
|     arguments, string argument passing, reading keys from widgets.
 | |
|   - the old history-search-{back,for}ward behaviour and bindings have
 | |
|     returned (up to minor details).
 | |
|   - BASH_AUTO_LIST option to show completion list only on second key press.
 | |
|   - the ZBEEP parameter gives a string to output instead of beeping,
 | |
|     allowing you to have a visual bell.
 | |
| 
 | |
| History changes: new options HIST_NO_FUNCTIONS, HIST_EXPIRE_DUPS_FIRST,
 | |
| HIST_FIND_NO_DUPS, HIST_IGNORE_ALL_DUPS, INC_APPEND_HISTORY,
 | |
| HIST_SAVE_NO_DUPS, SHARE_HISTORY, allow better control of when history is
 | |
| read and written and how duplicates are handled.  New format for history
 | |
| saves.
 | |
| 
 | |
| Associative arrays plus enhanced parameter substitutions to retrieve keys
 | |
| and values.
 | |
| 
 | |
| Globbing changes:
 | |
|   - Case-insensitive and approximate globbing.
 | |
|   - Ordering and indexing of globbing matches, e.g. *(om[1]) picks
 | |
|     most recently modified file.
 | |
|   - General file mode qualifier with chmod(1)-like syntax, e.g. *(f:u+wx:)
 | |
| 
 | |
| New loadable modules:
 | |
|   - zftp, plus associated function suite, for turning your zsh session
 | |
|     into an FTP session too
 | |
|   - parameter, for examining and altering shell hash tables via an
 | |
|     associative array interface.
 | |
|   - mapfile, for reading and writing external files via an associative
 | |
|     array interface.
 | |
| 
 | |
| Debugging and prompt enhancements:
 | |
|   - $PS4 can contain %i for $LINENO as well as %N for script or function
 | |
|     names (default PS4 changed), also %_ for current shell structure
 | |
|     executing;
 | |
|   - Prompt truncation %<...< is now more flexible: it applies to a
 | |
|     whole section of the prompt, not just one escape.  You need to put
 | |
|     %<< after the truncated escape to get the old behaviour.
 | |
|   - %20(l.yes.no) in prompts prints yes if at least 20 characters have
 | |
|     been output, else no (e.g. for outputting extra newlines).
 | |
| 
 | |
| Parameter and expansion changes
 | |
|   - `typeset -t MYPATH mypath' creates tied path/PATH-like variables
 | |
|   - `typeset -g' allows operations on parameters without making them local
 | |
|   - New expansions
 | |
|     - ${(t)param} prints type information for $param
 | |
|     - ${(P)param} treats value of $param as the name of a param to
 | |
|       substitute
 | |
|     - ${foo:q} can quote replaced parameter text from expansion
 | |
|     - ${foo/old/new} substitution, like bash; also (S) flag for shortest
 | |
|       match
 | |
|     - $foo[(b.2.i)bar] starts searching $foo for bar starting at 2nd match
 | |
| 
 | |
| Builtin and function changes
 | |
|   - stat module: `stat -H hash foo' gives you e.g. $hash[mtime]
 | |
|   - `autoload -U' autoloads functions without alias expansion.
 | |
| 
 | |
| Other new options:
 | |
|   - LOCAL_TRAPS allows signal traps to be local to functions (as in ksh).
 | |
|   - NO_RCS can now be turned on at any point in initialization files.
 | |
|   - NO_GLOBAL_RCS can force /etc/z* files after /etc/zshenv to be skipped.
 | |
|     (Please don't use this as an excuse to stuff more into /etc/zshenv!)
 | |
|   - Existing MAGIC_EQUAL_SUBST option is more useful; any argument containing
 | |
|     ...=~...:~... will perform filename expansion on the ~ (previously,
 | |
|     the string before `=' had to look like a parameter name).
 | |
| 
 | |
| Configuration changes:
 | |
|   - Generation of signal names should be more reliable
 | |
|   - Customizable installation of shell functions from distribution.
 | |
| 
 | |
| New features in zsh version 3.0.6
 | |
| ---------------------------------
 | |
| 
 | |
| Most of these changes are designed to improve compatibility with zsh
 | |
| version 3.1.6, the latest development release.  However, this release also
 | |
| fixes all known Year 2000 (Y2K) bugs in zsh 3.0.
 | |
| 
 | |
| History changes:
 | |
|   - whitespace between words is ignored in history searches.
 | |
|   - new option HIST_REDUCE_BLANKS removes extra whitespace in the stored
 | |
|     history.
 | |
|   - support for reading (but not writing) version 3.1.6 history files.
 | |
| 
 | |
| Globbing changes:
 | |
|   - the a, c, and m glob qualifiers can now test time in seconds.
 | |
|   - globbing of number ranges behaves more like character ranges in that
 | |
|     it can match a prefix of a number, e.g. `<1-5>*' matches 1, 2, 3, 4,
 | |
|     5, 17, 23skiddoo, 5986, etc., but not 6, 7, 8ball, 911, etc.
 | |
| 
 | |
| Parameter and expansion changes:
 | |
|   - expansion of ~ and other globbing flags via ${~param} do not depend
 | |
|     upon EXTENDED_GLOB (bug fix).
 | |
|   - nested parameter substitutions require braces (this was always the
 | |
|     documented behavior, but previous parsers didn't enforce it).
 | |
|   - quote only nested expansion, e.g. ${(f)"$(<file)"} reads complete
 | |
|     `file', then splits lines into array.
 | |
| 
 | |
| Builtin and function changes:
 | |
|   - `typeset -U' works on the colon-array version of linked parameters.
 | |
|   - `typeset +f' and `functions +' output the names (only) of functions.
 | |
|   - `emulate -L' has the effect of `setopt localoptions'.
 | |
|   - in fn1() { local foo; unset foo; foo=bar; }, foo is restored at local
 | |
|     level, whereas if the `unset foo' appeared in a nested function it
 | |
|     would have been restored at global level, which was presumably wrong.
 | |
|   - `foo=bar >&file' is a redirection, not a NULLCMD.
 | |
|   - any single complex command, such as `case ... esac', parses as if
 | |
|     semicolon-terminated (bug fix).
 | |
|   - the shell function `preexec', if defined, is run after parsing each
 | |
|     command line but before executing the command.
 | |
| 
 | |
| Other changes:
 | |
|   - the option PRINT_EIGHT_BIT causes zsh to emit raw bytes in prompts
 | |
|     and completion lists even if the system ctype(3) package says that
 | |
|     those bytes are not "printable."
 | |
| 
 | |
| Debugging enhancements:
 | |
|   - LINENO is now very much more useful in scripts and functions and is
 | |
|     reported correctly in most error messages.
 | |
|   - ERREXIT behavior is now consistent with newer Bourne-like shells,
 | |
|     e.g. with respect to `if' tests that fail.
 | |
| 
 | |
| Configuration changes:
 | |
|   - Large file and 64-bit integers on 32-bit machines supported where
 | |
|     provided by OS.
 | |
|   - a few more system features, such as getpwnam/getpwuid, are tested for.
 | |
| 
 | |
| 
 | |
| New features in zsh version 3.1 (beta version)
 | |
| ----------------------------------------------
 | |
| 
 | |
| On most operating systems zsh can load binary modules dynamically at
 | |
| run-time.  ZLE and the compctl builtin are now reside in a separate
 | |
| module which is loaded automatically on demand.
 | |
| 
 | |
| for ((expr; expr; expr)) do ... done loop syntax from AT&T ksh93 is
 | |
| now supported.
 | |
| 
 | |
| POSIX globbing character classes ([:alnum:] etc.) are now supported.
 | |
| 
 | |
| ksh's case fall-through feature (;&) is supported.
 | |
| 
 | |
| ksh93's $'' quoting syntax is supported.
 | |
| 
 | |
| Restricted mode is now supported.  This is controlled by the new option
 | |
| RESTRICTED (-r).
 | |
| 
 | |
| New options BARE_GLOB_QUAL, HIST_NO_FUNCTIONS (alias NO_LOG), KSH_GLOB,
 | |
| PRINT_EIGHT_BIT, PROMPT_BANG, PROMPT_PERCENT, RM_STAR_WAIT.
 | |
| 
 | |
| Options ALWAYS_LAST_PROMPT, APPEND_HISTORY, AUTO_LIST, AUTO_MENU,
 | |
| AUTO_PARAM_KEYS, AUTO_PARAM_SLASH, AUTO_REMOVE_SLASH, LIST_AMBIGUOUS
 | |
| and LIST_TYPES are now on by default.
 | |
| 
 | |
| In ZLE, arbitrarily many keymaps can be defined.  Multi-character
 | |
| keybindings now work.
 | |
| 
 | |
| Completion can be performed within a brace expansion.
 | |
| 
 | |
| EMACS-like universal-argument function.
 | |
| 
 | |
| 
 | |
| New features in zsh version 3.0
 | |
| -------------------------------
 | |
| 
 | |
| Trailing "/" in a glob pattern now works like in other shell thus it
 | |
| can no longer be used as a shorthand for "(/)".
 | |
| 
 | |
| Much improved sh/ksh emulation.  When zsh is invoked as sh it mostly
 | |
| conforms to POSIX 1003.2.
 | |
| 
 | |
| Enhanced parameter expansion features: new flags: A, @, e, W, p, f, F.
 | |
| Expansions can be nested.  For example,
 | |
| "${${(M)${(f@)$(<builtin.pro)}:#char*}[2][(w)3]}" expands to the third
 | |
| word of the second line of builtin.pro which begins with char.  See
 | |
| zshexpn(1) for the details.
 | |
| 
 | |
| ***/foo glob does recursive directory search following symbolic links.
 | |
| 
 | |
| Traps defined by the trap builtin are now executed in the current shell
 | |
| environment and not as a shell function.  This means that $1 is not set
 | |
| to the signal number.  Of course the TRAPxxx functions continue working
 | |
| as before.
 | |
| 
 | |
| Traps defined by the trap builtin are reset to their default values in
 | |
| subshells.
 | |
| 
 | |
| Option names can be prefixed by `no' to unset an option.
 | |
| setopt no_option_name is the same as unsetopt option_name.
 | |
| This change affects the output of the setopt and unsetopt
 | |
| builtins when these are invoked without arguments.  See
 | |
| the zshoptions manual page for more explanation.
 | |
| 
 | |
| !, {, } and [[ are now reserved words.  Things like [[-z $foo]] or {foo}
 | |
| should not be used.  {foo} still works if the IGNORE_BRACES option is not
 | |
| set but this feature may be removed in the future.  [[ -z $foo ]] and
 | |
| { foo } should be used instead.
 | |
| 
 | |
| HOSTTYPE special parameter is removed.  The new OSTYPE, MACHTYPE and
 | |
| VENDOR parameters should be used instead.
 | |
| 
 | |
| VERSION parameter is renamed to ZSH_VERSION
 | |
| 
 | |
| exec now saves the history in interactive shells.  If you do not like this
 | |
| behaviour you can alias exec to 'unset HISTFILE ; exec'.
 | |
| 
 | |
| ${~spec}, ${=spec} and ${^spec} used to toggle the effect of
 | |
| globsubst/shwordsplit/rcexpandparam.  Now these force the corresponding
 | |
| option on. ~, = or ^ can be doubled to force the relevant option off for
 | |
| the substitution.
 | |
| 
 | |
| Explicitly requested word splitting like ${=spec} or ${(s:delim:)spec}
 | |
| will be executed even if the substitution is double quoted.
 | |
| 
 | |
| The right-hand side of assignments are no longer globbed by default hence
 | |
| assignment foo=* will assign '*' as a value of foo.  Use the foo=( * )
 | |
| array assignment syntax to get the old behaviour.  Alternatively the
 | |
| GLOB_ASSIGN can be set to emulate the old behaviour but the usage of this
 | |
| option is strongly discouraged and this option may be completely removed in
 | |
| the future.
 | |
| 
 | |
| foo=$bar no longer creates an array even if bar is an array.  Use
 | |
| foo=( $bar ) or even better, foo=( "$bar[@]" ) instead.
 | |
| 
 | |
| When foo is an array parameter ${#foo} will always return the length of the
 | |
| array even if the substitution is double quoted.  ${(c)#foo} should be used
 | |
| to get back the old behaviour.
 | |
| 
 | |
| When the prompt_subst option is set prompts are fully expanded using
 | |
| parameter expansion, command substitution and arithmetic expansion.
 | |
| In 2.5 backquote substitution was not performed in the prompts so this
 | |
| change might cause problems in some startup scripts if ` is used literally
 | |
| in prompts.
 | |
| 
 | |
| History substitution is now not performed if the history escape character
 | |
| appears in a single-quoted string.  This may break some interactive shell
 | |
| functions which use \! in single-quoted strings.
 | |
| 
 | |
| The UID, EUID, GID, EGID parameters can be assigned now. The assignment
 | |
| executes the setuid(), seteuid(), setgid(), setegid() respectively.  On
 | |
| systems where setuid and seteuid is not supported these functions are
 | |
| emulated using setreuid or setresuid which may result in a different
 | |
| behaviour.
 | |
| 
 | |
| Assigning the USERNAME parameter will call setuid(uid) where uid is the
 | |
| user id of the specified user.
 | |
| 
 | |
| The privileged (-p) option is automatically set on invocation if euid != uid
 | |
| or egid != gid.  If this option is set no user startup files are sourced.
 | |
| The shell will drop privileges when this option is unset by resetting its
 | |
| euid to uid and its egid to gid.
 | |
| 
 | |
| The =number substitution for accessing the directory stack is changed to
 | |
| ~number to allow =command substitution when a command name begins with a 
 | |
| digit.
 | |
| 
 | |
| <> is a redirection operator which opens the standard input for both
 | |
| reading and writing.  To match a number use <->.
 | |
| 
 | |
| Option letters -1 and -C for PRINT_EXIT_VALUE and NO_CLOBBER are swapped:
 | |
| `set -C' sets NO_CLOBBER and `set -1' sets PRINT_EXIT_VALUE.
 | |
| 
 | |
| AUTO_PUSHD behaviour is changed.  Now cd without arguments will always go
 | |
| to the $HOME directory even if AUTO_PUSHD is set and PUSHD_TO_HOME is not
 | |
| set.  If you preferred the old behaviour you can alias cd to pushd.
 | |
| 
 | |
| IFS word splitting with SH_WORD_SPLIT and the splitting of the input in the
 | |
| read builtin has changed in cases when IFS contains characters other than
 | |
| <space>, <tab>, <newline>.  See the description of IFS in the zshparam
 | |
| manual page for more details.
 | |
| 
 | |
| 
 | |
| New features in zsh version 2.5
 | |
| -------------------------------
 | |
| 
 | |
| Greatly expanded completion possibilities.  Programmable completion
 | |
| allows detailed control over what arguments of what commands can be
 | |
| completed to what.  See dots/zcomp in the distribution for examples.
 | |
| 
 | |
| Expand filenames with ~ and = on the right hand side of parameter
 | |
| assignments.  New option MAGIC_EQUAL_SUBST to do it in all
 | |
| identifier=expression arguments.
 | |
| 
 | |
| ${+name} becomes 1 or 0 if name is set or unset.  ${~spec} toggles
 | |
| GLOB_SUBST in substitution.  Parameter substitution takes lots
 | |
| of flags in the format ${(flags)name}.
 | |
| 
 | |
| New glob qualifiers for block/character special files, times in glob
 | |
| qualifiers can be in months, weeks, days, hours, minutes.  Qualifiers can
 | |
| work on links or on what they point to.  Qualifiers separated by commas
 | |
| are or-ed.
 | |
| 
 | |
| New parameter substitution modifiers (fFwW) to repeat actions.  New
 | |
| option CSH_JUNKIE_HISTORY.
 | |
| 
 | |
| New line editor functions history-beginning-search-backward,
 | |
| history-beginning-search-forward, expand-or-complete-prefix, push-input,
 | |
| push-line-or-edit.
 | |
| 
 | |
| Assign to part of a string, use qualifiers on string subscription with
 | |
| $foo[(qual)2,5]
 | |
| 
 | |
| New parameters: EGID, EUID, KEYTIMEOUT
 | |
| 
 | |
| New prompt escape sequence %_ to get constructs like for and while in
 | |
| the secondary prompt.  %E in prompt clears to end of screen.
 | |
| 
 | |
| Conditional expressions in PROMPT and WATCHFMT.
 | |
| 
 | |
| New options ALWAYS_LAST_PROMPT, ALWAYS_TO_END, AUTO_PARAM_KEYS,
 | |
| COMPLETE_ALIASES, COMPLETE_IN_WORD, CSH_JUNKIE_HISTORY, GLOB_SUBST,
 | |
| LIST_AMBIGUOUS, MAGIC_EQUAL_SUBST, NO_FLOW_CONTROL, PROMPT_SUBST
 | |
| 
 | |
| New option -m to many builtins makes arguments subject to pattern
 | |
| matching.
 | |
| 
 | |
| Bindkey can now bind both key sequences and prefixes of those.  You can
 | |
| for example bind ESC and function keys sending ESC sequences.
 | |
| 
 | |
| Additional options to read builtin to use in functions called by
 | |
| completion.
 | |
| 
 | |
| New options to print to sort arguments and print them in columns.
 | |
| 
 | |
| Some additional resource limits can be specified.
 | |
| 
 | |
| Some editor functions now work in the minibuffer.
 |