Changes for vile 8.4 (released Sun Nov 7, 1999)

 (tom) 991107 (z)
 	+ change copyright notice to distribute vile using GPL.
	+ update RPM spec based on package by Tim Powers <timp@redhat.com>,
	  add xvile.wmconfig, vile.wmconfig and use xpm icons.
	+ workaround for problem introduced in 8.3r, resetting 'vile_is_busy'
	  flag after each command in main loop().  Otherwise, perl scripts
	  that set this flag via working(0) without restoring it would disable
	  menus.
	+ add -I option, which directs vile to source vileinit.rc, and if the
	  user has no startup file, to make a simple startup file which sources
	  vileinit.rc (request by Peter Williams).
	+ install a default menu file for xvile (.vilemenu) in the data
	  directory.
	+ add vileinit.rc, which adds various useful macros and key bindings
	  to the other initialization files, as an example.
	+ minor fixes for vilefilt.l and makefile.l
	+ correct value computed for $pathlist-separator, supply trailing null.
	+ add $bflags variable, to simplify checks for scratch buffers.
	+ add xshell.sh to install rules for xvile.
	+ reinstate/complete $xshell logic, making it detach the subprocess if
	  waitpid() is available (reported by J.  Chris Coppick - see 971015).
	+ implement showmatch for winvile (patch by Clark Morgan).
	+ more fixes for OPT_CACHE_VCOL, to handle two special cases: showmatch,
	  which temporarily moves the cursor without necessarily updating
	  the sideways value, and a control character split across the right
	  margin.
	+ minor fixes to make vile build/work with --disable-extensions
	+ correct redundant unget when parsing ":%&g" command that would leave
	  'g' repeated in prompt (reported by Mark Crosland
	  <mjc@c1000907-b.sttls1.wa.home.com>)

 (tom) 991030 (y)
 	+ correct logic for OPT_CACHE_VCOL which accounts for the starting
	  point when it may be a nonprinting character, i.e., rendered as
	  multiple columns.
	+ fix an error in BeOS version of catnap, exposed by change for SCO;
	  the code did not handle a zero delay time while watching for input.
	> patches by Clark Morgan:
	+ modify ntwinio.c so popup menu's check-marks match those in the
	  system menu.
	+ modify the label of the popup menu "Menu" selection, remove trailing
	  "..." because this cmd does not invoke a dialog box.
 	+ update doc/w32modes.doc to cover Windows 98

 (tom) 991019 (x)
 	+ minor fixes for OPT_CACHE_VCOL, to take into account list and number
	  modes.
 	+ fix a typo in manpage.rc that let empty responses pass by.
	+ save/restore token's column when processing tags (patch by Ed
	  Henderson).
	+ change tttypahead() to use catnap() in preference to ioctl(FIONREAD),
	  since SCO OpenServer's FIONREAD can be used only for sockets (says
	  Bela Lubkin), while select and poll are a little more flexible.  This
	  makes cursor keys work with the terminfo version.
	+ make entering/leaving check in finderr.c faster by checking only the
	  regular expressions that contain the %V (verb) token.
	+ minor fixes to no-leak code in modes.c
	+ fix memory leak from not freeing macro parameters (bind.c)
	> patch by Clark Morgan, for winvile cursor/selection code:
	+ a left mouse button click in the editor's text window clears the
	  current selection (a la notepad and word).
	+ don't start a selection until the cursor actually moves at least 1
	  char.  This change helps prevent a window selection with left mouse
	  button from also being interpreted as "start new selection", thus
	  wiping out the current contents of the unnamed register.
	+ turn off cursor prior to copying to clipboard via right mouse button.
	+ turn off cursor prior to pasting with middle mouse button.
	+ these changes appear to now prevent the editor from dropping stray
	  cursor glyphs in the text windows (although the editor will still
	  occasionally leave cursor glyphs in the message window due, perhaps,
	  to race conditions between the GDI and the editor's event loop).
	+ a couple of minor fixes for shrinking/enlarging a window via a left
	  mouse button drag of the mode line.

 (tom) 991010 (w)
	+ add syntax filter for Python scripts, and associated pymode.
	+ correct bug in ^X-^, which did not copy special characters such as
	  arrow keys.
	+ correct bug introduced in rewrite of ^X-( and ^X-) command for 8.3,
	  which left ^X-) on the end of the recorded text (reported by George
	  Eccles, analysis by Paul Fox).
	+ add $kbd-macro variable to show the contents of the keyboard macro.
	+ install perl modules as data, not scripts (patch by Ryan Murray).
	+ minor fixes with EXTERN_CONST definition to allow building xvile and
	  vile with g++ on Linux.
	+ remove unused/obsolete code for dot-replays-macro in input.c
	+ modify write_message() in perl.xs to erase the message line if the
	  message is empty, e.g., in the end of lock.pl
	+ correct handling of leading blanks for '#' comments in xs-filt.c
	+ add VAREV to special case handling of terminfo/termcap no_color_video.
	+ disallow execution of '<' register, i.e., by "@<".
	> patches by Clark Morgan:
	+ $cfgopts now shows whether a Unix-hosted editor uses TERMCAP or
	  TERMINFO screen DB.
	+ directory lookup via CDPATH enabled on all hosts (previously only
	  supported on UNIX), but only tested on VMS, Unix, and Win32 (don't
	  have access to DOS, OS/2, BEOS).
	+ documented win32 double/triple click feature.
	+ added $cdpath, which is the editor's copy of the external CDPATH
	  environment variable.  This state variable is read/write.
	+ The components of $CDPATH are glob'd before use, which means that
	  specifying things like:
	      Unix:
		export CDPATH="~/srcdir:~/blddir" # quotes prevent tilde expn
	      Win32 (using a unix clone of the Bourne shell):
		export CDPATH=c:/pro*/dev*/vc;e:/cm/projects
	  will work.

 (tom) 991004 (v)
	+ remove the VT52-style fallback_arrows[] entry, from 8.3u, since it is
	  too easy to confuse it with type-ahead (reported by Clark Morgan).
	+ change testing order in configure script for 'const', to build on
	  HP-UX (reported by Michael Finken <finkenm@hotmail.com>).
	+ make functions attributeregion() attribute_cntl_a_sequences() and
	  attribute_from_filter() interruptible.
	+ correct limits of ^X-Q using goto-char function; it was not clearing
	  the last line since the region-shape is set to EXACT unless
	  overridden.
	+ merge clear-attributes-til with attribute-normal-til.
	+ fix (partly) the lack of syntax highlighting when editing filters.rc
	  or other initialization file by reevaluating the majormode of the
	  current buffer after all buffers are loaded during initialization.
	+ change a typealloc(CMDFUNC) to use typecalloc, so the c_args pointer
	  is initialized.
	+ change ifdef in tgetc() which relates to older Linux kernels (up to
	  early 2.0) to BUG_LINUX_2_0_INTR, so it is disabled.  This does not
	  appear to malfunction with 2.0.36, so we can enter quoted ^C's.
	+ remove ABORTED() check from read_quoted(), since that prevents us
	  from entered an escape or similar character (such as intr) when
	  quoted (see 8.3k).
	+ change sysmapped_c() to return early if term.getch() returns a -1,
	  since we don't want to try to map that: an indefinite stream of
	  EOF's can come out of ttgetc in at least one instance on Linux.
	+ eliminate use of yytext in local functions of filters, since that does
	  not work with SCO's lex (fdl-filt.l, xs-filt.l).
	+ add vile-txt-filt, vile-xs-filt to makefile.wnt
	+ modify makefile.wnt to set related $(cdebug) and $(ldebug) when
	  DBG symbol is set.
	+ modify expansion of tilde by winvile to take into account $HOMEDRIVE,
	  used on WinNT to denote the drive on which a user's desktop is
	  located.
	+ add mode 'cd-on-open', to set working directory to a given file when
	  reading it into a buffer.  Use related logic to make winvile cd to
	  the directory of the last-specified file when invoked, so it is
	  consistent with drag/drop behavior.
	> patches by Clark Morgan:
	+ sever vile/winvile's dependence on $COMSPEC and additionally permit
	  launching apps that are neither blocked by the editor nor launched by
	  a shell.
	+ add command to swap the Ctrl+Insert and Alt+Insert bindings.  Patch
	  triggered by Alex Wetmore's comments (many months ago) that he felt
	  the current clipboard bindings were not optimal for use:
	  a) with the left mouse button (which always copies text to the
	     unnamed buffer), and
	  b) by experienced Windows users who will expect Ctrl+Insert (a
	     Windows Standard key binding) to copy data to the clipboard
	     without being prompted for a region.
	+ include rms.h from estruct.h to make nefsms.h compiler properly on
	  VMS (fixes a problem introduced by restructuring of modetbl in 8.3o).

 (tom) 990926 (u)
	+ allow adjustment of window size in win32 versions (vile, winvile) by
	  dragging the modeline.  Clicking on a modeline clears the selection.
	+ modify drag/drop logic in winvile to set the current working
	  directory to the last dropped file.
	+ add alarm on attempt to paste selection into a readonly buffer
	  (reported by Clark Morgan).
	+ correct logic in glob_match_leaf(), which did not allow a pattern
	  to end with '*', e.g,. ":e make*in*" would not match makefile.in
	  (reported by Clark Morgan).
	+ add fallback definitions for cursor keys in tcap.c.  When running
	  'screen' 3.7.6 on Redhat 6.0, which is linked with ncurses, screen
	  makes a bogus $TERMCAP from the terminfo entry, which doesn't
	  necessarily correspond with the actual termcap entry.  I found that
	  my cursor-down was not recognized since the $TERMCAP said it would
	  not be provided, while 'screen' actually delivered <esc>OB.
	+ integrated winvile's popup menu with the system menu, adding an entry
	  to enable/disable the popup menu so that the right mouse button can
	  be used for copying selections to the clipboard.
	+ improve vile-make-filt by coloring variables in strings.
	+ minor fix for single-quoted strings in vile-sh-filt, to handle
	  escaped newlines, which are not needed, but terminated the pattern
	  early.
	+ correct handling of default color in color-schemes; it was being
	  internally set to the actual color rather than the special code for
	  'default', so one could not reset the colors automatically.
	+ correct a typo in setting color schemes that used the background
	  color where the cursor color was intended.
	+ fix for ccolor mode in xvile, for 8-bit displays: the cursor is not
	  necessarily colorable if we do not allocate enough GC's.

 (tom) 990920 (t)
	+ implement drag/drop for winvile.
	+ ensure that win32 and termcap versions do not allow paste into buffer
	  that is marked 'view'.
	+ correct background in os2vio.c (the 980930 change for blink versus
	  bright does not apply to OS/2 full-screen windows, but only the
	  stand-alone mode).
	+ modify dummy functions for setting fcolor, bcolor, ccolor to restore
	  the default value rather than allow setting misleading value to be
	  set when the corresponding mode is not really supported.
	+ ifdef'd out with OPT_POPUP_WINOPEN popup menu for winopen command,
	  added it to the system menu.  This gets in the way of mouse
	  selection/extension and (for 2-button mice) prevents pasting with the
	  middle button.
	+ implement double- and triple-click selection with win32 console and
	  gui, as well as pasting with button-2.  There's no simple way to
	  implement button-3 extension as in tcap.c, however, for win32 console.
	+ correct a spurious decrement of bp->b_bytecount in
	  strip_if_dosmode(), from 8.3q changes.
	+ implement 'default' color for all drivers, to simplify ccolor.
	+ add term.setccol(), to allow changing the cursor color for
	  drivers that support it, e.g., xvile, along with mode ccolor.
	+ change OPT_TITLE's action routine to show $progname value rather
	  than "vile".
	+ make OPT_TITLE apply to xvile, using X resources rather than WM
	  properties (patch by Rick Sladkey, modified by suggestion from Kevin
	  Buettner to integrate it with existing $title logic).
	+ fix:  xvile doesn't recognize XK_KP_* keypad keys such as the arrow
	  keys on the numeric keypad when numlock is off.  This is particularly
	  bad for users with Sun Type 4 keyboards where there is only a single
	  numeric/cursor keypad.  (The Solaris X server may not return XK_KP_*
	  keysyms by default, the OpenBSD one does.) (patch by Christian
	  Weisgerber <naddy@mips.rhein-neckar.de>).
	+ add a note to the VMS build scripts (descrip.mms and vmsbuild.com)
	  to caution installers to delete generated headers and object files
	  between building vile.exe and xvile.exe (patch by Clark Morgan).

 (tom) 990914 (s)
	+ modify list mode to show the actual record separator rather than ^J.
	+ correction to change in 8.3q, to writereg() and getregion(), to
	  account for length of recordseparator when it is crlf.  This also
	  affects (because the r_size value changes) wordcount(), ldelete(),
	  and several places in perl.xs
	+ modify text color model in x11.c to work like tcap.c, adding explicit
	  fcolor0 and bcolor0 resources and changing logic that implements the
	  fcolor and bcolor modes to update GC's at runtime.
	+ modify find_in_path_list() to use caseless comparison on systems that
	  need this.
	+ modify inout_popen() to convert pathname to backslashes on DOS, etc.
	+ modify HighlightFilter to check if the filter is found in $PATH before
	  deciding to build up the pathname.
	+ modify logic in tcap.c to prefer AF/AB over Sf/Sb even if the number
	  of colors is greater than 8.  That makes the $palette strings for
	  xterm-16color easier to work with.
	+ add "cs" as abbreviation for color-scheme; updated vile.hlp and add
	  palettes.rc to show examples.  correct expression in chgd_scheme()
	  for selecting the color-scheme.  Add "use=" clause to color schemes
	  to simplify construction of black and white schemes.
	+ convert as needed slashes to backslashes in displayed pathnames in
	  which-source and which-exec commands.
	+ modify dofmt() to make its repertoire closer to printf's: remove 'D'
	  format code, and change 'p' to 'Q', 'u' to 'f'.
	+ modify logic in tcap.c to use 'reverse' mode in preference to
	  'standout', and either in preference to color when there is a
	  conflict.  This works around an error in several termcap entries
	  (including screen's), which do not mention NC (no_color_video).  This
	  error made selection highlighting not work.
	+ correct my recent cleanup of tracing TGETSTR calls in tcap.c, which
	  broke the merging of similar control sequences.
	+ correct typo in PutModename() call that shows recordseparator,
	  which caused GPF on NT.

 (tom) 990907 (r)
	+ correct oversight in 'eval' command, which evaluated only the first
	  token.
	+ revised macro-parameter logic to rely on parameter template in the
	  store-procedure command rather than accepting unsolicited parameter
	  lists.  This works better with command-completion (fixes a problem
	  reported by Duncan Sargeant).
	+ set txtmode in manpage buffers to simplify further optional
	  highlighting
	+ check if vile_is_busy, suppress menu operations if true.
	+ corrected problem in perl.xs introduced by changes for definition of
	  VILE_LIBDIR_PATH which dropped the trailing '/', by modifying logic
	  in perl.xs to use pathcat() function.  This also avoids modifying the
	  corresponding environment variable.
	+ modify lock.pl to work when the system uses shadow passwords.  Also,
	  modify menu.c and x11.c to ignore mouse operations while the editor is
	  locked.
	+ add &register function, so the contents of an internal register may
	  be manipulated in macros (request by Otavio Exel).
	+ add configure check for <sys/socket.h>, needed for SCO which defines
	  FIONREAD there.  This fixes screen output, avoiding the fcntl bug,
	  but still does not make arrow keys work since the FIONREAD ioctl does
	  not work on SCO.  Using select or poll makes it much slower.

 (tom) 990904 (q)
	+ modify check for curses/termcap library for FreeBSD to exclude
	  curses library, preferring either ncurses or termcap.
	+ rename isspecial to isSpecial because FreeBSD 3.1's ctype.h conflicts
	+ make ^X-^X command interruptible
	+ modify majormode logic so that when a user sets a majormode for a
	  given buffer, the side-effects that are performed for each of the
	  modes associated with the majormode are performed in this context
	  as well.  Previously the mode values were simply attached.
	+ recount buffer size after set-dos and set-unix commands to take into
	  account the length of the line-ending.
	+ force a null on the end of the result from special_formatter(), which
	  is used to display the ^G command.  Sometimes there was no null,
	  causing the output line to get trashed.
	+ add buffer mode recordseparator to set dos/unix modes like the
	  set-dos and set-unix commands, i.e., not delayed til the next buffer
	  read like the 'dos' mode.
	+ add vile-tbl-filt to makefile.wnt
	+ add *.ksh to shmode
	+ workaround in exec_sh_c() for OS/2 EMX special requirements for
	  slash/backslash conversion.
	+ reduce compiled-in Unix $startup-path to the path on which we
	  install the filter programs, incidentally correcting path
	  separator in default value for $startup-path on OS/2 EMX
	+ add commands which-source and which-exec to show which file would
	  be source'd and exec'd from $startup-path and $PATH + $libdir-path,
	  respectively.
	+ add logic, also used for type-ahead testing to catnap for BeOS, making
	  the cursor and function keys work.
	+ modify catnap() to use its select/poll logic for tty type-ahead tests.

 (tom) 990829 (p)
	+ modify test for terminfo/termcap library support to look for curses
	  library first.  SCO's native termlib does not support color, though
	  the UDK's termlib does.
	+ eliminate SCO-specific ifdef SYSTEM_LOOKS_LIKE_SCO, which really
	  applied to v4.  Tested with sco3.2v5.0.5 (aka v5).
	+ correct a negative array index for ctrans[] in show-colors command.
	+ remove unneeded putnpad() from tcap.c
	+ fix excess initialization of kbindtbl when --disable-extensions is
	  configured using macro KBIND_LINK.
	+ modify htmlfilt.l to highlight aliases for special characters, e.g.,
	  "&lt;".
	+ minor fixes for tc-filt.l, to allow for entries that are missing the
	  trailing '\', and to allow for entries without a description.  Also,
	  allow '.' and '_' in alias names.
	+ correct typo in suffix expression for cshmode.

 (tom) 990822 (o)
	+ add &pquote function to simplify use of &lookup when the result might
	  contain spaces, and $exec-suffix variable.
	+ add &cclass function, and set-char-class, unset-char-class and
	  reset-char-classes commands.
	+ add tbl-filt.l, for modetbl and cmdtbl highlighting.
	+ add .login and .logout to csh mode.
	+ modify pictmode to use ~local.
	+ modify HighlightFilter and ShowManpage, ShowFormatted macros to use
	  &lookup and related functions to construct the pathname of the filter
	  program, bypassing possible reset of $PATH in the subshell.
	+ add FL_LIBDIR to cases in cfg_locate(), corresponding to $libdir-path
	+ add $pathlist-separator variables
	+ add functions &word and &token for simple parsing of strings.
	+ add functions &lookup, &path and &pcat to provide support for
	  external pathname manipulation.
	+ moved symbol table for DIRECTIVE to modes.c, to generate it from
	  modetbl and incidentally fix an ambiguity in name resolution, since
	  the old table was not automatically sorted.  Since it is handled as
	  by the enumerated-mode value code, directive names are now processed
	  ignoring case.
	+ add &execable test for files.
	+ add "&random" as alias for "&rnd", "&readable" as alias for "&rd",
	  make all &function names long enough to be more readable.
	+ add check for menufile-not-found in do_menu, to avoid passing a null
	  pointer to fopen (reported by Graeme Miller).

 (tom) 990817 (n)
	+ if .vilemenu is not found, return status to main.c so we can popup
	  appropriate message.
	+ remove const qualifiers from some functions whose data really are
	  modifiable: next_buffer_line(), get_token(), tokval (), user_reply().
	+ BeOS has nonworking 'select()', and no corresponding fd_set
	  declaration.  Add CF_TYPE_FD_SET configure check to handle this.
	  (I'll write some BeOS-specific code to make cursor-keys work).
	+ BeOS does not define O_NDELAY; undef'd USE_FCNTL in this case.
	+ correct ifdef for ttyname(), was HAS_TTYNAME, to use this on BeOS.
	+ add fdl syntax highlighter.

 (tom) 990805 (m)
	+ add vile-perl-filt to makefile.wnt
	+ minor improvement to txt-filt.l, to reset quoted mode when a blank
	  line is found.
	+ minor correction to bat-filt.l, workaround for apparent bug in flex
	  which is treating a '?' as '+'.
	+ minor correction to difffilt.l, forcing word boundary after "diff"
	  and "Binary".
	+ modify complex fence matching so that if too many iterations are
	  needed for the match, that it can still try the simple fence matching.
	  A warning message will be displayed if the fence-limit timeout
	  expires.
	+ modify perlmode complex fences by merging "do" and "while" groups,
	  making that a little faster.
	+ change fences-limit from a scale factor to timeout in seconds to make
	  it simpler to understand/configure.  (This and the perlmode change
	  address a problem reported by Chris Sherman <sherman@unx.sas.com>).
	+ correct vilemode complex fence patterns (the patterns were not
	  anchored to "^").
	+ modifications for egcs 2.91 (compiler warnings about missing
	  initializers for structs where 0's are fine).  egcs 2.91 also has a
	  bug causing it to emit a lot of warnings when it saw a missing const
	  in the qsort comparison functions.

 (tom) 990717 (l)
	+ turn off OPT_CACHE_VCOL, still too experimental.
	+ correct flag that would force window repainting in set-dos-mode
	  command, lost by optimization in 8.3k.
	+ correct a syntax error in configure script's --with-no-leaks option.
	+ fix several memory leaks in majormodes with new function
	  free_sm_vals(), etc.
	+ correct logic in write_string(), an infinite loop would result if the
	  string contains a null (filters.c)
	+ suppress $read-hook in readin() if we are not reading the current
	  buffer.  This can happen as a side-effect of the :tags command, and
	  would cause the prompt to be overwritten by the message from
	  highlighting the current buffer.
	+ add HighlightClear macro, bound to ^X-Q (request by J Chris Coppick).
	+ add goto-char command, bound to ^X-G.
	+ add variable $bwindows
	+ add variable $curchar
	+ add variable $lcols
	+ add variable $position-format
	+ implement a simple 'eval' or 'execute-string' command, allowing users
	  to construct commands dynamically.
	+ use new function vms_fseek_ok() to check if quickreadf() would not
	  successfully read a file whose record structure prevents VMS's read()
	  function from reading it in one call (patch by Clark Morgan, reported
	  by Adam Denton).

 (tom) 990705 (k)
	+ correct logic of read_quoted() from 8.3j, which no longer accepted
	  nondigits after a control/V, e.g., ^V^D.
	+ add commands to move the cursor up/down by rows on the screen, ignoring
	  wrapping: next-row or ^X-^D and previous-row or ^X-^U.
	+ add a check for negative array index in l_to_vline(), which would
	  cause a core dump when changing a buffer with very long lines to
	  linewrap mode and back again.
	+ make wrapper for the most frequently called form of mk_to_vcol(),
	  dot_to_vcol() and in that function cache a location on the current
	  line "close" to DOT, so we can make fewer calls to mk_to_vcol().
	  Ifdef'd this with OPT_CACHE_VCOL.
	+ correct sign of shift-parameter in call of mvleftwind() from
	  gotobol().
	+ correct test before calling updall(), which was updating the whole
	  window each time WFMODE was set, e.g., when updating the ruler.
	+ minor optimization (2-3 times faster) of calls to mk_to_vcol() to
	  reuse the ruler's column value in updpos() if it is up to date.
	+ modify calls to mk_to_vcol() so we show the effective column
	  consistently in [Registers], which has a left margin.

 (tom) 990703 (j)
	+ implement set-window command (request by Adam Denton).
	+ implement show-marks command.
	+ rename 'quote()' to 'quote_next()', split-out 'read_quoted()' to
	  reuse the logic that recognizes ^V followed by a number in input.
	  Now the minibuffer can accept any character except for nulls
	  (originally requested by Sean Ahern, but Adam Denton reminded me).
	+ modify txt-filt.l to highlight strings in double-quotes.
	+ change kbd_reply() to ensure that last_eolchar is set either to
	  a newline or a blank if we are interpreting a macro.
	+ correct array limit in save_arguments(), which was one too small,
	  and added a double-check against that limit.
	+ add a sample of .indent.pro (i.e., doc/indent.pro) to use with indent
	  2.x (we're not planning to use this wholesale, but piecemeal, since
	  even indent 2.0 has bugs ;-).
	+ undefine 'dofile' in perl.xs, to build with perl on Redhat 6.0 (Kevin
	  Buettner).
	+ correct two minor, but annoying warning messages in perl.xs:
		Attempt to free unreferenced scalar
	  by incrementing a reference count, and
		BUG: getregion: no mark set in this window
	  by checking for null MK before call to getregion.
	+ add ShowFormatted macro to manpage.rc, bound to ^X-n, which renders
	  the current buffer with nroff.
	+ rename manpage macro to ShowManpage
	> patches by Paul Fox:
	+ make the Entering/Leaving nesting work correctly if you jump into the
	  middle of an error buffer.  previously selecting a line partway
	  through the buffer would cause vile to skip parsing the preceding
	  change-directory directives, so it wouldn't know where the referenced
	  file was to be found.  now, if you don't use ^X^X to traverse the
	  buffer linearly, the preceding lines are re-parsed as needed.
	+ changed fence.c over to 4 column indents, using indent, plus some
	  hand editing on continuations and comment alignment.
	+ modify vilefilt.l to accept hyphens in identifiers

 (tom) 990621 (i)
	+ add vile-pager to install rule.
	+ add macros (e.g., manpage.rc) to install rule.
	+ implement $(DESTDIR) variable in Unix makefiles to simplify packaging
	  binary distributions.
	+ corrections to CF_MAKEFLAGS configure macro, to work with POSIX
	  'make', which may pass assignments in the $(MAKEFLAGS) variable.
	+ update some configure script macros: CF_CHECK_ERRNO, CF_HEADER_PATH,
	  CF_LIBRARY_PATH, from lynx/xterm changes, as well as mkdirs.sh
	  and install.sh adapted from autoconf.
	+ make the [Variables] buffer partly animated; updating after
	  set-variable commands, and as a side effect of the save/restore
	  function for macro arguments.  Most variables are set internally,
	  however, so do not expect the buffer to jitter as you move the cursor
	  around.
	+ implement parameters for procedures (see macros.doc).
	+ modify ifdef's for hooks to use new symbol OPT_HOOKS, since they are
	  not really dependent on OPT_PROCEDURES anymore.
	+ change run_a_hook() to use docmd() rather than run_procedure(), so
	  the hook can be an arbitrary command, rather than only procedures
	  (suggested by Brendan O'Dea).
	+ correct call on screen_string in ask_for_bname, which had the wrong
	  length, hidden in screen_to_bname macro.  This made ^X-k use a length
	  of 4, rather than the actual buffer length.
	> perl scripts by Kuntal Daftary (from his notes):
	+ lock.pl is a simplistic extension to allow you to lock your vile
	  sessions, say while temporarily leaving your terminal or something
	  like that.
	+ spell.pl is a spell checker within vile that behaves (almost) like
	  ispell (and in fact does use ispell internally).  This one is
	  inspired out of recent mail Christian Lindig providing a spell
	  filter.  Also thanks to Tom for the -a flag :-)
	+ pod documentation is within the files themselves. just dump all the files in
	  your ~/.vile/perl
	+ spell.pl also required me to rig up a mlreply_opts command as an
	  addition to the mlreply_* family of commands already offered in the
	  Vile package.  Tho the invocation is quite similar to the builtin
	  mlreply_* commands, the behavior is simplistic, and does not exactly
	  match that of other Vile commands, e.g., mini-buffer editing is not
	  supported and TAB-completion behavior is different.

 (tom) 990614 (h)
	+ updated example in menus.doc, dropping references to macros not in
	  our source distribution.
	+ add no_errs flag to suppress bells when ~force is in effect.
	+ implement clear-attributes-til, to allow reset of all video attributes
	  and highlighting.
	+ implement wildcard matching in :kill-buffer, so one can do
		:ki *.log
	  to discard all files ending with ".log".  I used filename wildcards
	  rather than regular expressions.  If no wildcard matches, the normal
	  matching is used, e.g., filename or buffer number.
	+ implement name-completion for killbuffer(), usebuffer(), finderrbuf()
	  and execbuf().
	+ correct logic in x11.c which sets window manager hints for icon; it
	  did not first ask for the existing hints.  This caused some window
	  managers (olvwm, for instance) to ignore FocusIn events (Mark
	  Robinson <Mark.D.Robinson@UK.Sun.COM>).
	+ modify logic of insert_namebst() and delete_namebst() to allow
	  redefinition of builtin commands.  The builtin command is moved to
	  the redefns table until the user deletes the command that redefined
	  it (request by Alex Wetmore).
	+ modify c-filt.c to highlight floating point constants.
	+ modify write_string() function in filters.c to avoid writing a
	  newline that's beyond the limit of the string passed as parameter.
	  This fixes a case in m4-filt.l that would write an extra newline
	  after comment lines containing only a "#".
	+ add "/**/#" lines to imakemode preamble pattern, to accommodate old
	  (i.e., obsolete) Imakefile's that rely on pre-ANSI cpp's.
	+ suppress blank messages in perl.xs

 (tom) 990607 (g)
	+ add distinct prefixes to warnings written in perl.xs with write_message
	  to aid in debugging.
	+ restore ability of Vile::get to return values of internal variables
	  without requiring the '$', e.g., Vile::get('$seed').
	+ remove a check in Vile::set which tested if we can get a variable's
	  value before attempting to set it.  A few variables (e.g., $cryptkey)
	  may be writeonly, and temporary variables (e.g., %foo) have no
	  predetermined value.
	+ add numbers, email addresses and urls to txt-filt.l
	+ tweak diffmode suffixes, adding .dif and .diffs
	+ implement ":set video=reverse" for tcap.c, correct rendition of
	  selection in ntwinio.c as well.
	+ add Perl extensions syntax filter xs-filt.l and associated xsmode.
	+ tweak perlmode preamble to allow relative paths.
	+ add a note in vile.hlp explaining how to use $shell=/bin/sh to
	  circumvent reset of $PATH in ".cshrc", so value in $VILE_LIBDIR_PATH
	  is inherited automatically.  I didn't mention there, but I have been
	  using this for several years, having found that SunOS's make program
	  would dump core when running in vile if I left $shell=/bin/csh.
	  It's faster anyway...
	+ add ftp site info to vile.hlp
	+ add ifdef in ntwinio.c to support wheel-mouse, must add
	  -D_WIN32_WINNT=0x400 to makefile.wnt (patch by Alex Wetmore).
	+ correct ifdef in x11.c to so wheel-mouse support compiles properly
	  when menus are not used (patch by Kevin Buettner).
	> patches by Clark Morgan:
	+ minor patch to forces wvwrap to pop winvile to the foreground
	  (convenient when winvile does not currently have focus).
	+ a new "sync-file" command enables synchronization of winvile's
	  current buffer with the DevStudio text editor.  When this command is
	  used in conjunction with visvile's key redirection feature, it's now
	  possible to set a breakpoint in DevStudio from winvile like so:
	  + use winvile's search capabilities (including tags) to find the
	    program location where a breakpoint is desired, and
	  + press F9 (standard DevStudio shortcut that sets/clears a
	    breakpoint).

 (tom) 990602 (f)
	+ implement fcolor and bcolor options for xvile.
	+ add missing case for VALTYPE_ENUM in listvalueset(), which caused
	  very long enum values to be run-on in [Settings].
	+ add mode 'video-attrs', mainly to implement bold text as part of the
	  color schemes.  I tried implementing reverse, but this is hard to do
	  in tcap.c
	+ add color schemes, associating fcolor, bcolor, $palette and an
	  optional video attribute.  This adds new commands to manipulate the
	  schemes:
		define-color-scheme
		remove-color-scheme
		show-color-schemes
	+ allow ':' for first line of Bourne shell
	+ recognize \f1 and \f4 in nr-filt.l
	+ modify preamble pattern for tclmode to allow version number, e.g.,
	  wish4.1 vs wish.
	+ improve sh-filt.l so that option strings such as "--with-8bit" do not
	  highlight the "8".
	+ modify sel_yank() to set curtabval temporarily so tab/offset
	  computations in yankregion work properly when user has selected a
	  rectangle in one buffer, then clicks the mouse into a buffer with a
	  different tabstop setting (reported by Clark Morgan).
	+ improve makefile.l, handling escaped newlines in quoted strings and
	  in target lists.

 (tom) 990523 (e)
	+ add/use new function restore_dot() to guard against restoring DOT to
	  a value which no longer points into the current buffer, e.g., after
	  modifying it.  This fixes a core dump in xvile when selecting in the
	  [Registers] buffer.
	+ improve perl syntax filter by parsing patterns following =~ and =!
	  operators.  (Patterns may also be in other places).
	+ comment-out save/restore of $CFLAGS in configure.in via the
	  saved_CFLAGS, since that interferes with configuration on HP-UX 10.20
	  with HP's ANSI compiler, which does not support ANSI C without
	  specifying an option.  As a result, all of the checks for missing
	  function prototypes failed, as well as the checks for terminfo vs
	  termcap (reported by Micheal Finken).
	+ simplify mlerror, allowing for the possibility that strerror may
	  return a null pointer.
	+ correct quoting for configure script's --with-exec-macros option,
	  which prevented users from setting that values (reported by Michael
	  Finken <finkenm@hotmail.com>).
	+ turn off crypting during reads/writes to a pipe.  This is needed in
	  crypt mode in order to support macros that pipe text to an external
	  program for filtering.  Without this change, instead of the actual
	  text, the encrypted text is sent to the external programs which will
	  most likely result in incorrect behavior.  (patch by Daniel Palermo
	  <palermo@puzzle.rsn.hp.com>).
	+ provide default colors for xvile similar to those used by vile for
	  fcolor1 through fcolor15 (patch by Brendan O'Dea).
	> patches by Clark Morgan:
	+ removed duplicate winopen and winopen-nocd documentation from
	  vile.hlp
	+ winvile only paints its frame once at startup.
	+ added logic to ensure the the winvile frame is completely exposed on
	  the desktop (i.e., not clipped by taskbar or painted offscreen).
	+ further changes to permit a winvile user to specify any geometry that
	  lies within the region bounded by the current desktop screen.
	+ setting winvile font via dialog box now repaints screen (in all
	  cases) and flushes status message to mini-buffer.
	+ fixed a couple of minor problems with wvwrap when setting winvile's
	  current working directory.  Wvwrap also makes sure the editor is
	  visible.
	+ finally, a rather big change, I've dumped the oleauto Open method.
	  As it turns out, this was a bad idea.  I saw cases 2nite where the
	  editor was "simultaneously" changing its working directory and
	  opening a file.  Not good.  This kind of race condition is avoided
	  when VileKeys() "drives" the editor because all of winvile's commands
	  are serialized via a Windows message queue.

 (tom) 990519 (d)
	+ remove fragment of code in c-filt.c which left it incorrectly parsing
	  "string1""string2" (reported by Alex Wetmore).
	+ implement $palette for xvile, allowing colors to be permuted.
	+ add show-colors command, to show the color names and $palette values
	+ change get_token() and mac_tokval() to use TBUFF's, making them
	  independent of buffer length.
	+ change replacepat to a TBUFF.
	+ correct logic for $kill, which did not account for killbuffer
	  rotation and was always pointing to the same index.
	+ change statevar.c to return results in TBUFF's, making it independent
	  of the caller's buffer size.  This fixes some trash after the display
	  of $kill in show-variables.
	> patches by Clark Morgan:
	+ add winopen and winopen-cd commands to w32 vile.
	+ hook the winvile right mouse button to the new winopen command.
	+ Add an Open method to winvile ole automation server, which may be
	  used to directly open a filename in the editor (thus avoiding the
	  overhead of VileKeys).
	+ 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 .
	  [ Note: wvwrap.exe is Ed Henderson's brainchild and he wrote the
	    original version of the program.  Thanks, Ed! ]

 (tom) 990510 (c)
	+ fix an overlooked reset of lines read if we are reading via
	  attribute-from-filter
	+ add logic to pathname completion to supply slash if given an
	  environment variable that evaluates to a directory name, e.g., $HOME
	  (request by Kuntal Daftary).
	+ add warn-blanks mode, to allow users to be prompted if they give a
	  filename which has nonprinting characters (request by Tom Serkowski
	  <Tom.Serkowski@taurus.srccomp.com>)
	+ correct (supply) class-inheritance in filters.c function keyword_attr.
	+ modify filters.c to support arbitrary strings as .class values, used
	  this to parameterize m4 filter.
	+ minor resync of autoconf macros with xterm and lynx.
	+ add M4 syntax filter.
	+ correct handling in makefilt.l of escaped quotes outside a string.
	  Also, highlight $(name), like ${name}.
	> patch by Clark Morgan:
	+ remove race condition in winvile (in ole-auto mode) when keystrokes
	  are redirected to DevStudio (noticed on a networked, NTFS drive).
	+ fix typo in filters/makefile.wnt -- nmake won't allow use of both
	  ':' and '::' for the same target.
	> patch by Gary Ross to add support to xvile for wheel mouse:
	+ modified x_process_event to scroll up/down for Button4 and Button5
	  button press events.
	+ added a new resource XVile.wheelScrollAmount to set the number of
	  lines scrolled for each occurrence of these events.  (Default is 3).

 (tom) 990503 (b)
	+ correction to SSTRING and DSTRING symbols in perl, other syntax
	  highlighters.  The backslash character was not given as part of the
	  excluded character range, making escaped quotes and escaped
	  backslashes handled improperly.
	+ improve mlerror() function for VMS.  Any errno with the special value
	  EVMSERR requires special translation.  This translation was not being
	  done by vile, which caused the editor to occasionally display an
	  "unknown error" message.  Example:
		  $ vile x.y.z    ! invalid file syntax not flagged by vile
	  (patch by Clark Morgan).
	+ add RCS majormode and syntax filter.
	+ add SCCS syntax filter.
	+ rename sccsmode to SCCSmode, to workaround majormode's name
	  resolution; suffixes are done alphabetically.

 (tom) 990429 (a)
	+ minor tweak to c-filt.c so it can be used on gcov output:  the GNU
	  coverage tool puts a count down the left margin to show lines
	  executed, and "######" where they're not.  c-filt.c did not expect
	  the latter, and omitted some of the #'s.
	+ correct install rule in filters/makefile.wnt, which combined the
	  rules that should have gone to VILE_STARTUP_PATH with the ones
	  for VILE_LIBDIR_PATH.
	+ remove/correct obsolete description in vile.hlp for syntax filters
	  (reported by Clark Morgan).
	+ update README to describe 8.3 (patch by Clark Morgan).
	+ correct use of $(MAKEFLAGS) in makefile.in, which is all of the
	  makeflags including assignments, not like $(MFLAGS) which was only
	  the flags without '-'.  This made "make EXTRA_FLAGS=-O" fail
	  (reported by Jeff Morriss <morriss@pobox.com>).
	+ add -v option to filters, to show files opened and keywords/classes
	  defined, for debugging.  Repeat the -v option for more details.
	+ correct expressions for sccsmode; the ^A characters were given as
	  \001's.

Changes for vile 8.3 (released Fri Apr 23, 1999)

 (tom) 990420 (v)
	+ modify winvile.rc to use VILE_ICON definition, overlooked in previous
	  patch.

 (tom) 990420 (u)
	+ add 32x32 monochome versions of the .ico files, for completeness
	  because automatically generated versions do not work well for color
	  icons.
	+ improved vile.ico by adding 16x16 section (Rick Sladkey).
	+ correct reversed logic for no_msgs variable in perl.xs, from
	  8.2s changes (reported by Ed Henderson).
	+ correct missing return in var_TITLE() on win32 (Clark Morgan).

 (tom) 990418 (t)
	+ add configure option --with-xpm, to support color icons in xvile.
	  Not all window managers support xpm icons.
	+ remove configure test and ifdef's for CC_CANNOT_OFFSET_CASES, since
	  rewrite of eval.c left only one place where we care about this
	  compiler limitation.
	+ add .ico, .xbm and .xpm versions of the most popular icons for xvile
	  and winvile.
	+ use SMG to get control sequences for 80/132 column switching (Clark
	  Morgan, request by Tom).
	+ rewrote vmsopen() in vmsvt.c (patch by Clark Morgan).
	+ update vile-pager script to find vile-manfilt according to the
	  VILE_LIBDIR_PATH setting, etc.
	+ modify majormode suffixes check to exclude pipes and internal names
	+ add ".hlp" to txtmode suffixes (note that the :h command bypasses
	  $read-hook).
	+ add cindent to lex, yacc majormodes.
	+ add sccs majormode.
	+ implement imake mode using C filter.
	+ add syntax filter txt-filt.l, for highlighting simple textfiles.
	+ add syntax filter spellflt.l, for highlighting misspelled words with
	  ispell.  Source "spell.rc" to get the ^X-i spelling highlighter.
	+ add syntax filter difffilt.l for diff output
	+ use "seed" in ucrypt.c rather than rand().

 (tom) 990414 (s)
	+ add "DBG=" option to makefile.wnt to simplify building with OPT_TRACE.
	+ add VILE_LIBDIR_PATH to $PATH on WinNT, as on Unix to find syntax
	  filters more simply.
	+ minor fixes to filters: makefilt.l to handle $$name, sh-filt.l to
	  refrain from highlighting keywords in contexts that look like
	  options, e.g., -enable.
	+ modify makefile.wnt to accommodate Win95: its shell doesn't grok "&&"
	  as a command separator (patch by Clark Morgan).
	+ add 'dist' rules to makefile.wnt
	+ fix core dump for uninitialized $palette in statevar.c (reported by
	  Brian Moore).
	> patches from Paul Fox
	general:
	+ trimmed some old README text
	+ removed margin and scrollsize values from term structs.  they
	  were deterministic constants everywhere anyway.
	+ eliminated TTxxxx() macros, in favor of simple term.xxxx()
	  usage.  ANSI C says the (*term.xxxx)() format isn't necessary.
	  we'll see.
	+ renamed elements of term struct, since the element names are
	  now exposed.  eliminated redundant t_ prefix.
	+ renamed null_xxxx() routines to match.
	+ renamed some globals to better describe their function (e.g.
	  pat, rpat, sres)
	+ in a couple of places globals were lurking in macros (e.g.
	  nexttabcol) and i made them visible.
	+ cleaned up and corrected comments which no longer described the
	  code correctly.
	+ renamed tokenizing #defines, for better mnemonics.
	+ suppressed a couple of arg-unused warnings when building X11 by
	  tweaking ifdefs.

	ibmpc.c:
	+ cleaned up a bunch of code -- moved private defines from estruct.h.
	+ collapsed screen address defines to simplify.
	+ did some renaming for mnemonic clarification.
	+ eliminated unused global flags.
	+ eliminated global "regs" struct/union.
	+ eliminated all support for flicker suppression.  it was cga-only,
	  and wasn't needed on reasonable cards anyway.  we can resurrect
	  it if needed, but i doubt we will.  (also eliminated $flickcode
	  variable which enabled it.)
	+ updated some copyright statements.

	exec.c:
	+ simplified logic surrounding while-loop processing -- a single
	  list is now maintained, rather than the double list shuffling
	  that went on before, and endwhiles now get their own struct on
	  the loop descriptor list.
	+ eliminated recursion when freeing while-loop descriptors.
	+ move save/restore of no_msgs (formerly discmd) inside dobuf().
	+ simplified flags that indicate that macro creation is in progress.

	+ use mlforce() rather than mlprompt() in pressreturn(), and eliminate
	  flag setting no longer required. (spawn.c)
	+ use rand() rather than global "seed" for encryption purposes.
	  (ucrypt.c)
	+ add second %% line to lex "states" check -- it hangs on solaris
	  otherwise.  (aclocal.m4)

 (tom) 990404 (r)
	+ add filters/mms-filt.l
	+ change filters/makefile.in to work when configuring with --srcdir
	  (patch by Brendan O'Dea).
	+ include XBM and XPM versions of [J.] Richard's ``vile screen'' sample
	  icon, ifdef'd with OPT_X11_ICON (patch by Brendan O'Dea).
	+ rename GetEnv to vile_getenv, since VMS linker does not distinguish
	  that from getenv (patch by Clark Morgan).
	+ ignore case in VMS majormode suffix and preamble.
	+ 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.
	+ collect logic for read/etc., hooks into common functions to make it
	  simpler to see them.  Save/restore the count of lines read so that
	  the read-hook does not cause vile to report confusing total number
	  of lines read, i.e., the actual file plus the highlighting.

 (tom) 990327 (q)
	+ add filtername mode, to handle special filter cases for java, js, csh
	  majormodes.
	+ modify makefiles to allow vile to compile on *IX systems with the gnu
	  make -j option, to run several C compilers at the same time.  The -t
	  option to lex is at least portable to Solaris lex and flex.  Uses
	  redirection (patch by Ryan Murray).
	+ correct a couple of VMS-specific problems:  assignment through a
	  const pointer in cfg_locate, and implicit string concatenation in
	  personals (patch by Clark Morgan).
	+ rename VILE_LIBRARY_PATH to VILE_LIBDIR_PATH
	+ correct limit-expression in add_brackets() function, which left
	  trash on the end if the buffer name was too long.
	+ update the list of files suppressed by --disable-extensions.
	+ add configure option --with-purify.
	+ modify configure-script so --with-no-leaks option does not require
	  --with-trace.
	+ correct error in 8.2p changes to ucrypt.c, i.e., incorrect workaround
	  for a case where a cast was needed.
	+ revised change to HighlightFilter to add HighlightFilterMsg which
	  writes the "Attaching attributes..." message, leaving the
	  HighlightFilter macro quiet and more suitable for use in $read-hook.
	+ minor changes to make Paul's changes build with perl, tracing
	  and disabled extensions/shell.
	> patches from Paul Fox (includes some documentation from Clark Morgan):
	+ combined eval.c/sindex() and bind.c/ourstrstr() into single
	  routine.
	+ remove redundant mktrimmed() calls when doing buffer lookup.
	  (buffer.c)
	+ moved code for grabbing next line from buffer from eval.c to
	  new routine next_buffer_line() in buffer.c
	+ give credit to Roger Ove for scroll optimization code in
	  display.c
	+ random number generator now based on rand() -- it's present
	  in MSDEV and all UNIXes i know of, but we may need a configure
	  check eventually.  (eval.c)
	+ removed mostly redundant numeric token type.  explicit check
	  for digits in exec.c instead.
	+ major overhaul of how vile's $state (formerly "environment")
	  variables are implemented.  new file, statevar.c, contains
	  support routines, each of which is responsible for both
	  getting and setting a single variable.  dispatch is handled
	  by new table set up by mktbls.c.  this eliminates two of
	  the big switches in eval.c.  the result pointer arg to
	  these routines should probably be a tbuff, which would allow
	  unlimited variable lengths.  (eval.c, mktbls.c)
	+ the code that runs vile &functions has become more table-driven
	  as well.  modetbl now contains information on the return
	  type of the functions, and the types of the arguments.  this
	  cleans up the per-function code somewhat.  (eval.c, mktbls.c)
	+ code for @interactive variables and &query function collapsed
	  to single new user_reply() routine.  (eval.c, statevar.c,
	  input.c)
	+ various other cleanup and name revisions in eval.c:  "user"
	  variables are now "temporary" variables, and "environment"
	  variables are now "state" variables.  utility routines (like
	  ltos(), i_ltoa(), stol()) renamed to render_xxx() to create
	  a string, and scan_xxx() to decode a string.
	+ collapsed the stenv() and set_variable() routines into a single
	  entrypoint useable from both exec.c and modes.c.
	+ split temp and state variable lookup from their evaluation,
	  so the lookup can be done in just one routine.  (eval.c)
	+ token evaluation (tokval()) now table driven.  i don't know
	  if it's much cleaner, but i think it's better.  it's certainly
	  different.  (no, modetbls is not involved, nor should it be. :-)
	+ minor change to HighlightFilter in filters/filters.rc to cause
	  it to not try and color [Special] buffers.
	+ quoting fix in macros/pic.rc
	+ supporting changes:  estruct.h, makefile.in, vile.hlp.

 (tom) 990320 (p)
	+ add an install-rule to filters/makefile.wnt
	+ eliminate restriction on number of command-line arguments in winvile
	  (reported by Ed Henderson).
	+ make VILE_LIBDIR_PATH settable from the environment, as per
	  documentation (patch by Brendan O'Dea).
	+ add/use init_b_traits() function, to ensure that switching to a
	  buffer which was source'd while hidden does not copy bogus values
	  for the associated line pointers back to the window traits (fixes
	  a core dump reported by Paul Fox).
	+ modify addline(), bclear(), ifile() to prevent malloc/free from being
	  interrupted by 'working' mode.
	+ minor fixes to mail highlighting filter, to allow "To: " prefix
	  (reported by Paul Fox).
	> patches from Clark Morgan:
	+ modify home_path() to work around problem on VMS where
		$ vile ~/com/defs.com
	  does not work, nor does tab completion, e.g.,
		:e ~/com/d<TAB>
	  (the latter was also reported by Ed Henderson).
	+ vile restores original terminal width when it exits (mimics the eph
	  editor's behavior).
	+ added "-132" and "-80" command-line switches to set screen width from
	  command line.
	+ correct computation of prog_arg for VMS, which is used as part of the
	  command-line help message.
	+ modify definition of FOPEN_READ for VMS to allow shared reads from
	  files (reported by Ed Henderson, analysis by Clark Morgan).
	> patches from Paul Fox:
	+ revised macros.doc, touching all previously untouched parts.
	  it's now a little more vile-specific, and a little "tighter".
	+ rewrite strinc() in terms of strcmp()/strncmp(), rename.
	  (bind.c)
	+ converted confusing (to me) do/while() loops to simple while()
	  (search.c)
	+ collapsed keyboard polling code (fcntl version) to single place.
	  (termio.c)
	+ fixed imdying() to:  a) leave a core even if there's a problem
	  saving buffers, b) try all temp directories, rather than quitting
	  on first failure, c) try $TMPDIR first, and current directory
	  last, on all systems, d) warn user that files may be in current
	  directory.  future:  on write error, should try again in other
	  directories.  (file.c)
	+ fix bug where assigning BFEXEC in dofile() was tromping possibly
	  existing flags (like BFCHG, leading to loss of buffer changes)
	  (exec.c)
	+ revised/rewrote entabline/detabline algorithms.  entabline() no
	  longer needs to calle detabline() first.  (region.c)
	+ fixed return status of nextbuffer()/prevbuffer when in
	  noautobuffer mode.  previously did swbuffer to current buffer,
	  which succeeds.  now you can safely loop through the buffers, and
	  know when to stop.  (this makes the new example in macros.doc
	  work.) (buffer.c)
	+ rationalize comments, comment wording, and code grouping (basic.c
	  line.c buffer.c file.c edef.h eval.c bind.c random.c fences.c
	  insert.c search.c window.c word.c display.c main.c input.c)
	+ collapse updext_before()/updext_past() into single routine.
	  purely mechanical -- could perhaps be improved.  show keyboard
	  macro "[recording]" state on modelines (display.c)
	+ begin in state HEADER rather than state BODY (filters/mailfilt.l)
	+ add new &query function, to (eventually) replace interactive
	  @variables.  (eval.c)
	+ collapse starting/stopping of keyboard macro into single
	  function, which acts as toggle.  leave both key-bindings ( '^X-('
	  and '^X-)' ) but one is now redundant.  (input.c vile.hlp)
	+ changed sense, somewhat, of kbd and dot macro state variables:
	  now a two state boolean, rather than a three state.  well, i
	  think it's nicer.  (input.c line.c)
	+ simplify macbug code to take advantage of vararg-capable
	  mlforce() (eval.c exec.c)
	+ revised window grow/shrink algorithms (window.c)
	+ more logical variable naming/grouping (file.c edef.h select.c
	  npopen.c eval.c insert.c search.c display.c bind.c)
	+ change all BUG mlwrites to mlforce (file.c undo.c others)
	+ further encapsulate "crypting" knowledge -- create as ffdocrypt()
	  accessor for "ffcrypting".  (file.c ucrypt.c)
	+ renamed rewritten functions, minor algorithm changes (e.g.  use
	  castrealloc() rather than castalloc()/memcpy() (line.c, file.c)
	+ added lreplc() function, which can safely replace single
	  characters on a line.  (line.c)
	+ eliminated old "#ifdef BEFORE/#if NEVER/unused" code and
	  variables.  (buffer.c, file.c edef.h spawn.c)
	+ uniform use of tb_xxx prefix on TBUFFs.  (edef.h)
	+ removed $truth variable (eval.c)
	+ removed $ramsize variable (eval.c)
	+ guard against possible null pointer dereference of b_fname (eval.c)
	+ remove ENVFUNC ifdefs -- i think all our systems have them (eval.c
	  bind.c)
	+ removed OPT_AEDIT ifdefs.  they weren't protecting much.
	  (region.c opers.c)
	+ added more generic null TERM struct routines, deleted unneeded
	  screen-specific ones.  (termio.c ansi.c vmsvt.c x11.c tcap.c)
	+ hmmm.  should i even mention this one?  :-) (you guys should
	  clearly follow suit.) (version.c)
	+ minor supporting changes (proto.h estruct.h tags.c filec.c
	  w32reg.c menu.c cmdtbl modetbl1 tbuff.c history.c)
	+ comment cleanup, formatting, vestigial code and ifdef removal,
	  increased NSTRING/NPAT.  who needs powers of two?  (estruct.h)
	+ moved incremental search support def'ns to isearch.c (estruct.h
	  isearch.c)
	+ removed id.wing.net from suggested site list from README

 (tom) 990309 (o)
	+ rewrite logic of newwidth() and newheight() (Paul Fox).
	+ modify treatment of 'fillcol' mode so that a zero is interpreted to
	  use the 'wrapmargin' value, and negative values are, like
	  'wrapmargin', counted from the current right-margin (prompted by
	  discussion with Kuntal M Daftary).
	+ minor fixes for ti-filt.c (handle "\\," and terminfo entries without
	  aliases or descriptions).
	+ remove crypt-til operator; this would not work properly on portions
	  of a file.
	+ write ucrypt.c to use Unix crypt(1) if available.
	+ rename crypt.c, move it to filters as ecrypt.c, for building
	  standalone vile-crypt.  will be phased out.
	+ set "vilemode" for macros and procedure buffers, to simplify syntax
	  highlighting of internal buffers.
	+ modify syntax filters so that keyword classes and their instances
	  can be treated distinctly.
	+ correct missing backslash in QUOTDEFS in makefile.in
	+ review/simplified/corrected comment-prefixes and comments modes
	  in filters.rc
	+ correct logic of version_of() function, which did not ensure that
	  the text really looks like a VMS version specification.  From
	  a bug report by Clark Morgan, who said that this works:
		:e ../buf*.c     # look for buffer.c
	  but this doesn't:
		:e subdir/buf*.c
	  Workaround:
		:e [.subdir]buf*.c
	  After fixing version_of(), my fakevms driver processes this properly.
	+ update vile.hlp description of filter programs and renamed section to
	  "Syntax coloring" (patch by Paul Fox).
	> patches by Clark Morgan:
	+ only enable vtflash on hosts that support it (Unix, VMS).
	+ clarify vile/winvile build instructions when using MS tools.
	+ add $pid environment variable for VMS

 (tom) 990212 (n)
	+ increase size of underline cursor for OPT_ICURSOR in ntconio.c
	+ correct dcl-filt.l to handle inline comments
	+ add bash-specific keywords to sh.key (reported by Paul Fox).
	+ add missing assignment to save pre_op_dot in fences.c (reported by
	  Clark Morgan, from VC++ 6.0 warnings)
	+ correct check for return-value of open_region_filter(), which did
	  not look for abort of command, resulting in hanging while trying
	  to close a pipe that was not open (reported by Paul Fox).
	+ change cast in CF_CC_OFFSETOF_CASES to 'long', to accommodate SGI's
	  64-bit compiler.
	+ restore "perldo" cmdtbl entry, for compatibility (Paul Fox).
	+ relax iteration limit for complex fences a little, using new mode
	  fence-limit times the buffer length as the hard limit.  This is
	  still proportional to the buffer length, rather than allowing
	  geometric increase with the fences groups.
	+ add configure option --with-libdir-path to allow override of the
	  default $(libdir)/vile.  Make this alterable with new variable
	  $libdir-path.
	+ change install-directory for filter programs to $(libdir)/vile, to
	  avoid clutter (suggested by Paul Fox).
	+ modify some filters to avoid incrementing yytext since it may be an
	  array.
	+ add configure-check for state support in lex/flex, so we do not
	  try to compile with programs that will not succeed.
	+ correct limit-check in dname_to_dirnum(), missed a case when fixing
	  for 8.2l, which caused pictmode.rc to not read properly.
	> patches by Clark Morgan:
	+ correct codes for 8-bit PF1-PF4 in vmsvt.c
	+ update vile.hlp for vmsvt.c's function key definitions, as well as
	  a note about tilde-expansion on VMS.
	+ add vtflash mode, for tcap.c and vmsvt.c

 (tom) 990202 (m)
	+ suppress TTtypahead() call in sysmapped_c_avail() when we have made
	  characters available in mapungetc().  This fixes a problem where
	  type-ahead would get into the data copied from mapgetc_ungottenchars,
	  breaking arrow key interpretation on slow connections.  (This was
	  reported a few times since 971205, when the problem was introduced,
	  but is difficult to reproduce.  Reported/tested by Clark Morgan).
	+ implement mode mcolor, which lets user set the color of the
	  modelines.  The choices are the same as for visual-matches (request
	  by Han Leushuis <jgamleus@cs.uu.nl>).
	+ update 'doingsweep' in one place only, do_sweep(), to ensure that the
	  TTcursor() calls nest properly when a selection is aborted.
	+ add vt220 7- and 8-bit function key definitions to vmsvt.c (request
	  by Clark Morgan).
	+ removed a FIXME in termio.c for read_vms_tty's assignment to nibuf,
	  having confirmed that the document for the sys$qiow()'s read function
	  says the device-dependent data stores a count of terminator
	  characters (needed for VMS's equivalent to cbreak or cooked modes)
	  rather than data that vile should process (patch by Clark Morgan).
	+ prevent dobuf() from being interrupted by 'working' mode.

 (tom) 990126 (l)
	+ add "~elsewith" directive to simplify use of fences in vile macros.
	+ minor change to kbd_reply to allow abortc to be <control><space>,
	  though otherwise nulls are still ignored in that function (request by
	  Christian Lindig <lindig@ips.cs.tu-bs.de>)
	+ implement crude iteration-limit for complex fences to guard against
	  blowup in error-handling.
	+ correct/restore handling of keyboard interruption in complex fences
	+ add rules to filters/makefile.wnt so that if $(LEX) is set, the
	  build will use that for the lex/flex program and make the lex-based
	  filters.
	+ add yywrap() dummy function to filters.c to reduce dependency on libs.
	+ change casts in Member_Offset macro to long from int to avoid
	  compiler warnings on IRIX 6.x with 64-bit architecture (reported by
	  Steen Savstrup Kristensen <steen@saturn.emi.dtu.dk>).

 (tom) 990124 (k)
	+ 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 mimics unix cmdline pipe functionality.  Vile couldn't use this
	  command, though.  For example:
		$ pipe dir | vile
	  failed with an "illegal i/o function" error.  This change allows vile
	  to read from the pipe stream as well as retaining its ability to read
	  from a redirected stdin (patch by Clark Morgan).
	+ reset eofflag in inout_popen, since attribute_from_filter may
	  otherwise see the EOF from the previous file reading operation, e.g.,
	  if the file did not end with a newline.  Likewise set fileispipe,
	  just in case it would be needed.
	+ correct inconsistent spelling of cache variable in CF_TERMCAP_LIBS,
	  which caused the configure script to ignore a predefined termcap or
	  terminfo library.
	+ correct order of -lXmu vs -lXext in Athena-widget configure test.
	+ resync configure scripts against autoconf 2.13 + patches
	+ modify is_vms_pathname(), is_version() to accept a '.' to delimit
	  version number (reported by Clark Morgan).
	+ implement $sres, i.e., 80/132 column switching for vmsvt.c (patch
	  by Clark Morgan).
	+ update version number for Vileserv, missed in 8.2j
	+ rename some operators that accept a range to end with "-til", for
	  consistency (reported by Paul Fox, Clark Morgan).
	+ other improvements to perlfilt.l, e.g., underscores in numbers,
	  a POD-format,, suggested by Brendan O'Dea.
	+ simplify HighlightFilter macro - there is no need to report if no
	  filter exists, after all.  This required renaming nroffmode to nrmode
	  and pascalmode to pasmode (adapted from example by Brendan O'Dea).
	+ apply "group" feature to complex fences, i.e., fence-if, ...,
	  fence-fi.  This allows vile to match both while{...} and if{...}
	  blocks, for a test-case by Kuntal M Daftary.  It works, but is very
	  slow when choosing between patterns that are ambiguous, e.g., the
	  different groups of patterns all end with a "}".
	+ add "group" feature to majormodes, which allows user to define new
	  instances of certain submodes.
	+ ensure GCC_UNUSED is defined in filters.h for platforms that do not
	  use the configure script (reported by Brian Moore).
	+ minor fix to listvalueset() to avoid getting a double-newline.
	+ improve makefilt.l, making it read keyword file.
	+ add latexflt.l to install rule; various improvements to that
	  filter.
	+ improved perlfilt.l symbol table and symbol-parsing based on
	  vile-pfilt.pl (John P Cavanaugh <cavanaug@elwom4.ecn.purdue.edu>).

 (tom) 981229 (j)
	+ modify majormode preamble logic to set ignorecase if the majormode
	  sets ignorecase.
	+ modify tcap.c to use no_color_video capability to avoid overwriting
	  colors with nonfunctioning video attributes.
	+ modify html syntax filter to handle embedded JavaScript.
	+ add filters for ada, awk, DOS batchfile, VAX DCL, Java, JavsScript,
	  mail, nroff, sql, tcl/tk, termcap, terminfo, yacc
	+ correct dependencies in filters/makefile.in for keywords files, which
	  live in $(srcdir) (report by Brendan O'Dea, patch by Kevin Buettner).
	+ workaround a parsing problem in lex-filt.l so that STATES and PATTERN
	  can be distinguished.
	+ various fixes to "e!", which did not prompt or repaint properly if
	  the current buffer was from standard input, the unnamed buffer, or a
	  temporary buffer.
	+ correct a missing pointer increment in rewritten c-filt.c, which
	  caused an infinite loop in some cases after '#'.
	+ correct a couple of places where missing '\' character in lex files
	  was interpreted as \a rather than \\a.
	+ correct comparison in is_keyword (filters.c) which caused html
	  keywords to not be highlighted.
	+ add csh mode to filters.rc

 (tom) 981222 (i)
	+ modify expand_pattern() to handle Unix-style wildcards on VMS (reported
	  by Clark Morgan).
	+ add configure option --with-fakevms, for testing VMS port.
	+ change Cpp keyword in vile-c-filt to Preproc, for consistency.
	+ move filter programs to filters subdirectory.	 Split-out the keyfile
	  and symbol management to new file filters.c, and used that to
	  enhance the original vile-c-filt so it no longer has line-length
	  limitations.  Added lex-based filters for cwebx, html, latex, make,
	  perl, sh and vile macros.
	+ prevent repeated call to free from old_namebst from memory-leak fix
	  in 8.2g
	+ add directives ~with and ~endwith, to simplify majormode expressions.
	+ minor refinement to gui_isprint()
	> patches by Clark Morgan:
	+ add pattern to finderr.c to use with DEC C compilers.
	+ modify file globbing so that vile can read these two files from the
	  command line (it already did read them via ":e"):
		../readme or ~/vile.rc
	+ documentation updates for README, README.VMS and README.PC

 (tom) 981214 (h)
	+ simplify some trace-code using new functions visible_buff, lp_visible.
	+ add trace-code for fences.c
	+ correct check for zero-sized window, from 8.2e, which made it
	  impossible to switch to a window with exactly one line (patch by
	  Kevin Buettner).
	> patches by Clark Morgan:
	+ modify ffsize() for VMS so that it returns a 0 rather than -1 if a
	  call to 'fstat()' fails to get the size.  The file exists, so a zero
	  makes vile read if via slowreadf, which works.
	+ modify estruct.h to build using descrip.mms alone: the vmsbuild.com
	  script defines logical "SYS" so that <sys/types.h> can be included,
	  but the descrip.mms script does not do that.
	+ update ifdef's to make vile build with VAX C (the 8.0b changes added
	  CC_CANNOT_INIT_UNIONS, which is needed for that compiler).
	+ document problem with DEC C, which causes vile to update revision
	  dates on files even without writing the file.

 (tom) 981201 (g)
	+ fix minor memory-leaks (main.c, bind.c, select.c)
	+ modify finderr.c to use the given filename and ignore the associated
	  buffer name when looking for matching buffers in case we have multiple
	  files with similar names.  Modify getfile() to check first if the
	  given parameter is a filename, rather than preferring match on a
	  buffer name.
	+ optimize tb_bappend and tb_sappend using memcpy rather than loop on
	  tb_put.
	+ add checks for empty/missing filename to dobuf() and getfile() and
	  menu.c to prevent core dump when using "Edit .vilerc" menu entry and
	  no .vilerc exists (reported by John Gotts <jgotts@engin.umich.edu>).
	+ modify key-mappings in vmsvt.c to avoid defining VT52-style sequences,
	  which introduce the possibility of confusing <esc>A for an arrow
	  key (patch by Clark Morgan).
	+ restore part of logic in C/C++ comment formatting modified in 8.0p;
	  which introduced the undesired behavior of not formatting the first
	  line of a comment (patch by Clark Morgan).
	+ implement VMS-specific modes for record-format and record-size
	  (initiated/tested by Clark Morgan).
	+ change default search pattern for VMS to include only current
	  versions of each file, unless mode "allversions" is set (request by
	  Clark Morgan).

 (tom) 981124 (f)
	+ updated CF_IMAKE_CFLAGS macro for configure script, fixes a problem
	  configuring with --srcdir.
	+ updated config.guess, config.sub from Lynx, adds cases for os390 and
	  clix.
	+ update documentation to indicate that vile has been tested on NT 3.51
	  (patch by Clark Morgan).
	+ correct path separator in default $startup-path for VMS, which would
	  prevent vile from reading vile.rc from a system directory (patch by
	  Clark Morgan).
	+ remove definitions for off_t, making ffsize() return B_COUNT.
	+ modify fileio.c to trace return value from ffaccess(), ffexists(),
	  ffronly(), ffropen() and ffsize().
	+ modify vmsvt.c to support video attributes bold, underline and
	  flash (initiated/tested by Clark Morgan).
	> new version of vileget from J Chris Coppick:
	+ Vileserv now checks for the existence of ~/.vilesock, but not for the
	  file type.  May be more portable.
	+ Vileget has a -w option that causes it to wait until the given
	  file(s) are written by xvile before it exits.  This could be used in
	  conjunction with a mail program for instance.  To use this option,
	  you have to set up a write-hook procedure.  See the doc for vileget.

 (tom) 981114 (e)
	+ corrected TTcursor logic interaction with xterm-mouse so the cursor
	  does not remain invisible after extending a selection.
	+ modify so that xvile can be build with --disable-extensions
	+ correct ifdef for SYS_VMS which was hiding ifdefs for setsid
	+ add sinstall.sh script to fix perl-path when installing scripts such
	  as vileget.
	+ document 'sentences' mode in vile.hlp (patch by Clark Morgan).
	+ correct logic in previous-sentence, which checked for end-of-line
	  state rather than empty-line in one place, causing the function to
	  return the end of the previous line when starting on leading
	  whitespace rather than the actual beginning of the sentence (reported
	  by Clark Morgan).
	+ add "~hidden" macro directive, to suppress 'update()' logic and
	  status check for the current macro line.
	+ add check for zero-sized window to 'update()' function, to guard
	  against attempts to display an incomplete window as a result of
	  a read-hook (reported by Sean Ahern).
	+ add directory browser extension for vile written with the perl interface
	  (from Kuntal M Daftary).
	+ add Vileserv.pm, vileget perl scripts, which give you the ability to
	  send edit requests to a running Vile, like gnuserv does for Emacs
	  (From J Chris Coppick <jchris@znet.com>)
	+ correct parameter passed to 'access()' function to use symbols.  The
	  ffaccess() function relied on coincidence between values for
	  FL_EXECABLE, FL_WRITEABLE, FL_READABLE and X_OK, W_OK, R_OK, which
	  did not hold for djgpp.  If all copies of vile.hlp were readonly, it
	  was not "found" (reported by George.Young.gryoung@nt.com, this
	  fixes a similar problem reported by Paul Laub <P_Laub@fccc.edu>
	  stating that readonly-on-readonly did not work on DOS).

 (tom) 981112 (d)
	+ correct/simplify handling of string literals in vile-c-filt, which did
	  not treat single quotes and double quotes symmetrically.
	+ correct an error in vile-c-filt which caused the ending quote of
	  a string to be ignored if it appeared in the first column.
	+ add new terminal function TTcursor, to disable cursor display during
	  screen updates and during multimotion.  This makes vile display
	  better on FTP Software's TNVTPlus wyse50 emulation.
	+ restore visual-matches after attribute-from-filter.

 (tom) 981110 (c)
	+ implement a new macro directive, "~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.
	+ rename some functions to make them easier to grep (token to get_token,
	  macarg to mac_tokval, macliteralarg to mac_literalarg).
	+ free old attributes in attribute_from_filter() before adding new ones.
	+ correct an off-by-one error in attribute_from_filter() which caused
	  the second and following attributes to be shifted by one position.
	+ change patmatch to a TBUFF to simplify buffer-overrun checks, fix an
	  off-by-one error in 'savematch()' which caused a core dump.
	+ modify so that Perl interpreter processes END blocks and global
	  destructors when vile exits (patch by Brendan O'Dea).
	+ updated example for C filter to use attribute-from-filter (patch by
	  Clark Morgan).


 (tom) 981106 (b)
	+ add new command attribute-from-filter.
	+ modify allocation of hypercmd value in select.c to use TBUFF's, fixing
	  a use of uninitialized memory.
	+ disable keyboard translation in Motif version of xvile (Gary Ross).
	> patches by Clark Morgan:
	+ correct key translation in ntwinio.c so that pressing '^' (i.e.,
	  shift+6) will no longer cause winvile to flash/beep.
	+ README.PC updated to talk about creation and location of startup
	  file.
	+ win32 versions of editor now support the $title env var (users can
	  now set and display title from a macro).  appropriate documentation
	  updated.
	+ macros/doc and vile.hlp tweaked to show that $title is set using env
	  var syntax.  although, surprisingly, the original example syntax
	  works (i.e.,  set title "string").  i'm surprised because this is yet
	  another undocumented aspect of the macro language--env vars are
	  available via the set command.  i'm not sure I want to document this
	  feature--there's quite a bit to digest in this language as it is,
	  now.
	+ the my_cd_action stored procedure example in vile.hlp has been
	  changed to my-cd-action to prevent users from being surprised that
	  '_' is a command terminator.
	+ makefile.wnt modified so that the ole-automation version of winvile
	  will suck up the new winvile icon (the linker won't accept multiple
	  .RES files).
	+ document environment variables in vile man-page.

 (tom) 981101 (a)
	+ add icon for winvile (V-eyes 'pumpkin').
	+ corrections to hilite.pl and syntax.pl, so it works for C comments
	  (patch by Ryan Murray).
	+ modify tokval() function to eliminate fixed-buffer limits for
	  '@' prompts and '<' buffer-variables (reported by Clark Morgan).
	+ add 'undoable' mode, as a performance convenience for filtering.
	  Note that this purges the undo stack, because it suppresses update
	  of the undo stack while changes may occur to the buffer.  Also,
	  during filtering it prevents vile from retaining the buffer's contents
	  in the kill buffer (prompted by a report by Holger Kummert
	  <kummert@nentec.de>).
	+ minor fixes for memory-leaks & test code for that (main.c, fileio.c,
	  modes.c)
	+ modify dfputli and dfputi to output unsigned values to use in $pid
	  conversion.
	+ correct storeproc() so that it detects if tokens follow a macro's
	  name on lines read from source'd file.  These tokens are used for
	  annotating macros in describe-bindings (report by Clark Morgan, patch
	  by Brendan O'Dea).
	> patches by Clark Morgan:
	+ modify so that preceding :!<cmd> with an argument suppresses the
	  [Press return to continue] prompt for winvile,
	+ update/expand macros.doc
	+ correct a limit-check when returning a buffer variable (eval.c).
	+ convert $pid to unsigned hex rather than decimal on Win32.
	+ make it possible to create vile-perl-api.doc on a win32 host.
	+ add detail to README.PC with respect to building embedded perl.

Changes for vile 8.2 (released Sun Oct 25, 1998)

 (tom) 981025 (c)
	+ check for null top_widget in x_close; other xvile crashes on VMS
	  if I simply run xvile -"V".

 (tom) 981024 (b)
	+ modify glob-expansion to always recognize "~" as a synonym for
	  $HOME if Unix-style passwd interface does not return anything
	  useful (adapted from a patch by Ed Henderson).
	+ rename vile.spec to vile-8.1.spec, change configure option to use
	  Athena widgets so xvile is built with menu support (Radek Liboska).
	  ** This is not an 8.3 filename, but is used only on Linux.
	+ modify to use X11R6 input method and dead key support (patch by
	  Stanislav Meduna <stano@trillian.eunet.sk>).
	+ correct click-timeout value for xvile, overlooked in 8.1u (reported
	  by Ryan Murray).
	+ minor fixes to menu.c so that xvile builds on OpenVMS 7.2 with DEC C.
	> patches by Clark Morgan (mostly for visvile):
	+ modified the w32 versions of vile so that during clipboard copy
	  operations any character, c, in the following range:
	      c > '~' && c >= val(printing-low) && c <= val(printing-high)
	  is not translated to a hex representation (\xdd).
	  I didn't use any other criteria (e.g., setlocale()) because I
	  received no feedback from the person reporting the bug.
	  Consequently, I don't know what particular locale value I should test
	  (e.g., locale not "C" and not "" ??).  I also explored whether or not
	  the w32 paste operations should similarly not translate data when
	  copying from the clipboard.  For console vile, translation appears to
	  be useful and necessary regardless of the printing-low or
	  printing-high settings.  For winvile, translation is not strictly
	  necessary because when printing-low is >= 128 and printing-high is <=
	  255, winvile properly renders "highbit" ansi characters, such as
	  these:
	      opening quote
	      closing quote
	      ellipsis
	      trademark
	      copyright
	      etc.
	  However, the rendering of each highbit character is so small that the
	  resultant text is extremely difficult to read.  Consequently, I
	  elected to continue my small set of translations (refer to the "map"
	  array in w32cbrd.c for a complete list).
	  (from report by Jukka Keto <Jukka.Keto@kati.fi>)
	+ extended/updated README.PC
	+ add explanation of filterregion() portability (spawn.c)
	+ modify in conjunction with visvile, to have the ability to redirect
	  user-specified keystrokes to DevStudio.  For example, from winvile
	  you can start the debugger, step the debugger, start a build, etc.  I
	  think visvile is pretty useful now.  There's one more wrinkle I can
	  envision adding at a later date (see visvile/readme.txt for details),
	  but this feature is not a high priority (to _me_ :-) ).  The
	  documentation of the redirected key feature is included in
	  doc/visvile.doc .
	+ add a new file called visvile/visvile.dsm (a collection of DevStudio
	  macros).
	+ added an environment variable called $cfgopts to the editor.  From
	  the help file:
		$cfgopts  comma-delimited list of "interesting" compiled options
			  (read only).  Currently tracked options include:
		perl    -> editor includes perl interpreter
		oleauto -> editor supports OLE automation.

 (tom) 981008 (a)
	+ add logic to ins_anytime() to prevent recursion or use in minibuffer,
	  e.g., when pressing the insert-key.
	+ correct an ifdef for SYS_VMS in main.c from 8.0s which left other
	  platforms using vfork (reported by Ryan Murray and Billy Little
	  <billy_little@hso.link.com> ).

Changes for vile 8.1 (released Fri Oct 02, 1998)

 (tom) 981002 (w)
	+ modify xterm mouse-click handling so that clicking on the left margin
	  when the window is right-shifted always shifts it left.  Before, if
	  a tab fell on the left margin, the effective column was still in the
	  visible part of the window.
	+ back out redundant limit-check in display.c from 8.0u that caused
	  an extra cell to be highlighted when doing full-line selection.

 (tom) 981001 (v)
	+ updated install-rules for perl scripts.
	+ set was_clean flag in all instances of ttclean(), fixing a problem
	  where TTkopen() was not invoked on return from :sh command (reported
	  by Ryan Murray).
	+ strip trailing ^M's from hilite.pl and syntax.pl, add those to the
	  list of Perl scripts in vile.hlp and makefiles (report/patch by
	  Clark Morgan).
	+ pass-through $(OPT) value in recursive-make in makefile.wnt (patch
	  by Clark Morgan).
	+ move logic to reset regionshape out of multimotion, to main.c's loop(),
	  since commands such as "y2q<some motion>q" would otherwise be yanked
	  in EXACT mode (reported by Ed Henderson).

 (tom) 980930 (u)
	+ modify :ww command to ignore readonly buffers (reported by Chris
	  Sherman).
	+ add sample Redhat RPM spec file "vile.spec" (from Radek Liboska
	  <liboska@uochb.cas.cz>).
	+ add code to allow user to color Motif pulldown menus, ifdef'd with
	  OPT_MENUS_COLORED, normally off since I prefer the toolkit's color
	  scheme (patch by Mark D Robinson <Mark.D.Robinson@farn-wts.uk.Sun.COM>)
	+ modify multimotion to reset regionshape to the original value on
	  return after a selection is made, or to EXACT if the selection is
	  aborted.  This corrects a case where performing quoted fullline
	  motion would cause a succeeding "cw" command to affect the whole line
	  (reported by Yuri Antonik <ya@islc.minsk.by>).
	+ add syntax.pl, hilite.pl, which support syntax highlighting for perl,
	  c and tcl (Kuntal M Daftary).
	+ modify os2vio.c so that when running vile in fullscreen mode, bright
	  colors are used rather than blinking colors.
	+ undo incorrect use of VFCOL mask from my 7.2q change, which caused
	  the pscreen array to record VAREV attributes on shifted-in rows.
	+ minor optimization in vtset function to perform better on very long
	  lines.
	+ modify x11.c to give xvile CDE-like quad-click support.  CDE's
	  dtterms select the entire window (including scrollback) on a quad
	  click.  Increased the timeout slightly to be able to repeatedly
	  select this (patch by Ryan Murray).
	+ documentation updates for visvile (patch by Clark Morgan).
	+ fix a bug that prevented -font option from working on winvile
	  (patch by Clark Morgan).

 (tom) 980925 (t)
	+ correct two errors in AdjustedWidth and AdjustedHeight, making
	  winvile resize properly when maximized, as well as not jumping when
	  resizing after changing fontsize.
	+ keep caret in winvile invisible until ttrow,ttcol point to a legal
	  position, i.e., until initialization is complete.

 (tom) 980922 (s)
	+ correct caret position and size in winvile after changing fontsize.
	+ modify putctext() function to support setv of $word, $identifier,
	  $qidentifier and $pathname.
	+ rename "$wline" to "$wlines", add "$bchars" and "$blines" to return
	  the number of characters and lines in the current buffer,
	  respectively (request by Paul Askounis <askounis@sgi.com>).
	+ modify select.c to allow de-attributing attributed regions.  It takes
	  care of the following scenarios now:
	  - Non-overlapping regions were decided earlier on the basis on just
	    line offsets and as a result worked correctly only for FULLLINE
	    regions.  Now they are decided based on line and column offsets and
	    so work correctly for all three region types.
	  - when de-attributing a region, partially or completely overlapping
	    with a previously attributed region, the whole of previous region
	    was de-attributed instead of only the overlapping portion.  Now
	    only the overlapping portion is de-attributed as long as we don't
	    have any RECTANGLE regions.  The fix still does not include
	    RECTANGLE regions.
	  (patch by Kuntal M Daftary)
	+ modify c-filt.c to allow color and text attributes simultaneously
	  (patch by Gary Ross <ross@Ultimatech.COM>)
	+ add watch.obj to descrip.mms and vmsbuild.com; change ifdef's for
	  VMS consistently to SYS_VMS and comment-out Motif xvile definitions
	  in descrip.mms in favor of X toolkit (reported by Andy Harper).
	  This may make xvile build with DEC C, however Andy reports also that
	  his library lacks XmCreatePullDownWindow, which is not simple to fix.

 (kev) 980919 (r)
	+ buffer.c (zotbuf): Kill any fake windows associated with
	  the buffer we're about to kill.
	+ select.c (hyperspray): Only execute the first found hypertext
	  command.
	+ window.c (delwp): Added support for deleting fake windows.
	  (push_fake_win, pop_fake_win): Removed #if 0'd out code.
	+ x11.c (is_color_cursor):  Added this field back to
	  TextWindowRec; Also added back code to initialize it in
	  x_preparse_args() and test it in flush_line().  Without this
	  code in place, non-color cursors will not blink properly
	  when they are within selections.  [This was removed in
	  vile-7.3w.  We should address the reasons for removing this
	  code in some other way.]

 (tom) 980910 (q)
	+ correct parenthesis for test of F4 change in 8.0l (winvile.c)
	+ modify so that xvile builds with --disable-shell (eval.c).
	+ correct off-by-one in scrollbar position for winvile.
	+ correct computation in AdjustResizing function so that starting a
	  window resizing does not change the initial window size (ntwinio.c).
	+ improved ":!command" for winvile, by creating a transient console
	  which closes when the user presses any key (patch by Clark Morgan).

 (tom) 980908 (p)
	+ modify attribute rendition in win32 drivers (ntconio.c, ntwinio.c)
	  to make highlighting work with colored text by reversing fg/bg.
	+ modify colors in winvile to make lightgray distinct from gray
	  (reported by Clark Morgan).
	+ further modify shell_complete() to continue splitting command lines
	  on blanks, e.g., ^X!command did not do filename completion just like
	  :!command.
	+ minor lint fixes, e.g,. signed/unsigned values (buffer.c, input.c).
	> patches by Clark Morgan (mostly for visvile):
	+ implement logic to return $font value on winvile.
	+ simplified some expressions in vile's comment-formatter to make it
	  format C++ comments.
	+ if visvile disabled, no other dialog options are editable
	+ added more document type checking to avoid occasionally opening such
	  things as dialog box resource scripts.
	+ implemented "CWD set from opened document's path" option
	+ implemented "Write all modified buffers to disk prior to build"
	  option.  This feature doesn't work as well as it could due to a
	  DevStudio (v5) bug.  Refer to ../doc/visvile.doc for further details.
	+ implemented "Build log -> errbuf if build reports errs/warnings"
	  option.

 (tom) 980903 (o)
	+ correct 8.0n change for highlighting, fixing an off-by-one error in
	  visual-matches (reported by Alex Wetmore).
	+ remove SetCursor calls from ntwinio.c, since they obstruct WinNT from
	  showing the resize-cursor, as well as causing the cursor to flicker
	  around the window border.
	> patches by Clark Morgan:
	+ add the ability to set winvile's font from the command line or via
	  the environment variable "$font" (a la xvile).
	+ modify OLE automation registration to accept a font specification,
	  making it possible to configure both the font and screen geometry of
	  future instances of winvile OLE automation servers.
	+ remove some compiler warnings in ntwinio.c and correct the OLE
	  registration logic for the "-geometry" switch (file w32reg.c).

 (tom) 980902 (n)
	+ modify updattrs function so that video attributes applied to tabs and
	  other nonprinting characters will paint all of the cells used to
	  display those characters (request by Richar A Ward).
	+ modify win32 drivers (ntconio.c and ntwinio.c) to make visual-matches
	  override syntax highlighting (reported by Clark Morgan).
	+ correct unstacking behavior for next-tags as per original request.
	+ modify shell_complete() function, which is used in both normal
	  filename completion, and in completing shell commands so that for at
	  least the former case it will handle filenames with embedded blanks
	  (analysis by Rick Sladkey <jrs@foliage.com>).

 (tom) 980901 (m)
	+ add a check to keep initial TTkopen from trashing the command-line
	  help or version (termio.c).
	+ implement token-type for macro label linenumber, e.g., tokens
	  beginning with an '*'.
	+ modify behavior of next-tags so that continued matches do not push
	  the tags stack, but remain at the same level as the initial match
	  (requested by Ed Henderson).
	+ correct typo in change to imdying for the non-Unix case (patch by
	  Clark Morgan).

 (tom) 980831 (l)
	+ modify dbgwrite() message to show how to get out of the loop, since
	  more than one person has thought vile is hung when it is awaiting
	  a ^G after reporting a keyboard problem.
	+ modify imdying() function to search for a temp-directory, preferring
	  $TMPDIR, /var/tmp and /usr/tmp over /tmp.  Lengthened cmd buffer in
	  that function since it was too small.  (reported by Duncan Barclay
	  <dmlb@ragnet.demon.co.uk>).
	+ correct logic for dragging scrollbar thumb in winvile which also
	  moved cursor position unnecessarily (reported by Ed Henderson).
	+ correct handling of Alt-F4 in winvile, which did not close the window
	  because it was hidden by logic to support Win32 key modifiers
	  (reported by Clark Morgan).
	+ correct rendering of color 8 in winvile, which was black rather than
	  gray (reported by Clark Morgan).
	+ add gui_isprint() function to x11.c to test for characters which are
	  nonprinting in xvile, override printing-low and printing-high modes
	  to keep, for example, \80 to \A0 in printable form (main.c, x11.c)
	+ added a TTkopen call to ttunclean to match the TTkclose in ttclean,
	  fixes a problem where arrow keys did not work in the termcap version
	  after a :sh command (reported by Ryan Murray).
	+ modify configure script tests for termcap/terminfo libraries to allow
	  $LIBS to have the corresponding libraries (for Ryan Murray, who wants
	  to override the check for -lcurses).
	+ correct handling of configure --without-perl, which still tried to
	  use perl (reported by Ryan Murray).
	+ add autoconf macro CF_PROG_PERL, based on macro from Brendan O'Dea.
	+ remove x_quit function, using normal imdying function to handle
	  SIGHUP and SIGTERM for xvile (reported by Shawn Halpenny).
	> patches by Clark Morgan:
	+ remove spurious rumor in doc/visvile.doc
	+ winvile shows file name in title bar
	+ winvile ole automation server now catches bogus command line
	  arguments before attempting to process -Or switch.

 (tom) 980827 (k)
	+ add gui_version() function for winvile, to handle -V option (reported
	  by Clark Morgan).
	+ set flags for bminip and wminip so that all control characters except
	  for newline are echoed as in list-mode (display.c, window.c).
	+ correct rendering of termcap color while highlight-selection is
	  active (tcap.c)
	+ corrected logic of '<' register so it captures both calls on TTgetc
	  in map.c, otherwise it missed the 'M' in xterm mouse clicks.
	+ revise xterm mouse code to support movement of modelines by
	  "dragging" button 1, and selection/extension with buttons 1 and 3.
	  Integrated with multimotion() function (select.c, tcap.c).
	+ fix a couple of memory leaks
	> patches by Clark Morgan:
	+ adds _some_ winvile integration to DevStudio Version 5.  In
	  particular, this patch creates a component called visvile.dll, which
	  is a DevStudio-compatible add-in that invokes an OLE-compatible
	  version of winvile when editing/browsing text/source documents.
	  Visvile.dll, a work in progress, is heavily based on visvim.dll.
	  Full documentation is included in the new file doc/visvile.doc.
	+ add InsertMode and IsMinimized functions for OLE interface.
	+ remove unneeded assert's (winreg.c).
	+ always set force-console mode for Win95 (main.c).
	+ add command-line options to winvile to support OLE (ntwinio.c).

 (tom) 980816 (j)

	+ implement a simple usage/popup for winvile.
	+ correct a problem with cursor-droppings in winvile when the mouse
	  is clicked on the modeline.
	+ implement scrollbars for winvile (ntwinio.c)
	> patches by Clark Morgan:
	+ changes to allow winvile to be built as an OLE automation server.
	  Included with this patch are several new files, including one called
	  doc/oleauto.doc, which describes the build process and the relevant
	  server options/features.

 (tom) 980727 (i)
	+ modify makefile.djg to use -f option of rm, to work with djgpp 2.x
	+ updated dependencies in makefile.wnt (patch by Clark Morgan).
	+ restore old functionality for win32 ^X-!  (see 8.0c), but make a
	  special check for its use in getting directory listings to avoid
	  lockup with Thompson Toolkit Shell (patch by Clark Morgan).
	+ change "%u" in lsprintf call in w32cbrd.c to "%d", fixes _snprintf
	  change in 8.0h (reported by Clark Morgan).

 (tom) 980726 (h)
	+ updated config.guess, config.sub based on automake 1.3.
	+ combine some logic in file.c with new function strip_if_dosmode().
	+ correct typo in perl.xs from 8.0g
	+ change win32 _snprintf calls to lsprintf, to build with Borland C++.
	+ modify makefile.wnt to build with Perl 5.004, which is missing a
	  global for 'rs' on win32 (patch by Clark Morgan, analysis by Kevin).
	+ modified Clark's change so that the Win32-specific keycodes are returned
	  only when combined with key-modifiers (shift/alt/ctrl) that are specific
	  to Win32.
	+ mods to cause apropos and show-bindings to display proper binding
	  strings for the Win32 clipboard-related features.  Also, modified
	  ntconio to support noticed that winvile allows the user to sweep out
	  a rectangular region when a control key is pressed during mouse-based
	  text selection as in winvile, and documented in vile.hlp (patch by
	  Clark Morgan).
	+ correct message in win32 clipboard paste reporting the number of
	  bytes transferred to the clipboard (patch by Clark Morgan).
	+ updated makefile.blc, modified ifdefs to build with with Borland C++
	  5.02 (patch by Ryan Murray <rmurray@cyberhqz.com>).
	+ rename update_scrollbar to gui_update_scrollbar as part of ongoing
	  work on scrollbars for winvile.
	+ move autoconf tests for OpenLook and Motif libraries into aclocal.m4,
	  for reuse in other applications (e.g., xterm).

 (kev) 980725 (g)
	+ perl.xs (incgv, rs, ofslen, ofs, ors, orslen): Added PL_ prefix
	  to these for perl5.005.  Defined these in terms of the old
	  non-prefixed names for older versions of perl5.

 (tom) 980717 (f)
	+ corrected return-value of do_a_submode(), which was hiding a problem
	  in the call on new_regexval() from set_mode_value().
	+ correction to fences-begin and fences-end logic, to account for the
	  size of the matched text when doing a reverse sweep.  Only one
	  character from fences-end was selected, so that deleting a C-style
	  comment would leave a '/' (reported by Clark Morgan).
	+ add a couple of null-pointer checks in modes.c, to fix a case
	  when 'comments' submode is not initialized.
	+ implement previous-buffer command (requested by Quang Ngo
	  <quang@usa.net>).
	+ modify doindent() to adjust dot to point to the same text on exit as
	  it did on entry.  This fixes an instance of autoindent in cmode where
	  inserting a right-brace character at the wrapmargin caused the brace
	  to be inserted _before_ the wrapped word (reported by Michel Oey
	  <michel@cs.vu.nl>).
	+ corrected missing brackets in configure.in that caused --with-scr=xm
	  to be misinterpreted.
	+ modify win32 clipboard support to enable the copying of an arbitrary
	  region or named register to the windows clipboard (patch by Clark
	  Morgan).

 (tom) 980710 (e)
	+ correct recompilation of [Error Expressions], by adding a check if
	  the buffer is marked as changed, or if the number of lines in it
	  has changed.  If [Error Expressions] was popped up to view its
	  contents, that worked, but otherwise (e.g., in .vilerc), it did not
	  trigger the recompile (reported by Brian Moore).
	+ change winvile -geometry parameter to COLSxROWS, for consistency with
	  X Window applications (e.g., xterm), and documented in vile.hlp.
	+ correct parsing of line-specification when a leading ',' is used,
	  e.g., ":,$d" (reported by hymie! <hymie@lactose.smart.net>).
	+ documentation updates (patch by Clark Morgan).
	+ modify logic in tags.c so that tags completion works when some of the
	  tags files are missing (patch by Clark Morgan).

 (tom) 980708 (d)
	+ correct offset for ending null in kbd_string(), which was beyond
	  buffer limit - bug from 7.3f (patch by Chris Sherman
	  <sherman@unx.sas.com>).
	+ implement -geometry command-line option for winvile, and corresponding
	  modifiable $pagelen and $pagewid values.
	+ modify configure script to accept --with-screen=xaw and
	  --with-screen=xm, i.e., lowercase screen values (reported by Ryan
	  Murray <rmurray@glenvan.glenayre.com>).
	+ modify winvile to read stdin when there's data available, e.g.,
	  dir|winvile.  Tested on Win95 _and_ NT (patch by Clark Morgan).

 (tom) 980703 (c)
	+ remove spurious 'void' in perl.xs which caused items to be miscounted
	  (report by Kuntal M Daftary, patch by Kevin Buettner).
	+ shorten identifiers to no more than 31 characters (reported by
	  Graeme Miller).
	> patches by Clark Morgan:
	+ fix for a problem reported by Paul Fox:  when a dos box has scroll
	  bars (window size smaller than buffer size), then :!<dir> displays
	  its output in a switched screen context that the user can't examine.
	  This applies to console vile only (winvile has much worse problems in
	  the same scenario :-).
	+ changes to make ^X-!  use the same code path as filter-region and
	  read-pipe when the host is win32-based.
	+ implement paste-from-clipboard for win32, bound to Shift+Insert
	+ add a new documentation file (doc/w32modes.doc) that describes the
	  optimum settings for win32 modes when the host OS is not NT4.

 (tom) 980702 (b)
	+ change highlighting rule in vile-c-filt to highlight only the
	  "#" and keyword on preprocessor lines (patch by Paul Fox).
	+ dynamically allocate pm_buffer array in menu.c, eliminating limit on
	  number of menu items (reported by William Yuan
	  <yuan@bucket.its.unimelb.edu.au>).
	+ new configure macro CF_CC_INIT_UNIONS checks for compilers that
	  cannot initialize a union, e.g, a K&R compiler using unproto.
	  Ifdef'd union in CMDFUNC to work in that case.
	+ correct spelling of EXTRA_LOAD_FLAGS in CF_IMAKE_CFLAGS configure
	  macro.
	+ set VIEWOK flag on stored-procedure buffers, otherwise they cannot
	  be used in buffers set "view" (reported by Larry Gensch).
	+ rename character-type names to use "vl" prefix, to avoid conflict
	  with ctype.h names on Digital Unix 5.0 (patch by Larry Gensch).
	+ note that $progname may be "winvile" (patch by Clark Morgan).
	+ modify configure.in and makefile.in so that $(datadir)/perl is not
	  created unless vile is configured --with-perl (patch by Brendan
	  O'Dea).
	+ require perl 5.004 since the XS interface is dependent upon tied file
	  handles, which are not completely implemented in 5.003 (request by
	  Brendan O'Dea).

 (kev) 980606 (a)
	+ perl.xs (svrs): No longer a global static variable.
	  (perl_init): Don't initialize svrs here anymore.  Also, stifle
	  compiler warning.
	  (READLINE): Declare and initialize svrs here, but only for
	  platforms on which it's broken.
	  (perl_default_region, do_perl_cmd, set_region): Adjust r_size
	  field in region returned by getregion to account for buffers
	  which don't have a trailing newline.
	  (newVBrv): call gv_IOadd() in order to be able to use $. with
	  the filehandles.
	  (newVBrv, do_perl_cmd, set_region): Initialize $. .
	  (READLINE): increment (or advance) $. as appropriate.

	  [Brendan O'Dea sent me patches for much of the above.]

This change log started on Monday Jun 8, 1998.
