Download Latest Version xvi-2.51.tar.gz (1.4 MB)
Email in envelope

Get an email when there's a new version of xvi, a portable multi-file text editor

Home / xvi
Name Modified Size InfoDownloads / Week
Parent folder
2.51 2024-01-21
2.50 2017-06-07
2.49 2015-03-29
2.48 2013-10-13
2.47 2006-04-08
2.15 2006-01-11
2.19 2005-12-17
Totals: 7 Items   3
Release Notes for xvi 2.51
==========================

Martin Guy <martinwguy@gmail.com>, $DATE$

Since xvi-2.50, xvi now

Implements:
  - The :w>> command
  * A new variable "obase" to set the number base that characters >127
    are printed in. obase can be 2, 8, 10 or 16.
fixes bugs:
  - Inserting chars in the middle of the command line now works
  - Filename completion with Tab no longer garbles the command line
  - ^U to cancel a command line now clears the display too back to the :
  - Character maps are now applied to text stuffed with :@ or :*
  - Stuffing a character-based yank with :@ or :* adds a final newline
  - Text stuffed as commands from a yank buffer (e.g. "a@) is now mapped
  - "ytx" when the character right of the cursor is an x now does nothing
    instead of yanking up to the following x character (if any)
  * The UTF-8 code for capital A grave used to insert \303#1
  * Command } on a last empty line used to send xvi into an infinite loop.
  * Pressing a-umlaut on a Swedish keyboard used to make it dump core.
  * Fix a bug that made xvi go into an infinite loop when you gave the }
    command on the last empty line.
  * Fix a bug that caused a segmentation fault if you pressed a-umlaut
    on a Swedish keyboard in command mode (Thanks to C.J.Wagenius for
    reporting this)
and the Debian packaging now also makes a .udeb package for debian-installer.

These last fixes make the maze-solving macros work :)

Thanks to Richard Lloyd for HP/UX portability fixes and to
Jose R R at Metztli IT for better Debian compatability and the udeb.

Since version 2.49, xvi now:

- Implements
  - the U and = commands
  - the +$, +$-n and +-n flags, to open a file near its end
  - the -R flag to open files readonly
  - the -c "command" flag, which may be given several times
  - ignores the -w n flag for POSIX compliance
  - the "autowrite", "beautify", "scroll", "showmode", "terse" and "writeany"
    parameters
  - Appending to yank buffers when they are named in upper case
  - Control-@ in insert mode, to reinsert the last inserted text
  - ~ on the LHS and RHS of a substitution, giving the last replacement text
  and is now able to run the "Towers of Hanoi" problem-solving macros and
  the maze-solving macros.

- Removes some undocumented features:
  - The "autogrow" parameter. It is now as if it were always on
  - The hundred-deep multi-level undo mechanism
  - The :compare command
  - The "equalsize" parameter, now as if it were always on
  - The "edit" and "autonoedit" parameters

- Documents the xvi-specific :equalise command and the tabindent parameter

- Sets enumerated parameters' values by the shortest match, e.g. ":se iu=c"

- The :command line:
  - Is no longer limited to 78 characters in length, thanks to John Vogel
  - Has a simple line-editing capabilities using the left and right arrow keys,
    home, end and ^W to delete the previous word, ^U to clear the line
  - Does filename completion with the Tab key instead of the Esc key and
    this is now only performed for commands which expect a filename

- Fixes all known screen-updating bugs:
  - Modifying one pane of a split buffer with 'x' didn't update the other pane
  - Undoing a "dl" used to leave the cursor in the wrong place
  - It now uses termcap's left/backspace/down capabilities even if they are
    longer than one character
  - It no longer garbles the screen when deleting near the end of a wrapped line
  - Hitting s on a tab character at the start of a wrapped line used not to
    update the wrapped part until you hit escape.

- Improves the correctness and POSIX-compliance of several commands:
  - "dw" at end of line used not to delete the last character
  - "yl" or "dl" at end of line used not to yank/delete anything
  - If a search fails, don't do the rest of a "redo"
  - The execution of macros is halted if any motion or command fails
  - Characters from the RHS of a mapping are now remapped if "remap" is set
  - Doesn't remap initial RHS characters if they are the same as the LHS
  - Parameter "remap" is now set by default
  - ~ and ^_ now react to a preceding count
  - ^Q is now a synonym for ^V
  - Typing ^ Control-D in autoindent mode removes indentation for one line only
  - :s/.../\u&/ now only capitalizes the first letter of the replacement text
  - :s/pattern/% now uses the RHS of the last substitution
  - "r" on an empty line (or Nr when less than N chars remain) now fails
  - Control-@ is now disallowed on the :command line
  - The Home and End keys now go to start and end of line, not of screen
  - Key F10 now inserts #0 and F1 #1 in insert, replace and command modes
  - When inserting a character-based yank, the cursor is left at the beginning
    of the inserted text, not the end
  - All 26 alphabetic yank buffers can now be used, not just 10 of them
  - When lines are restored with an "undo", their marks are restored too
  - When yanking to a named buffer the text is also copied to the unnamed buffer
  - Lines of text about to be piped through a command are yanked first
  - Spaces are allowed after :s and bare :s repeats the last substitution
  - Command ":2,3" goes to line 3, not 2
  - Environment variables LINES and COLUMNS now override other size settings
  - The cursor is left in the correct position when undoing an undo
  - ~ and % on the RHS os a substitution now respect the "magic" parameter
  - ^ is only special at the start of a pattern, so you don't need to say \^
  - Exit with non-zero status when receiving SIGHUP or SIGQUIT
  - Let the interrupt character be something other than ^C if set with stty
  - Restore the cursor position when going to a marked line using grave quote
  - Make character range matches [abc] [^X] respect ignorecase properly
  - Get command abbreviations :ma :s :su and :u right (mark/subst/suspend/undo)
  - When the screen is resized and many buffers are open, it behaves better
  - Fix deletion from start of line to a pattern that matches at start of line
  - Fix cursor position when changing from mid of one line to start of another

- The handling of keyboard interrupts (Control-C) has been improved
  - Repeat counts are ignored if an insert/replace is interrupted
  - Macros in execution are aborted
  - Infinitely-recursive macros and very long file reads can now be interrupted
  - if stdin is not a terminal, SIGINT kills xvi immediately

- If it runs out of memory, it is not known to crash any more, though it may
  still not be able to write the file out.

- Has its own unique test suite, able to match against screen contents.

- Has been built on AIX 7.1/7.2, CentOS 7, Crux Linux, Debian jessie, Fedora 18,
  FreeBSD, HP-UX, NetBSD, OpenBSD, OpenSUSE QNX 6.5.0 and Ubuntu xenial using
  GCC, clang and Tiny-C for i386, amd64, ARM-64, PowerPC-64 and IBM POWER8 CPUs
  and on MSDOS with Borland Turbo C 2.0.
  The termcap code has been tested against ncurses, GNU termcap and AIX curses.

- The test suite has been run on:
  - AIX, CentOS, Debian, Fedora, Ubuntu: PASS
  - NetBSD: Is seems to pass all tests but in reality nothing is tested
  - OpenSUSE: The test suite fails with internal errors

- Compiles to just under 100KB of code (Unix/termcap port, clang -Os for i386)

Its source code can be obtained from http://sf.net/p/xvi and
its web site is at http://martinwguy.github.io/xvi
Source: README, updated 2024-01-21