hello --

I've just put vile 9.1 up for ftp at the usual place:

	http://www.clark.net/pub/dickey/vile/vile.html
	ftp://ftp.clark.net/pub/dickey/vile/vile-9.1.tgz

and it is mirrored at

        ftp://ftp.phred.org./pub/vile/vile-9.1.tgz

PC binaries are also available for OS/2, DOS and WinNT.

This release was planned as a bug-fix release to follow 9.0; however a number
of new features have crept in.

Vile is a text editor which is extremely compatible with vi.  It has
extended capabilities in many areas, including:  multi-file editing and
viewing, mouse support, infinite undo, additional operators, rectangular
operations.  optional Perl interface for UNIX and NT.  It can also be built
as "xvile", which is fully X-aware, with scrollbars etc.  It will run under
VMS, BeOS, OS/2, DOS, Win95 or NT.  Binaries for some PC operating systems are
available.  (OS/2 is currently native or EMX console mode port, NT is both
console and GUI).

Highlights since 9.0:

	+ lots of bug fixes, of course

	Aside from ongoing work on syntax, filters, most of the new features
	are related to the Perl5 interface:

	+ add an Exporter-like mechanism to Perl5 interface. Instead
	  of exposing a module's functions to the caller, it exposes them to
	  vile as registered commands.  By renaming the extensions as `.pm',
	  and making some minor changes to use Vile::Exporter, an extension
	  becomes visible by simply adding:
		  use extension;
	  to vileinit.pl.  There is also provision for only including some
	  commands provided by the extension, and for overriding the keybinding
	  defined by the developer (documented in the attached module).
	  Of course you can still say:
		   require extension;
	  and do the registering yourself if you so choose.
	+ rename most .pl files to .pm (makefile.in).

	+ add/improve several perl scripts, including

	  + capture.pl - implements a perl version of capture-command.  This
	    version incrementally updates the window however.

	  + shell.pl - revised to use IO:Pty instead of Comm.pl (which
	    seems to be no longer maintained), and improve the terminal
	    emulation.  It is possible to run simple termcap applications
	    in the shell.

	  + Manual.pm - display embedded POD documentation.

	+ implement watchfd support for the termcap/terminfo version of
	  vile.

	+ implement autocolor, i.e., update syntax highlighting when the
	  keyboard is inactive for a specified period.

	+ Vileserv now also works for vile.

	+ add new Vile::Window module, which may be used to manipulate vile's
	  windows.  Examples of the use of this module may be found in
	  winops.pm

Bug fixes:

	+ correct missing allocation of default help-string for user-defined
	  procedures, which could cause core dump if a procedure were redefined,
	  e.g., by source'ing .vilerc.

	+ make sure window count gets decremented for the window being replaced
	  even if buffer we're replacing it with is already on-screen (fixes a
	  core dump in set-window).

	+ correct bug in wrapmargin/fillcol logic which did not split a line
	  when a newline was inserted into a string containing no blanks after
	  the fillcol position.  Instead, an empty line was inserted.

	+ correct a place where expression evaluation result was overwritten
	  with the nested result in a complex expression from 8.3d.

	+ fix the "BUG:  hit buf end in getregion" message that would
	  frequently pop up when using the perl facilities.

	+ modify xvile so that if the -title option is given, xvile will not
	  automatically set the window's title.  Setting $title explicitly will
	  still work.

	+ fix an extra highlighted character at the end of the last line in a
	  highlighted selection.

	+ refrain from copying previous indent over a line beginning with '#'
	  if cindent is disabled.

	+ expand "~/" expressions for non-UNIX systems, making "so ~/vile.rc"
	  work within a source'd file on WinNT.

	+ correct logic of ')' operator (end of sentence), which would skip
	  past the end of the current sentence (which ended at the end of a
	  line), over following blank lines, to the end of the next text line. 
	  Now it skips into the beginning of the first line following the
	  sentence.  A following call will skip the blank lines to the
	  beginning of the next text line.

	+ when attempting to free more than one buffer by use of a glob
	  expression, don't use recently freed memory after a buffer kill to
	  obtain the next buffer to check.

Several VMS-specific improvements:

	+ enable "kill-buffer <wildcard-expr>" on VMS.

	+ fix to allow accessing multiple versions of DECNET-based files.
	  That is, this now works:
		$ vile node::dir:log.txt;*       <- open all copies of log.txt

	+ add special case to expand_wild_args() for VMS to handle +/string
	  syntax.

	+ changed vmsbuild.com to accept a compiler specification on the
	  command line, which is much more convenient than editing the build
	  script by hand.  compiler defaults to VAXC on Vax hosts and DECC on
	  Alpha hosts.

	+ update README.VMS for building xvile

	+ fix vmsbuild.com for the case of building xvile.exe with VAXC, adding
	  menu.obj to vms_link.opt _before_ the CRT.  That ensures that the
	  linker looks for menu.obj in the cwd, not in sys$library.

	+ fix ttclean() function for xvile on VMS.

Several Win32-specific improvements:

	+ refine logic for gui_resize_in_progress in ntwinio.c so that it
	  only affects the case where a font-sizechange is in progress.
	  This restores the behavior of 8.3d, which allows a user to specify
	  $pagewid and $pagelen in vile.rc to control the initial screensize.

	+ fix a file-descriptor leak in win32 pipes.

	+ correct a file-descriptor leak in npflush for win32, which showed up
	  as undeleted temp-files.  This would happen when opening read/write
	  pipes, e.g., for syntax filtering, when now32pipe was specified.

	+ improve logic of winvile's repaint_window(), so it paints long chunks rather
	  than single characters.  This makes the screen paint properly when
	  switching to an Italic font.

	+ add the Win32 common dialog "save as" feature to both console
	  vile and winvile.

	+ modify directory.pm and dirlist.pm to make them work on win32, i.e.,
	  by not executing portions that will not work (such as mime types).

	+ implement autoscrolling feature for winvile, which makes the buffer
	  scroll in the direction where the mouse leaves the window,
	  automatically extending selection highlighting.

Other new features/improvements:

	+ improve set-window (actually swbuffer()) by initializing a window's
	  traits, e.g., position, from the buffer's traits.

	+ make repeat-count apply to @register commands.

	+ modify backspacelimit mode to allow backspacing through a newline
	  when nobackspacelimit is specified.

	+ add single-quoted strings, which eliminate the need for escaping
	  backslash.

	+ modify the [Color Palette] buffer created by show-colors to make it
	  clearer that the internal codes used in the syntax filters are a
	  single hexadecimal digit.

	+ correct behavior of "Clear Highlighting (below)" menu entry in sample
	  vilemenu.rc which did not clear the final line of a buffer.

	+ add OS/2 EMX and cygwin to list of platforms that must open text
	  files in binary mode, to see trailing carriage-returns on a line in
	  vileinit.rc

	+ cmdtbl, buffer.c:  Added binding / support for ^X-_ aka
	  "historical-buffer-to-current-window".

	+ modify logic in ins_any_time() to interpret control characters which
	  are bound to GOAL or MOTION commands rather than inserting them
	  without quoting.  This allows ^E and ^Y as commands within an insert.

	We made improvements to the overall filter support

	+ add -q switch to filters.c, which forces the filter to exit as soon
	  as it reads its first line of input.  Useful in conjunction with -v
	  and -vv switches.  Necessary for Unix vile (but not win32 vile) if
	  you want to do this:
	      ^X-!~/.vile/vile-c-filt -vvq
	  without hanging the editor's keyboard and forcing the user to type ^C
	  to kill the child process.

	+ improve attribute-from-filter and attribute-cntl_a-sequences-til to
	  allow lengths beyond the end of the current line.

	+ define "Error" class for syntax filters.

	+ implement "before" and "after" qualifiers for majormodes.

	+ add table entries to tcap.c for terminfo italic mode (sitm/ritm),
	  with terminfo's termcap equivalences (ZH/ZR).  If not found, we
	  continue to fallback to underlining.

	+ add variable $error-buffer, use this in manpage.rc to avoid losing
	  the setting when creating a manpage buffer.

	+ change show-colors command to reflect limited number of colors if
	  $ncolors is set to 2, 8 or 16.

	+ modify set_colors() to allow initializing to white/black if termcap
	  or terminfo has no color specified.  This makes the list shown for
	  visual-matches limited to the available colors .

	as well as improvements to individual filter programs:

	+ add tags, X resource, C++, embedded SQL, REXX filters.

	+ improve makefile syntax filter:

	  + color continued comment-lines in makemode.

	  + highlight whitespace in makefiles between backspace and newline as
	    an error.

	  + flag as an error lines that start a quote but
	    do not end it.

	+ improve C syntax filter:

	  + marking misspelled preprocessor keywords as an error.

	  + marking numbers run-on to names as an error,

	  + marking unexpected escapes as an error,

	  + improve c-filt.c's parsing of numbers to flag spuriously-repeated
	    suffixes as errors.

	  + modify c-filt.c show nested-comment as error.

	  + add new C9X keywords to c.key: inline, restrict, _Bool, _Complex,
	    _Imaginary, _Pragma, __STDC_VERSION__, __VA_ARGS__, __func__.

	  + modify c-filt.c to highlight C9X hexadecimal floating constants

	  + modify c-filt.c to flag as an error a multi-line literal which is
	    missing a backslashed newline.  This is allowed by gcc, but the
	    C standard is explicit.

	+ add a syntax filter for vile's .key files, use that to fix some
	  errors in make.key, tcl.key .

	+ improve coloring of literals in vilefilt.l by interpreting strings
	  beginning with ^A, ^X or escape.

	+ modify vilefilt.l to recognize .vilemenu syntax.

	+ improve Perl majormode and syntax filter:

	  + correct special cases of backslashing to handle perl5's
	    MM_Win32.pm, which incidentally contains a syntax error right after
	    "UNINSTALL =".

	  + comment-out the perlmode "while" group, since perl's ambiguities
	    make it not very useful.  Retained the default (if) group, since
	    there are usually more if/elsif/else statements than the others.

	+ improve URL pattern in mail and txt filters, to allow it to match ftp
	  and other URL types, as well as limited the pattern to avoid picking
	  up things like trailing '>' characters.