[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vile] vile-9.6 release

From: Thomas Dickey
Subject: [vile] vile-9.6 release
Date: Thu, 27 Dec 2007 22:49:10 -0500
User-agent: Mutt/1.5.17 (2007-11-01)

hello --

I've just put vile 9.6 up for ftp at:

and it is mirrored at

PC binaries are also available for 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, QNX, 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.6:

    + Bug fixes, lots.  See the CHANGES file for details.

General changes

    + implement basic support for Unicode (see Locale Improvements).

    + implement vi-style modeline, limited to setting buffer- and window-
      modes, or majormodes.

    + implement patterns as line-specifiers in ex-mode.

    + revised command-line option parsing to use scripting more effectively:

      + multiple startup files are allowed.

      + most command-line options are translated to their equivalent script
        and executed, rather than saving state for the most recent of each
        option.  This makes the -s, -S, -g, -G options obsolete (but still

      + add "-c" option (the POSIX form of "+").

    + disallow source'ing from the current directory if the source'd file
      might be writable by other users.

    + make mouse work for curses driver just like the termcap/terminfo

    + improve majormodes for complex fences by initializing the (non-string)
      buffer mode values for submode groups according to the values in
      the submode.  This makes ignorecase work as expected in the complex
      fence matching for vbmode.

    + improve name-completion by saving/restoring the original window and
      buffer when [Completions] closes, rather than the closest window.

    + add named marks for decimal digits .

    + modify ":describe-bindings" to show whether the command accepts a
      range, and whether it is undoable.

    + correct comparisons used for handling bounds in regular expressions,
      e.g., the "2" in "\(this\|[l-m]\)\{2\}".

    + change behavior of regular expression OR'd alternatives - only the
      first match was used rather than the longest one.

    + modify "filename" shown in :show-filtermsgs to use the buffer name
      if no filename is available.

Locale Improvements

    + several changes to provide usable Unicode support:

      + add mode percent-utf8 to set a threshold for file-encoding mode
        "auto" detection of UTF-16/UTF-32 files.

      + file-encoding mode can be set to "auto", to detect UTF-16 files,
        which are loaded as UTF-8.

      + UTF-8 files are detected based on the file-encoding mode as well.

      + Unicode values are displayed (where no locale controls) as "\uXXXX"
        in 4 hexadecimal digits.

      + add unicode-as-hex mode to override locale, forcing Unicode values
        to display as "\uXXXX".

      + for buffers with UTF-8 encoding, show illegal bytes as "\?XX".

      + Unicode values can be inserted into buffers using ^VuXXXX form.

      + modify manfilt.c to provide UTF-8 output in a UTF-8 locale.


      + terminal drivers support Unicode display in varying degrees:

        + winvile - multicolumn characters, depends on font selection

        + termcap/terminfo - relies on terminal emulator, knows about
          multicolumn characters

        + xvile - displays only single-column characters

        + curses - depends on the curses library, e.g., ncursesw

        + win32 console - not yet implemented

      + combining characters are not combined.

      + registers hold byte data, will show the UTF-8 encoding for data
        rather than a \uXXXX (unless the file-encoding for [Registers]
        is changed).

      + some "characters" such as the report for yanked text is still
        really a byte-count.

      + inserting a \uXXXX into the minibuffer will display the UTF-8

      + regular expressions are not wide-character aware.

      + UTF-16 and UTF-32 files are detected based on BOM and/or the
        contents of the first line of the file.

      + external syntax filters do not handle BOM or UTF-16, UTF-32.

    + add character classes [:ident:], [:octal:] and [:path:], and change
      the association of \w and \W to [:ident:], making [:alnum:] no longer
      include "_".

    + modify regexp.c so tab is not matched by \p or [[:print:]] for
      consistency with POSIX regular expressions.

New Commands

    + add rename-other-buffer command, use that to modify spell.rc so it
      can work with scratch buffers which otherwise would be lost, e.g.,

    + add "describe-&functions" and "describe-$variables" commands.

    + add ":goto-percent" command.

    + add (nvi/vim) ex-commands: a!, c!, i!

    + add ":c" as alias for ":change-til" (nvi/vim).

New Modes

    + UTF-8 is supported via new modes "byteorder-mark" and

    + add mode xterm-fkeys, to allow termcap driver to generate
      shift/control/alt modifiers for function keys.

    + add "rectangle-insert-mode".

    + add "showvariables" mode, for testing expressions used in [Variables].

    + add "echo-to-clipboard" mode for Win32 hosts:
      all text selected with the mouse is automatically
      copied to the Windows clipboard.

    + add "bufname-expr", "identifier-expr" and "pathname-expr" buffer modes to
      provide regular expression parsing of $bufname, $identifier and $pathname
      in the show-variables command as well as for the related expansion of
      tokens from the cursor position.  If the expressions are empty, the code
      falls through to use the corresponding older character-class parsing.
      Default values are provided for each *-expr mode.

    + add cursor-tokens mode to control whether vile uses regular
      expressions, character classes or a combination to obtain tokens
      from the screen.

New Variables and Functions

    + add new symbols "$return" and "$_" which can be used to implement simple
      functions .

    + add "%n" and "%N" substitutions for $title-format

    + change "%n" in modeline substitutions to use file name (pathleaf)
      rather than relative path (shorten_path).  Use "%r" for the latter.

    + add "&gtmotion" function for scripts.

    + add $buf-fname-expr to show the combined bufname-expr, pathname-expr
      used to interpret ^X-e.

    + improve handling of enumerated values by forcing all to lowercase,
      e.g., to eliminate the need for the special case in 9.1x to handle
      "TRUE" and "true".

    + update title when doing a "cd", in case it uses %r substitution.

Syntax Filters
    + modify syntax filters to use flex's character classes.

    + add configure check for lex's which support character classes, and
      add filters/ to work around those which do not.

    + several new majormodes, with corresponding syntax filters:

        + add confmode for "ordinary" config-files.
        + add csmode (for C# ".cs" files).
        + add csvmode for ".csv" files.
        + add delphi mode
        + add docbookmode
        + add lua mode
        + add mcrlmode for mCRL/mCRL2 modeling language.
        + add midlmode, for Microsoft IDL.
        + add rtfmode for RTF files.
        + add wbtmode for WinBatch.
        + add xpmmode
        + add majormodes for bnf, css, php

    + extend suffixes for several majormodes:

        + add ".ebuild" suffix for shmode.

        + modify preamble for xml- and html-modes to ensure that the first
          tag determines the type.

        + add output from rcshist to diffmode.

        + add ".vbp" files to inimode.

        + add ".reg" files to inimode.

        + add ".ddl" suffix to sqlmode.

        + add ".dsr" suffix to vbmode.

        + add several package-related suffixes to sqlmode.

    Other improvements to majormodes:

    + modify majormode inferencing to check preamble for [Standard Input]
      and [Output] buffers.

    + modify preamble patterns for shell modes such as awk, etc., to allow
      for programs without an absolute pathname, e.g., "#! awk".

    + improved cppmode's identifier-expr.

    + updated python keywords

    + improve bas-filt.l by not highlighting incidental matches in the
      attribute section of a Visual Basic form-file.

    + add section definitions to vbmode.

    + add complex fences to vbmode.

    + improve vl-filt.l based on Verilog LRM draft

    + fill in complete list of event names for xres.key from Xt/TMParse.c

    + fix sh-filt.l for parameter substitutions containing an escaped
      quote, e.g.,
            VERSION=${VERSION#*VERSION \"}

    + change htmlfilt.l to highlight character- and URI-references as
      numbers to make them distinct from strings with ordinary text.

    + add "+", ",", "&", "@" and ";" to URL patterns in filters.

    + fixes for termcap syntax highlighter, i.e., tcmode:
      + allow description field to be empty
      + color the "|" between aliases.
      + improve string- and escape-parsing

    + fixes for terminfo syntax highlighter, i.e., timode:
      + allow description field to be empty
      + color the "|" between aliases.
      + allow aliases to contain blanks.

    + add check in m4-filt.c for unbalanced quote, show the affected area
      as an error.

    + several improvements and fixes to lex-filt.l (a rewrite which
      makes it very complete, however it now requires flex).

    + minor fixes to make most of the lex filters build with "old" lex,

    + make autocolor work for curses-driver, e.g., --with-screen=ncurses

    + improve vilefilt.l, highlighting mode names and displaying error
      for unknown mode, function and state variables.

    + modify spellflt.l to chop words according to Camel-case, so
      tokens such as "ChopWords" are treated by the spell checker as
      multiple words.

    + modify spell- and txt-filters to allow users to add words to their
      respective ".keywords" files to override the builtin highlighting.

    + make ShowFormatted macro more configurable by allowing environment
      variables $VILE_NROFF_FILT and $VILE_TABLE_FILT to override the
      choice of programs therein.

X11 changes

    + add -class option to xvile.

    + make cursor-adjustment after paste in xvile dependent on whether the
      pasted text ended with a newline.

Win32 changes

    + change winvile's registry subkey for recent-folders and recent-files
      to match environment variable settings from 9.4r, e.g., change
            "Software\VI Like Emacs\MRUFiles"

    + modify winvile's command-line parsing, adding "-i" option to perform
      the case used for "Send To": use the part of the command line after
      options as the filename and change working directory to match.

    + improve paste-performance in winvile by passing whole-line chunks
      to the insert-function.

    + improve repainting in winvile while processing external command.
      also modify keyboard handling to provide type-ahead while processing
      external command.

    + correct order of evaluation from 9.4w when setting record-separator,
      which was setting "crlf" ending temporarily when computing the buffer
      size, even when "lf" was intended.  That would cause an immediate
      write from winvile (without change) for a buffer to write too many

    + add a character-class check to find_b_file() to prevent names such
      as "<vile.1>" from being canonicalized into "vile.1" on win32 via
      FindFirstFile().  This fixes a problem where ^X-n would sometimes
      display the wrong buffer.

    + add shifted-cursor-key bindings for winvile, like xterm.

    + add KEY_xxx definitions to OS/2 and Win32 drivers, defining up to
      KEY_F35 for the former and KEY_F24 for the latter .

    + add &pquote in manpage.rc, to allow it to format html output when
      vile-manfilt, etc., reside in directories containing spaces in their

    + correct check of return of ffread() in spellflt.l's workaround for
      platforms such as win32 which have no usable popen().  That made
      spelling checks require two ^X-i presses.

    + modify ntwinio.c to invoke build_recent_file_and_folder_menus() in
      the WM_INITMENUPOPUP event rather than WM_SYSCOMMAND.  This makes
      winvile initialize the recent-folders and recent-files if one uses a
      right-click on the title of the window.

    + modify spell filter so that it can get VILE_SPELL_FILT from the
      registry on win32.

    + improved winvile's "flash".

    + fixes for 64-bit warnings of Visual Studio .NET 2003

    + modify wvwrap.exe to work with pathnames containing "$", "&" and "'".

    + improve winvile.iss (Inno Setup):
      + use values in patchlev.h to set the package version information.
      + add context menu and Send To shortcuts
      + install the keyword files

VMS changes

    + minor build-fixes for VMS:

      + modify to simplify workaround for broken MMS 3.8

      + provide dummy variables for xvile to reflect modularization changes
        with respect to vmsvt.c

    + move VMS-specific code from termio.c to vmsvt.c

Other portability

    + use va_copy() in dofmt() to work with Linux on powerpc

    + modify configure script to omit lex-filt.l from build if lex is not
      really flex, since the tables are too large for the older program.

    + improve os2vio.c, adding a check to distinguish between fullscreen
      and VIO to allow using bright background colors in the latter .

    + modified regexp.c, add headers vl_regex.h, vl_alloc.h and vl_ctype.h
      to allow it to be easily built outside vile .

    + add KEY_BackTab to the output of show-key-names

    + fix kcod2prc() so that a shifted-tab is converted to "Shift+^I"
      rather than emitting a literal tab in the result.


    + modify the symbol-table lookup in filters.c to use tsearch() when
      available.  For an 8Mb rtf file this improved performance by about
      a factor of two (on Linux - Visual C++ has no tsearch).

    + use new module blist (binary search of lists) to reduce linear
      searches in the places where btree is not already used.

    + add configure check for getc_unlocked(), putc_unlocked() and
      tsearch() to use in performance improvements for syntax filters.

Thomas E. Dickey <address@hidden>

Attachment: signature.asc
Description: Digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]