zsh-users
 help / color / mirror / code / Atom feed
* 4.2.0 released
@ 2004-03-19 11:36 Peter Stephenson
  2004-03-19 15:41 ` Bart Schaefer
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Stephenson @ 2004-03-19 11:36 UTC (permalink / raw)
  To: Zsh users list

Version 4.2.0 of zsh is now on the web site at ftp.zsh.org and I will
upload it to Sourceforge later day if nothing seems to be catastrophically
wrong.

Thanks to everyone who worked on this.

In case you haven't been following, the entry from the NEWS file is
below.

The biggest priority now is UTF8 support, but I don't know who, if
anyone, is actually going to be working on this.


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

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 4.2.0 released
  2004-03-19 11:36 4.2.0 released Peter Stephenson
@ 2004-03-19 15:41 ` Bart Schaefer
  2004-03-19 16:39   ` Peter Stephenson
  2004-03-19 16:45   ` Lloyd Zusman
  0 siblings, 2 replies; 4+ messages in thread
From: Bart Schaefer @ 2004-03-19 15:41 UTC (permalink / raw)
  To: Zsh users list

Assorted thoughts ...

On Mar 19, 11:36am, Peter Stephenson wrote:
}
} - 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.

Reading that, I wonder ... why did we do this with suffixes?  Why not be
Unix-like rather than DOS-like:  check /etc/magic on any file that the OS
fails to execute, and choose the command based on that?

Of course that would have required a module.

} Line editor:
} - recursive editing

Which is not quite the same as recursively invoking zle, e.g., I think you
still get some sort of warning if you try to run "vared" from inside a
widget function.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 4.2.0 released
  2004-03-19 15:41 ` Bart Schaefer
@ 2004-03-19 16:39   ` Peter Stephenson
  2004-03-19 16:45   ` Lloyd Zusman
  1 sibling, 0 replies; 4+ messages in thread
From: Peter Stephenson @ 2004-03-19 16:39 UTC (permalink / raw)
  To: Zsh users list


Bart Schaefer wrote:
> Assorted thoughts ...
> 
> On Mar 19, 11:36am, Peter Stephenson wrote:
> }
> } - 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.
> 
> Reading that, I wonder ... why did we do this with suffixes?

Easy to implement, simple to use, does the basics of what you actually
need, quick at run time (no pattern matching), nobody offered to write
anything else ...

It's still possible to add a generic pattern matcher, if anybody wants
to.  Since I can't actually imagine using it myself (unlike suffix
aliases), I selfishly don't feel like doing it.

> Why not be
> Unix-like rather than DOS-like:  check /etc/magic on any file that the OS
> fails to execute, and choose the command based on that?

Well, that's even more difficult, but yes, it's perfectly reasonable to
add a hook on failure to execute.  It could do other things, like check
#! lines and see if the path to the executable is wrong and the
executable can be found in the path.

Warning to anybody doing this:  error numbers on failed execution can be
a bit tricky.  You need to handle ENOENT as well as ENOEXEC (and
possibly others).

I'm not actually sure what state the shell is in execute(), i.e. whether
it could run such a handler as a function or would need to exec it
externally.  The latter, at least, is pretty simple to add.

> } Line editor:
> } - recursive editing
>
> Which is not quite the same as recursively invoking zle, e.g., I think you
> still get some sort of warning if you try to run "vared" from inside a
> widget function.

Yes, it's recursive within the widget system, not at the level of the
main execution loop.  You have to use a special widget; the editor
itself is not reentrant.

-- 
Peter Stephenson <pws@csr.com>                  Software Engineer
CSR Ltd., Science Park, Milton Road,
Cambridge, CB4 0WH, UK                          Tel: +44 (0)1223 692070


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: 4.2.0 released
  2004-03-19 15:41 ` Bart Schaefer
  2004-03-19 16:39   ` Peter Stephenson
@ 2004-03-19 16:45   ` Lloyd Zusman
  1 sibling, 0 replies; 4+ messages in thread
From: Lloyd Zusman @ 2004-03-19 16:45 UTC (permalink / raw)
  To: zsh-users

Bart Schaefer <schaefer@brasslantern.com> writes:

> Assorted thoughts ...
>
> On Mar 19, 11:36am, Peter Stephenson wrote:
> }
> } - 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.
>
> Reading that, I wonder ... why did we do this with suffixes?  Why not be
> Unix-like rather than DOS-like:  check /etc/magic on any file that the OS
> fails to execute, and choose the command based on that?

... or perhaps to rely on a regex match on the file name, instead
of either a suffix or /etc/magic.


> Of course that would have required a module.

Would it require a module simply if it's a regex match?


> [ ... ]

-- 
 Lloyd Zusman
 ljz@asfast.com


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-03-19 17:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-03-19 11:36 4.2.0 released Peter Stephenson
2004-03-19 15:41 ` Bart Schaefer
2004-03-19 16:39   ` Peter Stephenson
2004-03-19 16:45   ` Lloyd Zusman

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).