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 " 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.