http://invisible-island.net/vile/CHANGES.R7
Changes for vile 8.0 (released Sat May 30, 1998)
Changes for vile 7.5 (released Sat May 30, 1998)
+ document problem with static initialization of union in CMDFUNC.
+ review g++ warnings, use TYPECAST macro in the newer "harmless" const
warnings.
(tom) 980529 (p)
+ move mlsave[] into edef.h, updating logic so that the last error
message during initialization will be displayed properly.
+ add logic to main.c to popup messages generated during initialization
as per popup-msgs mode (reported by Brendan O'Dea).
+ modify logic for do_source() so that no error is reported if the
default .vilerc is not found (reported by Brendan O'Dea).
(tom) 980528 (o)
+ fix minor memory leak in free_majormode()
+ add a "+fork" option to xvile to override forkOnStartup resource.
+ add search.pl to the list of supported Win32 perl scripts and add a
usage comment to same (patch by Clark Morgan).
+ plug hole in x_open by setting maxscrollbars to zero, fixing a
scenario where the Motif version would crash (patch by Larry Gensch).
(tom) 980527 (n)
+ make search rule for startup file and :so consistent - and always
using $VILE_STARTUP_PATH if the file is not found in the current or
$HOME directory - using new function 'do_source()' (reported by
Arnold Robbins).
+ add Clark Morgan's name to the modules he wrote (w32cbrd.c, w32misc.c,
w32pipe.c).
+ rename perl-api.doc to perl.doc, updated (patch by Brendan O'Dea).
+ modify too-restrictive test for infinite loop in scanner() to work
with 'n' command after "?.*" expression (reported by Kevin Buettner).
(kev) 980525 (m)
+ estruct.h (do_mark_iterate): Restore location of
api_do_mark_iterate_helper to its pre-"l" position. Moved
declaration of mp so that it's available for expansion of
api_do_mark_iterate_helper.
+ perl.xs: Added Brendan O'Dea as an author.
(Vile::command, Vile::Buffer::command): Set discmd so that
prompts are not displayed.
+ perl/search.pl: New file.
+ makefile.in (search.pl): Added to PERL_SRC and INSTALL_PERL
variables. Added install target.
(tom) 980523 (l)
+ remove _WIN32 ifdef's from perl.xs, so that $VILE_LIBRARY_PATH
is supported on Unix as well.
+ add vile-pager script to macros directory.
+ modify makefile.in to install Perl scripts in $(datadir)/perl
(reported by Kevin Buettner).
+ correct typo in perl.xs: CODE where PPCODE should have been used
(patch by Kevin Buettner).
> patch by Brendan O'Dea:
+ some ifdef fixes for OPT_EVAL, OPT_NAMEBST and OPT_SELECTIONS when
extensions are disabled.
+ correct placement of api_do_mark_iterate_helper() in do_mark_iterate
macro.
+ quiet a warning in the Perl interface when an optional script is
not found for inclusion.
> patch by Clark Morgan:
+ modify the win32 build environment so that perl scripts are copied
from .\perl to %VILE_LIBRARY_PATH\perl
+ modify perl.xs to patch the new library location into @INC
(kev) 980522 (k)
+ perl.xs (mlreply, mlreply_dir, mlreply_file, mlreply_no_opts):
Use the PPCODE: directive instead of the CODE: directive. Get
rid of assigning RETVAL and the OUTPUT: directive. Use XPUSHs
to return the values. Also changed the type to void instead of
SV *.
(tom) 980521 (j)
+ modify first item in VILE_STARTUP_PATH to be $(datadir).
+ add *.pl to makefile.in's install rules if configured --with-perl
+ move *.pl to perl subdirectory
+ move *.rc to macros subdirectory
+ move *.doc to doc subdirectory, as well as README.MENU, renamed to
menus.doc, and README.CFG, renamed to config.doc
+ minor fix for HPUX compiler options in CF_ANSI_CC_CHECK configure
macro.
+ newer CF_IMAKE_CFLAGS macro adds IMAKE_LOADFLAGS to makefile.in
+ add configure-test for strerror, use it if available (reported by
Ian A Watson).
+ change 'strdup' call in select.c to 'strmalloc', to build on VMS 6.2,
with DEC C 4.1-001 (reported by Sackett Andrew
<sackett@exchange1.cmh.on.ca>).
+ change c_action in Brendan's patch to a union, eliminating casts.
> patch by Brendan O'Dea:
+ Procedures now behave more like builtin functions--they may be bound
to keystrokes and listed in the [Binding List] pop-up (for which an
optional help string may be supplied):
store-procedure foo "some descriptive text"
...
~endm
bind-key foo ^A-f
this appears under `:describe-function foo' as:
"foo" M-f
( some descriptive text )
Notes/Bugs:
* describe-key doesn't work yet.
* setting the MOTION/OPER flag is not implemented for procedures
--not sure whether it ever could/should be.
* the method used to update the [Binding List] requires *lots* of
passes through the tree.
Perl stuff (strings to eval or coderefs) can also be put into the
command table under a name--described in the perl.xs comments.
Vile::register grep => 'hgrep', 'recursive grep', 'hgrep.pl';
the Vile::register_motion and register_oper variants additionally set
the MOTION or OPER flag:
*cb = \$Vile::current_buffer;
Vile::register_motion 'my-forward-line-at-bol' => sub {
$cb->dot((scalar $cb->dot) + 1, 0);
};
Vile::register_oper 'my-delete-til' => sub { $cb->delete };
(tom) 980520 (i)
+ correct force-console entry in modetbl (patch by Clark Morgan)
(tom) 980519 (h)
+ correct const-cast warnings for x_set_icon_name() and
x_set_window_name().
+ correct fallback prototype for mktemp, which should not have a 'const'
parameter.
+ vile-pas-filt should treat '_' as an identifier character
(reported by Radek Liboska).
> patches by Clark Morgan for Win32 and Perl configurations (tested on
WinNT 4.0 and Win95):
+ Winvile's read pipe and region filter operations now create implicit,
hidden console windows (i.e., black console windows don't pop up and
disappear anymore). Exception: Win95's command.com hangs if it
attempts to communicate with implicitly created consoles.
Consequently, a new boolean mode (called "force-console") has been
created which specifies whether or not consoles are created
explicitly prior to creating a child process or implicitly when the
child process is exec'd. By default force-console is only set when
the host is win95 and the current shell is command.com
+ Prevent ^C/^Break in a console subshell from kernel faulting win95.
+ If the user's shell is a unix clone derived from the Bourne shell,
add an extra layer of quoting that preserves Unix argument semantics.
For more details, refer to the function mk_shell_cmd_str() in the
file w32misc.c
+ new file w32misc.c + some common win32 code in w32pipe.c moved to
w32misc.c
+ modify makefile.wnt to add two new build configurations to the Win32
env: vile-with-perl and winvile-with-perl.
+ add VILE_LIBRARY_PATH environment variable to perl.xs to locate
the help file.
+ add new file mkprlenv.wnt, which is included by makefile.wnt
(tom) 980515 (g)
+ modify quote() function to show the accumulated number for ^Vnnn.
+ change 'value' parameter of SetVarValue() to eliminate a const-cast
warning, which in turn led to applying const to TTrez interface.
+ change category of 'sideways' mode to allow setting it for internal
buffers, such as [Help].
+ add a range-test for rows and columns in movecursor() to avoid
passing negative coordinates to tcapmove when setting the 'sideways'
mode.
+ distinguish MS-DOS drives from UNC pathnames (patch by Ed Henderson)
(tom) 980513 (f)
+ replace global variable curswval with the corresponding function
calls, make nextsw a function next_sw(), so that shift-width is
computed correctly as needed (reported by abigail@fnx.com and Ian A
Watson <watson_ian_a@lilly.com>)
+ correct handling of command-line options in crypt.c (patch by
Paul Fox).
+ correct missing check for empty line in screen_string, which would
cause a core dump if :show-variables were run on an empty buffer
(reported by Ed Henderson <enhenderson@micron.com>, patch by Kevin
Buettner).
+ updated modes.doc to match implementation of fences.
(kev) 980511 (e)
+ api.c (api_motion): Revised the settings for the following
global flags: clexec, discmd, disinp, isnamedcmd. Some of
these were not getting set or were getting set in such a
way so as to either cause core dumps or incorrect behavior.
+ bind.c (kbd_erase, kbd_erase_to_end): Don't erase anything if
disinp is FALSE. Reason: If we didn't display anything to
begin with, there should be nothing to erase.
+ history.c (hst_append): Don't append to the history buffer if
disinp is FALSE.
+ input.c (editMinibuffer): Make sure the input character is
added to the buffer when disinp is FALSE.
+ perl.xs (svrs): New variable which represents the input
record separator. This is necessary because the symbol
corresponding to rs is not exported from the Win32 DLL for
perl5.00402.
(perl_init): Initialize svrs.
(READLINE): Use svrs instead of rs.
(set): Call api_setup_fake_win() to make sure that local
sets are done to the correct buffer.
(set_region): Renamed from setregion. setregion is still
maintained as an alias. I'm not entirely sure I like the new
name better, but it is at least consistent with set_selection.
(selection_buffer, set_selection): New methods for getting/setting
the selection.
+ proto.h, select.c (get_selection_buffer_and_region): New function.
(kev) 980506 (d)
+ fences.c (comment_fence): Call scanboundry() before calling
scanner() to set the scanner's boundary. This fixes a bug
in which the corresponding fence would sometimes not be matched
due to an old scan boundary sitting in the middle of the region
delimited by the two fences. A quick way to reproduce the bug:
Search for something in the middle of a multi-line comment.
Move your cursor to the beginning or end of the comment. Press
the '%' to try to move to the other end of the comment. Notice
that it doesn't. (Or it does, if the bug has been fixed!)
+ input.c (editMinibuffer): Some hacks for 'i', 'a', 'I', and 'A'.
(tom) 980506 (c)
+ modify getregion() to handle the special case where a region is given
extending to the end of file, e.g., "^A~]", when DOT is on the last
section, will set DOT to the first line past the file, e.g., the
buf_head line (reported by Adam Denton).
+ modify return from kbd_reply() so that macros behave more
consistently with interactive use, by returning an ABORT when
name-completion fails.
+ modify handling of mini-edit character to allow it to be bound to the
same code as abortc (e.g., escape).
+ correct a case where entering mini-edit character would allow name
completion to exit from kbd_reply().
+ modify handling of minibuffer editing commands so that non-motion
commands (such as 'i' and 'a') are treated as errors rather than
implicitly inserting them into the buffer.
(tom) 980503 (b)
> patch by Clark Morgan
+ correct bug that made winvile font-dialog die on Win95, using example
from Petzold for processing messages associated with the system menu.
+ added a menu separator to the system menu
+ gave "Font" a keyboard accelerator
+ added a cast to keep the compiler from barking about a call to
EnumFontFamilies().
(kev) 980503 (a)
+ api.c (api_setup_fake_win, api_dotinsert): Set MDNEWLINE to
false when deleting a newline before the end of a file.
(api_dotgline): Unused, #if 0'd out.
+ makefile.in (vile-perl-api.pod, vile-perl-api.doc,
vile-perl-api.html, vile-perl-api.man): New targets. I'm going
to let Tom decide which of these should be installed and where.
+ perl.xs: Converted the inline documentation to be almost pod
format. There is still a preprocessing step needed to convert
to a pod file. I also rearranged the order of the methods
so that they'd be roughly alphabetical.
(svgetline, svgetregion, svgettors): Don't look at end
marker any more to determine end of region. Instead,
use the region length to keep track of how many characters
are left in the region. (I added a comment on the problems
associated with the end-of-region mark to the code just
before svgetline()).
(setregion): Rewritten to call getregion() for setting up
the region. This way the length gets set right.
(perl_default_region): Make sure the region is really being
computed by getregion().
(do_perl_cmd): Fixed the code so that range specs work
again.
Changes for vile 7.4 (released Fri May 1, 1998)
(tom) 980501
+ change table lookups in match_complex() and global_val_init() to
work with CSet.
+ change WATCHTYPE from an enum to an unsigned int, since TurboC did
not accept that in prototypes.
+ increase LEN_BUFFER in mktbls.c to accommodate renaming of VI_NL
(caused compile problem with Solaris 2.5.1 cc, but is still limited
to allow test-compiles with TurboC).
+ make declarations of x_watchfd() x_unwatchfd() consistent, to compile
with unproto on SunOS 4.x
(kev) 980429 (za)
+ finderr.c (predefined): Add hgrep pattern to the predefined
regular expressions for the error finder. (Patch from Clark
Morgan.)
+ hgrep.pl: Added Clark's error finder comment.
Removed comment about me about to make massive changes which'll
change the interface drastically.
(hgrep): Don't search in files named 'tags'. (Suggested by
Clark Morgan.)
+ eval.c, proto.h (stenv): New function for setting vile's
variables (from perl or whereever).
+ perl.xs (working): Added OPT_WORKING ifdefs. (Description
of problem from Clark Morgan.)
(set): Handle perl variables as well as modes.
(buffers): New method which retrieves a list of all buffers.
(tom) 980429 (z)
+ trim trailing whitespace from .c and .h files
+ implement font-selection in winvile, added to control menu. This
works passably, though you must press ^L to repaint if the character
size does not change. (Italic fonts are clipped a little also, but usable).
+ add logic to ntwinio.c so that winvile user can use control modifier
to mouse button to perform rectangular selection, as in xvile
(requested by Richard A Ward <wardra@rss.rockwell.com>).
+ correct ":e!" command so that if user asks to reread the unnamed
buffer, that vile simply clears it, rather than passing a null
filename to readin() (reported by Keith Williams
<keith@archelon-us.com>).
+ rename symbol NL to VI_NL, and the termcap symbols in tcap.c
to use "tc_" prefix to avoid conflicts with curses.h on OSF/1 3.2
+ add pas-filt.c and corresponding vile-pas-filt program (request by
Radek Liboska <liboska@tereza.uochb.cas.cz>)
+ modify c-filt.c so that it reads all command-parameters as keyword
files.
+ correct two errors in c-filt.c (did not handle continued string
literals - reported by Clark Morgan - and did not handle preprocessor
lines with leading whitespace.
+ correct minor formatting nit in [Settings] buffer, adding a blank
line between the multi-column and single column buffer settings.
+ make a more-useful message when describe-function is applied to
a user-defined procedure.
> patch by Clark Morgan:
+ Winvile gets its own unique $progname value.
+ The ';' register is made accessible to all versions of vile. The
availability of the ';' and '.' registers to all versions of vile is
documented in vile.hlp .
+ New win32 mode called "scroll-pause" added, which inserts a small
delay in the console editor's scrolling code if required by user's
video HW. Documented in vile.hlp .
(kev) 980427 (y)
+ history.c (WillGlue): Allow '\r' to be glued.
(edithistory): Transform '\n' into '\r' for insertion into the
history buffer.
+ input.c (eol_history): Allow '\r' to match '\n'.
+ modes.c (choice_to_code): Do case insensitive comparisons. This
permits TRUE and FALSE to be used as boolean values as well as
'true' and 'false'. (The perl interface was being given the
uppercase values to return. Though it could be argued that I
should maybe convert these to 0 and 1...)
(adjvalueset, set_mode_value): Split functionality of adjvalueset
into adjvalueset which (still) does the prompting and the
new function set_mode_value which does the setting. Having
a setter which does no prompting makes it easier to call from
other places (like the perl interface.)
+ proto.h (set_mode_value): New declaration.
+ perl.xs (perl_prompt, perldo_prompt): More or less renamed
from the old perl and perldo. perl and perldo still exist,
but they are small wrappers which make managing the history
easier.
(current_position): Alias for dot.
(READLINE, mlreply, mlreply_no_opts, mlreply_file, mlreply_dir):
Put calls to hst_glue() in so that the history mechansism will
work right.
(Vile::set, Vile::get, Vile::Buffer::set, Vile::Buffer::get):
New methods.
Brendan O'Dea contributed the following changes to perl.xs:
I have nuked the original perldo/replace_line mechanism
and arranged such that both perl and perldo feed a string
to eval to the same [static] function after getting the
user's input.
The perldo wrapper massages the string into an implicit
loop if required in pretty much the same way as Perl does
for the -n/-p options.
Additionally I've modified the way PRINT works to the
minibuffer so that it handles embedded newlines and joins
on $,
The options format is almost the same as used by perl, and
defaults to `-lpi' which was how it originally worked.
Example:
:r $MAIL :%perldo print if /^From /^M-00ni
Two minor problems are that the history pastes the options
onto the command, and there is a minor glitch with `-lpi'
which causes a trailing newline to be appended to the
buffer.
(tom) 980426 (x)
+ modify :-line line specification parsing so that statements such
as
:.,.+2,+3,-4;99p
work as in vi. Both the repetition for commas and the character
class for semicolon were missing.
+ modify :-line line specification parsing so that statements such
as
:1,w filename
:.w filename
work as in vi. Vi accepts an empty string (e.g., between the "," and
"w") as ".", and does not require that both limits in a range be
given. Previous behavior of vile would prompt, in the latter
example, when the space after "w" is typed, for the number of lines.
+ corrected :-line parser bug which caused state hang, e.g, when
typing
<esc>:a<backspace>1<return>
vile would be expecting a command verb when the '1' is read, so
it would only allow the user to abort the command.
+ modify end-character parameter of readpattern so that it is not
necessary to escape a '?' when doing a reverse search.
+ correct logic of set_rect_columns() so that reversed rectangular
selection (where DOT > MK) gives the right number of columns
(reported by Kuntal M. Daftary).
+ remove spurious comma in enum WATCHTYPE (reported by Larry Gensch)
+ update README.MENU with "cmd" keywords for the examples of search
menu entries. Other minor documentation updates.
+ tested xvile with ElectricFence, doalloc and Purify. (The problems
with 'working' mode did not appear on SunOS or Solaris, but did on
Linux). Minor fixes to ifdef's to build the test configuration.
+ remove chgd_fences callback from the newer regular-expression
fences modes, since that function applies only to fence-pairs.
+ modify 'working' mode so that xvile simply sets the watch cursor.
Though the "working..." message would be nice to have, it introduces
problems with X Windows to cause events which may interrupt the
normal event processing. The new scheme sets a flag which is tested
in the event loop; the watch cursor will therefore not appear
immediately, but it is still automatic. (prompted in part by a
bug report by Mike Peercy <peercy@sierravista.com>).
(tom) 980424 (w)
+ make xvile menu entries "work" which rely on executing from the
:-line, by using "cmd" prefix for "apropos", and new function
>s for describe-key. (The "cmd" is a kludge - we should revisit
this later, since it does not help if we want to process parameters
from the macro before running out & reverting to the :-line).
+ modify describe-key so that it prompts for a keycode which is not
mapped.
+ add new function >s, which prompts for a keycode which is not
mapped, e.g., "#1" for function-key-1.
+ add note to vile.hlp about the use of backtic in shell expressions
(patch by Clark Morgan).
+ revised fences so that the C-preprocessor and C-comment functions
are parameterized in terms of regular expressions, making one mode
per expression. As such, they are reusable for majormodes.
+ remove logic from x11.c for is_color_cursor, to make cursor visible
on reverse-video areas.
+ add new mode mini-hilite, which controls the appearance of the :-line
when user toggles into mini-edit mode.
+ make ^G toggle in the :-line editing rebindable, as the character
'mini-edit'.
+ correct logic for ^G toggle so that user can insert that character
into a reply by quoting it.
+ correct core-dump due to vtinit() calling 'imworking()', which was
happening when executing a command such as ":!resize -s 24 80".
+ correct core-dump when user types ^G^V in a :-line prompt (reported
by Shawn Halpenny <malachai@iname.com>).
(kev) 980422 (v)
+ api.c (curwp_visible): Renamed from curwp_after. No longer static.
(linsert_chars): Don't suppress the newline when that's the
only character being inserted. Thanks to Brendan O'Dea for
providing me with a test case which demonstrated this bug.
(api_motion): Set clexec and discmd to avoid printing on the
message line.
(api_swscreen, api_update): Don't detach the fake windows anymore.
+ api.h (curwp_visible): Declared.
+ estruct.h (is_fake_window): New macro. Changed all callers
of is_fake_win() (which was a function) to call is_fake_window
instead.
(is_visible_window, for_each_visible_window): New macros.
+ buffer.c, display.c, exec.c, file.c, finderr.c, history.c,
ibmpc.c, modes.c, oneliner.c, select.c, window.c, x11.c
(for_each_visible_window): Changed some occurrences of
for_each_window to for_each_visible_window. Any code which
really needs to look at all the windows, whether fake or
visible still uses for_each_window.
+ perl.xs (keystroke): Make sure that curwp doesn't point
at a fake window before attempting to get a keystroke.
Also fixed the nonwaiting version so that it works.
(beep): New method.
+ proto.h, window.c (is_fake_win, detach_fake_windows,
reattach_fake_windows): Removed these functions.
+ shell.pl: Extended it's functionality. It now includes enough
terminal emulation to do some simple line editing. (Enough for
bash to work in vi mode.)
+ window.c (push_fake_win, pop_fake_win): Don't increment/decrement
the b_nwnd field of a buffer when pushing/popping. This field
indicates the number of visible WINDOW structures that a buffer
has. (#if 0'd out for now. Need to remove altogether at some
future date.)
+ x11.c (grip_moved): Fixed both OpenLook and Motif versions so
that they don't delete the window when it is shrunk to a size
less than 1 line. Although this make a certain amount of sense,
it can be quite annoying to a user to lose a window from a slip
of the hand. Note that there are still some problems with this
code. Windows that are made really small don't always end up
really small (reported by Paul Askounis).
(x_watchfd): Cast third argument of XtAppAddInput to an XtPointer.
(kev) 980419 (u)
+ ansi.c, borland.c, dumbterm.c, ibmpc.c, ntconio.c, ntwinio.c,
os2vio.c, tcap.c, termio.c, vmsvt.c (null_t_watchfd,
null_t_unwatchfd): Added to term structure initializations.
+ estruct.h (WATCHTYPE): New enumerated type.
(t_watchfd, t_unwatchfd): New fields in the TERM structure.
(TTwatchfd, TTunwatchfd): New macros for calling the watch/unwatch
functions.
+ makefile.in (watch.c, watch.o): Added to the appropriate targets.
+ api.c (linsert_chars): Made more efficient. Handle newlines
at end of buffer properly.
(api_gotoline): Allow DOT to be position at end of buffer.
(api_motion): Fixed bug which was calling early return. (Thanks
to Sean Ahern for finding this one.)
(api_swscreen): Detach/reattach fake windows.
(api_update): New function.
(propagate_dot): New function.
(api_command_cleanup): Call propagate_dot; don't do this work
directly anymore.
+ api.h (api_update): Declared.
+ buffer.c (renamebuffer): New function.
(namebuffer): Moved some of the functionality to renamebuffer.
Call renamebuffer to do the work.
+ perl.xs (GIMME_V, G_VOID): Define in terms of GIMME and G_SCALAR
if not already defined. (Thanks to Brendan O'Dea for pointing
this out.)
(perl): Don't do initializations/cleanups of Vile::current_buffer
if called recursively.
(perl_init): Cause Vile::Buffer::PRINTF to be defined.
(svcurbuf_set): Put return statement in.
(stringify_coderef, perl_free_callback, svgetline, svgetregion,
svgettors): New functions.
(INITMESSAGE, ENDMESSAGE): Removed these nvi remnants.
(PRINT): Handle input record separator and input field separator.
(READLINE): Rewritten to handle the record separator correctly;
call svgetline, svgetregion, or svgettors as appropriate.
(attribute_cntl_a_sequences): Pass the region shape when calling
attribute_cntl_a_seqs_in_region().
(fetch, attribute, buffername, filename): New methods.
(Warn): Minor cleanup.
(mlreply, mlreply_no_opts, mlreply_file, mlreply_dir): Allow
either a TRUE or FALSE status to set the return value to a
string. The other status codes cause undef to be returned.
Thanks to Brendan O'Dea for diagnosis and patch.
(command): Adjust the way docmd is called to match new extra
parameter introduced in patch t (or thereabouts).
(keystroke, working, update, watchfd, unwatchfd) New methods.
Also throughout this file (perl.xs), there was a lot of minor
reformatting. A few new comments were even added.
+ proto.h (renamebuffer, attributeregion_in_region, null_t_watchfd,
null_t_unwatchfd, watchfd, unwatchfd, dowatchcallback,
detach_fake_windows, reattach_fake_windows): Declared.
(attribute_cntl_a_seqs_in_region): New parameter.
+ select.c (attributeregion_in_region): New function.
(attribute_cntl_a_seqs_in_region): New parameter for passing
the shape of the region. Use shape parameter for setting region
up properly.
+ shell.pl, tailf.pl: New example perl scripts. Not really complete
yet, but they demo some of the new facilities. (Maybe we should
create a demo directory?)
+ watch.c: New file containing fd watching framework. Will probably
add timer management here as well.
+ window.c (detach_fake_windows, reattach_fake_windows): New functions.
Actually, I'm not convinced anymore that this is the right way to
do it and these will probably go away.
+ x11.c (x_watchfd, x_unwatchfd, watched_input_callback): New
functions.
(tom) 980417 (t)
+ modify interface of 'docmd()' to allow caller to set clexec, allowing
menu.c to invoke this and cause commands to prompt interactively.
+ modify 'get_executable_dir()' to use 'flook()' to deduce xvile's
location, so that new_vile menu-entry works when the full path is not
given (reported by Lance Heller <lheller@dart.wcom.com>).
+ restore search-behavior on DOS, NT and OS/2 for startup file. These
systems have no $HOME, so we look along the $PATH.
+ correct/extend configure test for isready_c macro: add a case for
UWIN, check for end of list, add a definition for SYS_WINNT.
(tom) 980414 (s)
+ correct change to dofile in 7.3o, which caused vile to discard
the startup file after processing it if it were specified on the
command-line (reported by Sean Ahern, some input by Brendan O'Dea).
+ modify configure script, adding test for stdio structs that control
the isready_c macro, making this handle the case for SCO UW ver 7
(requested by Clark Morgan).
+ modify configure script to add Perl's link-prefix (patch by Brendan
O'Dea).
> patch by Clark Morgan:
+ turn OPT_W32PIPES on (I modified to condition it on SYS_WINNT).
+ add entry to error finder to support perl 5 diagnostics
+ create temporary filenames in w32pipe.c with an API that
preferentially honors the current settings of TMP and TEMP.
+ add back Win32-specific comments to c-filt.c
+ fix a bug in c-filt.c that caused coloring to go south if a string
literal ended with \\. E.g., the statement:
char *x = "\\";
would cause almost all syntax coloring following this var declaration
to fail.
(tom) 980412 (r)
+ modify configure script and makefile.in to allow for DOS-style
suffixes (e.g., ".exe"), needed for OS/2 EMX.
+ fix pathname support for OS/2 EMX by allowing MS-DOS-style drive
letters (estruct.h, path.c).
+ suppress 'working...' message while writing to a pipe (reported by
Clark Morgan).
+ add rule to make c-filt to makefile.djg
+ add writePipe() function to make MS-DOS version able to write to a
pipe.
+ use backslash-form for path in c-filt.c on Win32 (Clark Morgan).
> clipboard support for vile/winvile under Win32 (Clark Morgan):
+ Permits Win32 users to copy the unnamed register contents to the
Windows clipboard. Functionality is bound to Alt+Insert.
+ Adds stubs for two additional clipboard-related features. Stubs are
bound to Ctl+Insert and Shift+Insert.
+ Adds a new Win32 source file (w32cbrd.c).
+ Revises the "Win32 specifics" section of the help file to talk about
Win32 features.
> new implementation of w32pipe.c (Clark Morgan):
+ reset ukb to zero in filterregion() to avoid having insfile() insert
file/pipe input into a kill register, rather than the current buffer
on platforms where softfork() is faked.
+ w32pipe.c module documentation lists limitation of native win32
pipes.
+ winvile.exe and vile.exe are now built with thread-safe libraries,
because
+ spawn.c's filterregion() routine has been modified to create separate
writer and reader threads in a Win32 env.
(kev) 980409 (q)
+ api.c (api_setup_fake_win): Added another parameter to this
function which controls whether the deferred deletes get
done or not. Fixed all callers.
(api_dotinsert, api_dotgline, api_setup_fake_win, api_bp2vbp,
api_command_cleanup): Added code for doing deferred deletes.
(api_delregion, api_motion): New functions.
(api_edit): Rewritten to better deal with anonymous buffers.
(api_swscreen): Permit oldsp to be NULL.
+ api.c, api.h, perl.xs (SCR, VileBuf): Renamed SCR to VileBuf.
Other renamings done as well so that names of local variables
make more sense.
(api_dotgline, READ): Added new (output) parameter to
api_dotgline which indicates if a newline is needed or not.
+ map.c, proto.h (mapped_ungotc_avail): New function.
+ perl.xs (svStartLine, svStopLine, svScreenId, svcurscr):
Eliminated these static globals. More importantly, this
means that $VI::StartLine, $VI::StopLine, $VI::ScreenId,
and $curscr are no longer available from perl.
(svcurbuf): New static global which plays a similar role to
the now defunct svcurscr.
(svcurbuf_accessors): new static global variable.
(newVBrv): Renamed from newVIrv. Also, no blesses the object
it creates into Vile::Buffer instead of VI.
(perl): Don't call getregion unless haveregion is non-NULL.
Fixes a nasty infinite loop bug in getregion(). Also
removed initialization of svStartLine, svStopLine, etc.
(VI, Vile, Vile::Buffer): The VI package is no more. Everything
has been renamed to go into either the Vile package or the
Vile::Buffer package.
(svcurbuf_set): Magically called when $Vile::current_buffer gets
set.
(perl_init): Nuked references to svStartLine, svStopLine, etc.
Also added magic to svcurbuf so that svcurbuf_set is called
whenever $vile::current_buffer is assigned to from Perl.
(perl_eval): Or'd in the G_KEEPERR flag in the call to
perl_eval_sv. The lack of this flag was preventing error messages
from getting printed.
(current_buffer): New method in both Vile and Vile::Buffer.
(Msg, AppendLine, DelLine, GetLine, GetLines, SetLine, InsertLine,
LastLine, SwitchScreen): Nuked.
(PRINT, READLINE): Documented.
(insert): Alias for PRINT.
(new, edit): edit is an alias for new and new was renamed from Edit.
(setregion): Documentation updates; motions as regions.
(delete, motion): New methods.
(command): Now a method in both Vile and Vile::Buffer.
+ ptypemap (T_VileBuf): Renamed from T_VI. Slight change in message
when buffer no longer exists.
+ region.c (getregion): Prevent infinite loop when MK and DOT are in
different buffers. Print a BUG: message when this happens.
+ select.c (sel_extend): Added FIXME comment at approximate place in
the code where we should check to make sure DOT and MK are in the
same buffer. (BTW, to reproduce this bug (where they aren't the
same), get into xvile, split the screen and put a different buffer
in each. Now click with the mouse twice, very rapidly, each click
falling on alternate sides of the middle mode line. After doing
this, DOT will be in one buffer and MK in the other. There's
probably other places that need to fixed too.
+ x11.c (x_preparse_args): When adding the event handler, for
x_process_event, or in (Button1MotionMask | Button3MotionMask)
instead of ButtonMotionMask. It seems that my X server on linux
generates motion events regardless of whether any mouse buttons
are pressed when ButtonMotionMask is used. I think this is
actually a bug in the X server, but the above is a more precise
way of saying what we really want to do anyway.
(kev) 980403 (p)
+ hgrep.pl, glob2re.pl, visit.pl: New files which implement
a recursive grep with hypertext links in perl.
+ api.c (api_command_cleanup): Fixed bug in which DOT
was being propogated to the fake windows instead of
the real ones. (Which is a pretty useless thing to do.)
(api_swscreen): Added big comment noting problems with
calling api_command_cleanup.
+ cmdtbl (exechypercmd, showhypercmd, operattrhc): New
commands related to hypertext commands.
+ estruct.h (AREGION): Added new field ar_hypercmd which
points at a hypertext command.
+ select.c (hypercmd): New static variable used to communicate
the hypertext command string to attributeregion().
(free_attribs, free_attrib, sel_begin, selectregion,
attribute_region): All modified slightly to deal with the
new ar_hypercmd field in the AREGION structure.
(attribute_cntl_a_sequences): Look for an H followed by
the hypertext command, followed by a null character in
the ^A sequences.
(attributehyperregion, operattrhc, hyperspray, doexechypercmd,
exechypercmd, doshowhypercmd, showhypercmd): New functions.
+ vile.hlp: Added new sections "Writing your own filters" and
"Hypertext".
+ x11.c (multi_click): Added code to execute hypertext command,
when present, on a double click.
(tom) 980331 (o)
+ change logic that determines whether to set dos mode for a file so
that .vilerc (or vile.rc) and source'd files are treated specially.
For those files, all lines must end with ^M's to set dos mode
automatically when they are read. This will reduce the chances of
trimming ^M's from map commands.
+ modify dofile() function, used to load/execute .vilerc and source'd
files, to check first for buffer with the same filename. This fixes
a problem which would cause vile to allocate more than one buffer for
.vilerc when an error is encountered.
+ use new function tb_insert() rather than tb_put() to insert strings
for expand-chars. The tb_put() function truncates the buffer at the
location of the new character, and does not work well for inline
editing.
(kev) 980330 (n)
+ api.c (api_gotoline): Make sure that we can move off of
buf_head if presently on it. (This fixes a bug in which
it was sometimes impossible to move dot. setrange also
exhibited a similar bug.)
+ cmdtbl (perl): Allow perl to be run in view mode.
+ perl.xs (perl): Set/restore clexec, discmd, and isnamedcmd
so that calls to the various mlreply functions will work
from within perl. (Thanks to Sean Ahern for bug reports
and patches.)
(perl_init): Call lengthen_path to expand ~ to the user's
home directory. (Thanks again to Sean Ahern for bug
reports and patches.)
(sv2linenum, sv2offset): New functions for converting
'$' and '$$' to either line number or offsets within
lines.
(VileCommand): Renamed to command.
(inplace_edit, setregion, dot, mlreply, mlreply_no_opts,
mlreply_file, mlreply_dir): Added documentation.
(setregion, dot): Handle '$' and '$$'.
(setregion): Return the buffer object in a scalar context.
(attribute_cntl_a_sequences, unmark): New functions.
+ proto.h (attribute_cntl_a_seqs_in_region): Declared.
+ select.c (attribute_cntl_a_seqs_in_region): New
function.
(kev) 980324 (m)
+ api.h (dot_changed): New field in SCR structure.
+ api.c (api_gotoline): Prevent enormous amounts of looping
for outrageous count values.
(api_dotgline): Fixed bug which caused <$curscr> operator
to go into infinite loop.
(api_command_cleanup): Added code for propagating DOT.
(api_bp2sp): Initialize dot_changed field.
+ perl.xs (perl_init): Add our own search paths to @INC.
(dot): New method for getting/setting DOT.
(GetUserInput): Removed.
+ proto.h (is_fake_win): Declared.
+ window.c (is_fake_win): New function.
(kev) 980321 (l)
+ api.c (api_setup_fake_win, api_dotgline, api_command_cleanup,
api_bp2sp): Rearranged initialization of DOT so that it will
be done conditionally in api_dotgline. This fixes a nasty
bug in which lines could get added to the wrong buffer. It
also allows perl functions to be written which look at the
current location of DOT and possibly do something with it.
Before, we were always setting it to the start of the region
(which may not have a lot of relevance).
+ api.h (SCR): New field dot_inited.
+ perl.xs (setregion): Set dot_inited field.
+ x11.c (atom_CLIPBOARD, x_preparse_args): New atom; initialize.
(x_get_selection, x_paste_selection, x_get_clipboard_text,
x_convert_selection, x_lose_selection, own_selection,
x_own_selection, copy_to_clipboard, paste_from_clipboard,
x_process_event): Handle CLIPBOARD selections as well as
primary selections.
+ cmdtbl (copy_to_clipboard, paste_from_clipboard): New
commands.
+ estruct.h (CLIP_KREG): New kill register.
(NKREGS, SEL_KREG, KEYST_KREG): Renumbered to account for
new kill register, CLIP_KREG.
+ line.c (index2reg): Represent the clipboard kill register
with a ';'.
+ vile.hlp: New documentation about X11 CLIPBOARD selections.
(tom) 980321 (k)
+ correct logic in tcap.c so that visual-matches works for a specific
color (reported by Kuntal M. Daftary).
+ add test for Xp library, needed to link with RedHat Motif 2.1
(reported by Richard <rruth@studio.disney.com>).
+ add configure option --with-startup-path to allow installer to
customize the $startup-path used by vile.
+ change Unix lib directory (i.e., location of vile.hlp) to
$(prefix)/shared/vile. The older location, $(exec_prefix)/lib, is
still in the $startup-path, but vile.hlp will not be installed
there.
+ remove config.cache at the start of configure script, since we use it
only for problem reporting.
+ ifdef'd out w32pipe code, but make it available for further
development as OPT_W32PIPES (recommended by Clark Morgan).
+ minor fixes/resync for configure macros CF_CHECK_ERRNO,
CF_DISABLE_ECHO, CF_FIND_LIBRARY, CF_NCURSES_LIBS and
CF_NCURSES_VERSION.
(kev) 980320 (j)
+ api.c (linsert_chars): Rewritten both for efficiency and
so that the MARK at the end of the region stays put when
doing something like:
$curscr->inplace_edit(1);
while (<$curscr>) { s/foo/bar/g; print; }
(setup_fake_win): No longer static. Renamed to
api_setup_fake_win. Also set DOT here to the beginning of
the region.
(api_mark_iterator): New function.
(api_gotoline): No longer static. Also renamed from
_api_gotoline. Fixed all callers.
(api_dotinsert, api_dotgline): New functions.
(api_bp2sp): Initialize the region beginning and end
to point to something valid.
+ api.h (SCR): Added new fields region, regionshape, and
inplace_edit.
(api_dotinsert, api_dotgline, api_gotoline, api_setup_fake_win):
Added declarations.
+ cmdtbl (perldo): New command.
+ estruct.h (api_do_mark_iterate_helper): New macro.
(do_mark_iterate): Invoke api_do_mark_iterate_helper in order
fix the the marks in the SCR structure region.
+ perl.xs (newVIrv): Make the references to SCR objects that
we give perl refer to globs instead of a scalar. Bury
the scalar in the scalar portion of the glob. The reason
we do this is so that these references may be used as
filehandles as well as objects.
(perl_free_handle): Slight change to account for extra
levels of indirection to get to the thing we really have
to zero out.
(perl): Added calls to hst_flush() and hst_init() in order
to prevent user input from a perl command from being added
to the history line for the perl command. (It was simply
getting appended on the end.) Unfortunately, this input
doesn't seem to be recorded in the history any longer, but
at least it doesn't mess up the perl command.
Also rewrote the code for setting up a region, making sure
that the new fields in the SCR structure are initialized
appropriatedly.
(replace_line, perldo): New functions.
(perl_init): Tie STDIN to read from the minibuffer. Modified
other tie statements (calls to sv_magic()) slightly to do
the same thing.
(Msg): No longer an alias for PRINT.
(PRINT): New method which handles both buffers and STDOUT
and STDERR.
(READLINE): New method which will either read a line from
a buffer or fetch input from the user via mlreply_no_opts().
When it reads from a buffer, it has the potential to read
multiple lines if used in an array context.
(VileCommand): New method which runs an arbitrary vile
command. I'll probably rename this one -- don't like
the caps.
(inplace_edit, setregion): New methods which set/get fields
from the SCR structure.
(GetUserInput): Will probably go away. This was my first
attempt at a mechanism for fetching user input.
(mlreply, mlreply_no_opts, mlreply_file, mlreply_dir): Various
methods for fetching user input from the message line.
+ ptypemap (T_VI): Account for the fact that our objects may
also now be considered as filehandles. (The references now
refer to globs instead of scalars. The scalar is still there,
but it's just stuck inside the glob.)
(tom) 980317 (i)
+ remove binding of quote-next-character to ^V (reported by Keith
Williams <kurris@hotmail.com>, recommended by Paul Fox).
+ add an AIX-specific pattern to finderr.c (patch by Michael Finken
<finken@conware.de>).
+ correct w32pipe.c to re-open stdin on the first available descriptor
(i.e., 0) when cleaning up after a filter operation (patch by Clark
Morgan).
(tom) 980316 (h)
+ correct logic that shifts minibuffer back on return from kbd_reply,
had not set curwp.
(pgf) 980315 (g)
+ documentation and usage improvements for vile-crypt, in crypt.c,
vile.hlp, and vile.1.
(tom) 980314 (f)
+ add "attribute-reverse-til" (suggested by Kuntal M. Daftary
daftary@cisco.com).
+ correct logic of find_mode() so that :setl cts=4 works as before.
+ modify kbd_reply() to support inline-editing of the user's text, both
by arrow keys, as well as vi-style motion commands. Use ^G to toggle
between the two modes.
+ change interfaces/logic of hst_append(), kbd_show_response(),
kbd_reply() to make them accept nulls. This is for later extensions,
since regexp.c does not handle nulls. Use the mask KBD_0CHAR for
this purpose.
+ modify check for type-ahead to make 'showmatch' skip the 1/4 sleep,
ignoring the current value of 'smoothscroll' (reported by Matthias K.
Buelow <token@wicx50.informatik.uni-wuerzburg.de>)
+ adjust redefinition of WINDOW in tcap.h to work around OSF1 3.2,
which includes curses.h from term.h
+ split-out function ntcons_reopen() from ntkopen(), to move it past
the pressreturn() call; otherwise the user sees no prompt when
running a shell command (reported by Manoj Bhargaw <Manoj@Proginet.com>).
+ minor adjustments to 'w32pipe' by moving some code into w32pipe.c to
allow reuse in the GUI winvile, and using $shell rather than inline
expressions for shell spawned in pipes. Testing with bash did not
seem to allow /bin/sh as a possible shell, so I dropped that from
Clark's patch.
+ improve pipes for W95/WinNT using native support, new mode 'w32pipe'
(patch by Clark Morgan).
(pgf) 980218 (e)
+ added "crypt-til" operator (bound to ^X-C) which will
encrypt/decrypt an arbitrary region. the main goal was to make
it easy to read a previously encrypted file and decrypt it for
reading, or to read a clear file, and quickly encrypt it before
writing it. i find crypt mode to be cumbersome at best -- i find
the explicit command to be more useful.
+ modified crypt.c to allow building it as standalone utility.
this gets built as vile-crypt, and it's compatible with the crypt
command inside of vile (if used over an entire buffer). usage
is:
vile-crypt [-m] [-k crypt-key ] [file ...]
if '-k crypt-key' is omitted you will be prompted instead, and
'-m' leaves text to the first blank-line intact, which i find
useful for encrypting individually stored mail messages. the
en/decrypted text appears on stdout.
+ attempted to document vile's encryption features in vile.hlp.
(tom) 980208 (d)
+ reformatted proto.h, ordering prototypes alphabetically.
+ make column shown by ^G the same as for the ruler (reported by David
Letcher <David_Letcher@writeme.com>).
+ add command show-printable to show exactly what vile does with the
character classes.
+ newer autoconf configure macro circumvents problems generating
config.h due to limited sed buffer size on antiquated systems (e.g.,
HP-UX 9.x, SCO 3.x).
+ updated configure test, to avoid use of broken IRIX 6.2 nsl library.
+ add configure option --with-locale to allow use of i18n support via
setlocale function.
+ use new symbol SYS_OS2_EMX to avoid nonstandard use of 'defined'
keyword in OPT_CASELESS preprocessor expression (reported by Adam
Denton).
+ move the call that forks xvile up to the first place where it could
be used, to minimize data space.
(tom) 971219 (c)
+ correction to CF_CURSES_TERMCAP configure test so that SVr4 systems
that do not have a prototype for tgoto, but still require curses.h
will build properly (patch by Brendan O'Dea).
(tom) 971218 (b)
+ add configure-test to see if $LIBS already contains termcap functions
before looking for additional libraries.
+ amended CF_CURSES_TERMCAP and CF_TYPE_OUTCHAR tests to use vile's
headers (correcting symbol conflict with NL in estruct.h vs curses.h),
and to double-check that failure to link test with tgoto was
due to conflict with prototype (latter reported by Brendan O'Dea).
(tom) 971217 (a)
+ add CF_CURSES_TERMCAP macro to test for prototypes in curses.h vs
termcap.h
+ add variable $patchlevel.
+ updated README.CFG to list the newer options (reported by Ralphe
Neill <ran@alumni.dgs.monash.edu.au>).
+ use CF_SIZECHANGE macro to eliminate a SCO-related hack in configure.
+ interpret --with-x option in configure-script (reported by Paul Fox).
+ add/use TYPECAST macro to quiet the "harmless" const warnings.
+ modify CF_IMAKE_CFLAGS macro to work with SGI's imake macros which
combine the -I/usr/include and -nostdinc options, confusing gcc
(reported by Billy Little <billy_little@hso.link.com>).
+ fixes for Perl-related rules in makefile.in (patch by Brendan O'Dea).
Changes for vile 7.3 (released Mon Dec 8, 1997)
(tom) 971207 (t)
+ correct include-path for configure script's check for missing
externs, to work with --srcdir option (analysis by Kevin Buettner).
(tom) 971205 (s)
+ add logic to configure.in to use a filter (installed by td_lib)
named 'td_config' which works around limited 'sed' when constructing
config.h on SCO 3.x, HP-UX 9.x and other antiquated platforms.
+ add configure options --disable-extensions (SMALLER, FEWNAMES) and
--disable-shell (OPT_SHELL), and --with-dmalloc. The shell option is
experimental; note that a genuinely secure editor should not allow
directory names to be specified (but I think that's the only omission).
+ add fallback for tparam/tparm in tcap.c (for EMX, but usable for
genuine termcap systems such as SunOS 4.x), to support color.
+ add files for building termcap version on OS/2 with EMX
(makefile.emx, config.emx and os2keys.h).
+ change $shell to use $COMSPEC on OS/2, MS-DOS, etc. This is needed
for the OS/2 EMX configuration, but useful in the others.
+ modify configure script to use ifdef's in estruct.h when testing
for missing extern/prototype declarations rather than a separate
list in aclocal.m4 (this requires rebuild/test on most platforms).
+ combine configure-tests for errno, sys_nerr and sys_errlist.
+ minor fixes: new versions of CF_NCURSES_LIBS, CF_ADD_INCDIR,
CF_CHECK_CACHE, CF_NCURSES_CPPFLAGS.
+ correct handling of :map containing ".", which was being handled
as if the "." always appeared at the end (patch by Duncan Sargeant;
input.c, map.c).
(kev) 971203 (r)
+ api.c (lreplace): Fix marks up. This won't always be right,
but at least it'll be closer. We need a way to modify marks
and attributes from perl.
(setup_fake_win): changed return type to int.
(api_fscreen, api_edit, api_swscreen, api_bp2sp): new functions.
(sp2bp, bp2sp): Removed these macros.
+ api.h (api_swscreen, api_fscreen, api_bp2sp): declared these
functions.
(sp2bp, bp2sp): macros moved from api.c.
+ configure.in (LINK_PREFIX): set this variable. (From Brendan
O'Dea.)
(CFLAGS, LIBS): Use $perl_bin_path instead of perl in the
--with-perl section.
+ makefile.in (LINK): Prepend LINK_PREFIX as determined by
configure to the link command. (From Brendan O'Dea.)
+ perl.xs (newVIrv): Don't allocate api private part here. (It's
allocated in api_bp2sp now.) The second parameter has also
changed; changed all callers.
(perl): Print error messages and warnings to message line.
(perl_init): Setup warning handler. Also tie STDOUT and STDERR
so that output to these filehandles will be printed on the
message line. (Thanks to Brendan O'Dea.)
(perl_eval): New function.
(Msg): Rewritten to handle multiple arguments. (From Brendan O'Dea.)
(GetLines): new function which fetches all lines in the range.
(Edit, FindScreen, SwitchScreen, Warn): New functions.
+ proto.h (perl_free_private): removed.
(perl_free_handle): added.
+ ptypemap (T_VI): Translate C null pointers to perl undefs.
(tom) 971128 (q)
+ modify tagignorecase mode to use lowercased keys in the binary-tree,
and applying tagignorecase mode to the search within the tagged file,
making this behave as Joseph F. Garvey requested.
+ implement tags-completion.
+ replace Alex Wetmore's binary tree code with a balanced binary tree
module that's a little more general, and does deletion more rapidly
than my first try.
+ minor fixes for foreground/background colors when resizing terminal
window so minibuffer is painted correctly (display.c, ntconio.c).
+ rename ntvile to winvile.
(tom) 971112 (p)
+ correct logic for minibuffer by ensuring that it is not marked for
undo, and that the value of MK is save/restored when modifying
the minibuffer.
(tom) 971109 (o)
+ correct range of scrolling region in ansi.c
+ correct treatment in xshell.sh for no-arguments.
+ change TTrev() / TTattr() parameter to unsigned.
+ implement mouse and flash in OS/2 VIO driver (os2vio.c).
+ correct logic in vtputc() to prevent minibuffer from writing into the
lower-right corner of the screen.
(tom) 971108 (n)
+ more CSet unsigned/signed compiler warning fixes (estruct.h)
+ don't reopen terminal in ansi.c if it is already open.
+ correct handling of rename-buffer when it is a scratch buffer that
does not happen to be a stored procedure.
+ recorrect lookup_namebst() call in engl2fnc(); it should always allow
partial match. Fixed by adding a third mode where the lexical first
match will be returned rather than the middle one in a range.
+ correct tab-position in ntconio.c
+ modify borland.c to reset colors when exiting or running a shell.
+ change tcapkopen() to reflect possibility that terminal
initialization string moves the cursor.
+ add simple gui terminal driver for WinNT (ntwinio.c, makefile.wnt).
Built with Microsoft Visual C++ 4.1, both with IDE and makefile.wnt.
Use "nmake -f makefile.wnt cfg=ntvile".
+ integrated related patch by Clark Morgan for repainting the screen
correctly after a :stop command.
+ rewrote internals of command/message line to make it a one-line
minibuffer, including mods for OPT_RAMSIZE and OPT_WORKING. Tested
Linux (for tcap.c, x11.c, ansi.c), OS/2 (os2vio.c), WinNT (ntconio.c,
ntwinio.c), VMS (vmsvt.c), djgpp (borland.c).
(tom) 971028 (m)
+ correct inverted parameter in call on lookup_namebst().
+ compiler warnings from Solaris (unsigned vs signed in bind.c, ifdef
in trace.c).
+ minor changes to compile on OS/2 with EMX.
+ modify borland.c to reset colors to white/black on exit.
(tom) 971027 (l)
+ backout change to own_selection, since it doesn't follow ICCCM,
in the sense that it increases X traffic needlessly (pointed out by
Kevin Buettner). Kept check on return value from XtOwnSelection.
+ correct out-of-bounds indexing in dname_to_dirnum() by adding a
length parameter, use memcmp.
+ modify Alex's change so that buffers that are renamed or deleted
update the corresponding entries in the binary-tree. Also, don't
allow built-in commands to be removed or replaced. Finally, make the
name-completion work with an empty command.
+ add $end-of-cmd variable (patch by Alex Wetmore).
+ integrate patch by Alex Wetmore <awetmore@Exchange.Microsoft.com>
that makes stored procedures act just like built-in commands, i.e.,
able to run them from the : prompt. This works by building a binary
tree of all of the command and procedure names.
(tom) 971015 (k)
+ add configure options --with-Xaw-scrollbars and
--with-drag-extension. These make it easy to build xvile with
Kevin's scrollbars by specifying --without-Xaw-scrollbars, or to use
the Xaw's default translations for scrollbars by specifing
--without-drag-extension.
+ ifdef'd out the code that invokes $xshell in ":!command".
+ correct logic in xvile that spawns a new instance from menu entry,
was leaving a zombie when the new instance closed (reported by Brian
Moore <bem@cmc.net>).
+ modify own_selection to always try to own the select, as well as to
check the return value from XtOwnSelection (reported by Ian Jamison
<ianj@quadrics.com>)
+ add Lesstif-specific ifdef for workaround (requested by Larry Gensch).
+ correct ifdef'ing of Motif version of xvile (reported by Larry
Gensch).
+ add screen types Xol and Xm as aliases for OpenLook and Motif.
+ correct quoting in configure script for OpenLook case.
+ fix some compiler warnings and add 'make check' target (reported by
Nelson H. F. Beebe <beebe@math.utah.edu>)
(kev) 971013 (j)
+ perl.xs, ptypemap: Lots of new code which extends the perl
interface a bit more.
+ api.c, api.h: New files which sort of implement nvi's API for
extension languages.
+ makefile.in (OBJ, VILESRC): Added api.o and api.c to these
lists.
+ estruct.h (BUFFER): Added new field, b_api_private, used by
the extension language API.
+ buffer.c (FreeBuffer): Free up the extension language API
related data structure referenced by b_api_private.
(bfind): Initialize the b_api_private field.
+ cmdtbl (perl): Put in a reasonable set of flags for this
command. (It used to be NONE.)
+ exec.c (execute_named_command): Added region support for the
perl command.
+ proto.h (push_fake_win, pop_fake_win, perl_default_region,
perl_free_private, api_free_private): New prototypes.
+ select.c, window.c (push_fake_win, pop_fake_win): These
functions removed from select.c and put into window.c. Also
they are no longer static.
(kev) 971009 (i)
+ perl.xs, ptypemap: New files. Beginnings of perl interface
for vile.
+ cmdtbl (perl): New command enabled only when --with-perl
supplied as an option to the configure script.
+ configure.in, makefile.in: perl related changes.
+ (fix typo in xshell.sh - tom)
(tom) 971008 (h)
+ correct typo in stubbed-out code for $xshell, add $xdisplay and
example script 'xshell.sh' which can be used to run a shell command
from xvile, prompting at the end so that the output doesn't go away
when the xterm completes.
+ rename vile's ctype macros to mixed-case to avoid conflict. This
is needed for Solaris 2.6, which does not implement ctype as macros.
+ modify casts and some names (e.g., new, operator, class) to allow
compiling with C++ (tested with g++ 2.7.2 on Linux).
(kev) 971007 (g)
+ x11.c (multi_click): Reimplemented multiclick selections for
lines. Previously, it was not possible to select the entirety
of a wrapped line by clicking on a row other than the first
row.
+ window.c (mvupwind, onlywind, delwp, splitw, enlargewind,
shrinkwind): Make sure that w_line.o is zero just after
setting w_line.l to a new value. The lack of this
assignment in mvupwind() was causing a SEGFAULT on my linux
box. [To test it, create a very long wrapped line with a
bunch of lines (say 100) before it; my test has in excess of
10,000 characters on the long line. Make sure linewrap mode
is set. Then say 100^Y. The SEGFAULT was immediate. You
can also reproduce it by dragging the scrollbar for awhile.]
(tom) 971006 (f)
+ document --with-screen values better in configure --help.
+ implement Athena widget scrollbar support in x11.c, using Kevin's
dragging support from the no-widget case.
+ add $xshell environment variable, use this to control :sh command
from xvile.
+ new CF_X_ATHENA configure macro adds configure options --with-Xaw3d
and --with-neXtaw.
+ corrected CF_IMAKE_CFLAGS, which was not using the imake symbol that
specified X function prototypes. (This was old behavior, which did
not seem to matter until adding Xaw scrollbars on Linux).
(kev) 971005 (e)
+ basic.c (setwmark): In linewrap mode, account for undisplayed
rows before the first row shown of a very long wrapped line.
+ display.c (vtset): Don't allow wrapped lines to overflow onto
the mode line. I don't think characters from the buffer were
ever getting written to the modeline, but vteeol() would sometimes
erase the modeline when displaying very long wrapped lines.
(reframe): Handle reframes of long wrapped lines more gracefully.
In particular, once the top row of a very long wrapped line
goes off the top, it is now possible to have the cursor positioned
on somewhere other than the bottom row. Scrolling up or down
via right or left right movement within a long wrapped line also
looks a lot better now.
(updattrs): Don't attempt to access rows before the top row
of a window when updating attributes. Also, don't access
rows of or below the the mode line. This fixes a SEGFAULT.
(tom) 970918 (d)
+ amend logic for find_mode() so that "&glo cmode" and "&loc cmode"
work as before majormode changes (reported by Sean Ahern).
+ merge autoconf macros from tin/xterm, which mainly affect the
configuration tests for ncurses and imake $CFLAGS, used to augment
autoconf's tests for X Windows.
+ also (since some systems have deficient 'sed' programs) provide
alternate hook for using a program 'td_config', which is currently
bundled in td_lib.tgz, that does the sorting operation of config.h in
a reasonably portable manner.
+ add mode 'maplength' to control the maximum length of a map
string.
+ correct definition of OUTC_ARGS for the case where it should be a
'char' value (patch by Jason Molenda <crash@cygnus.co.jp>).
(tom) 970907 (c)
+ modify CF_CACHE_CHECK macro to use AC_CANONICAL_HOST to obtain a
"better" value for SYSTEM_NAME. This is displayed as part of the
:version command. Add config.guess and config.sub to support this.
+ changes for 7.2b omitted some macros dealing with echoing during the
make process (reported by Jens Schleusener <Jens.Schleusener@dlr.de>)
(tom) 970905 (b)
+ merge configure macros from tin-unoff and lynx (configure.in,
aclocal.m4).
+ rename configure macros to CF_ prefix, for consistency/merge with
other programs (configure.in, aclocal.m4).
+ correct handling of tparm return-value; it must not be freed, at
least for SVr4 and ncurses (tcap.c)
+ ensure that majormode names are a legal identifier.
+ modify so that majormode names can be mixed case (requested by
Sean Ahern).
(tom) 970904 (a)
+ add variable $majormode so that it can be tested in a script
(requested by Philippe Chassany).
+ fix potential ifdef problem for cbuf1 (reported by Brendan O'Dea).
+ simplified VMS permissions code, using the protection parameter in
'open()' to achieve the objective of propagating a file's current
protection, as well as making it compile with DEC C (reported by
Simon Hefti <hefti@phim.unibe.ch>).
Changes for vile 7.2 (released Thu Sep 4, 1997)
(tom) 970903 (k)
+ modify rename-buffer so that if we rename a buffer, we'll clear the
flag that marks it for removal when popped-down.
+ modify show-modes command so that it will format more than 3 columns
if the screen is wide enough.
+ correct logic of delfrommap(), which dumped core when unmapping
a single-character map (reported by Paul Fox).
+ modify show-majormodes so that giving a count will make it show all
of the submodes prefixed by the majormode name, e.g., c-suffixes
(suggested by Paul Fox).
+ modify documentation to use "define-majormode" and "remove-majormode"
for clarity, other related fixes to documentation (suggested by Paul
Fox).
(tom) 970902 (j)
+ correct logic in find_mode() that did not find majormode qualifiers
for majormodes that began similarly (e.g., "com" masked by "c").
+ correct an uninitialized variable in per_submode(), found by Purify.
+ correct ifdef'ing in tcap.c, from 7.1i, when neither tparm nor
tparam is found.
(tom) 970901 (i)
+ if the command-line '@' option is used, set the $startup-file
variable to correspond to the startup file which is used.
+ add tagignorecase mode, which causes tag searches to be done ignoring
case (requested by Joseph F. Garvey <garvey@garveys.raleigh.ibm.com>).
+ initialize last_eolchar in docmd() so that 'set' command works
properly in a macro.
+ add %B substition for error-buffer regular expressions to allow
using [Standard Input] and other scratch buffers as error buffers.
+ modify format-til command to treat '#' specially when in cmode, so
no whitespace is inserted after it.
+ modify format-til command to support comment-prefix mode and handle
repeated prefix, so that, for example, vile can now format multiple
levels of email replies.
+ add comment-prefix mode, which specifies a regular expression that
controls the portion of a line which is prefixed when formatting.
+ modify default setting of comments mode to make repeated prefix
match (e.g., "> > >", is different from "> >").
+ ensure that imdying() always exits (reported by Clark Morgan).
+ workaround for incompatible interpretation of termcap Sf/Sb
capability with BSD vs SYSV platforms (tcap.c).
(tom) 970829 (h)
+ correct initialization of $palstr on OS/2.
+ correct some of the signed/unsigned warnings from IBM CSet compiler.
+ remove obsolete autoconf fallback macros.
+ correct handling of ":abbr res RES", ":abbr wres WRES" combination by
forcing matches on these to check that the beginning of the match is
an identifier boundary (reported by Paul Laub <P_Laub@fccc.edu>).
+ correct assignment in maplookup() which caused a -1 returned when no
more characters were available for matching to be converted to the
0xFF character.
+ modify fopen-for-write calls on VMS to add "0" argument, which makes
the new file get the user's default protection (requested by Brian
Reed <bdreed1@lucent.com>).
+ correct logic that allowed repeated definition of submodes (reported
by Duncan Sargeant).
+ allow submode names to begin with "no", assuming they are booleans
(reported by Duncan Sargeant).
+ corrected lookup of hyphenated submodes, e.g., c-tabstop (reported
by Duncan Sargeant <dunc@ucc.gu.uwa.edu.au>).
+ allow define-submode to accept an '=' between the submode and its
value.
+ modify define-mode and remove-mode to suppress warning message if
the mode does not exist, since this produces unnecessary warnings
when re-sourcing .vilerc
+ include <windows.h> only where it is needed, halving the build time
(patch by Clark Morgan).
+ modify configure script to work with CLIX old-style shared libraries
(e.g., -lc_s) needed for xvile.
(tom) 970816 (g)
+ correct type mismatch in filec.c when sizeof(size_t) !=
sizeof(unsigned) (reported by Larry Gensch <gensch@zk3.dec.com>).
+ modify vmsbuild.com to tell MMS (or MMK) to ignore warnings,
workaround for an inconsistency between versions of DEC C
(suggested by Andy Harper and Adam Denton).
+ initial implementation of majormodes, which supports grouping of
buffer modes, together with qualifiers (e.g., cmode and c-suffixes).
New commands include define-mode, define-submode, remove-mode,
remove-submode, list-majormodes. (Most changes are in mktbls.c and
modes.c).
(tom) 970619 (f)
+ modify ":set" command so that it does not force a mode to be set,
but instead shows the local buffer and window settings.
+ correct missing error-test in logic that sets regular-expression
modes (reported by Philippe Chassany).
+ add configure option to specify the total numbered macros available,
e.g., execute-macro-1, ifdef'd with OPT_EXEC_MACROS (requested by
Philippe Chassany).
+ modify xvile menus to allow arbitrary command line rather than
bound functions (exec.c, menu.c).
+ correct spurious parameter in vms2unix.c, from 7.1d changes.
(tom) 970607 (e)
+ modify VMS terminal driver, vmsvt.c, to work when invoked from a
command-file, i.e., get terminal characteristics from SYS$COMMAND
rather than SYS$INPUT (reported by Adam Denton).
+ treat '$' as an identifier character on VMS (requested by
Adam Denton).
+ clarify discussion of color in help-file (patch by Clark Morgan).
+ modify map.c to use TBUFF's, as well as new kbd_reply interface,
to remove limit on mapped strings.
+ change interface/internals of kbd_reply() to use a TBUFF, so we don't
need fixed-size buffers any more (bind.c, exec.c, eval.c, history.c,
input.c, line.c, modes.c).
+ correct uninitialized buffer in loadkreg().
+ correct indexing in display_cursor() function in xvile; exposed when
displaying a long list for the historical buffer command.
(tom) 970526 (d)
+ add $ncolors variable to allow run-time modification of the meaning
of colors (e.g., white).
+ change $palette to a dynamically allocated string.
+ modify termcap and IBM terminal drivers to support 16 colors. Note
that the termcap driver can do this only when configured against a
terminfo library (inspired by a patch from Clark Morgan).
+ modify mktbls to generate the enumerated choices tables (i.e., for
color, visual-matches) to simplify ifdef'ing these between the
8-color and 16-color configurations.
+ undo some of the const parameters of functions, thereby eliminating
most of the places where casts were used to remove const.
+ modify VMS processing of tags to strip file's version number
(adapted from fix by Adam Denton <adenton@genre.com>).
+ modify bclear() to free attributes before removing the buffer's
lines, thereby making it faster (patch by Ian Jamison).
(tom) 970513 (c)
+ set local buffer mode for 'dos' in slowreadf(), which fixes the
problem of that function modifying the global mode when piping a file
to vile, hence causing syntax errors in vile.rc when it contains
trailing carriage-returns (file.c) (analysis by Clark Morgan).
+ correct missing VASEL flag that caused 'q' command on OS/2 to not
display highlighting, missed in 7.0b (os2vio.c) (reported by George
Eccles <geccles@ibm.net>)
+ implement 'flash' for WinNT (ntconio.c)
(tom) 970513 (b)
+ ifdef'd menu.c to work with 7.1a
(tom) 970512 (a)
+ modify has_C_suffix() to ignore case on platforms where filename
case should be ignored (reported by Emil Rojas <emil@lapel.com>).
+ add version in vmsbuild.com to release_warnings
+ remove unnecessary test for Xaw/SimpleMenu.h (configure.in).
+ improve geometry of Xaw menus using Box (patch by Brendan O'Dea
<bod@compusol.com.au>)
+ add menu.c to the modules for xvile on VMS (reported by Graeme
Miller).
Changes for vile 7.1 (released Wed May 8, 1997)
(tom) 970508 (none)
+ undo a place where I'd dropped an XtVaGetValues() call, since it
appeared redundant, but was not - affects only Xaw build (x11.c).
+ ifdef'd a test in newscreensize() that is applicable only when
OPT_WORKING is set; this had broken screen initialization on MS-DOS
(display.c).
(tom) 970507 (l)
+ add resource to control menu-height (x11.c, menu.c).
+ correct definition in vms2unix.c to allow compile with VAX C, which
doesn't like "#define foo xxx.foo".
(tom) 970430 (k)
+ modify lookup of .vilerc to use startup-file search rules (menu.c)
+ correct missing XmString conversion (menu.c)
+ add configure check for -lXext to support Athena build on X11R4.
(tom) 970429 (j)
+ use im_waiting() function to reset "working..." state after executing
a menu-command (menu.c).
+ modify lookup of .vilemenu to use startup-file search rules.
+ corrections for porting Xaw version to SunOS, etc., with X11R4 and
X11R5 (x11.c, configure.in)
(tom) 970428 (i)
+ implement Xaw (Athena widget) version of menus. Simplified buffer
lookup function for menus, align/document resource names (menu.c,
x11.c, configure script).
+ correct minor memory leaks during initialization (main.c)
+ correct array-indexing error that caused core dump when selecting
line-wrapped text, moving cursor up (display.c).
(tom) 970422 (h)
+ improved example of menus for xvile (Philippe Chassany).
+ correct mistyped index in c-filt.c, which was a char (patch by Ian
Jamison).
+ correct c-filt.c handling of nested comment delimiters (patch by Ian
Jamison <ianj@quadrics.com>)
+ correct sign-extension in tcap.c for xterm mouse-coordinates.
(tom) 970407 (g)
+ add mode 'tagword', which allows user to lookup the whole word rather
than a substring. (from Adam Denton <adenton@genre.com>).
+ reintroduce flag 'i_displayed' into 'working' mode (I'd forgotten
that it suppressed the message until screen-mode).
+ improve buffer-switching in menu-support (patch by Philippe Chassany)
+ correction to MS-DOS, etc., where attempt was made to fclose a file
pointer that was out of scope (patch by Clark Morgan).
+ modify definition of eql_bname() macro so that buffer names are
treated as case-insensitive where filenames are, e.g., WinNT and
OS/2 (patch by Rick Sladkey from report by Clark Morgan).
+ add predefined regular expression to finderr.c to improve support
for MS-DOS pathnames (patch by Clark Morgan).
(tom) 970407 (f)
+ integrated menu-support for Motif xvile (patch by Philippe Chassany
<phil@cln46ks.der.edf.fr>).
+ refined changes to 'working' mode to ensure that the "working..."
message is cleared when the timer elapses.
(kev) 970407 (e)
+ fileio.c (isready_c): Small tweak to the ifdefs for mklinux w/
shared libraries. This'll probably be needed for other systems
with the up and coming GNU libc as well.
(tom) 970330 (d)
+ correct missing ']' on generated buffer name for shell output, e.g.,
"[!ls]" rather than "[!ls" (reported by Paul Fox): (file.c).
+ correct unnecessary escaping of '!' in prompts that are not expanding
the shell contents (reported by Paul Fox): (input.c).
+ modify semaphore used by 'working' mode to make the SIGALRM timer
elapse when it is not in use, allowing idle process to swap out
properly (reported by Bill Kipp): (display.c, etc).
+ correct filename parsing for MS-DOS/etc configuration by checking
for device name (patch by Clark Morgan).
(tom) 970322 (c)
+ fixes for piping to vile in WinNT (patch by Clark Morgan).
+ add logic for visual-matches in color, WinNT (patch by Clark Morgan).
+ add vile-c-filt.exe to makefile.wnt, modify default keyword file
on that system to vile.keywords (patch by Clark Morgan).
+ correct problem with MS-DOS/Win95/NT version of npopen.c that left
temp-files after reading from pipe, because file-remove was done
before closing (patch by Clark Morgan).
(tom) 970315 (b)
+ use macro GCC_UNUSED throughout to quiet gcc warnings about unused
(dummy) parameters.
+ modify configure script to use VC_GCC_WARNINGS
+ add mode to control whether formatting adds one or two spaces
after sentences (patch by Otto Lind).
+ handle C++ comments (patch by Otto Lind <otto.lind@softwire.com>).
+ implement colored attributes in OS/2 video driver (os2vio.c)
+ modify writereg() so that it recomputes the region size after
invoking the $write-hook; this is necessary since it may change the
file's size (reported by Bob Wall <wall@vlt.com>).
(tom) 970314 (a)
+ modify c-filt.c, manfilt.c to simplify compiling w/o auto-configure
"config.h".
+ modify MS-DOS/Win31/WinNT portion of npopen.c to leave input file
descriptor alone when reading from pipe, solving a problem with
applications hanging under Thompson Toolkit (patch by Clark O.
Morgan <cmorgan@aracnet.com>)
+ correct inequality changed in 6.2g which is part of right-margin
threshold computation (report and fix by William Yuan
<yuan@ariel.ucs.unimelb.edu.au>)
+ corrected definition of $(exec_prefix) in makefile.in (reported by
Joachim Schimpf <J.Schimpf@doc.ic.ac.uk>).
+ apply suggested casts in vms2unix.c to appease DEC C 5.3 (reported
by Andy Harper and Graeme Miller).
This change log started on Wednesday Mar 12, 1997.