summary refs log tree commit diff
path: root/Etc/NEWS-4.3
diff options
context:
space:
mode:
Diffstat (limited to 'Etc/NEWS-4.3')
-rw-r--r--Etc/NEWS-4.3356
1 files changed, 356 insertions, 0 deletions
diff --git a/Etc/NEWS-4.3 b/Etc/NEWS-4.3
new file mode 100644
index 000000000..19b3daada
--- /dev/null
+++ b/Etc/NEWS-4.3
@@ -0,0 +1,356 @@
+This file describes changes made during the 4.3 series of releases;
+it is superseded by the description of changes between 4.2 and 5.0
+in the main NEWS file.
+
+
+Changes since 4.3.15
+--------------------
+
+The option HASH_EXECUTABLES_ONLY has been added.  When this is set,
+directories in the command path will be checked for executables before
+they are added to the command table (hash); otherwise, all files in the
+directory are added.  The effect of this option was present in 4.3.15,
+which could cause significant delays when hashing on systems with
+network directories in the path.
+
+Changes since 4.3.12
+--------------------
+
+There are no significant feature changes to the shell itself, although
+many bug fixes and improvements to functions.
+
+Changes since 4.3.11
+--------------------
+
+The zsh/parameter module has a new readonly associative array
+$usergroups whose keys are the names of system groups of which the
+current user is a member and whose values are the corresponding
+group identifiers.
+
+The region_highlight array, which controls highlighting of the
+command line from zle widgets, is now updated dynamically as
+the command line is edited.
+
+In POSIX emulation ("emulate sh") the shell is more accurate about
+when it should or should not exit on errors.
+
+The ${NAME:OFFSET:LENGTH} syntax now supports negative LENGTH, which
+counts back from the end of the string.
+
+The (g:opts:) flag in parameter expansion processes escape sequences like
+the echo and print builtins.  opts can be any combination of o, e and c.
+With e, acts like print rather than echo except for octal escapes which
+are controlled separately by the o option.  With c, interpret control
+sequences like "^X" as bindkey does.  Regardless of the opts, \c is not
+interpreted.
+
+Changes between versions 4.3.10 and 4.3.11
+------------------------------------------
+
+When the shell is invoked with the base name of a script, for example as
+`zsh scriptname', previous versions of zsh have used the name directly,
+whereas other shells use the value of $PATH to find the script.  The
+option PATH_SCRIPT has been added to provide the alternative behaviour.
+This is turned on where appropriate in compatibility modes.
+
+Parameters, globbing, etc.
+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+Parameter expansion has been enhanced to provide the ${NAME:OFFSET} and
+${NAME:OFFSET:LENGTH} syntax for substrings and subarrays present in
+several other shells.  OFFSET always uses zero-based indexing.  The only
+clash with existing zsh syntax occurs if OFFSET begins with an
+alphabetic character or `&', which is not likely.
+
+The (D) flag in parameter expansion abbreviates directories in the
+substituted value.  The (q-) flag does minimal shell quotation of arguments
+for maximum human readability of the result.
+
+The (Z) flag in parameter expansion is an enhanced version of the (z)
+flag that takes an argument indicating how the string to be split
+is treated. (Z:c:) parses comments as strings; (Z:C:) parses comments
+and strips them; (Z:n:) treats newlines as ordinary whitespace: (z)
+has always treated unquoted newlines as shell delimiters and turned them
+into semicolons, though this was not previously documented.
+
+Numeric expansion with braces has been extended so that a step may be
+given, as in {3..9..2}.  The step may be negative as may the start and
+end of the range (this is also new).
+
+The glob qualifier P can be used to add a separate word before each
+match.  For example, *(P:-f:) produces the command line
+`-f file1 -f file2 ...'.
+
+Regular expression matches now use the same variables for storing matched
+components as shell pattern matching.  The function system now provides the
+function regexp-replace for replacing text using regular expressions.  The
+zle widget functions replace-string, replace-string-again, if defined with
+regex in the name (e.g. "zle -N replace-regexp replace-string"), perform
+regular expression matches.  In replacement text \& and \1 have the
+standard meaning.
+
+Line editor and completion
+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+The completion system now has a style path-completion.  Setting this to
+false inhibits completion of paths before the current path component,
+e.g. /u/b/z no longer completes to /usr/bin/zsh.  This is useful on systems
+where this form of completion is pathologically slow due to network
+performance.
+
+With the MULTIBYTE option, the line editor now highlights bytes in the
+input that are not part of a valid character in the current locale in hex
+as <XX> for hex digits X; highlighting is controlled by the "special"
+keyword in the zle_highlight array.  These can be distinguished from
+unprintable Unicode characters which also use "special" highlighting as the
+latter are always two or four bytes long, e.g. <XXXX>, <XXXXXXXX>.
+
+zle_highlight also controls highlighting of a removable completion
+suffix, e.g. the "/" automatically appended to directories.  This uses
+the keyword "suffix".
+
+The line editor now sets the variable ZLE_LINE_ABORTED if there is
+an error when editing the line.  The following code can be used
+to create a bindable editor widget to restore the aborted line:
+  recover-line() { LBUFFER=$ZLE_LINE_ABORTED RBUFFER=; }
+  zle -N recover-line
+and then either bind recover-line to a key sequence or use
+`M-x recover-line <RET>'.
+
+The parameter ZLE_STATE, available in user-defined line editor widgets,
+gives information on the state of the line editor.  Currently this is
+whether the line editor is in insert or overwrite mode.
+
+Miscellaneous options
+-+-+-+-+-+-+-+-+-+-+-
+
+The new shell option HIST_LEX_WORDS causes history lines read in from
+a file to be split in the same way as normal shell lines, instead of
+simply on whitespace.  It's an option as although the result is more
+accurate it can take a long time when the history size is large.
+
+The shell option MONITOR can be set in non-interactive shells, and also in
+subshells (as created by surrounding commands with parentheses), turning on
+job control for that subshell.  The initial behaviour of a subshell is
+still to turn job control off, however if the new POSIX_JOBS option is set
+MONITOR remains active in subshells.
+
+The new shell option POSIX_CD, active in emulations of POSIX-based shells,
+makes the cd builtin POSIX-compatible.
+
+The POSIX_JOBS option already referred to has various other
+compatibility enchancements.
+
+The new shell option POSIX_STRINGS makes a null character in $'...'
+expansion terminate the string, as is already the case in bash.  This is
+not particularly useful behaviour but may become a POSIX requirement.
+
+The new shell option POSIX_TRAPS causes the EXIT trap to behave in the same
+way as in other shells, i.e. it is only run when the shell exits.
+
+The new shell option SOURCE_TRACE causes the shell to report files
+containing shell code that the shell executes directly, i.e. startup files
+or files run with the `source' or `.' builtins.
+
+The shell option SUN_KEYBOARD_HACK has been supplemented by a more general
+mechanism: the KEYBOARD_HACK variable defines the character to be ignored.
+
+Add-on modules and function
+-+-+-+-+-+-+-+-+-+-+-+-+-+-
+
+The module zsh/system has a new "zsystem" builtin whose subcommands perform
+system level tasks.  Currently "zsystem flock" performs advisory file
+locking (for aficionados, this uses the fcntl() system call so works over
+the network on Linux).  This is a particularly convenient way of locking
+files for the length of a subshell.  "zsystem supports flock" provides a
+test for this feature.
+
+There is now a function system for recording and restoring recently
+entered directories in a persistent fashion, with support in completion
+and (if explicitly installed) dynamic directory expansion.  See the
+entry for cdr in the zshcontrib manual page.
+
+
+Changes between versions 4.3.9 and 4.3.10
+-----------------------------------------
+
+The command "emulate <mode> -c ..." evaluates an expression in a given
+emulation.  The emulation is sticky for functions defined within the
+expression.
+
+The variable CORRECT_IGNORE gives a pattern that can be ignored
+in spelling correction.  CORRECT_IGNORE='_*' ignores completion functions.
+
+The option POSIX_ALIASES improves compatibility of aliases with other
+shells.
+
+The variable ZSH_PATCHLEVEL can be used to test for unreleased versions of
+the shell; it is present but less useful in released versions.
+
+The variables ZLE_REMOVE_SUFFIX_CHARS and ZLE_SPACE_SUFFIX_CHARS allow more
+control over the way automatically removed suffixes are treated in
+completion.
+
+Major changes between versions 4.3.6 and 4.3.9
+----------------------------------------------
+
+The option COMBINING_CHARS has been added.  When it is set, the
+line editor assumes the terminal is capable of displaying zero-width
+combining characters (typically accents) correctly as modifications
+to the base character, and will act accordingly.  Note it is not set
+by default owing to vagaries of terminals.  The system is reported
+to work on MacOS, where this is particularly important as accented
+characters in file names are stored in their decomposed form (i.e.
+with base and combining characters).
+
+The option HIST_FCNTL_LOCK has been added to provide locking of history
+files using the system call fcntl().  On recent NFS implementations this
+may provide better reliability.
+
+The syntax ~[...] provides a dynamic form of directory naming,
+supplementing the existing static ~name syntax.  A user-defined shell
+function, zsh_directory_name, is used to handle both expansion of names to
+directories and contraction of directories to names.
+
+Patterns can now be used in incremental searches with the new widgets
+history-incremental-pattern-search-backward and
+history-incremental-pattern-search-forward.  These are not bound to
+keys by default.
+
+Highlighting and colouring of sections of the command line is now
+supported, controlled by the array parameter zle_highlight and the ZLE
+special parameter region_highlight.
+
+Colouring of prompts is now supported within the shell by prompt
+escapes.  The prompt theme system has been updated.
+
+Various changes have been added to make debugging of shell code easier:
+  - As noted in README, the option DEBUG_BEFORE_CMD is now set by default.
+  - In DEBUG traps, $ZSH_DEBUG_CMD gives the code for which the trap is
+    called as a string.
+  - "setopt ERR_EXIT" in a DEBUG trap causes the code not to be executed.
+  - $ZSH_SUBSHELL indicates the subshell level at which code is being
+    executed.
+  - The zsh/parameter module has various additional arrays similar to
+    the existing $funcstack and $functrace, namely $funcsourcetrace
+    and $funcfiletrace.  The consistency and informativeness of
+    the output of all these arrays has been improved.
+  - Prompt escapes %x and %I show the source file and line number in
+    debug prompts (compare %N and %i which show names and line numbers
+    in the execution environment).
+  - The option NO_MULTI_FUNCDEF can turn off multiple definition of
+    functions at once, a rarely used feature that can cause problems
+    with misplaced "()".
+  - The "fc" builtin has been enhanced to make non-interactive use possible
+    and output consistent when the history is manipulated with "print -s".
+
+The completion style accept-exact-dirs has been added.  When true, this
+suppresses attempts to complete non-final directory segments of a filename
+path when the directory exists.  (For example, /home/pws/src/zsh/<TAB>
+discovers that /home/pws/src/zsh exists and leaves the directory component
+alone, while /h/p/s/z/<TAB> completes to /home/pws/src/zsh/... as before.)
+This should improve completion behaviour noticeably in special cases, such
+as remote paths under Cygwin.
+
+Major changes between versions 4.3.5 and 4.3.6
+----------------------------------------------
+
+cd, chdir, pushd and popd now take a -q option to suppress side effects
+including printing the directory stack (for pushd and popd) and executing
+the chpwd hook functions (for all four).
+
+The parameter subscript (e) flag now forces the argument to be treated
+as a string where it would previously have been treated as a pattern,
+for example ${array[(ie)*]} substitutes the index of the element whose
+value is "*".
+
+Major changes between versions 4.3.4 and 4.3.5
+----------------------------------------------
+
+- The new extended globbing flag (#cN,M) behaves similarly to the extended
+  regular expression syntax {N,M}.
+
+- The zsh/datetime module has been enhanced and a calendar function
+  system has been added along the lines of (but much enhanced from)
+  the traditional Unix "calendar" utility.  This is still under
+  development.  See the zshcalsys manual.  (The calendar functions
+  were in 4.3.4 but were not listed in this file.  There have been
+  significant enhancements since 4.3.4.)
+
+- A new module zsh/curses provides a builtin zcurses for access to
+  to the curses screen manipulation package.  See the entry for zsh/curses
+  in the zshmodules manual.
+
+- The module system has been enhanced to support the notion of "features"
+  that give more control over which builtins, parameters, conditions
+  and math functions are loaded from a module.  In particular,
+  "zmodload -F zsh/stat b:zstat" makes the builtin previously called
+  "stat" available as "zstat" (only) to avoid clashes with a system
+  command named "stat".
+
+Major changes between versions 4.2 and 4.3.4
+--------------------------------------------
+
+- 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.
+
+- Time comparisons on files when sorting or using test operators will
+  use high-resolution timestamps when available.  This gives a
+  resolution of a nanosecond instead of a second.
+
+- 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.