hello -- I've just put vile 9.0 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.0.tgz and it is mirrored at ftp://ftp.phred.org./pub/vile/vile-9.0.tgz PC binaries are also available for OS/2, DOS and WinNT. For those that are new around here, don't be put off or excited by the '9' in "9.0". It just means it's the first release of 1999. Normally we would release earlier in the year. However, we decided some months ago, before 8.3, to rewrite those portions of vile which encumbered it, preventing us from releasing it under more liberal terms. 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 8.0: + lots of bug fixes, of course + removed/rewrote code which would prevent us from making vile available under more liberal licensing. + change copyright notice to distribute vile using GPL. + several performance improvements for cursor movement and ruler updates when viewing files with very long lines. + make vile simpler to set up for new users, e.g., a -I option to use and source a startup script, fallback color resources for xvile. + improved syntax filtering The external syntax highlighting filters are now much faster, mainly because vile uses a new command attribute-from-filter to apply their output directly as attributes to the buffer rather than modifying (and allowing undo). Changed the organization of the keyword files for the syntax filters so they are associated with the majormodes. The old-style keyword files did not distinguish keywords and the classes which they fall into. An identifier "Comment" in the old-style would be highlighted, though it is a class. Syntax filters are defined for the predefined majormodes which include RCSmode javamode potmode SCCSmode jsmode pymode adamode keymode shmode awkmode latexmode sqlmode batmode lexmode tblmode cmode m4mode tcmode cshmode mailmode tclmode cwebmode makemode timode dclmode mmsmode txtmode diffmode nrmode vilemode fdlmode pasmode xsmode htmlmode perlmode yaccmode imakemode Because each syntax type requires a separate program, these are installed in a separate library directory, to avoid clutter. Some majormodes (e.g., C, Java, JavaScript) use the same syntax filter. The majormodes and associated filters are defined by sourcing filters.rc, which is installed. + add "group" feature to majormodes, which allows user to define new instances of certain submodes. We use the "group" feature in complex fence-if, ..., fence-fi + make C-style indent logic available as a mode 'cindent', so it can be assigned as part of a majormode. It is part of the builtin cmode but is useful for Perl. + added color schemes, associating fcolor, bcolor, $palette and an optional video attribute. These commands manipulate the schemes: define-color-scheme remove-color-scheme show-color-schemes + new module ucrypt.c uses Unix crypt(1) if available. renamed crypt.c, moved it to filters as ecrypt.c, for building standalone vile-crypt. it will be phased out. removed crypt-til operator; this could not work properly on portions of a file. + we implemented several new macro directives: ~local which saves the current value of $variables and %variables, restoring them at the end of the buffer/macro which is being executed. This does not (yet) apply to mode values. ~hidden macro directive, to suppress 'update()' logic and status check for the current macro line. ~with and ~endwith, to simplify majormode expressions. ~elsewith directive to simplify use of fences in macros. + extended the set of builtin macro functions and associated variables and commands, making some changes for readability: "&cclass" function, and set-char-class, unset-char-class and reset-char-classes commands. "&execable" test for files. "&lookup", "&path" and "&pcat" to provide support for external pathname manipulation. "&pquote" to simplify use of "&lookup" when the result might contain spaces, and $exec-suffix variable. "&random" as alias for "&rnd", "&readable" as alias for "&rd", make all &function names long enough to be more readable. "®ister" function, so the contents of an internal register may be manipulated in macros. "&word" and "&token" for simple parsing of strings. + implement parameters for procedures. Vile uses a parameter template in the store-procedure command which is integrated with prompting for missing values. + we have icons: there are .ico, .xbm and .xpm versions of the most popular icons for xvile and winvile. Several VMS-specific improvements: Terminal driver: + modify vmsvt.c to support video attributes bold, underline and flash + implement $sres, i.e., 80/132 column switching. we now use SMG to get control sequences for 80/132 column switching. vile restores original terminal width when it exits (mimics the eph editor's behavior). Modes and variables: + implement modes for record-format and record-size vile now creates stream-lf files by default (in the past the editor created VARiable-record-length files). Other changes: + modify VMS logic in ttopen to use "SYS$COMMAND" rather than "TT:" since the latter does not work with the PIPE command added in VMS 7.x to mimic unix cmdline pipe functionality. + vile now accesses DECNET-based files without error. The fstat() call which we normally use to obtain the file size may fail in this case. Since we already know the file exists, we work around the problem. Several Win32-specific improvements: + implement drag/drop for winvile. + allow adjustment of window size in win32 versions (vile, winvile) by dragging the modeline. Clicking on a modeline clears the selection. + add winopen and winopen-cd commands to w32 vile. + added wvwrap.exe to the Win32 distribution. This utility opens one or more files in a _single_ winvile instance via a right mouse click in the Windows Explorer. For more details, please read doc/oleauto.doc . + a new "sync-file" command enables synchronization of winvile's current buffer with the DevStudio text editor. Other new features/improvements: + win32 versions of editor now support the $title environment variable (users can now set and display title from a macro). + new perl scripts: - lock.pl is a simplistic extension to allow you to lock your vile - spell.pl is a spell checker within vile that behaves (almost) like ispell (and in fact does use ispell internally). - add Vileserv.pm, vileget perl scripts, which give you the ability to send edit requests to a running Vile, like gnuserv does for Emacs - add directory browser extension for vile written with the perl interface + implement wildcard matching in :kill-buffer, so one can do :ki *.log + implement name-completion for commands that expect a buffer name.