home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vile-src.zip / vile-8.1 / CHANGES.R7 < prev    next >
Text File  |  1998-07-02  |  76KB  |  1,536 lines

  1. Changes for vile 8.0 (released Sat May 30, 1998)
  2.  
  3. Changes for vile 7.5 (released Sat May 30, 1998)
  4.  
  5.     + document problem with static initialization of union in CMDFUNC.
  6.     + review g++ warnings, use TYPECAST macro in the newer "harmless" const
  7.       warnings.
  8.  
  9.  (tom) 980529 (p)
  10.     + move mlsave[] into edef.h, updating logic so that the last error
  11.       message during initialization will be displayed properly.
  12.     + add logic to main.c to popup messages generated during initialization
  13.       as per popup-msgs mode (reported by Brendan O'Dea).
  14.     + modify logic for do_source() so that no error is reported if the
  15.       default .vilerc is not found (reported by Brendan O'Dea).
  16.  
  17.  (tom) 980528 (o)
  18.      + fix minor memory leak in free_majormode()
  19.     + add a "+fork" option to xvile to override forkOnStartup resource.
  20.     + add search.pl to the list of supported Win32 perl scripts and add a
  21.       usage comment to same (patch by Clark Morgan).
  22.     + plug hole in x_open by setting maxscrollbars to zero, fixing a
  23.       scenario where the Motif version would crash (patch by Larry Gensch).
  24.  
  25.  (tom) 980527 (n)
  26.     + make search rule for startup file and :so consistent - and always
  27.       using $VILE_STARTUP_PATH if the file is not found in the current or
  28.       $HOME directory - using new function 'do_source()' (reported by
  29.       Arnold Robbins).
  30.     + add Clark Morgan's name to the modules he wrote (w32cbrd.c, w32misc.c,
  31.       w32pipe.c).
  32.     + rename perl-api.doc to perl.doc, updated (patch by Brendan O'Dea).
  33.     + modify too-restrictive test for infinite loop in scanner() to work
  34.       with 'n' command after "?.*" expression (reported by Kevin Buettner). 
  35.  
  36.  (kev) 980525 (m)
  37.      + estruct.h (do_mark_iterate): Restore location of
  38.       api_do_mark_iterate_helper to its pre-"l" position.  Moved
  39.       declaration of mp so that it's available for expansion of
  40.       api_do_mark_iterate_helper.
  41.     + perl.xs: Added Brendan O'Dea as an author.
  42.       (Vile::command, Vile::Buffer::command): Set discmd so that
  43.       prompts are not displayed.
  44.     + perl/search.pl: New file.
  45.     + makefile.in (search.pl): Added to PERL_SRC and INSTALL_PERL
  46.       variables.  Added install target.
  47.  
  48.  (tom) 980523 (l)
  49.      + remove _WIN32 ifdef's from perl.xs, so that $VILE_LIBRARY_PATH
  50.       is supported on Unix as well.
  51.      + add vile-pager script to macros directory.
  52.     + modify makefile.in to install Perl scripts in $(datadir)/perl
  53.       (reported by Kevin Buettner).
  54.     + correct typo in perl.xs: CODE where PPCODE should have been used
  55.       (patch by Kevin Buettner).
  56.     > patch by Brendan O'Dea:
  57.     + some ifdef fixes for OPT_EVAL, OPT_NAMEBST and OPT_SELECTIONS when
  58.       extensions are disabled.
  59.     + correct placement of api_do_mark_iterate_helper() in do_mark_iterate
  60.       macro.
  61.     + quiet a warning in the Perl interface when an optional script is
  62.       not found for inclusion.
  63.     > patch by Clark Morgan:
  64.     + modify the win32 build environment so that perl scripts are copied
  65.       from .\perl to %VILE_LIBRARY_PATH\perl
  66.     + modify perl.xs to patch the new library location into @INC
  67.  
  68.  (kev) 980522 (k)
  69.      + perl.xs (mlreply, mlreply_dir, mlreply_file, mlreply_no_opts):
  70.       Use the PPCODE: directive instead of the CODE: directive.  Get
  71.       rid of assigning RETVAL and the OUTPUT: directive.  Use XPUSHs
  72.       to return the values.  Also changed the type to void instead of
  73.       SV *.
  74.  
  75.  (tom) 980521 (j)
  76.      + modify first item in VILE_STARTUP_PATH to be $(datadir).
  77.      + add *.pl to makefile.in's install rules if configured --with-perl
  78.      + move *.pl to perl subdirectory
  79.     + move *.rc to macros subdirectory
  80.     + move *.doc to doc subdirectory, as well as README.MENU, renamed to
  81.       menus.doc, and README.CFG, renamed to config.doc
  82.     + minor fix for HPUX compiler options in CF_ANSI_CC_CHECK configure
  83.       macro.
  84.     + newer CF_IMAKE_CFLAGS macro adds IMAKE_LOADFLAGS to makefile.in
  85.     + add configure-test for strerror, use it if available (reported by
  86.       Ian A Watson).
  87.     + change 'strdup' call in select.c to 'strmalloc', to build on VMS 6.2,
  88.       with DEC C 4.1-001 (reported by Sackett Andrew
  89.       <sackett@exchange1.cmh.on.ca>).
  90.     + change c_action in Brendan's patch to a union, eliminating casts.
  91.     > patch by Brendan O'Dea:
  92.     + Procedures now behave more like builtin functions--they may be bound
  93.       to keystrokes and listed in the [Binding List] pop-up (for which an
  94.       optional help string may be supplied):
  95.         store-procedure foo "some descriptive text"
  96.         ...
  97.         ~endm
  98.         bind-key foo ^A-f
  99.       this appears under `:describe-function foo' as:
  100.         "foo"                           M-f
  101.           ( some descriptive text )
  102.       Notes/Bugs:
  103.         * describe-key doesn't work yet.
  104.         * setting the MOTION/OPER flag is not implemented for procedures
  105.           --not sure whether it ever could/should be.
  106.         * the method used to update the [Binding List] requires *lots* of
  107.           passes through the tree.
  108.       Perl stuff (strings to eval or coderefs) can also be put into the
  109.       command table under a name--described in the perl.xs comments.
  110.         Vile::register grep => 'hgrep', 'recursive grep', 'hgrep.pl';
  111.       the Vile::register_motion and register_oper variants additionally set
  112.       the MOTION or OPER flag:
  113.         *cb = \$Vile::current_buffer;
  114.         Vile::register_motion 'my-forward-line-at-bol' => sub {
  115.             $cb->dot((scalar $cb->dot) + 1, 0);
  116.         };
  117.         Vile::register_oper 'my-delete-til' => sub { $cb->delete };
  118.  
  119.  (tom) 980520 (i)
  120.     + correct force-console entry in modetbl (patch by Clark Morgan)
  121.  
  122.  (tom) 980519 (h)
  123.      + correct const-cast warnings for x_set_icon_name() and
  124.       x_set_window_name().
  125.      + correct fallback prototype for mktemp, which should not have a 'const'
  126.       parameter.
  127.     + vile-pas-filt should treat '_' as an identifier character
  128.       (reported by Radek Liboska).
  129.     > patches by Clark Morgan for Win32 and Perl configurations (tested on
  130.       WinNT 4.0 and Win95):
  131.     + Winvile's read pipe and region filter operations now create implicit,
  132.       hidden console windows (i.e., black console windows don't pop up and
  133.       disappear anymore).  Exception:  Win95's command.com hangs if it
  134.       attempts to communicate with implicitly created consoles.
  135.       Consequently, a new boolean mode (called "force-console") has been
  136.       created which specifies whether or not consoles are created
  137.       explicitly prior to creating a child process or implicitly when the
  138.       child process is exec'd.  By default force-console is only set when
  139.       the host is win95 and the current shell is command.com
  140.     + Prevent ^C/^Break in a console subshell from kernel faulting win95.
  141.     + If the user's shell is a unix clone derived from the Bourne shell,
  142.       add an extra layer of quoting that preserves Unix argument semantics.
  143.       For more details, refer to the function mk_shell_cmd_str() in the
  144.       file w32misc.c
  145.     + new file w32misc.c + some common win32 code in w32pipe.c moved to
  146.       w32misc.c
  147.     + modify makefile.wnt to add two new build configurations to the Win32
  148.       env:  vile-with-perl and winvile-with-perl.
  149.     + add VILE_LIBRARY_PATH environment variable to perl.xs to locate
  150.       the help file.
  151.     + add new file mkprlenv.wnt, which is included by makefile.wnt
  152.  
  153.  (tom) 980515 (g)
  154.      + modify quote() function to show the accumulated number for ^Vnnn.
  155.      + change 'value' parameter of SetVarValue() to eliminate a const-cast
  156.       warning, which in turn led to applying const to TTrez interface.
  157.      + change category of 'sideways' mode to allow setting it for internal
  158.       buffers, such as [Help].
  159.     + add a range-test for rows and columns in movecursor() to avoid
  160.       passing negative coordinates to tcapmove when setting the 'sideways'
  161.       mode.
  162.     + distinguish MS-DOS drives from UNC pathnames (patch by Ed Henderson)
  163.  
  164.  (tom) 980513 (f)
  165.      + replace global variable curswval with the corresponding function
  166.       calls, make nextsw a function next_sw(), so that shift-width is
  167.       computed correctly as needed (reported by abigail@fnx.com and Ian A
  168.       Watson <watson_ian_a@lilly.com>)
  169.     + correct handling of command-line options in crypt.c (patch by
  170.       Paul Fox).
  171.     + correct missing check for empty line in screen_string, which would
  172.       cause a core dump if :show-variables were run on an empty buffer
  173.       (reported by Ed Henderson <enhenderson@micron.com>, patch by Kevin
  174.       Buettner).
  175.      + updated modes.doc to match implementation of fences.
  176.  
  177.  (kev) 980511 (e)
  178.     + api.c (api_motion): Revised the settings for the following
  179.       global flags: clexec, discmd, disinp, isnamedcmd.  Some of
  180.       these were not getting set or were getting set in such a
  181.       way so as to either cause core dumps or incorrect behavior.
  182.     + bind.c (kbd_erase, kbd_erase_to_end): Don't erase anything if
  183.       disinp is FALSE.  Reason: If we didn't display anything to
  184.       begin with, there should be nothing to erase.
  185.     + history.c (hst_append): Don't append to the history buffer if
  186.       disinp is FALSE.
  187.     + input.c (editMinibuffer): Make sure the input character is
  188.       added to the buffer when disinp is FALSE.
  189.     + perl.xs (svrs): New variable which represents the input
  190.       record separator.  This is necessary because the symbol
  191.       corresponding to rs is not exported from the Win32 DLL for
  192.       perl5.00402.
  193.       (perl_init): Initialize svrs.
  194.       (READLINE): Use svrs instead of rs.
  195.       (set): Call api_setup_fake_win() to make sure that local
  196.       sets are done to the correct buffer.
  197.       (set_region): Renamed from setregion.  setregion is still
  198.       maintained as an alias.  I'm not entirely sure I like the new
  199.       name better, but it is at least consistent with set_selection.
  200.       (selection_buffer, set_selection): New methods for getting/setting
  201.       the selection.
  202.     + proto.h, select.c (get_selection_buffer_and_region): New function.
  203.  
  204.  (kev) 980506 (d)
  205.     + fences.c (comment_fence): Call scanboundry() before calling
  206.       scanner() to set the scanner's boundary.  This fixes a bug
  207.       in which the corresponding fence would sometimes not be matched
  208.       due to an old scan boundary sitting in the middle of the region
  209.       delimited by the two fences.  A quick way to reproduce the bug:
  210.       Search for something in the middle of a multi-line comment.
  211.       Move your cursor to the beginning or end of the comment.  Press
  212.       the '%' to try to move to the other end of the comment.  Notice
  213.       that it doesn't.  (Or it does, if the bug has been fixed!)
  214.     + input.c (editMinibuffer): Some hacks for 'i', 'a', 'I', and 'A'.
  215.  
  216.  (tom) 980506 (c)
  217.     + modify getregion() to handle the special case where a region is given
  218.       extending to the end of file, e.g., "^A~]", when DOT is on the last
  219.       section, will set DOT to the first line past the file, e.g., the
  220.       buf_head line (reported by Adam Denton).
  221.     + modify return from kbd_reply() so that macros behave more
  222.       consistently with interactive use, by returning an ABORT when
  223.       name-completion fails.
  224.     + modify handling of mini-edit character to allow it to be bound to the
  225.       same code as abortc (e.g., escape).
  226.     + correct a case where entering mini-edit character would allow name
  227.       completion to exit from kbd_reply().
  228.     + modify handling of minibuffer editing commands so that non-motion
  229.       commands (such as 'i' and 'a') are treated as errors rather than
  230.       implicitly inserting them into the buffer.
  231.  
  232.  (tom) 980503 (b)
  233.      > patch by Clark Morgan
  234.     + correct bug that made winvile font-dialog die on Win95, using example
  235.       from Petzold for processing messages associated with the system menu.
  236.     + added a menu separator to the system menu
  237.     + gave "Font" a  keyboard accelerator
  238.     + added a cast to keep the compiler from barking about a call to
  239.       EnumFontFamilies().
  240.  
  241.  (kev) 980503 (a)
  242.      + api.c (api_setup_fake_win, api_dotinsert): Set MDNEWLINE to
  243.       false when deleting a newline before the end of a file.
  244.       (api_dotgline): Unused, #if 0'd out.
  245.     + makefile.in (vile-perl-api.pod, vile-perl-api.doc,
  246.       vile-perl-api.html, vile-perl-api.man): New targets.  I'm going
  247.       to let Tom decide which of these should be installed and where.
  248.     + perl.xs: Converted the inline documentation to be almost pod
  249.       format.  There is still a preprocessing step needed to convert
  250.       to a pod file.  I also rearranged the order of the methods
  251.       so that they'd be roughly alphabetical.
  252.       (svgetline, svgetregion, svgettors): Don't look at end
  253.       marker any more to determine end of region.  Instead,
  254.       use the region length to keep track of how many characters
  255.       are left in the region.  (I added a comment on the problems
  256.       associated with the end-of-region mark to the code just
  257.       before svgetline()).
  258.       (setregion): Rewritten to call getregion() for setting up
  259.       the region.  This way the length gets set right.
  260.       (perl_default_region): Make sure the region is really being
  261.       computed by getregion().
  262.       (do_perl_cmd): Fixed the code so that range specs work
  263.       again.
  264.  
  265. Changes for vile 7.4 (released Fri May 1, 1998)
  266.  
  267.  (tom) 980501
  268.     + change table lookups in match_complex() and global_val_init() to
  269.       work with CSet.
  270.      + change WATCHTYPE from an enum to an unsigned int, since TurboC did
  271.       not accept that in prototypes.
  272.     + increase LEN_BUFFER in mktbls.c to accommodate renaming of VI_NL
  273.       (caused compile problem with Solaris 2.5.1 cc, but is still limited
  274.       to allow test-compiles with TurboC).
  275.     + make declarations of x_watchfd() x_unwatchfd() consistent, to compile
  276.       with unproto on SunOS 4.x
  277.  
  278.  (kev) 980429 (za)
  279.     + finderr.c (predefined): Add hgrep pattern to the predefined
  280.       regular expressions for the error finder.  (Patch from Clark
  281.       Morgan.)
  282.     + hgrep.pl: Added Clark's error finder comment.
  283.       Removed comment about me about to make massive changes which'll
  284.       change the interface drastically.
  285.       (hgrep): Don't search in files named 'tags'.  (Suggested by
  286.       Clark Morgan.)
  287.     + eval.c, proto.h (stenv): New function for setting vile's
  288.       variables (from perl or whereever).
  289.     + perl.xs (working): Added OPT_WORKING ifdefs.  (Description
  290.       of problem from Clark Morgan.)
  291.       (set): Handle perl variables as well as modes.
  292.       (buffers): New method which retrieves a list of all buffers.
  293.  
  294.  (tom) 980429 (z)
  295.      + trim trailing whitespace from .c and .h files
  296.     + implement font-selection in winvile, added to control menu.  This
  297.       works passably, though you must press ^L to repaint if the character
  298.       size does not change. (Italic fonts are clipped a little also, but usable).
  299.     + add logic to ntwinio.c so that winvile user can use control modifier
  300.       to mouse button to perform rectangular selection, as in xvile
  301.       (requested by Richard A Ward <wardra@rss.rockwell.com>).
  302.     + correct ":e!" command so that if user asks to reread the unnamed
  303.       buffer, that vile simply clears it, rather than passing a null
  304.       filename to readin() (reported by Keith Williams
  305.       <keith@archelon-us.com>).
  306.     + rename symbol NL to VI_NL, and the termcap symbols in tcap.c
  307.       to use "tc_" prefix to avoid conflicts with curses.h on OSF/1 3.2
  308.     + add pas-filt.c and corresponding vile-pas-filt program (request by
  309.       Radek Liboska <liboska@tereza.uochb.cas.cz>)
  310.     + modify c-filt.c so that it reads all command-parameters as keyword
  311.       files.
  312.     + correct two errors in c-filt.c (did not handle continued string
  313.       literals - reported by Clark Morgan - and did not handle preprocessor
  314.       lines with leading whitespace.
  315.     + correct minor formatting nit in [Settings] buffer, adding a blank
  316.       line between the multi-column and single column buffer settings.
  317.     + make a more-useful message when describe-function is applied to
  318.       a user-defined procedure.
  319.      > patch by Clark Morgan:
  320.     + Winvile gets its own unique $progname value.
  321.     + The ';' register is made accessible to all versions of vile.  The
  322.       availability of the ';' and '.' registers to all versions of vile is
  323.       documented in vile.hlp .
  324.     + New win32 mode called "scroll-pause" added, which inserts a small
  325.       delay in the console editor's scrolling code if required by user's
  326.       video HW.  Documented in vile.hlp .
  327.  
  328.  (kev) 980427 (y)
  329.     + history.c (WillGlue): Allow '\r' to be glued.
  330.       (edithistory): Transform '\n' into '\r' for insertion into the
  331.       history buffer.
  332.     + input.c (eol_history): Allow '\r' to match '\n'.
  333.     + modes.c (choice_to_code): Do case insensitive comparisons.  This
  334.       permits TRUE and FALSE to be used as boolean values as well as
  335.       'true' and 'false'.  (The perl interface was being given the
  336.       uppercase values to return.  Though it could be argued that I
  337.       should maybe convert these to 0 and 1...)
  338.       (adjvalueset, set_mode_value): Split functionality of adjvalueset
  339.       into adjvalueset which (still) does the prompting and the
  340.       new function set_mode_value which does the setting.  Having
  341.       a setter which does no prompting makes it easier to call from
  342.       other places (like the perl interface.)
  343.     + proto.h (set_mode_value): New declaration.
  344.     + perl.xs (perl_prompt, perldo_prompt): More or less renamed
  345.       from the old perl and perldo.  perl and perldo still exist,
  346.       but they are small wrappers which make managing the history
  347.       easier.
  348.       (current_position): Alias for dot.
  349.       (READLINE, mlreply, mlreply_no_opts, mlreply_file, mlreply_dir):
  350.       Put calls to hst_glue() in so that the history mechansism will
  351.       work right.
  352.       (Vile::set, Vile::get, Vile::Buffer::set, Vile::Buffer::get):
  353.       New methods.
  354.  
  355.       Brendan O'Dea contributed the following changes to perl.xs:
  356.  
  357.         I have nuked the original perldo/replace_line mechanism
  358.         and arranged such that both perl and perldo feed a string
  359.         to eval to the same [static] function after getting the
  360.         user's input.
  361.  
  362.         The perldo wrapper massages the string into an implicit
  363.         loop if required in pretty much the same way as Perl does
  364.         for the -n/-p options.
  365.  
  366.         Additionally I've modified the way PRINT works to the
  367.         minibuffer so that it handles embedded newlines and joins
  368.         on $,
  369.  
  370.         The options format is almost the same as used by perl, and
  371.         defaults to `-lpi' which was how it originally worked.
  372.         Example:
  373.  
  374.         :r $MAIL :%perldo print if /^From /^M-00ni
  375.  
  376.         Two minor problems are that the history pastes the options
  377.         onto the command, and there is a minor glitch with `-lpi'
  378.         which causes a trailing newline to be appended to the
  379.         buffer.
  380.  
  381.  (tom) 980426 (x)
  382.     + modify :-line line specification parsing so that statements such
  383.       as
  384.         :.,.+2,+3,-4;99p
  385.       work as in vi.  Both the repetition for commas and the character
  386.       class for semicolon were missing.
  387.     + modify :-line line specification parsing so that statements such
  388.       as
  389.         :1,w filename
  390.         :.w filename
  391.       work as in vi.  Vi accepts an empty string (e.g., between the "," and
  392.       "w") as ".", and does not require that both limits in a range be
  393.       given.  Previous behavior of vile would prompt, in the latter
  394.       example, when the space after "w" is typed, for the number of lines.
  395.      + corrected :-line parser bug which caused state hang, e.g, when
  396.       typing
  397.         <esc>:a<backspace>1<return>
  398.       vile would be expecting a command verb when the '1' is read, so
  399.       it would only allow the user to abort the command.
  400.     + modify end-character parameter of readpattern so that it is not
  401.       necessary to escape a '?' when doing a reverse search.
  402.     + correct logic of set_rect_columns() so that reversed rectangular
  403.       selection (where DOT > MK) gives the right number of columns
  404.       (reported by Kuntal M. Daftary).
  405.     + remove spurious comma in enum WATCHTYPE (reported by Larry Gensch)
  406.      + update README.MENU with "cmd" keywords for the examples of search
  407.       menu entries.  Other minor documentation updates.
  408.     + tested xvile with ElectricFence, doalloc and Purify.  (The problems
  409.       with 'working' mode did not appear on SunOS or Solaris, but did on
  410.       Linux).  Minor fixes to ifdef's to build the test configuration.
  411.     + remove chgd_fences callback from the newer regular-expression
  412.       fences modes, since that function applies only to fence-pairs.
  413.     + modify 'working' mode so that xvile simply sets the watch cursor.
  414.       Though the "working..." message would be nice to have, it introduces
  415.       problems with X Windows to cause events which may interrupt the
  416.       normal event processing.  The new scheme sets a flag which is tested
  417.       in the event loop; the watch cursor will therefore not appear
  418.       immediately, but it is still automatic.  (prompted in part by a
  419.       bug report by Mike Peercy <peercy@sierravista.com>).
  420.  
  421.  (tom) 980424 (w)
  422.     + make xvile menu entries "work" which rely on executing from the
  423.       :-line, by using "cmd" prefix for "apropos", and new function
  424.       >s for describe-key.  (The "cmd" is a kludge - we should revisit
  425.       this later, since it does not help if we want to process parameters
  426.       from the macro before running out & reverting to the :-line).
  427.     + modify describe-key so that it prompts for a keycode which is not
  428.       mapped.
  429.     + add new function >s, which prompts for a keycode which is not
  430.       mapped, e.g., "#1" for function-key-1.
  431.     + add note to vile.hlp about the use of backtic in shell expressions
  432.       (patch by Clark Morgan).
  433.     + revised fences so that the C-preprocessor and C-comment functions
  434.       are parameterized in terms of regular expressions, making one mode
  435.       per expression.  As such, they are reusable for majormodes.
  436.     + remove logic from x11.c for is_color_cursor, to make cursor visible
  437.       on reverse-video areas.
  438.     + add new mode mini-hilite, which controls the appearance of the :-line
  439.       when user toggles into mini-edit mode.
  440.     + make ^G toggle in the :-line editing rebindable, as the character
  441.       'mini-edit'.
  442.     + correct logic for ^G toggle so that user can insert that character
  443.       into a reply by quoting it.
  444.     + correct core-dump due to vtinit() calling 'imworking()', which was
  445.       happening when executing a command such as ":!resize -s 24 80".
  446.     + correct core-dump when user types ^G^V in a :-line prompt (reported
  447.       by Shawn Halpenny <malachai@iname.com>).
  448.  
  449.  (kev) 980422 (v)
  450.     + api.c (curwp_visible): Renamed from curwp_after.  No longer static.
  451.       (linsert_chars): Don't suppress the newline when that's the
  452.       only character being inserted.  Thanks to Brendan O'Dea for
  453.       providing me with a test case which demonstrated this bug.
  454.       (api_motion): Set clexec and discmd to avoid printing on the
  455.       message line.
  456.       (api_swscreen, api_update): Don't detach the fake windows anymore.
  457.     + api.h (curwp_visible): Declared.
  458.     + estruct.h (is_fake_window): New macro.  Changed all callers
  459.       of is_fake_win() (which was a function) to call is_fake_window
  460.       instead.
  461.       (is_visible_window, for_each_visible_window): New macros.
  462.     + buffer.c, display.c, exec.c, file.c, finderr.c, history.c,
  463.       ibmpc.c, modes.c, oneliner.c, select.c, window.c, x11.c
  464.       (for_each_visible_window): Changed some occurrences of
  465.       for_each_window to for_each_visible_window.  Any code which
  466.       really needs to look at all the windows, whether fake or
  467.       visible still uses for_each_window.
  468.     + perl.xs (keystroke): Make sure that curwp doesn't point
  469.       at a fake window before attempting to get a keystroke.
  470.       Also fixed the nonwaiting version so that it works.
  471.       (beep): New method.
  472.     + proto.h, window.c (is_fake_win, detach_fake_windows,
  473.       reattach_fake_windows): Removed these functions.
  474.     + shell.pl: Extended it's functionality.  It now includes enough
  475.       terminal emulation to do some simple line editing.  (Enough for
  476.       bash to work in vi mode.)
  477.     + window.c (push_fake_win, pop_fake_win): Don't increment/decrement
  478.       the b_nwnd field of a buffer when pushing/popping.  This field
  479.       indicates the number of visible WINDOW structures that a buffer
  480.       has.  (#if 0'd out for now.  Need to remove altogether at some
  481.       future date.)
  482.     + x11.c (grip_moved): Fixed both OpenLook and Motif versions so
  483.       that they don't delete the window when it is shrunk to a size
  484.       less than 1 line.  Although this make a certain amount of sense,
  485.       it can be quite annoying to a user to lose a window from a slip
  486.       of the hand.  Note that there are still some problems with this
  487.       code.  Windows that are made really small don't always end up
  488.       really small (reported by Paul Askounis).
  489.       (x_watchfd): Cast third argument of XtAppAddInput to an XtPointer.
  490.  
  491.  (kev) 980419 (u)
  492.      + ansi.c, borland.c, dumbterm.c, ibmpc.c, ntconio.c, ntwinio.c,
  493.       os2vio.c, tcap.c, termio.c, vmsvt.c (null_t_watchfd,
  494.       null_t_unwatchfd): Added to term structure initializations.
  495.     + estruct.h (WATCHTYPE): New enumerated type.
  496.       (t_watchfd, t_unwatchfd): New fields in the TERM structure.
  497.       (TTwatchfd, TTunwatchfd): New macros for calling the watch/unwatch
  498.       functions.
  499.     + makefile.in (watch.c, watch.o): Added to the appropriate targets.
  500.     + api.c (linsert_chars): Made more efficient.  Handle newlines
  501.       at end of buffer properly.
  502.       (api_gotoline): Allow DOT to be position at end of buffer.
  503.       (api_motion): Fixed bug which was calling early return.  (Thanks
  504.       to Sean Ahern for finding this one.)
  505.       (api_swscreen): Detach/reattach fake windows.
  506.       (api_update): New function.
  507.       (propagate_dot): New function.
  508.       (api_command_cleanup): Call propagate_dot; don't do this work
  509.       directly anymore.
  510.     + api.h (api_update): Declared.
  511.     + buffer.c (renamebuffer): New function.
  512.       (namebuffer): Moved some of the functionality to renamebuffer.
  513.       Call renamebuffer to do the work.
  514.     + perl.xs (GIMME_V, G_VOID): Define in terms of GIMME and G_SCALAR
  515.       if not already defined.  (Thanks to Brendan O'Dea for pointing
  516.       this out.)
  517.       (perl): Don't do initializations/cleanups of Vile::current_buffer
  518.       if called recursively.
  519.       (perl_init): Cause Vile::Buffer::PRINTF to be defined.
  520.       (svcurbuf_set): Put return statement in.
  521.       (stringify_coderef, perl_free_callback, svgetline, svgetregion,
  522.       svgettors): New functions.
  523.       (INITMESSAGE, ENDMESSAGE): Removed these nvi remnants.
  524.       (PRINT): Handle input record separator and input field separator.
  525.       (READLINE): Rewritten to handle the record separator correctly;
  526.       call svgetline, svgetregion, or svgettors as appropriate.
  527.       (attribute_cntl_a_sequences): Pass the region shape when calling
  528.       attribute_cntl_a_seqs_in_region().
  529.       (fetch, attribute, buffername, filename): New methods.
  530.       (Warn): Minor cleanup.
  531.       (mlreply, mlreply_no_opts, mlreply_file, mlreply_dir):  Allow
  532.       either a TRUE or FALSE status to set the return value to a
  533.       string.  The other status codes cause undef to be returned.
  534.       Thanks to Brendan O'Dea for diagnosis and patch.
  535.       (command): Adjust the way docmd is called to match new extra
  536.       parameter introduced in patch t (or thereabouts).
  537.       (keystroke, working, update, watchfd, unwatchfd) New methods.
  538.       Also throughout this file (perl.xs), there was a lot of minor
  539.       reformatting.  A few new comments were even added.
  540.     + proto.h (renamebuffer, attributeregion_in_region, null_t_watchfd,
  541.       null_t_unwatchfd, watchfd, unwatchfd, dowatchcallback,
  542.       detach_fake_windows, reattach_fake_windows): Declared.
  543.       (attribute_cntl_a_seqs_in_region): New parameter.
  544.     + select.c (attributeregion_in_region): New function.
  545.       (attribute_cntl_a_seqs_in_region): New parameter for passing
  546.       the shape of the region.  Use shape parameter for setting region
  547.       up properly.
  548.     + shell.pl, tailf.pl: New example perl scripts.  Not really complete
  549.       yet, but they demo some of the new facilities.  (Maybe we should
  550.       create a demo directory?)
  551.     + watch.c: New file containing fd watching framework.  Will probably
  552.       add timer management here as well.
  553.     + window.c (detach_fake_windows, reattach_fake_windows): New functions.
  554.       Actually, I'm not convinced anymore that this is the right way to
  555.       do it and these will probably go away.
  556.     + x11.c (x_watchfd, x_unwatchfd, watched_input_callback): New
  557.       functions.
  558.  
  559.  (tom) 980417 (t)
  560.     + modify interface of 'docmd()' to allow caller to set clexec, allowing
  561.       menu.c to invoke this and cause commands to prompt interactively.
  562.     + modify 'get_executable_dir()' to use 'flook()' to deduce xvile's
  563.       location, so that new_vile menu-entry works when the full path is not
  564.       given (reported by Lance Heller <lheller@dart.wcom.com>).
  565.     + restore search-behavior on DOS, NT and OS/2 for startup file.  These
  566.       systems have no $HOME, so we look along the $PATH.
  567.     + correct/extend configure test for isready_c macro:  add a case for
  568.       UWIN, check for end of list, add a definition for SYS_WINNT.
  569.  
  570.  (tom) 980414 (s)
  571.      + correct change to dofile in 7.3o, which caused vile to discard
  572.       the startup file after processing it if it were specified on the
  573.       command-line (reported by Sean Ahern, some input by Brendan O'Dea).
  574.     + modify configure script, adding test for stdio structs that control
  575.       the isready_c macro, making this handle the case for SCO UW ver 7
  576.       (requested by Clark Morgan).
  577.     + modify configure script to add Perl's link-prefix (patch by Brendan
  578.       O'Dea).
  579.     > patch by Clark Morgan:
  580.     + turn OPT_W32PIPES on (I modified to condition it on SYS_WINNT).
  581.     + add entry to error finder to support perl 5 diagnostics
  582.     + create temporary filenames in w32pipe.c with an API that
  583.       preferentially honors the current settings of TMP and TEMP.
  584.     + add back Win32-specific comments to c-filt.c
  585.     + fix a bug in c-filt.c that caused coloring to go south if a string
  586.       literal ended with \\.  E.g., the statement:
  587.         char *x = "\\";
  588.       would cause almost all syntax coloring following this var declaration
  589.       to fail.
  590.  
  591.  (tom) 980412 (r)
  592.      + modify configure script and makefile.in to allow for DOS-style
  593.       suffixes (e.g., ".exe"), needed for OS/2 EMX.
  594.      + fix pathname support for OS/2 EMX by allowing MS-DOS-style drive
  595.       letters (estruct.h, path.c).
  596.      + suppress 'working...' message while writing to a pipe (reported by
  597.       Clark Morgan).
  598.      + add rule to make c-filt to makefile.djg
  599.      + add writePipe() function to make MS-DOS version able to write to a
  600.       pipe.
  601.     + use backslash-form for path in c-filt.c on Win32 (Clark Morgan).
  602.     > clipboard support for vile/winvile under Win32 (Clark Morgan):
  603.     + Permits Win32 users to copy the unnamed register contents to the
  604.       Windows clipboard.  Functionality is bound to Alt+Insert.
  605.     + Adds stubs for two additional clipboard-related features.  Stubs are
  606.       bound to Ctl+Insert and Shift+Insert.
  607.     + Adds a new Win32 source file (w32cbrd.c).
  608.     + Revises the "Win32 specifics" section of the help file to talk about
  609.       Win32 features.
  610.     > new implementation of w32pipe.c (Clark Morgan):
  611.     + reset ukb to zero in filterregion() to avoid having insfile() insert
  612.       file/pipe input into a kill register, rather than the current buffer
  613.       on platforms where softfork() is faked.
  614.     + w32pipe.c module documentation lists limitation of native win32
  615.       pipes.
  616.     + winvile.exe and vile.exe are now built with thread-safe libraries,
  617.       because
  618.     + spawn.c's filterregion() routine has been modified to create separate
  619.       writer and reader threads in a Win32 env.
  620.  
  621.  (kev) 980409 (q)
  622.     + api.c (api_setup_fake_win): Added another parameter to this
  623.       function which controls whether the deferred deletes get
  624.       done or not.  Fixed all callers.
  625.       (api_dotinsert, api_dotgline, api_setup_fake_win, api_bp2vbp,
  626.       api_command_cleanup): Added code for doing deferred deletes.
  627.       (api_delregion, api_motion): New functions.
  628.       (api_edit): Rewritten to better deal with anonymous buffers.
  629.       (api_swscreen): Permit oldsp to be NULL.
  630.     + api.c, api.h, perl.xs (SCR, VileBuf): Renamed SCR to VileBuf.
  631.       Other renamings done as well so that names of local variables
  632.       make more sense.
  633.       (api_dotgline, READ): Added new (output) parameter to
  634.       api_dotgline which indicates if a newline is needed or not.
  635.     + map.c, proto.h (mapped_ungotc_avail): New function.
  636.     + perl.xs (svStartLine, svStopLine, svScreenId, svcurscr):
  637.       Eliminated these static globals.  More importantly, this
  638.       means that $VI::StartLine, $VI::StopLine, $VI::ScreenId,
  639.       and $curscr are no longer available from perl.
  640.       (svcurbuf): New static global which plays a similar role to
  641.       the now defunct svcurscr.
  642.       (svcurbuf_accessors): new static global variable.
  643.       (newVBrv): Renamed from newVIrv.  Also, no blesses the object
  644.       it creates into Vile::Buffer instead of VI.
  645.       (perl): Don't call getregion unless haveregion is non-NULL.
  646.       Fixes a nasty infinite loop bug in getregion().  Also
  647.       removed initialization of svStartLine, svStopLine, etc.
  648.       (VI, Vile, Vile::Buffer): The VI package is no more.  Everything
  649.       has been renamed to go into either the Vile package or the
  650.       Vile::Buffer package.
  651.       (svcurbuf_set): Magically called when $Vile::current_buffer gets
  652.       set.
  653.       (perl_init): Nuked references to svStartLine, svStopLine, etc.
  654.       Also added magic to svcurbuf so that svcurbuf_set is called
  655.       whenever $vile::current_buffer is assigned to from Perl.
  656.       (perl_eval): Or'd in the G_KEEPERR flag in the call to
  657.       perl_eval_sv.  The lack of this flag was preventing error messages
  658.       from getting printed.
  659.       (current_buffer): New method in both Vile and Vile::Buffer.
  660.       (Msg, AppendLine, DelLine, GetLine, GetLines, SetLine, InsertLine,
  661.       LastLine, SwitchScreen): Nuked.
  662.       (PRINT, READLINE): Documented.
  663.       (insert): Alias for PRINT.
  664.       (new, edit): edit is an alias for new and new was renamed from Edit.
  665.       (setregion): Documentation updates; motions as regions.
  666.       (delete, motion): New methods.
  667.       (command): Now a method in both Vile and Vile::Buffer.
  668.     + ptypemap (T_VileBuf): Renamed from T_VI.  Slight change in message
  669.       when buffer no longer exists.
  670.     + region.c (getregion): Prevent infinite loop when MK and DOT are in
  671.       different buffers.  Print a BUG: message when this happens.
  672.     + select.c (sel_extend): Added FIXME comment at approximate place in
  673.       the code where we should check to make sure DOT and MK are in the
  674.       same buffer.  (BTW, to reproduce this bug (where they aren't the
  675.       same), get into xvile, split the screen and put a different buffer
  676.       in each. Now click with the mouse twice, very rapidly, each click
  677.       falling on alternate sides of the middle mode line.  After doing
  678.       this, DOT will be in one buffer and MK in the other.  There's
  679.       probably other places that need to fixed too.
  680.     + x11.c (x_preparse_args): When adding the event handler, for
  681.       x_process_event, or in (Button1MotionMask | Button3MotionMask)
  682.       instead of ButtonMotionMask.  It seems that my X server on linux
  683.       generates motion events regardless of whether any mouse buttons
  684.       are pressed when ButtonMotionMask is used.  I think this is
  685.       actually a bug in the X server, but the above is a more precise
  686.       way of saying what we really want to do anyway.
  687.  
  688.  (kev) 980403 (p)
  689.     + hgrep.pl, glob2re.pl, visit.pl: New files which implement
  690.       a recursive grep with hypertext links in perl.
  691.      + api.c (api_command_cleanup): Fixed bug in which DOT
  692.       was being propogated to the fake windows instead of
  693.       the real ones.  (Which is a pretty useless thing to do.)
  694.       (api_swscreen): Added big comment noting problems with
  695.       calling api_command_cleanup.
  696.     + cmdtbl (exechypercmd, showhypercmd, operattrhc): New
  697.       commands related to hypertext commands.
  698.     + estruct.h (AREGION): Added new field ar_hypercmd which
  699.       points at a hypertext command.
  700.     + select.c (hypercmd): New static variable used to communicate
  701.       the hypertext command string to attributeregion().
  702.       (free_attribs, free_attrib, sel_begin, selectregion,
  703.       attribute_region): All modified slightly to deal with the
  704.       new ar_hypercmd field in the AREGION structure.
  705.       (attribute_cntl_a_sequences): Look for an H followed by
  706.       the hypertext command, followed by a null character in
  707.       the ^A sequences.
  708.       (attributehyperregion, operattrhc, hyperspray, doexechypercmd,
  709.       exechypercmd, doshowhypercmd, showhypercmd): New functions.
  710.     + vile.hlp: Added new sections "Writing your own filters" and
  711.       "Hypertext".
  712.     + x11.c (multi_click): Added code to execute hypertext command,
  713.       when present, on a double click.
  714.  
  715.  (tom) 980331 (o)
  716.      + change logic that determines whether to set dos mode for a file so
  717.       that .vilerc (or vile.rc) and source'd files are treated specially.
  718.       For those files, all lines must end with ^M's to set dos mode
  719.       automatically when they are read.  This will reduce the chances of
  720.       trimming ^M's from map commands.
  721.     + modify dofile() function, used to load/execute .vilerc and source'd
  722.       files, to check first for buffer with the same filename.  This fixes
  723.       a problem which would cause vile to allocate more than one buffer for
  724.       .vilerc when an error is encountered.
  725.     + use new function tb_insert() rather than tb_put() to insert strings
  726.       for expand-chars.  The tb_put() function truncates the buffer at the
  727.       location of the new character, and does not work well for inline
  728.       editing.
  729.  
  730.  (kev) 980330 (n)
  731.      + api.c (api_gotoline): Make sure that we can move off of
  732.       buf_head if presently on it.  (This fixes a bug in which
  733.       it was sometimes impossible to move dot.  setrange also
  734.       exhibited a similar bug.)
  735.     + cmdtbl (perl): Allow perl to be run in view mode.
  736.     + perl.xs (perl): Set/restore clexec, discmd, and isnamedcmd
  737.       so that calls to the various mlreply functions will work
  738.       from within perl.  (Thanks to Sean Ahern for bug reports
  739.       and patches.)
  740.       (perl_init): Call lengthen_path to expand ~ to the user's
  741.       home directory.  (Thanks again to Sean Ahern for bug
  742.       reports and patches.)
  743.       (sv2linenum, sv2offset): New functions for converting
  744.       '$' and '$$' to either line number or offsets within
  745.       lines.
  746.       (VileCommand): Renamed to command.
  747.       (inplace_edit, setregion, dot, mlreply, mlreply_no_opts,
  748.       mlreply_file, mlreply_dir): Added documentation.
  749.       (setregion, dot): Handle '$' and '$$'.
  750.       (setregion): Return the buffer object in a scalar context.
  751.       (attribute_cntl_a_sequences, unmark): New functions.
  752.     + proto.h (attribute_cntl_a_seqs_in_region): Declared.
  753.     + select.c (attribute_cntl_a_seqs_in_region): New
  754.       function.
  755.  
  756.  (kev) 980324 (m)
  757.     + api.h (dot_changed): New field in SCR structure.
  758.      + api.c (api_gotoline): Prevent enormous amounts of looping
  759.       for outrageous count values.
  760.       (api_dotgline): Fixed bug which caused <$curscr> operator
  761.       to go into infinite loop.
  762.       (api_command_cleanup): Added code for propagating DOT.
  763.       (api_bp2sp): Initialize dot_changed field.
  764.     + perl.xs (perl_init): Add our own search paths to @INC.
  765.       (dot): New method for getting/setting DOT.
  766.       (GetUserInput): Removed.
  767.     + proto.h (is_fake_win): Declared.
  768.     + window.c (is_fake_win): New function.
  769.  
  770.  (kev) 980321 (l)
  771.      + api.c (api_setup_fake_win, api_dotgline, api_command_cleanup,
  772.       api_bp2sp):  Rearranged initialization of DOT so that it will
  773.       be done conditionally in api_dotgline.  This fixes a nasty
  774.       bug in which lines could get added to the wrong buffer.  It
  775.       also allows perl functions to be written which look at the
  776.       current location of DOT and possibly do something with it.
  777.       Before, we were always setting it to the start of the region
  778.       (which may not have a lot of relevance).
  779.     + api.h (SCR): New field dot_inited.
  780.     + perl.xs (setregion): Set dot_inited field.
  781.     + x11.c (atom_CLIPBOARD, x_preparse_args): New atom; initialize.
  782.       (x_get_selection, x_paste_selection, x_get_clipboard_text,
  783.       x_convert_selection, x_lose_selection, own_selection,
  784.       x_own_selection, copy_to_clipboard, paste_from_clipboard,
  785.       x_process_event): Handle CLIPBOARD selections as well as
  786.       primary selections.
  787.     + cmdtbl (copy_to_clipboard, paste_from_clipboard): New
  788.       commands.
  789.     + estruct.h (CLIP_KREG): New kill register.
  790.       (NKREGS, SEL_KREG, KEYST_KREG): Renumbered to account for
  791.       new kill register, CLIP_KREG.
  792.     + line.c (index2reg): Represent the clipboard kill register
  793.       with a ';'.
  794.     + vile.hlp: New documentation about X11 CLIPBOARD selections.
  795.  
  796.  (tom) 980321 (k)
  797.     + correct logic in tcap.c so that visual-matches works for a specific
  798.       color (reported by Kuntal M. Daftary).
  799.      + add test for Xp library, needed to link with RedHat Motif 2.1
  800.       (reported by Richard <rruth@studio.disney.com>).
  801.     + add configure option --with-startup-path to allow installer to
  802.       customize the $startup-path used by vile.
  803.     + change Unix lib directory (i.e., location of vile.hlp) to
  804.       $(prefix)/shared/vile.  The older location, $(exec_prefix)/lib, is
  805.       still in the $startup-path, but vile.hlp will not be installed
  806.       there.
  807.     + remove config.cache at the start of configure script, since we use it
  808.       only for problem reporting.
  809.     + ifdef'd out w32pipe code, but make it available for further
  810.       development as OPT_W32PIPES (recommended by Clark Morgan).
  811.     + minor fixes/resync for configure macros CF_CHECK_ERRNO,
  812.       CF_DISABLE_ECHO, CF_FIND_LIBRARY, CF_NCURSES_LIBS and
  813.       CF_NCURSES_VERSION.
  814.  
  815.  (kev) 980320 (j)
  816.      + api.c (linsert_chars): Rewritten both for efficiency and
  817.       so that the MARK at the end of the region stays put when
  818.       doing something like:
  819.  
  820.         $curscr->inplace_edit(1);
  821.         while (<$curscr>) { s/foo/bar/g; print; }
  822.  
  823.       (setup_fake_win): No longer static.  Renamed to
  824.       api_setup_fake_win.  Also set DOT here to the beginning of
  825.       the region.
  826.       (api_mark_iterator): New function.
  827.       (api_gotoline): No longer static.  Also renamed from
  828.       _api_gotoline.  Fixed all callers.
  829.       (api_dotinsert, api_dotgline): New functions.
  830.       (api_bp2sp): Initialize the region beginning and end
  831.       to point to something valid.
  832.     + api.h (SCR): Added new fields region, regionshape, and
  833.       inplace_edit.
  834.       (api_dotinsert, api_dotgline, api_gotoline, api_setup_fake_win):
  835.       Added declarations.
  836.     + cmdtbl (perldo): New command.
  837.     + estruct.h (api_do_mark_iterate_helper): New macro.
  838.       (do_mark_iterate): Invoke api_do_mark_iterate_helper in order
  839.       fix the the marks in the SCR structure region.
  840.     + perl.xs (newVIrv): Make the references to SCR objects that
  841.       we give perl refer to globs instead of a scalar.  Bury
  842.       the scalar in the scalar portion of the glob.  The reason
  843.       we do this is so that these references may be used as
  844.       filehandles as well as objects.
  845.       (perl_free_handle): Slight change to account for extra
  846.       levels of indirection to get to the thing we really have
  847.       to zero out.
  848.       (perl): Added calls to hst_flush() and hst_init() in order
  849.       to prevent user input from a perl command from being added
  850.       to the history line for the perl command.  (It was simply
  851.       getting appended on the end.)  Unfortunately, this input
  852.       doesn't seem to be recorded in the history any longer, but
  853.       at least it doesn't mess up the perl command.
  854.         Also rewrote the code for setting up a region, making sure
  855.       that the new fields in the SCR structure are initialized
  856.       appropriatedly.
  857.       (replace_line, perldo): New functions.
  858.       (perl_init): Tie STDIN to read from the minibuffer.  Modified
  859.       other tie statements (calls to sv_magic()) slightly to do
  860.       the same thing.
  861.       (Msg): No longer an alias for PRINT.
  862.       (PRINT): New method which handles both buffers and STDOUT
  863.       and STDERR.
  864.       (READLINE): New method which will either read a line from
  865.       a buffer or fetch input from the user via mlreply_no_opts().
  866.       When it reads from a buffer, it has the potential to read
  867.       multiple lines if used in an array context.
  868.       (VileCommand): New method which runs an arbitrary vile
  869.       command.  I'll probably rename this one -- don't like
  870.       the caps.
  871.       (inplace_edit, setregion): New methods which set/get fields
  872.       from the SCR structure.
  873.       (GetUserInput): Will probably go away.  This was my first
  874.       attempt at a mechanism for fetching user input.
  875.       (mlreply, mlreply_no_opts, mlreply_file, mlreply_dir): Various
  876.       methods for fetching user input from the message line.
  877.     + ptypemap (T_VI): Account for the fact that our objects may
  878.       also now be considered as filehandles.  (The references now
  879.       refer to globs instead of scalars.  The scalar is still there,
  880.       but it's just stuck inside the glob.)
  881.  
  882.  (tom) 980317 (i)
  883.     + remove binding of quote-next-character to ^V (reported by Keith
  884.       Williams <kurris@hotmail.com>, recommended by Paul Fox).
  885.      + add an AIX-specific pattern to finderr.c (patch by Michael Finken
  886.       <finken@conware.de>).
  887.     + correct w32pipe.c to re-open stdin on the first available descriptor
  888.       (i.e., 0) when cleaning up after a filter operation (patch by Clark
  889.       Morgan).
  890.  
  891.  (tom) 980316 (h)
  892.      + correct logic that shifts minibuffer back on return from kbd_reply,
  893.       had not set curwp.
  894.  
  895.  (pgf) 980315 (g)
  896.     + documentation and usage improvements for vile-crypt, in crypt.c,
  897.       vile.hlp, and vile.1.
  898.  
  899.  (tom)    980314 (f)
  900.      + add "attribute-reverse-til" (suggested by Kuntal M. Daftary
  901.       daftary@cisco.com).
  902.      + correct logic of find_mode() so that :setl cts=4 works as before.
  903.     + modify kbd_reply() to support inline-editing of the user's text, both
  904.       by arrow keys, as well as vi-style motion commands.  Use ^G to toggle
  905.       between the two modes.
  906.     + change interfaces/logic of hst_append(), kbd_show_response(),
  907.       kbd_reply() to make them accept nulls.  This is for later extensions,
  908.       since regexp.c does not handle nulls.  Use the mask KBD_0CHAR for
  909.       this purpose.
  910.     + modify check for type-ahead to make 'showmatch' skip the 1/4 sleep,
  911.       ignoring the current value of 'smoothscroll' (reported by Matthias K.
  912.       Buelow <token@wicx50.informatik.uni-wuerzburg.de>)
  913.      + adjust redefinition of WINDOW in tcap.h to work around OSF1 3.2,
  914.       which includes curses.h from term.h
  915.      + split-out function ntcons_reopen() from ntkopen(), to move it past
  916.       the pressreturn() call; otherwise the user sees no prompt when
  917.       running a shell command (reported by Manoj Bhargaw <Manoj@Proginet.com>).
  918.     + minor adjustments to 'w32pipe' by moving some code into w32pipe.c to
  919.       allow reuse in the GUI winvile, and using $shell rather than inline
  920.       expressions for shell spawned in pipes.  Testing with bash did not
  921.       seem to allow /bin/sh as a possible shell, so I dropped that from
  922.       Clark's patch.
  923.      + improve pipes for W95/WinNT using native support, new mode 'w32pipe'
  924.       (patch by Clark Morgan).
  925.  
  926.  (pgf)    980218 (e)
  927.     + added "crypt-til" operator (bound to ^X-C) which will
  928.       encrypt/decrypt an arbitrary region.  the main goal was to make
  929.       it easy to read a previously encrypted file and decrypt it for
  930.       reading, or to read a clear file, and quickly encrypt it before
  931.       writing it.  i find crypt mode to be cumbersome at best -- i find
  932.       the explicit command to be more useful.
  933.     + modified crypt.c to allow building it as standalone utility.
  934.       this gets built as vile-crypt, and it's compatible with the crypt
  935.       command inside of vile (if used over an entire buffer).  usage
  936.       is:
  937.         vile-crypt [-m] [-k crypt-key ] [file ...]
  938.       if '-k crypt-key' is omitted you will be prompted instead, and
  939.       '-m' leaves text to the first blank-line intact, which i find
  940.       useful for encrypting individually stored mail messages.  the
  941.       en/decrypted text appears on stdout.
  942.     + attempted to document vile's encryption features in vile.hlp.
  943.  
  944.  (tom)    980208 (d)
  945.      + reformatted proto.h, ordering prototypes alphabetically.
  946.      + make column shown by ^G the same as for the ruler (reported by David
  947.       Letcher <David_Letcher@writeme.com>).
  948.      + add command show-printable to show exactly what vile does with the
  949.       character classes.
  950.      + newer autoconf configure macro circumvents problems generating
  951.       config.h due to limited sed buffer size on antiquated systems (e.g.,
  952.       HP-UX 9.x, SCO 3.x).
  953.      + updated configure test, to avoid use of broken IRIX 6.2 nsl library.
  954.     + add configure option --with-locale to allow use of i18n support via
  955.       setlocale function.
  956.     + use new symbol SYS_OS2_EMX to avoid nonstandard use of 'defined'
  957.       keyword in OPT_CASELESS preprocessor expression (reported by Adam
  958.       Denton).
  959.     + move the call that forks xvile up to the first place where it could
  960.       be used, to minimize data space.
  961.  
  962.  (tom)    971219 (c)
  963.     + correction to CF_CURSES_TERMCAP configure test so that SVr4 systems
  964.       that do not have a prototype for tgoto, but still require curses.h
  965.       will build properly (patch by Brendan O'Dea).
  966.  
  967.  (tom)    971218 (b)
  968.      + add configure-test to see if $LIBS already contains termcap functions
  969.       before looking for additional libraries.
  970.      + amended CF_CURSES_TERMCAP and CF_TYPE_OUTCHAR tests to use vile's
  971.       headers (correcting symbol conflict with NL in estruct.h vs curses.h),
  972.       and to double-check that failure to link test with tgoto was
  973.       due to conflict with prototype (latter reported by Brendan O'Dea).
  974.  
  975.  (tom)    971217 (a)
  976.      + add CF_CURSES_TERMCAP macro to test for prototypes in curses.h vs
  977.       termcap.h
  978.      + add variable $patchlevel.
  979.      + updated README.CFG to list the newer options (reported by Ralphe
  980.       Neill <ran@alumni.dgs.monash.edu.au>).
  981.      + use CF_SIZECHANGE macro to eliminate a SCO-related hack in configure.
  982.      + interpret --with-x option in configure-script (reported by Paul Fox).
  983.      + add/use TYPECAST macro to quiet the "harmless" const warnings.
  984.      + modify CF_IMAKE_CFLAGS macro to work with SGI's imake macros which
  985.       combine the -I/usr/include and -nostdinc options, confusing gcc
  986.       (reported by Billy Little <billy_little@hso.link.com>).
  987.     + fixes for Perl-related rules in makefile.in (patch by Brendan O'Dea).
  988.  
  989. Changes for vile 7.3 (released Mon Dec 8, 1997)
  990.  
  991.  (tom)    971207 (t)
  992.      + correct include-path for configure script's check for missing
  993.       externs, to work with --srcdir option (analysis by Kevin Buettner).
  994.  
  995.  (tom)    971205 (s)
  996.      + add logic to configure.in to use a filter (installed by td_lib)
  997.       named 'td_config' which works around limited 'sed' when constructing
  998.       config.h on SCO 3.x, HP-UX 9.x and other antiquated platforms.
  999.      + add configure options --disable-extensions (SMALLER, FEWNAMES) and
  1000.       --disable-shell (OPT_SHELL), and --with-dmalloc.  The shell option is
  1001.       experimental; note that a genuinely secure editor should not allow
  1002.       directory names to be specified (but I think that's the only omission).
  1003.     + add fallback for tparam/tparm in tcap.c (for EMX, but usable for
  1004.       genuine termcap systems such as SunOS 4.x), to support color.
  1005.     + add files for building termcap version on OS/2 with EMX
  1006.       (makefile.emx, config.emx and os2keys.h).
  1007.      + change $shell to use $COMSPEC on OS/2, MS-DOS, etc.  This is needed
  1008.       for the OS/2 EMX configuration, but useful in the others.
  1009.      + modify configure script to use ifdef's in estruct.h when testing
  1010.       for missing extern/prototype declarations rather than a separate
  1011.       list in aclocal.m4 (this requires rebuild/test on most platforms).
  1012.     + combine configure-tests for errno, sys_nerr and sys_errlist.
  1013.     + minor fixes:  new versions of CF_NCURSES_LIBS, CF_ADD_INCDIR,
  1014.       CF_CHECK_CACHE, CF_NCURSES_CPPFLAGS.
  1015.     + correct handling of :map containing ".", which was being handled
  1016.       as if the "." always appeared at the end (patch by Duncan Sargeant;
  1017.       input.c, map.c).
  1018.  
  1019.  (kev)  971203 (r)
  1020.     + api.c (lreplace): Fix marks up.  This won't always be right,
  1021.       but at least it'll be closer.  We need a way to modify marks
  1022.       and attributes from perl.
  1023.       (setup_fake_win): changed return type to int.
  1024.       (api_fscreen, api_edit, api_swscreen, api_bp2sp): new functions.
  1025.       (sp2bp, bp2sp): Removed these macros.
  1026.     + api.h (api_swscreen, api_fscreen, api_bp2sp): declared these
  1027.       functions.
  1028.       (sp2bp, bp2sp): macros moved from api.c.
  1029.     + configure.in (LINK_PREFIX): set this variable.  (From Brendan
  1030.       O'Dea.)
  1031.       (CFLAGS, LIBS): Use $perl_bin_path instead of perl in the
  1032.       --with-perl section.
  1033.     + makefile.in (LINK): Prepend LINK_PREFIX as determined by
  1034.       configure to the link command.  (From Brendan O'Dea.)
  1035.     + perl.xs (newVIrv): Don't allocate api private part here. (It's
  1036.       allocated in api_bp2sp now.)  The second parameter has also
  1037.       changed; changed all callers.
  1038.       (perl): Print error messages and warnings to message line.
  1039.       (perl_init): Setup warning handler.  Also tie STDOUT and STDERR
  1040.       so that output to these filehandles will be printed on the
  1041.       message line.  (Thanks to Brendan O'Dea.)
  1042.       (perl_eval): New function.
  1043.       (Msg): Rewritten to handle multiple arguments. (From Brendan O'Dea.)
  1044.       (GetLines): new function which fetches all lines in the range.
  1045.       (Edit, FindScreen, SwitchScreen, Warn): New functions.
  1046.     + proto.h (perl_free_private): removed.
  1047.       (perl_free_handle): added.
  1048.     + ptypemap (T_VI): Translate C null pointers to perl undefs.
  1049.  
  1050.  (tom)    971128 (q)
  1051.     + modify tagignorecase mode to use lowercased keys in the binary-tree,
  1052.       and applying tagignorecase mode to the search within the tagged file,
  1053.       making this behave as Joseph F. Garvey requested.
  1054.      + implement tags-completion.
  1055.     + replace Alex Wetmore's binary tree code with a balanced binary tree
  1056.       module that's a little more general, and does deletion more rapidly
  1057.       than my first try.
  1058.      + minor fixes for foreground/background colors when resizing terminal
  1059.       window so minibuffer is painted correctly (display.c, ntconio.c).
  1060.      + rename ntvile to winvile.
  1061.  
  1062.  (tom)    971112 (p)
  1063.      + correct logic for minibuffer by ensuring that it is not marked for
  1064.       undo, and that the value of MK is save/restored when modifying
  1065.       the minibuffer.
  1066.  
  1067.  (tom)    971109 (o)
  1068.      + correct range of scrolling region in ansi.c
  1069.      + correct treatment in xshell.sh for no-arguments.
  1070.      + change TTrev() / TTattr() parameter to unsigned.
  1071.      + implement mouse and flash in OS/2 VIO driver (os2vio.c).
  1072.      + correct logic in vtputc() to prevent minibuffer from writing into the
  1073.       lower-right corner of the screen.
  1074.  
  1075.  (tom)    971108 (n)
  1076.      + more CSet unsigned/signed compiler warning fixes (estruct.h)
  1077.      + don't reopen terminal in ansi.c if it is already open.
  1078.      + correct handling of rename-buffer when it is a scratch buffer that
  1079.       does not happen to be a stored procedure.
  1080.     + recorrect lookup_namebst() call in engl2fnc(); it should always allow
  1081.       partial match.  Fixed by adding a third mode where the lexical first
  1082.       match will be returned rather than the middle one in a range.
  1083.      + correct tab-position in ntconio.c
  1084.      + modify borland.c to reset colors when exiting or running a shell.
  1085.     + change tcapkopen() to reflect possibility that terminal
  1086.       initialization string moves the cursor.
  1087.      + add simple gui terminal driver for WinNT (ntwinio.c, makefile.wnt).
  1088.       Built with Microsoft Visual C++ 4.1, both with IDE and makefile.wnt.
  1089.       Use "nmake -f makefile.wnt cfg=ntvile".
  1090.     + integrated related patch by Clark Morgan for repainting the screen
  1091.       correctly after a :stop command.
  1092.      + rewrote internals of command/message line to make it a one-line
  1093.       minibuffer, including mods for OPT_RAMSIZE and OPT_WORKING.  Tested
  1094.       Linux (for tcap.c, x11.c, ansi.c), OS/2 (os2vio.c), WinNT (ntconio.c,
  1095.       ntwinio.c), VMS (vmsvt.c), djgpp (borland.c).
  1096.  
  1097.  (tom)    971028 (m)
  1098.     + correct inverted parameter in call on lookup_namebst().
  1099.     + compiler warnings from Solaris (unsigned vs signed in bind.c, ifdef
  1100.       in trace.c).
  1101.     + minor changes to compile on OS/2 with EMX.
  1102.     + modify borland.c to reset colors to white/black on exit.
  1103.  
  1104.  (tom)    971027 (l)
  1105.     + backout change to own_selection, since it doesn't follow ICCCM,
  1106.       in the sense that it increases X traffic needlessly (pointed out by
  1107.       Kevin Buettner).  Kept check on return value from XtOwnSelection.
  1108.      + correct out-of-bounds indexing in dname_to_dirnum() by adding a
  1109.       length parameter, use memcmp.
  1110.      + modify Alex's change so that buffers that are renamed or deleted
  1111.       update the corresponding entries in the binary-tree.  Also, don't
  1112.       allow built-in commands to be removed or replaced.  Finally, make the
  1113.       name-completion work with an empty command.
  1114.     + add $end-of-cmd variable (patch by Alex Wetmore).
  1115.     + integrate patch by Alex Wetmore <awetmore@Exchange.Microsoft.com>
  1116.       that makes stored procedures act just like built-in commands, i.e.,
  1117.       able to run them from the :  prompt.  This works by building a binary
  1118.       tree of all of the command and procedure names.
  1119.  
  1120.  (tom)    971015 (k)
  1121.     + add configure options --with-Xaw-scrollbars and
  1122.       --with-drag-extension.  These make it easy to build xvile with
  1123.       Kevin's scrollbars by specifying --without-Xaw-scrollbars, or to use
  1124.       the Xaw's default translations for scrollbars by specifing
  1125.       --without-drag-extension.
  1126.     + ifdef'd out the code that invokes $xshell in ":!command".
  1127.     + correct logic in xvile that spawns a new instance from menu entry,
  1128.       was leaving a zombie when the new instance closed (reported by Brian
  1129.       Moore <bem@cmc.net>).
  1130.     + modify own_selection to always try to own the select, as well as to
  1131.       check the return value from XtOwnSelection (reported by Ian Jamison
  1132.       <ianj@quadrics.com>)
  1133.     + add Lesstif-specific ifdef for workaround (requested by Larry Gensch).
  1134.     + correct ifdef'ing of Motif version of xvile (reported by Larry
  1135.       Gensch).
  1136.     + add screen types Xol and Xm as aliases for OpenLook and Motif.
  1137.     + correct quoting in configure script for OpenLook case.
  1138.     + fix some compiler warnings and add 'make check' target (reported by
  1139.       Nelson H. F. Beebe <beebe@math.utah.edu>)
  1140.  
  1141.  (kev)    971013 (j)
  1142.      + perl.xs, ptypemap: Lots of new code which extends the perl
  1143.        interface a bit more.
  1144.      + api.c, api.h: New files which sort of implement nvi's API for
  1145.        extension languages.
  1146.      + makefile.in (OBJ, VILESRC): Added api.o and api.c to these
  1147.        lists.
  1148.      + estruct.h (BUFFER): Added new field, b_api_private, used by
  1149.        the extension language API.
  1150.      + buffer.c (FreeBuffer): Free up the extension language API
  1151.        related data structure referenced by b_api_private.
  1152.        (bfind): Initialize the b_api_private field.
  1153.      + cmdtbl (perl): Put in a reasonable set of flags for this
  1154.        command.  (It used to be NONE.)
  1155.      + exec.c (execute_named_command): Added region support for the
  1156.        perl command.
  1157.      + proto.h (push_fake_win, pop_fake_win, perl_default_region,
  1158.        perl_free_private, api_free_private): New prototypes.
  1159.      + select.c, window.c (push_fake_win, pop_fake_win): These
  1160.        functions removed from select.c and put into window.c.  Also
  1161.        they are no longer static.
  1162.  
  1163. (kev)    971009 (i)
  1164.     + perl.xs, ptypemap:  New files.  Beginnings of perl interface
  1165.       for vile.
  1166.     + cmdtbl (perl): New command enabled only when --with-perl
  1167.       supplied as an option to the configure script.
  1168.     + configure.in, makefile.in: perl related changes.
  1169.     + (fix typo in xshell.sh - tom)
  1170.  
  1171. (tom)    971008 (h)
  1172.     + correct typo in stubbed-out code for $xshell, add $xdisplay and
  1173.       example script 'xshell.sh' which can be used to run a shell command
  1174.       from xvile, prompting at the end so that the output doesn't go away
  1175.       when the xterm completes.
  1176.     + rename vile's ctype macros to mixed-case to avoid conflict.  This
  1177.       is needed for Solaris 2.6, which does not implement ctype as macros.
  1178.     + modify casts and some names (e.g., new, operator, class) to allow
  1179.       compiling with C++ (tested with g++ 2.7.2 on Linux).
  1180.  
  1181. (kev)    971007 (g)
  1182.     + x11.c (multi_click): Reimplemented multiclick selections for
  1183.       lines.  Previously, it was not possible to select the entirety
  1184.       of a wrapped line by clicking on a row other than the first
  1185.       row.
  1186.     + window.c (mvupwind, onlywind, delwp, splitw, enlargewind,
  1187.       shrinkwind):  Make sure that w_line.o is zero just after
  1188.       setting w_line.l to a new value.  The lack of this
  1189.       assignment in mvupwind() was causing a SEGFAULT on my linux
  1190.       box.  [To test it, create a very long wrapped line with a
  1191.       bunch of lines (say 100) before it; my test has in excess of
  1192.       10,000 characters on the long line.  Make sure linewrap mode
  1193.       is set.  Then say 100^Y.  The SEGFAULT was immediate.  You
  1194.       can also reproduce it by dragging the scrollbar for awhile.]
  1195.  
  1196. (tom)    971006 (f)
  1197.     + document --with-screen values better in configure --help.
  1198.     + implement Athena widget scrollbar support in x11.c, using Kevin's
  1199.       dragging support from the no-widget case.
  1200.     + add $xshell environment variable, use this to control :sh command
  1201.       from xvile.
  1202.     + new CF_X_ATHENA configure macro adds configure options --with-Xaw3d
  1203.       and --with-neXtaw.
  1204.     + corrected CF_IMAKE_CFLAGS, which was not using the imake symbol that
  1205.       specified X function prototypes.  (This was old behavior, which did
  1206.       not seem to matter until adding Xaw scrollbars on Linux).
  1207.  
  1208. (kev)    971005 (e)
  1209.     + basic.c (setwmark): In linewrap mode, account for undisplayed
  1210.       rows before the first row shown of a very long wrapped line.
  1211.     + display.c (vtset): Don't allow wrapped lines to overflow onto
  1212.       the mode line.  I don't think characters from the buffer were
  1213.       ever getting written to the modeline, but vteeol() would sometimes
  1214.       erase the modeline when displaying very long wrapped lines.
  1215.       (reframe): Handle reframes of long wrapped lines more gracefully.
  1216.       In particular, once the top row of a very long wrapped line
  1217.       goes off the top, it is now possible to have the cursor positioned
  1218.       on somewhere other than the bottom row.  Scrolling up or down
  1219.       via right or left right movement within a long wrapped line also
  1220.       looks a lot better now.
  1221.       (updattrs): Don't attempt to access rows before the top row
  1222.       of a window when updating attributes.  Also, don't access
  1223.       rows of or below the the mode line.  This fixes a SEGFAULT.
  1224.  
  1225. (tom)    970918 (d)
  1226.     + amend logic for find_mode() so that "&glo cmode" and "&loc cmode"
  1227.       work as before majormode changes (reported by Sean Ahern).
  1228.     + merge autoconf macros from tin/xterm, which mainly affect the
  1229.       configuration tests for ncurses and imake $CFLAGS, used to augment
  1230.       autoconf's tests for X Windows.
  1231.     + also (since some systems have deficient 'sed' programs) provide
  1232.       alternate hook for using a program 'td_config', which is currently
  1233.       bundled in td_lib.tgz, that does the sorting operation of config.h in
  1234.       a reasonably portable manner.
  1235.     + add mode 'maplength' to control the maximum length of a map
  1236.       string.
  1237.     + correct definition of OUTC_ARGS for the case where it should be a
  1238.       'char' value (patch by Jason Molenda <crash@cygnus.co.jp>).
  1239.  
  1240. (tom)    970907 (c)
  1241.     + modify CF_CACHE_CHECK macro to use AC_CANONICAL_HOST to obtain a
  1242.       "better" value for SYSTEM_NAME.  This is displayed as part of the
  1243.       :version command.  Add config.guess and config.sub to support this.
  1244.     + changes for 7.2b omitted some macros dealing with echoing during the
  1245.       make process (reported by Jens Schleusener <Jens.Schleusener@dlr.de>)
  1246.  
  1247. (tom)    970905 (b)
  1248.     + merge configure macros from tin-unoff and lynx (configure.in,
  1249.       aclocal.m4).
  1250.     + rename configure macros to CF_ prefix, for consistency/merge with
  1251.       other programs (configure.in, aclocal.m4).
  1252.     + correct handling of tparm return-value; it must not be freed, at
  1253.       least for SVr4 and ncurses (tcap.c)
  1254.     + ensure that majormode names are a legal identifier.
  1255.     + modify so that majormode names can be mixed case (requested by
  1256.       Sean Ahern).
  1257.  
  1258. (tom)    970904 (a)
  1259.     + add variable $majormode so that it can be tested in a script
  1260.       (requested by Philippe Chassany).
  1261.     + fix potential ifdef problem for cbuf1 (reported by Brendan O'Dea).
  1262.     + simplified VMS permissions code, using the protection parameter in
  1263.       'open()' to achieve the objective of propagating a file's current
  1264.       protection, as well as making it compile with DEC C (reported by
  1265.       Simon Hefti <hefti@phim.unibe.ch>).
  1266.  
  1267. Changes for vile 7.2 (released Thu Sep 4, 1997)
  1268.  
  1269. (tom)    970903 (k)
  1270.     + modify rename-buffer so that if we rename a buffer, we'll clear the
  1271.       flag that marks it for removal when popped-down.
  1272.     + modify show-modes command so that it will format more than 3 columns
  1273.       if the screen is wide enough.
  1274.     + correct logic of delfrommap(), which dumped core when unmapping
  1275.       a single-character map (reported by Paul Fox).
  1276.     + modify show-majormodes so that giving a count will make it show all
  1277.       of the submodes prefixed by the majormode name, e.g., c-suffixes
  1278.       (suggested by Paul Fox).
  1279.     + modify documentation to use "define-majormode" and "remove-majormode"
  1280.       for clarity, other related fixes to documentation (suggested by Paul
  1281.       Fox).
  1282.  
  1283. (tom)    970902 (j)
  1284.     + correct logic in find_mode() that did not find majormode qualifiers
  1285.       for majormodes that began similarly (e.g., "com" masked by "c").
  1286.     + correct an uninitialized variable in per_submode(), found by Purify.
  1287.     + correct ifdef'ing in tcap.c, from 7.1i, when neither tparm nor
  1288.       tparam is found.
  1289.  
  1290. (tom)    970901 (i)
  1291.     + if the command-line '@' option is used, set the $startup-file
  1292.       variable to correspond to the startup file which is used.
  1293.     + add tagignorecase mode, which causes tag searches to be done ignoring
  1294.       case (requested by Joseph F. Garvey <garvey@garveys.raleigh.ibm.com>).
  1295.     + initialize last_eolchar in docmd() so that 'set' command works
  1296.       properly in a macro.
  1297.     + add %B substition for error-buffer regular expressions to allow
  1298.       using [Standard Input] and other scratch buffers as error buffers.
  1299.     + modify format-til command to treat '#' specially when in cmode, so
  1300.       no whitespace is inserted after it.
  1301.     + modify format-til command to support comment-prefix mode and handle
  1302.       repeated prefix, so that, for example, vile can now format multiple
  1303.       levels of email replies.
  1304.     + add comment-prefix mode, which specifies a regular expression that
  1305.       controls the portion of a line which is prefixed when formatting.
  1306.     + modify default setting of comments mode to make repeated prefix
  1307.       match (e.g., "> > >", is different from "> >").
  1308.     + ensure that imdying() always exits (reported by Clark Morgan).
  1309.     + workaround for incompatible interpretation of termcap Sf/Sb
  1310.       capability with BSD vs SYSV platforms (tcap.c).
  1311.  
  1312. (tom)    970829 (h)
  1313.     + correct initialization of $palstr on OS/2.
  1314.     + correct some of the signed/unsigned warnings from IBM CSet compiler.
  1315.     + remove obsolete autoconf fallback macros.
  1316.     + correct handling of ":abbr res RES", ":abbr wres WRES" combination by
  1317.       forcing matches on these to check that the beginning of the match is
  1318.       an identifier boundary (reported by Paul Laub <P_Laub@fccc.edu>).
  1319.     + correct assignment in maplookup() which caused a -1 returned when no
  1320.       more characters were available for matching to be converted to the
  1321.       0xFF character.
  1322.     + modify fopen-for-write calls on VMS to add "0" argument, which makes
  1323.       the new file get the user's default protection (requested by Brian
  1324.       Reed <bdreed1@lucent.com>).
  1325.     + correct logic that allowed repeated definition of submodes (reported
  1326.       by Duncan Sargeant).
  1327.     + allow submode names to begin with "no", assuming they are booleans
  1328.       (reported by Duncan Sargeant).
  1329.     + corrected lookup of hyphenated submodes, e.g., c-tabstop (reported
  1330.       by Duncan Sargeant <dunc@ucc.gu.uwa.edu.au>).
  1331.     + allow define-submode to accept an '=' between the submode and its
  1332.       value.
  1333.     + modify define-mode and remove-mode to suppress warning message if
  1334.       the mode does not exist, since this produces unnecessary warnings
  1335.       when re-sourcing .vilerc
  1336.     + include <windows.h> only where it is needed, halving the build time
  1337.       (patch by Clark Morgan).
  1338.     + modify configure script to work with CLIX old-style shared libraries
  1339.       (e.g., -lc_s) needed for xvile.
  1340.  
  1341. (tom)    970816 (g)
  1342.     + correct type mismatch in filec.c when sizeof(size_t) !=
  1343.       sizeof(unsigned) (reported by Larry Gensch <gensch@zk3.dec.com>).
  1344.     + modify vmsbuild.com to tell MMS (or MMK) to ignore warnings,
  1345.       workaround for an inconsistency between versions of DEC C
  1346.       (suggested by Andy Harper and Adam Denton).
  1347.     + initial implementation of majormodes, which supports grouping of
  1348.       buffer modes, together with qualifiers (e.g., cmode and c-suffixes).
  1349.       New commands include define-mode, define-submode, remove-mode,
  1350.       remove-submode, list-majormodes.  (Most changes are in mktbls.c and
  1351.       modes.c).
  1352.  
  1353. (tom)    970619 (f)
  1354.     + modify ":set" command so that it does not force a mode to be set,
  1355.       but instead shows the local buffer and window settings.
  1356.     + correct missing error-test in logic that sets regular-expression
  1357.       modes (reported by Philippe Chassany).
  1358.     + add configure option to specify the total numbered macros available,
  1359.       e.g., execute-macro-1, ifdef'd with OPT_EXEC_MACROS (requested by
  1360.       Philippe Chassany).
  1361.     + modify xvile menus to allow arbitrary command line rather than
  1362.       bound functions (exec.c, menu.c).
  1363.     + correct spurious parameter in vms2unix.c, from 7.1d changes.
  1364.  
  1365. (tom)    970607 (e)
  1366.     + modify VMS terminal driver, vmsvt.c, to work when invoked from a
  1367.       command-file, i.e., get terminal characteristics from SYS$COMMAND
  1368.       rather than SYS$INPUT (reported by Adam Denton).
  1369.     + treat '$' as an identifier character on VMS (requested by
  1370.       Adam Denton).
  1371.     + clarify discussion of color in help-file (patch by Clark Morgan).
  1372.     + modify map.c to use TBUFF's, as well as new kbd_reply interface,
  1373.       to remove limit on mapped strings.
  1374.     + change interface/internals of kbd_reply() to use a TBUFF, so we don't
  1375.       need fixed-size buffers any more (bind.c, exec.c, eval.c, history.c,
  1376.       input.c, line.c, modes.c).
  1377.     + correct uninitialized buffer in loadkreg().
  1378.     + correct indexing in display_cursor() function in xvile; exposed when
  1379.       displaying a long list for the historical buffer command.
  1380.  
  1381. (tom)    970526 (d)
  1382.     + add $ncolors variable to allow run-time modification of the meaning
  1383.       of colors (e.g., white).
  1384.     + change $palette to a dynamically allocated string.
  1385.     + modify termcap and IBM terminal drivers to support 16 colors.  Note
  1386.       that the termcap driver can do this only when configured against a
  1387.       terminfo library (inspired by a patch from Clark Morgan).
  1388.     + modify mktbls to generate the enumerated choices tables (i.e., for
  1389.       color, visual-matches) to simplify ifdef'ing these between the
  1390.       8-color and 16-color configurations.
  1391.     + undo some of the const parameters of functions, thereby eliminating
  1392.       most of the places where casts were used to remove const.
  1393.     + modify VMS processing of tags to strip file's version number
  1394.       (adapted from fix by Adam Denton <adenton@genre.com>).
  1395.     + modify bclear() to free attributes before removing the buffer's
  1396.       lines, thereby making it faster (patch by Ian Jamison).
  1397.  
  1398. (tom)    970513 (c)
  1399.     + set local buffer mode for 'dos' in slowreadf(), which fixes the
  1400.       problem of that function modifying the global mode when piping a file
  1401.       to vile, hence causing syntax errors in vile.rc when it contains
  1402.       trailing carriage-returns (file.c) (analysis by Clark Morgan).
  1403.     + correct missing VASEL flag that caused 'q' command on OS/2 to not
  1404.       display highlighting, missed in 7.0b (os2vio.c) (reported by George
  1405.       Eccles <geccles@ibm.net>)
  1406.     + implement 'flash' for WinNT (ntconio.c)
  1407.  
  1408. (tom)    970513 (b)
  1409.     + ifdef'd menu.c to work with 7.1a
  1410.  
  1411. (tom)    970512 (a)
  1412.     + modify has_C_suffix() to ignore case on platforms where filename
  1413.       case should be ignored (reported by Emil Rojas <emil@lapel.com>).
  1414.     + add version in vmsbuild.com to release_warnings
  1415.     + remove unnecessary test for Xaw/SimpleMenu.h (configure.in).
  1416.     + improve geometry of Xaw menus using Box (patch by Brendan O'Dea
  1417.       <bod@compusol.com.au>)
  1418.     + add menu.c to the modules for xvile on VMS (reported by Graeme
  1419.       Miller).
  1420.  
  1421. Changes for vile 7.1 (released Wed May 8, 1997)
  1422.  
  1423. (tom)    970508 (none)
  1424.     + undo a place where I'd dropped an XtVaGetValues() call, since it
  1425.       appeared redundant, but was not - affects only Xaw build (x11.c).
  1426.     + ifdef'd a test in newscreensize() that is applicable only when
  1427.       OPT_WORKING is set; this had broken screen initialization on MS-DOS
  1428.       (display.c).
  1429.  
  1430. (tom)    970507 (l)
  1431.     + add resource to control menu-height (x11.c, menu.c).
  1432.     + correct definition in vms2unix.c to allow compile with VAX C, which
  1433.       doesn't like "#define foo xxx.foo".
  1434.  
  1435. (tom)    970430 (k)
  1436.     + modify lookup of .vilerc to use startup-file search rules (menu.c)
  1437.     + correct missing XmString conversion (menu.c)
  1438.     + add configure check for -lXext to support Athena build on X11R4.
  1439.  
  1440. (tom)    970429 (j)
  1441.     + use im_waiting() function to reset "working..." state after executing
  1442.       a menu-command (menu.c).
  1443.     + modify lookup of .vilemenu to use startup-file search rules.
  1444.     + corrections for porting Xaw version to SunOS, etc., with X11R4 and
  1445.       X11R5 (x11.c, configure.in)
  1446.  
  1447. (tom)    970428 (i)
  1448.     + implement Xaw (Athena widget) version of menus.  Simplified buffer
  1449.       lookup function for menus, align/document resource names (menu.c,
  1450.       x11.c, configure script).
  1451.     + correct minor memory leaks during initialization (main.c)
  1452.     + correct array-indexing error that caused core dump when selecting
  1453.       line-wrapped text, moving cursor up (display.c).
  1454.  
  1455. (tom)    970422 (h)
  1456.     + improved example of menus for xvile (Philippe Chassany).
  1457.     + correct mistyped index in c-filt.c, which was a char (patch by Ian
  1458.       Jamison).
  1459.     + correct c-filt.c handling of nested comment delimiters (patch by Ian
  1460.       Jamison <ianj@quadrics.com>)
  1461.     + correct sign-extension in tcap.c for xterm mouse-coordinates.
  1462.  
  1463. (tom)    970407 (g)
  1464.     + add mode 'tagword', which allows user to lookup the whole word rather
  1465.       than a substring.  (from Adam Denton <adenton@genre.com>).
  1466.     + reintroduce flag 'i_displayed' into 'working' mode (I'd forgotten
  1467.       that it suppressed the message until screen-mode).
  1468.     + improve buffer-switching in menu-support (patch by Philippe Chassany)
  1469.     + correction to MS-DOS, etc., where attempt was made to fclose a file
  1470.       pointer that was out of scope (patch by Clark Morgan).
  1471.     + modify definition of eql_bname() macro so that buffer names are
  1472.       treated as case-insensitive where filenames are, e.g., WinNT and
  1473.       OS/2 (patch by Rick Sladkey from report by Clark Morgan).
  1474.     + add predefined regular expression to finderr.c to improve support
  1475.       for MS-DOS pathnames (patch by Clark Morgan).
  1476.  
  1477. (tom)    970407 (f)
  1478.     + integrated menu-support for Motif xvile (patch by Philippe Chassany
  1479.       <phil@cln46ks.der.edf.fr>).
  1480.     + refined changes to 'working' mode to ensure that the "working..."
  1481.       message is cleared when the timer elapses.
  1482.  
  1483. (kev)    970407 (e)
  1484.     + fileio.c (isready_c): Small tweak to the ifdefs for mklinux w/
  1485.       shared libraries.  This'll probably be needed for other systems
  1486.       with the up and coming GNU libc as well.
  1487.  
  1488. (tom)    970330 (d)
  1489.     + correct missing ']' on generated buffer name for shell output, e.g.,
  1490.       "[!ls]" rather than "[!ls" (reported by Paul Fox): (file.c).
  1491.     + correct unnecessary escaping of '!' in prompts that are not expanding
  1492.       the shell contents (reported by Paul Fox): (input.c).
  1493.     + modify semaphore used by 'working' mode to make the SIGALRM timer
  1494.       elapse when it is not in use, allowing idle process to swap out
  1495.       properly (reported by Bill Kipp): (display.c, etc).
  1496.     + correct filename parsing for MS-DOS/etc configuration by checking
  1497.       for device name (patch by Clark Morgan).
  1498.  
  1499. (tom)    970322 (c)
  1500.     + fixes for piping to vile in WinNT (patch by Clark Morgan).
  1501.     + add logic for visual-matches in color, WinNT (patch by Clark Morgan).
  1502.     + add vile-c-filt.exe to makefile.wnt, modify default keyword file
  1503.       on that system to vile.keywords (patch by Clark Morgan).
  1504.     + correct problem with MS-DOS/Win95/NT version of npopen.c that left
  1505.       temp-files after reading from pipe, because file-remove was done
  1506.       before closing (patch by Clark Morgan).
  1507.  
  1508. (tom)    970315 (b)
  1509.     + use macro GCC_UNUSED throughout to quiet gcc warnings about unused
  1510.       (dummy) parameters.
  1511.     + modify configure script to use VC_GCC_WARNINGS
  1512.     + add mode to control whether formatting adds one or two spaces
  1513.       after sentences (patch by Otto Lind).
  1514.     + handle C++ comments (patch by Otto Lind <otto.lind@softwire.com>).
  1515.     + implement colored attributes in OS/2 video driver (os2vio.c)
  1516.     + modify writereg() so that it recomputes the region size after
  1517.       invoking the $write-hook; this is necessary since it may change the
  1518.       file's size (reported by Bob Wall <wall@vlt.com>).
  1519.  
  1520. (tom)    970314 (a)
  1521.     + modify c-filt.c, manfilt.c to simplify compiling w/o auto-configure
  1522.       "config.h".
  1523.     + modify MS-DOS/Win31/WinNT portion of npopen.c to leave input file
  1524.       descriptor alone when reading from pipe, solving a problem with
  1525.       applications hanging under Thompson Toolkit (patch by Clark O.
  1526.       Morgan <cmorgan@aracnet.com>)
  1527.     + correct inequality changed in 6.2g which is part of right-margin
  1528.       threshold computation (report and fix by William Yuan
  1529.       <yuan@ariel.ucs.unimelb.edu.au>)
  1530.     + corrected definition of $(exec_prefix) in makefile.in (reported by
  1531.       Joachim Schimpf <J.Schimpf@doc.ic.ac.uk>).
  1532.     + apply suggested casts in vms2unix.c to appease DEC C 5.3 (reported
  1533.       by Andy Harper and Graeme Miller).
  1534.  
  1535. This change log started on Wednesday Mar 12, 1997.
  1536.