BSD 4_4_Lite2 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Sat, 3 Dec 1994 03:17:54 +0000 (19:17 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Sat, 3 Dec 1994 03:17:54 +0000 (19:17 -0800)
Work on file usr/src/contrib/nvi.1.43/docs/changelog

Synthesized-from: CSRG/cd3/4.4BSD-Lite2

usr/src/contrib/nvi.1.43/docs/changelog [new file with mode: 0644]

diff --git a/usr/src/contrib/nvi.1.43/docs/changelog b/usr/src/contrib/nvi.1.43/docs/changelog
new file mode 100644 (file)
index 0000000..83556cc
--- /dev/null
@@ -0,0 +1,647 @@
+1.42 -> 1.43 Sat Dec  3 13:11:32 1994
+       + Marks, SunOS signed comparison fix for 1.42.
+1.41 -> 1.42 Fri Dec  2 20:08:16 1994
+       + Make autowrite require the file not be read-only.
+       + Make the ex insert command work in empty files.
+       + Tab expansion is no longer limited to values < 20 (which matches
+         historical practice).
+       + Simplify (and fix limit detection for) the # command.  It's no
+         longer possible to use the # command itself to repeat or modify
+         a previous # command, '.' is the only possibility.
+       + Lots more reworking of the ex addresses, putting ? and / into
+         the ex addressing code broke the world.
+       + Make the Put, Preserve and Print commands work (don't ask).
+       + Split stdout/stderr from shell expansions; stdout is expansion
+         text, stderr is entered on the message queue.
+1.40 -> 1.41 Fri Nov 18 16:13:52 1994
+       + Addition of a port for AUX 3.1
+       + Addition of a message catalog for Russian.
+       + Make vi ? and / commands be true ex addresses (historic practice).
+       + Display the date first in vi -r recovery list.
+1.39 -> 1.40 Mon Nov 14 10:46:56 1994
+       + Two bug fixes for 1.39; -r option and v_change core dump.
+1.38 -> 1.39 Sun Nov 13 18:04:08 1994
+       + Ex substitution with confirmation now matches historic practice
+         (except that it still runs in raw mode, not cooked).
+       + Nvi now clears the screen before painting, if repainting the
+         entire screen.
+       + Fix final cursor position for put command entering text in a
+         single line.
+       + Change to break error message lines on the last <blank> in the
+         line.
+       + Always center the current line when returning to a previously
+         edited file or moving to a tag line that's not visible on the
+         screen.
+       + Change write of the current file using an explicit name or % to
+         match the semantics of :w<CR>, not :w file<CR>.
+       + Add command aliases to vi, and remap 6 historic commands to their
+         historic counterparts: D->d$, Y->y_, S->c_, C->c$, A->$a, I->^i.
+       + Match option display to historic practice; if boolean or numeric
+         options changed to default values, not displayed by default.
+         Nvi treats string options the same way, vi always displayed any
+         string option that was changed.
+       + Added lock edit option, if not set, no file locking is done.
+       + Rework ex to permit any ex command in the EXINIT variable or
+         exrc startup files.  This fixes the bug were `vi +100 file'
+         painted the screen and then moved to line 100 and repainted.
+         (Yanked to SCCS ID 9.1.)
+       + Bug fix: could report file modified more recently than it was
+         written, incorrectly.
+       + Search fix: historically, motions with deltas were not corrected
+         to the previous/next line based on the starting/stopping column.
+       + Addressing fixes: make trailing non-existent addresses work, change
+         % to be text substitution, not a unique address (to follow future
+         POSIX).
+1.37 -> 1.38 Mon Oct 24 12:51:58 1994
+       + Scrolling fix; ^B can move to nonexistent lines.
+       + Fix to vi mapped commands; <escape> characters while already in
+         command mode did not historically cause the mapped characters to
+         be flushed.
+       + Add the backup edit option, automatically version edit files.
+       + Make it possible to edit files that db can't read, i.e. edit a
+         temporary file, with the correct file name.
+       + Only anchor the last line of the file to the bottom line of the
+         screen if there's half or less of a screen between the target
+         line and the end of the file.
+       + Fix wrapmargin text allocation bug.
+       + Fix ex put command to work in any empty file.
+       + Fix global command to handle move's to line 0 correctly.
+       + Regularize the yank cursor motions, several bug fixes for historic
+         practice.
+       + Fix N and n, when used as a motion command for the ! command,
+         repeat the last bang command instead of prompting for a new
+         one.
+       + Timeout maps beginning with <escape> quickly, instead of based
+         on the keytime option.
+       + Bug fix for wraplen option, wasn't triggered for input commands.
+1.36 -> 1.37 Sun Oct  9 19:02:53 1994
+       + Change PORT directories to install patches before distribution.
+       + Fix ^A to set search direction and pattern for consistency.
+       + Fold the showdirty option into the showmode option.
+       + Ex addressing fix: change search offset and line arguments (e.g.
+         the copy command) to be ex addressing offsets, matching historic
+         practice.
+       + Ex addressing fix: support ^ as an offset/flag equivalent to -.
+       + Ex addressing fix: historically, any missing address defaulted to
+         dot, e.g. "4,,," was the same as ".,.".
+       + Ex addressing fix: historically, <blank> separated numbers were
+         additive, e.g. "3 5p" displayed line 8.
+       + Ex addressing fix: make ';' as a range delimiter match historic
+         practice.
+       + Change nvi to exit immediately if stdout isn't a terminal.
+       + Change alternate file name behavior to match historic practice,
+         make the :write command set the current file name.
+       + Text input fix; input keys from a map, with an associated count,
+         weren't historically affected by the wrapmargin value.
+       + Add wraplen option, same as wrapmargin, but from the left-hand
+         column, not the right.
+       + Make ex address .<number> be equivalent to .+<number>, i.e. the
+         '+' is understood; matches historic practice, and it's widely
+         documented for ed(1).
+       + Input mode ^V^J historically mapped into a single ^J.
+       + Minor catalog changes, fixes; don't use 's' to pluralize words.
+1.35 -> 1.36 Thu Sep  8 08:40:25 1994
+       + Don't overwrite user's maps with standard (termcap) mappings.
+       + Make \ escape kill and erase characters in vi text input mode.
+       + Fix ^D autoindent bug by resolving leading <blank>s at ^D.
+       + Rework abbreviation tests (again!) to match historic practice.
+       + Change ^D/^U default scrolling value to be based on window option
+         value, not screen lines, correct scrolling option value, both to
+         match historic practice.  NOTE: System V does this differently!
+1.34 -> 1.35 Wed Aug 31 19:20:15 1994
+       + Add the historic -l option.
+       + Message catalogs.
+       + Display global messages at each flush, just in case some are there.
+       + Fix global substitute code, `\\' wasn't handled correctly.
+       + Fix abbreviation code to use <blank>s as the preceding character.
+       + Fix ruler to display logical column, not physical column.
+       + Block signals when user issues :preserve command, so no race caused
+         by SIGHUP/SIGTERM.
+1.33 -> 1.34 Wed Aug 17 14:37:32 1994 (PUBLICLY AVAILABLE VERSION)
+       + Back out sccsid string fix, it won't work on SunOS 4.1.
+1.32 -> 1.33 Wed Aug 17 09:31:41 1994 (PUBLICLY AVAILABLE VERSION)
+       + Get back 5K of data space for the sccsid strings.
+       + Fix bug where cG fix in version 1.31 broke cw cursor positioning
+         when the change command extended the line.
+       + Fix core dump in map/seq code if character larger than 7 bits.
+       + Block signals when manipulating the SCR chains.
+       + Fix memory allocation for machines with multiple pointer sizes.
+1.31 -> 1.32 Mon Aug 15 14:27:49 1994
+       + Turn off recno mmap call for Solaris 2.4/SunOS 5.4.
+1.30 -> 1.31 Sun Aug 14 13:13:35 1994
+       + Fix bug were cG on the last line of a file wasn't done in line mode,
+         and where the cursor wasn't positioned correctly after exiting text
+         insert mode.
+       + Add termcap workaround to make function keys greater than 9 work
+         correctly (or fail if old-style termcap support).
+       + Change ex/vi to not flush mapped keys on error -- this is historic
+         practice, and people depended on it.
+       + Rework vi parser so that no command including a mapped key ever
+         becomes the '.' command, matching historic practice.
+       + Make <escape> cancellation in the vi parser match POSIX 1003.2.
+       + Fix curses bug where standout string was written for each standout
+         character, and where standout mode was never exited explicitly.
+         Fix bugs in curses SF/sf and SR/sr scrolling, as seen on Sun and
+         x86 consoles.
+       + The v/global commands execute the print command by default.
+       + The number option historically applies to ex as well as vi.
+1.29 -> 1.30 Mon Aug  8 10:30:42 1994
+       + Make first read into a temporary set the file's name.
+       + Permit any key to continue scrolling or ex commands -- this
+         allows stacked colon commands, and matches historic practice.
+       + Don't output normal ! command commentary in ex silent mode.
+       + Allow +/- flags after substitute commands, make line (flag)
+         offsets from vi mode match historic practice.
+       + Return <eof> to ex immediately, even if preceded by spaces.  Rework
+         ex parser to do erase the prompt instead of depending on the print
+         routines to do it.  Minor fixes to the ex parser for display of
+         default and scrolling commands.  MORE EX PARSER CHANGES.
+1.28 -> 1.29 Fri Aug  5 10:18:07 1994
+       + Make the abbreviated ex delete command work (:dele---###lll for
+         example, is historically legal.
+       + When autoprint fires, multiple flags may be set, use ex_print
+         directly instead of the stub routines.
+       + Change v/global commands to turn off autoprint while running.
+       + Minor changes to make the ! command display match historic output.
+       + Rework the ex parser to permit multiple command separators without
+         commands -- MAJOR CHANGE, likely to introduce all sorts of new bugs.
+       + Fix cd command to expand argument in the context of each element
+         of the cdpath option, make relative paths always relative to the
+         current directory.
+       + Rework write/quit cases for temporary files, so that user's don't
+         discard them accidentally.
+       + Check for window size changes when continuing after a suspend.
+       + Fix memory problem in svi_screen, used free'd memory.
+       + Change the ex change, insert, append commands to match historic
+         cursor positions if no data entered by the user.
+       + Change ex format flags (#, l, p) to affect future commands, not
+         just the current one, to match historic practice.
+       + Make the user's EOF character an additional scroll character in ex.
+       + Fix ex ^D scrolling to be the value of the scroll option, not half
+         the screen.
+       + Fix buffer execution to match historic practice -- bugs where the
+         '*' command didn't work, and @<carriage-return> didn't work.
+       + Fix doubled reporting of deleted lines in filters.
+       + Rework the % ` / ? ( ) N n { and ^A commands to always cut into
+         numeric buffers regardless of the location or length of the cut.
+         This matches historic practice.
+       + Fix the { command to check the current line if the cursor doesn't
+         start on the first character of the line.
+       + Do '!' expansion in the ex read command arguments, it's historic
+         practice.  In addition, it sets the last '!' command.
+1.27 -> 1.28 Wed Jul 27 21:29:18 1994
+       + Add support for scrolling using the CS and SF/sf/SR/sr termcap
+         strings to the 4BSD curses.
+       + Rework of getkey() introduced a bug where command interrupt put
+         nvi into an infinite loop.
+       + Piping through a filter historically cut the replaced lines into
+         the default buffer, although not the numeric ones.
+       + Read of a filter and !! historically moved to the first nonblank
+         of the resulting cursor line (most of the time).
+       + Rework cursor motion flags, to support '!' as a motion command.
+1.26 -> 1.27 Tue Jul 26 10:27:58 1994
+       + Add the meta option, to specify characters the shell will expand.
+       + Fix the read command to match historic practice, the white space
+         and bang characters weren't getting parsed correctly.
+       + Change SIGALRM handler to save and restore errno.
+       + Change SunOS include/compat.h to include <vfork.h> so that the
+         ex/filter.c code works again.
+       + Don't put lines deleted by the ex delete command into the numeric
+         buffers, matching historic practice.
+       + Fix; if appending to a buffer, default buffer historically only
+         references the appended text, not the resulting text.
+       + Support multiple, semi-colon separated search strings, and 'z'
+         commands after search strings.
+       + Make previous context mark setting match historic practice (see
+         docs/internals/context).
+       + Fix the set command to permit whitespace between the option and
+         the question mark, fix question marks in general.
+       + Fix bug where ex error messages could be accidentally preceded
+         by a single space.
+       + Fix bug where curses reorganization could lose screen specific
+         mappings as soon as any screen exited.
+       + Fix bug in paragraph code where invalid macros could be matched.
+         Make paragraph motions stop at formfeed (^L) characters.
+       + Change 'c' to match historic practice, it cut text into numeric
+         buffers.
+1.25 -> 1.26 Tue Jul 19 17:46:24 1994
+       + Ignore SIGWINCH if the screen size is unchanged; SunOS systems
+         deliver one when a screen is uncovered.
+       + Fix: don't permit a command with a motion component to wrap due
+         to wrapscan and return to the original cursor position.
+       + Fix: ^E wasn't beeping when reaching the bottom of the file.
+       + Fix bg/fg bug where tmp file exiting caused a NULL dereference.
+       + Rework file locking code to use fcntl(2) explicitly.
+       + Fix bug in section code where invalid macros could be matched.
+       + Fix bug where line number reset by vi's Q command.
+       + Add explicit character mode designation to character mode buffers.
+       + Add <sys/ioctl.h> include to sex/sex_window.c, needed by NET/2
+         vintage systems.
+       + Change to always flush a character during suspend, 4BSD curses
+         has the optimization where it doesn't flush after a standend().
+       + Fix bug on OSF1 where <curses.h> changes the values of VERASE,
+         VKILL and VWERASE to incorrect ones.
+       + Fix bug where optarg used incorrectly in main.c.
+       + Block all signals when acting on a signal delivery.
+       + Fix recovery bug where RCV_EMAIL could fire even if there wasn't
+         a backing file; format recovery message.
+1.24 -> 1.25 Sun Jul 17 14:33:38 1994
+       + Stop allowing keyboard suspends (^Z) in insert mode, it's hard
+         to get autowrite correct, and it's not historic practice.
+       + Fix z^, z+ to match historic practice.
+       + Bug in message handling, "vi +35 non-existent_file" lost the
+         status message because the "+35" pushed onto the stack erased
+         it.  For now, change so that messages aren't displayed if there
+         are keys waiting -- may need to add a "don't-erase" bit to the
+         character in the stack instead.
+       + Bug in svi_msgflush(), where error messages could come out in
+         normal video.
+1.23 -> 1.24 Sat Jul 16 18:30:18 1994
+       + Fix core dump in exf.c, where editing a non-existent file and
+         exiting could cause already free'd memory to be free'd.
+       + Clean up numerous memory errors, courtesy of Purify.
+       + Change process wait code to fail if wait fails, and not attempt
+         to interpret the wait return information.
+       + Open recovery and DB files for writing as well as reading, System
+         V (fcntl) won't let you acquire LOCK_EX locks otherwise.
+       + Fix substitute bug where could malloc 0 bytes (AIX breaks).
+       + Permit the mapping of <carriage-return>, it's historic practice.
+       + Historic vi didn't eat <blank> characters before the force
+         flag, match historic practice.
+       + Bug in ex argument parsing, corrected for literal characters
+         twice.
+       + Delete screen specific maps when the screen closes.
+       + Move to the first non-<blank> in the line on startup; historic
+         practice.
+       + Change the ex visual command to move directly to a line if no
+         trailing 'z' command.
+       + Fix "[[" and "]]" to match historic practice (yet again...).
+       + Fix "yb" and "y{" commands to update the cursor correctly.
+       + Change "~<motion>" to match the yank cursor movement semantics
+         exactly.
+       + Move all of the curses related code into sex/svi -- major rework,
+         but should help in future ports.
+       + Fix bug in split code caused by new file naming code, where would
+         drop core when a split screen exited.
+       + Change svi_ex_write to do character display translation, so that
+         messages with file names in them are displayed correctly.
+       + Display the file name on split screens instead of a divider line.
+       + Fix move bug, wasn't copying lines before putting them.
+       + Fix bug were :n dropped core if no arguments supplied.
+       + Don't quote characters in executed buffer: "ifoo<esc>" should leave
+         insert mode after the buffer is executed.
+       + Tagpop and tagpush should set the absolute mark in case only moving
+         within a file.
+       + Skip leading whitespace characters before tags and cursor word
+         searches.
+       + Fix bug in ex_global where re_conv() was allocating the temporary
+         buffer and not freeing it.
+1.22 -> 1.23: Wed Jun 29 19:22:33 1994
+       + New <sys/cdefs.h> required "inline" to change to "__inline"
+       + Fix System V curses code for new ^Z support.
+       + Fix off-by-one in the move code, avoid ":1,$mo$" with only one
+         line in the buffer.
+       + Line orientation of motion commands was remembered too long,
+         i.e.  '.' command could be incorrectly marked as line oriented.
+       + Move file modification time into EXF, so it's shared across
+         split screens.
+       + Put the prev[ious] command back in, people complained.
+       + Random fixes to next/prev semantics changed in 1.22.
+       + Historically vi doesn't only move to the last address if there's
+         ANYTHING after the addresses, e.g. ":3" moves to line 3, ":3|"
+         prints line 3.
+1.21 -> 1.22: Mon Jun 27 11:01:41 1994
+       + Make the line between split screens inverse video again.
+       + Delete the prev[ious] command, it's not useful enough to keep.
+       + Rework :args/file name handling from scratch -- MAJOR CHANGE,
+         likely to introduce all sorts of new bugs.
+       + Fix RE bug where no subexpressions in the pattern but there were
+         subexpressions referenced in the replacement, e.g. "s/XXX/\1/g".
+       + Change recovery to not leave unmodified files around after a
+         crash, by using the owner 'x' bit on unmodified backup files.
+         MAJOR CHANGE, the system recovery script has to change!
+       + Change -r option to delete recovery.* files that reference non-
+         existent vi.* files.
+       + Rework recovery locking so that fcntl(2) locking will work.
+       + Fix append (upper-case) buffers, broken by cut fixes.
+       + Fix | to not set the absolute motion mark.
+       + Read $HOME/.exrc file on startup if the effective user ID is
+         root.  This makes running vi while su(1)'d work correctly.
+       + Use the full pathname of the file as the recovery name, not
+         just the last component.  Matches historic practice.
+       + Keep marks in empty files from being destroyed.
+       + Block all caught signals before calling the DB routines.
+       + Make the line change report match historic practice (yanked
+         lines were different than everything else).
+       + Add section on multiple screens to the reference manual.
+       + Display all messages at once, combine onto a single line if
+         possible.  Delete the trailing period from all messages.
+1.20 -> 1.21: Thu May 19 12:21:58 1994
+       + Delete the -l flag from the recover mail.
+       + Send the user email if ex command :preserve executed, this matches
+         historic practice.  Lots of changes to the preserve and recovery
+         code, change preserve to snapshot files (again, historic practice).
+       + Make buffers match historic practice: "add logically stores text
+         into buffer a, buffer 1, and the unnamed buffer.
+       + Print <tab> characters as ^I on the colon command line if the
+         list option set.
+       + Adjust ^F and ^B scroll values in the presence of split screens
+         and small windows.
+       + Break msg* routines out from util.c into msg.c, start thinking
+         about message catalogs.
+       + Add tildeop set option, based on stevie's option of the same name.
+         Changes  the ~ command into "[count] ~ motion", i.e. ~ takes a
+         trailing motion.
+       + Chose NOT to match historic practice on cursor positioning after
+         consecutive undo commands on a single line; see vi/v_undo.c for
+         the comment.
+       + Add a one line cache so that multiple changes to the same line
+         are only counted once (e.g. "dl35p" changes one line, not 35).
+       + Rework signals some more.  Block file sync signals in vi routines
+         that interface to DB, so can sync the files at interrupt time.
+         Write up all of the signal handling arguments, see signal.c.
+1.19 -> 1.20: Thu May  5 19:24:57 1994
+       + Return ^Z to synchronous handling.  See the dicussion in signal.c
+         and svi_screen.c:svi_curses_init().
+       + Fix bug where line change report was wrong in util.c:msg_rpt().
+1.18 -> 1.19: Thu May  5 12:59:51 1994
+       + Block DSUSP so that ^Y isn't delivered at SIGTSTP.
+       + Fix bug -- put into an empty file leaves the cursor at 1,0,
+         not the first nonblank.
+       + Fix bug were number of lines reported for the 'P' command was
+         off-by-one.
+       + Fix bug were 0^D wasn't being handled correctly.
+       + Delete remnants of ^Z as a raw character.
+       + Fix bug where if a map was an entire colon command, it may never
+         have been displayed.
+       + Final cursor position fixes for the vi T and t commands.
+       + The ex :next command took an optional ex command as it's first
+         argument similar to the :edit commands.  Match historic practice.
+1.17 -> 1.18: Wed May  4 13:57:10 1994
+       + Rework curses information in the PORT/Makefile's.
+       + Minor fixes to ^Z asynchronous code.
+1.16 -> 1.17: Wed May  4 11:15:56 1994
+       + Make ex comment handling match historic practice.
+       + Make ^Z work asynchronously, we can no longer use the SIGTSTP
+         handler in the curses library.
+1.15 -> 1.16: Mon May  2 19:42:07 1994
+       + Make the 'p' and 'P' commands support counts, i.e. "Y10p" works.
+       + Make characters that map to themselves as the first part of the
+         mapping work, it's historic practice.
+       + Fix bug where "s/./\& /" discarded the space in the replacement
+         string.
+       + Add support for up/down cursor arrows in text input mode, rework
+         left/right support to match industry practice.
+       + Fix bug were enough character remapping could corrupt memory.
+       + Delete O_REMAPMAX in favor of setting interrupts after N mapped
+         characters without a read, delete the map counter per character.
+         MAJOR CHANGE.  All of the interrupt signal handling has been
+         reworked so that interrupts are always turned on instead of
+         being turned on periodically, when an interruptible operation is
+         pending.
+       + Fix bug where vi wait() was interrupted by the recovery alarm.
+       + Make +cmd's and initial commands execute with the current line
+         set to the last line of the file.  This is historic practice.
+       + Change "lock failed" error message to a file status message.
+         It always fails over NFS, and making all NFS files readonly
+         isn't going to fly.
+       + Use the historic line number format, but check for overflow.
+       + Fix bug where vi command parser ignored buffers specified as
+         part of the motion command.
+       + Make [@*]buffer commands on character mode buffers match historic
+         practice.
+       + Fix bug where the cmap/chf entries of the tty structure weren't
+         being cleared when new characters were read.
+       + Fix bug where the default command motion flags were being set
+         when the command was a motion component.
+       + Fix wrapmargin bug; if appending characters, and wrapmargin breaks
+         the line, an additional space is eaten.
+1.14 -> 1.15: Fri Apr 29 07:44:57 1994
+       + Make the ex delete command work in any empty file.
+       + Fix bug where 't' command placed the cursor on the character
+         instead of to its left.
+       + ^D and ^U didn't set the scroll option value historically.
+         Note, this change means that any user set value (e.g. 15^D)
+         will be lost when splitting the screen, since the split code
+         now resets the scroll value regardless.
+       + Fix the ( command to set the absolute movement mark.
+       + Only use TIOCGWINSZ for window information if SIGWINCH signal
+         caught.
+       + Delete the -l flag, and make -r work for multiple arguments.
+         Add the ex "recover[!] file" command.
+       + Switch into ex terminal mode and use the sex routines when
+         append/change/insert called from vi mode.
+       + Make ^F and ^B match historic practice.  This required a fairly
+         extensive rework of the svi scrolling code.
+       + Cursor positioning in H, M, L, G (first non-blank for 1G) wasn't
+         being done correctly.  Delete the SETLFNB flag.  H, M, and L stay
+         logical movements (SETNNB) and G always moves to the first nonblank.
+       + System V uses "lines" and "cols", not "li" and "co", change as
+         necessary.  Check termcap function returns for errors.
+       + Fix `<character> command to do start/end of line correction,
+         and to set line mode if starting and stopping at column 0.
+       + Fix bug in delete code where dropped core if deleted in character
+         mode to an empty line.  (Rework the delete code for efficiency.)
+       + Give up on SunOS 4.1.X, and use "cc" instead of /usr/5bin/cc.
+       + Protect ex_getline routine from interrupted system calls (if
+         possible, set SA_RESTART on SIGALRM, too).
+       + Fix leftright scrolling bug, when moving to a shorter line.
+       + Do validity checking on the copy, move, t command target line
+         numbers.
+       + Change for System V % pattern broke trailing flags for empty
+         replacement strings.
+       + Fix bug when RCM flags retained in the saved dot structure.
+       + Make the ex '=' command work for empty files.
+       + Fix bug where special_key array was being free'd (it's no longer
+         allocated).
+       + Matches cut in line mode only if the starting cursor is at or
+         before the first nonblank in its line, and the ending cursor is
+         at or after the last nonblank in its line.
+       + Add the :wn command, so you can write a file and switch to a new
+         file in one command.
+       + Allow only a single key as an argument to :viusage.
+       + New movement code broke filter/paragraph operations in empty
+         files ("!}date" in an empty file was dropping core).
+1.12 -> 1.14: Mon Apr 18 11:05:10 1994 (PUBLICLY AVAILABLE VERSION, 4.4BSD)
+       + Fix FILE structure leakage in the ex filter code.
+       + Rework suspend code for System V curses.  Nvi has to do the
+         the work, there's no way to get curses to do it right.
+       + Revert SunOS 4.1.X ports to the distributed curses.  There's
+         a bug in Sun's implementation that we can't live with.
+       + Quit immediately if row/column values are unreasonable.
+       + Fix the function keys to match vi historic behavior.
+       + Replace the echo/awk magic in the Makefile's with awk scripts.
+1.11 -> 1.12: Thu Apr 14 11:10:19 1994
+       + Fix bug where only the first vi key was checked for validity.
+       + Make 'R' continue to overwrite after a <carriage-return>.
+       + Only display the "no recovery" message once.
+       + Rework line backup code to restore the line to its previous
+         condition.
+       + Don't permit :q in a .exrc file or EXINIT variable.
+       + Fix wrapscan option bug where forward searches become backward
+         searches and do cursor correction accordingly.
+       + Change "dd" to move the cursor to the first non-blank on the line.
+       + Delete cursor attraction to the first non-blank, change non-blank
+         motions to set the most attractive cursor position instead.
+       + Fix 'r' substitute option to set the RE to the last RE, not the
+         last substitute RE.
+       + Fix 'c' and 'g' substitute options to always toggle, and fix
+         edcompatible option to not reset them.
+       + Display ex error messages in inverse video.
+       + Fix errorbells option to match historic practice.
+       + Delete fixed character display table in favor of table built based
+         on the current locale.
+       + Add ":set octal" option, that displays unknown characters as octal
+         values instead of the default hexadecimal.
+       + Make all command and text input modes interruptible.
+       + Fix ex input mode to display error messages immediately, instead
+         of waiting for the lines to be resolved.
+       + Fix bug where vi calling append could overwrite the command.
+       + Fix off-by-one in the ex print routine tab code.
+       + Fix incorrect ^D test in vi text input routines.
+       + Add autoindent support for ex text insert routines.
+       + Add System V substitute command replacement pattern semantics,
+         where '%' means the last replacement pattern.
+       + Fix bug that \ didn't escape newlines in ex commands.
+       + Regularize the names of special characters to CH_*.
+       + Change hex insert character from ^Vx<hex_char> to ^X<hex_char>
+       + Integrate System V style curses, so SunOS and Solaris ports can
+         use the native curses implementation.
+1.10 -> 1.11: Thu Mar 24 16:07:45 EST 1994 (PUBLICLY AVAILABLE VERSION)
+       + Change H, M, and L to set the absolute mark, historical practice.
+       + Fix bug in stepping through multiple tags files.
+       + Add "remapmax" option that turns off map counts so you can remap
+         infinitely.  If it's off, term_key() can be interrupted from the
+         keyboard, which will cause the buffers to flush.  I also dropped
+         the default max number of remaps to 50.  (Only Dave Hitz's TM
+         macros and maze appear to go over that limit.)
+       + Change :mkexrc to not dump w{300,1200,9600}, lisp options.
+       + Fix backward search within a line bug.
+       + Change all the includes of "pathnames.h" to use <>'s so that the
+         PORT versions can use -I. to replace it with their own versions.
+       + Make reads and writes interruptible.  Rework code that enters and
+         leaves ex for '!' and filter commands, rework all interrupt and
+         timer code.
+       + Fix core dump when user displayed option in .exrc file.
+       + Fix bug where writing empty files didn't update the saved 
+         modification time.
+       + Fix bug where /pattern/ addressing was always a backward search.
+       + Fix bug triggered by autoindent of more than 32 characters, where
+         nvi wasn't checking the right TEXT length.
+       + Fix bug where joining only empty lines caused a core dump.
+1.09 -> 1.10: Sat Mar 19 15:40:29 EST 1994
+       + Fix "set all" core dump.
+1.08 -> 1.09: Sat Mar 19 10:11:14 EST 1994
+       + If the tag's file path is relative, and it doesn't exist, check
+         relative to the tag file location.
+       + Fix ~ command to free temporary buffer on error return.
+       + Create vi.ref, a first cut at a reference document for vi.
+         The manual page and the reference document only document the
+         set options, so far.
+       + Fix 1G bug not always going to the first non-blank.
+       + Upgrade PORT/regex to release alpha3.4, from Henry Spencer.
+       + Add MKS vi's "cdpath" option, supporting a cd search path.
+       + Handle if search as a motion was discarded, i.e. "d/<erase>".
+       + Change nvi to not create multiple recovery files if modifying
+         a recovered file.
+       + Decide to ignore that the cursor is before the '$' when inserting
+         in list mode.  It's too hard to fix.
+1.07 -> 1.08: Wed Mar 16 07:37:36 EST 1994
+       + Leftright and big line scrolling fixes.  This meant more changes
+         to the screen display code, so there may be new problems.
+       + Don't permit search-style addresses until a file has been read.
+       + "c[Ww]" command incorrectly handled the "in whitespace" case.
+       + Fix key space allocation bug triggered by cut/paste under SunOS.
+       + Ex move command got the final cursor position wrong.
+       + Delete "optimize option not implemented" message.
+       + Make the literal-next character turn off mapping for the next
+         character in text input mode.
+1.06 -> 1.07: Mon Mar 14 11:10:33 EST 1994
+       + The "wire down" change in 1.05 broke ex command parsing, there
+         wasn't a corresponding change to handle multiple K_VLNEXT chars.
+       + Fix final position for vi's 't' command.
+1.05 -> 1.06: Sun Mar 13 16:12:52 EST 1994
+       + Wire down ^D, ^H, ^W, and ^V, regardless of the user's termios
+         values.
+       + Add ^D as the ex scroll command.
+       + Support ^Q as a literal-next character.
+       + Rework abbreviations to be delimited by any !inword() character.
+       + Add options description to the manual page.
+       + Minor screen cache fix for svi_get.c.
+       + Rework beautify option support to match historical practice.
+       + Exit immediately if not reading from a tty and a command fails.
+       + Default the SunOS 4.* ports to the distributed curses, not SMI's.
+1.04 -> 1.05: Thu Mar 24 16:07:45 EST 1994
+       + Make cursor keys work in input mode.
+       + Rework screen column code in vi curses screen.  MAJOR CHANGE --
+         after this, we'll be debugging curses screen presentation from
+         scratch.
+       + Explode include files in vi.h into the source files.
+1.03 -> 1.04: Sun Mar  6 14:14:16 EST 1994
+       + Make the ex move command keep the marks on the moved lines.
+       + Change resize semantics so you can set the screen size to a
+         specific value.  A couple of screen fixes for the resize code.
+       + Fixes for foreground/background due to SIGWINCH.
+       + Complete rework of all of vi's cursor movements.  The underlying
+         assumption in the old code was that the starting cursor position
+         was part of the range of lines cut or deleted.  The command
+         "d[[" is an example where this isn't true.  Change it so that all
+         motion component commands set the final cursor position separately
+         from the range, as it can't be done correctly later.  This is a
+         MAJOR CHANGE -- after this change, we'll be debugging the cursor
+         positioning from scratch.
+       + Rewrite the B, b, E, e commands to use vi's getc() interface
+         instead of rolling their own.
+       + Add a second MARK structure, LMARK, which is the larger mark
+         needed by the logging and mark queue code.  Everything else uses
+         the reworked MARK structure, which is simply a line/column pair.
+       + Rework cut/delete to not expect 1-past-the-end in the range, but
+         to act on text to the end of the range, inclusive.
+       + Sync on write's, to force NFS to flush.
+1.01 -> 1.03: Sun Jan 23 17:50:35 EST 1994 (PUBLICLY AVAILABLE VERSION)
+       + Tag stack fixes, was returning to the tag, not the position from
+         which the user tagged.
+       + Only use from the cursor to the end of the word in cursor word
+         searches and tags.  (Matches historical vi behavior.)
+       + Fix delete-last-line bug when line number option set.
+       + Fix usage line for :split command.
+       + If O_NUMBER set, long input lines would eventually fail, the column
+         count for the second screen of long lines wasn't set correctly.
+       + Fix for [[ reaching SOF with a column longer than the first line.
+       + Fix for multiple error messages if no screen displayed.
+       + Fix :read to set alternate file name as in historical practice.
+       + Fix cut to rotate the numeric buffers if line mode flag set.
+1.00 -> 1.01: Wed Jan 12 13:37:18 EST 1994
+       + Don't put cut items into numeric buffers if cutting less than
+         parts of two lines.
+0.94 -> 1.00: Mon Jan 10 02:27:27 EST 1994
+       + Read-ahead not there; BSD tty driver problem, SunOS curses
+         problem.
+       + Global command could error if it deleted the last line of
+         the file.
+       + Change '.' to only apply to the 'u' if entered immediately
+         after the 'u' command.  "1pu.u.u. is still broken, but I
+         expect that it's going to be sacrificed for multiple undo.
+       + If backward motion on a command, now move to the point; get
+         yank cursor positioning correct.
+       + Rework cut buffers to match historic practice -- yank/delete
+         numeric buffers redone sensibly, ignoring historic practice.
+0.92 -> 0.93: Mon Dec 20 19:52:14 EST 1993
+       + Christos Zoulas reimplemented the script windows using pty's,
+         which means that they now work reasonably.   The down side of
+         this is that almost all ports other than 4.4BSD need to include
+         two new files, login_tty.c and pty.c from the PORT/clib directory.
+         I've added them to the Makefiles.
+       + All calloc/malloc/realloc functions now cast their pointers, for
+         SunOS -- there should be far fewer warning messages, during the
+         build.  The remaining messages are where CHAR_T's meet char *'s,
+         i.e. where 8-bit clean meets strcmp.
+       + The user's argument list handling has been reworked so that there
+         is always a single consistent position for use by :next, :prev and
+         :rewind.
+       + All of the historical options are now at least accepted, although
+         not all of them are implemented.   (Edcompatible, hardtabs, lisp,
+         optimize, redraw, and slowopen aren't implemented.)
+       + The RE's have been reworked so that matches of length 0 are handled
+         in the same way as vi used to handle them.
+       + Several more mapping fixes and ex parser addressing fixes.