hello -- I've just put vile 9.2 up for ftp at: http://www.vile.cx/ http://dickey.his.com/vile/ ftp://dickey.his.com/vile/vile-9.2.tgz and it is mirrored at ftp://ftp.phred.org./pub/vile/vile-9.2.tgz PC binaries are also available for OS/2, DOS and WinNT. 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. Vile has an optional Perl interface for UNIX and NT. It can also be built as "xvile", which is fully X-aware, or "winvile" for Win32, with scrollbars, menus, etc. It runs 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.1: + lots of bug fixes, of course + improve performance of syntax highlighting with new line-based attribution mechanism. + improve performance of syntax highlighting with configure option for compiling-in any of the syntax filters. Use the configure --with-builtin-filters option. Both internal (built-in) and external filters are supported. + add command attribute-directly, to invoke internal filter on the current buffer. External files are still used for the keywords, but this can eliminate the subprocess and pipes for filters that are built-in. + add key binding functions for the different editing modes (insert, command, minibuffer and default), making it simpler to bind a space or tab to a given function without having it confused for a function while in insert mode. Bug fixes: + suppress logic in termcap/terminfo driver that resets colors when the terminal does not support color. Otherwise, reverse video and other non-color attributes do not work. + correct modetbl entry for &sless function, which was returning a string rather than a boolean (this was broken between 8.2 and 8.3). + correct logic for &left and &middle functions, which returned one too many characters after 8.3d + rewrite logic for majormode "after" and "before" keywords, fixing a potential infinite loop. + correct missing check for backslash within a character range in regatom(), which caused patterns such as "[^\[\]]" to match any character other than left bracket which was followed by a right bracket. + correct a case in minibuffer editing which did not completely restore the buffer position when an error was found. This led to passing an empty buffer with an associated nonzero position to fill_partial(), which dumped core. + several fixes to ensure that autocolor does not repaint the screen in the middle of operations such as highlight-selection. + correct behavior of implybuffer mode when the specified file is being appended to. Given ":w >>foo", it was making a buffer named ">>foo". + correct computation of 'diff' variable in tcapattr(), and add a check for coincidence between strings that are used to turn off corresponding video attributes. The first error made vile turn off the wrong attributes under some conditions, and the second would cause it to omit turning back on attributes that it had inadvertently turned off. + rephrase loop in purge_line_attribs() to handle the case where the ending line-pointer is at the end of the buffer. This makes the ^A-NG command (clear-attributes-til) work when the cursor is on the first line. + modify logic for name-completion to force the cursor to the end of the input buffer before attempting to complete. Otherwise, partial completions could be written in the middle of the buffer. + modify logic in kbd_reply() to set last_eolchar from the given eolchar, e.g., '=', rather than the current contents of execstr, since that may contain an arbitrary character such as the first one of an identifier. That made commands such as setl autowrite=false in a macro not work, since 'f' (false) was used. + recover if a 'source' command results in runaway recursion, e.g., if foo.rc contains the line "source foo.rc". Several Perl-specific improvements: + Vileserv now uses the registry, so 'perl "use Vileserv"' in your .vilerc automagically adds the commands startserv, stopserv, and vileserv-help. + Vileserv tries to be smarter about finding your perl binary. The Vile variable %vileserv-perl-path can be used for customization. + Vileserv tries to be smarter about the socket path that it uses. The environment variable VILESOCK, as well as the Vile variable %vileserv-socket-path can be used. Also, vileget supports an option for overriding the socket path. The default location is still ~/.vilesock. With a little scheming, you can now run and control multiple XVile sessions on one host, or use Vileserv on multiple hosts with a shared home dir. + Vileget now uses the -d option to change XVile's working directory. This is an interface change from version 1.1, where the -c option was used for this. + Vileget now uses the -c and -C options for passing arbitrary Vile commands to a running XVile. See the vileget manual page ('perldoc vileget') for more info on this. Please note the necessary Vile variable %vileserv-accept-commands. + modify perl.xs to allow perl operators to be used with a range. + added gdb.pm, which runs gdb in a vile window and tracks changes in editor. (Must be used with shell.pm.) + modified to build with Perl 5.6.0, and some workarounds for functionality that changes with that version. Several Win32-specific improvements: + add reset-rgb-palette command for winvile. + add set-rgb-palette command for winvile. + win32 console vile now has "true" autoscroll support + implement type-ahead for winvile + modify winvile to continuously show the geometry during a resize. + fix winvile ":sh" command, which used to pop up a separate window, but does not as of 9.1 In 9.1, ":sh" on a win32 host is executed as "$shell {-c|/c} $shell". As it turns out, cmd.exe's intrepretation of the /c switch is to run the specified command and exit immediately. Fix by launching $shell via CreateProcess(). + modify filter keyword-file search to avoid concatenating $HOMEDRIVE when $HOME already specifies the device in home_dir(). + winvile's right mouse menu includes these new context-sensitive commands: cmd name bound to txt slctn txt slctn must rqd? be in curbuf? -------- -------- --------- ------------- undo undo-changes-backward redo redo-changes-forward cut cut-to-clipboard X X copy copy-unnamed-reg-to-clipboard X paste paste-from-clipboard delete delete-text-selection X X + added a winvile `about' box (available from the System Menu). + initialize the winvile "Save As" dialog with the name of the current open file. + added cut-to-clipboard (windows Cut) and delete-text-selection (windows Delete) to [win]vile. The former is bound to Shift+Delete, the latter to Alt+Delete. Both commands require a current text selection. + enable tilde-expansion + correct glob test for "~" which can be expanded as user's home directory. The test allowed expansion of tilde at points other than the beginning of a path component, which can happen on win32. + ensure that a console window is created for the ":sh" command when winvile is invoked from a GUI rather than the command-line. + allow pasting of one line of text into mini-buffer. + winopen, winopen-nocd, winsave, and winsave-nocd accept an optional directory argument, which specifies the initial directory opened by the Open/Save Win32 common dialogs. + added the state variable $favorites, which returns the path to the Windows Favorites directory. Added a "Favorites" menu selection to winvile's RMB menu, which executes the command "winopen $favorites". + correct char_no() function to use record-separator length, so $curchar is evaluated properly for dos files, e.g., for ^G command Other new features/improvements: + lots of small improvements to syntax filters, including a rewrite of the perl filter. Majormodes: + add reset-majormode command, which tells vile to recompute the appropriate $majormode for the current buffer. + modify majormode suffix matching to use the ignorecase mode values for those systems that are normally case-sensitive, making this work for names such as "FOO.BAT" which happen to be uppercase. Other Modes: + add highlight mode, which when disabled prevents the corresponding buffers from being syntax-highlighted. + add insert-exec mode to control logic in ins_any_time() which interprets control characters which are bound to GOAL or MOTION commands rather than inserting them without quoting (see 9.0a and 9.0b changes). This restores the default behavior, since some users had control characters bound to a function which was then executed. + add pin-tagstack mode, which prevents the editor from switching windows during a tag/push operation (i.e., all tag ops are pinned to the current window). + add unique-buffers mode, which does dev/inode checking to be sure files aren't edited more than once. + modify implybuffer mode so that if the buffer already exists and is not modified, it will be automatically reread. Syntax Filters: + add syntax filters for sed, imake + implement abbreviations for syntax keywords, using '*' as the default delimiter. + filters now attribute multi-line regions when appropriate, e.g., multi-line comments in C. + improve decoding of ANSI escape sequences in manfilt.c, including parsing of foreground colors. + show unterminated quotes in m4, sh, make and perl filters as an error. Macros and Scripting Support: + add command unset-variable, which resets the given variable to a null or default value. This is useful only for the $-variables, since modes require a value. + add uppercase "TRUE" and "FALSE" to fsm_bool_choices[], so assignments to boolean modes work properly within a macro. + add &dquery function which prompts for input with a given default value. + implement function &error, which returns true if its argument was an ERROR token. Modify built-in functions to return ERROR if an argument was ERROR. + add built-in function &filter, to tell if the given majormode has a built-in filter. + add variable $filename-expr, to specify the actual pattern used for %F in [Error Expressions]. On DOS and Win32, this is initialized to a more complex pattern, to accommodate drive letters. + add variable $xshell-flags to allow customising $xshell. + make the ~local directive work for modes. + add ~trace directive, which sets or reports the value of the $debug variable. Use this to trace into internal buffer [Trace]. + add example macro AddError to vile.hlp which illustrates how to add a string to [Error Expressions]. + add macros/color-ls.rc, example using improved manfilt.c to display color ls output in a buffer. + modify macros/manpage.rc to use lynx to render html files. This uses the development version of lynx (2.8.4dev.3, with the -stdin and -with_backspaces options). + modify macros/manpage.rc to unset the filename associated with the buffer so it does not display. This ensures that the ruler is always visible. + add macros/shifts.rc, which implements left/right shifting of words in the current line to align with the cursor. Building/Porting: + implement a curses/ncurses terminal driver. Use --with-screen=curses or --with-screen=ncurses to configure this. No mouse is supported in this configuration. This version builds only with SVr4 curses or ncurses. + add configure --with-ncurses option, e.g., for OS/2 EMX which has an unusable termcap library. Other Changes: + modify 'setv' logic to provide the current value of a variable when setting it. + implement name-completion for user variables, e.g., %foo. + shorten the confirmation questions/messages that result from modtime checking. with very long buffernames the current messages extend past the 80 column boundary, making the tail end of the question invisible in some cases. + improve performance of majormode initialization. + modify color support in xvile to allow the pre-8.3s color scheme as a special case: setting bcolor to fcolor makes xvile use the bcolorN resources on syntax-highlighted text rather than the color selected by bcolor (which is actually taken from the fcolorN resource in this case). + rewrote filters/makefile.wnt to generate lists and rules using scripts reading genmake.mak, to facilitate building internal or external filters. + for several select cases, when a long path causes message line text to exceed the current window width, that path is shortened on the left until the message text fits (if possible). Those select cases include failure to save a file, reading in a new file, and writing out (or appending to) a file. + add %c and %l format types to finderr.c, which use 0-based offsets rather than 1-based offsets. + modify handling of motion commands in minibuffer editing to use new table data that indicate commands that cannot be used in minibuffer editing motions. + improve color comparisons in xvile to compare RGB components when their difference is relatively small. Add a check for the default resource value of fcolor0, forcing that to black if xvile's foreground does not look different from white. This makes some of the color palette commands, e.g., :set cs=black work properly. + annotate the verbose form of which-source and which-exec, showing the corresponding variable for each path which is tested, e.g., "$PATH" when checking items in $PATH. + added pushd, popd, dirs commands with accompanying [DirStack]. + accept -i option as an alias for -I, which has the added benefit of allowing vile to be used as a $SHELL value for script, since that passes a -i option to the "shell".