home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vile-src.zip / vile-8.1 / CHANGES.R4 < prev    next >
Text File  |  1995-01-15  |  125KB  |  2,878 lines

  1.  
  2. NOTICE: This change log is officially (sez me) closed.
  3.     All further changes documented (hopefully) in "CHANGES".  This
  4.     file was renamed from "CHANGES" to "CHANGES.R4" on Wed Jan 11, 1995.     
  5.  
  6. Changes for vile 4.13 (released Thu Dec 22, 1994)
  7. (pgf)
  8.     + fixed typo in glob.c which caused compile failure on VMS.
  9.  
  10.     + added PATCH_AGAINST environment variable to dpatch target.
  11.       (makefile.in)
  12.  
  13.     + cleaned up selection ifdefs.  no more USE_SEL_FUNCS.  use
  14.       OPT_SELECTIONS to ifdef references to r_attr_id.  (select.c
  15.       region.c, estruct.h)
  16.  
  17.     + the strings <sp> and <tab> conflict with the new choice for
  18.       "buffer variable" indicator.  so i'm getting rid of them.  and
  19.       i'm adding support for \s (and \a, while i'm at it) to the
  20.       tokenizer. (exec.c, bind.c, macros.doc, vile.hlp)
  21.  
  22.     + don't depend on a possibly null abbr_map pointer to decide to
  23.       reverse the lhs of a map string.  this caused the first mapping
  24.       of any type (:map or :map!) to be reversed.  i missed this
  25.       because my first mapping was of a single character.  (map.c)
  26.  
  27.     + wrappers provided for TTgetc and TTtypahead because at least one
  28.       pcc-based compiler balks at passing them as a function pointer. 
  29.       (map.c)
  30.  
  31.     + operators act from pre_op_dot to DOT.  so set pre_op_dot when done
  32.       sweeping, in case some other motion set it.  fixes 'dqf(%%q'.
  33.       (select.c)
  34.  
  35.     + change _IOLBF flag to _IOFBF on setvbuf call, to turn off
  36.       line buffering.  we don't need it, since we flush properly
  37.       anyway, and it slows down output, particularly on an xterm.
  38.       (most systems used to use setbuffer() anyway, until autoconf)
  39.       (termio.c)
  40.  
  41.     + correct yet _another_ typo made during the great strncpy()
  42.       conversion.  sheesh.  (bind.c)
  43.  
  44.     + readability improvements and editorial corrections to the older
  45.       sections of README and README.CFG.
  46.  
  47.     + moved processing of @cmdfile startup file down to where
  48.       we normally run .vilerc, to make sure all conditions are the
  49.       same for both.  this should make running 'vile @.vilerc' and
  50.       'vile' exactly equivalent.  running a command file caused
  51.       a core in 4.12 due to NULL curwp.  (main.c)
  52.  
  53.     + include text of manpage.rc in vile.hlp, for installations that
  54.       discard the source directory. (vile.hlp)
  55.  
  56.     + revisions to help and man page sections on startup. (vile.hlp,
  57.       vile.1)
  58.  
  59.     + install the man page as xvile.1 when installing xvile. (makefile.in)
  60.      
  61. (tom)
  62.     + pick up slash right after a drive designator to fix problem
  63.       with DOS globbing in the root directory.  (glob.c)
  64.  
  65.     + corrected define, so that VMS version builds display-driver
  66.       (descrip.mms, vmsbuild.com).
  67.  
  68. (kev)
  69.     + line.c (put):  Don't set suppressnl when only putting newlines.
  70.       Note: We may want to visit ldelnewline() and fix it so that the
  71.       line structure doesn't get hosed when DOT is set to the buffer
  72.       header.  The circular structure is apparently maintained, but the
  73.       buffer header is now bypassed.  Suppose there're three lines.  We
  74.       should have something (roughly) like this:
  75.  
  76.           bufhead -> line1 -> line2 -> line3 -> bufhead
  77.  
  78.       But I think that after ldelnewline with DOT as described above,
  79.       we end up with (again assuming three lines):
  80.  
  81.           bufhead -> line1 -> line2 -> line3 -> line1
  82.  
  83. Changes for vile 4.12 (released Fri Dec 16, 1994)
  84. (pgf)
  85.     + clear up section of man page dealing with vile-manfilt. (vile.1)
  86.  
  87.     + don't let a mouse click change the current window if we're
  88.       sweeping.  serious lockup results.  (basic.c)
  89.  
  90.     + fix various places that needed to be made more or less aware of
  91.       the occurence of sweeping.  quoted motions now never include
  92.       their endpoint, except in a few mostly "on one line" kind of
  93.       motions: e, E, f, t, and %.  (csrch.c, edef.h, exec.c, fences.c,
  94.       main.c, select.c, wordmov.c, vile.hlp)
  95.  
  96. (kev)
  97.     + display.c (modeline): For case 'f' and 'F' in the format string,
  98.       do not display the pathname if it is the empty string.  This seems
  99.       to be the case for the [unnamed] buffer.
  100.  
  101. Changes for vile 4.11 (released Thu Dec 15, 1994)
  102. (pgf)
  103.     + changed order of #includes in x11.c, so that our headers come
  104.       first.  since we no longer define VMS at all, we'll be okay on
  105.       most systems.  i hope this doesn't break other systems.  if so,
  106.       estruct.h and edef.h should be moved after the last X11 include,
  107.       until we can figure something out.  (x11.c)
  108.  
  109.     + changed leading character of so-called "buffer-variables" from
  110.       a '#' character to '<' character.  the '#' conflicts with
  111.       the # function key prefix.  THIS MAY BREAK OLD MACROS.  i'm
  112.       sorry about this, but the choice of '#' as the function key
  113.       prefix is not really negotiable...  (eval.c, vile.hlp)
  114.  
  115.     + fixed buffer-reading examples in macros.doc to reflect the above
  116.       change.  (macros.doc)
  117.  
  118.     + fixed "WRITEABLE" case of the non-HAVE_ACCESS case of ffaccess.
  119.       the sense was inverted.  (fileio.c)
  120.  
  121.     + implemented autowrite mode.  unlike vi, will only save files when
  122.       suspending or running a shell command, since saving on any buffer
  123.       switch seems a little silly.  (buffer.c, cmdtbl, main.c, modetbl,
  124.       proto.h, spawn.c, vile.hlp)
  125.  
  126.     + fix OPT_LCKFILES as per johan rosman's suggestion, to make
  127.       multiple edits by the original locker work correctly.  also fix
  128.       behavior when file is renamed.  (buffer.c, main.c, file.c)
  129.  
  130.     + put in kev's suggested change to allow xvile to grow its screen
  131.       more gracefully, albeit somewhat delayed. (eval.c)
  132.  
  133.     + fixed (for the last time, i hope) the sequence of messages that
  134.       appear with ":w", ":wq", ":ww", ":wwq", and 'ZZ'.  Now, the "press
  135.       return to continue" only happens if you're _not_ quitting, you
  136.       haven't suppressed it with an argument, and something was actually
  137.       written. (buffer.c, main.c, vile.hlp)
  138.  
  139.     + the "modeline-format" setting is now a variable rather than a
  140.       "setting".  so 'set modeline-format "...."'  must change to
  141.       'set-variable $modeline-format "...."' in .vilerc files. (edef.h,
  142.       eval.c, display.c, main.c, modetbl, vile.hlp)
  143.  
  144.     + make sure getregion() assigns a unique attr_id to regions
  145.       it creates, so find_release_attr() doesn't find spurious
  146.       matches.  this keeps selections from disappearing when an
  147.       unrelated delete (killregion()) occurs. (region.c, select.c,
  148.       proto.h)
  149.  
  150.     + fixed bug in trimline() which caused it to leave DOT at end
  151.       of line, if there was trimming to do.  this caused a bug
  152.       where if two newlines were inserted into a line ending with
  153.       whitespace, and autoinsertion occurred, then the newlines
  154.       would insert incorrectly, one correctly, and one _after_ the
  155.       line that had been broken.  trimline now preserves DOT if
  156.       possible.  (region.c)
  157.  
  158.     + rearrange multimotion() to ensure regionshape is set to exact
  159.       when we begin a normal quoted motion. (select.c)
  160.  
  161.     + the xterm-mouse code is now a proper motion, so that you can
  162.       use it to follow an operator.  that is, hit 'd', point with
  163.       the mouse, and click button 1 to delete to the mouse position.
  164.       x11 code now forces execution of a null motion routine, to
  165.       make this to work in xvile as well.  (basic.c, cmdtbl, tcap.c,
  166.       proto.h, x11.c, estruct.h, vile.hlp) [hitting '.' after doing
  167.       this in the xterm version is interesting, since the motion is
  168.       relative to the edges of the screen, not to the buffer.  in
  169.       xvile, the motion that is repeated is null, so nothing happens]
  170.  
  171.     + mask off VAML and VAMLFOC bits when comparing attributes in
  172.       tcap.c, since it doesn't know how to deal...
  173.  
  174.     + reset insertmode and set WFMODE if we abort out of replacechar().
  175.       (insert.c)
  176.  
  177.     + rearranged X resource section of help file slightly, to group
  178.       all resources and subresources more closely together. if we
  179.       split out all the scrollbar resources into sub-resources, this
  180.       presentation might make less sense.  (vile.hlp)
  181.  
  182.     + modified configure.in to support "--with-CFLAGS=", and turn -O
  183.       on by default.  it can now be suppressed with '--with-CFLAGS=" "'.
  184.       is it possible to give the configure script a usage message?
  185.       (configure.in, configure, README.CFG)
  186.  
  187.     + eliminated usage of the return value of strncpy(), since it's
  188.       broken on at least one version of AIX, and there's no big
  189.       gain in using it, other than aesthetic value, which, although
  190.       subjective, really is a fact. :-)  (bind.c, buffer.c, eval.c,
  191.       filec.c, glob.c, spawn.c)
  192.  
  193.     + eliminated all uses of the ScratchName macro, since it getting hard
  194.       to write it portably.  all vile-created buffer names are now
  195.       defined as char arrays in edef.h, and they all have the suffix
  196.       "_BufName", e.g. "HELP_BufName" and "OUTPUT_BufName". (bind.c,
  197.       buffer.c, edef.h, estruct.h, eval.c, exec.c, filec.c, finderr.c,
  198.       history.c, line.c, main.c, map.c, modes.c, msgs.c, oneliner.c,
  199.       spawn.c, tags.c)
  200.  
  201.     + eliminated the CPP_xxx checks that were used to help create the
  202.       ScratchName macro. ( aclocal.m4, configure, configure.in)
  203.  
  204.     + fixed bogus cut-n-paste'd help messages for Macro buffers.  (cmdtbl)
  205.  
  206.     + rearranged utime()/utimes() code so that utimes is now favored
  207.       over utime if both are present.  we think that systems with bad
  208.       utime() implementations are the ones that have utimes(). 
  209.       (fileio.c)
  210.  
  211.     + eliminate funky structure assignment "structthing = {foo, bar}".
  212.       (ntconio.c) 
  213.  
  214.     + mention -O flag on by default, and necessity of working
  215.       VPATH support in make program.  (README.CFG)
  216.  
  217.     + xvile does not need to (and shouldn't) attempt to reopen /dev/tty
  218.       when stdin is a pipe.  the prevented xvile from starting from
  219.       anywhere but the command line.  ifdefed code on DISP_X11. (main.c)
  220.  
  221.     + change make_backup() to correctly check boolean return code from
  222.       ffexists() when deciding whether to back up a file.  (fileio.c)
  223.  
  224.     + changed rcsdiff commands to use unified diff format. (makefile.in)
  225.  
  226.     + fix bug in BUG check in mapped_c() -- was not clearing NOREMAP
  227.       bit before comparing to poundc.  this caused arrow keys (probably
  228.       all function keys not mapped by user) to appear to fail when
  229.       noremap mode was set. (map.c)
  230.  
  231.     + blankline() was incorrectly de/entabbing its region, even when it
  232.       wasn't rectangular.  (region.c)
  233.  
  234.     + implemented ":abbr" command.  ( CHANGES, README, cmdtbl,
  235.       insert.c, map.c, proto.h, vile.hlp)
  236.  
  237.     + added "show-system-mapped-keys" command to show the mappings
  238.       for the function keys.  this replaces passing numeric arg hack in
  239.       :map and :map!.  (map.c, cmdtbl)
  240.  
  241.     + added "populate" admin target to makefile.in.
  242.  
  243.     + wording changes to vile.hlp and vile.1.
  244.  
  245.     + added "show-bindings" to cmdtbl, to match claims made in
  246.       vile.hlp.
  247.  
  248.     + turned region formatting back on.  lost OPT_FORMAT in final
  249.       merge for 4.10. (estruct.h)
  250.  
  251.     + changed shorten_path to not return NULL unless arg was NULL.
  252.       this prevents possible core dump (or ugly display) when doing
  253.       "show-tagstack" after "vile -t tagname". (path.c)
  254.  
  255.     + change getfile() to return FALSE if getfile2bp() returns NULL,
  256.       and prevent a core dump.  this can happen, for instance, if the
  257.       bp->b_fname is the result of non_filename(), which can happen if
  258.       a tag lookup is done from a listbuffer, and a subsequent tag-pop
  259.       command is done which tries to return there.  (file.c)
  260.  
  261.     + change tags() to push the buffername rather than the filename
  262.       if we're tag'ging from an internal buffer.  this improves our
  263.       chances of getting back to it.  (if it's gone from the screen,
  264.       you still won't be able to get back)  (tags.c)
  265.  
  266. (kev)
  267.     + x11.c (x_setfont): Call XSetFont() for all of the newly added
  268.       GC's.
  269.  
  270.     + x11.c (display_cursor): Draw the little rectangle with the cursor
  271.       color instead of the normal text color when the window loses focus.
  272.  
  273.     + proto.h (x_resize): Declared.
  274.  
  275.     + eval.c (SetVarValue): Call x_resize() for EVPAGELEN and EVCURWIDTH.
  276.  
  277.     + x11.c (x_resize): New function.  Call it from x_configure_window().
  278.  
  279.     + vile.hlp: Documented new color cursor and modeline capabilities.
  280.  
  281.     + estruct.h (VACURS, VAMLFOC, VAML): New attributes.
  282.  
  283.     + display.c (modeline): Set VAMLFOC and VAML attributes as
  284.       appropriate.
  285.  
  286.     + x11.c (x_preparse_args, flush_line, struct _text_win): Added new
  287.       code for changing the color of the cursor as well as the
  288.       modelines.
  289.  
  290.     + x11.c (update_scrollbar_sizes): Make grips the same color as the
  291.       background of a modeline which does not have focus.  It's too
  292.       much work to make the grip color always match the color of the
  293.       modeline.
  294.  
  295.     + estruct.h (OPT_FORMAT): Added back in after being lost in
  296.         the shuffle.  Also checked the other "OPT_" features occuring
  297.         in cmdtbl to make sure that no others were also lost in the
  298.         shuffle.
  299.  
  300.  
  301. (tom)
  302.     + corrected a null-pointer reference in 'getfile()' (file.c).
  303.  
  304.     + modified 'pathcat()' to (on VMS) ensure that the result is a valid
  305.       pathname (path.c).
  306.  
  307.     + adjusted autoconf tests for cpp substitutions (aclocal.m4, estruct.h).
  308.       [but that stuff's gone.  i've preserved these changes on an RCS
  309.       branch (cpp_stuff) in case we need it.  -pgf ]
  310.  
  311.     + supplied missing DISP_VMSVT setting (estruct.h).
  312.  
  313.     + added FL_EXECABLE, FL_WRITEABLE, FL_READABLE flags to 'flook()' call
  314.       to use in 'access()' call (estruct.h, bind.c, eval.c, exec.c, filec.c,
  315.       fileio.c, main.c, tags.c, version.c).
  316.  
  317. Changes for vile 4.10 (released Mon Dec 05, 1994)
  318. (pgf)
  319.     + changed keystroke8() and keystroke_raw8() to loop and
  320.       beep until a simple 8-bit char is typed.  no SPEC prefixes
  321.       allowed. (input.c)
  322.  
  323.     + tuned kev's changes to mapped_c().  new routine called
  324.       mapped_keystroke_raw() which calls mapped_c in such a
  325.       way that function keys will expand to #c, but no further.
  326.       used when getting a :map lhs from the user. (map.c, input.c,
  327.       proto.h)
  328.  
  329.     + fix lint warnings from "questionable" pointer practices,
  330.       rationalized names of routines called by liststuff() (now all
  331.       makeXXXlist()).  (bind.c, buffer.c, eval.c, line.c, map.c,
  332.       modes.c, proto.h, random.c, region.c, tags.c)
  333.       
  334.     + removed no-doubt obsolete ifdefed "overlay" statements (window.c,
  335.       region.c)
  336.  
  337.     + lint: removed unused assignment in desfunc().  (bind.c)
  338.  
  339.     + change the temp storage of unmatched chars in maplookup()
  340.       from char to int, to prevent loss and subsequent extension
  341.       of sign information. (map.c)
  342.  
  343.     + added short on-line help for all commands.  ifdefed on
  344.       OPT_ONLINEHELP.  shows up in describe-bindings and apropos
  345.       listings.  adds 13.5K. (bind.c, cmdtbl, mktbls.c, estruct.h)
  346.  
  347.     + added "list-motions" and "list-operators" commands, which show
  348.       their respective subsets of the commands. (bind.c, proto.h,
  349.       vile.hlp)
  350.  
  351.     + added "describe-function" command.  added "appendit" argument
  352.       to liststuff, to let the contents of popups (like Binding List)
  353.       be grown incrementally.  the "describe-key" now describes the
  354.       function the key is bound to as well.  (bind.c, buffer.c, cmdtbl,
  355.       eval.c, line.c, map.c, modes.c, proto.h, random.c, tags.c,
  356.       vile.hlp)
  357.  
  358. (kev)
  359.     + map.c (mapped_c): Minor changes to make quoted spec characters
  360.       generate pound sign sequences.  This is important for interactive
  361.       mapping of function keys.  Example: Try ":map <F1> h" prior to
  362.       this fix and afterwards.  Also try "a^V<F1>".  <F1> denotes
  363.       a press of the F1 function key.
  364.  
  365.     + x11.c (kqdel): Took out call to char2int() which I had put in
  366.       a few days earlier..
  367.  
  368.       (x_key_press): Don't convert function and arrow keys to a
  369.       sequence of bytes via kcod2escape_seq().  Leave them in the SPEC
  370.       form instead.  This was causing # sequences to be displayed
  371.       in insert mode and it also broke command line history (as well
  372.       as a bunch of other stuff, I suspect).
  373.  
  374.     + vile.hlp: Fixed a few typos.
  375.  
  376.     + map.c, x11.c (maplookup, kqdel): Judiciously call char2int() in
  377.       order to strip off sign extension.  These fixes are in response
  378.       to the use of the META key being broken.
  379.  
  380. (tom)
  381.     + added autoconf-test for getpgrp().  (aclocal.m4, configure.in)
  382.  
  383.      + reduced timeout to 30 seconds on MSDOS to avoid overflow (main.c)
  384.  
  385.     + various nits/fixes for VMS, CLIX, IRIX, TurboC (descrip.mms,
  386.       estruct.h eval.c, glob.c, ibmpc.c, makefile.tbc, region.c, termio.c,
  387.       vile.hlp, x11.c)
  388.  
  389. Changes for vile 4.9 (released Tue Nov 29, 1994)
  390. (pgf)
  391.     + changed all OS #defines to SYS_xxx.  like SYS_UNIX, SYS_MSDOS,
  392.       etc.  changed all compiler #defines to CC_xxx.  like CC_LATTICE,
  393.       CC_TURBO, etc.  changed all screen #defines to DISP_xxx.  like
  394.       DISP_TERMCAP, DISP_X11, etc.  changed all feature #defines to
  395.       OPT_xxx.  i think you see the pattern.  eliminated some ifdefs
  396.       around things that we've never turned off, or that can't be
  397.       turned off without severely breaking vi compatibility.  got rid
  398.       of some old "ifdef NEVER" kind of stuff.  (this affected most
  399.       source files)
  400.  
  401.     + catnap() now checks for tty input at least periodically on all
  402.       platforms.  the nap is broken into .1 second increments, and
  403.       typahead() is called in between each one. (random.c)
  404.  
  405.     + new mode, "maplonger", which controls whether vile favors the
  406.       longer or shorter of two nested mappings.  (modetbl, map.c)
  407.  
  408.     + new mode, "remapfirst", which controls whether vile will remap the
  409.       first character of a mapping.  vi doesn't, vim does.  (modetbl,
  410.       map.c)
  411.  
  412.     + rationalized (?) and documented (!) the various levels of character
  413.       input routine.  see top of input.c.
  414.  
  415.     + renamed typahead() to tttypahead() to match ttclose() et al, and
  416.       added typahead entry to the TERM struct.  (termio.c and others)
  417.  
  418.     + all former callers of tgetc() now call one of the keystroke()
  419.       variants instead.  (many files)
  420.  
  421.     + all former callers of tungetc() now call unkeystroke() instead.
  422.       (many files)
  423.  
  424.     + when creating backup files, ifdef check of matching dev and inode
  425.       on UNIX only.  it doesn't work under watcom (DOS), and i don't
  426.       know where else it will.  (fileio.c)
  427.  
  428.     + show offending errno when it's out of bounds in mlwarn(). (display.c)
  429.  
  430.     + added itbuff.c/o/obj to the rest of the makefiles ( descrip.mms,
  431.       makefile.djg, makefile.in, makefile.tbc, makefile.wat,
  432.       makefile.wnt, vms_link.opt, vmsbuild.com)
  433.  
  434.     + removed mapchars.[ch] from distribution, and removed references
  435.       to them.  (makefile.in, cmdtbl, main.c)
  436.  
  437.     + ifdefed out some more unused code.  also made multimotion()
  438.       yank the selection as a side-effect, to be more like ^A-s.
  439.       (select.c)
  440.  
  441.     + ran lint on Solaris (i think.  maybe it was SunOS).  (display.c,
  442.       fileio.c, input.c, itbuff.c, map.c, select.c, tbuff.c, tcap.c,
  443.       undo.c)
  444.  
  445.     + cloned and modified tbuff.c to create itbuff.c.  the routines
  446.       there work on "integer tbuffs".  use these routines, and
  447.       the corresponding ITBUFF data structure everywhere user keyboard
  448.       input is accumulated.  this allows us to store wide keycodes,
  449.       and greatly simplifies keystroke playback and :map implementation.
  450.       (tbuff.c, itbuff.c, makefile, input.c, insert.c, line.c, map.c,
  451.       estruct.h, edef.h, proto.h)
  452.  
  453.     + added new routines to tbuff.c/itbuff.c:  [i]tb_unnext() to undo
  454.       tb_next, itb_seek() to change the itb_last pointer, itb_delete()
  455.       to remove N elements from middle of an ITBUFF, itb_insert() to
  456.       insert a new element in the middle.
  457.  
  458.     + changed :map implementation to support "user" and "system"
  459.       timeouts, and to support controllable remapping via "set
  460.       [no]remap" and vim-style ":noremap" commands.  (map.c, modetbl,
  461.       main.c, vile.hlp, proto.h)
  462.  
  463.     + moved xterm-mouse functionality to tcap.c.  it's now driven
  464.       by a system :map of ESC [ M, which is bound (indirectly) to the
  465.       old xterm_button() routine. (input.c, tcap.c, cmdtbl, proto.h)
  466.  
  467.     + promoted '#' to be a regular peer of the ^X and ^A prefixes, and
  468.       defined a set of "standard" #-key bindings, which are in turn
  469.       available from system function keys (see vile.hlp).  screen
  470.       driver modules may use the new header "nefkeys.h" to access this
  471.       standard list.  i may have lost some of the linux-specific
  472.       bindings from cmdtbl -- should they be reintroduced, they
  473.       should go in tcap.c, as an ifdef'ed addtosysmap() call.  (bind.c,
  474.       input.c, vile.hlp, main.c, cmdtbl, mktbls.c)
  475.       
  476.     + collapsed kcod2pstr() to rely on kcod2escape_seq().  (bind.c,
  477.       input.c, proto.h)
  478.  
  479.     + changed names of "dummy" binding functions: cntl_a_func(), 
  480.       cntl_x_func(), unarg_func(), esc_func(), poundc_func(). (main.c,
  481.       input.c, proto.h)
  482.  
  483.     + added footnotes to the ":map" listing to denote whether mappings
  484.       are remappable or not.  system maps (i.e. function keys) may
  485.       be viewed with "1:map". (map.c)
  486.  
  487.     + moved system-specific function key mappings to tcap.c and ibmpc.c.
  488.       removed them from cmdtbl.  use standard defines for the SPEC
  489.       bindings. (ibmpc.c, tcap.c, x11.c, x11simp.c, cmdtbl)
  490.  
  491.     + the lhs of map sequences may now contain null characters.  the UI
  492.       still doesn't support entering them.  necessary since ibmpc
  493.       function keys start with a 0 character.  (map.c, ibmpc.c,
  494.       proto.h)
  495.  
  496.     + changed alignment of settings in the [Settings] buffer so that
  497.       the characters by which the names are sorted are vertically
  498.       aligned. (modes.c)
  499.  
  500.     + changed a bunch of whitespace in modetbl for better alignment.
  501.  
  502.     + don't bother attempting to catnap for 0 time.  (random.c)
  503.  
  504.     + added '#' to the name in the short history list that
  505.       corresponds to previous buffer. (noautobuffer mode only) (buffer.c)
  506.  
  507.     + improved description of buffer lists wrt autobuffer mode.
  508.  
  509.     + attempted to rationalize some of the informational commands and
  510.       added text to help file.  (cmdtbl, vile.hlp)
  511.  
  512.         new command names:        synonymous with:
  513.         show-bindings        describe-bindings
  514.         show-help        help
  515.         show-buffers        list-buffers
  516.         show-mapped-chars    map
  517.         show-mapped!-chars    map!
  518.         show-tagstack        tagstack
  519.  
  520.         changed command names:    old name was:
  521.            show-terminal-chars      show-terminal    
  522.            list-variables           list-vars        
  523.            show-variables           show-vars        
  524.  
  525.     + prevent shrinkwrap() from claiming more than 3/4 of a windows
  526.       rows when popping up a new window.  (window.c)
  527.  
  528. (tom)
  529.     + corrected missing b_last_used values for invisible buffers which
  530.       caused buffers to be delinked when toggling autobuffer mode
  531.       (buffer.c).
  532.  
  533.     + modified logic of 'modeline_modes()' to make it compile on vms
  534.       (display.c).
  535.  
  536.     + modified auto-config for 'utime()' for solaris, vms compiles
  537.       (estruct.h, aclocal.m4, configure.in)
  538.  
  539.     + corrected ifdef for "backup-style" mode (main.c).
  540.  
  541.     + modified 'find_user()' to use $HOME if 'getpwuid()' fails (path.c).
  542.  
  543.     + improved #/% toggle so that it doesn't toggle into invisible buffers
  544.       (buffer.c).
  545.  
  546.     + corrected some ifdef combinations (cmdtbl, file.c, tcap.c, wordmov.c)
  547.  
  548.     + modified ifdef for incremental searches to use symbol OPT_ISRCH
  549.       (cmdtbl, isearch.c, proto.h).
  550.  
  551.     + modified ifdef for find-error to use symbol OPT_FINDERR
  552.       (cmdtbl, file.c, finderr.c, main.c, spawn.c, proto.h).
  553.  
  554.     + modified ifdef for advanced-editing features to use symbol OPT_AEDIT
  555.       (cmdtbl, opers.c, random.c, region.c, proto.h).
  556.  
  557.     + corrected error in globbing that caused incorrect list to be built
  558.       for expressions such as "*/foo" (glob.c).
  559.  
  560.     + modified logic of 'flook()' to allow search of $PATH only, so that
  561.       the lookup in version.c can find the correct executable, i.e., not
  562.       necessarily the copy of vile in the current directory (bind.c,
  563.       fileio.c, version.c).
  564.  
  565.     + modified logic of 'filefind()', which implements ":e" command to load
  566.       only the first buffer matched in a wildcard, and to make all matches
  567.       treated as command-arguments so that ":n" applies to them (buffer.c,
  568.       file.c, main.c, random.c)
  569.  
  570.     + corrected 'namebuffer()', prohibiting blank buffer-names (buffer.c).
  571.  
  572.     + added function 'mktrimmed()' to support correction to 'namebuffer()',
  573.       as well as new macro function "&trim" (eval.c).
  574.  
  575.     + modified "error-buffer" command to accept filenames as well as buffer
  576.       names (buffer.c, finderr.c).
  577.  
  578.     + animated [Tag Stack] buffer (tags.c).
  579.  
  580.     + modified 'gettagsfile()' to check modification-times of tags files,
  581.       and re-read as necessary (tags.c).
  582.  
  583.     + corrected a conflict between foreground/background colors (tcap.c).
  584.  
  585.     + fixed some errors shown by Purify (display.c, regexp.c, window.c).
  586.  
  587. (kev)
  588.     + insert.c (nextindent): Get the indent of the first character on
  589.       the line after advancing a word when there was no first
  590.       character.  This fixes a core dump which may be reproduced as
  591.       follows: Get into vile, making sure that autoindent is set.  Put
  592.       about five or so blank lines in the buffer.  Now go to the top of
  593.       the file and type 'cc' (change line).  This will cause a core
  594.       dump.  A core dump will also be produced if there are a number of
  595.       blank lines and then a non blank line.  The key here is that the
  596.       indentation level (indicated by fc) was determined to be -1 and
  597.       was not reset to a kosher value for the code below.
  598.  
  599.     + display.c (offs2col): Declare local variable length as an int
  600.       instead of as SIZE_T.  (Remember that SIZE_T is unsigned on a lot
  601.       of machines.) Also adjusted test which is used for determining
  602.       which character that we're on.  This fixes a bug which (prior to
  603.       this fix) may be reproduced as follows: Get into vile and enter
  604.       the following: "ahere is a blank line<ESC>".  Select the word
  605.       "is".  Type "u" for undo.  Note that the selection highlighting
  606.       remains even though the line is blank.  Then type "o" to open up
  607.       a new line.  It is at this point that a core dump occurs.
  608.  
  609.       Note that this fix does nothing to solve the problem of the
  610.       highlighting sticking around.  It just makes that code more
  611.       robust so that it doesn't core dump when the line length is
  612.       less than zero (which can happen for empty lines).
  613.  
  614.     + undo.c (repointstuff): Always repoint marks.  I've #if'd out the
  615.       lines which used to check to see whether or not the suggested new
  616.       pointer was valid or not.  Paul should check this stuff over and
  617.       make sure that it's ok.  In any event, it seems to (with one
  618.       exception) fix the other half of the problem described above.  It
  619.       also seems to make the behavior of marks wrt undo work more like
  620.       real vi.  Don't know whether this is an argument for or against,
  621.       just an observation...
  622.  
  623.     + aclocal.m4: Added missing dnl to last line of file.
  624.  
  625.     + buffer.c (sortlistbuffers): Don't forget to keep the unused
  626.       buffers when rebuilding the buffer list.
  627.  
  628.  
  629. Changes for vile 4.8 (released Mon Oct 31, 1994)
  630. (pgf)
  631.     + changed name of SIZEOF macro to TABLESIZE, to avoid conflicts
  632.       with X11 headers.  (buffer.c display.c estruct.h fences.c
  633.       ibmpc.c line.c mktbls.c modes.c tcap.c version.c vmspipe.c x11.c
  634.       x11simp.c)
  635.  
  636.     + incorporated patches from Johan Rosman for simple file locking
  637.       protocol.  it's not rigorous, which he freely admits, but it
  638.       solves their problem, so i'm including the code, though turning
  639.       it off by default.  ( buffer.c display.c estruct.h file.c main.c
  640.       modes.c proto.h modetbl makefile.in and new file lckfiles.c)
  641.  
  642.     + fixed code in filename() which allowed one to rename a file
  643.       to the null string by backspacing out of the "Name:" prompt.
  644.       (file.c)
  645.  
  646.     + added mask with XtIMXEvent to all calls to XtAppPending(), to
  647.       prevent spurious returns due to non-events (timers). (x11.c)
  648.  
  649.     + massaged the distribution targets in the makefile, so i
  650.       can more easily produce a tar.gz file, and not make
  651.       people unpack the shar anymore. (makefile.in)
  652.  
  653.     + changed all places where we check a char against abortc
  654.       to check against intrc, and check interrupted() as well.
  655.       this lets us not translate intrc to abortc in tgetc(),
  656.       which fixes some bugs where interrupts are treated like
  657.       escapes.  this only showed up when ESC was being used for
  658.       something other than aborting -- like completion.
  659.       (csrch.c estruct.h eval.c exec.c history.c input.c insert.c
  660.       isearch.c select.c spawn.c window.c)
  661.  
  662.     + turned off filter() for UNIX and DOS, since the filterregion()
  663.       code is superior and better tested. (spawn.c)
  664.  
  665.     + added support in exec_named_command() for detecting a trailing '!'
  666.       on a command name, and if the BANG flag is set for its function
  667.       entry, passing a special argument so the function can know it was
  668.       invoked with a "xxx!" form.  (estruct.h, exec.c, cmdtbl)
  669.  
  670.     + implemented support for ":w!" to overrided failed writes of the
  671.       backup file.  detect the special argument (see above) in
  672.       filesave() and filewrite(), and pass "forced" flag down through
  673.       writeout(), writereg(), and ffwopen(). (fileio.c, file.c, proto.h,
  674.       vile.hlp)
  675.  
  676.     + created mode to control file backups, and implemented ~-style
  677.       backups in addition to the existing .bak style.  new mode is
  678.       "backup-style", and takes values "off", ".bak", and "tilde". 
  679.       code is ifdefed on OPT_FILEBACK, and is turned off for VMS,
  680.       since i don't know what's appropriate.  also, left (minimal)
  681.       hooks to someday implement emacs-style numbered backups.
  682.       (estruct.h fileio.c main.c modes.c modetbl vile.hlp)
  683.       
  684.     + added link(), utime(), utimes() to the list of system
  685.       calls to check for, and for whose declarations to check. 
  686.       (configure configure.in proto.h)
  687.  
  688.     + implemented 'q' command, for doing "quoted motion", for lack
  689.       of a better mnemonic.  (cmdtbl display.c proto.h region.c
  690.       select.c vile.hlp wordmov.c x11.c)
  691.  
  692.     + fixed bad "set" line in vile.hlp, in the my_cd_action example.
  693.       It said "set $foo=$bar" syntax; which can be either "set foo=bar"
  694.       or "setv $foo=$bar".
  695.  
  696.     + changed dos-mode behavior yet again.  with global dosmode set, we
  697.       were stripping carriage returns at the same time we were deciding
  698.       whether a buffer was doslike or not.  this led to the deletion of
  699.       CR's even if we decided the file was unixlike.  the correct
  700.       behavior, which unfortunately involves another pass through the
  701.       buffer, is to figure it out (i.e.  count lines ending in CR), and
  702.       then, only if it _is_ doslike (more CR lines than lines without)
  703.       then go through and strip them.  i discovered the bug when i had a
  704.       command file containing a few :map commands that ended in ^M.  the
  705.       ^M's were being silently discarded.  (file.c)
  706.  
  707.     + added double-quote as commenting character in the macro language.
  708.       for vi compatibility, this should act as a comment everywhere
  709.       except shell commands and map commands, but we only currently
  710.       honor it at the beginning of line.  (exec.c)
  711.  
  712.     + fix behavior of commands which behave differently when not
  713.       given arguments, when used in an executed file.  :map and :f
  714.       were both ignoring their arguments when sourced in a file
  715.       interactively. fix was in end_named_cmd() and more_named_cmd().
  716.       (exec.c)
  717.  
  718.     + new routine, macliteralarg(), which returns the rest of a command
  719.       line literally as a single token.  used for the <rhs> of :map.
  720.       (exec.c)
  721.  
  722.     + call new macliteralarg() from map_common() when getting the <rhs>,
  723.       if cline is true.  (map.c)
  724.  
  725.     + removed "if (did_tungetc()) tgetc()" from readpattern() -- it
  726.       was obsolete, and only screwed things up when executing a :map.
  727.       (search.c)
  728.  
  729.     + always do full update() in mlyesno() and mlquickask(), since
  730.       they may be invoked from a command file, and we want the
  731.       display as current as possible. (input.c)
  732.  
  733.     + use mlforce() rather than mlprompt() to force appearance of
  734.       the questions in mlyesno() and mlquickask(), in case discmd is
  735.       false. (input.c)
  736.  
  737.     + line length reformatting in oneliner.c
  738.  
  739. (kev)
  740.     + aclocal.m4, configure.in (VC_SYS_ERRLIST): Check for presence of
  741.       sys_errlist[].
  742.  
  743.     + estruct.h (sys_errlist): Only declare if HAVE_EXTERN_SYS_ERRLIST
  744.       is not defined.
  745.  
  746.     + manpage.rc: Set noview prior to calling
  747.       attribute-cntl_a-sequences-til.  Set view afterwards.
  748.  
  749.     + display.c (vtalloc): Allocate space for rows in vscreen[] and
  750.       pscreen[] when the height changes.  I was getting core dumps
  751.       in xvile when resizing vertically.
  752.  
  753.     + makefile.in (manfilt): New target which should not be necessary,
  754.       but is due to the lameness of certain `make' programs.
  755.  
  756.     + termio.c (ttopen): ifdef'd IUCLC which doesn't exist on all
  757.       systems.
  758.  
  759.     + msgs.c (popup_msgs, msg_putc): Don't save/restore DOT unless
  760.       curwp has been initialized.  Lack of this check was responsible
  761.       for core dumps when executing "xvile @~/.vilerc".
  762.  
  763.     + buglist: Deleted items which have been satisfactorily dealt with.
  764.  
  765.     + display.c (PutMode, vtprintf): Deleted these functions.
  766.  
  767.       (modeline): Rewritten to use a format string for outputting the
  768.       mode lines.
  769.  
  770.       (mlfs_prefix, mlfs_suffix, mlfs_skipfix): New modeline() helper
  771.       functions.
  772.  
  773.     + modetbl (ModeLine-Format, MLFORMAT): New string mode.
  774.  
  775.     + main.c (global_val_init): Initialize format string for mode lines.
  776.  
  777.     + modes.c (adjustmode): Adjusted "#if OPT_WORKING ... #endif" pairs
  778.       for the case where OPT_WORKING is disabled.
  779.  
  780.     + x11.c (x_open): Initialize term.t_mcol and term.t_mrow.
  781.  
  782.     + eval.c (SetVarValue): Call mayneedundo() for EVCURCHAR and EVLINE
  783.       ($char and $line) variables.
  784.  
  785.     + x11.c (x_key_press): Call char2int() when putting characters
  786.       in the queue as integers in order to prevent sign extension.
  787.  
  788.     + map.c (maplookup): Call char2int() when returning first unmatched
  789.       character in order to prevent sign extension.
  790.  
  791.     + vile.hlp: Removed vile-manfilt compilation / installation
  792.       instructions.  vile-manfilt is now built and installed as part
  793.       of the default installation procedure.
  794.  
  795.       Also removed note concerning selections; this note said that the
  796.       selected area includes all highlighted chars except for special
  797.       case in which the last highlighted character is the first
  798.       character on a line.  This is no longer true or necessary since
  799.       we now permit selections to select the end-of-line character.
  800.  
  801.       Added documentation concerning scrollbar and selection
  802.       subresources.  Also added some sample .Xdefaults entries.
  803.  
  804.       Reformatted paragraphs which had lines too long for an eighty
  805.       column display.
  806.  
  807.     + map.c (struct maprec): Documentation.
  808.  
  809. (tom)
  810.     + added OPT_VMS_PATH to estruct.h, used this to ifdef the vms pathname
  811.       parsing (and also some test-code) on UNIX for off-line testing of the
  812.       VAX code (estruct.h, fakevms.c, file.c, filec.c, glob.c, input.c,
  813.       main.c, path.c, proto.h, vms2unix.c).  Now, VMS name-completion is
  814.       done internally using UNIX-style pathnames.
  815.  
  816.     + other mods to support name completion on VMS, and off-line testing
  817.       (bind.c, file.c, filec.c, glob.c, path.c).
  818.  
  819.     + mods to msgs.c to avoid struct init in declaration for SunOS K&R
  820.       compiler.
  821.  
  822.     + added files fakevms.c, fakevms.h and vmsbuild.com
  823.  
  824.     + added OPT_MSDOS_PATH symbol to simplify related ifdefs for parsing of
  825.       pathnames for MSDOS/WIN31/NT/OS2 (estruct.h, file.c, filec.c, glob.c,
  826.       main.c, path.c, proto.h).
  827.  
  828.     + corrections to VMS version of 'shorten_path()' (path.c)
  829.  
  830.     + some lint (bind.c, display.c, eval.c, input.c, insert.c, map.c,
  831.       region.c, select.c)
  832.  
  833.     + fixes for SMALLER-ifdef (display.c, insert.c, map.c, window.c)
  834.  
  835.     + added ifdef-symbol OPT_MLFORMAT for modeline-format (estruct.h,
  836.       display.c, main.c, modetbl)
  837.  
  838.     + corrected handling of empty-.vilerc file: was hanging, not formatting
  839.       modeline correctly (display.c).
  840.  
  841.     + added ifdef-symbol OPT_ENUM_MODES for the fixed-string modes
  842.       (estruct.h, bind.c, main.c, modetbl, modes.c)
  843.  
  844.     + added logic to allow termcap-driver on Linux to display colors
  845.       (tcap.c, estruct.h)
  846.  
  847.     + renamed REBIND to OPT_REBIND, modified logic for kbindtbl[] so that
  848.       an arbitrary number of key bindings can be stored.
  849.  
  850.     + modified the TTrev() logic in the termcap driver to display video
  851.       attributes (i.e., bold, underline, reverse) when OPT_VIDEO_ATTRS
  852.       is set (tcap.c, display.c, estruct.h).
  853.  
  854.     + modified flags of attribute commands so that they accept a range
  855.       as well as a repeat-count (cmdtbl).
  856.  
  857.     + added binding ^A-N to allow reset of attributes on a region (cmdtbl,
  858.       select.c).
  859.  
  860.     + corrected video-attribute highlighting for IBMPC driver (ibmpc.c).
  861.  
  862.     + corrected ifdef'ing for 'kbindtbl[]' (mktbls.c).
  863.  
  864.     + modified error-test in 'ffropen()' to avoid noisy error when vile
  865.       cannot find .vilerc in MSDOS filesystem from Linux (fileio.c).
  866.  
  867. Changes for vile 4.7 (unreleased Tue Sep 27, 1994)
  868. (pgf)
  869.     + makefile.in: removed * chars from install complete message to
  870.       keep them from being shell-expanded, and make sure rw and list
  871.       use the right makefile (i.e.  makefile.in) since "makefile" may
  872.       not be built yet.
  873.  
  874.     + off-by-one on strcpy() in bind.c (otto lind)
  875.  
  876.     + added code to detect and honor new-style NeXT tags file format
  877.       in tags.c. (otto lind)
  878.  
  879.     + rationalized setting of dos mode (too bad i didn't call this
  880.       "crlf" mode instead) so that for all internally generated, or non-
  881.       existent buffers, dos mode is set based on the OS's line-style.
  882.       otherwise, for existing files, empty or not, the lines vote on
  883.       the style for the buffer. (file.c, main.c, random.c, vile.hlp)
  884.  
  885.     + added Home and End key support to x11.c, per user contrib. (x11.c)
  886.  
  887.     + added line-percentage indication to ruler mode display, per user
  888.       contrib. (display.c)
  889.  
  890.     + new command, "beep", implemented in function userbeep(), which
  891.       lets the user beep when they want to.  this intentionally does
  892.       not call kbd_alarm, but rather TTbeep directly.  (random.c, cmdtbl,
  893.       proto.h)
  894.  
  895.     + new mode, "working", which enables/disables the working... messages.
  896.       i think i've got it set up so the signals themselves stop if
  897.       noworking is set.  (modes.c, display.c, main.c, vile.hlp)
  898.  
  899.     + added shrinkwrap support for the [Help] window. (bind.c)
  900.  
  901.     + fix core dump from giving arg of 1 to prevwind().  (window.c)
  902.  
  903.     + create l_strtol, which also accepts 'c' constants.  use it
  904.       in eval.c whenever parsing user input to numeric functions. (eval.c,
  905.       proto.h)
  906.  
  907.     + prevent core dump if ~endm given when not in macro definition
  908.       (exec.c)
  909.  
  910.     + change "BOTTOM" and "TOP" in "Search reached XXX without matching..."
  911.       to "bottom" and "top". (search.c)
  912.  
  913.     + added "[Search wrapped]" message to /, ?, n, N commands.
  914.       (search.c, oneliner.c, isearch.c, proto.h)
  915.  
  916.     + fixes to swbuffer() to prevent coredump when errors encounted
  917.       when running the bufhook routine. (buffer.c)
  918.  
  919.     + fix to dobuf() to prevent handling of a ~endm when execlevel is
  920.       non-zero.  if this is true, then the store-macro/store-procedure
  921.       won't have happened (due to the early return in docmd()), and it'll
  922.       look like an unmatched ~endm. (exec.c)
  923.  
  924.     + in liststuff(), don't switch to the list unless it's its first
  925.       popup.  actually, switch (in popupbuff) and then switch back.
  926.       this guarantees that the last call to swbuffer is for curbp.
  927.       (buffer.c)  [ it would be better if popupbuff() didn't need
  928.       to do the swbuffer at all ]
  929.  
  930.     + renamed CMASK to CHARTYPE to avoid name conflicts.
  931.       (edef.h estruct.h input.c line.c proto.h eval.c main.c)
  932.  
  933.     + the screen is now resized dynamically, instead of having a
  934.       fixed maximum.  (display.c, x11.c)
  935.  
  936.     + changed term.t_nrow and term.t_mrow to hold the actual number
  937.       of screen rows, rather than the highest index.  this makes it
  938.       a) symmetric with t_[nm]col and b) a whole lot easier to
  939.       remember how it works.  also introduced routine bottomleft() for
  940.       moving the cursor there.  (ansi.c, display,c eval.c ibmpc.c
  941.       isearch.c main.c spawn.c st520.c tcap.c termio.c vmsvt.c
  942.       win31drv.c window.c x11.c x11simp.c)
  943.  
  944.     + some fixes for DEBUGM ifdefs (eval.c exec.c)
  945.  
  946.     + gnu warning cleanup in vmalloc.c
  947.  
  948.     + main.c: changed initial value of popup-choices to "delayed", to
  949.       match readline behavior
  950.  
  951.     + convert ^M character in replacement pattern to a newline, for
  952.       vi compatibility.  (oneliner.c)
  953.  
  954. (kev)
  955.     + display.c (updupd): Don't permit typahead to be called for X11
  956.       from this function.  This caused some core dumps since x_typahead()
  957.       is basically another event loop.  When a timer event was set
  958.       (to blink the cursor), core dumps would occur due to the display
  959.       structures not being in an updated state.
  960.  
  961.     + x11.c (x_getc, x_typahead): The recent addition of the
  962.       beginDisplay/endofDisplay pairs seems to have caused a plethora
  963.       of undesirable messages from imworking().  I've removed the
  964.       beginDisplay/endofDisplay pairs which I had added to both of
  965.       these functions.  x_getc() had already been protected from
  966.       imworking by the doing_kbd_read flag (set in tgetc() in input.c). 
  967.       But x_typahead() needs the same protection.  I've added some code
  968.       which sets the doing_kbd_read flag and restores its old value
  969.       prior to returning from x_typahead().
  970.       
  971.     + random.c (catnap): Ifdef'd for X11 to call x_typahead when called
  972.       with flag which indicates that the input queue should be watched
  973.       for user input.  We may want to restructure this code and the code
  974.       which calls catnap() somewhat to use Paul's idea for a timed read.
  975.  
  976.     + x11.c, proto.h, termio.c (x_typahead): Now takes as a parameter the
  977.       time in milliseconds to wait for type-ahead to occur.
  978.  
  979.     + x11.c (kqpop): Return character popped from end of queue, not
  980.       beginning.
  981.  
  982.       (x_getc, x_typahead): Protect guts of function from imworking()
  983.       with beginDisplay / endofDisplay pairs.  I originally thought
  984.       that this was causing some problems in the mapping code which
  985.       seemed to be caused by the imworking interrupt.  Even though
  986.       the problem was with kqpop(), I'm leaving the beginDisplay /
  987.       endDisplay pairs in since the keyboard queue routines are
  988.       probably not reentrant.
  989.  
  990.     + random.c (catnap): Changed argument to sleep call to allow
  991.       for catnaps longer than one second.
  992.  
  993.     + termio.c (typahead): Call x_typahead instead of x_is_pasting.
  994.  
  995.     + x11.c, proto.h (x_is_pasting): Deleted.
  996.  
  997.     + x11.c, proto.h (x_typahead): New function.
  998.  
  999.     + termio.c (typahead): Modified first version of this function to
  1000.       match the second with regard to X11 code.
  1001.  
  1002.     + random.c (catnap): Block SIGALRM signals while in select().
  1003.  
  1004.     + configure.in (sigprocmask): Check for existence of this function.
  1005.  
  1006.     + random.c (catnap): Use both tv_sec and tv_usec in the HAVE_SELECT
  1007.       code.  This is necessary (on certain systems at least) in order to
  1008.       sleep for longer than one second.
  1009.  
  1010.     + input.c (tgetc): Added infinite loop detection.  Infinite loops
  1011.       can occur as a result of mapping.
  1012.  
  1013.     + map.c: Added new data structures and functions for dealing more
  1014.       fully with map and map!.  Removed the old structures and functions
  1015.       for dealing with a simple case of map.  
  1016.  
  1017.     + input.c, proto.h (tungetstr): New function.
  1018.  
  1019.     + main.c, insert.c (map_check): Removed calls to this function.
  1020.  
  1021.     + map.c, proto.h (map_check): Deleted.
  1022.  
  1023.     + map.c, proto.h, cmdtbl (map_proc): Deleted.
  1024.  
  1025.     + proto.h, map.c (relist_mappings): Deleted declaration from proto.h.
  1026.       Moved to map.c and declared static with new parameter.
  1027.  
  1028.     + input.c (kbd_reply): Added code for KBD_NOMAP.
  1029.  
  1030.     + estruct.h (KBD_NOMAP): New kbd_reply() option.
  1031.  
  1032.     + map.c (addtomaps, addtomap, maplookup): New functions for dealing
  1033.       with mapped keys and key sequences.  There is also a new data
  1034.       structure (struct maprec) and a couple of global variables for
  1035.       storing the maps.  [I discovered after I'd gotten this code
  1036.       working that Tom had written some similar looking stuff which is
  1037.       located in mapchars.h and mapchars.c.]
  1038.  
  1039.     + input.c (kbd_key): Added call to maplookup.  Made small change
  1040.       to the ANSI_SPEC stuff to avoid catnapping if we've already
  1041.       catnapped in maplookup().  My initial inclination was to
  1042.       remove the ANSI_SPEC stuff, but I've decided to leave it in
  1043.       place for a while.  I don't yet understand the workings of
  1044.       input.c well enough to muck about with it too much.
  1045.  
  1046.     + tcap.c (keyseqs): Table associating function key capability names
  1047.       (in terminfo/termcap) with the code which vile should use when
  1048.       one of these sequences is received.
  1049.  
  1050.       (tcapopen): map key sequences found in keyseqs[].
  1051.  
  1052.     + input.c (tungottenchars, tungetc, tgetc): Use a TBUFF instead of
  1053.       fixed size array for storage of ungotten characters.  tungetc()
  1054.       will now cause ungotten characters to be stacked.  Previously,
  1055.       only one keystroke (which may consist of multiple characters) could
  1056.       be ungotten.  Now, multiple keystrokes may be ungotten.
  1057.  
  1058.     + x11.c (x_key_press): Set the high bit (HIGHBIT) if one of the
  1059.       Mod1 (Meta) keys are held down.
  1060.  
  1061.     + x11.c (selgc, revselgc): New fields in struct _text_win.
  1062.       
  1063.       (x_preparse_args): Initialize selgc and revselgc.
  1064.  
  1065.       (x_setfont): Set font in selgc and revselgc.
  1066.  
  1067.       (x_scroll): Use selgc and revselgc to display selections.
  1068.  
  1069.       (display_cursor): Call flush_line() instead of calling
  1070.       XDrawImageString() directly.
  1071.  
  1072.     + select.c, display.c (VASEL): Use instead of / in addition to
  1073.       VAREV in certain places.
  1074.  
  1075.     + estruct.h (VASEL): New preprocessor constant used for indicating
  1076.       selections.
  1077.  
  1078.     + select.c (extended_region):  Fixed a bug which manifested itself
  1079.       when extending a selection with text before the selection.
  1080.  
  1081.       (operattrital): Fixed message passed into operator().
  1082.  
  1083.     + line.c (put): Rewritten somewhat to be faster for non-rectangular
  1084.       regions.  Tests on a SPARCstation IPC indicate that the new code
  1085.       is 8-16 times faster.  The old code may be reenabled by searching
  1086.       for SLOWPUT in line.c and changing this preprocessor constant from
  1087.       0 to 1.
  1088.  
  1089.     + vile.hlp (popup-choices): Changed documentation regarding this global
  1090.       value.
  1091.  
  1092.     + main.c (global_val_init): Initialize GVAL_POPUP_CHOICES to immediate.
  1093.  
  1094.     + modes.c (FSM_CHOICES, struct FSM, fsm_popup_choices, fsm_error,
  1095.       fsm_tbl, fsm_idx, is_fsm, legal_fsm, fsm_complete): New stuff for
  1096.       dealing with fixed string modes. (fsm stands for fixed string mode).
  1097.  
  1098.       (adjvalueset): Call the fsm stuff.
  1099.  
  1100.     + modetbl (POPUP_CHOICES): Made this a string mode.
  1101.  
  1102.     + input.c (kbd_reply):  Conditionally compile call to
  1103.       popdown_completions() based upon how OPT_POPUPCHOICE is defined.
  1104.  
  1105.     + bind.c (fill_partial): Unconditionally call TTflush() since it is
  1106.       needed to force the partial completion to be written out.
  1107.  
  1108.       (kbd_complete): Changed logic yet again regarding the use of
  1109.       cmplcol.  It is only used for scrolling now.  The completion
  1110.       list is automatically displayed if no progress was made in
  1111.       performing the completion.  This means that _something_ will
  1112.       happen visually when you press tab.  Either the completion will
  1113.       be wholly or partially successful, or the completion list will
  1114.       pop up.
  1115.  
  1116.     + filec.c (trailing_slash): Fixed problem (for unix systems at least)
  1117.       where we were unable to get completions off of "/".
  1118.  
  1119.     + filec.c (pathcmp): Wrote a simpler, faster, but possibly less
  1120.       functional version.  Tom should look this code over to make sure
  1121.       that I haven't broken something.  This new version seems to speed
  1122.       things up quite a bit.
  1123.  
  1124.       (makeMyList): This now takes as a parameter the name which is being
  1125.       searched for.  We exclude from the list constructed those pathnames
  1126.       which are in subdirectories below the directory in which name might
  1127.       be found.
  1128.  
  1129.       (bs_find): Took out calls which make copy of the pathname and
  1130.       lengthened it.  If everything is done right prior to calling
  1131.       bs_find, it should already be in canonical form.  I'm hoping
  1132.       that this will increase the speed somewhat.
  1133.  
  1134.       (makeString): Added length parameter in order to avoid calling
  1135.       strlen.  Fixed all callers.
  1136.  
  1137.       (makeString): Allocate an extra byte to be used as a directory
  1138.       scan indicator.
  1139.  
  1140.       (already_scanned): Use the scan indicator byte to see if directory
  1141.       has already been scanned.  This should avoid rescanning directories
  1142.       and it also fixes the problem of being unable to get completions
  1143.       for directories which have already had a subdirectory scanned.
  1144.       Scenario...    
  1145.           :set dirc
  1146.           :e /home/kev/GNU/<tab><tab>
  1147.         Backspace so that just /home/ is showing.  Press <tab><tab>.
  1148.         Type in kev/<tab><tab>.  Only completion shown is GNU/.
  1149.  
  1150.       (bs_init): Removed the flag parameter which indicates whether or
  1151.       not to clear the buffer.
  1152.  
  1153.       (bs_find): Removed the iflag parameter and fixed all callers.
  1154.  
  1155.     + proto.h (bs_find): Nuke iflag parameter in declaration.
  1156.  
  1157.       (bs_init): Removed flag parameter from declaration.
  1158.  
  1159.     + bind.c (scroll_completions): New function called from kbd_complete.
  1160.       
  1161.       (cmplcol): Changed the way in which this variable is used 
  1162.       for deciding whether to show or scroll a completion list.
  1163.  
  1164.     + window.c (newlength): Fixed the off-by-one errors which were
  1165.       causing xvile to exit with the X error "BadValue" for opcode
  1166.       X_ConfigureWindow.  What was happening was the bottom window was
  1167.       being left with size zero...this bug may be observed in ordinary
  1168.       vile (in an xterm) by starting vile, splitting the [unamed]
  1169.       window and resizing the bottom window to one line.  Then use the
  1170.       (X) window manager to resize the xterm window down in size by one
  1171.       line.  You will then observe that there are two mode lines at the
  1172.       bottom of the xterm one above the other with no buffer displayed
  1173.       for the bottom-most one.
  1174.  
  1175.     + window.c (wpopup): Don't let an error message be displayed when
  1176.       we can't split a window.  Also permit curwp to be used if it's
  1177.       the only window available.
  1178.  
  1179.     + proto.h, buffer.c (zotwp): Moved delcaration from latter to former.
  1180.       Also removed "static" from definition of zotwp in buffer.c.
  1181.      
  1182.     + input.c (kbd_reply): Call popdown_completions() to get rid of
  1183.       the [Completions] buffer.
  1184.  
  1185.     + bind.c (popdown_completions): New function for getting rid of
  1186.       the [Completions] buffer.
  1187.  
  1188.     + buffer.c (zotwp): Switch back to most recent buffer on buffer
  1189.       list after deleting windows for the selected buffer.
  1190.  
  1191.     + proto.h (shrinkwrap, popdown_completions): Declared these
  1192.       functions.
  1193.  
  1194.     + bind.c (show_completions): Call shrinkwrap() if completions buffer
  1195.       is already popped and gets larger (in order to see as many
  1196.       completions as possible).
  1197.  
  1198.     + random.c (liststuff): Only call shrinkwrap() if buffer not already
  1199.       popped up.
  1200.  
  1201.     + x11.c (x_open): Don't call setpgrp() on bsd compat systems.  Also
  1202.       added comment explaining why.
  1203.  
  1204.     + random.c (liststuff): Call shrinkwrap().
  1205.  
  1206.     + window.c (shrinkwrap): New function.
  1207.  
  1208.     + bind.c (makecmpllist): Fixed line of code which was causing
  1209.       completion list to be truncated.
  1210.  
  1211.     + display.c (imworking): Took out the #if 0 which I used to remove
  1212.       the two lines which I suspected of causing portions of the
  1213.       "working..." message to hang around afterwards.  Instead, I
  1214.       supplemented the test used to change the column to erase at.
  1215.       It now checks to see if the message line is being read.
  1216.  
  1217.     + bind.c (makecmpllist): Print completions sorted by column rather
  1218.       than by row.
  1219.  
  1220.     + bind.c (makecmpllist, show_completions): New functions.
  1221.       
  1222.       (GNU_COMPLETIONS): New feature test indicating GNU readline style
  1223.       completions.  Define this to be 0 to get the old vile behavior.
  1224.  
  1225.       (fill_partial): Don't beep when GNU_COMPLETIONS is enabled.
  1226.  
  1227.       (cmplcol): New static global variable.
  1228.  
  1229.       (kbd_unquery): Adjust cmplcol.
  1230.  
  1231.       (kbd_complete): Adjusted logic to handle GNU readline style
  1232.       completions.
  1233.  
  1234.     + configure.in (AC_PID_T): Call this macro to make sure that pid_t
  1235.       will be defined.
  1236.  
  1237.       (CFLAGS): Only use -Wall when the --with-warnings option is used.
  1238.       Otherwise, we get too many warnings due to missing extern decls.
  1239.  
  1240.     + x11.c (display_cursor, x_preparse_args): Added casts in calls to
  1241.       XtAppAddTimeOut and XtAddEventHandler which were causing warnings.
  1242.  
  1243.     + configure.in (setpgrp, setsid): Check to see if these are missing
  1244.       extern declarations.
  1245.  
  1246.     + proto.h (setpgrp, setsid): Added prototypes.
  1247.  
  1248.     + configure.in (setsid): Check for existence of this function. 
  1249.       Also added comment about VC_SETPGRP being called by VC_KILLPG.
  1250.  
  1251.     + x11.c (x_open): Call either setsid() or setpgrp() to break
  1252.       association with controlling terminal.  This will prevent signals
  1253.       from being sent back to the starting process.  I'm hoping that
  1254.       this will fix problems reported concerning xvile crashing the X
  1255.       server when control-C is pressed.  (I have never experienced this
  1256.       problem).
  1257.  
  1258.     + display.c (imworking): Removed (via #if 0) the two lines which
  1259.       I suspect are causing portions of the "working..." message to
  1260.       hang around afterwards.
  1261.  
  1262.     + estruct.h (signal_pg): Tightened up conditions by which we will
  1263.       permit getpgrp() to be called with no argument.  We still need
  1264.       to design an autoconf test for this.  The more permisive conditions
  1265.       were causing getpgrp() to be called improperly on SunOS. This
  1266.       in turn made it impossible to use Ctrl-C in xvile to interrupt
  1267.       lengthy processing.
  1268.  
  1269.     + x11.c (x_set_watch_cursor): New function called from x_working()
  1270.       and x_getc().  Also added field curs_watch to the TextWindowRec
  1271.       structure.
  1272.       
  1273.       (x_working): Ignore certain types of events which could cause
  1274.       us problem with reentrancy.  Other types of events are saved
  1275.       in a queue for later processing.
  1276.  
  1277.       (struct eventqueue, evqhead, evqtail): Declared saved event
  1278.       queue structure and variables pointing to front and rear of
  1279.       this queue.
  1280.  
  1281.       (evqempty, evqadd, evqdel): New procedures for manipulating the
  1282.       queue of events which must be processed, but not from x_working.
  1283.  
  1284.       Note!!!  Not all of our reentrancy problems are solved.  The new
  1285.       code which I wrote for saving events in a queue for later
  1286.       processing calls malloc().  If it should happen that the
  1287.       interrupt which got us into x_working() interrupted a malloc() in
  1288.       progress, the results could be disasterous if malloc() is
  1289.       non-reentrant.  So far as I know, most implementations of
  1290.       malloc() are not reentrant.  malloc() is not the only call which
  1291.       might get us into trouble.  Other library calls (particularly the
  1292.       X11 and X toolkit functions) may well invoke malloc() or some
  1293.       other non-reentrant library call.  The proper way (though not
  1294.       easy) to implement all of this is to split imworking() up into
  1295.       two parts; the signal handler and a display function.  The signal
  1296.       handler will do very little; it will examine the state of a few
  1297.       other flags (which already exist to implement the current version
  1298.       of imworking) and then set the flag which will be examined by the
  1299.       display function.  The display function is not invoked from the
  1300.       signal handler.  It is called from various points in vile at
  1301.       which it is possible to be in a lengthy process.  A good
  1302.       candidate would be to call it from interrupted() as it is already
  1303.       used for this purpose.
  1304.  
  1305.     + estruct.h (sys/time.h, time.h): Moved includes for these files
  1306.       ahead of include of sys/resource.h.  SunOS needs to have struct
  1307.       timeval declared prior to including resource.h.  I'm beginning
  1308.       to think that it might be better to nuke the include of
  1309.       sys/resource.h and nuke the AC_AIX line from configure.in.
  1310.  
  1311.     + configure.in (AC_HAVE_HEADERS): Added check for sys/resource.h,
  1312.       which appears to be necessary to include prior to sys/wait.h in
  1313.       order to keep gcc-2.6.0 from complaining on AIX.  It first appeared
  1314.       that sys/m_wait.h in order to get union wait, but I believe the
  1315.       bug to be in the "fixed" include files.
  1316.  
  1317.     + estruct.h (sys/resource.h): Include prior to wait.h.
  1318.  
  1319.     + makefile.in ($(TARGET)): Changed order of LIBS and X_EXTRA_LIBS in
  1320.       link line.  X_EXTRA_LIBS now comes after LIBS.
  1321.  
  1322.     + mktbls.c (main): Moved initialization of "section" to after the
  1323.       call to setjmp() in order to avoid gcc warning.
  1324.  
  1325.     + proto.h (fputs): Added declaration.
  1326.  
  1327.     + configure.in (Makefile): Test for the presence Makefile instead of
  1328.       makefile after calling xmkmf.  xmkmf creates Makefile, not
  1329.       makefile.  This was preventing X_CFLAGS from getting set properly.
  1330.  
  1331.       (with_warnings): Call AC_WITH to set this value.  We shouldn't
  1332.       assume that autoconf will create a configure script which will
  1333.       automatically create/set this variable.
  1334.  
  1335.       (VC_MISSING_EXTERN): Split checks into two parts, one which is
  1336.       enabled with --with-warnings (for type checking purposes), the
  1337.       other which is mandatory.  This should speed up the configuration
  1338.       process for non-developers.
  1339.  
  1340.     + display.c (CLEAR_PLINE): Make sure that attributes get cleared too.
  1341.  
  1342.     + x11.c (update_scrollbar_sizes -- NO_WIDGETS version): Created a
  1343.       separate loop for drawing the new scrollbars which occurs after
  1344.       the sizes have been changed.  Otherwise, the scrollbars don't always
  1345.       properly update due to a lower bar covering an upper bar up prior
  1346.       to being resized.
  1347.  
  1348.     + x11.c (exposed): New field in TextWindowRec.
  1349.       (x_preparse_args): Initialize cur_win->exposed.
  1350.       (x_process_event): Set cur_win->exposed to true when an Expose event
  1351.       is received.
  1352.       (x_flush): Return immediately if no Expose events have been
  1353.       received.  The reason for all of this is to prevent drawing to the
  1354.       window prior to the display server being ready for us to send the
  1355.       stuff.
  1356.       (x_touch): Make sure the cell has something in it before marking it
  1357.       as dirty.  The reason for this is that x_touch is called most of
  1358.       the time to refresh a region of the screen which is clear (set
  1359.       to the background color).   I'll handle the other cases by making
  1360.       sure that the required area is clear...
  1361.       (x_scroll): Don't call XFlush() unless visibility is partially
  1362.       obscured.
  1363.       (x_scroll): Call XClearArea() to clear area vacated by scrolling.
  1364.       Should be faster because we won't have to clear portions of each
  1365.       line individually.
  1366.       (x_setfont): Added call to XClearWindow() before calls to x_touch().
  1367.       (x_preparse_args): Use ButtonMotionMask instead of PointerMotionMask
  1368.       when focus_follows_mouse is false.  Otherwise, too many motion events
  1369.       are generated when moving the mouse through the vile window.  Folks
  1370.       who want focus_follows_mouse will just have to live with the extra
  1371.       motion events for the time being.
  1372.  
  1373.     + display.c (CLEAR_PLINE): Don't mark cells in cleared line as dirty.
  1374.  
  1375.     + select.c (pop_fake_win): fixed typo in comment.
  1376.  
  1377.     + buffer.c (update_on_chg): Call b_is_temporary() instead of
  1378.       b_is_invisible().  This matches the logic found in makebufflist().
  1379.       (makebufflist):  Call update_on_chg() macro in order to help prevent
  1380.       future inconsistencies.
  1381.  
  1382.     + window.c (set_curwp):  Added a check at the beginning of the
  1383.       function to return immediately if curwp is already set to the
  1384.       window pointer to change to.  Among other things, this will 
  1385.       avoid calling updatelistbuffers() which was responsible for
  1386.       preventing us from being able to select (via the mouse) from
  1387.       the [Buffer List] window.
  1388.  
  1389.     + x11.c (modeline_resources, selection_resources): New array
  1390.       which describes resources for modelines and selections.
  1391.       (x_preparse_args): Get subresources for the modelines and
  1392.       selections.
  1393.       (modeline_fg, modeline_bg, modeline_focus_fg, modeline_focus_bg,
  1394.       selection_fg, selection_bg): New fields in TextWindowRec.
  1395.  
  1396.     + x11.c (char_descent): New field in TextWindowRec.
  1397.       (query_font): Set char_descent field.
  1398.       (flush_line): Use char_descent for determining where to write out
  1399.       underlines.  This fixes a bug in which spurious underlines were
  1400.       left around on the screen when displaying certain fonts.
  1401.  
  1402.     + x11.c (scrollbar_resources): New array describing certain scrollbar
  1403.       resources.
  1404.       (cur_win_rec): Statically allocated TextWindowRec.  cur_win is
  1405.       also statically initialized to point at this structure.  Needed by
  1406.       scrollbar_resources in order to make the default foreground and
  1407.       background for the scrollbars be the same as the already determined
  1408.       foreground and background for the rest of the application.
  1409.       (x_preparse_args): Get scrollbar subresources and use these as
  1410.       appropriate in creating the scrollbar graphics context.
  1411.       (x_preparse_args): Make sure that background and foreground pixel
  1412.       values are different.  They can start out different in the resource
  1413.       file, but get mapped to the same values on monochrome displays.
  1414.  
  1415.     + region.c (yank_line): New code to yank the newline (if appropriate).
  1416.       Used when yanking mouse selections.
  1417.  
  1418.     + basic.c (setwmark): Don't permit dot to be set past end-of-buffer.
  1419.       (setcursor): Removed comment saying that position may be set past
  1420.       end-of-buffer.
  1421.  
  1422.     + vile.hlp: Corrected some minor typos.
  1423.  
  1424.     + display.c (hilite): Mark the vscreen row as changed when changing
  1425.       the attributes in the OPT_VIDEO_ATTRS portion of this code.
  1426.  
  1427.     + x11.c (x_preparse_args): Use 1 and 0 as the foreground and background
  1428.       pixel values in the call to XCreatePixmapFromBitmapData().  I think
  1429.       that this make sense since the depth is one.
  1430.  
  1431. (tom)
  1432.     + autoconf-macro VC_SIZE_T fixes problem with size_t on CLIX and Ultrix
  1433.       (aclocal.m4, configure.in).
  1434.  
  1435.     + added autoconf tests for poll.h, setjmp.h (configure.in)
  1436.  
  1437.     + some lint and compiler warnings/errors for SunOS, CLIX, IRIX (eval.c,
  1438.       region.c, tags.c, version.c, x11.c
  1439.  
  1440.     + make IBMPC the default driver for MSDOS (estruct.h)
  1441.  
  1442.     + supplied definition for VMS to make ScratchName work (estruct.h)
  1443.  
  1444.     + "#error" doesn't work on SunOS; changed this to "error" (estruct.h)
  1445.  
  1446.     + corrected autoconf ifdef'ing of getwd/getcwd (estruct.h)
  1447.  
  1448.     + corrected lint rule in makefile.in
  1449.  
  1450.     + removed /Debug option when compiling vile on VMS (descrip.mms).
  1451.  
  1452.     + corrected logic of 'is_vms_pathname()' to handle the case of rooted
  1453.       logicals, e.g., "dev:[foo.][bar]name" (path.c).
  1454.  
  1455.     + corrected error on VMS which left terminal in wrong state when
  1456.       closing terminal (termio.c).
  1457.  
  1458.     + corrected 'resolve_filename()'; the call to update the status line
  1459.       had gotten lost somehow (file.c).
  1460.  
  1461.     + ifdef'd 'get_modtime()' to handle VAX C's backwards treatment of the
  1462.       st_mtime/st_ctime members of stat structure (file.c).
  1463.  
  1464.     + commented-out X-Window libraries in VMS link options file
  1465.       (vms_link.opt); (these should be autoconfigured :-)
  1466.  
  1467.     + minor cleanup of directory scanning code for NT (path.c).
  1468.  
  1469.     + modified kev's GNU choices to implement the "popup-choices" mode
  1470.       (modetbl, bind.c, main.c).
  1471.  
  1472.     + modified (for UNIX) the behavior of 'filter-buffer' so that filter
  1473.       commands with pipes work (i.e., ":filter-buffer sort|uniq") (spawn.c).
  1474.  
  1475.     + changed the yank-til command to use the same limits as delete-til, so
  1476.       that "yW" will yank trailing spaces of a word (opers.c).
  1477.  
  1478.     + implemented mode "popup-msgs" with new file 'msgs.c'.  This is mainly
  1479.       useful in debugging macros; it forces a buffer [Messages] to be
  1480.       popped up when multiple messages are generated by a single command. 
  1481.       (display.c, main.c, msgs.c, estruct.h, modetbl, also makefile.* and
  1482.       vms_link.opt).
  1483.  
  1484.     + added mode 'errorbells' to control whether vile beeps (or flashes) at
  1485.       all.  This relies on intercepting the TTbeep calls, which are all
  1486.       done within 'kbd_alarm()' (mostly via 'mlwarn()') now (bind.c,
  1487.       display.c, exec.c, fences.c, input.c, isearch.c, main.c, modes.c, opers.c,
  1488.       search.c, undo.c, window.c).
  1489.  
  1490. Changes for vile 4.6 (unreleased Tue July 12, 1994)
  1491. (pgf)
  1492.     + changed authorship in README, added credits in vile.hlp
  1493.  
  1494.     + applied further OS/2 patches from Charles Moschel
  1495.  
  1496.     + applied Windows/NT patches from Joe Greer.  don't get excited.
  1497.       it's just console support.  :-)
  1498.  
  1499.     + added admin targets to makefile.in.  these are all (?) useful
  1500.       directly, with "make -f makefile.in ..." since they don't depend
  1501.       on any of the config variables.
  1502.  
  1503.     + minor wording changes to README.CONFIG and INSTALL.
  1504.  
  1505.         + eliminated global variable "slash", renamed macro "slashc()" to
  1506.       "is_slashc()", use new define SLASHC in place of "slash".
  1507.  
  1508.     + did a lot of hand merging of NT and WIN31 ifdefs (since they
  1509.       both affected most of the same lines.   this note is really just
  1510.       a heads-up, in case i missed/broke something.
  1511.  
  1512.     + re-renamed manpage.vmc to manpage.rc, to avoid introducing yet
  1513.       another file suffix.  changed CHANGES and vile.hlp to match.
  1514.  
  1515.     + eliminated makefile.sav from the distribution.
  1516.  
  1517.     + eliminated all "Log" keywords, added "Header" keywords everywhere.
  1518.  
  1519. (kev)
  1520.     + manfilt.c (sys/types.h): Include this file so that size_t will be
  1521.       defined on certain systems.
  1522.  
  1523.     + x11.c (alternate_font): Added cast to second arg in call to
  1524.       castalloc to avoid conversion warning.
  1525.  
  1526.     + configure.in (fputs): Added this function to the missing check
  1527.       list.  Not needed for vile, but for manfilt.c.
  1528.  
  1529.     + manfilt.c: Converted from ANSI C to the style of C in which the
  1530.       rest of vile is written in.
  1531.  
  1532.     + buffer.c (makebufflist): Added cast to convert return value of
  1533.       strlen to SIZE_T.
  1534.  
  1535.     + filec.c (fillMyBuff): Added cast to second arg in call to bs_find().
  1536.       Some platforms declare strlen to return int instead of size_t.
  1537.  
  1538.     + estruct.h (realloc): Changed prototype declaration so that second
  1539.       arg is unsigned.
  1540.  
  1541.     + estruct.h, mktbls.c (malloc): Changed extern declaration so that
  1542.       first parameter is an unsigned int rather than just int.  This
  1543.       eliminates "conversion" warnings on some systems.
  1544.  
  1545.     + mktbls.c (free): Added extern declaration with prototype.
  1546.  
  1547.     + x11.c (estruct.h, edef.h): Moved includes of these files to before
  1548.       the X11 includes.  I was having trouble on an SVR3 system in which
  1549.       flock was getting declared twice.  It turns out that <X11/Xos.h>
  1550.       (which is included from <X11/Intrinsic.h> does a check to prevent
  1551.       fcntl.h (from which flock is ultimately defined) from being
  1552.       included twice.  In my opinion, the authors of the system include
  1553.       files for this SVR3 system didn't do their job very well.  Rather
  1554.       than propogate checks to see if a particular system include file
  1555.       has already been included into estruct.h, I figured that a slight
  1556.       reordering (in x11.c) would be better.  Let's just hope it doesn't
  1557.       break something else.
  1558.  
  1559.     + estruct.h (MISSING_EXTERN_REALLOC): Fixed my misspelling of this
  1560.       (lack of) feature test.
  1561.  
  1562.     + mktbls.c: Conditionally include config.h in order to use
  1563.       configuration parameters for Unix systems.  Non-unix systems
  1564.       should still compile as they did before (if I didn't botch
  1565.       something).  I was having trouble with the fprintf extern on
  1566.       certain systems.
  1567.  
  1568.     + makefile.in (MKTBLS): Use CPPFLAGS to build the mktbls program.
  1569.       This will cause HAVE_CONFIG_H to be defined.
  1570.  
  1571.     + README.CFG: New file which describes the configuration process as it
  1572.       relates to (x)vile.  I recommend changing the name of README to NEWS
  1573.       and README.CFG to README to be more consistent with FSF software. 
  1574.       I'll leave this up to Paul though.
  1575.  
  1576.     + README (impatient?):  Changed message slightly.
  1577.  
  1578.     + makefile.in (install, installdirs, uninstall, makefile,
  1579.       config.status, mostlyclean, clean, distclean, realclean, TAGS,
  1580.       tags, dist): These targets added or modified to conform to the
  1581.       GNU standards document.
  1582.  
  1583.     + mkdirs.sh, INSTALL, install.sh: New files copied from the GNU
  1584.       autoconf distribution (mkdirs.sh renamed from mkinstalldirs
  1585.       to simplify copying files to/from MS-DOS -- tom).
  1586.  
  1587.     + config_h.in:  Renamed from config.d.in.  I really wish I could
  1588.       use autoheader to generate config.h.in as the autoconf doc
  1589.       describes.  Unfortunately, it isn't powerful enough (without
  1590.       some rewriting) to do what I want.
  1591.  
  1592.     + aclocal.m4 (VC_SETPGRP): New vile configuration macro.
  1593.  
  1594.     + line.c (ksetup): Initialize kcharpending.  This lack of
  1595.       initialization was responsible for the bug in which a newline was
  1596.       sometimes being inserted before a yanked region when it shouldn't
  1597.       have been.  Also moved definition of kcharpending so that it appears
  1598.       prior to the definition of ksetup().  The bug may be observed as
  1599.       follows: Create a buffer with a single line containing the
  1600.       characters "foo".  Enter the command ":list-registers" in order to
  1601.       view the registers.  Go back to the beginning of the newly created
  1602.       buffer (containing "foo").  Type "yw".  "foo" will appear as the
  1603.       unnamed register.  Type "yw" again.  The unamed register will now
  1604.       (prior to this fix) have the "foo", but also a newline in front of
  1605.       it.
  1606.  
  1607.     + configure.in (tcgetattr): Test to see if this function exists.
  1608.  
  1609.     + termio.c (HAVE_TCGETATTR): Added this test to see whether or
  1610.       not to define USE_POSIX_TERMIOS.  Also added commentary describing
  1611.       reason for this.
  1612.  
  1613.     + x11.c (x_flush): Removed all explicit calls to this function.  It
  1614.       was being called after update() which is unnecessary since
  1615.       update (indirectly) calls x_flush().  Calls to update() now
  1616.       pass the force argument (the only argument) as TRUE to ensure
  1617.       that the update will not be deferred due to type-ahead.
  1618.       (resize_bar): Removed code for determining vertical positioning
  1619.       involving XQueryPointer() and/or XTranslateCoordiates.  With a
  1620.       little bit of care, we can get the vertical position accurately
  1621.       without making a round trip server request.
  1622.  
  1623.     + x11.c (repeat_scroll): Added call to XSync() in order to make sure
  1624.       that repeated scrolling (via the timer) doesn't get ahead of display
  1625.       of the scrolling. 
  1626.       (resize_bar): Ifdef'd to try out XTranslateCoordinates() in place
  1627.       of XQueryPointer().  This should work better since it will give
  1628.       us the coordinates of the pointer at the time of the event instead
  1629.       of the current pointer value.
  1630.  
  1631.     + x11.c (visibility):  New field in struct _text_win.
  1632.       (wait_for_scroll): Do not call x_flush().  Return only when
  1633.       we're sure that all contiguous GraphicsExpose events have been
  1634.       processed.  This code was previously returning after the first one.
  1635.       (x_scroll, x_flush): Return immediately if window is fully obscured.
  1636.       (x_scroll): Don't wait for the scroll if the window is unobscured.
  1637.       (x_preparse_args): Initialize visibility.  Initialize
  1638.       graphics_exposures field of cur_win->textgc.
  1639.       (x_process_event): Added new case for VisibilityNotify which note
  1640.       changes in the visibility of the window and modify cur_win->textgc
  1641.       accordingly.
  1642.  
  1643.     + x11.c (ISC):  Removed #undef of ISC.  Should not be necessary
  1644.       any longer.
  1645.       (X_PIXEL): Removed #define.  Not used anywhere.
  1646.       (NPAUSE): Nuked.  Not needed.  Replace occurrence in term structure
  1647.       with zero.  (This was supposedly the number of times to busy loop
  1648.       in the catnap routine.
  1649.     + x11.c (x_preparse_args):  Support for left scrollbars in OpenLook
  1650.       added.
  1651.     + basic.c, csrch.c (setnmmark, getnmmarkname, get_csrch_char): Changed
  1652.       name of "stat" variable to "status" in order to avoid shadowing the
  1653.       stat function.  This didn't actually cause any problem, it just
  1654.       makes gcc shut up when used with Tom's preferred set of switches.
  1655.     + proto.h (setvbuf): Prototype.
  1656.     + display.c (updateline):  In OPT_PSCREEN version, return immediately
  1657.       if v_flag for the row doesn't have VFCHG set.
  1658.       (psc_putchar, psc_eeol): Set VFCHG flag on proper row.
  1659.     + termio.c (ttputc, ttflush, ttgetc): Don't define these for X11.
  1660.       Also got rid of calls to setbuffer, etc for X11.
  1661.     + proto.h (getscreensize): Declare even when SIGWINCH is not
  1662.       defined.
  1663.     + estruct.h (malloc, realloc): Prototypes.
  1664.     + main.c, fileio.c (fcntl.h): Removed include from here.  estruct.h
  1665.       now includes it.
  1666.     + estruct.h (time.h):  Included here.  Don't include both time.h
  1667.       and sys/time.h if they conflict with each other.
  1668.     + version.c: Removed include of time.h.
  1669.     + proto.h: Reorganized prototypes for system calls to use the
  1670.       MISSING_ test to determine whether an extern declaration needs
  1671.       to be made.
  1672.     + estruct.h (libc.h): Include this file (NeXT has hundreds of
  1673.       prototypes declared here).
  1674.     + termio.c (LINUX): Nuked ifdefs surrounding calls to tcdrain().
  1675.     + estruct.h, random.c (sys/select.h): Moved inclusion of
  1676.       sys/select.h from random.c to estruct.h (so that any types
  1677.       declared in sys/select.h will be available for later inclusion of
  1678.       proto.h).
  1679.     + estruct.h (AUX2, AIX, OSF1, LINUX, V7, BSD386, UNIXPC): Eliminated.
  1680.     + eval.c (AUX2, pyr, AIX):  Replaced in #if with
  1681.       HAVE_LOSING_SWITCH_WITH_STRUCTURE_OFFSET.  I'm open to suggestions
  1682.       on a better name for this.
  1683.     + proto.h, estruct.h (fcntl.h, sys/wait.h):  Included from estruct.h
  1684.       instead of proto.h.
  1685.     + npopen.c (sys/wait.h): Removed include from this file.
  1686.  
  1687.     + x11.c (start_selection):  Yank selection prior to releasing selection
  1688.       when persistent_selections are disabled.
  1689.       (x_process_event): Check to see if multiclick time has expired prior
  1690.       to discarding motion event when cur_win->numclicks is greater than
  1691.       one.  (If it's expired, we don't want to discard the event).
  1692.  
  1693.     + display.c, termio.c (getscreensize): Moved from display.c to
  1694.       termio.c.  This is a better place for it since we are invoking
  1695.       ioctl.  (This also explains why it was necessary to include
  1696.       the termios / termio / sgtty stuff in display.c.)
  1697.     + estruct.h (SVR3, ODT, ISC, HPUX): Eliminated.
  1698.     + termio.c (ttopen): Changed preprocessor feature test for
  1699.       call to setvbuf.  Also added code to handle systems (old
  1700.       SVR3 systems) which have the second and third arguments to
  1701.       setvbuf reversed.
  1702.     + main.c (catchintr): Always reinstate the signal handler regardless
  1703.       of system.  The code should probably be revisited...
  1704.     + spawn.c (rtfrmshell): Ditto.
  1705.     + estruct.h (USE_BCOPY): Usage eliminated as it was never being defined
  1706.       anywhere.
  1707.       (SYSV_STRINGS): Eliminated since it was defined, but never
  1708.       referenced.
  1709.       (strings.h, memory.h): Included as per GNU recommendations.
  1710.       (ULTRIX): Removed references to this unix variant.
  1711.     + random.c (current_directory): Eliminated reference to POSIX and
  1712.       reorganized preprocessor tests for how to get the current directory
  1713.       a little bit.
  1714.     + fileio.c: Eliminated reference to BERK.
  1715.     + termio.c: Eliminated reference to BERK and other unix varieties.
  1716.       We now use HAVE_TERMIOS_H, and company.  I also eliminated code
  1717.       specific to OSF1.  If there's a problem with it, we should try
  1718.       to deal with it elsewhere (such as the configuration script).
  1719.     + dirstuff.h:  Added stuff for including obscure readdir headers.
  1720.       Eliminated reference to BERK.
  1721.     + estruct.h (SIGT): Wrapped an ifndef around the logic that defines
  1722.       SIGT and SIGRET since they will be determined by the configuration
  1723.       script.  Also removed tests for various specific varieties of UNIX
  1724.       from this logic. 
  1725.       (HAVE_SELECT, HAVE_POLL): Removed preprocessor logic for both of
  1726.       these.  The configuration script now determines which of these
  1727.       are available.  We do undef HAVE_POLL if HAVE_SELECT is defined
  1728.       however.
  1729.       (USE_INDEX, HAVE_GETHOSTNAME, signal_pg): Changed preprocessor logic.
  1730.       (BERK): Eliminated all occurences.
  1731.     + display.c (termios.h, termio.h, sys/ioctl.h, ioctl.h, sys/types.h
  1732.       sys/stream.h, sys/ptem.h):  Removed includes and ifdef logic
  1733.       connected with these header files.  They don't appear to be used
  1734.       anywhere in display.c (though I have no doubt that they were at
  1735.       one time).
  1736.     + makefile.in:  New file; a template for creating the makefile.  This
  1737.       file was created by hacking the old makefile.
  1738.     + configure.in:  New file for creating the configure script.
  1739.     + config.d:  Template file for creating config.h.
  1740.  
  1741. (tom)
  1742.     + modified 'mktbls' so it can be used as a function in a Windows 3.1
  1743.       application (e.g., fixed memory leaks, top-level return).
  1744.  
  1745.     + built with kevin's autoconf script on Linux (both termcap and
  1746.       Xt versions), adjusted/corrected various files for autoconf and for
  1747.       MSDOS filename compatibility (aclocal.m4, bind.c, cmdtbl
  1748.       configure.in, edef.h, epath.h, estruct.h, file.c, fileio.c, glob.c,
  1749.       ibmpc.c main.c, makefile.in, makefile.tbc, map.c, mktbls.c, npopen.c,
  1750.       path.c proto.h, random.c, spawn.c, termio.c, x11.c).
  1751.  
  1752.     + made a driver-stub for Windows 3.1, to get a clean compile/link.
  1753.  
  1754.     + corrected 'ibmscroll()' function, which was broken in vile 4.4
  1755.       (ibmpc.c).
  1756.  
  1757.     + corrected reopening of stdin when a file is piped to vile; on Linux
  1758.       this caused vile to hang (main.c).
  1759.  
  1760.     + moved include of estruct.h after X Window includes in x11.c, since
  1761.       the definition of VMS causes the compile to break otherwise.
  1762.  
  1763.     + added new (some incomplete) files for Windows 3.1 port, map command
  1764.       and debugging: commdlg.msg mapchars.c mapchars.h trace.c trace.h
  1765.       win31drv.c win31drv.def win31tbl.c win31tbl.def win31tbl.h
  1766.       win31tbl.rc
  1767.  
  1768.     + modified 'gtfun()' and 'sindex()' to use single return points, to
  1769.       ease debugging.
  1770.  
  1771.     + added/used new macro 'window_b_val()' to handle the cases in which we
  1772.       reference a mode value for the current window, e.g., when executing a
  1773.       macro (estruct.h, isearch.c, oneliner.c).
  1774.  
  1775.     + initialize VIDEO-struct in 'vtinit()' that Purify found (display.c).
  1776.  
  1777.     + corrected globbing logic so that expressions such as `which script`
  1778.       work properly when the glob mode is "on" (glob.c).
  1779.  
  1780.     + added autoconf test VC_CPP_SUBS to make the ScratchName macro port.
  1781.  
  1782.     + corrected :-command parsing so that repeated ":" at the beginning of
  1783.       the line is ignored (exec.c).
  1784.  
  1785.     + reset mouse position when changing the screen resolution to avoid
  1786.       confusing users about its visibility (ibmpc.c).
  1787.  
  1788. Changes for vile 4.5 (released Wed Apr 27, 1994)
  1789. (pgf)
  1790.     + backed out change to "set all" which switched to Settings buffer.
  1791.       it didn't work, and was confusing in any case.  (modes.c)
  1792.  
  1793.     + redid the variables that identify os and vile variant.  now the
  1794.       $progname variable says "vile" or "xvile", and the new $os variable
  1795.       says "unix", "dos", "vms", or "os/2".  (modetbl, eval.c, version.c,
  1796.       proto.h, main.c, edef.h, vile.hlp, macros.doc)
  1797.  
  1798. (kev)
  1799.     + vile.hlp: Documented manual page stuff.
  1800.  
  1801. Changes for vile 4.4 (not released April 26, 1994)
  1802. (pgf)
  1803.     + fix for ": & 1" in empty buffer.  (exec.c)
  1804.  
  1805.     + ensure that problems opening a file are correctly reported
  1806.       at startup, by giving swbuffer() a real return value.  nextbuffer()
  1807.       returns this, which lets main() do the right thing.  i hope
  1808.       letting swbuffer() return readin() errors doesn't have too large
  1809.       a ripple effect.  we'll see.  the return from swbuffer() is ignored
  1810.       in many cases anyway.  (buffer.c, main.c)
  1811.  
  1812.     + on file open errors in readin, continue with the routine, so the
  1813.       buffer gets set up correctly.  cmode was wrong before, for instance.
  1814.       (file.c)
  1815.  
  1816.     + added select operator (bound to ^S) to do selections.  it yanks
  1817.       by default.  (region.c, opers.c, cmdtbl, select.c)
  1818.  
  1819.     + implement support (via new arg to scwrite, not yet put into other
  1820.       "screens" that provide this routine) for OPT_VIDEO_ATTRS under DOS.
  1821.       (display,c, ibmpc.c, proto.h)
  1822.  
  1823.     + removed KBD_LOWERC from the DOS KBD_OPTIONS, as an experiment, even
  1824.       thought tom told me not to.  i've seen no ill effects so far. 
  1825.       there must be something, though...  (could this be compiler
  1826.       (well, libc) dependent?) (filec.c)
  1827.  
  1828.     + added proper dependencies to makefile.wat
  1829.  
  1830.     + recalc kregwidth on last call to kinsertlater, since we may
  1831.       never get a newline to force it.  (line.c)
  1832.  
  1833.     + added mode "view-on-readonly" which causes view mode to be set
  1834.       if file is read-only on first open. (modetbl, file.c, vile.hlp)
  1835.  
  1836.     + implemented sel_motion() routine, that allows referencing the
  1837.       selected region from an operator.  fixed various off-by-one
  1838.       nits in various places to mkae this work right.  (basic.c,
  1839.       opers.c, region.c, select.c, proto.h, cmdtbl, x11.c)
  1840.  
  1841.     + cleaned up beeping.  too many double beeps.  (file.c, fileio.c,
  1842.       basic.c)
  1843.  
  1844.     + now preserve DOT during yank operations, so yy and Y don't cause
  1845.       motion. (opers.c)
  1846.  
  1847.     + added "haveregion" backdoor to getregion() -- if the "haveregion"
  1848.       pointer is set, getregion just returns it as the region. see
  1849.       select.c for uses of this.  (region.c)
  1850.  
  1851.     + added #error statement to little/dis-used screen drivers, to
  1852.       find out which are really used. (at386.c, hp110.c, st520.c,
  1853.       z100bios.asm, z_ibmpc.c, dg10.c, hp150.c, vt52.c, z309.c)
  1854.  
  1855.     + function lookup is now first match, rather than exact, to match
  1856.       documentation.  (eval.c)
  1857.  
  1858.     + fix core dump from referencing empty line for macro label goto.
  1859.       (exec.c)
  1860.  
  1861.     + eliminated unimplemented "target" variable. (modetbl)
  1862.  
  1863.     + created doc for programmed macros, based on uemacs 3.10 doc.
  1864.       (macros.doc, makefile)
  1865.  
  1866.     + check all getregion() return values. (word.c, select.c)
  1867.  
  1868.     + moved operselect() to select.c from opers.c.
  1869.  
  1870.     + reset haveregion after use in getregion().  (region.c)
  1871.  
  1872.     + sel_motion and operselect, if now used together in a single
  1873.       command, can be used to extend a keyboard selection. (select.c)
  1874.  
  1875.     + giving any argument to "shell-command" or ":!" now suppresses
  1876.       the press-return prompt. (spawn.c, proto.h)
  1877.  
  1878.     + added calls to update() if screen is garbage in mlyesno and
  1879.       mlquickask, in case they are called after a shell-escape from
  1880.       a macro. (input.c)
  1881.  
  1882.     + fixed cursor position after ^B command (should rest at bottom
  1883.       of window) (basic.c)
  1884.  
  1885.     + fix ordering of kdone/kinsertlater stuff (kcharpending was being
  1886.       reset by kdone called from kinsert) to fix problem where a yank
  1887.       containing an initial blankline would not record that blank line.
  1888.       (line.c)
  1889.  
  1890.     + changed kcod2str, fnc2str, string2prc to deal in "p-strings", i.e.
  1891.       binary strings with length stored in first byte.  needed this so
  1892.       bindings involving null character could pass through everywhere.
  1893.       the :map code in map.c still has problems.  (bind.c, x11.c,
  1894.       x11simp.c, input.c, map.c, proto.h)
  1895.  
  1896.     + separate target for Sony NeWS -- for sys/ioctl.h problem (makefile,
  1897.       termio.c)
  1898.  
  1899.     + patch from Michael Finken, to allow keeping the buffer name in
  1900.       the window and icon names (x11.c, display.c, proto.h, vile.hlp)
  1901.  
  1902.     + tungetc() now pushes back 16 bit keycodes using kcod2escape_seq()
  1903.       to translate them to a user-typable sequence, and maintaining a
  1904.       stack of pushed back chars.  it should still only be used for
  1905.       one key's worth of pushback.  (input.c, some others?)
  1906.  
  1907.     + insert mode now encodes SPEC keys (when recording them) as poundc
  1908.       followed by poundc+1 followed by c.  real poundc chars are stored
  1909.       as poundc followed by poundc.  there is no more "altpoundc".
  1910.       (insert.c)
  1911.  
  1912.     + merged OS/2 patches from Charles Moschel (ccm@cais.com).  reworked
  1913.       them somewhat to use better ifdefs in many cases.   This touched
  1914.       a lot of files.
  1915.  
  1916.     + introduced routine strncpy0() which jams a '\0' into the last
  1917.       copyable byte.  changed several of the most bug possibilities
  1918.       to use it.  (bind.c display.c eval.c finderr.c input.c isearch.c
  1919.       main.c makefile proto.h tags.c)
  1920.  
  1921.     + eliminated #elif from x11.c, for HP users.
  1922.  
  1923.     + reworked Charles Moschel's os2 screen driver into a "borland"
  1924.       console i/o driver.  i can't test it on OS/2, but i think it's
  1925.       the equivalent of his.  now there are separate ifdefs to control
  1926.         which os we want        MSDOS or OS2
  1927.         the pc keyboard            IBM_KBD
  1928.           the physical screen driver    IBMPC
  1929.         the console i/o driver        BORLAND
  1930.       the Borland compiler is still represented with "TURBO", since
  1931.       that's still predefined in Borland C++.
  1932.       (borland.c edef.h estruct.h ibmpc.c main.c makefile.tbc spawn.c
  1933.       termio.c version.c)
  1934.  
  1935.     + split routine execproc() in two, to make it internally callable,
  1936.       given the name of the procedure to run. (exec.c, proto.h)
  1937.  
  1938.     + added cdhook variable, which is the name of a procedure which
  1939.       is run when changing current directory.  (edef.h eval.c
  1940.       exec.c modetbl proto.h random.c)
  1941.  
  1942.     + added variable $ocwd, the previous directory (modetbl, eval.c,
  1943.       random.c, proto.h)
  1944.  
  1945.     + backed out changes that implemented the "keep buffer name in window
  1946.       and icon title" resources.  this is better done with hooks. (x11.c,
  1947.       proto.h, display,c, vile.hlp)
  1948.  
  1949.     + apply patch from richard hussong to fix scrolling problem on some
  1950.       video bios'es (ati ultra pro) (ibmpc.c)
  1951.  
  1952.     + added more hook variables: read-hook, write-hook, buffer-hook,
  1953.       exit-hook.  modified help file to describe procedures, and hooks.
  1954.  
  1955.     + added new variable, $abufname, which is the "alternate buffer",
  1956.       i.e. what you'd get if you type '#'. (modetbl, eval.c, vile.hlp)
  1957.  
  1958.     + apply fix to map_proc from lee johnson -- :map g G followed by
  1959.       1g didn't work, since 1 was considered default. (map.c)
  1960.  
  1961.     + change macros BAD and GOOD to BADEXIT and GOODEXIT to avoid
  1962.       conflicts on AIX.  (display.c estruct.h file.c ibmpc.c main.c
  1963.       mktbls.c spawn.c tcap.c termio.c version.c window.c x11.c
  1964.       x11simp.c)
  1965.  
  1966.     + it is now possible to use forward-char-scan et al from a macro.
  1967.       (csrch.c)
  1968.  
  1969.     + "response variables", the ones that ask questions (e.g. @foo)
  1970.       now remember a default response.  (eval.c)
  1971.  
  1972.     + added support for using the ansi.c screen driver under MSDOS.
  1973.       (ansi.c, termio.c, estruct.h, makefile.wat)
  1974.  
  1975.     + added w!  and x!  as synonyms for w and x, since they are the
  1976.       same under vile.  (cmdtbl, vile.hlp)
  1977.  
  1978.     + added support for new GNU libio stdio pkg, for isready_c() macro.
  1979.       (fileio.c)
  1980.  
  1981.     + fix globber() so :g/foo/p leaves you in the p-lines buffer, which
  1982.       is probably where you want to be.  (globals.c)
  1983.  
  1984.     + fix problem in main that caused us to skip first file if noautobuffer
  1985.       was set.  (main.c)
  1986.  
  1987.     + now that there are so many modes, it's desirable to switch
  1988.       to the ":set all" ("show-modes") window when it pops up. (modes.c)
  1989.  
  1990. (tom)
  1991.     + warning/lint cleanup (bind.c buffer.c display.c edef.h estruct.h
  1992.       eval.c fences.c insert.c line.c proto.h random.c region.c select.c
  1993.       tags.c x11.c)
  1994.  
  1995. (kev)
  1996.     + select.c (EFFICIENCY_HACK, attribute_cntl_a_sequences):  New code
  1997.       which makes attributing regions with large numbers of attributes
  1998.       much more efficient.
  1999.  
  2000.     + x11.c (CLEAR_THRESH): Changed value and added explanation.
  2001.       (NONDIRTY_THRESH): New constant.
  2002.       (x_getc): Added inner loop for getting as many X events as possible
  2003.       prior to returning in order to let the typeahead check in update()
  2004.       do its job.
  2005.  
  2006.     + manfilt.c (fatal_error): New function.
  2007.       (INITIALSIZE): New constant.  Got rid of old constants which
  2008.       hardwired the buffer sizes.
  2009.       (line_in_size, line_out_size): New variables for keeping track
  2010.       of the buffer sizes.
  2011.       (getline): Rewritten so that input lines may be of arbitrary
  2012.       length.
  2013.  
  2014.     + display.c (update): Keep track of original row and column in
  2015.       case we're reading the message line.  If we are reading the
  2016.       message line, update the hardware cursor to the original row
  2017.       and column instead of the current window.  I think that this
  2018.       problem was evident only when the OPT_PSCREEN feature was enabled.
  2019.  
  2020.     + estruct.h (do_mark_iterate): Reassert ownership of selection if
  2021.       appropriate.
  2022.  
  2023.     + proto.h, select.c (sel_reassert_ownership): New function.
  2024.       
  2025.     + display.c (reframe):  Fixed an off-by-one error which was causing
  2026.       the cursor to be placed on the mode line after a reframe in a
  2027.       one line buffer.
  2028.  
  2029.     + input.c (kbd_reply): Fixed off by one error which was causing core
  2030.       dumps on the NeXT.
  2031.  
  2032.     + x11.c (x_get_selection, copy_paste): Added caste for third argument
  2033.       in calls to tb_bappend.
  2034.      (alternate_font): Removed debugging printf.
  2035.  
  2036.     + x11.c (x_configure_window): New code for unmanaging / managing
  2037.       the children of a motif form which will hopefully prevent the
  2038.       problems with huge scrollbars. 
  2039.  
  2040.     + random.c (line_count): Added null buffer check.  This lack of
  2041.       check was causing core dumps on start up in xvile when $font was
  2042.       being set from the .vilerc file to a value which caused a resize.
  2043.  
  2044.     + cmdtbl, proto.h, select.c (operattrital): New operator for italics.
  2045.  
  2046.     + x11.c (x_setfont, query_font): Cleaned up memory leaks, one stemming
  2047.       from the fact that the XFontStruct structure pointed at by
  2048.       the pfont field was never getting freed, the other concerning
  2049.       allocation of memory for font names.
  2050.      (starting_fontname): New field in the TextWindow structure.  This
  2051.       field points to the initially requested font name. The fontname
  2052.       field is reserved for holding the name of the font once it has
  2053.       been successfully loaded.
  2054.      (query_font): Attempt to find the fully qualified font name (rather
  2055.       than an alias or template).  Also, free storage associated with 
  2056.       new fields in struct _text_win (see below).
  2057.      (FSRCH_BOLD, FSRCH_ITAL, FSRCH_BOLDITAL): New flags.
  2058.      (fsrch_flags, pfont_bold, pfont_ital, pfont_boldital, left_ink,
  2059.       right_ink): New fields in struct _text_win.
  2060.      (alternate_font): New function.
  2061.      (flush_line): New code for handling bold and italics.  Old code for
  2062.       doing bold retained as a fallback position in the event that a
  2063.       bold font is unavailable.
  2064.      (x_get_font_atom_property): New function.
  2065.      (x_flush): New code for cleaning up the mess sometimes left when
  2066.       using monospaced fonts. [Glyphs in monospaced fonts sometimes extend
  2067.       outside the bounding box associated with the font.  Thus when
  2068.       a dirty cell adjacent to a non-dirty cell is updated, the non-dirty
  2069.       cell also needs to be updated in the event that the character
  2070.       previously written to the dirty cell extended outside of its
  2071.       bounding box and into the non-dirty cell.]
  2072.  
  2073.     + window.c (delwp):  Always set WFHARD on the receiving window
  2074.       (instead of just when the current window pointer is the same as
  2075.       the one being deleted).  This corrects a problem with the mode
  2076.       line attribute sometimes not getting reset. [Scenario: Edit a
  2077.       file.  Split the window.  Type '*'.  Move to a different window
  2078.       than the "*" window.  Type '*' again.  Both vile and xvile leave
  2079.       the line that the message line used to be on bold.]
  2080.  
  2081.     + macros.doc: Fixed some minor typos.
  2082.  
  2083.     + select.c (extended_region): Added prototype.
  2084.  
  2085.     + manfilt.pl: New file. Perl script for filtering backspace sequences.
  2086.     + cmdtbl (operattrcaseq): Replaces operattrbsseq.
  2087.     + proto.h, select.c  (attribute_cntl_a_sequences, operattrcaseq):
  2088.       Replaces attribute_backspace_sequences and operattrbsseq.
  2089.  
  2090.     + random.c (getcol): Now works for empty lines where offs > 0.  This
  2091.       is probably one of many functions which will need to be fixed now
  2092.       that it is possible to position the cursor on the newline character.
  2093.       (See Paul's changes.)
  2094.       
  2095.     + file.c (getfile2): Don't prompt user if noninteractive.  This
  2096.       change prevents an infinite loop when executing my manual page
  2097.       macro (or any macro which needs needs a buffer where there is a
  2098.       name conflict.  Paul and Tom should look at this to make sure that
  2099.       it doesn't break keyboard macros.
  2100.  
  2101.     + display.c (updattrs): Garbage collect attributes which should
  2102.       display something (i.e., have nonzero ar_vattr field), but refer
  2103.       to an empty region.
  2104.  
  2105.     + display.c (updattrs): Added a parameter to this function and
  2106.       changed call in update() to reflect this change.  Also moved
  2107.       placment of call from within update.  The result of all of this is
  2108.       that the attributes will only be updated only when WFHARD or
  2109.       WFEDIT is set for the window.  WFEDIT is needed in order to
  2110.       display changed boundaries of the attributed text in the event
  2111.       that the marks denoting the ends are moved as the result of an
  2112.       editing operation.
  2113.  
  2114.     + estruct.h (do_mark_iterate): Rewritten to be faster.  This improved
  2115.       performance a lot when there are a large number of attributes.
  2116.       A terminfo man page took roughly 14 seconds to attribute prior to
  2117.       this change.  Afterwards, it took about 8 seconds.  (The terminfo
  2118.       man page is somewhat unusual in that it has a large number of
  2119.       underline and bold sequences).
  2120.  
  2121.     + cmdtbl (operattrbsseq): New command for attributing sequences of
  2122.       backspaces.
  2123.     + select.c, proto.h (attribute_backspace_sequences, operattrbsseq):
  2124.       New functions.  Also moved together the prototype declarations of
  2125.       functions defined in select.c to one place.
  2126.  
  2127.     + display.c (modeline): if insertmode is defined (as a macro), display
  2128.       the modeline for each modeline instead of just the current window.
  2129.  
  2130.     + display.c (updattrs): Make sure that start_col is not less than
  2131.       zero.
  2132.  
  2133.     + exec.c (execute):  In test to see if we're not in insert mode...
  2134.       Short circuit the test with a test to see if curwp is NULL since
  2135.       we get in trouble when insertmode is not a global variable and
  2136.       is defined in terms of a window trait (see estruct.h).  (We were
  2137.       getting core dumps when starting up with xvile @manpage.rc).
  2138.  
  2139.     + cmdtbl, opers.c (operattrbold, operattrul): New commands for
  2140.       attributing regions of text.
  2141.     + edef.h (videoattribute): New variable for communicating with
  2142.       attributeregion().
  2143.     + select.c, proto.h (attributeregion): New function.
  2144.     + select.c (selectregion): Took out checks to see if startbufp and
  2145.       selbufp are NULL before calling detach_attrib as detach_attrib
  2146.       already performs these checks.
  2147.     + display.c (updattrs): Use logical or to set attributes other
  2148.       than VAREV in order to allow overlapping attributes.  Use
  2149.       exclusive or to set VAREV causing overlapping reversed regions
  2150.       to reverse themselves (this is perhaps _too_ tricky; we might
  2151.       consider just using logical or.  It would simplify the code
  2152.       and it might actually be what the user wants.)  Previously, we
  2153.       were just using assignment to set the attribute which cause
  2154.       the attribute displayed to be the last attribute processed.
  2155.     + x11.c (flush_line, x_flush): Modified to handle bold and underline
  2156.       attributes in addition to reverse video.  Some work still needs
  2157.       to be done on this to use a bold font for displaying bold if
  2158.       it exists with the present code as a fallback if there is no
  2159.       bold font available.
  2160.     + manpage.rc: New file containing vile macros for getting and
  2161.       attributing manual pages.
  2162.  
  2163.     + estruct.h (do_mark_iterate):  Fixed problem which was causing
  2164.       r_orig for the first attribute to not get processed.  I think
  2165.       that this was responsible for some core dumps.
  2166.  
  2167.     + x11.c, proto.h (own_selection): New externally available function.
  2168.       It used to be x_own_selection which was private to x11.c.  All
  2169.       calls to x_own_selection in x11.c eliminated.
  2170.     + estruct.h (OWN_SELECTION): Macro which will either call
  2171.       own_selection() or do nothing depending on whether or not (x)vile
  2172.       is compiled on a system which is prepared to share selections
  2173.       with other clients or not.
  2174.     + select.c (selectregion, sel_extend):  Call OWN_SELECTION().
  2175.  
  2176.     + proto.h (sel_yank):  Name changed from sel_yankmaybe since there
  2177.       is very little "maybe" left about its action.
  2178.     + select.c (sel_yank, push_fake_win, pop_fake_win): sel_yankmaybe
  2179.       rewritten to become sel_yank.  sel_yank now uses push_fake_win()
  2180.       and pop_fake_win() to allocate a fake window so that the selection
  2181.       in the selection buffer may be yanked no matter what (unless
  2182.       there is no selection).
  2183.     + x11.c (x_process_event, x_stash_selection): Call to sel_yankmaybe
  2184.       eliminated from x_process_event.  Call to sel_yank added to
  2185.       x_stash_selection.  This means that the selection will only be
  2186.       yanked when needed thus permitting modification of the selection
  2187.       prior to pasting.
  2188.  
  2189.     + basic.c (setnmmark):  Nuked old keyboard selection code.
  2190.     + select.c (WHICHEND, whichend): New type and variable for keeping
  2191.       track of which end of the selection is fixed while sweeping
  2192.       a selection.
  2193.     + select.c (sel_begin): Set whichend.
  2194.     + select.c (sel_extend):  Selection yanking code removed.  Usage
  2195.       of parameter to sel_extend modified to indicate if wiping (sweeping)
  2196.       with mouse.  Code added to check whichend and act accordingly.
  2197.       Also do the "one-off" fixup here instead of in x11.c.
  2198.     + select.c (output_selection_position_to_message_line): Fixed "one off"
  2199.       error in reporting extent of selection.
  2200.     + x11.c (x_preparse_args): Set foreground and background in 
  2201.       scrollbar graphics context.
  2202.     + x11.c (extend_selection): Changed call to sel_extend to reflect
  2203.       new interpretation of its parameter.
  2204.     + x11.c (multi_click): Put back decrement after end of word is
  2205.       found.  (Paul had previously removed it.)
  2206.     + x11.c (x_process_event):  Changed call to extend_selection
  2207.       when button 3 is pressed to indicate that we are _not_ wiping.
  2208.       (Wiping is permitted however and mouse motion will do the 
  2209.       right thing).
  2210.  
  2211.     + x11.c (pscreen): Added extern declaration.
  2212.     + x11.c (IS_DIRTY_LINE, IS_DIRTY, IS_REVERSED, MARK_LINE_DIRTY,
  2213.       MARK_CELL_DIRTY, CLEAR_LINE_DIRTY, CLEAR_CELL_DIRTY, CELL_TEXT,
  2214.       CELL_ATTR): New macros comprising the interface to pscreen.
  2215.       These could be moved to estruct.h or another header file for
  2216.       use by other screen interfaces.
  2217.     + x11.c (BLINK_TOGGLE): Added comment about this macro.
  2218.     + x11.c (cur_row, cur_col, sc, cur_row, cur_col): Removed these
  2219.       fields from the TextWindow structure.
  2220.     + x11.c (x_putc, x_move, x_eeol, x_eeop, free_win_data,
  2221.       x_resize_screen): Deleted these functions and changed all callers.
  2222.     + x11.c (term): Substituted psc_putchar, psc_flush, psc_move,
  2223.       psc_eeol, and psc_eeop for x_putc, x_flush, x_move, x_eeol,
  2224.       and x_eeop.  Also added x_flush after x_scroll which will
  2225.       initialize the t_pflush field in the TERM structure.
  2226.     + x11.c (x_touch):  Call MARK_CELL_DIRTY and MARK_LINE_DIRTY instead
  2227.       of using old mechanism.
  2228.     + x11.c (wait_for_scroll):  Nuked XXX comment since it doesn't
  2229.       seem to apply any longer.
  2230.     + x11.c (CLEAR_LINE, SWAP_LINE): Nuked these macros which I recently
  2231.       wrote for use in x_scroll.
  2232.     + x11.c (x_scroll):  Nuked code for clearing and moving lines around.
  2233.     + x11.c (flush_line): Minor reformatting.
  2234.     + x11.c (clear_line): Eliminated this dead code.
  2235.     + x11.c (x_flush): Rewritten.  It will now call flush_line for
  2236.       any change in attribute instead of just reversed video.  flush_line
  2237.       still needs to be rewritten to handle the other attributes.
  2238.       Handling of cursor should be better too.
  2239.     + x11.c (x_putline, x_fastpoutline, x_setrowcolors, x_cls): Removed
  2240.       this "notyet" code.  The need for such functions has been replaced
  2241.       by new attribute mechanism and interface to pscreen.
  2242.     + x11.c (multi_click, display_cursor):  Use CELL_TEXT instead of old
  2243.       data structures.
  2244.     + x11.c (x_process_event): Call display_cursor() on ButtonRelease
  2245.       event instead of in x_getc().
  2246.  
  2247.     + display.c (updateline): Wrote new version for OPT_PSCREEN.  I
  2248.       tried modifying the !MEMMAP version, but this version is difficult
  2249.       enough to understand without adding to the rat's nest of #if,
  2250.       #else, and #endif statements.
  2251.     + display.c (updgar, scrolls): Preprocessor statements and a little
  2252.       bit of code for OPT_PSCREEN.
  2253.     + display.c, proto.h (psc_putchar, psc_flush, psc_move, psc_eeol,
  2254.       psc_eeop, psc_rev): New functions and their prototypes.
  2255.  
  2256.     + estruct.h (t_pflush): New field in the TERM structure used
  2257.       by OPT_PSCREEN interface to flush the output.  TTpflush is
  2258.       defined to allow easy access to this field via the variable term.
  2259.     + estruct.h (OPT_PSCREEN): New feature test.  Used for determining
  2260.       if the screen interface wishes to access the pscreen structure
  2261.       directly.  Definitions of VADIRTY and VATTRIB in this file
  2262.       depend on OPT_PSCREEN.
  2263.  
  2264.     + x11.c (x_beep): Use GXxor instead of GXinvert as the logical
  2265.       function in the graphics context for flashing the screen.  GXxor
  2266.       will give better results on color displays.
  2267.     + x11.c (x_getc): Removed if'd out call to display_cursor().
  2268.     + x11.c (x_flush):  Add bounds check to make sure that it is ok to
  2269.       write out the cursor.
  2270.  
  2271.     + estruct.h (VIDEO):  Added new field v_attrs.
  2272.     + estruct.h (VIDEO_ATTR):  Accommodations for color.  Also eliminated
  2273.       VACOL mask.  Added VADIRTY, VAFGCOL, and VABGCOL.
  2274.     + display.c ([pv]scrat):  Eliminated in favor of using the v_attrs
  2275.       field in the VIDEO structure.  Also small modifications to ignore/set
  2276.       dirty bit in updateline().
  2277.  
  2278.     + x11.c (display_cursor):  Called from x_flush instead of x_getc to
  2279.       avoid flicker.  Call of display_cursor from x_getc if'd out.
  2280.  
  2281.     + display.c ([pv]scrat):  Replaced calls to memset with "for" loops
  2282.       using explicit assignment in anticipation of making VIDEO_ATTR
  2283.       a sixteen bit quantity when COLOR is enabled.  This code will
  2284.       still need to be tinkered with somewhat in order to set the
  2285.       foreground and background colors properly for the line whose
  2286.       attributes are being reset.  (I have placed FIXME's in the code
  2287.       to indicate where this needs to be done.)
  2288.  
  2289.     + display.c (scrolls): New local variables longinplace and inplace
  2290.       are used in determining whether or not a potential match of lines
  2291.       to be shifted is really better than a previously computed match. 
  2292.       The undesirable behavior that this corrects can be best observed
  2293.       in vile (I used an xterm with 50+ lines).  Edit a file with
  2294.       enough lines to be able to do a bit of scrolling.  Split the
  2295.       window and make the upper window about half the size of the lower
  2296.       window.  Then start scrolling through lines in the the upper
  2297.       window which are duplicated in the lower one.  (Try it in both
  2298.       directions.) You will notice that portions of the lower window
  2299.       will be updated along with the upper.  The problem was that
  2300.       longer matchs were being obtained by scrolling lines from the
  2301.       lower window up to the upper with the cost of having to later
  2302.       update a large segment of the lower window.  This new code will
  2303.       count the number lines which are already properly placed (e.g.,
  2304.       do not need to be moved at all) in a section to be potentially
  2305.       moved.  It will then use this count to help decide if the new
  2306.       potential match is better than the old one.
  2307.  
  2308.     + modetbl (font):  Commented out dependency on X11.
  2309.     + eval.c (SetVarValue, gtenv): Added code to ignore EVFONT when X11
  2310.       is not defined.  The reason for all of this is so that a .vilerc
  2311.       file which has a "set font" line in it may be shared between both
  2312.       vile and xvile.
  2313.  
  2314.     + edef.h, main.c (insert_mode_was): Eliminated.  This variable was
  2315.       _only_ referenced (i.e, not set anywhere) and only referenced
  2316.       in one place.
  2317.  
  2318.     + estruct.h (insertmode, insmode): insmode is a new field in the
  2319.       W_TRAITS structure.  Define macro insertmode in terms of the
  2320.       insmode field in the W_TRAITS structure when OPT_MOUSE is
  2321.       defined. 
  2322.     + edef.h (insertmode): Don't declare insertmode as a variable when
  2323.       it is already defined as a macro
  2324.     + main.c (loop): Check to see if insertmode is set after getting a
  2325.       character.  If it is, re-enter insert mode.  The reason for the
  2326.       above three changes is to prevent insert mode from "moving" to a
  2327.       new window when using the mouse to set focus to another vile
  2328.       window.  These changes allow a window to "remember" which mode it
  2329.       was in when the window was left so that that mode may be
  2330.       reentered when we return to the window.
  2331.  
  2332.     + select.c, proto.h (free_attrib): New function.
  2333.     + line.c (lremove): Traverse attribute list and fix marks
  2334.       indicating the beginning and ending of each attributed region. 
  2335.       The attributed region is freed if both beginning and end both
  2336.       refer to the line about to be removed.
  2337.  
  2338.     + vile.hlp: Documented new resources.
  2339.  
  2340.     + x11.c (blink_id, blink_status, blink_interval):  New fields in
  2341.       TermInfo structure.  Also created new resource XtNblinkInterval
  2342.       and XtCBlinkInterval for setting the blink_interval field.  Setting
  2343.       this field to zero will disable blinking entirely.  Positive
  2344.       values will enable blinking all the time with the blink rate
  2345.       being the value in milliseconds.  Negative values will enable
  2346.       blinking only when the cursor is positioned within a highlighted
  2347.       region.  Again the blink interval is in milliseconds.
  2348.  
  2349.     + x11.c (display_cursor):  New function called from x_getc() for
  2350.       displaying the cursor.  Handles blinking cursors.
  2351.  
  2352.     + x11.c (XtNpersistentSelections, XtCPersistentSelections): New
  2353.       resource instance and class name for resource
  2354.       persistentSelections.  This resource controls whether or not
  2355.       highlighting of selection (and indeed the selection itself), is
  2356.       released when clicking button one.  start_selection() modified to
  2357.       check whether this resource is set or not and to take the
  2358.       appropriate action.
  2359.  
  2360.     + x11.c (invert_display, x_beep): Eliminated invert_display(). 
  2361.       Rewrote OPT_FLASH stuff in x_beep() to reduce dependence on
  2362.       structures in x11.c which know about the attributes.  (These
  2363.       structures will eventually be eliminated.) The flash obtained from
  2364.       the new code also looks better (it was kind of choppy before).
  2365.  
  2366.     + x11.c (x_getc): Make sure that cur_win->show_cursor is TRUE before
  2367.       displaying the cursor.
  2368.  
  2369.     + x11.c (x_setfont): Call update_scroll_bar_sizes when a font change
  2370.       will change the size of the window.
  2371.  
  2372.     + x11.c (turnOnCursor, turnOffCursor, CELL_CURSOR): Nuked all code
  2373.       referencing these.  This is yet another step toward integrating
  2374.       use of [pv]screen and [pv]scrat into x11.c.
  2375.  
  2376.     + x11.c (x_getc): Display the cursor here before calling
  2377.       XtAppNextEvent.
  2378.  
  2379.     + x11.c: Slowed down initial scrolling of selections (you don't want
  2380.       the lines whizzing by if you only want a few more lines).  Sped up
  2381.       scrolling of selections that have been scrolling for a while
  2382.       already.
  2383.  
  2384.     + x11.c: Added resources for scrollRepeatInterval and
  2385.       scrollRepeatTimeout for xvile NO_WIDGETS version.
  2386.  
  2387.     + display.c (vt_leaks): free pscrat and vscrat.
  2388.     + display.c (updateline): consider virtual screen attributes when
  2389.       noting nonblanks in right match.
  2390.  
  2391.     + modetbl, main.c, select.c (WMDTERSELECT): New window mode for
  2392.       controlling whether selections are terse or verbose.
  2393.  
  2394.     + vile.hlp: Documentation for selections and other x11 stuff.
  2395.  
  2396.     + makefile (select.{c,o}): Added to the SRC and OBJ file list.
  2397.  
  2398.     + select.c: New file implementing selection/attribute stuff.
  2399.  
  2400.     + proto.h (free_attribs, sel_begin, sel_extend, sel_release,
  2401.       sel_yankmaybe, sel_attached, sel_buffer, sel_setshape):
  2402.       New prototypes.
  2403.  
  2404.     + estruct.h (OPT_VIDEO_ATTRS, OPT_SELECTIONS): New feature tests.
  2405.     + estruct.h (NKREGS): Set to 37 (rather than 36) when OPT_SELECTIONS
  2406.       enabled.
  2407.     + estruct.h (SEL_KREG): Define the selection kill reg number.
  2408.     + estruct.h (MAXROWS, MAXCOLS): Moved here from x11.c.
  2409.     + estruct.h (REGIONSHAPE): New typedef.
  2410.     + estruct.h (REGION): Position of typedef moved ahead of that of
  2411.       BUFFER (so that AREGION can use REGION and BUFFER use AREGION).
  2412.     + estruct.h (VIDEO_ATTR): New typedef.  New mask values for this
  2413.       typedef also (VACOL, VAREV, VAUL, VAITAL, and VABOLD).
  2414.     + estruct.h (AREGION): New typedef.
  2415.     + estruct.h (b_attrib): New field in struct BUFFER.
  2416.     + estruct.h (do_mark_iterate): New macro for iterating over named
  2417.       marks and region marks for the current buffer.
  2418.  
  2419.     + buffer.c (bfind): Initialize b_attribs field.
  2420.     + buffer.c (bclear): Call free_attribs to free attributes associated
  2421.       with buffer.
  2422.  
  2423.     + line.c (linsert, lnewline, ldelete, ldelnewline): Use macro
  2424.       do_mark_iterate to fix the marks.
  2425.  
  2426.     + tmp.c (dumpBuffer, AdjustPtrs): Call do_mark_iterate for adjusting
  2427.       marks.
  2428.  
  2429.     + undo.c (lineundo, repointstuff): Call do_mark_iterate for mark
  2430.       adjustment.
  2431.  
  2432.     + display.c (vscrat, pscrat): New variables representing virtual
  2433.       and physical screen attributes.
  2434.     + display.c (updattrs): New function called from update().
  2435.     + display.c (vtinit): Initialize vscrat and pscrat.
  2436.     + display.c (update): Nuked assignment of the ruler line in
  2437.       OPT_SCROLLBAR code (x11.c no longer needs this).
  2438.     + display.c (updgar): update pscrat.
  2439.     + display.c (hilite, modeline): use vscrat to do highlighting.
  2440.     + display.c (scrolls): move attributes in pscrat to account for
  2441.       scrolling.
  2442.     + display.c (updateline): Use pscrat and vscrat in updating the line.
  2443.  
  2444.     + edef.h (regionshape): Declare as REGIONSHAPE instead of short.
  2445.  
  2446.     + basic.c (setnmmark): Added code if'd by OPT_SELECTIONS which
  2447.       implements a mechanism for making selections from the keyboard.
  2448.       "m." will mark the start of a selection. "m\" extends the selection
  2449.       rectangularly. "m'" extends a selection by full lines. "m\" extends
  2450.       a selection exactly.
  2451.     + line.c (reg2index): Added code if'd by OPT_SELECTIONS which makes
  2452.       the name "." the kill reg associated with the current selection.
  2453.  
  2454.     + x11.c (PANE_WIDTH_DEFAULT): Changed to 15 for NO_WIDGETS.
  2455.     + x11.c (MAXROWS, MAXCOLS): Moved to estruct.h.
  2456.     + x11.c (scroll_repeat_id, wipe_permitted, sel_scroll_id): New
  2457.       fields in struct _text_win.
  2458.     + x11.c (sel_start_col, sel_start_row, sel_end_col, sel_end_row,
  2459.       wipe_row, wipe_col, show_selection): These fields removed from
  2460.       struct _text_win.
  2461.     + x11.c (row2line, clear_row_selection, save_selection,
  2462.       change_selection): These functions removed along with all references
  2463.       to them.
  2464.     + x11.c (scroll_selection, repeat_scroll): New functions.
  2465.     + x11.c (do_scroll): Added code so that scroll will repeat when
  2466.       button is held down.
  2467.     + x11.c (x_preparse_args): Get button release events too for the
  2468.       screen widget.
  2469.     + x11.c (x_scroll): Rewritten to move attributes (found in
  2470.       cur_win->attr) along with screen data.  Should be more efficient
  2471.       as well.
  2472.     + x11.c (x_flush): Changed way in which cursor is displayed in
  2473.       selections.
  2474.     + x11.c (in_selection): This macro deleted.
  2475.     + x11.c (x_putline): Leave cursor one past last char in line section
  2476.       just put unless at end of line.
  2477.     + x11.c (x_eeol, x_eeop): Erase to end of line/page in reverse video
  2478.       if in reverse video.
  2479.     + x11.c (x_lose_selection, x_stash_selection, x_give_selection,
  2480.       x_own_selection, extend_selection, multi_click, start_selection,
  2481.       x_process_event): Modified/rewritten to use new selection stuff.
  2482.       Other cosmetic improvements/modifications were made to the
  2483.       above functions resulting in the following user visible changes:
  2484.         + clicking button 1 on mode line will set focus on
  2485.           corresponding window without scrolling the window by
  2486.           one line.  Double clicking on mode line will clear the
  2487.           current selection.
  2488.         + selecting text by dragging will now scroll the window
  2489.           up or down when the bottom or top is reached.  It is
  2490.           now also possible to drag with the right mouse button.
  2491.           Speed at which text is scrolled while being selected  will
  2492.           increase with the passage of time.
  2493.         + rectangular regions may be selected by using the control
  2494.           key as a modifier.
  2495.         + highlighting of selection is not lost unless another
  2496.           selection is made either in xvile or somewhere else
  2497.           or unless mode line is double clicked upon.
  2498.         + it is now possible to start a selection in one window
  2499.           and extend it in another window (provided the "other"
  2500.           window is open to the same buffer).
  2501.  
  2502. Changes for vile 4.3 (released March 29, 1994)
  2503. (pgf)
  2504.     + make all functions called by do_lines_in_region be prepared to
  2505.       take empty lines. (region.c)
  2506.  
  2507.     + added terse addition to the README
  2508.  
  2509. (tom)
  2510.     + corrected test in 'eol_command()' to allow command-names with '-'
  2511.       (bind.c)
  2512.  
  2513.     + corrected last 'mlerror()' change (display.c).
  2514.  
  2515.     + added 'tags' rule to override conflict with default rule (makefile).
  2516.  
  2517.     + corrected 'readpattern()' so that '%' can be used as delimiter in
  2518.       ":g" command (search.c)
  2519.   
  2520. (kev)    
  2521.     + call update_scrollbar_sizes() when changing fonts. (x11.c)
  2522.  
  2523. Changes for vile 4.2 (briefly released March 25, 1994)
  2524. (pgf)
  2525.     + fixed Register buffer animation, using static flag to limit
  2526.       the work done for each call to relist_registers(). (line.c)
  2527.  
  2528.     + use common update_scratch() routine to trigger animation of
  2529.       modes and maps.  (mode.c, map.c)
  2530.  
  2531.     + add lines to vile.hlp about ".vilerc" vs. "vile.rc"
  2532.  
  2533.     + fixed several bugs in rectangular operations (region.c)
  2534.  
  2535.     + disabled "memory" command under Watcom, since _memavl() doesn't
  2536.       _really_ report how much memory there is left -- just how much
  2537.       is left before it needs to grow the heap. (main.c)
  2538.  
  2539.     + npopen() should be silent on errors. (npopen.c)
  2540.  
  2541.     + gave mlerror() a default message if errno is out of range (display.c)
  2542.  
  2543.     + rationalized use of mlerror() and FIOERR.  now, the function that
  2544.       first generates FIOERR is guaranteed to have put out a message,
  2545.       probably via mlerror. (file.c, fileio.c)
  2546.  
  2547.     + systems without EISDIR now all generate EACCES for directory
  2548.       errors.  (fileio.c)
  2549.  
  2550. (tom)
  2551.     + cleanup for OPT_MAP_MEMORY compilation ( display.c fileio.c
  2552.       insert.c line.c random.c region.c tags.c undo.c)
  2553.  
  2554.     + cleanup of OPT_WORKING ifdef (estruct.h)
  2555.  
  2556.     + changed "#elif" to old-style because HP/UX bundled compiler doesn't
  2557.       treat these properly. (fileio.c, should also change x11.c).
  2558.  
  2559.     + corrected logic for arrow-keys in xvile's history by new function
  2560.       'kcod2escape_seq()' (input.c, x11.c, x11simp.c).
  2561.  
  2562.     + corrected 'l_ptr()' function to ensure signed comparison (tmp.c).
  2563.  
  2564. Changes for vile 4.1 (not released March 11, 1994)
  2565. (pgf)
  2566.  
  2567.     + add include of stddef.h if POSIX, to pick up offsetof, so we don't
  2568.       get a warning when building xvile on linux (estruct.h)
  2569.  
  2570.     + again, fix core from is_falsem/is_truem. (eval.c)
  2571.  
  2572.     + fix compiler warning (bind.c)
  2573.  
  2574.     + removed -rows and -columns from usage message and help. (version.c
  2575.       vile.hlp)
  2576.  
  2577.     + fixed for the Watcom compiler; dense line modes now work. (ibmpc.c)
  2578.  
  2579.     + the 'J' (and :j) command no longer perturbs the yank/kill registers, so
  2580.       the sequence 'dw<move somewhere>J<move somewhere>p' puts back the word
  2581.       you deleted, not the newline that 'J' deleted.  (region.c, word.c, proto.h)
  2582.  
  2583.     + DOS now uses pressreturn() after a shell escape.
  2584.  
  2585.     + streamlined tb_sappend() (tbuff.c)
  2586.  
  2587.     + changed x11 pasting to not trim leading whitespace, and to use
  2588.       the xxx_no_aindent() functions for performing insertions.  this
  2589.       means you now paste what you cut, with indentation preserved from
  2590.       the original, rather than recreated (or lost) by autoindent or
  2591.       cmode. (x11.c, x11simp.c)
  2592.  
  2593.     + new routine, fnc2str(), to support above change, since the no-aindent
  2594.       commands are multi-char sequences.  (bind.c, proto.h)
  2595.  
  2596.     + implemented rectangular regions, using new "regionshape" global,
  2597.       new commands ("goto-named-mark-rectangular",
  2598.       "put-as-rectangle-after", "put-as-rectangle-before",
  2599.       "open-rectangle", "blank-region"), and new behavior for
  2600.       rectangles of the "shift-right-region" (opens up),
  2601.       "shift-left-region" (deletes), the delete and yank operators. 
  2602.       new rectangular (basic.c, cmdtbl, region.c, random.c, line.c, edef.h,
  2603.       estruct.h, line.c, opers.c, proto.h)
  2604.  
  2605.     + many changes in region.c, to make the region code rectangle-aware.
  2606.       new routines do_lines_in_region()/do_chars_in_line() to support
  2607.       simple cases of walking a region in two dimensions.  reimplemented
  2608.       yankregion using these, so it is now rectangle aware.  new blankline
  2609.       routine.  getregion() knows how to set up rectangular regions.
  2610.       (region.c)
  2611.  
  2612.     + changed getcol/getccol/gocol/gotocol to support rectangle code.
  2613.       (random.c)
  2614.  
  2615.     + changed the 'fulllineregions' boolean to a 'regionshape' descriptor.
  2616.       (exec.c, edef.h ibmpc.c, fences.c, insert.c, basic.c, main.c, word.c,
  2617.       x11.c, x11simp.c)
  2618.  
  2619.     + moved a bunch of region-related code from random.c to region.c
  2620.  
  2621.     + during undo, attempt to retain offset information for marks
  2622.       pointing at a line being replaced.  this makes exact marks
  2623.       last longer, and they're more important now with rectangles.
  2624.       (undo.c)
  2625.  
  2626.     + added extra column arguments to some of the line-processing
  2627.       routines, like entab/detab/trimline.  (insert.c, word.c)
  2628.  
  2629.     + fixed autoindent inconsistency, when breaking a brace-terminated
  2630.       line in half. (insert.c)
  2631.  
  2632.     + turned off the POISON #define.  this should have gone away a while
  2633.       ago (it fills memory with a bad patter when we free it). (line.c)
  2634.  
  2635.     + fixed old bug in the maintenance of MK.o when adjusting due
  2636.       to character edits. (line.c)
  2637.  
  2638.     + maintain record of longest line in a kill-register (line.c)
  2639.  
  2640.     + the histbuffer (_) command now stutters with a call to tgetc
  2641.       instead of kbd_seq, so that the pushback of an unused command
  2642.       works okay. (buffer.c)
  2643.  
  2644.     + anycb() now returns a pointer to the first modified buffer
  2645.       it encounters, so callers can treat the single buffer case
  2646.       specially.  changed callers as well: quit(), zzquit(), and
  2647.       spawn().  (buffer.c, spawn.c, main.c)
  2648.  
  2649.     + DOS video drivers are now selected more cleanly by name.  any
  2650.       driver can be selected from the command line (as long as its
  2651.       name starts with a digit).  drivers can have multiple entries
  2652.       corresponding to multiple names.  the same name can refer to
  2653.       two different entries, in cases where there are two resolutions
  2654.       for the same screen geometry. (main.c, ibmpc.c)
  2655.  
  2656.     + made backspacing be non-destructive in overwrite mode (insert.c)
  2657.  
  2658.     + eliminated the full-buffer-loop in undo.c, by using a cookie to
  2659.       identify the current undo operation, and using it to mark lines
  2660.       that have already been copied.  should be a big performance win
  2661.       for big files on slow machines.  (estruct.h, tmp.c, undo.c)
  2662.  
  2663.     + added support for setting the IBM color palette. (ibmpc.c, vile.hlp)
  2664.       
  2665. (kev)
  2666.     + updated help text for X11 (version.c, vile.hlp)
  2667.  
  2668.     + added command line arguments -row, -cols, -leftbar, and -rightbar.
  2669.       (x11.c)
  2670.  
  2671.     + fix for motif resizing (x11.c)
  2672.  
  2673.     + updated help text for X11 (version.c, vile.hlp)
  2674.  
  2675.     + added command line arguments -row, -cols, -leftbar, and -rightbar.
  2676.       (x11.c)
  2677.     + Set XmNresizePolicy to XmRESIZE_NONE in x_configure_window in
  2678.       order to fix resize problems with the Motif widget set in
  2679.       which the scrollbars were getting set very big or very small.
  2680.  
  2681.     + Support for scrollbars on the left in motif added.  openlook
  2682.       still needs to be done.
  2683.  
  2684.     + Added an initialization of XtNgeometry to XtVaAppInitialize
  2685.       setting this resource to NULL.  This overrides any user
  2686.       specified geometry request for the top level shell.  The
  2687.       geometry request is still available through the geometry
  2688.       variable which Tom added to the TextWindow structure.  Tom's
  2689.       code for parsing the geometry has been preserved, but
  2690.       enhanced somewhat to set default values for the number of
  2691.       rows or columns in case if the user specified only the
  2692.       position.  Width and height specifications are considered to
  2693.       be in character widths or heights instead of in pixels.  We
  2694.       let the initialization of the screen and pane widgets
  2695.       determine the size of the outer widgets.  (Much of this is
  2696.       as it was before...the only thing really new here is one
  2697.       line added in the call to XtVaAppInitialize).
  2698.  
  2699.     + Added code to set XtNgeometry on the top level widget if the
  2700.       user's geometry request specified the initial window
  2701.       position.  Only the positional information is set; the width
  2702.       and height are left out in order so that the sizes of the
  2703.       children will correctly influence the initial size of the
  2704.       top level shell widget.
  2705.  
  2706.     + Added scrollbar support for NO_WIDGETS by using core widgets
  2707.       for both the scrollbars and the resize grips.  Geometry
  2708.       management is handled with a simple homebrew widget
  2709.       subclassed from Composite.  I believe that the scrollbar
  2710.       resize mechanism is superior to that found in xvile
  2711.       implemented with the other widget sets (particularly
  2712.       OpenLook).  We might consider either totally getting rid of
  2713.       OpenLook support (how many people are going to use it?) or
  2714.       at the very least reimplement scrollbar resize with the same
  2715.       mechanisms used by the NO_WIDGETS version.  We might also
  2716.       consider dropping the Athena widget set since it seems to be
  2717.       buggy on some platforms.  The code will be easier to
  2718.       maintain though and users will not be so confused by the
  2719.       number of configuration options if we manage to drop a
  2720.       couple of the widget sets.  (A middle ground might be to use
  2721.       only the scrollbar widgets from various widget sets.  Much
  2722.       of the complexity comes from the differences in the Form and
  2723.       Pane widgets.  This way we could still use other widgets
  2724.       from the other widgets sets in the future.  This won't make
  2725.       the configuration any easier, but it might make the code
  2726.       easier to maintain.)
  2727.     
  2728.     + Modified manner in which the top of the scrollbar is set for
  2729.       all widget sets.  Rather than forcing dot to be in the
  2730.       middle of the screen, we attempt to leave dot where it is. 
  2731.       The top of the scrollbar is set based upon the top line of
  2732.       the window rather than dot.  This gives consistent scrolling
  2733.       behavior.  Tom's concerns that the "thumb" or slider remain
  2734.       visible even at the end of the buffer are also addressed
  2735.       with this approach.  When at the very end of the buffer (so
  2736.       that the screen has a large number of tildes on it),
  2737.       xt-vile and xaw-vile will still display a sliver indicating
  2738.       the portion of the buffer actually shown.  If this is
  2739.       undesirable, ntildes should be set to something small (like
  2740.       zero).  Once this is done, the thumb will maintain a uniform
  2741.       size from the top of the buffer to the bottom.  I've tested
  2742.       these versions with small buffers (buffers containing zero
  2743.       thru 2*curwp->w_ntrows lines) and the appearance seems to be
  2744.       consistent throughout.  Large buffers (> 4000 lines) seem to
  2745.       still have a slight problem at the end of the buffer in
  2746.       xaw-vile).
  2747.  
  2748.     + Made the insertion bar the mouse cursor (for the xvile
  2749.       screen only) in all versions.
  2750.  
  2751.     + fixed x_working so that xvile may once again be interrupted.
  2752.  
  2753.     + added missing assignment so that insertion bar is now really
  2754.       used when the cursor enters window corresponding to the xvile
  2755.       screen widget.
  2756.  
  2757.     + implemented scrollbarOnLeft resource for NO_WIDGETS version.
  2758.  
  2759.     + nuked ATHENA_WIDGETS code.  This code was eliminated because
  2760.       it was observed that the NO_WIDGETS version functions as
  2761.       well if not better than the ATHENA_WIDGETS version and it
  2762.       runs on machines which have a buggy (Athena) widget library. 
  2763.       On the down side, it will be somewhat harder to add new
  2764.       widgets in the future if this is desired.
  2765.  
  2766. (tom)
  2767.     + modified kevin's resources in x11.c to use "geometry" rather than
  2768.       "rows" and "columns".  Adjusted logic so that geometry resource means
  2769.       chars, not pixels.
  2770.  
  2771. Changes for vile 4.0 (not released Tue Feb 22, 1994)
  2772. (pgf)
  2773.     + fix core from one-too-many chars to strncpy(). (eval.c)
  2774.  
  2775.     + change #elif constructs in version.c to oldstyle #else/#if
  2776.  
  2777.     + applied contributed patch for implementing 0^D in insert mode,
  2778.       and expanded it to implement ^^D. (insert.c)
  2779.  
  2780.     + insert mode now parses function key #c pairs returned from
  2781.       kbd_key(), so arrow keys work.  (input.c insert.c)
  2782.  
  2783.     + no longer turn off dot recording for non-redoable commands if
  2784.       we're in insert mode. (exec.c)
  2785.  
  2786.     + display high-bit keyboard input on message line in either octal
  2787.       or hex, depending on global value of unprintable-as-octal. (bind.c)
  2788.  
  2789.     + implemented "alt-function-prefix" to make function-key parsing
  2790.       in insert mode less ambiguous.  (edef.h, insert.c, input.c, cmdtbl,
  2791.       main.c)
  2792.  
  2793.     + new help for arrow keys, and cd/pwd commands.  also some more
  2794.       pcvile differences.  (vile.hlp)
  2795.  
  2796.     + fixed djgpp implementation of get_vga_bios_info, by packing
  2797.       the structs int 10/1b deals with.  this makes 43 and 50 line modes
  2798.       work.  (still don't work with watcom, though) (ibmpc.c)
  2799.  
  2800.     + made :memory work under DJGPP    (main.c)
  2801.     
  2802.     + made catnap() work under DJGPP, so flash mode works now. (random.c)
  2803.  
  2804.     + added more dependencies to makefile.djg
  2805.  
  2806.     + apply patch for honoring the trailing $ in a tag lookup patterns.
  2807.       (tags.c, eric krohn)
  2808.  
  2809.     + make animation of buffer list take into account whether it contains
  2810.       an apropos list or a full "decribe bindings" (bind.c)
  2811.  
  2812.     + some makefile cleanup, for mips and NeXT, and compulsion's sake.
  2813.  
  2814.     + modified heuristic for setting dos-mode on an ambiguous (usually
  2815.       empty) buffer -- only set it if the global mode is set, and if
  2816.       we're actually running on DOS. (main.c, random.c, file.c, estruct.h)
  2817.  
  2818.  
  2819. (tom)
  2820.     + added new function 'parse_pathlist()' to encapsulate the logic used
  2821.       in lookup of vile.hlp (PATHLOOK) and the CDPATH environment variable
  2822.       (fixes buffer overflow in the latter).
  2823.  
  2824.     + corrected treatment of arrow-keys (in history.c) broken in 3.65
  2825.       using new function 'kbd_escape_seq()' (input.c, history.c).
  2826.  
  2827.     + modified ifdef's in 'interrupted()' to test type-ahead only
  2828.       for DJGPP configuration (main.c).
  2829.  
  2830.     + restored code that translated CDSENSE to driver type, because it did
  2831.       not set screen defaults to maximum size (ibmpc.c)
  2832.  
  2833. (kev)
  2834.     + I have added scrollbars to xvile.  I made a copy of x11.c,
  2835.     modified it (heavily) and called it xt.c.  [ I've renamed it x11.c,
  2836.     and moved the old x11.c to x11simp.c.  We can merge later. ] Minor
  2837.     modifications were necessary to several other of the source files. 
  2838.     (display.c, estruct.h, main.c, makefile, and window.c.)
  2839.     xt.c uses the X toolkit and the Athena widget set to provide the
  2840.     following new functionality:
  2841.  
  2842.         A scrollbar for each vile window.  The standard translations
  2843.         provided by Athena scrollbars control movement of text in the
  2844.         vile window.
  2845.  
  2846.         Resize of vile windows by moving the border between
  2847.         corresponding scrollbars (with the mouse).
  2848.  
  2849.         Splitting and deleting of windows may now be done with the
  2850.         mouse.  Ctrl<Btn1Down> on a scrollbar will cause the scrollbar
  2851.         and the corresponding vile window to be split with the new
  2852.         border at or near the mouse cursor.  Ctrl<Btn2Down> will delete
  2853.         the window.  Ctrl<Btn3Down> will make the corresponding window
  2854.         the only window.
  2855.  
  2856.         Problems with getting the input focus set properly have been
  2857.         fixed.
  2858.  
  2859.         Quitting via the window manager works better.  It basically
  2860.         works the same as if you had typed :q.  vile will display a
  2861.         message if there are any unwritten buffers.  We may eventually
  2862.         want to pop up an alert box when attempting to quit with
  2863.         modified buffers from the window manager.
  2864.  
  2865.     + added "ntildes" variable, which controls max number of tildes
  2866.       displayed at the end of a buffer, expressed as a percentage of
  2867.       window size.  [pgf made it a percentage] (edef.h eval.c display.c
  2868.       modetbl vile.hlp)
  2869.  
  2870.     + added support for the Motif and OpenLook widget sets.  
  2871.  
  2872.     + fixed bug where focusFollowsMouse would take us out of the message
  2873.       line when we should remain there.
  2874.  
  2875.  
  2876. This change log started on Tue Feb 22, 1994.
  2877.  
  2878.