home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vile-src.zip / vile-8.1 / CHANGES.R5 < prev    next >
Text File  |  1996-07-17  |  82KB  |  2,005 lines

  1. Changes for vile 6.0 (released Tue Jun 18, 1996)
  2.  
  3. (pgf)    960618
  4.     + no longer use non-standard RCS extensions to generate revlist.
  5.       this is slower, but it works always.  (makefile.in)
  6.  
  7.     + change makefile targets "tar" and "shar" to "tarball" and
  8.       "sharball". (makefile.in)
  9.  
  10.     + add "const" to tempnam() args to satisfy reported problem with
  11.       DEC C -- apparently there is already a prototype in scope for
  12.       tempnam().  (vms2unix.c)
  13.  
  14.     + documented (years late :-) the "save-keyboard-macro" command,
  15.       which will copy the keyboard macro to a named register. (vile.hlp)
  16.  
  17.     + allow arg. to "load-register" to force a full-line style load.
  18.       this allows
  19.           1 use-register e load-register "#endif"
  20.       to be used to duplicate a 'yy' of "#endif".  previously you
  21.       could not get the full-line effect, i.e. it worked like 'yW'.
  22.       (line.c)
  23.  
  24. (tom)    960612 (zg)
  25.     + modify configure script, putting test for socket, nsl libraries after
  26.       X-libraries, to avoid duplication (configure.in)
  27.  
  28.     + modify cd/pwd logic to recover better when the current and parent
  29.       directories aren't readable by the current process (path.c, random.c).
  30.  
  31. (tom)    960527 (zf)
  32.     + added "--enable-echo" option to configure.in
  33.  
  34.     + applied Andy Harper's correction for VMS 'tempnam()'.
  35.  
  36.     + added VC_AC_PREREQ macro to allow conditional generation of the
  37.       configure script, according to whether my patches for autoconf have
  38.       been applied.  Added local copy of new autoconf macros as well
  39.       (configure.in, aclocal.m4).
  40.  
  41.     + reordered autoconf macros (aclocal.m4)
  42.  
  43.     + redefine AC_MSG_CHECKING, AC_CHECKING so that they log the same info
  44.       to config.log (aclocal.m4).
  45.  
  46.     + removed VC_SIZE_T because recent autoconf checks stdlib.h
  47.       (aclocal.m4, configure.in)
  48.  
  49.     + removed VC_TEST_GETPGRP macro (aclocal.m4, estruct.h, configure.in)
  50.  
  51.     + removed VC_SETPGRP macro (aclocal.m4, proto.h, configure.in, main.c)
  52.  
  53.     + added aliases for Sf, Sb termcap capabilities (AF, AB) for ANSI
  54.       termcap descriptions.
  55.  
  56. (tom)    960522 (ze)
  57.     + corrected a couple of lengths for strncpy0 calls (file.c)
  58.  
  59.     + modify handling of toggle-buffer-list so that giving a parameter
  60.       overrides the default pop/unpop, and toggles the listing of invisible
  61.       buffers instead (buffer.c)
  62.  
  63. (pgf)    960516 (zd)
  64.     + clarifications regarding file/command/shell completion (vile.hlp).
  65.  
  66.     + modified quote() routine to allow input of decimal values -- now
  67.       entering ^VNNN, ^V0NNN, or ^VxNN will insert the character with
  68.       that decimal, octal, or hex vale.  (255 max).  entering fewer
  69.       than 3 digits will enter the value, and the terminating character
  70.       will be "ungotten" and then re-consumed as usual.  feature
  71.       requested by user, implementation inspired by vim.  (insert.c,
  72.       vile.hlp)
  73.  
  74.     + added digraphs.rc, a set of :map! commands to aid the insertion
  75.       of ISO 8859/1 8-bit characters.  the ^Kcc form of the maps (and
  76.       their exact values) is borrowed from vim.  (digraphs.rc,
  77.       makefile.in, vile.hlp, makefile.djg)
  78.  
  79.     + the [Standard Input] buffer is now marked "read-only" rather
  80.       than "view" to match other piped-to buffers.  (all clients of
  81.       set_rdonly() affected, since argument was added.)
  82.  
  83.     + removed disclaimer from help file regarding x! and w!.
  84.  
  85.     + added -R option to set "readonly" mode, put -v back to setting
  86.       "view" mode as it used to, updated man page to reflect all this.
  87.       (vile.1, main.c)
  88.  
  89.     + the initial response to a ":e" prompt is defaulted to the first
  90.       command line argument to vile.  (file.c, main.c)
  91.  
  92. (kev)    960417 (zc)
  93.     + configure.in, configure:  Changed configure.in so that configure
  94.       will run cleanly and create something useful in a Sparc / Solaris
  95.       / X11R6 environment.  Regenerated configure.  Also fixed a few of
  96.       the autoconf warnings for configure.in.
  97.  
  98.     + makefile.in (X_EXTRA_LIBS, X_PRE_LIBS): Removed these makefile
  99.       variables.
  100.      
  101. (tom)    960416 (zb)
  102.     + further corrected 'shell_complete()' to test and adjust for leading
  103.       "!", and use this to also simplify call from 'cmd_complete()'
  104.       (bind.c, input.c).
  105.  
  106.     + prevent 'do_lines_in_region()' from processing the nominal end of a
  107.       full-line region, since that is off-by-one to accommodate width
  108.       requirements; this fixes ":.,.+3>>>" (region.c).
  109.  
  110. (kev)    960416 (za)
  111.     + basic.c (setcursor): Permit the mouse to set the cursor when
  112.       doing an "op" command.  Prevent MK from becoming corrupted if
  113.       call too set_curwp() caused a window change.
  114.  
  115.     + filec.c (mlreply_file): Use Tom's filename completion stuff
  116.       on shell commands for things like ":e !gunzip -c /usr/doc/<TAB>".
  117.  
  118.     + input.c (shell_complete): Fixed an off-by-one/beginning-of-buffer
  119.       bug.  [The variable "base" should never be less than zero after
  120.       the termination of the "for" loop.]
  121.  
  122. (tom)    960415 (z)
  123.     + show read-only mode in status line (display.c)
  124.  
  125.     + refined/corrected VMS pathname translations, to better handle root
  126.       directory, and ^X-e command (file.c, filec.c, glob.c, path.c,
  127.       vms2unix.c).
  128.  
  129.     + implemented filename-completion in shell commands (bind.c, filec.c,
  130.       input.c)
  131.  
  132.     + modified filename-completion to recognize environment variables
  133.       (filec.c).
  134.  
  135.     + change token-expansion from ':' to '&' for VMS and MS-DOS (estruct.h,
  136.       input.c, main.c).
  137.  
  138.     + implement error-finder for CSet C/C++ (finderr.c)
  139.  
  140. (tom)    960410 (y)
  141.     + modified TERM struct so that no function-pointers should be null.
  142.       Inactive functions are assigned from the null device's TERM struct.
  143.       This provides better type-checking, as well as getting rid of
  144.       no-effect compiler warnings.
  145.  
  146.     + restored <dir.h> include for TurboC (random.c)
  147.  
  148.     + adjusted ifdef's to allow changes to 'imdying()' to compile on
  149.       MS-DOS and OS/2 (file.c).
  150.  
  151. (pgf)    960329 (x)
  152.     + new modes:  "readonly", which prevents writing a buffer out, and
  153.       "readonly-on-readonly", which sets this mode if the buffer is not
  154.       writable according to the OS.  setting the latter causes vile to
  155.       mimic vi's default behavior.  it is off by default.  "vile -v",
  156.       invoking as "view", and reading from a pipe all now set
  157.       "readonly" mode rather than "view" mode.  (modetbl, main.c,
  158.       file.c, vile.hlp, vile.1)
  159.  
  160.     + better (?) help on using '/' as a path delimter on PC operating
  161.       systems. (vile.hlp)
  162.  
  163.     + new command, "set-unix-mode", as a complement to "set-dos-mode".
  164.       this capability was there before as "1:set-dos-mode", but it sure
  165.       was hard to explain to people.  (cmdtbl, vile.hlp, file.c)
  166.  
  167. (jrs)    960328 (w)
  168.     + estruct.h: Make TERM "optional" members "mandatory" and protect
  169.       references to all optionally implemented members with null
  170.       checks.
  171.     + ansi.c, at386.c, borland.c, dg10.c, dumbterm.c, hp110.c, hp150.c,
  172.       ibmpc.c, ntconio.c, st520.c, tcap.c, termio.c, tipc.c, vmsvt.c,
  173.       vt52.c, x11.c, z309.c, z_ibmpc.c: Remove all TERM-related optional
  174.       ifdefs and replace all stub functions with null function pointers.
  175.     + borland.c: Convert function defintions to ANSI C and make most
  176.       functions static.
  177.     + estruct.h: Add new optional window title method to TERM and
  178.       enable it for WIN32.
  179.     + buffer.c: Optionally set window title based on buffer name.
  180.     + dirstuff.h: Use <direct.h> instead of <dirent.h> with Visual C++.
  181.     + estruct.h: Remove unnecessary ifdefs around undefs.
  182.     + file.c: Compile a working version of imdying on all platforms.
  183.     + history.c: We want to use our own isgraph so undef the OS version.
  184.     + npopen.c: Do all I/O redirections while keyboard is closed.
  185.     + ntconio.c: Make most functions static, make the insertion
  186.       cursor code match the expected optional interface, implement
  187.       the TERM title method, unsucessfully try to catch abrupt
  188.       exits and do something about them, die gracefully if console
  189.       I/O fails.
  190.     + path.c: Remove unused code to downcase the path in is_msdos_drive.
  191.     + random.c: Change a bunch of compiler ifdefs to a single include
  192.       of dirstuff.h which already handles all of the special cases.
  193.       Add a judicious downcasing on non-caseless MS-DOS-like systems
  194.       like DJGPP to compensate for the above-mentioned change to
  195.       is_msdos_drive.
  196.     + termio.c: Don't put WIN32 typeahead code here since it is
  197.       already dispatched via TERM methods.
  198.     + README.PC: Various documentation fixes.
  199.  
  200. (tom)    960323 (v)
  201.     + removed tmp.c and OPT_MAP_MEMORY
  202.  
  203. (tom)    960317 (u)
  204.     + added "compile-error-expressions" to allow macros to force the [Error
  205.       Expressions] buffer to be created; otherwise it would only be created
  206.       on the first use of "find-next-error" (finderr.c).
  207.  
  208.     + modified predefined error-expressions to remove unnecessary ':';
  209.       making them a little more general.  This makes the error finder
  210.       slower, however (finderr.c).
  211.  
  212.     + modified RegStrChr2 to eliminate unnecessary 3rd parameter, making it
  213.       faster.  Use 'const' where possible in this file (regexp.c).
  214.  
  215. (tom)    960308 (t)
  216.     + correction to test for 'PC':  linker on HP/UX allows read from
  217.       non-existent location during configuration (configure.in).
  218.  
  219.     + corrected special cases in word-wrap, by refining 'blanks_on_line()',
  220.       and use of 'n' in 'wordwrap()' (input.c, word.c).
  221.  
  222. (pgf)    960307 (s)
  223.     + added b_lines_on_disk element to BUFFER struct, to get back
  224.       "count from bottom" functionality in finderr. (file.c, finderr.c,
  225.       estruct.h)
  226.  
  227.     + patch from jim hourihan to support "Cpp" keywork in vile-c-filt,
  228.       to allow colorizing all cpp lines at once, rather than listing
  229.       keywords individually. (c-filt.c, vile.hlp)
  230.  
  231. (tom)    960303 (r)
  232.     + corrected sign-extension of characters (map.c)
  233.  
  234.     + added termcap capability for "@7" (Key_end)
  235.  
  236.     + modified treatment of 'PC' in termcap driver; it should be extern
  237.       since it is "owned" by 'tputs()' (tcap.c).
  238.  
  239.     + modified termcap driver to treat \200 specially in the key mapping
  240.       i.e., add a mapping with the corresponding \0 (tcap.c)
  241.  
  242. (pgf)    960228 (q)
  243.     + when notabinsert was active, autoindent accounting was being
  244.       done incorrectly, causing excess whitespace to be left if
  245.       you entered a '#' in cmode.  (insert.c)
  246.  
  247.     + removed OPT_BSD_FILOCK, since it hasn't ever been used, and
  248.       the placeholders it was maintaining were incomplete, to say
  249.       the least.  (main.c, file.c, estruct.h)
  250.  
  251.     + eliminate old screen files, that haven't been touched in a
  252.       while.  (at386.c, dg10.c, hp110.c, hp150.c, st520.c, vt52.c,
  253.       x11simp.c, z309.c, z_ibmpc.c)
  254.  
  255.     + eliminate old SCREEN defines and ifdefs.  (ansi.c, display.c,
  256.       edef.h, epath.h, estruct.h, file.c, fileio.c, ibmpc.c, makefile.in,
  257.       spawn.c, termio.c, win31drv.c)
  258.  
  259.  
  260. (tom)  96022? (p)
  261.     + use 'const' where applicable (lots of places :-)
  262.  
  263.     + generate externs for CMDFUNC objects in nefunc.h (mktbls.c, all
  264.       makefiles, and C-files that had declared externs of these).
  265.  
  266.     + modified 'pathname[]' to separate out the 'exec_pathname' variable,
  267.       to make the remaining pathname[] data const.
  268.  
  269. (tom)  960224 (o)
  270.     + correct logic of 'is_absolute_pathname()'; for VMS we need to ensure
  271.       that the pathname contains brackets or colons (path.c).
  272.  
  273. (tom)  960220 (n)
  274.     + modify autoconf script to allow "--with-screen=ncurses" to link
  275.       with terminfo support (configure.in).
  276.  
  277.     + modify 'zotwp()' to switch to the most recently-used buffer instead
  278.       of the first one found, fixing behavior under noautobuffer mode
  279.       (buffer.c).
  280.  
  281. (tom)  960212 (m)
  282.     + modify autoconf script to add $X_PRE_LIBS and $X_EXTRA_LIBS in the
  283.       X configuration tests (configure.in).
  284.  
  285.     + corrected potential null-pointer reference for $abufname (eval.c).
  286.  
  287. (tom)  960204 (l)
  288.     + modify 'pathcat()' so that if the 'leaf' given is an absolute
  289.       pathname, then we'll ignore the 'path' (usually an implied
  290.       directory), to handle case in finderr when a full pathname is parsed
  291.       (path.c).
  292.  
  293.     + modify logic of find-next-error so that multiple distinct matches
  294.       on the same line will show up in the message-line (finderr.c).
  295.  
  296.     + remove P macro (and ANSI_PROTO) from several modules (c-filt.c,
  297.       manfilt.c, mktbls.c).
  298.  
  299.     + change 'int' to 'long' in places where we cast to/from pointer
  300.       (region.c, x11.c).
  301.  
  302.     + added TTflush to tcapkclose so that xterm-mouse is reset properly
  303.       when spawning subshell (tcap.c).
  304.  
  305.     + moved X_CFLAGS to CPPFLAGS definition so that lint works for xvile
  306.       (makefile.in).
  307.  
  308. (tom)  960118 (k)
  309.     + convert function definitions to ANSI form (55 c&h files affected),
  310.       so that K&R form is no longer used.  Removed macro ANSI_VARARGS, and
  311.       reduced ACTUAL_SIG_ARGS definition.  Compiled with VAX-C, TurboC,
  312.       WatCom 10.0a, gcc 2.5.8, gcc 2.7.2 (Linux, SunOS, Solaris, HP/UX 9),
  313.       CLIX, IRIX, SCO, UnixWare 1.2.  Also used 'unproto' to compile SunOS
  314.       and HP/UX.  Used ansi2knr for initial changes (i.e., finding places
  315.       that used K&R syntax), but this patch does not use ansi2knr.
  316.  
  317.       This is not fully ANSI -- vile uses a number of Posix functions that
  318.       aren't recognized in strict ANSI modes by a number of compilers.
  319.       It does require that the compiler recognize prototypes and stdarg.h
  320.  
  321. (jrs)  960108 (j)
  322.     + path.c (curr_dir_on_drive) [SYS_WINNT]: Translate drive argument
  323.       from a drive letter (e.g. 'A' or 'a') to a drive number (e.g. 1)
  324.       since this is what _getdcwd expects.
  325.       (lengthen_path): Predicate curr_dir_on_drive call on OPT_MSDOS_PATH
  326.       instead of listing individual systems so that e.g. this code is
  327.       also compiled in on SYS_WINNT.  Check for curr_dir_on_drive
  328.       failure and handle that case by assuming the current directory
  329.       on a non-existent drive is the root directory.
  330.  
  331. (pgf)  960107 (i)
  332.     + change order of TTkclose and TTclose in ttclean.  i think this
  333.       will give us back old behavior wrt terminals that have TI/TE
  334.       sequences.  we want to finish any screen-oriented i/o before
  335.       calling ttkclose.  (termio.c)
  336.  
  337.     + removed okay_to_ask param from make_bp() and unqname(), since
  338.       it is now unused.  removed return value from unqname().  (exec.c,
  339.       file.c, proto.h)
  340.  
  341.     + fixed unqname to continue trying wider and wider suffixes until
  342.       a unique name is found.  it will still loop, but only after a
  343.       very large number of buffernames has been tried.  uses base-36
  344.       index on end of filename. (file.c, proto.h)
  345.  
  346.     + added %r to dofmt -- takes two args, uses the first as a radix
  347.       with which to print the second.  (display.c)
  348.  
  349.     + bp->b_bname is now null-terminated (again?).  it's really much
  350.       cleaner this way.  NBUFN has changed
  351.       from 20 to 21, to make room for the null.  eliminated get_bname()
  352.       routine.  (buffer.c, display.c, edef.h, estruct.h, eval.c,
  353.       exec.c, file.c, finderr.c, input.c, main.c, modes.c, proto.h,
  354.       spawn.c, tags.c, tmp.c)
  355.  
  356.     + added a chgd_hilite() side-effect function, which causes
  357.       a call to attrib_matches() when any of "magic", "ignorecase",
  358.       or "visual-matches" is changed.
  359.  
  360.     + split up the "level" arg, which was overloaded to mean
  361.       two things, into two separate args, one which says it's a
  362.       global value we're changing, and the other which says we're
  363.       just testing whether we can change it.  (estruct.h, modes.c)
  364.  
  365.     + guard against null gregexp in attrib_matches() -- possible
  366.       if pattern failed to compile, making pat[0] non-null, but
  367.       gregexp null.  (search.c)
  368.  
  369.     + fix ifdefs to make it easier to test dos pipes under unix.  get
  370.       rid of duplicate close in dos readPipe, pointed out by jrs.  (the
  371.       second close is out in filterregion()).  (npopen.c, spawn.c,
  372.       proto.h)
  373.  
  374. (tom)    960105 (h)
  375.     + corrected inadvertant K&R substitution in APP_S macro, moved
  376.       bsd-lint expressions to avoid shadowing (finderr.c).
  377.  
  378. (pgf)    960103 (g)
  379.     + prevent characters following ^A, ^X and # prefixes from being
  380.       subject to remapping.  (input.c, vile.hlp)
  381.  
  382.     + small change to "find matching indent" macros in vile.hlp, to
  383.       make them work when they encounter non-empty blank lines. (vile.hlp)
  384.  
  385.     + tweak watcom makefile to use "protected mode" compiler.
  386.       selectable as $(CC), in case this breaks 10.x compiles.
  387.       (makefile.wat)
  388.  
  389.     + fix for identifiers starting with '_', from sean ahern. (c-filt.c)
  390.  
  391.  
  392. (tom)    960103 (f)
  393.     + corrected reference to char beyond regular expression in regexp
  394.       via 'lregexp()' function (regexp.c).
  395.  
  396.     + corrected 'free()' of null pointer in finderr.c, and retested with
  397.       compile & lint logs, covering most most of the regular expressions in
  398.       that module (finderr.c)
  399.  
  400. (jrs)    951231 (e)
  401.     + configure.in (AC_HAVE_FUNCS): Move it after library checks
  402.       (so we can test for functions in auxiliary libraries) and
  403.       add checks for the functions tparm and tparam.
  404.  
  405.     + djhandl.c (ctrl_c_count, was_ctrl_c_hit): Declare it as unsigned 
  406.       long instead of u_long for DJGPP v2.
  407.  
  408.     + estruct.h [CC_DJGPP]: Define HAVE_UNISTD_H to eliminate some
  409.       not declared warnings with DJGPP v2.
  410.       (OPT_COLOR) [DISP_TERMCAP]: Don't conditionalize it based on
  411.       Linux.
  412.  
  413.     + gppconio.c: Suppress the entire file under DJGPP v2 because the
  414.       bugs it was supposed to fix are fixed.
  415.  
  416.     + makefile.djg (vile rule): Don't let stubedit globbing=no
  417.       failure prevent a sucessful build for DJGPP v2 which doesn't
  418.       seem to support it.
  419.  
  420.     + os2vio.c (PRETTIER_SCROLL): Don't define it.
  421.       (vio_scroll): Base conditional scrolling code on
  422.       OPT_PRETTIER_SCROLL instead of PRETTIER_SCROLL.
  423.  
  424.     + proto.h (was_ctrl_c_hit): Adjust prototype to match new
  425.       definition.
  426.  
  427.     + tcap.c (tparm) [HAVE_TPARM]: Declare it.
  428.       (tparam) [HAVE_TPARAM]: Declare it.
  429.       (show_ansi_colors) [HAVE_TPARM]: Use tparm instead of tparam.
  430.  
  431.     + version.c (getversion) [CC_DJGPP]: Discriminate DJGPP v2 from
  432.       the previous version.
  433.  
  434. (jrs)    951224 (d)
  435.     + file.c (getfile2bp): Never consult the user about duplicate
  436.       buffer names if `warn-rename' isn't on. 
  437.  
  438.     + filec.c (headers): Don't supress inclusion of dirstuff.h
  439.       on OS/2 since it doesn't hurt anything.
  440.       (fillMyBuff) [SYS_OS2]: Only down-case filenames read from
  441.       a directory if the drive they are on is not case-preserving.
  442.  
  443.     + main.c (global_val_init): Initialize `warn-rename' so that
  444.       it defaults to the existing behavior.
  445.  
  446.     + modetbl (warn-rename): New option.
  447.  
  448.     + ntconio.c [SUPPORT_BROKEN_SCROLLING]: Rip out the ifdefs and
  449.       compile it unconditionally since the case it applies to now
  450.       no longer affects the efficiency of the most common case.
  451.  
  452.     + path.c (headers) [SYS_OS2]: Include os2.h.
  453.       (is_case_preserving, case_correct_path) [SYS_OS2]: New functions.
  454.  
  455.     + version.c (getversion) [CC_CSETPP]: Discriminate VisualAge C++
  456.       from C Set ++.
  457.  
  458.     + vile.hlp (warn-rename, warn-reread): Document them.
  459.  
  460. (tom)    951223 (c)
  461.     + rewrote error-finder to support runtime-modifiable error regular
  462.       expressions (finderr.c, edef.h)
  463.  
  464.     + added b_rmbuff member to BUFFER struct to notify error-finder when
  465.       its buffer is removed; the b_upbuff member handles the modify
  466.       events (estruct.h, buffer.c).
  467.       
  468.     + use macros b_set_obsolete/b_clr_obsolete (buffer.c, display.c)
  469.  
  470.     + use RBRACK/LBRACK definitions throughout (filec.c, vms2unix.c)
  471.  
  472.     + corrected missing initialization of CHARCELL link in extend_line()
  473.       that occasionally broke vile-manfilt (manfilt.c).
  474.  
  475. (tom)    951217 (b)
  476.     + lint (basic.c bind.c dumbterm.c exec.c insert.c line.c main.c map.c
  477.       oneliner.c patchlev.h path.c random.c search.c select.c tags.c
  478.       x11.c), including correcting error return within gotoeol(), and also
  479.       testing error return from bclear() in pregion(), and
  480.       attributeregion() in clear_match_attrs().
  481.  
  482.     + corrected ifdef'd logic from vile 5.5a with new function 'ins_mode()'
  483.       replacing logic that's only used in mouse-code (display.c)
  484.  
  485. (jrs)    951216 (a)
  486.     + bind.c (fill_partial): Use StrNcmp of length 1 instead of
  487.       char equality to inherit case-insensitive comparision
  488.       when extending completions as far as possible.  This is
  489.       so that if we have `bind.c' and `BIND.OBJ' we will complete
  490.       up to `bind.' if OPT_CASELESS is enabled.
  491.  
  492.     + file.c (fileread): Explicitly check for additional command
  493.       line input so that `e! RET' doesn't prompt for more input.
  494.       In that case, default to the filename of the current buffer
  495.       and optionally prompt for replacement based on the new option
  496.       `warn-reread'.
  497.  
  498.     + filec.c (mlreply_file): Supress prompting to reread the
  499.       current buffer based on the new variable `warn-reread'.
  500.       This is for people who like `e! RET' to assume they know
  501.       what they're doing.
  502.  
  503.     + main.c (global_val_init): Initialize `warn-reread' so that
  504.       it defaults to the existing behavior.
  505.  
  506.     + makefile.wnt (LDFLAGS): New variable to control debugging
  507.       and the logo.
  508.       (vile.exe, mktbls.exe): Use it.
  509.  
  510.     + modetbl (warn-reread): New option.
  511.  
  512.     + ntconio.c (ntscroll): Remove cRest variable and its
  513.       initialization since the default is what we want anyway.
  514.       Ensure that rectangles are described by their last row
  515.       or column, not its sucessor.  Narrow the amount of
  516.       backfilled scrolled areas by noting that the bug is the
  517.       failure to backfill the non-overlapped portion of a scroll.
  518.  
  519. Changes for vile 5.6 (released Thu Dec 14, 1995)
  520. (pgf)
  521.     + allow "position-window" to be used from macros, e.g.
  522.       "position-window bottom".  giving it an arg now reframes to
  523.       that line from top or bottom, e.g. "11 position-window top".
  524.       (cmdtbl, eval.c, vile.hlp, window.c)
  525.  
  526. (pgf)    951212 (f)
  527.     + writing a region (e.g. ":.,$w foo") when the ends of the
  528.       region did not fit on the screen would cause "BUG: updpos...".
  529.       now fixed, by ensuring that moves are always flagged correctly.
  530.       (btw, this was hidden by anything else that set a w_flag bit,
  531.       like "ruler" mode.) (exec.c)
  532.  
  533.     + fixed propagation of null character when highlighting string
  534.       literals that span lines.  (c-filt.c)
  535.  
  536.     + fixed description of label syntax (vile.hlp)
  537.  
  538. (tom)    951209 (e)
  539.     + implemented "next-tag" function, bound to ^A-^], which steps through
  540.       alternate tags definitions for the last tag value (cmdtbl, tags.c).
  541.  
  542.     + ifdef'd out code that causes vile to die when it receives an EOF
  543.       (linux only, termios.c)
  544.  
  545.     + modified to allow trivial (one-match only) glob-expansion of items in
  546.       'tags' mode so that ~/tags and $HOME/tags work (tags.c).
  547.  
  548. (pgf)    951209 (d)
  549.     + take out call to wrapword() in newline(), which caused an
  550.       extra newline in some wrapping cases.  the condition it was
  551.       taking care of is now caught earlier on.  (insert.c)
  552.  
  553. (pgf)    951208 (c)
  554.     + created separate .zip targets for watcom and djgpp builds, since
  555.       i seem to have to switch back and forth all the time.  (makefile.in)
  556.  
  557.     + do_num_proc and do_rept_arg_proc would accept ^X or ^A prefixes
  558.       followed by digits as further modifications to the argument
  559.       count, so 2 ^X-2 wouldn't work as advertised.  now it does. 
  560.       (main.c)
  561.  
  562.     + fixed kbd_reply() so that starting a response with ^V now
  563.       clears the existing response -- it used to append the
  564.       quoted character instead.  (input.c)
  565.  
  566.     + correction for showmatch mode when the left fence is the first
  567.       character in the buffer. (fences.c)
  568.  
  569.     + better explanation of difference between "wrapword" mode
  570.       and newer "wrapmargin" mode.  (vile.hlp)
  571.  
  572.     + added fallback define of S_ISDIR in path.c.
  573.  
  574. (tom)    951205 (b)
  575.     + corrected value of 'fname' in 'readin()' after calling 'ch_fname()';
  576.       this may have been the original bp->b_fname value, which is
  577.       reallocated when resolving a pathname (file.c).
  578.  
  579.     + modified to check for null pointer return from 'create_msgs()'
  580.       (msgs.c)
  581.  
  582. (tom)    951203 (a)
  583.     + corrected logic of 'line_height()' to get rid of unwanted wraparound
  584.       on the last column of the screen when linewrap mode is set (display.c)
  585.  
  586. Changes for vile 5.5 (released Sun Nov 19, 1995)
  587. (pgf)
  588.     + added tags file format information to vile.hlp.
  589.  
  590.     + removed vmalloc.{c,obj} from makefile.{djgpp,wnt,blc}
  591.  
  592.     + prevent ^T from inserting spaces if "notabinsert" is set. (insert.c)
  593.  
  594.     + force two spaces after a ':' when reformatting paragraphs. (word.c)
  595.  
  596.     + mention screen resolution control on PC in man page. (vile.1)
  597.  
  598.     + trimmed trailing whitespace from vile.hlp.  where does that stuff
  599.       come from, anyway?
  600.  
  601.     + fix forceblank() to consider lines containing whitespace to be
  602.       blank.  (random.c)
  603.  
  604.     + call upmode() when resetting modeline format.  (eval.c)
  605.  
  606.     + vms C compiler complains about folded pre-processor lines.  sigh.
  607.         (mktbls.c)
  608.  
  609.     + added two new macro accessible functions, &local and &global, which
  610.       return the value of a vile setting.  for instance, "&global cmode"
  611.       will give the global cmode setting (true or false) and "&local list"
  612.       will give the local autoindent mode setting.  (modes.c, eval.c,
  613.       modetbl, macros.doc, vile.hlp)
  614.  
  615.     + minor fixes for incremental searching: better tie-in with 'n' and
  616.       'N' commands, and uses CR as search terminator.  (search.c,
  617.       isearch.c, edef.h)  (from s.suresh)
  618.  
  619.     + eliminate vttidy(), since it had degenerated to a simple
  620.       wrapper for ttclean().  call ttclean() directly in all cases.
  621.       (spawn.c, termio.c, version.c, file.c, main.c, proto.h, display.c)
  622.  
  623.     + put TTkopen() call into ttunclean, so that keybad and xterm-mouse
  624.       translation get turned back on after a suspend or shell escape.
  625.       and then i removed it again.  the TI sequence for the linux
  626.       console homes the cursor.  not a good thing just before a
  627.       pressreturn().  but pressreturn() needs the termio stuff that
  628.       ttunclean does.  so they have to remain separate.
  629.       (termio.c, main.c)
  630.  
  631.     + introduced swbuffer_lfl() which takes lockfl as arg.  swbuffer() is
  632.       a wrapper which calls swbuffer_lfl() with lockfl == TRUE (the old
  633.       behavior).  this allows getting rid of the early readin() that was
  634.       happening in bp2swbuffer() (due to the lack of a lockfl arg), which
  635.       was in turn causing read hooks to run too early, before the buffer
  636.       state (modes, name, etc.) was set up correctly.  (buffer.c, file.c,
  637.       proto.h)
  638.  
  639.     + rearranged swbuffer_lfl to make sure it does the right thing
  640.       with inactive buffers.  (buffer.c)
  641.  
  642.     + small addition to vile.hlp regarding where comments can appear
  643.       in command files (i.e. probably only on lines by themselves)
  644.  
  645.     + i couldn't configure xvile on sunos 4.1.3 with X11R6 installed,
  646.       because the test link against -lXt failed, due to missing -lSM
  647.       and -lICE.  these have already been tested for and found, so i
  648.       added $X_PRE_LIBS to the check for -lXt.  this seems to fix it
  649.       and also seems benign.  is this right?  (configure.in, configure,
  650.       makefile.in)
  651.  
  652. (tom)
  653.     + corrected a bug in wrapmargin that caused it to split and alarm
  654.       at the wrong point (insert.c, word.c).
  655.   
  656.     + corrected a bug in linewrap; when the user appended to the end of
  657.       a line longer than the window, the beginning of the line was
  658.       overwriting the modeline of the next window (display.c).
  659.  
  660.     + modified termcap color support to work with rxvt 2.12 (tcap.c).
  661.  
  662.     + rewrote logic for color mode-type to make it an enum-type, more
  663.       general, and made the visual-matches mode an enum (modetbl, main.c,
  664.       modes.c, search.c).  This makes name-completion work properly on
  665.       enumerated types.
  666.  
  667.     + added 'default' enum value for termcap colors and added logic to
  668.       reset colors to default, i.e., orig_colors on exit (modes.c, tcap.c).
  669.  
  670.     + modified color modes to be global, since we don't support per-window
  671.       colors anymore (modetbl, display.c, main.c).
  672.  
  673.     + changed 'popup-choices' to a enum-type (modetbl, bind.c, main.c).
  674.  
  675.     + make the 'spal()' function a member of the TERM struct to eliminate
  676.       unused/dummy functions, and to capture internal initialization
  677.       of 'palstr' (lot of places).
  678.  
  679.     + corrected error in vile-manfilt that dumped core due to off-by-one
  680.       in realloc threshold, and fixed a memory leak (manfilt.c)
  681.  
  682.     + added global mode 'resolve-links' to control whether vile resolves
  683.       and caches directory names (modetbl, main.c, path.c).
  684.  
  685.  
  686. Changes for vile 5.4 (released Thu Oct 19, 1995)
  687.  
  688. (jrs)
  689.     + This revision provides improved support for Windows NT and
  690.       Windows 95.  The screen performance is dramatically faster
  691.       and a new completion mechanism is introduced which is
  692.       neither purely case-sensitive like Unix nor purely
  693.       case-insensitive like traditional MS-DOS.  This is used
  694.       to cleanly support case-insensitive but case-preserving
  695.       filesystems such as MS-DOS FAT with long filenames or
  696.       native NTFS.
  697.  
  698.     + bind.c, proto.h: Add case insensitive flag to kbd_complete,
  699.       skip_partial, show_partial, show_completions, scroll_completions,
  700.       and fill_partial.  Take care to propgate case changes
  701.       which occur during completion to the keyboard input area.
  702.  
  703.     + eval.c, modes.c: Change kbd_complete callers.
  704.  
  705.     + dirstuff.h, makefile.wnt: Repair crufty WIN32 port.
  706.  
  707.     + edef.h: Rename the operating system `windows/nt' as `win32'.
  708.  
  709.     + estruct.h: Rework compiler and system defines so that
  710.       Visual C++ is detected and so that Borland C++ can be used
  711.       to compile the WIN32 version.  Also undef some more common
  712.       names like ABORT which pollute the namespace of many
  713.       environments.
  714.  
  715.     + file.c: Make getfile2bp external so that it can be called from
  716.       main.  Use the canonical name instead of the supplied name
  717.       to form the buffer name for case-insensitive, case-preserving
  718.       filesystems.  This change makes `:e readme RET' for a file
  719.       whose real name is `README' have a buffer named `README'.
  720.  
  721.     + main.c: Use getfile2bp instead of make_bp so file specified
  722.       on the command line behave more like found files; confer
  723.       the above example.
  724.  
  725.     + filec.c, glob.c: Never lowercase WIN32 filenames and instead
  726.       compare them case-insensitively.  Pass case-insensitive flag to
  727.       kbd_complete on WIN32.
  728.  
  729.     + path.c: For WIN32 call the new function realpath from
  730.       canonpath so that the preserved case of a filename is
  731.       reconstructed even though a different case was used to
  732.       access the file.
  733.  
  734.     + termio.c: For WIN32 add prototype for ntgetch and don't call
  735.       kbhit.
  736.  
  737.     + version.c: Discriminate between Turbo C and Borland C++ to
  738.       clarify and shorten the version string.  Add support for
  739.       Visual C++.
  740.  
  741.     + makefile.blc: Yet another makefile for WIN32 (like makefile.wnt)
  742.       which uses Borland C++ instead of Visual C++.
  743.  
  744.     + ntconio.c: Massive overhaul for performance, consistency,
  745.       bug fixes and new features.  The driver is dramatically
  746.       faster now because of reduced API transactions through
  747.       batching and because of avoidance of inherently slow functions
  748.       such as WriteConsole.  Correct a number of inconsistencies with
  749.       the other MS-DOS-like drivers such as the use of bright
  750.       white and clearing the screen upon exit.  Fix a number of
  751.       bugs such a bad interaction between kbhit and getch and
  752.       work around a bad bug in the Windows 95 implementation of the
  753.       WIN32 Console API.  Enhance the driver to support all of the
  754.       function and editing keys and some missing control-key
  755.       combinations.
  756.  
  757.     + bind.c, filec.c: Temporarily disable case insensitive reply
  758.       correction for now since it doesn't work reliably and it only
  759.       provides a cosmetic advantage.
  760.  
  761.     + estruct.h: Add a new option OPT_UNC_PATH for systems
  762.       which support Universal Naming Convention (UNC) pathnames.
  763.       Enable for win32.  Turn on ellipsis and range globbing on
  764.       win32.  Define new glob range negation characters (^ and !).
  765.  
  766.     + filec.c, glob.c, path.c: Change numerous conditionals specific
  767.       to win32 to use the new OPT_CASELESS option.
  768.  
  769.     + glob.c: Extend globbing to handle OPT_CASELESS.  Fix bug which
  770.       prevented ranges from working on any platform.  Implement
  771.       range negation.
  772.  
  773.     + ntconio.c: Disable mouse support until the bugs are worked out.
  774.       Don't allow non-keyboard events to cause type ahead check to
  775.       loop forever.
  776.  
  777.     + dirstuff.h: Clean up crufty ifdefs and defines for win32
  778.       directory operations.
  779.  
  780.     + path.c: Correct faulty mapping between _getdrive and curdrive.
  781.       Rename realpath to case_correct_path and use it for OPT_CASELESS.
  782.       Handle UNC pathnames correctly during canonicalization and
  783.       case correction.  Fix bugs in case correction that showed up
  784.       because of differences between Windows NT and Windows 95.
  785.       Fix bug in internal name detection that prevented range globbing
  786.       from working at the beginning of a pattern (e.g. `[a-z]*').
  787.       Make pure system and share UNC pathnames (e.g. `\\system\share')
  788.       always appear as directories so completion on them works.
  789.       This works around a bug in the win32 file attribute semantics.
  790.       Be sure not to add `\*.*' to a directory that ends with `\'
  791.       in the the MSVC opendir replacement, add just `*.*' instead.
  792.       Fix monster memory leaks in MSVC readdir replacement and change
  793.       mechanism to allow multiple simultaneous open directories.
  794.  
  795.     + makefile.wnt: Suppress annoying compiler banner.
  796.  
  797.     + fileio.c: Work around another Microsoft bug and make ffsize
  798.       work reliably on files remotely mounted from Windows 95 systems
  799.       by using stdio instead of fstat.  Also use the default isready_c
  800.       because WIN32 stdio is either MS (which is like traditional
  801.       stdio) or Borland which is already handled.
  802.  
  803.     + main.c: Only make '~' a wildcard character on Unix since we only
  804.       expand ~login on Unix.  This allows short filenames which contain
  805.       tilde to be expanded properly (e.g. C:\PROGRA~1 => C:\Program Files)
  806.       on WIN32.
  807.  
  808.     + makefile.in: Add the WIN32 Borland C makefile to the official
  809.       distribution.
  810.  
  811.     + npopen.c: Handle WIN32 like MS-DOS, not like Unix so that
  812.       command filtering works correctly without much effort.
  813.  
  814.     + ntconio.c: Re-enable mouse input and completely rewrite the
  815.       mouse handling to use the generic selection code shared with
  816.       X11.  This change fixes a number of WIN32 mouse bugs and saves
  817.       about 100 lines of code.
  818.  
  819.     + path.c: Rewrite case_correct_path for WIN32 so that it correctly
  820.       handles strings which grow on expansion such as those files
  821.       which include any short-name components.
  822.  
  823.     + proto.h, select.c, x11.c: Compile the selection yanking code
  824.       on WIN32 and add an argument which controls which register to
  825.       yank into.  Change all callers.
  826.  
  827.     + spawn.c: Remove crufty inclusion of sys/stat that seems not
  828.       to be needed on any platform.  Even if it is, it should be
  829.       safe to include it unqualified as it is in other files.
  830.       Change the default COMSPEC from cmd.exe to command.com on
  831.       WIN32 since there is no cmd.exe on Windows 95 but there is
  832.       a command.com on Windows NT.  In any case, COMSPEC is usually
  833.       set.  Enable filterregion code on WIN32 since inout_popen
  834.       now works.
  835.  
  836. (kev)
  837.     + x11.c (x_preparse_args): Make sure that the scroll bar GC has
  838.       the graphics exposures field set to false.  (The calls to XCopyArea
  839.       using the scrollbar GC are from a pixmap which will always be
  840.       copied in its entirety.
  841.  
  842.     + x11.c: Changed resources so that default colors will be various
  843.       shades of gray.  This code is presently disabled.
  844.  
  845.     + x11.c (copy_paste): #if'd out the code which caused pasting at
  846.       the beginning of a line to be put on the line above and pasting
  847.       at the end of a line to be put on the line below.  Just define
  848.       OLD_PASTE to be 1 if you want the old behavior back.
  849.  
  850.     + x11.c (x_expose_scrollbar): Renamed from x_expose_pane.
  851.  
  852.       (update_scrollbar_sizes): Set up an event handler for scrollbar
  853.       expose events.
  854.  
  855.       (x_preparse_args): Removed call to set up expose event handler
  856.       for panes.
  857.  
  858.       The above changes were made because popup menus (from other
  859.       applications) could cover up the scrollbar and not redraw it
  860.       properly (I don't really know why).
  861.  
  862.     + x11.c (curs_sb_v_double_arrow, curs_sb_up_arrow, curs_xterm
  863.       curs_sb_down_arrow, curs_sb_left_arrow, curs_sb_right_arrow,
  864.       curs_double_arrow, curs_watch): Moved these out of struct
  865.       _text_win so that they are global.  This'll be handy for the day
  866.       when someone gets up the courage to actually create multiple
  867.       (top-level) X windows.  There's a lot of other stuff to be moved
  868.       out, but this is a start.
  869.  
  870.       (slider_is_3D, scrollbargc_lt, scrollbargc_dk): New fields in
  871.       struct _text_win.
  872.  
  873.       (alloc_shadows): New function which allocates pixels for light
  874.       and dark shading for a 3-D look.
  875.  
  876.       (draw_thumb, update_thumb, x_expose_pane, x_preparse_args): Added
  877.       new code for drawing 3-D scrollbars.
  878.  
  879.     + input.c (kbd_reply): Set reading_msg_line to FALSE _after_
  880.       popping down the completions window in order to ensure that the
  881.       buffer hook does not get run.  (It should not have been run when
  882.       popping the buffer up either, so when it's popped down, the
  883.       situtation should be the same prior being popped up.)
  884.  
  885.     + buffer.c (make_current, run_buffer_hook): Removed the message
  886.       line check from make_current() and moved it to run_buffer_hook. 
  887.       We do not want to run the buffer hook if reading from the message
  888.       line.  See below (I fixed this once before) for more information.
  889.  
  890.     + modetbl (SMOOTH_SCROLL): New boolean mode.
  891.  
  892.     + main.c (global_val_init): Initialize GMDSMOOTH_SCROLL value. 
  893.       Default is false so that it'll jump.
  894.  
  895.     + display.c (update, updupd): Added additional test to the "return
  896.       early" code to enforce smooth scrolling if GMDSMOOTH_SCROLL is
  897.       set.
  898.  
  899.     + main.c (main): Prevent curbp from pointing to an already
  900.       freed memory area.
  901.  
  902.     + x11.c (sel_prop, selection_data, selection_len): Removed these
  903.       fields from struct _text_win.
  904.  
  905.       (atom_TARGETS, atom_MULTIPLE, atom_TIMESTAMP, atom_TEXT): Added
  906.       variable declarations and initialization statements for these
  907.       atoms.  Initialization is performed in x_preparse_args().
  908.  
  909.       (free_selection, x_stash_selection, strndup): Deleted  these
  910.       functions.
  911.  
  912.       (x_get_selection, x_paste_selection, x_get_selected_text,
  913.       X_convert_selection, x_lose_selection, own_selection): New or
  914.       rewritten functions to use the Xt Intrinsics instead of Xlib for
  915.       handling selections.  In particular, xvile now handles the
  916.       following targets: TARGETS, MULTIPLE, TIMESTAMP, STRING, and
  917.       TEXT.  xvile should now be ICCCM compliant with respect to
  918.       selection handling.
  919.  
  920.       (x_process_event): Removed all selection handling code.
  921.  
  922.       [ Thanks to Brian Schellenberger (bts@unx.sas.com) for
  923.         contributing code which made xvile more ICCCM compliant.  I
  924.         used his contribution as a framework for x_convert_selection().
  925.  
  926.         Chan Benson's "Implementing Cut and Paste in the X Environment"
  927.         (The X Resource, Issue 10) was also instrumental in making the
  928.         above changes. ]
  929.  
  930.     + buffer.c (make_current): Prevent the buffer hook from being run
  931.       if we're presently reading from the message line.  In particular,
  932.       this will prevent the buffer hook from running when the
  933.       Completions buffer is popped up.  (:set and :setv were adversely
  934.       affected since these operations are often performed from one of
  935.       the buffer hooks and they are not reentrant.)
  936.  
  937.     + filec.c (fillMyBuff): Changed the algorithm for non-VMS machines
  938.       to use qsort() (via sortMyBuff) instead of an insertion sort.  On
  939.       a 100 MHz pentium, this caused the cpu time needed to build a
  940.       completion list for a directory of roughly ten thousand files to
  941.       go from approximately 3 minutes to a mere 2 seconds.  (I know
  942.       that 10,000 files seems like a lot.  But one of my coworkers
  943.       discovered this performance deficiency in a directory with over
  944.       32,000 files.  xvile needed in excess of 14 minutes of cpu time
  945.       to build the completion list on a SPARC-20.)
  946.  
  947.     + filec.c (qs_pathcmp, sortMyBuff): New functions.
  948.  
  949.     + vile.hlp: Minor corrections.
  950.  
  951.     + select.c (attributeregion): Only allocate memory for new attribute
  952.       when actually adding new attribute.  attributeregion() is also
  953.       responsible for deleting attributes.
  954.  
  955.     + bind.c (engl2fnc): Make sure the binary search terminates.  Setting
  956.       shell variable VILEINIT to ./vileinit would cause engl2fnc() to
  957.       loop endlessly.  I now know that this was not the proper usage
  958.       of this environment variable.  But engl2fnc() still shouldn't
  959.       get stuck in an infinite loop.
  960.  
  961.     + eval.c (gtenv, SetVarValue): Make sure that curbp is not NULL
  962.       prior to using it.  This can happen during the execution of
  963.       .vilerc.  The resultant behavior is not necessarily what the user
  964.       expects, but at least it doesn't cause a core dump.  For example,
  965.       put the following into your .vilerc:
  966.  
  967.           ~if &seq $progname "xvile"
  968.             set title $cfilname
  969.             set iconname $cbufname
  970.           ~endif
  971.  
  972.       I think the expected behavior would be to have $title and
  973.       $iconname in xvile take on the values of $cfilname and $cbufname
  974.       respectively.  But curbp is NULL when these actions are
  975.       performed.  I don't dare move any of the initialization code in
  976.       main() around or something else'll break.  [I'm not really all
  977.       that bothered by this behavior.  The "buffer-hook" variable works
  978.       well for this type of stuff.]
  979.  
  980.     + fences.c (InDirection, simple_fence, fmatchindent): Fixed problem
  981.       in which closing right curly bracket was not getting indented
  982.       properly in cmode.
  983.  
  984.     + input.c (kbd_reply): Don't erase default message if a completion
  985.       character is entered.  This takes Tom's fix to this code somewhat
  986.       further.  Scenerio: I enter ":e ../vile-5.3/fil<TAB>".  It only
  987.       completes to ../vile-5.3/file.  At this point I too hastily hit
  988.       return (having mistakenly expected the completion to be unique). 
  989.       I realize my error and hit ":e " I see ../vile-5.3/file.  I press
  990.       <TAB> and see the other completions (I have popup-choices set to
  991.       immediate).  I see the other completions and expect to be able to
  992.       modify the default response since I _have_ pressed a key _and_
  993.       the default response has not been erased.
  994.  
  995.     + main.c (main): Fixed a small bug introduced in 5.3g which caused
  996.       xvile to core dump when given no arguments.
  997.  
  998.     + main.c (cmd_mouse_motion,loop): Permit cursor to rest on the 
  999.       newline if it was placed there via the mouse.  This permits
  1000.       the pasting of text at the end of the line. 
  1001.  
  1002. (pgf)
  1003.     + get rid of #elif in display.c, for K&R compiler on HP/UX.
  1004.  
  1005.     + set "scanbound_is_header" flag in oneliner.c when doing
  1006.       line substitutions.  fixes broken :s/foo/bar/ commands.
  1007.       (search.c, oneliner.c, edef.h)
  1008.  
  1009.     + applied lee johnson's fixups to my changes for OS/2. (estruct.h,
  1010.       os2vio.c)
  1011.  
  1012.     + change name of variable used to cache interruptible pipe-read
  1013.       results.  variables must contain '_cv_' to work correctly.  this
  1014.       speeds up subsequent configure runs quite a lot, since the
  1015.       pipe-read test is a looong one.  (aclocal.m4)
  1016.  
  1017.     + applied fixes from purify'ing on HP from Warren Vik (path.c,
  1018.       map.c)
  1019.  
  1020.     + protect against null filenames (with BUG: report) in readin().
  1021.       (file.c)
  1022.     
  1023.     + add another OS/2 specific errno check to ffropen() (fileio.c)
  1024.  
  1025.     + turn on prototypes for OS/2 and IBM compiler in mktbls.c
  1026.  
  1027.     + set [Messages] buffer invisible and active to a) keep it from
  1028.       being found by ":n" and b) keep readin() from being called on it.
  1029.       (msgs.c)
  1030.  
  1031.     + eliminated references to vmalloc code.  i haven't used it in
  1032.       years, and there are better debugging libs available.  
  1033.       (estruct.h, exec.c, file.c, makefile.in, undo.c)
  1034.  
  1035.     + added ".cc" to the default cmode suffixes. (main.c)
  1036.  
  1037.     + changed the deblank() routine to a forceblank() routine -- with
  1038.       no arg still removes blank lines, but with an arg will force
  1039.       that many blank lines at current point.  can be used to quickly
  1040.       double-space some text, for example.  (random.c, cmdtbl, vile.hlp)
  1041.  
  1042.     + minor change to help re-display code to better preserve DOT across
  1043.       help invocations, and to prevent spurious moves if help is reinvoked
  1044.       while still on-screen.  (bind.c, buffer.c, edef.h)
  1045.  
  1046.     + remove usage of gets() from c-filt.c  (on recommendation of
  1047.       runtime warning from gcc on freebsd...  imagine my surprise :-)
  1048.  
  1049.     + fix c-filt.c to correctly recognize keywords which contain
  1050.       spaces after the '#', as in:
  1051.           #if foo
  1052.         #  define bar
  1053.         #endif
  1054.  
  1055.     + clean up bufhook so that the hook won't be called too early
  1056.       in the case of being invoked from swbuffer.  that is, we
  1057.       keep make_current from invoking the hook, since swbuffer
  1058.       isn't ready (curwp may not be set up yet).  this let's
  1059.       me run the C-filter macro as a buffer-hook.  (buffer.c)
  1060.  
  1061.     + added the "< register, which contains the last few hundred
  1062.       keystrokes typed.  actually, it will contain somewhere between
  1063.       128 and 256 characters, since its limited to a single dchunk.
  1064.       (estruct.h, map.c, line.c, vile.hlp)
  1065.  
  1066.     + added "dotags" and "devonlylist" targets to makefile.
  1067.  
  1068.     + applied patches to make ^T do a proper shiftwidth in insert
  1069.       mode.  also be sure insertmode doesn't get reset by functions
  1070.       called from insertmode.  (from grant mcdorman)  (insert.c)
  1071.  
  1072.     + modify xterm-mouse code to allow its use with TERMs other
  1073.       than xterm.  currently, if it's not really an xterm, then
  1074.       the mouse reports are assumed to be zero-based rather than
  1075.       one-based.  apparently some Amiga terminal emulator does
  1076.       this.  this can be generalized if needed.  (from grant mcdorman)
  1077.       (tcap.c)
  1078.  
  1079.     + c-filt.c now supports "Literal" attribute, for highlighting
  1080.       strings.  (c-filt.c, vile.hlp) (from ben stoltz)
  1081.  
  1082.     + applied patch to support '?' searches in tags files.  (tags.c, from
  1083.       eric krohn)
  1084.  
  1085.     + implemented nvi-style infinite undo, which overloads '.' command
  1086.       to continue undoing changes, if it immediately follows an undo.
  1087.       added status message to help figure out which way (forward or
  1088.       backward) you're going.  (cmdtbl, undo.c, main.c, vile.hlp)
  1089.  
  1090.     + gave line_report() return value indicating whether it printed
  1091.       message or not.  (random.c, line.c, globals.c, proto.h)
  1092.  
  1093.     + suppress compiler warning in glob.c
  1094.  
  1095.     + changed "Only one occurrence.." message to not beep, and not cause
  1096.       popup messages if you hit it during startup.  this also means "terse"
  1097.       mode will suppress it. (search.c)
  1098.  
  1099.     + removed some dead "ifdef BEFORE" code and commented lines.  (undo.c
  1100.       basic.c bind.c insert.c line.c)
  1101.  
  1102.     + added gppconio.c to the distribution.  one of these days maybe
  1103.       this can go away, when the fixes are incorporated in the djgpp
  1104.       release.
  1105.  
  1106.     + changed the test code in aclocal.m4 to always try and include
  1107.       ioctl.h and sys/ioctl.h.  this makes it match the usage in
  1108.       fileio.c.  the test code didn't have ioctl.h, therefore thought
  1109.       we needed our own extern for ioctl(), and ours doesn't match
  1110.       the freebsd prototype (theirs is variadic).  i seem to only
  1111.       have autoconf 2.2, so if someone wants to rebuild configure
  1112.       with 2.3, that's fine with me.  (aclocal.m4, configure)
  1113.  
  1114. (tom)
  1115.     + corrected ifdef in path.c that broke vms compile.
  1116.  
  1117.     + added configuration tests for prototypes, varargs.
  1118.  
  1119.     + corrected missing flag in 'gotoline()' that caused reframing error
  1120.       (basic.c).
  1121.  
  1122.     + corrected off-by-one that made 'N' fail for pattern "." (search.c).
  1123.  
  1124.     + added '\' and ':' to pathname-characters for MSDOS (main.c).
  1125.  
  1126.     + corrected handling of "--with-CFLAGS" (configure.in)
  1127.  
  1128.     + corrected allocation-size in resolve_dir (path.c)
  1129.  
  1130.     + corrected logic of binary-search version of engl2fnc (bind.c)
  1131.  
  1132.     + corrected off-by-one errors in text yanked by goto-matching-fence
  1133.       command (fences.c, select.c).
  1134.  
  1135.     + corrected translation of SEL_KREG in 'index2reg()' from '{' to '.'
  1136.       (line.c).
  1137.  
  1138.     + modified button1-release in xvile to yank the selection (x11.c).
  1139.  
  1140.     + corrected 'updattrs()' to not highlight text that cannot be selected
  1141.       e.g., line numbers (display.c)
  1142.  
  1143.     + compiler warnings for DEC-C and Watcom 10.0a (estruct.h, fences.c,
  1144.       filec.c, mktbls.c, npopen.c, os2pipe.c, os2vio.c, path.c, proto.h,
  1145.       random.c, spawn.c, termio.c, vmspipe.c, vmsvt.c) on OpenVMS and OS/2.
  1146.  
  1147.     + modified quoted-motion to interpret repeat-count as code for type of
  1148.       selection: 1=exact, fullline=2, rectangle=3 (select.c).
  1149.  
  1150.     + modified xvile to _not_ start display if only a "-V" option is given
  1151.       (main.c).
  1152.  
  1153.     + removed 'slash-char' mode, modifying code to use '/' for internal use
  1154.       of MSDOS pathnames (filec.c, glob.c, modetbl, main.c, modes.c,
  1155.       path.c, random.c).
  1156.  
  1157.     + modified name-completion so that if we match _something_, typing a
  1158.       character won't erase the buffer (input.c).
  1159.  
  1160.     + revised manpage filter to allow for escape sequences that set
  1161.       boldface/underlining -- this happens on OSF1 (manfilt.c).
  1162.  
  1163.     + corrected code that supports OPT_XTERM >= 3 -- this is mostly for use
  1164.       in demos since we don't handle text-position reports in :-commands,
  1165.       for example (tcap.c).
  1166.  
  1167.     + modified VALNAMES structure to have a side-effects function pointer,
  1168.       replaced the inline logic in mode-setting with a table (modes.c,
  1169.       modetbl, mktbls.c).
  1170.  
  1171.     + modified logic that set up name-completion table for the combined
  1172.       modes + variables to suppress "no"-prefix, etc.  Made related
  1173.       changes to ensure that vile prompts for boolean modes set via ":setv"
  1174.       (eval.c, input.c, modes.c).
  1175.  
  1176.     + corrected logic that updates command-line display during name
  1177.       completion (bind.c).
  1178.  
  1179.     + modified mode-value completion to include booleans and colors, if the
  1180.       enumerated value code is configured (modes.c).
  1181.  
  1182.     + modified so that vile will prompt for reloading tags buffers when
  1183.       user uses ":e" to view the buffer (file.c).
  1184.  
  1185.     + modified to show the actual filename for the help-file (bind.c).
  1186.  
  1187.     + modified to remember position in help-file when re-reading it (bind.c,
  1188.       buffer.c).
  1189.  
  1190.     + corrected adjust_forw, adjust_back functions to avoid returning
  1191.       non-line location which broke reframing (window.c)
  1192.  
  1193.     + corrected test in 'reframe()' for case where wrapped line was larger
  1194.       than the window (display.c).
  1195.  
  1196.     + modified to use w_line.o to store offset so that current position in
  1197.       wrapped lines that are larger than the window still displays
  1198.       (display.c).
  1199.  
  1200.     + added configure test for ANSI_QSORT (aclocal.m4).
  1201.  
  1202.     + modified test for nsl library to see if it's needed; otherwise this
  1203.       breaks xvile on IRIX 5.3; the standard X library configure test may
  1204.       also add this library (configure.in).
  1205.  
  1206.     + linted on solaris and irix -- conversion and constant-conditional
  1207.       (lots of places).
  1208.  
  1209.     + make the case-insensitive code for WINNT a configuration option
  1210.  
  1211.     + modified logic to make fake window & buffer to satisfy references
  1212.       before vile starts screen mode (main.c, window.c).
  1213.  
  1214.     + added "dumb" terminal driver to allow for prompting before vile
  1215.       starts into screen mode (main.c, termio.c, dumbterm.c).
  1216.  
  1217.     + modified file-completion on VMS to use kev's qsort improvement
  1218.       (filec.c)
  1219.  
  1220.     + corrected version-parsing for VMS filenames (vms2unix.c)
  1221.  
  1222.     + corrected VMS filename-completion when user supplies "/" (filec.c).
  1223.  
  1224.     + modified most exit-calls to do 'vttidy()' first (file.c, ibmpc.c,
  1225.       main.c, vmsvt.c, version.c, termio.c)
  1226.  
  1227.     + modified test-scripts for VMS to work across devices (descrip.mms,
  1228.       vmsbuild.com).
  1229.  
  1230.     + moved terminal/keypad-initialization into TTkopen(), and the matching
  1231.       resets into TTkclose() so that "vile -V" works properly with the
  1232.       dumb-terminal driver (tcap.c, termio.c).
  1233.  
  1234.     + corrected off-by-one error in VMS shorten_path that caused ../SIO to
  1235.       be shown as [-.IO] when cwd was ../SRC (path.c)
  1236.  
  1237.     + enabled directory-completion for VMS (estruct.h).
  1238.  
  1239.     + removed some ifdefs for apollo and CenterLine C that should be
  1240.       obsoleted by the 'configure' script (estruct.h).
  1241.  
  1242.     + moved TTkclose/TTkopen calls in fileio.c down to where they're
  1243.       actually used -- spawning subprocesses -- to avoid spurious
  1244.       reinitialization of the terminal in termcap mode (fileio.c,
  1245.       npopen.c).
  1246.  
  1247.     + corrected motions '(' and ')', which did not handle empty lines
  1248.       like vi (basic.c).
  1249.  
  1250.     + corrected handling of command-line '+' when argument is greater
  1251.       than buffer length, and also ensured that initial-search string
  1252.       doesn't conflict with contents of .vilerc (main.c).
  1253.  
  1254.     + corrected logic of regstrchr, which did not skip '\' characters for
  1255.       range-expressions.  This caused pattern "[<>]" to match '\' also
  1256.       (regexp.c).
  1257.  
  1258.     + modified ibmpc drivers to update current_res_name, so that vile will
  1259.       restore the screen resolution after spawning a command (borland.c,
  1260.       ibmpc.c).
  1261.  
  1262.     + corrected logic for $buffer-hook so that it's not invoked unless the
  1263.       buffer is the current window, so that editing commands work
  1264.       (buffer.c).
  1265.  
  1266.     + modified logic to enable 'readin()' to run $read-hook when reading
  1267.       from a pipe -- which concludes with an FIOEOF code (estruct.h, file.c)
  1268.  
  1269.     + corrected logic that sets the first buffer-pointer so that startup
  1270.       scripts can manipulate it.  This implies that we'll always create the
  1271.       unnamed buffer, just in case it's needed, and remove it after reading
  1272.       .vilerc if it's unmodified.  Also remove, if possible, any stray
  1273.       windows belonging to the unnamed buffer if a named buffer is
  1274.       available, just in case .vilerc created windows (main.c).
  1275.  
  1276.     + modified ffexists/ffaccess to check that their argument is really
  1277.       a valid pathname (fileio.c).
  1278.  
  1279.     + corrected logic that closed [History] buffer, which was resetting
  1280.       'autobuff' mode, and warning message if :show-history was given when
  1281.       history mode was off (history.c).
  1282.  
  1283.     + corrected the check I'd added to ffexists/ffaccess (I'd used
  1284.       maybe_pathname, which was requiring pathname-delimiters) to use
  1285.       isInternalName instead (fileio.c).
  1286.  
  1287.     + modified logic in execute-named-command to prevent accidental
  1288.       invocation of commands (such as ":q!") when the command is terminated
  1289.       by unexpected character (such as <esc>) (exec.c).
  1290.  
  1291.     + corrected logic that sets last_eolchar when interpreting macros,
  1292.       so that commands such as "set nu lw" will work (input.c).
  1293.  
  1294.     + modified logic so that saving the unnamed buffer to a file renames
  1295.       the buffer (file.c).
  1296.  
  1297.     + made mouse work for msdos+watcom configuration using polling (estruct.h,
  1298.       ibmpc.c)
  1299.  
  1300.     + updated makefile for watcom 10.0a (makefile.wat)
  1301.  
  1302.     + corrected logic in wrap_at_col(), which sets the column at which the
  1303.       wrapmargin mode activates; I'd used 'col_limit()' in an expression,
  1304.       which broke when linewrap was set.  Also checked for end-of-line
  1305.       before wrapping; this was an error in 'o' (insert.c).
  1306.  
  1307.     + modified interface of 'getccol()' and 'getcol()' to pass 'list' mode
  1308.       for the special case of testing wrapmargin (insert.c, random.c, etc).
  1309.  
  1310.     + rewrote manfilt.c to handle more general escape and underline sequences
  1311.       (manfilt.c).
  1312.  
  1313.     + refined treatment of wrapmargin to trim trailing whitespace when a
  1314.       tab/space is inserted past the wrap-margin.  This still isn't
  1315.       _exactly_ what vi does (insert.c, word.c).
  1316.  
  1317.     + corrected handling of ^D/^U/^F/^B scrolling commands for long wrapped
  1318.       lines which weren't doing anything if the screen didn't display at
  1319.       least two lines, and final position of ^B, which wasn't going to the
  1320.       top of screen (basic.c)
  1321.  
  1322. Changes for vile 5.3 (released Tue May 09, 1995)
  1323. (pgf)
  1324.     + implemented "watchinput" arg for the poll code in catnap().
  1325.       (random.c)
  1326.  
  1327.     + fixed the definition of VDISABLE to attempt to use _POSIX_VDISABLE
  1328.       before using our own value. (termio.c)
  1329.  
  1330.     + cleaned up path lookup (flook()) code, and the code that tries
  1331.       to find our executable.  previously, we didn't know where the
  1332.       executable was until someone used the ":version" command.  and,
  1333.       we assumed that argv[0] could always be used to find us.  but
  1334.       if argv[0] contains no slash chars, we can make no assumption
  1335.       about where we came from.  there are still some problems in here,
  1336.       because i think we sometimes try to run access() on things that
  1337.       aren't quite pathnames yet.  (bind.c epath.h estruct.h main.c
  1338.       path.c proto.h version.c)
  1339.  
  1340.     + correct behavior of forwline()/gotoline() so that we get an error
  1341.       if we try to go to a line beyond the end of the buffer.  (basic.c)
  1342.  
  1343.     + don't check for '\r' on empty lines when counting doslines. (file.c)
  1344.  
  1345.     + fix ".bak" style backups when the filename is of form ".foo".  now
  1346.       change this to ".foo.bak" rather than just ".bak".  (UNIX only)
  1347.       (fileio.c)
  1348.  
  1349.     + added TI/TE and KS/KE processing to tcapk{open,close}.  i don't
  1350.       know that this is always right, but it fixes an xterm arrow key
  1351.       bug in some cases.
  1352.  
  1353.     + removed TI/TE part of above change.  it's not always right.  the
  1354.       terminal open/close code needs serious examination.  sigh.
  1355.  
  1356.     + removed broken ULTRIX ifdef in x11.c, which tried to support
  1357.       KEY_Remove.  it was broken.  i _could_ make it work, but i
  1358.       don't know what i'd bind it to.  (x11.c)
  1359.  
  1360.     + fixed "arrow key during insert" bug introduced in 5.2, which
  1361.       prevented arrow from moving beyond EOL when inserting.  (basic.c)
  1362.  
  1363.     + vile will now warn and insist on ":q!" if not all edited buffers
  1364.       are visited during the edit session (i.e. some are still
  1365.       "unread").  this is for vi compatibility, since some people use
  1366.       "ZZ:n" when moving through their files, and vile was quitting
  1367.       after the ZZ.  (the routine anycb() has been renamed
  1368.       any_changed_buf() as well.)  (main.c, buffer.c)
  1369.  
  1370.     + a new mode, "warn-unread", which will suppress the above behavior
  1371.       if it is turned off.  (modetbl, main.c)
  1372.  
  1373.     + implemented "visual-matches" mode, which allows one to highlight
  1374.       all matching occurrences of a search string when doing a search. 
  1375.       that is, if i search for "foo", then all occurrences of "foo" in
  1376.       the buffer will be highlighted (as specified by the value of
  1377.       "visual-matches").  i did not allow for color -- only bold,
  1378.       italics, underline, and reverse are supported.  this can be
  1379.       added in the future, i suppose.  (modetbl, modes.c, main.c,
  1380.       search.c, undo.c, estruct.h, vile.hlp)
  1381.  
  1382.     + added command to clear visual-matches:  "clear-visual-matches",
  1383.       bound to '=' by default. (cmdtbl, search.c)
  1384.  
  1385.     + added concept of "ownership" to attributes, so that, for example,
  1386.       search-string attributes can be cleared independently of selection
  1387.       attributes or ctl-A sequence attributes.  (select.c, search.c,
  1388.       estruct.h, display.c)
  1389.  
  1390.     + added/changed text in README.CFG which describes what to do
  1391.       when configure or the make doesn't work.  (README.CFG)
  1392.  
  1393.     + reset the action of VDSUSP char under POSIX.  (termio.c)
  1394.  
  1395.     + applied patch from rick sladkey, for borland.c fixups and djgpp
  1396.       compilation:
  1397.  
  1398.         Part 1: borand.c enhancement and bug fixes
  1399.         + enhance borland.c so that scrolling regions are used
  1400.           efficiently
  1401.  
  1402.         + enhance borland.c so that individual characters are buffered
  1403.           which makes certain conio packages much faster (e.g the DJGPP
  1404.           one)
  1405.  
  1406.         + enhance borland.c to handle PC-style function keys (e.g.  F1,
  1407.           F2, PageUp)
  1408.  
  1409.         + make the cursor-toggling code in borland.c, generic, optional
  1410.           and turned off by default since a big blinking block is
  1411.           horribly ugly
  1412.  
  1413.         + fix the color handling in display.c so that the broken and
  1414.           unusable garbf kludge in bor?color in borland.c is no longer
  1415.           needed
  1416.  
  1417.         + fix erase to end of page in borland.c so it actually works
  1418.  
  1419.         + enhance the mode detection in borland.c so that the screen
  1420.           mode does not need to be changed in the default case (i.e. 
  1421.           when using the current mode)
  1422.  
  1423.         + prevent borland.c from clearing the screen on exit so it is
  1424.           like vile on every other display device (i.e it goes to the
  1425.           lower left instead)
  1426.  
  1427.         Part 2: misc bug fixes affecting the MS-DOS versions
  1428.  
  1429.         + change the default msdos slash character to '/' instead of
  1430.           '\\' because typing tab (for completion) after backslash
  1431.           inserts a ^I instead which makes completion under MS-DOS much
  1432.           less useful and fairly annoying
  1433.  
  1434.         + fixed a null pointer dererencing bug in main.c which occurs
  1435.           when the vile.rc file is being edited but it does not exist
  1436.           yet
  1437.  
  1438.         + enhanced makefile.djg so that either ibmpc.c or borland.c can
  1439.           be used and so that borland.c is used by default
  1440.  
  1441.         + fixed a bug in path.c that caused the first slash after a
  1442.           drive letter not to be canonicalized properly (e.g. 
  1443.           C:\FOO\BAR => c:\foo/bar)
  1444.  
  1445.         + fixed a bug in path.c affecting DJGPP that caused relative
  1446.           pathnames containing an explicit pathname to be corrupted
  1447.           (e.g.  C:FOO => ../:/foo) by deleting incorrect code whose
  1448.           intention is solved by the previous fix
  1449.  
  1450.         + omit a conflicting prototype for delay which I don't know who
  1451.           needs but it can't be used as is on all platforms
  1452.  
  1453.         + fixed a fairly serious bug in file.c that causes the file
  1454.           size to be computed incorrectly at startup on dos-mode files
  1455.           which caused an explicit write of an unmodified buffer to
  1456.           append garbage to the file because the size was overstated by
  1457.           the number of returns in the file which have already been
  1458.           deleted but not yet subtracted from the count
  1459.  
  1460.     + further changes to make rick's changes work okay under watcom.
  1461.       the DOS path-deliter is now selectable, with "set slash-char". 
  1462.       (edef.h, estruct.h, file.c, filec.c, fileio.c, glob.c, input.c,
  1463.       modes.c, modetbl, path.c, proto.h, random.c, vile.hlp)
  1464.  
  1465.     + added in patch from Russ Herman which fixes kbhit() problem with
  1466.       function keys in OS/2.  (borland.c)
  1467.  
  1468.     + eliminate FAIL macro in regexp.c, since it saves very little,
  1469.       and is hard to write correctly without _someone's_ compiler or
  1470.       lint complaining about it.  (regexp.c)
  1471.  
  1472.     + fix infinite loop caused by null search patterns (e.g. ".*" or
  1473.       "^".  (estruct.h, search.c)
  1474.  
  1475.     + got rid of vestigial "tungetc()" code.  (input.c, proto.h, edef.h)
  1476.  
  1477.     + fix (quickly) the broken @a-in-a-macro problem. (map.c)
  1478.  
  1479.     + added ifdef'ed code which allows logging all keystrokes to
  1480.       a tempfile, which can help when trying to recreate rare bugs.
  1481.       (map.c)
  1482.  
  1483.     + modify regstrncmp to take use system strncmp when possible.
  1484.       (regexp.c)
  1485.  
  1486.     + made "fence" characters (i.e {,}.(,),[,]) configurable by
  1487.       user (new mode, "fence-pairs"), so that < and > can be added
  1488.       easily (i hear this is useful for html editing).  (fences.c,
  1489.       insert.c, main.c, modes.c, modetbl, proto.h, vile.hlp)
  1490.  
  1491.     + added patch from anthony shipman, to keep X11 selections from
  1492.       starting unless at more than one char is swept.  (x11.c)
  1493.  
  1494.     + added a binary search to engl2fnc, but it's not quite right.  i
  1495.       was in a hurry.  it's ifdefed.  (bind.c, externs.c)
  1496.  
  1497.     + minor efficiencies in regstrncmp and regstrchr.  (regexp.c)
  1498.  
  1499.     + interrupted() is now a macro again, when appropriate.  this
  1500.       speeds up simple searches to run something like 10% faster.
  1501.       (main.c, edef.h, estruct.h, proto.h)
  1502.  
  1503.     + fix cosmetic message bug when 'q' command is ended immediately
  1504.       with another 'q'.  (select.c)
  1505.  
  1506.     + fix forwchar() to work as advertised.  from a user's point
  1507.       of view, it now skips the newline if no arg is given, so it
  1508.       can move across lines.  this meant some places where it was
  1509.       called with default args internally had to be changed. 
  1510.       (basic.c, word.c)
  1511.  
  1512.     + force an update() in reposition(), so that "redraw-display"
  1513.       can be used in a macro to force an incremental screen update.
  1514.  
  1515.     + fix typo in cmdtbl.
  1516.  
  1517.     + created pictmode.rc, a primitive "mode" which assists in
  1518.       drawing ascii "art".  not that i've used it much yet...
  1519.  
  1520.     + changed cbuf[2] in replacechar() to cbuf[NLINE].  apparently
  1521.       the length arg that is supposed to prevent overruns doesn't
  1522.       work, if you do a command like "replace-char %keywas", i.e.
  1523.       use a variable to provide the response. (insert.c)
  1524.  
  1525.     + added ISO-8859 characters and punctuation to ispunct() etc.
  1526.       classes in charinit().  i assume this is "right".  (main.c)
  1527.  
  1528.     + applied patches from Lee Johnson (71310.405@compuserve.com) for
  1529.       support of OS/2 from the IBM C Set ++ Compiler (2.x).  changes
  1530.       mostly to pipe support, directory access, and file completion.
  1531.       new makefile (makefile.icc), new screen (os2vio.c), and new pipe
  1532.       routines (os2pipe.c).  (borland.c, buffer.c, dirstuff.h,
  1533.       display.c, edef.h, estruct.h, file.c, filec.c, fileio.c, glob.c,
  1534.       makefile.in, mktbls.c, modes.c, npopen.c, path.c, proto.h,
  1535.       random.c, spawn.c, termio.c, version.c)
  1536.  
  1537.     + fixed --with-cflags option to configure script (configure.in,
  1538.       configure)
  1539.  
  1540.     + add another mention of ctrl-button functions, in the button
  1541.       section of help file.
  1542.  
  1543. (tom)
  1544.     + modified configuration scripts to conform to autoconf 2.2
  1545.       (aclocal.m4, configure, configure.in, dirstuff.h).
  1546.  
  1547.     + modified select.c to recover from manfile error that produces
  1548.       empty attribute-region (select.c).
  1549.  
  1550.     + removed "#error" for SunOS's K+R compiler (line.c).
  1551.  
  1552.     + modified to make OPT_MAP_MEMORY and SMALLER configurations compile
  1553.       (cmdtbl, display.c, search.c
  1554.  
  1555.     + modified tmp.c to use calloc on page/chunks to appease Purify.
  1556.  
  1557.     + added auxiliary programs to lint-rules (makefile.in).
  1558.  
  1559.     + use void-casts for strcmp, lsprintf, etc., (lots of places), and
  1560.       FALLTHROUGH comments for SunOS and IRIX lint (display.c, main.c,
  1561.       oneliner.c, wordmov.c)
  1562.  
  1563.     + removed redundant ';' after FAIL() macros that causes IRIX lint
  1564.       warnings in (regexp.c).
  1565.  
  1566.     + mods for miscellaneous lint (csrch.c, exec.c, filec.c, insert.c,
  1567.       main.c, modes.c, proto.h, region.c, tcap.c).
  1568.  
  1569.     + added stdarg.h to configure.in test so ANSI_VARARGS will work.
  1570.  
  1571.     + modified lint ifdef's for ANSI_VARARGS <stdarg.h> case, tested
  1572.       with IRIX lint (estruct.h).
  1573.  
  1574.     + added configuration tests for 'errno', 'time_t', 'off_t'
  1575.       (configure.in, aclocal.m4).
  1576.  
  1577.     + split-out neproto.h (from nefunc.h); cleanup gcc's -Wnested-externs
  1578.       and -Wredundant-decls warnings (mktbls.c, estruct.h, proto.h, etc.)
  1579.  
  1580.     + use IRIX lint to find/modify functions that can be made static
  1581.       (proto.h and several modules...)
  1582.  
  1583.     + corrected logic in makefuncdesc() and fnc2kcod() that caused vile to
  1584.       ignore the user-defined key bindings (bind.c).
  1585.  
  1586.     + modified mlreply_file() to handle the ^R!shell-command case (filec.c)
  1587.  
  1588.     + corrected ifdef that broke 'slash-char' mode when compiling
  1589.       SMALLER (main.c, modes.c).
  1590.  
  1591.     + modified wildcard-expansion for VMS to handle comma-separated lists,
  1592.       and /readonly option.
  1593.  
  1594.     + corrected tab offset in 'vtputc()' so that linewrap displays properly
  1595.       with various tab sizes (display.c).
  1596.  
  1597.     + added ifdef to use MAXPATHLEN if it is defined in <sys/param.h>
  1598.       (estruct.h).
  1599.  
  1600.     + adapted code by kev to resolve directory names which may contain
  1601.       embedded symbolic links (path.c, configure.in).
  1602.  
  1603. (kev)    
  1604.     + display.c (l_to_vcol): Make sure that we don't try to examine
  1605.       characters which are past the end of the line.  Also compute
  1606.       non-varying parts of the loop condition in advance for efficiency.
  1607.  
  1608.     + configure.in: Don't use grep to pick out -D lines since some
  1609.       versions of grep limit the number of characters which are output.
  1610.  
  1611.     + search.c (attrib_matches): Start DOT out at the head of the buffer
  1612.       to attribute matches for instead of at the first line.  This will
  1613.       cause the first character in the buffer to be highlighted if
  1614.       deserving.
  1615.  
  1616.     + search.c (attrib_matches): Added new code for attributing with
  1617.       color.
  1618.  
  1619.     + modes.c (fsm_mono_attributes): Added color to this list.  Hmm...
  1620.       "color" doesn't seem to be a "mono" attribute, does it?
  1621.  
  1622.  
  1623. Changes for vile 5.2 (released Thu Feb 23, 1995)
  1624. (pgf)
  1625.     + added vile-c-filt to the man page.  (vile.1)
  1626.  
  1627.     + remove root cause of"C<right-arrow>c" core dump -- no longer
  1628.       allow an extra amount of right-motion just 'cuz we're in insert
  1629.       mode.  whatever the reason for this extra was, it doesn't seem
  1630.       to be necessary anymore.  recoded remaining conditions for
  1631.       clarity.  (basic.c)
  1632.  
  1633. (kev)
  1634.     + estruct.h (OPT_COLOR): Don't define in terms of DISP_X11.  This
  1635.       fixes the ":set all" core dump.  OPT_COLOR indicates that the
  1636.       older (line-by-line) color mechanisms should be used.  These
  1637.       mechanisms are stubbed in x11.c, but are not implemented (and
  1638.       probably won't be).  My recent change to NCOLORS (for DISP_X11)
  1639.       made some OPT_COLOR ifdef'd code in modes.c break (there are only
  1640.       eight entries in the cname array but there are now sixteen
  1641.       colors.) So rather than put NCOLORS back to 8, it seemed more
  1642.       expedient to simply disable all of the OPT_COLOR code which xvile
  1643.       was never able to make use of anyway.  We should also probably
  1644.       take the OPT_COLOR related ifdefs and stubs out of x11.c.
  1645.  
  1646.       (VIDEO_ATTR): Make sure that this is typedef'd to be a short
  1647.       when DISP_X11 is defined.
  1648.  
  1649. (tom)
  1650.     + corrected core dump when user types "C<right-arrow>c" (line.c).
  1651.  
  1652.     + change "defined(sun)" to "SYS_SUNOS".  (finderr.c)
  1653.       
  1654. Changes for vile 5.1 (released Tue Feb 21, 1995)
  1655. (pgf)
  1656.     + fix longstanding bug when keyboard macro is executed while
  1657.       it is being recorded.  (input.c)
  1658.  
  1659.     + fixed broken beginDisplay/endofDisplay nesting in xterm-mouse
  1660.       code, which caused lockups after a resize operation. (tcap.c)
  1661.  
  1662.     + fixed misspelled ifdef which caused filename truncation when using
  1663.       "tilde style" backups.  (fileio.c)
  1664.  
  1665.     + changed "X11" to "DISP_X11" in vmsbuild.com and descrip.mms.
  1666.  
  1667.     + fixed OPT_REVSTA ifdefs so modeline reverse-video can be turned
  1668.       off.  (display.c)
  1669.       
  1670.     + trimline() can be called with DOT.o == llength(lp), for instance
  1671.       if a macro calls "end-of-line" followed by "append-string" where
  1672.       the string starts with a CR.  trimline() was trimming (or not,
  1673.       didn't matter), and then backing DOT.o up to the last char on the
  1674.       line.  the CR would then break the line, instead of appending to
  1675.       it.  this is probably a problem in other functions as well, if
  1676.       called from a macro, since we don't do the "DOT.o can't sit on
  1677.       the newline" hack while executing macros.  (region.c)
  1678.  
  1679.     + replaced contents of c-filt.c with x-filt.c.  it seems to be a
  1680.       full superset of its functionality.  it is now installed along
  1681.       with manfilt, as vile-c-filt.  the help file now talks more about
  1682.       it.  (c-filt.c, makefile.in)
  1683.  
  1684.     + documented the color.[fb]color[1-16] subresources. (vile.hlp)
  1685.  
  1686.     + included the c-filt.flx code contributed by alistair crooks in
  1687.       the distribution.  (c-filt.flx, makefile.in)
  1688.  
  1689.     + changed the "built" names of manfilt and c-filt to vile-manfilt
  1690.       and vile-c-filt, to match their installed names, and to match
  1691.       the documentation. (makefile.in)
  1692.  
  1693.     + changed the new color resources to be {f,b}color[1-9,10-15],
  1694.       rather than A-F as before. (x11.c)
  1695.  
  1696.     + turned off IBM_VIDEO for linux.  it's not necessarily true.  
  1697.       turned on OPT_COLOR for linux and DISP_TERMCAP, which is what we
  1698.       were trying to imply with the above anyway.  (estruct.h)
  1699. (kev)
  1700.     + patchlev.h (PATCHLEVEL): Updated to "c".
  1701.  
  1702.     + x11.c (update_scrollbar_sizes -- NO_WIDGETS version):
  1703.       Restructured loop which allocates new scrollbars and grips
  1704.       somewhat.  In addition to no longer creating one more grip than
  1705.       necessary, we also explicitly check to see which grips need to be
  1706.       created.
  1707.  
  1708.     + x11.c (check_scrollbar_allocs): Allocate the same number of grips as
  1709.       scrollbars.  We don't actually need this many, but allocation in this
  1710.       manner caused some subtle allocation problems with GROW().  GROW() was
  1711.       being called as follows:
  1712.           GROW(cur_win->grips, Widget, oldmax-1, newmax-1);
  1713.       When cur_win->grips is initially allocated, cur_win->grips is
  1714.       NULL, oldmax is 0, and newmax is cur_win->rows/2.  Note then that
  1715.       -1 is being passed as the third parameter to GROW().  This causes
  1716.       newmax elements (rather than newmax-1 elements -- the number of
  1717.       elements allocated) to be zero'd near the end of the grow macro.
  1718.  
  1719.       The other piece of code affected (adversely) by this allocation is
  1720.       in update_scrollbar_sizes() where new scrollbars and grips are
  1721.       created.  It turns out that one more grip than necessary is created.
  1722.       Under certain conditions, the GROW macro would zero out this extra
  1723.       grip.  When reinvoked, update_scrollbar_sizes() would assume that
  1724.       this extra grip had been created and not bother to recreate it.
  1725.  
  1726.       + patchlev.h (PATCHLEVEL): Updated to "a".
  1727.  
  1728.     [ Note: The following changes constitute the merge of Jukka Keto's
  1729.       changes for color support to xvile.  Thanks Jukka! ]
  1730.  
  1731.     + estruct.h (OPT_COLOR): Define in terms of DISP_X11, not X11.
  1732.  
  1733.       (NCOLORS): Conditionally define this to be 16 instead of 8.
  1734.  
  1735.       (VAFGCOL, VABGCOL): Removed.
  1736.       
  1737.       (VACOLOR, VCOLORNUM, VCOLORATTR): New defines.
  1738.  
  1739.     + select.c (attribute_cntl_a_sequences): Color support.
  1740.  
  1741.     + x-filt.c: New file.  This is Jukka's syntax coloring filter for C
  1742.       programs.  I modified it slightly to compile clean under gcc with
  1743.       Tom's favorite warning flags: -Wall -Wshadow -Wconversion
  1744.       -Wstrict-prototypes -Wmissing-prototypes.  Also fixed a problem
  1745.       with "'".  It also no longer requires an ansi compiler.  Note: It
  1746.       should probably be merged with c-filt.  A command line switch to
  1747.       [xc]-filt could be used to indicate whether monochrome or color
  1748.       should be used.
  1749.  
  1750.     + x11.c (struct _text_win): New fields colors_fgc, colors_bgc,
  1751.       colors_fg, and colors_bg.
  1752.  
  1753.     + (Xt{N,C}{f,F,b,B}color{0-9,A-F} i.e, XtNfcolor0,...): New
  1754.       resource defines.  Kind of ugly to have to declare all of
  1755.       these like this, but that seems to be the way its done.
  1756.  
  1757.       (color_resources): Structure which defines the color subresources.
  1758.  
  1759.       (x_preparse_args): Get the color subresources and initialize
  1760.       the color GCs.
  1761.  
  1762.       (x_setfont): Set new font for all of the color GCs.
  1763.  
  1764.       (flush_line): Handle color attributes.  Also check for the
  1765.       most common (default) attribute first for efficiency.
  1766.       
  1767. (tom)
  1768.     + corrected end-of-line problem with autoindent that broke 'append-string'
  1769.       (insert.c).
  1770.  
  1771.     + turn off 'access()' function for DEC C on a VAX as per bug report
  1772.       by amish@data.uchicago.edu (estruct.h).
  1773.  
  1774.     + added arrow-key definitions for VAX (vmsvt.c).
  1775.  
  1776.     + corrected treatment of underlining in termcap driver (tcap.c).
  1777.  
  1778.     + implemented termcap-based colors (tcap.c).
  1779.  
  1780. Changes for vile 5.0 (released Fri Feb 10, 1995)
  1781. (pgf)
  1782.     + rearranged ifdefs leading to OPT_WORKING def'n for clarity.
  1783.       (estruct.h)
  1784.  
  1785.     + a couple of the new scratch buffer names were too long.  (edef.h)
  1786.  
  1787.     + added commands for undoing system maps ("unmap-system-chars")
  1788.       and abbreviations ("unabbreviate").  (map.c, cmdtbl,
  1789.       vile.hlp, proto.h)
  1790.  
  1791.     + NetBSD, FreeBSD, etc. all seem to define the termcap "kD" attribute
  1792.       as DEL.  i consider this questionable, since they also produce
  1793.       DEL from the Backspace key, but in any case, it means we shouldn't
  1794.       define a system map for the DEL key.  we should really have separate
  1795.       system maps for insert and command modes, but i think that might be
  1796.       overly complicated.  so instead, i suppress the mapping of an ASCII
  1797.       DEL to anything else (at the system level -- the user can still do
  1798.       whatever they want.)  (tcap.c)
  1799.  
  1800.     + renamed our signal() wrapper to setup_handler(), and always use it.
  1801.       on systems with sigaction(), use it in place of calling signal() to
  1802.       ensure system calls are restartable.  setup_handler() is now in
  1803.       main.c, moved from termio.c (buglist, display.c, file.c, main.c,
  1804.       proto.h, spawn.c, termio.c, x11.c, x11simp.c)
  1805.  
  1806.     + use test for restartable reads on pipes rather than stock
  1807.       restartable system call test, when trying to configure OPT_WORKING.
  1808.       OSF/1 3.0 has restartable system calls, but reads (and writes) on
  1809.       pipes will return EINTR regardless of SA_RESTART state.  they
  1810.       call this a feature, based on the POSIX spec.  i haven't been
  1811.       able to check.  (if you link against -lsys5 on OSF/1, you _can_
  1812.       turn on OPT_WORKING.  but they claim that may be a bug, and
  1813.       a "libsys5.a" may exist on other system, so i'm not going to
  1814.       trust or use it.) (aclocal.m4, configure, configure.in, estruct.h)
  1815.  
  1816.     + pasted characters now have the NOREMAP bit set, to prevent map
  1817.       expansion of pasted text. (x11.c, estruct.h)
  1818.  
  1819.     + changed token parsing to no longer treat ^L and ^M (i.e. formfeed
  1820.       and carriage return) as whitespace.  this fix is mostly for :map,
  1821.       so that carriage returns can appear in the lhs and at the start
  1822.       of the rhs, but it should also allow those characters in other
  1823.       response contexts as well.  (exec.c)
  1824.  
  1825.     + implemented "flow-control-enable" command, which re-enables
  1826.       software flow control for those users who still need it.  not all
  1827.       implementations (posix/sgtty/termio) were disabling it in the
  1828.       first place -- i'm surprised selections worked there (they may
  1829.       not have.) (termio.c, cmdtbl, proto.h, vile.hlp)
  1830.  
  1831.     + protect against infinite recursion when attempting to print
  1832.       0x80000000 as a signed integer.  (display.c)
  1833.  
  1834.     + changed file completion buffer to show the full prefix of the
  1835.       thing that's being completed (patch from jukka keto). (bind.c)
  1836.  
  1837.     + added jukka keto's c-filt.c program to the distribution. (c-filt.c,
  1838.       makefile.in)
  1839.  
  1840.     + changed HAS_ALARM define to HAVE_ALARM, and let it be autoconf'ed.
  1841.       (estruct.h, configure.in, configure)
  1842.  
  1843.     + added code in ffgetline(), which is where pipes are read, to
  1844.       check for EINTR from a SIGALRM and redo the read() if we're
  1845.       on a system where the read() isn't restartable. this lets
  1846.       us turn on working on all system that have alarm(). THEN, i
  1847.       backed this change out with ifdefs, since i think some old
  1848.       kernels can lose data if they get a signal during a
  1849.       read().  (fileio.c, display,c, estruct.h, edef.h)
  1850.  
  1851.     + put start of child process status reporting in system_SHELL().
  1852.       ifdef'ed it out, since the WIFSIGNALED etc. macros probably
  1853.       aren't on all systems, and i don't want to break this release.
  1854.       (npopen.c)
  1855.  
  1856.     + introduce checks for SCO systems, which are probably not so odd
  1857.       when compared with their peers, it's just that their peers have
  1858.       all gone away.  (configure.in, configure, termio.c, estruct.h)
  1859.  
  1860.     + fix globbing in root directory (i.e. ":e /j*k" now gets "/junk"),
  1861.       and move DOS check for this same thing ("c:auto*.bat") slightly.
  1862.       ensure what we don't end up with doubled or trailing slashes
  1863.       ("//foo", "/foo/") anywhere, since DOS won't open those or stat
  1864.       them properly.  (glob.c)
  1865.  
  1866.     + fixed benign wp/curwp mixup in l_to_vcol().  (display.c)
  1867.  
  1868.     + change expression for lint. (map.c)
  1869.  
  1870.     + move ifdef for ANSI_QSORT into estruct.h, so it can be used in
  1871.       proto.h as well as glob.c (proto.h, glob.c, estruct.h)
  1872.  
  1873.     + added a couple of SIZE_T casts to keep "new ansi semantics" warnings
  1874.       at bay.  (file.c, history.c)
  1875.  
  1876.     + fixed some typos in the vile.hlp, added a version number, to
  1877.       correspond to the version it's distributed with.
  1878.  
  1879.     + change name of __MAXINT to not have __ on front, add cast to (int).
  1880.       (display.c)
  1881.  
  1882.     + changed the FL_PATH search order to look in the table first.  this
  1883.       a) seems more correct, and b) will help ensure that the new helpfile
  1884.       location (/usr/local/lib) will be checked before the old (which was
  1885.       /usr/local/bin).  took /usr/local/bin out of the internal table.
  1886.       i have more changes pending for this area, having to do with bugs
  1887.       in how we determine where the executable came from.  but i'll hold
  1888.       them until next release.  (bind.c, epath.h)
  1889.  
  1890.     + added note about old helpfiles to README and README.CFG.
  1891.  
  1892.     + added some more reminders for myself to the release_warnings
  1893.       target. (makefile.in)
  1894.  
  1895.     + created patchlev.h file.  include and use it it in version.c.
  1896.  
  1897.     + added missing range checks to EXACTLY case of regrepeat() to
  1898.       prevent going off end of line when matching 'cc*' on a line
  1899.       that ends in 'c'. (regexp.c)
  1900.  
  1901.     + fixed ifdefs for signal_pg(), to negate pid when killing a pgrp
  1902.       with kill().  (estruct.h)
  1903.  
  1904.     + moved setting of new process group out of x_open(), and into a
  1905.       command, which can be used in a .vilerc if someone needs it.  it
  1906.       seemed like the cases we were trying to catch were bugs in other
  1907.       programs (shells and window managers).  this seems like the most
  1908.       flexible approach, at least until i understand the problems a little
  1909.       better.  (x11.c, main.c, cmdtbl, vile.hlp, proto.h)
  1910.  
  1911.     + simplified, and moved non_filename() to version.c, so it can more
  1912.       easily use the PATCHLEVEL string.  (proto.h, version.c, path.c)
  1913.      
  1914.     + changed PATCHLEVEL from a char constant to a string, for more
  1915.       flexibility in naming patches.  duh.  (version.c, patchlev.h)
  1916.  
  1917.     + added GNU General Public License to distribution, as required by
  1918.       configure/configure.in.  (makefile.in, COPYING)
  1919.  
  1920.     + tweaked/updated copyrights, added some vile specific caveats and
  1921.       info to the COPYING file.
  1922.  
  1923.     + reenabled '!' expansion in shell commands.  more vi's than not
  1924.       seem to do it.  (input.c)
  1925.  
  1926.     + arrange to check the X event queue when doing updates() during
  1927.       a pipe read.  we were only checking in x_working() before, which
  1928.       isn't called if "set noworking" or OPT_WORKING == FALSE. (proto.h,
  1929.       x11.c, file.c)
  1930.  
  1931. (tom)
  1932.     + modified column shown by ruler to be the actual cursor column, rather
  1933.       than the effective column (display.c).
  1934.  
  1935.     + made vms sys$/lib$ calls consistent (uppercase) to simplify greps
  1936.       (path.c, random.c, termio.c, vms2unix.c, vmspipe.c, vmsvt.c).
  1937.  
  1938.     + changed input-buffer size and error checks for vms to avoid
  1939.       data overrun problems (termio.c).
  1940.  
  1941.     + corrected glob-expansion for environment-variables, e.g., $FOO
  1942.       (glob.c).
  1943.  
  1944.     + updated tests for memory leaks (bind.c, map.c).
  1945.  
  1946.     + corrected glob-expansion of msdos pathnames that use '/' (glob.c).
  1947.  
  1948.     + corrected bug that prevented '!' from being inserted into shell
  1949.       commands without being escaped (input.c).
  1950.  
  1951.     + added command 'append-string' for symmetry with 'insert-string'
  1952.       (insert.c, cmdtbl).
  1953.  
  1954.     + modified vax scripts to compile on AXP hardware under OpenVMS
  1955.       (descrip.mms, display.c, vms_link.opt, vmsbuild.com, vmsshare.opt)
  1956.  
  1957.     + corrected shadowing of 'stat' in npopen.c
  1958.  
  1959.     + added version.o: patchlev.h dependency to all makefiles.
  1960.       (descrip.mms makefile.djg makefile.tbc makefile.wat makefile.wnt)
  1961.  
  1962. (kev)
  1963.     + main.c (newprocessgroup): Changed XHAVE_SETSID to HAVE_SETSID.
  1964.       Added HAVE_BSD_SETPGRP ifdef which is necessary due to the fact
  1965.       that setpgrp on BSD systems requires two arguments.
  1966.  
  1967.     + x11.c (scroll_selection): Sign extend row and col.  It's possible
  1968.       to sign extend in fewer lines of code if we make certain
  1969.       assumptions about the widths of ints, shorts, and longs.  Not as
  1970.       portable though.
  1971.  
  1972.       (extend_selection): Add scrolling timeout _after_ updating the
  1973.       display.
  1974.  
  1975.     + vile.hlp: did a lot of tweaking/rewording/correcting.
  1976.  
  1977.     + display.c (l_to_vcol): Use wp->w_dot instead of DOT.  DOT uses
  1978.       curwp which is not what we want here.  This problem was causing
  1979.       core dumps when I got into xvile and did the following:
  1980.  
  1981.           :help
  1982.         /fmt
  1983.  
  1984.     + x11.c (x_change_focus): Do not attempt to give ourselves focus
  1985.       when focusFollowsMouse is true and we enter the window.  Also,
  1986.       don't rely on the receipt of FocusIn/FocusOut events for deciding
  1987.       whether or not to show the cursor.
  1988.  
  1989.       (x_preparse_args): Set the XtNinput resource to TRUE in the
  1990.       call to XtVaAppInitialize() instead of in a separate call to
  1991.       XtVaSetValues(). [This is how Volume 4 in the O'Reilly series
  1992.       recommends doing it].
  1993.  
  1994.       (x_wm_delwin): Removed the unused WM_TAKE_FOCUS stuff from this
  1995.       function.
  1996.  
  1997.       (grip_moved): Removed superfluous "#if MOTIF_WIDGETS" / "#endif"
  1998.       pair.
  1999.  
  2000.       (scroll_selection): Cleaned up decoding of row and col.
  2001.  
  2002.       (x_preparse_args): Took out WM_TAKE_FOCUS stuff.
  2003.  
  2004. This change log started on Wed Jan 11, 1995.
  2005.