Changes for vile 9.0 (released Thu Nov 15, 1999) (tom) 991115 (c) + various changes to comments (patch by Ryan Murray). (tom) 991111 (b) + revert 8.3s change that modified inout_popen() to convert pathname to backslashes on DOS, etc., since it too easily confuses commands that have genuine slashes (reported by Ed Henderson). + modify check for curses/termcap library to try linking tgetstr(), to work around broken linker on FreeBSD, but still detect properly HPUX curses library that has termcap functions. + remove pointers to defunct mirrors (reported by Clark Morgan). + remove duplicate description in vile.hlp of vile-crypt; the manpage covers this topic. + use new configure macro CF_ADD_CFLAGS to make configure check for headers (which uses only $CPPFLAGS) work with X_CFLAGS computed by autoconf's AC_PATH_XTRA. + correct ifdef's for sys/select.h to use USE_SYS_SELECT_H, which takes into account the configure check for fd_set from 8.3n (reported by Jens Schleusener). + use newer CF_TYPE_FD_SET configure test, from xterm which checks for Xpoll.h which may conflict with sys/select.h + use newer CF_X_ATHENA configure test, from xterm which checks for nonstandard locations of that library on HPUX. + add configure test to see if -lcrypt is needed in $LIBS to link crypt() function (reported by Paul Fox). (tom) 991109 (a) + correct special case of 'n' command on an empty line at the end of a buffer for a pattern that matches zero characters, e.g., ".*", "^" or "$" (reported by Kevin Buettner). + modify internal regular expression data for ranges that include the backslash character so the backslash is escaped, compensating for a change in 6.2a to handle "\\>" pattern. + use function XDisplayString() to obtain the actual display name, needed to make xvile's "New" menu entry direct new sessions to the proper display. + correct a divide-by-zero when computing percentage for ^G command, from 8.3l changes for $position-format (reported by Clark Morgan). + ensure that symbols for EXIT_SUCCESS and EXIT_FAILURE are used where they apply in the filter programs. + add fflush and fclose at the end of filter programs to ensure that the filtered file is written, even on systems whose exit() function does not do this properly (for Dr Luis Mandel ). + correct documentation of $line variable (reported by George Eccles). + add grep commands for dos and win32 to vileinit.rc + add RPM spec to release_warnings in makefile.in + combine calls for getenv("HOME") into new function home_dir(), to use in logic for -I option, making that work properly for Cygwin environment, where $HOME normally is not the same as the "~" expansion. Changes for vile 8.4 (released Sun Nov 7, 1999) (tom) 991107 (z) + change copyright notice to distribute vile using GPL. + update RPM spec based on package by Tim Powers , add xvile.wmconfig, vile.wmconfig and use xpm icons. + workaround for problem introduced in 8.3r, resetting 'vile_is_busy' flag after each command in main loop(). Otherwise, perl scripts that set this flag via working(0) without restoring it would disable menus. + add -I option, which directs vile to source vileinit.rc, and if the user has no startup file, to make a simple startup file which sources vileinit.rc (request by Peter Williams). + install a default menu file for xvile (.vilemenu) in the data directory. + add vileinit.rc, which adds various useful macros and key bindings to the other initialization files, as an example. + minor fixes for vilefilt.l and makefile.l + correct value computed for $pathlist-separator, supply trailing null. + add $bflags variable, to simplify checks for scratch buffers. + add xshell.sh to install rules for xvile. + reinstate/complete $xshell logic, making it detach the subprocess if waitpid() is available (reported by J. Chris Coppick - see 971015). + implement showmatch for winvile (patch by Clark Morgan). + more fixes for OPT_CACHE_VCOL, to handle two special cases: showmatch, which temporarily moves the cursor without necessarily updating the sideways value, and a control character split across the right margin. + minor fixes to make vile build/work with --disable-extensions + correct redundant unget when parsing ":%&g" command that would leave 'g' repeated in prompt (reported by Mark Crosland ) (tom) 991030 (y) + correct logic for OPT_CACHE_VCOL which accounts for the starting point when it may be a nonprinting character, i.e., rendered as multiple columns. + fix an error in BeOS version of catnap, exposed by change for SCO; the code did not handle a zero delay time while watching for input. > patches by Clark Morgan: + modify ntwinio.c so popup menu's check-marks match those in the system menu. + modify the label of the popup menu "Menu" selection, remove trailing "..." because this cmd does not invoke a dialog box. + update doc/w32modes.doc to cover Windows 98 (tom) 991019 (x) + minor fixes for OPT_CACHE_VCOL, to take into account list and number modes. + fix a typo in manpage.rc that let empty responses pass by. + save/restore token's column when processing tags (patch by Ed Henderson). + change tttypahead() to use catnap() in preference to ioctl(FIONREAD), since SCO OpenServer's FIONREAD can be used only for sockets (says Bela Lubkin), while select and poll are a little more flexible. This makes cursor keys work with the terminfo version. + make entering/leaving check in finderr.c faster by checking only the regular expressions that contain the %V (verb) token. + minor fixes to no-leak code in modes.c + fix memory leak from not freeing macro parameters (bind.c) > patch by Clark Morgan, for winvile cursor/selection code: + a left mouse button click in the editor's text window clears the current selection (a la notepad and word). + don't start a selection until the cursor actually moves at least 1 char. This change helps prevent a window selection with left mouse button from also being interpreted as "start new selection", thus wiping out the current contents of the unnamed register. + turn off cursor prior to copying to clipboard via right mouse button. + turn off cursor prior to pasting with middle mouse button. + these changes appear to now prevent the editor from dropping stray cursor glyphs in the text windows (although the editor will still occasionally leave cursor glyphs in the message window due, perhaps, to race conditions between the GDI and the editor's event loop). + a couple of minor fixes for shrinking/enlarging a window via a left mouse button drag of the mode line. (tom) 991010 (w) + add syntax filter for Python scripts, and associated pymode. + correct bug in ^X-^, which did not copy special characters such as arrow keys. + correct bug introduced in rewrite of ^X-( and ^X-) command for 8.3, which left ^X-) on the end of the recorded text (reported by George Eccles, analysis by Paul Fox). + add $kbd-macro variable to show the contents of the keyboard macro. + install perl modules as data, not scripts (patch by Ryan Murray). + minor fixes with EXTERN_CONST definition to allow building xvile and vile with g++ on Linux. + remove unused/obsolete code for dot-replays-macro in input.c + modify write_message() in perl.xs to erase the message line if the message is empty, e.g., in the end of lock.pl + correct handling of leading blanks for '#' comments in xs-filt.c + add VAREV to special case handling of terminfo/termcap no_color_video. + disallow execution of '<' register, i.e., by "@<". > patches by Clark Morgan: + $cfgopts now shows whether a Unix-hosted editor uses TERMCAP or TERMINFO screen DB. + directory lookup via CDPATH enabled on all hosts (previously only supported on UNIX), but only tested on VMS, Unix, and Win32 (don't have access to DOS, OS/2, BEOS). + documented win32 double/triple click feature. + added $cdpath, which is the editor's copy of the external CDPATH environment variable. This state variable is read/write. + The components of $CDPATH are glob'd before use, which means that specifying things like: Unix: export CDPATH="~/srcdir:~/blddir" # quotes prevent tilde expn Win32 (using a unix clone of the Bourne shell): export CDPATH=c:/pro*/dev*/vc;e:/cm/projects will work. (tom) 991004 (v) + remove the VT52-style fallback_arrows[] entry, from 8.3u, since it is too easy to confuse it with type-ahead (reported by Clark Morgan). + change testing order in configure script for 'const', to build on HP-UX (reported by Michael Finken ). + make functions attributeregion() attribute_cntl_a_sequences() and attribute_from_filter() interruptible. + correct limits of ^X-Q using goto-char function; it was not clearing the last line since the region-shape is set to EXACT unless overridden. + merge clear-attributes-til with attribute-normal-til. + fix (partly) the lack of syntax highlighting when editing filters.rc or other initialization file by reevaluating the majormode of the current buffer after all buffers are loaded during initialization. + change a typealloc(CMDFUNC) to use typecalloc, so the c_args pointer is initialized. + change ifdef in tgetc() which relates to older Linux kernels (up to early 2.0) to BUG_LINUX_2_0_INTR, so it is disabled. This does not appear to malfunction with 2.0.36, so we can enter quoted ^C's. + remove ABORTED() check from read_quoted(), since that prevents us from entered an escape or similar character (such as intr) when quoted (see 8.3k). + change sysmapped_c() to return early if term.getch() returns a -1, since we don't want to try to map that: an indefinite stream of EOF's can come out of ttgetc in at least one instance on Linux. + eliminate use of yytext in local functions of filters, since that does not work with SCO's lex (fdl-filt.l, xs-filt.l). + add vile-txt-filt, vile-xs-filt to makefile.wnt + modify makefile.wnt to set related $(cdebug) and $(ldebug) when DBG symbol is set. + modify expansion of tilde by winvile to take into account $HOMEDRIVE, used on WinNT to denote the drive on which a user's desktop is located. + add mode 'cd-on-open', to set working directory to a given file when reading it into a buffer. Use related logic to make winvile cd to the directory of the last-specified file when invoked, so it is consistent with drag/drop behavior. > patches by Clark Morgan: + sever vile/winvile's dependence on $COMSPEC and additionally permit launching apps that are neither blocked by the editor nor launched by a shell. + add command to swap the Ctrl+Insert and Alt+Insert bindings. Patch triggered by Alex Wetmore's comments (many months ago) that he felt the current clipboard bindings were not optimal for use: a) with the left mouse button (which always copies text to the unnamed buffer), and b) by experienced Windows users who will expect Ctrl+Insert (a Windows Standard key binding) to copy data to the clipboard without being prompted for a region. + include rms.h from estruct.h to make nefsms.h compile properly on VMS (fixes a problem introduced by restructuring of modetbl in 8.3o). (tom) 990926 (u) + allow adjustment of window size in win32 versions (vile, winvile) by dragging the modeline. Clicking on a modeline clears the selection. + modify drag/drop logic in winvile to set the current working directory to the last dropped file. + add alarm on attempt to paste selection into a readonly buffer (reported by Clark Morgan). + correct logic in glob_match_leaf(), which did not allow a pattern to end with '*', e.g,. ":e make*in*" would not match makefile.in (reported by Clark Morgan). + add fallback definitions for cursor keys in tcap.c. When running 'screen' 3.7.6 on Redhat 6.0, which is linked with ncurses, screen makes a bogus $TERMCAP from the terminfo entry, which doesn't necessarily correspond with the actual termcap entry. I found that my cursor-down was not recognized since the $TERMCAP said it would not be provided, while 'screen' actually delivered OB. + integrated winvile's popup menu with the system menu, adding an entry to enable/disable the popup menu so that the right mouse button can be used for copying selections to the clipboard. + improve vile-make-filt by coloring variables in strings. + minor fix for single-quoted strings in vile-sh-filt, to handle escaped newlines, which are not needed, but terminated the pattern early. + correct handling of default color in color-schemes; it was being internally set to the actual color rather than the special code for 'default', so one could not reset the colors automatically. + correct a typo in setting color schemes that used the background color where the cursor color was intended. + fix for ccolor mode in xvile, for 8-bit displays: the cursor is not necessarily colorable if we do not allocate enough GC's. (tom) 990920 (t) + implement drag/drop for winvile. + ensure that win32 and termcap versions do not allow paste into buffer that is marked 'view'. + correct background in os2vio.c (the 980930 change for blink versus bright does not apply to OS/2 full-screen windows, but only the stand-alone mode). + modify dummy functions for setting fcolor, bcolor, ccolor to restore the default value rather than allow setting misleading value to be set when the corresponding mode is not really supported. + ifdef'd out with OPT_POPUP_WINOPEN popup menu for winopen command, added it to the system menu. This gets in the way of mouse selection/extension and (for 2-button mice) prevents pasting with the middle button. + implement double- and triple-click selection with win32 console and gui, as well as pasting with button-2. There's no simple way to implement button-3 extension as in tcap.c, however, for win32 console. + correct a spurious decrement of bp->b_bytecount in strip_if_dosmode(), from 8.3q changes. + implement 'default' color for all drivers, to simplify ccolor. + add term.setccol(), to allow changing the cursor color for drivers that support it, e.g., xvile, along with mode ccolor. + change OPT_TITLE's action routine to show $progname value rather than "vile". + make OPT_TITLE apply to xvile, using X resources rather than WM properties (patch by Rick Sladkey, modified by suggestion from Kevin Buettner to integrate it with existing $title logic). + fix: xvile doesn't recognize XK_KP_* keypad keys such as the arrow keys on the numeric keypad when numlock is off. This is particularly bad for users with Sun Type 4 keyboards where there is only a single numeric/cursor keypad. (The Solaris X server may not return XK_KP_* keysyms by default, the OpenBSD one does.) (patch by Christian Weisgerber ). + add a note to the VMS build scripts (descrip.mms and vmsbuild.com) to caution installers to delete generated headers and object files between building vile.exe and xvile.exe (patch by Clark Morgan). (tom) 990914 (s) + modify list mode to show the actual record separator rather than ^J. + correction to change in 8.3q, to writereg() and getregion(), to account for length of recordseparator when it is crlf. This also affects (because the r_size value changes) wordcount(), ldelete(), and several places in perl.xs + modify text color model in x11.c to work like tcap.c, adding explicit fcolor0 and bcolor0 resources and changing logic that implements the fcolor and bcolor modes to update GC's at runtime. + modify find_in_path_list() to use caseless comparison on systems that need this. + modify inout_popen() to convert pathname to backslashes on DOS, etc. + modify HighlightFilter to check if the filter is found in $PATH before deciding to build up the pathname. + modify logic in tcap.c to prefer AF/AB over Sf/Sb even if the number of colors is greater than 8. That makes the $palette strings for xterm-16color easier to work with. + add "cs" as abbreviation for color-scheme; updated vile.hlp and add palettes.rc to show examples. correct expression in chgd_scheme() for selecting the color-scheme. Add "use=" clause to color schemes to simplify construction of black and white schemes. + convert as needed slashes to backslashes in displayed pathnames in which-source and which-exec commands. + modify dofmt() to make its repertoire closer to printf's: remove 'D' format code, and change 'p' to 'Q', 'u' to 'f'. + modify logic in tcap.c to use 'reverse' mode in preference to 'standout', and either in preference to color when there is a conflict. This works around an error in several termcap entries (including screen's), which do not mention NC (no_color_video). This error made selection highlighting not work. + correct my recent cleanup of tracing TGETSTR calls in tcap.c, which broke the merging of similar control sequences. + correct typo in PutModename() call that shows recordseparator, which caused GPF on NT. (tom) 990907 (r) + correct oversight in 'eval' command, which evaluated only the first token. + revised macro-parameter logic to rely on parameter template in the store-procedure command rather than accepting unsolicited parameter lists. This works better with command-completion (fixes a problem reported by Duncan Sargeant). + set txtmode in manpage buffers to simplify further optional highlighting + check if vile_is_busy, suppress menu operations if true. + corrected problem in perl.xs introduced by changes for definition of VILE_LIBDIR_PATH which dropped the trailing '/', by modifying logic in perl.xs to use pathcat() function. This also avoids modifying the corresponding environment variable. + modify lock.pl to work when the system uses shadow passwords. Also, modify menu.c and x11.c to ignore mouse operations while the editor is locked. + add ®ister function, so the contents of an internal register may be manipulated in macros (request by Otavio Exel). + add configure check for , needed for SCO which defines FIONREAD there. This fixes screen output, avoiding the fcntl bug, but still does not make arrow keys work since the FIONREAD ioctl does not work on SCO. Using select or poll makes it much slower. (tom) 990904 (q) + modify check for curses/termcap library for FreeBSD to exclude curses library, preferring either ncurses or termcap. + rename isspecial to isSpecial because FreeBSD 3.1's ctype.h conflicts + make ^X-^X command interruptible + modify majormode logic so that when a user sets a majormode for a given buffer, the side-effects that are performed for each of the modes associated with the majormode are performed in this context as well. Previously the mode values were simply attached. + recount buffer size after set-dos and set-unix commands to take into account the length of the line-ending. + force a null on the end of the result from special_formatter(), which is used to display the ^G command. Sometimes there was no null, causing the output line to get trashed. + add buffer mode recordseparator to set dos/unix modes like the set-dos and set-unix commands, i.e., not delayed til the next buffer read like the 'dos' mode. + add vile-tbl-filt to makefile.wnt + add *.ksh to shmode + workaround in exec_sh_c() for OS/2 EMX special requirements for slash/backslash conversion. + reduce compiled-in Unix $startup-path to the path on which we install the filter programs, incidentally correcting path separator in default value for $startup-path on OS/2 EMX + add commands which-source and which-exec to show which file would be source'd and exec'd from $startup-path and $PATH + $libdir-path, respectively. + add logic, also used for type-ahead testing to catnap for BeOS, making the cursor and function keys work. + modify catnap() to use its select/poll logic for tty type-ahead tests. (tom) 990829 (p) + modify test for terminfo/termcap library support to look for curses library first. SCO's native termlib does not support color, though the UDK's termlib does. + eliminate SCO-specific ifdef SYSTEM_LOOKS_LIKE_SCO, which really applied to v4. Tested with sco3.2v5.0.5 (aka v5). + correct a negative array index for ctrans[] in show-colors command. + remove unneeded putnpad() from tcap.c + fix excess initialization of kbindtbl when --disable-extensions is configured using macro KBIND_LINK. + modify htmlfilt.l to highlight aliases for special characters, e.g., "<". + minor fixes for tc-filt.l, to allow for entries that are missing the trailing '\', and to allow for entries without a description. Also, allow '.' and '_' in alias names. + correct typo in suffix expression for cshmode. (tom) 990822 (o) + add &pquote function to simplify use of &lookup when the result might contain spaces, and $exec-suffix variable. + add &cclass function, and set-char-class, unset-char-class and reset-char-classes commands. + add tbl-filt.l, for modetbl and cmdtbl highlighting. + add .login and .logout to csh mode. + modify pictmode to use ~local. + modify HighlightFilter and ShowManpage, ShowFormatted macros to use &lookup and related functions to construct the pathname of the filter program, bypassing possible reset of $PATH in the subshell. + add FL_LIBDIR to cases in cfg_locate(), corresponding to $libdir-path + add $pathlist-separator variable. + add functions &word and &token for simple parsing of strings. + add functions &lookup, &path and &pcat to provide support for external pathname manipulation. + moved symbol table for DIRECTIVE to modes.c, to generate it from modetbl and incidentally fix an ambiguity in name resolution, since the old table was not automatically sorted. Since it is handled as by the enumerated-mode value code, directive names are now processed ignoring case. + add &execable test for files. + add "&random" as alias for "&rnd", "&readable" as alias for "&rd", make all &function names long enough to be more readable. + add check for menufile-not-found in do_menu, to avoid passing a null pointer to fopen (reported by Graeme Miller). (tom) 990817 (n) + if .vilemenu is not found, return status to main.c so we can popup appropriate message. + remove const qualifiers from some functions whose data really are modifiable: next_buffer_line(), get_token(), tokval (), user_reply(). + BeOS has nonworking 'select()', and no corresponding fd_set declaration. Add CF_TYPE_FD_SET configure check to handle this. (I'll write some BeOS-specific code to make cursor-keys work). + BeOS does not define O_NDELAY; undef'd USE_FCNTL in this case. + correct ifdef for ttyname(), was HAS_TTYNAME, to use this on BeOS. + add fdl syntax highlighter. (tom) 990805 (m) + add vile-perl-filt to makefile.wnt + minor improvement to txt-filt.l, to reset quoted mode when a blank line is found. + minor correction to bat-filt.l, workaround for apparent bug in flex which is treating a '?' as '+'. + minor correction to difffilt.l, forcing word boundary after "diff" and "Binary". + modify complex fence matching so that if too many iterations are needed for the match, that it can still try the simple fence matching. A warning message will be displayed if the fence-limit timeout expires. + modify perlmode complex fences by merging "do" and "while" groups, making that a little faster. + change fences-limit from a scale factor to timeout in seconds to make it simpler to understand/configure. (This and the perlmode change address a problem reported by Chris Sherman ). + correct vilemode complex fence patterns (the patterns were not anchored to "^"). + modifications for egcs 2.91 (compiler warnings about missing initializers for structs where 0's are fine). egcs 2.91 also has a bug causing it to emit a lot of warnings when it saw a missing const in the qsort comparison functions. (tom) 990717 (l) + turn off OPT_CACHE_VCOL, still too experimental. + correct flag that would force window repainting in set-dos-mode command, lost by optimization in 8.3k. + correct a syntax error in configure script's --with-no-leaks option. + fix several memory leaks in majormodes with new function free_sm_vals(), etc. + correct logic in write_string(), an infinite loop would result if the string contains a null (filters.c) + suppress $read-hook in readin() if we are not reading the current buffer. This can happen as a side-effect of the :tags command, and would cause the prompt to be overwritten by the message from highlighting the current buffer. + add HighlightClear macro, bound to ^X-Q (request by J Chris Coppick). + add goto-char command, bound to ^X-G. + add variable $bwindows + add variable $curchar + add variable $lcols + add variable $position-format + implement a simple 'eval' or 'execute-string' command, allowing users to construct commands dynamically. + use new function vms_fseek_ok() to check if quickreadf() would not successfully read a file whose record structure prevents VMS's read() function from reading it in one call (patch by Clark Morgan, reported by Adam Denton). (tom) 990705 (k) + correct logic of read_quoted() from 8.3j, which no longer accepted nondigits after a control/V, e.g., ^V^D. + add commands to move the cursor up/down by rows on the screen, ignoring wrapping: next-row or ^X-^D and previous-row or ^X-^U. + add a check for negative array index in l_to_vline(), which would cause a core dump when changing a buffer with very long lines to linewrap mode and back again. + make wrapper for the most frequently called form of mk_to_vcol(), dot_to_vcol() and in that function cache a location on the current line "close" to DOT, so we can make fewer calls to mk_to_vcol(). Ifdef'd this with OPT_CACHE_VCOL. + correct sign of shift-parameter in call of mvleftwind() from gotobol(). + correct test before calling updall(), which was updating the whole window each time WFMODE was set, e.g., when updating the ruler. + minor optimization (2-3 times faster) of calls to mk_to_vcol() to reuse the ruler's column value in updpos() if it is up to date. + modify calls to mk_to_vcol() so we show the effective column consistently in [Registers], which has a left margin. (tom) 990703 (j) + implement set-window command (request by Adam Denton). + implement show-marks command. + rename 'quote()' to 'quote_next()', split-out 'read_quoted()' to reuse the logic that recognizes ^V followed by a number in input. Now the minibuffer can accept any character except for nulls (originally requested by Sean Ahern, but Adam Denton reminded me). + modify txt-filt.l to highlight strings in double-quotes. + change kbd_reply() to ensure that last_eolchar is set either to a newline or a blank if we are interpreting a macro. + correct array limit in save_arguments(), which was one too small, and added a double-check against that limit. + add a sample of .indent.pro (i.e., doc/indent.pro) to use with indent 2.x (we're not planning to use this wholesale, but piecemeal, since even indent 2.0 has bugs ;-). + undefine 'dofile' in perl.xs, to build with perl on Redhat 6.0 (Kevin Buettner). + correct two minor, but annoying warning messages in perl.xs: Attempt to free unreferenced scalar by incrementing a reference count, and BUG: getregion: no mark set in this window by checking for null MK before call to getregion. + add ShowFormatted macro to manpage.rc, bound to ^X-n, which renders the current buffer with nroff. + rename manpage macro to ShowManpage > patches by Paul Fox: + make the Entering/Leaving nesting work correctly if you jump into the middle of an error buffer. previously selecting a line partway through the buffer would cause vile to skip parsing the preceding change-directory directives, so it wouldn't know where the referenced file was to be found. now, if you don't use ^X^X to traverse the buffer linearly, the preceding lines are re-parsed as needed. + changed fence.c over to 4 column indents, using indent, plus some hand editing on continuations and comment alignment. + modify vilefilt.l to accept hyphens in identifiers (tom) 990621 (i) + add vile-pager to install rule. + add macros (e.g., manpage.rc) to install rule. + implement $(DESTDIR) variable in Unix makefiles to simplify packaging binary distributions. + corrections to CF_MAKEFLAGS configure macro, to work with POSIX 'make', which may pass assignments in the $(MAKEFLAGS) variable. + update some configure script macros: CF_CHECK_ERRNO, CF_HEADER_PATH, CF_LIBRARY_PATH, from lynx/xterm changes, as well as mkdirs.sh and install.sh adapted from autoconf. + make the [Variables] buffer partly animated; updating after set-variable commands, and as a side effect of the save/restore function for macro arguments. Most variables are set internally, however, so do not expect the buffer to jitter as you move the cursor around. + implement parameters for procedures (see macros.doc). + modify ifdef's for hooks to use new symbol OPT_HOOKS, since they are not really dependent on OPT_PROCEDURES anymore. + change run_a_hook() to use docmd() rather than run_procedure(), so the hook can be an arbitrary command, rather than only procedures (suggested by Brendan O'Dea). + correct call on screen_string in ask_for_bname, which had the wrong length, hidden in screen_to_bname macro. This made ^X-k use a length of 4, rather than the actual buffer length. > perl scripts by Kuntal Daftary (from his notes): + lock.pl is a simplistic extension to allow you to lock your vile sessions, say while temporarily leaving your terminal or something like that. + spell.pl is a spell checker within vile that behaves (almost) like ispell (and in fact does use ispell internally). This one is inspired out of recent mail Christian Lindig providing a spell filter. Also thanks to Tom for the -a flag :-) + pod documentation is within the files themselves. just dump all the files in your ~/.vile/perl + spell.pl also required me to rig up a mlreply_opts command as an addition to the mlreply_* family of commands already offered in the Vile package. Tho the invocation is quite similar to the builtin mlreply_* commands, the behavior is simplistic, and does not exactly match that of other Vile commands, e.g., mini-buffer editing is not supported and TAB-completion behavior is different. (tom) 990614 (h) + updated example in menus.doc, dropping references to macros not in our source distribution. + add no_errs flag to suppress bells when ~force is in effect. + implement clear-attributes-til, to allow reset of all video attributes and highlighting. + implement wildcard matching in :kill-buffer, so one can do :ki *.log to discard all files ending with ".log". I used filename wildcards rather than regular expressions. If no wildcard matches, the normal matching is used, e.g., filename or buffer number. + implement name-completion for killbuffer(), usebuffer(), finderrbuf() and execbuf(). + correct logic in x11.c which sets window manager hints for icon; it did not first ask for the existing hints. This caused some window managers (olvwm, for instance) to ignore FocusIn events (Mark Robinson ). + modify logic of insert_namebst() and delete_namebst() to allow redefinition of builtin commands. The builtin command is moved to the redefns table until the user deletes the command that redefined it (request by Alex Wetmore). + modify c-filt.c to highlight floating point constants. + modify write_string() function in filters.c to avoid writing a newline that's beyond the limit of the string passed as parameter. This fixes a case in m4-filt.l that would write an extra newline after comment lines containing only a "#". + add "/**/#" lines to imakemode preamble pattern, to accommodate old (i.e., obsolete) Imakefile's that rely on pre-ANSI cpp's. + suppress blank messages in perl.xs (tom) 990607 (g) + add distinct prefixes to warnings written in perl.xs with write_message to aid in debugging. + restore ability of Vile::get to return values of internal variables without requiring the '$', e.g., Vile::get('$seed'). + remove a check in Vile::set which tested if we can get a variable's value before attempting to set it. A few variables (e.g., $cryptkey) may be writeonly, and temporary variables (e.g., %foo) have no predetermined value. + add numbers, email addresses and urls to txt-filt.l + tweak diffmode suffixes, adding .dif and .diffs + implement ":set video=reverse" for tcap.c, correct rendition of selection in ntwinio.c as well. + add Perl extensions syntax filter xs-filt.l and associated xsmode. + tweak perlmode preamble to allow relative paths. + add a note in vile.hlp explaining how to use $shell=/bin/sh to circumvent reset of $PATH in ".cshrc", so value in $VILE_LIBDIR_PATH is inherited automatically. I didn't mention there, but I have been using this for several years, having found that SunOS's make program would dump core when running in vile if I left $shell=/bin/csh. It's faster anyway... + add ftp site info to vile.hlp + add ifdef in ntwinio.c to support wheel-mouse, must add -D_WIN32_WINNT=0x400 to makefile.wnt (patch by Alex Wetmore). + correct ifdef in x11.c to so wheel-mouse support compiles properly when menus are not used (patch by Kevin Buettner). > patches by Clark Morgan: + minor patch to forces wvwrap to pop winvile to the foreground (convenient when winvile does not currently have focus). + a new "sync-file" command enables synchronization of winvile's current buffer with the DevStudio text editor. When this command is used in conjunction with visvile's key redirection feature, it's now possible to set a breakpoint in DevStudio from winvile like so: + use winvile's search capabilities (including tags) to find the program location where a breakpoint is desired, and + press F9 (standard DevStudio shortcut that sets/clears a breakpoint). (tom) 990602 (f) + implement fcolor and bcolor options for xvile. + add missing case for VALTYPE_ENUM in listvalueset(), which caused very long enum values to be run-on in [Settings]. + add mode 'video-attrs', mainly to implement bold text as part of the color schemes. I tried implementing reverse, but this is hard to do in tcap.c + add color schemes, associating fcolor, bcolor, $palette and an optional video attribute. This adds new commands to manipulate the schemes: define-color-scheme remove-color-scheme show-color-schemes + allow ':' for first line of Bourne shell + recognize \f1 and \f4 in nr-filt.l + modify preamble pattern for tclmode to allow version number, e.g., wish4.1 vs wish. + improve sh-filt.l so that option strings such as "--with-8bit" do not highlight the "8". + modify sel_yank() to set curtabval temporarily so tab/offset computations in yankregion work properly when user has selected a rectangle in one buffer, then clicks the mouse into a buffer with a different tabstop setting (reported by Clark Morgan). + improve makefile.l, handling escaped newlines in quoted strings and in target lists. (tom) 990523 (e) + add/use new function restore_dot() to guard against restoring DOT to a value which no longer points into the current buffer, e.g., after modifying it. This fixes a core dump in xvile when selecting in the [Registers] buffer. + improve perl syntax filter by parsing patterns following =~ and =! operators. (Patterns may also be in other places). + comment-out save/restore of $CFLAGS in configure.in via the saved_CFLAGS, since that interferes with configuration on HP-UX 10.20 with HP's ANSI compiler, which does not support ANSI C without specifying an option. As a result, all of the checks for missing function prototypes failed, as well as the checks for terminfo vs termcap (reported by Micheal Finken). + simplify mlerror, allowing for the possibility that strerror may return a null pointer. + correct quoting for configure script's --with-exec-macros option, which prevented users from setting that values (reported by Michael Finken ). + turn off crypting during reads/writes to a pipe. This is needed in crypt mode in order to support macros that pipe text to an external program for filtering. Without this change, instead of the actual text, the encrypted text is sent to the external programs which will most likely result in incorrect behavior. (patch by Daniel Palermo ). + provide default colors for xvile similar to those used by vile for fcolor1 through fcolor15 (patch by Brendan O'Dea). > patches by Clark Morgan: + removed duplicate winopen and winopen-nocd documentation from vile.hlp + winvile only paints its frame once at startup. + added logic to ensure the the winvile frame is completely exposed on the desktop (i.e., not clipped by taskbar or painted offscreen). + further changes to permit a winvile user to specify any geometry that lies within the region bounded by the current desktop screen. + setting winvile font via dialog box now repaints screen (in all cases) and flushes status message to mini-buffer. + fixed a couple of minor problems with wvwrap when setting winvile's current working directory. Wvwrap also makes sure the editor is visible. + finally, a rather big change, I've dumped the oleauto Open method. As it turns out, this was a bad idea. I saw cases 2nite where the editor was "simultaneously" changing its working directory and opening a file. Not good. This kind of race condition is avoided when VileKeys() "drives" the editor because all of winvile's commands are serialized via a Windows message queue. (tom) 990519 (d) + remove fragment of code in c-filt.c which left it incorrectly parsing "string1""string2" (reported by Alex Wetmore). + implement $palette for xvile, allowing colors to be permuted. + add show-colors command, to show the color names and $palette values + change get_token() and mac_tokval() to use TBUFF's, making them independent of buffer length. + change replacepat to a TBUFF. + correct logic for $kill, which did not account for killbuffer rotation and was always pointing to the same index. + change statevar.c to return results in TBUFF's, making it independent of the caller's buffer size. This fixes some trash after the display of $kill in show-variables. > patches by Clark Morgan: + add winopen and winopen-cd commands to w32 vile. + hook the winvile right mouse button to the new winopen command. + Add an Open method to winvile ole automation server, which may be used to directly open a filename in the editor (thus avoiding the overhead of VileKeys). + Added wvwrap.exe to the Win32 distribution. This utility opens one or more files in a _single_ winvile instance via a right mouse click in the Windows Explorer. For more details, please read doc/oleauto.doc . [ Note: wvwrap.exe is Ed Henderson's brainchild and he wrote the original version of the program. Thanks, Ed! ] (tom) 990510 (c) + fix an overlooked reset of lines read if we are reading via attribute-from-filter + add logic to pathname completion to supply slash if given an environment variable that evaluates to a directory name, e.g., $HOME (request by Kuntal Daftary). + add warn-blanks mode, to allow users to be prompted if they give a filename which has nonprinting characters (request by Tom Serkowski ) + correct (supply) class-inheritance in filters.c function keyword_attr. + modify filters.c to support arbitrary strings as .class values, used this to parameterize m4 filter. + minor resync of autoconf macros with xterm and lynx. + add M4 syntax filter. + correct handling in makefilt.l of escaped quotes outside a string. Also, highlight $(name), like ${name}. > patch by Clark Morgan: + remove race condition in winvile (in ole-auto mode) when keystrokes are redirected to DevStudio (noticed on a networked, NTFS drive). + fix typo in filters/makefile.wnt -- nmake won't allow use of both ':' and '::' for the same target. > patch by Gary Ross to add support to xvile for wheel mouse: + modified x_process_event to scroll up/down for Button4 and Button5 button press events. + added a new resource XVile.wheelScrollAmount to set the number of lines scrolled for each occurrence of these events. (Default is 3). (tom) 990503 (b) + correction to SSTRING and DSTRING symbols in perl, other syntax highlighters. The backslash character was not given as part of the excluded character range, making escaped quotes and escaped backslashes handled improperly. + improve mlerror() function for VMS. Any errno with the special value EVMSERR requires special translation. This translation was not being done by vile, which caused the editor to occasionally display an "unknown error" message. Example: $ vile x.y.z ! invalid file syntax not flagged by vile (patch by Clark Morgan). + add RCS majormode and syntax filter. + add SCCS syntax filter. + rename sccsmode to SCCSmode, to workaround majormode's name resolution; suffixes are done alphabetically. (tom) 990429 (a) + minor tweak to c-filt.c so it can be used on gcov output: the GNU coverage tool puts a count down the left margin to show lines executed, and "######" where they're not. c-filt.c did not expect the latter, and omitted some of the #'s. + correct install rule in filters/makefile.wnt, which combined the rules that should have gone to VILE_STARTUP_PATH with the ones for VILE_LIBDIR_PATH. + remove/correct obsolete description in vile.hlp for syntax filters (reported by Clark Morgan). + update README to describe 8.3 (patch by Clark Morgan). + correct use of $(MAKEFLAGS) in makefile.in, which is all of the makeflags including assignments, not like $(MFLAGS) which was only the flags without '-'. This made "make EXTRA_FLAGS=-O" fail (reported by Jeff Morriss ). + add -v option to filters, to show files opened and keywords/classes defined, for debugging. Repeat the -v option for more details. + correct expressions for sccsmode; the ^A characters were given as \001's. Changes for vile 8.3 (released Fri Apr 23, 1999) (tom) 990420 (v) + modify winvile.rc to use VILE_ICON definition, overlooked in previous patch. (tom) 990420 (u) + add 32x32 monochome versions of the .ico files, for completeness because automatically generated versions do not work well for color icons. + improved vile.ico by adding 16x16 section (Rick Sladkey). + correct reversed logic for no_msgs variable in perl.xs, from 8.2s changes (reported by Ed Henderson). + correct missing return in var_TITLE() on win32 (Clark Morgan). (tom) 990418 (t) + add configure option --with-xpm, to support color icons in xvile. Not all window managers support xpm icons. + remove configure test and ifdef's for CC_CANNOT_OFFSET_CASES, since rewrite of eval.c left only one place where we care about this compiler limitation. + add .ico, .xbm and .xpm versions of the most popular icons for xvile and winvile. + use SMG to get control sequences for 80/132 column switching (Clark Morgan, request by Tom). + rewrote vmsopen() in vmsvt.c (patch by Clark Morgan). + update vile-pager script to find vile-manfilt according to the VILE_LIBDIR_PATH setting, etc. + modify majormode suffixes check to exclude pipes and internal names + add ".hlp" to txtmode suffixes (note that the :h command bypasses $read-hook). + add cindent to lex, yacc majormodes. + add sccs majormode. + implement imake mode using C filter. + add syntax filter txt-filt.l, for highlighting simple textfiles. + add syntax filter spellflt.l, for highlighting misspelled words with ispell. Source "spell.rc" to get the ^X-i spelling highlighter. + add syntax filter difffilt.l for diff output + use "seed" in ucrypt.c rather than rand(). (tom) 990414 (s) + add "DBG=" option to makefile.wnt to simplify building with OPT_TRACE. + add VILE_LIBDIR_PATH to $PATH on WinNT, as on Unix to find syntax filters more simply. + minor fixes to filters: makefilt.l to handle $$name, sh-filt.l to refrain from highlighting keywords in contexts that look like options, e.g., -enable. + modify makefile.wnt to accommodate Win95: its shell doesn't grok "&&" as a command separator (patch by Clark Morgan). + add 'dist' rules to makefile.wnt + fix core dump for uninitialized $palette in statevar.c (reported by Brian Moore). > patches from Paul Fox general: + trimmed some old README text + removed margin and scrollsize values from term structs. they were deterministic constants everywhere anyway. + eliminated TTxxxx() macros, in favor of simple term.xxxx() usage. ANSI C says the (*term.xxxx)() format isn't necessary. we'll see. + renamed elements of term struct, since the element names are now exposed. eliminated redundant t_ prefix. + renamed null_xxxx() routines to match. + renamed some globals to better describe their function (e.g. pat, rpat, sres) + in a couple of places globals were lurking in macros (e.g. nexttabcol) and i made them visible. + cleaned up and corrected comments which no longer described the code correctly. + renamed tokenizing #defines, for better mnemonics. + suppressed a couple of arg-unused warnings when building X11 by tweaking ifdefs. ibmpc.c: + cleaned up a bunch of code -- moved private defines from estruct.h. + collapsed screen address defines to simplify. + did some renaming for mnemonic clarification. + eliminated unused global flags. + eliminated global "regs" struct/union. + eliminated all support for flicker suppression. it was cga-only, and wasn't needed on reasonable cards anyway. we can resurrect it if needed, but i doubt we will. (also eliminated $flickcode variable which enabled it.) + updated some copyright statements. exec.c: + simplified logic surrounding while-loop processing -- a single list is now maintained, rather than the double list shuffling that went on before, and endwhiles now get their own struct on the loop descriptor list. + eliminated recursion when freeing while-loop descriptors. + move save/restore of no_msgs (formerly discmd) inside dobuf(). + simplified flags that indicate that macro creation is in progress. + use mlforce() rather than mlprompt() in pressreturn(), and eliminate flag setting no longer required. (spawn.c) + use rand() rather than global "seed" for encryption purposes. (ucrypt.c) + add second %% line to lex "states" check -- it hangs on solaris otherwise. (aclocal.m4) (tom) 990404 (r) + add filters/mms-filt.l + change filters/makefile.in to work when configuring with --srcdir (patch by Brendan O'Dea). + include XBM and XPM versions of [J.] Richard's ``vile screen'' sample icon, ifdef'd with OPT_X11_ICON (patch by Brendan O'Dea). + rename GetEnv to vile_getenv, since VMS linker does not distinguish that from getenv (patch by Clark Morgan). + ignore case in VMS majormode suffix and preamble. + make C-style indent logic available as a mode 'cindent', so it can be assigned as part of a majormode. It is part of the builtin cmode. + collect logic for read/etc., hooks into common functions to make it simpler to see them. Save/restore the count of lines read so that the read-hook does not cause vile to report confusing total number of lines read, i.e., the actual file plus the highlighting. (tom) 990327 (q) + add filtername mode, to handle special filter cases for java, js, csh majormodes. + modify makefiles to allow vile to compile on *IX systems with the gnu make -j option, to run several C compilers at the same time. The -t option to lex is at least portable to Solaris lex and flex. Uses redirection (patch by Ryan Murray). + correct a couple of VMS-specific problems: assignment through a const pointer in cfg_locate, and implicit string concatenation in personals (patch by Clark Morgan). + rename VILE_LIBRARY_PATH to VILE_LIBDIR_PATH + correct limit-expression in add_brackets() function, which left trash on the end if the buffer name was too long. + update the list of files suppressed by --disable-extensions. + add configure option --with-purify. + modify configure-script so --with-no-leaks option does not require --with-trace. + correct error in 8.2p changes to ucrypt.c, i.e., incorrect workaround for a case where a cast was needed. + revised change to HighlightFilter to add HighlightFilterMsg which writes the "Attaching attributes..." message, leaving the HighlightFilter macro quiet and more suitable for use in $read-hook. + minor changes to make Paul's changes build with perl, tracing and disabled extensions/shell. > patches from Paul Fox (includes some documentation from Clark Morgan): + combined eval.c/sindex() and bind.c/ourstrstr() into single routine. + remove redundant mktrimmed() calls when doing buffer lookup. (buffer.c) + moved code for grabbing next line from buffer from eval.c to new routine next_buffer_line() in buffer.c + give credit to Roger Ove for scroll optimization code in display.c + random number generator now based on rand() -- it's present in MSDEV and all UNIXes i know of, but we may need a configure check eventually. (eval.c) + removed mostly redundant numeric token type. explicit check for digits in exec.c instead. + major overhaul of how vile's $state (formerly "environment") variables are implemented. new file, statevar.c, contains support routines, each of which is responsible for both getting and setting a single variable. dispatch is handled by new table set up by mktbls.c. this eliminates two of the big switches in eval.c. the result pointer arg to these routines should probably be a tbuff, which would allow unlimited variable lengths. (eval.c, mktbls.c) + the code that runs vile &functions has become more table-driven as well. modetbl now contains information on the return type of the functions, and the types of the arguments. this cleans up the per-function code somewhat. (eval.c, mktbls.c) + code for @interactive variables and &query function collapsed to single new user_reply() routine. (eval.c, statevar.c, input.c) + various other cleanup and name revisions in eval.c: "user" variables are now "temporary" variables, and "environment" variables are now "state" variables. utility routines (like ltos(), i_ltoa(), stol()) renamed to render_xxx() to create a string, and scan_xxx() to decode a string. + collapsed the stenv() and set_variable() routines into a single entrypoint useable from both exec.c and modes.c. + split temp and state variable lookup from their evaluation, so the lookup can be done in just one routine. (eval.c) + token evaluation (tokval()) now table driven. i don't know if it's much cleaner, but i think it's better. it's certainly different. (no, modetbls is not involved, nor should it be. :-) + minor change to HighlightFilter in filters/filters.rc to cause it to not try and color [Special] buffers. + quoting fix in macros/pic.rc + supporting changes: estruct.h, makefile.in, vile.hlp. (tom) 990320 (p) + add an install-rule to filters/makefile.wnt + eliminate restriction on number of command-line arguments in winvile (reported by Ed Henderson). + make VILE_LIBDIR_PATH settable from the environment, as per documentation (patch by Brendan O'Dea). + add/use init_b_traits() function, to ensure that switching to a buffer which was source'd while hidden does not copy bogus values for the associated line pointers back to the window traits (fixes a core dump reported by Paul Fox). + modify addline(), bclear(), ifile() to prevent malloc/free from being interrupted by 'working' mode. + minor fixes to mail highlighting filter, to allow "To: " prefix (reported by Paul Fox). > patches from Clark Morgan: + modify home_path() to work around problem on VMS where $ vile ~/com/defs.com does not work, nor does tab completion, e.g., :e ~/com/d (the latter was also reported by Ed Henderson). + vile restores original terminal width when it exits (mimics the eph editor's behavior). + added "-132" and "-80" command-line switches to set screen width from command line. + correct computation of prog_arg for VMS, which is used as part of the command-line help message. + modify definition of FOPEN_READ for VMS to allow shared reads from files (reported by Ed Henderson, analysis by Clark Morgan). > patches from Paul Fox: + revised macros.doc, touching all previously untouched parts. it's now a little more vile-specific, and a little "tighter". + rewrite strinc() in terms of strcmp()/strncmp(), rename. (bind.c) + converted confusing (to me) do/while() loops to simple while() (search.c) + collapsed keyboard polling code (fcntl version) to single place. (termio.c) + fixed imdying() to: a) leave a core even if there's a problem saving buffers, b) try all temp directories, rather than quitting on first failure, c) try $TMPDIR first, and current directory last, on all systems, d) warn user that files may be in current directory. future: on write error, should try again in other directories. (file.c) + fix bug where assigning BFEXEC in dofile() was tromping possibly existing flags (like BFCHG, leading to loss of buffer changes) (exec.c) + revised/rewrote entabline/detabline algorithms. entabline() no longer needs to calle detabline() first. (region.c) + fixed return status of nextbuffer()/prevbuffer when in noautobuffer mode. previously did swbuffer to current buffer, which succeeds. now you can safely loop through the buffers, and know when to stop. (this makes the new example in macros.doc work.) (buffer.c) + rationalize comments, comment wording, and code grouping (basic.c line.c buffer.c file.c edef.h eval.c bind.c random.c fences.c insert.c search.c window.c word.c display.c main.c input.c) + collapse updext_before()/updext_past() into single routine. purely mechanical -- could perhaps be improved. show keyboard macro "[recording]" state on modelines (display.c) + begin in state HEADER rather than state BODY (filters/mailfilt.l) + add new &query function, to (eventually) replace interactive @variables. (eval.c) + collapse starting/stopping of keyboard macro into single function, which acts as toggle. leave both key-bindings ( '^X-(' and '^X-)' ) but one is now redundant. (input.c vile.hlp) + changed sense, somewhat, of kbd and dot macro state variables: now a two state boolean, rather than a three state. well, i think it's nicer. (input.c line.c) + simplify macbug code to take advantage of vararg-capable mlforce() (eval.c exec.c) + revised window grow/shrink algorithms (window.c) + more logical variable naming/grouping (file.c edef.h select.c npopen.c eval.c insert.c search.c display.c bind.c) + change all BUG mlwrites to mlforce (file.c undo.c others) + further encapsulate "crypting" knowledge -- create as ffdocrypt() accessor for "ffcrypting". (file.c ucrypt.c) + renamed rewritten functions, minor algorithm changes (e.g. use castrealloc() rather than castalloc()/memcpy() (line.c, file.c) + added lreplc() function, which can safely replace single characters on a line. (line.c) + eliminated old "#ifdef BEFORE/#if NEVER/unused" code and variables. (buffer.c, file.c edef.h spawn.c) + uniform use of tb_xxx prefix on TBUFFs. (edef.h) + removed $truth variable (eval.c) + removed $ramsize variable (eval.c) + guard against possible null pointer dereference of b_fname (eval.c) + remove ENVFUNC ifdefs -- i think all our systems have them (eval.c bind.c) + removed OPT_AEDIT ifdefs. they weren't protecting much. (region.c opers.c) + added more generic null TERM struct routines, deleted unneeded screen-specific ones. (termio.c ansi.c vmsvt.c x11.c tcap.c) + hmmm. should i even mention this one? :-) (you guys should clearly follow suit.) (version.c) + minor supporting changes (proto.h estruct.h tags.c filec.c w32reg.c menu.c cmdtbl modetbl1 tbuff.c history.c) + comment cleanup, formatting, vestigial code and ifdef removal, increased NSTRING/NPAT. who needs powers of two? (estruct.h) + moved incremental search support def'ns to isearch.c (estruct.h isearch.c) + removed id.wing.net from suggested site list from README (tom) 990309 (o) + rewrite logic of newwidth() and newheight() (Paul Fox). + modify treatment of 'fillcol' mode so that a zero is interpreted to use the 'wrapmargin' value, and negative values are, like 'wrapmargin', counted from the current right-margin (prompted by discussion with Kuntal M Daftary). + minor fixes for ti-filt.c (handle "\\," and terminfo entries without aliases or descriptions). + remove crypt-til operator; this would not work properly on portions of a file. + write ucrypt.c to use Unix crypt(1) if available. + rename crypt.c, move it to filters as ecrypt.c, for building standalone vile-crypt. will be phased out. + set "vilemode" for macros and procedure buffers, to simplify syntax highlighting of internal buffers. + modify syntax filters so that keyword classes and their instances can be treated distinctly. + correct missing backslash in QUOTDEFS in makefile.in + review/simplified/corrected comment-prefixes and comments modes in filters.rc + correct logic of version_of() function, which did not ensure that the text really looks like a VMS version specification. From a bug report by Clark Morgan, who said that this works: :e ../buf*.c # look for buffer.c but this doesn't: :e subdir/buf*.c Workaround: :e [.subdir]buf*.c After fixing version_of(), my fakevms driver processes this properly. + update vile.hlp description of filter programs and renamed section to "Syntax coloring" (patch by Paul Fox). > patches by Clark Morgan: + only enable vtflash on hosts that support it (Unix, VMS). + clarify vile/winvile build instructions when using MS tools. + add $pid environment variable for VMS (tom) 990212 (n) + increase size of underline cursor for OPT_ICURSOR in ntconio.c + correct dcl-filt.l to handle inline comments + add bash-specific keywords to sh.key (reported by Paul Fox). + add missing assignment to save pre_op_dot in fences.c (reported by Clark Morgan, from VC++ 6.0 warnings) + correct check for return-value of open_region_filter(), which did not look for abort of command, resulting in hanging while trying to close a pipe that was not open (reported by Paul Fox). + change cast in CF_CC_OFFSETOF_CASES to 'long', to accommodate SGI's 64-bit compiler. + restore "perldo" cmdtbl entry, for compatibility (Paul Fox). + relax iteration limit for complex fences a little, using new mode fence-limit times the buffer length as the hard limit. This is still proportional to the buffer length, rather than allowing geometric increase with the fences groups. + add configure option --with-libdir-path to allow override of the default $(libdir)/vile. Make this alterable with new variable $libdir-path. + change install-directory for filter programs to $(libdir)/vile, to avoid clutter (suggested by Paul Fox). + modify some filters to avoid incrementing yytext since it may be an array. + add configure-check for state support in lex/flex, so we do not try to compile with programs that will not succeed. + correct limit-check in dname_to_dirnum(), missed a case when fixing for 8.2l, which caused pictmode.rc to not read properly. > patches by Clark Morgan: + correct codes for 8-bit PF1-PF4 in vmsvt.c + update vile.hlp for vmsvt.c's function key definitions, as well as a note about tilde-expansion on VMS. + add vtflash mode, for tcap.c and vmsvt.c (tom) 990202 (m) + suppress TTtypahead() call in sysmapped_c_avail() when we have made characters available in mapungetc(). This fixes a problem where type-ahead would get into the data copied from mapgetc_ungottenchars, breaking arrow key interpretation on slow connections. (This was reported a few times since 971205, when the problem was introduced, but is difficult to reproduce. Reported/tested by Clark Morgan). + implement mode mcolor, which lets user set the color of the modelines. The choices are the same as for visual-matches (request by Han Leushuis ). + update 'doingsweep' in one place only, do_sweep(), to ensure that the TTcursor() calls nest properly when a selection is aborted. + add vt220 7- and 8-bit function key definitions to vmsvt.c (request by Clark Morgan). + removed a FIXME in termio.c for read_vms_tty's assignment to nibuf, having confirmed that the document for the sys$qiow()'s read function says the device-dependent data stores a count of terminator characters (needed for VMS's equivalent to cbreak or cooked modes) rather than data that vile should process (patch by Clark Morgan). + prevent dobuf() from being interrupted by 'working' mode. (tom) 990126 (l) + add "~elsewith" directive to simplify use of fences in vile macros. + minor change to kbd_reply to allow abortc to be , though otherwise nulls are still ignored in that function (request by Christian Lindig ) + implement crude iteration-limit for complex fences to guard against blowup in error-handling. + correct/restore handling of keyboard interruption in complex fences + add rules to filters/makefile.wnt so that if $(LEX) is set, the build will use that for the lex/flex program and make the lex-based filters. + add yywrap() dummy function to filters.c to reduce dependency on libs. + change casts in Member_Offset macro to long from int to avoid compiler warnings on IRIX 6.x with 64-bit architecture (reported by Steen Savstrup Kristensen ). (tom) 990124 (k) + modify VMS logic in ttopen to use "SYS$COMMAND" rather than "TT:" since the latter does not work with the PIPE command added in VMS 7.x to mimics unix cmdline pipe functionality. Vile couldn't use this command, though. For example: $ pipe dir | vile failed with an "illegal i/o function" error. This change allows vile to read from the pipe stream as well as retaining its ability to read from a redirected stdin (patch by Clark Morgan). + reset eofflag in inout_popen, since attribute_from_filter may otherwise see the EOF from the previous file reading operation, e.g., if the file did not end with a newline. Likewise set fileispipe, just in case it would be needed. + correct inconsistent spelling of cache variable in CF_TERMCAP_LIBS, which caused the configure script to ignore a predefined termcap or terminfo library. + correct order of -lXmu vs -lXext in Athena-widget configure test. + resync configure scripts against autoconf 2.13 + patches + modify is_vms_pathname(), is_version() to accept a '.' to delimit version number (reported by Clark Morgan). + implement $sres, i.e., 80/132 column switching for vmsvt.c (patch by Clark Morgan). + update version number for Vileserv, missed in 8.2j + rename some operators that accept a range to end with "-til", for consistency (reported by Paul Fox, Clark Morgan). + other improvements to perlfilt.l, e.g., underscores in numbers, a POD-format,, suggested by Brendan O'Dea. + simplify HighlightFilter macro - there is no need to report if no filter exists, after all. This required renaming nroffmode to nrmode and pascalmode to pasmode (adapted from example by Brendan O'Dea). + apply "group" feature to complex fences, i.e., fence-if, ..., fence-fi. This allows vile to match both while{...} and if{...} blocks, for a test-case by Kuntal M Daftary. It works, but is very slow when choosing between patterns that are ambiguous, e.g., the different groups of patterns all end with a "}". + add "group" feature to majormodes, which allows user to define new instances of certain submodes. + ensure GCC_UNUSED is defined in filters.h for platforms that do not use the configure script (reported by Brian Moore). + minor fix to listvalueset() to avoid getting a double-newline. + improve makefilt.l, making it read keyword file. + add latexflt.l to install rule; various improvements to that filter. + improved perlfilt.l symbol table and symbol-parsing based on vile-pfilt.pl (John P Cavanaugh ). (tom) 981229 (j) + modify majormode preamble logic to set ignorecase if the majormode sets ignorecase. + modify tcap.c to use no_color_video capability to avoid overwriting colors with nonfunctioning video attributes. + modify html syntax filter to handle embedded JavaScript. + add filters for ada, awk, DOS batchfile, VAX DCL, Java, JavsScript, mail, nroff, sql, tcl/tk, termcap, terminfo, yacc + correct dependencies in filters/makefile.in for keywords files, which live in $(srcdir) (report by Brendan O'Dea, patch by Kevin Buettner). + workaround a parsing problem in lex-filt.l so that STATES and PATTERN can be distinguished. + various fixes to "e!", which did not prompt or repaint properly if the current buffer was from standard input, the unnamed buffer, or a temporary buffer. + correct a missing pointer increment in rewritten c-filt.c, which caused an infinite loop in some cases after '#'. + correct a couple of places where missing '\' character in lex files was interpreted as \a rather than \\a. + correct comparison in is_keyword (filters.c) which caused html keywords to not be highlighted. + add csh mode to filters.rc (tom) 981222 (i) + modify expand_pattern() to handle Unix-style wildcards on VMS (reported by Clark Morgan). + add configure option --with-fakevms, for testing VMS port. + change Cpp keyword in vile-c-filt to Preproc, for consistency. + move filter programs to filters subdirectory. Split-out the keyfile and symbol management to new file filters.c, and used that to enhance the original vile-c-filt so it no longer has line-length limitations. Added lex-based filters for cwebx, html, latex, make, perl, sh and vile macros. + prevent repeated call to free from old_namebst from memory-leak fix in 8.2g + add directives ~with and ~endwith, to simplify majormode expressions. + minor refinement to gui_isprint() > patches by Clark Morgan: + add pattern to finderr.c to use with DEC C compilers. + modify file globbing so that vile can read these two files from the command line (it already did read them via ":e"): ../readme or ~/vile.rc + documentation updates for README, README.VMS and README.PC (tom) 981214 (h) + simplify some trace-code using new functions visible_buff, lp_visible. + add trace-code for fences.c + correct check for zero-sized window, from 8.2e, which made it impossible to switch to a window with exactly one line (patch by Kevin Buettner). > patches by Clark Morgan: + modify ffsize() for VMS so that it returns a 0 rather than -1 if a call to 'fstat()' fails to get the size. The file exists, so a zero makes vile read if via slowreadf, which works. + modify estruct.h to build using descrip.mms alone: the vmsbuild.com script defines logical "SYS" so that can be included, but the descrip.mms script does not do that. + update ifdef's to make vile build with VAX C (the 8.0b changes added CC_CANNOT_INIT_UNIONS, which is needed for that compiler). + document problem with DEC C, which causes vile to update revision dates on files even without writing the file. (tom) 981201 (g) + fix minor memory-leaks (main.c, bind.c, select.c) + modify finderr.c to use the given filename and ignore the associated buffer name when looking for matching buffers in case we have multiple files with similar names. Modify getfile() to check first if the given parameter is a filename, rather than preferring match on a buffer name. + optimize tb_bappend and tb_sappend using memcpy rather than loop on tb_put. + add checks for empty/missing filename to dobuf() and getfile() and menu.c to prevent core dump when using "Edit .vilerc" menu entry and no .vilerc exists (reported by John Gotts ). + modify key-mappings in vmsvt.c to avoid defining VT52-style sequences, which introduce the possibility of confusing A for an arrow key (patch by Clark Morgan). + restore part of logic in C/C++ comment formatting modified in 8.0p; which introduced the undesired behavior of not formatting the first line of a comment (patch by Clark Morgan). + implement VMS-specific modes for record-format and record-size (initiated/tested by Clark Morgan). + change default search pattern for VMS to include only current versions of each file, unless mode "allversions" is set (request by Clark Morgan). (tom) 981124 (f) + updated CF_IMAKE_CFLAGS macro for configure script, fixes a problem configuring with --srcdir. + updated config.guess, config.sub from Lynx, adds cases for os390 and clix. + update documentation to indicate that vile has been tested on NT 3.51 (patch by Clark Morgan). + correct path separator in default $startup-path for VMS, which would prevent vile from reading vile.rc from a system directory (patch by Clark Morgan). + remove definitions for off_t, making ffsize() return B_COUNT. + modify fileio.c to trace return value from ffaccess(), ffexists(), ffronly(), ffropen() and ffsize(). + modify vmsvt.c to support video attributes bold, underline and flash (initiated/tested by Clark Morgan). > new version of vileget from J Chris Coppick: + Vileserv now checks for the existence of ~/.vilesock, but not for the file type. May be more portable. + Vileget has a -w option that causes it to wait until the given file(s) are written by xvile before it exits. This could be used in conjunction with a mail program for instance. To use this option, you have to set up a write-hook procedure. See the doc for vileget. (tom) 981114 (e) + corrected TTcursor logic interaction with xterm-mouse so the cursor does not remain invisible after extending a selection. + modify so that xvile can be build with --disable-extensions + correct ifdef for SYS_VMS which was hiding ifdefs for setsid + add sinstall.sh script to fix perl-path when installing scripts such as vileget. + document 'sentences' mode in vile.hlp (patch by Clark Morgan). + correct logic in previous-sentence, which checked for end-of-line state rather than empty-line in one place, causing the function to return the end of the previous line when starting on leading whitespace rather than the actual beginning of the sentence (reported by Clark Morgan). + add "~hidden" macro directive, to suppress 'update()' logic and status check for the current macro line. + add check for zero-sized window to 'update()' function, to guard against attempts to display an incomplete window as a result of a read-hook (reported by Sean Ahern). + add directory browser extension for vile written with the perl interface (from Kuntal M Daftary). + add Vileserv.pm, vileget perl scripts, which give you the ability to send edit requests to a running Vile, like gnuserv does for Emacs (From J Chris Coppick ) + correct parameter passed to 'access()' function to use symbols. The ffaccess() function relied on coincidence between values for FL_EXECABLE, FL_WRITEABLE, FL_READABLE and X_OK, W_OK, R_OK, which did not hold for djgpp. If all copies of vile.hlp were readonly, it was not "found" (reported by George.Young.gryoung@nt.com, this fixes a similar problem reported by Paul Laub stating that readonly-on-readonly did not work on DOS). (tom) 981112 (d) + correct/simplify handling of string literals in vile-c-filt, which did not treat single quotes and double quotes symmetrically. + correct an error in vile-c-filt which caused the ending quote of a string to be ignored if it appeared in the first column. + add new terminal function TTcursor, to disable cursor display during screen updates and during multimotion. This makes vile display better on FTP Software's TNVTPlus wyse50 emulation. + restore visual-matches after attribute-from-filter. (tom) 981110 (c) + implement a new macro directive, "~local" which saves the current value of $variables and %variables, restoring them at the end of the buffer/macro which is being executed. This does not (yet) apply to mode values. + rename some functions to make them easier to grep (token to get_token, macarg to mac_tokval, macliteralarg to mac_literalarg). + free old attributes in attribute_from_filter() before adding new ones. + correct an off-by-one error in attribute_from_filter() which caused the second and following attributes to be shifted by one position. + change patmatch to a TBUFF to simplify buffer-overrun checks, fix an off-by-one error in 'savematch()' which caused a core dump. + modify so that Perl interpreter processes END blocks and global destructors when vile exits (patch by Brendan O'Dea). + updated example for C filter to use attribute-from-filter (patch by Clark Morgan). (tom) 981106 (b) + add new command attribute-from-filter. + modify allocation of hypercmd value in select.c to use TBUFF's, fixing a use of uninitialized memory. + disable keyboard translation in Motif version of xvile (Gary Ross). > patches by Clark Morgan: + correct key translation in ntwinio.c so that pressing '^' (i.e., shift+6) will no longer cause winvile to flash/beep. + README.PC updated to talk about creation and location of startup file. + win32 versions of editor now support the $title env var (users can now set and display title from a macro). appropriate documentation updated. + macros/doc and vile.hlp tweaked to show that $title is set using env var syntax. although, surprisingly, the original example syntax works (i.e., set title "string"). i'm surprised because this is yet another undocumented aspect of the macro language--env vars are available via the set command. i'm not sure I want to document this feature--there's quite a bit to digest in this language as it is, now. + the my_cd_action stored procedure example in vile.hlp has been changed to my-cd-action to prevent users from being surprised that '_' is a command terminator. + makefile.wnt modified so that the ole-automation version of winvile will suck up the new winvile icon (the linker won't accept multiple .RES files). + document environment variables in vile man-page. (tom) 981101 (a) + add icon for winvile (V-eyes 'pumpkin'). + corrections to hilite.pl and syntax.pl, so it works for C comments (patch by Ryan Murray). + modify tokval() function to eliminate fixed-buffer limits for '@' prompts and '<' buffer-variables (reported by Clark Morgan). + add 'undoable' mode, as a performance convenience for filtering. Note that this purges the undo stack, because it suppresses update of the undo stack while changes may occur to the buffer. Also, during filtering it prevents vile from retaining the buffer's contents in the kill buffer (prompted by a report by Holger Kummert ). + minor fixes for memory-leaks & test code for that (main.c, fileio.c, modes.c) + modify dfputli and dfputi to output unsigned values to use in $pid conversion. + correct storeproc() so that it detects if tokens follow a macro's name on lines read from source'd file. These tokens are used for annotating macros in describe-bindings (report by Clark Morgan, patch by Brendan O'Dea). > patches by Clark Morgan: + modify so that preceding :! with an argument suppresses the [Press return to continue] prompt for winvile, + update/expand macros.doc + correct a limit-check when returning a buffer variable (eval.c). + convert $pid to unsigned hex rather than decimal on Win32. + make it possible to create vile-perl-api.doc on a win32 host. + add detail to README.PC with respect to building embedded perl. Changes for vile 8.2 (released Sun Oct 25, 1998) (tom) 981025 (c) + check for null top_widget in x_close; other xvile crashes on VMS if I simply run xvile -"V". (tom) 981024 (b) + modify glob-expansion to always recognize "~" as a synonym for $HOME if Unix-style passwd interface does not return anything useful (adapted from a patch by Ed Henderson). + rename vile.spec to vile-8.1.spec, change configure option to use Athena widgets so xvile is built with menu support (Radek Liboska). ** This is not an 8.3 filename, but is used only on Linux. + modify to use X11R6 input method and dead key support (patch by Stanislav Meduna ). + correct click-timeout value for xvile, overlooked in 8.1u (reported by Ryan Murray). + minor fixes to menu.c so that xvile builds on OpenVMS 7.2 with DEC C. > patches by Clark Morgan (mostly for visvile): + modified the w32 versions of vile so that during clipboard copy operations any character, c, in the following range: c > '~' && c >= val(printing-low) && c <= val(printing-high) is not translated to a hex representation (\xdd). I didn't use any other criteria (e.g., setlocale()) because I received no feedback from the person reporting the bug. Consequently, I don't know what particular locale value I should test (e.g., locale not "C" and not "" ??). I also explored whether or not the w32 paste operations should similarly not translate data when copying from the clipboard. For console vile, translation appears to be useful and necessary regardless of the printing-low or printing-high settings. For winvile, translation is not strictly necessary because when printing-low is >= 128 and printing-high is <= 255, winvile properly renders "highbit" ansi characters, such as these: opening quote closing quote ellipsis trademark copyright etc. However, the rendering of each highbit character is so small that the resultant text is extremely difficult to read. Consequently, I elected to continue my small set of translations (refer to the "map" array in w32cbrd.c for a complete list). (from report by Jukka Keto ) + extended/updated README.PC + add explanation of filterregion() portability (spawn.c) + modify in conjunction with visvile, to have the ability to redirect user-specified keystrokes to DevStudio. For example, from winvile you can start the debugger, step the debugger, start a build, etc. I think visvile is pretty useful now. There's one more wrinkle I can envision adding at a later date (see visvile/readme.txt for details), but this feature is not a high priority (to _me_ :-) ). The documentation of the redirected key feature is included in doc/visvile.doc . + add a new file called visvile/visvile.dsm (a collection of DevStudio macros). + added an environment variable called $cfgopts to the editor. From the help file: $cfgopts comma-delimited list of "interesting" compiled options (read only). Currently tracked options include: perl -> editor includes perl interpreter oleauto -> editor supports OLE automation. (tom) 981008 (a) + add logic to ins_anytime() to prevent recursion or use in minibuffer, e.g., when pressing the insert-key. + correct an ifdef for SYS_VMS in main.c from 8.0s which left other platforms using vfork (reported by Ryan Murray and Billy Little ). Changes for vile 8.1 (released Fri Oct 02, 1998) (tom) 981002 (w) + modify xterm mouse-click handling so that clicking on the left margin when the window is right-shifted always shifts it left. Before, if a tab fell on the left margin, the effective column was still in the visible part of the window. + back out redundant limit-check in display.c from 8.0u that caused an extra cell to be highlighted when doing full-line selection. (tom) 981001 (v) + updated install-rules for perl scripts. + set was_clean flag in all instances of ttclean(), fixing a problem where TTkopen() was not invoked on return from :sh command (reported by Ryan Murray). + strip trailing ^M's from hilite.pl and syntax.pl, add those to the list of Perl scripts in vile.hlp and makefiles (report/patch by Clark Morgan). + pass-through $(OPT) value in recursive-make in makefile.wnt (patch by Clark Morgan). + move logic to reset regionshape out of multimotion, to main.c's loop(), since commands such as "y2qq" would otherwise be yanked in EXACT mode (reported by Ed Henderson). (tom) 980930 (u) + modify :ww command to ignore readonly buffers (reported by Chris Sherman). + add sample Redhat RPM spec file "vile.spec" (from Radek Liboska ). + add code to allow user to color Motif pulldown menus, ifdef'd with OPT_MENUS_COLORED, normally off since I prefer the toolkit's color scheme (patch by Mark D Robinson ) + modify multimotion to reset regionshape to the original value on return after a selection is made, or to EXACT if the selection is aborted. This corrects a case where performing quoted fullline motion would cause a succeeding "cw" command to affect the whole line (reported by Yuri Antonik ). + add syntax.pl, hilite.pl, which support syntax highlighting for perl, c and tcl (Kuntal M Daftary). + modify os2vio.c so that when running vile in fullscreen mode, bright colors are used rather than blinking colors. + undo incorrect use of VFCOL mask from my 7.2q change, which caused the pscreen array to record VAREV attributes on shifted-in rows. + minor optimization in vtset function to perform better on very long lines. + modify x11.c to give xvile CDE-like quad-click support. CDE's dtterms select the entire window (including scrollback) on a quad click. Increased the timeout slightly to be able to repeatedly select this (patch by Ryan Murray). + documentation updates for visvile (patch by Clark Morgan). + fix a bug that prevented -font option from working on winvile (patch by Clark Morgan). (tom) 980925 (t) + correct two errors in AdjustedWidth and AdjustedHeight, making winvile resize properly when maximized, as well as not jumping when resizing after changing fontsize. + keep caret in winvile invisible until ttrow,ttcol point to a legal position, i.e., until initialization is complete. (tom) 980922 (s) + correct caret position and size in winvile after changing fontsize. + modify putctext() function to support setv of $word, $identifier, $qidentifier and $pathname. + rename "$wline" to "$wlines", add "$bchars" and "$blines" to return the number of characters and lines in the current buffer, respectively (request by Paul Askounis ). + modify select.c to allow de-attributing attributed regions. It takes care of the following scenarios now: - Non-overlapping regions were decided earlier on the basis on just line offsets and as a result worked correctly only for FULLLINE regions. Now they are decided based on line and column offsets and so work correctly for all three region types. - when de-attributing a region, partially or completely overlapping with a previously attributed region, the whole of previous region was de-attributed instead of only the overlapping portion. Now only the overlapping portion is de-attributed as long as we don't have any RECTANGLE regions. The fix still does not include RECTANGLE regions. (patch by Kuntal M Daftary) + modify c-filt.c to allow color and text attributes simultaneously (patch by Gary Ross ) + add watch.obj to descrip.mms and vmsbuild.com; change ifdef's for VMS consistently to SYS_VMS and comment-out Motif xvile definitions in descrip.mms in favor of X toolkit (reported by Andy Harper). This may make xvile build with DEC C, however Andy reports also that his library lacks XmCreatePullDownWindow, which is not simple to fix. (kev) 980919 (r) + buffer.c (zotbuf): Kill any fake windows associated with the buffer we're about to kill. + select.c (hyperspray): Only execute the first found hypertext command. + window.c (delwp): Added support for deleting fake windows. (push_fake_win, pop_fake_win): Removed #if 0'd out code. + x11.c (is_color_cursor): Added this field back to TextWindowRec; Also added back code to initialize it in x_preparse_args() and test it in flush_line(). Without this code in place, non-color cursors will not blink properly when they are within selections. [This was removed in vile-7.3w. We should address the reasons for removing this code in some other way.] (tom) 980910 (q) + correct parenthesis for test of F4 change in 8.0l (winvile.c) + modify so that xvile builds with --disable-shell (eval.c). + correct off-by-one in scrollbar position for winvile. + correct computation in AdjustResizing function so that starting a window resizing does not change the initial window size (ntwinio.c). + improved ":!command" for winvile, by creating a transient console which closes when the user presses any key (patch by Clark Morgan). (tom) 980908 (p) + modify attribute rendition in win32 drivers (ntconio.c, ntwinio.c) to make highlighting work with colored text by reversing fg/bg. + modify colors in winvile to make lightgray distinct from gray (reported by Clark Morgan). + further modify shell_complete() to continue splitting command lines on blanks, e.g., ^X!command did not do filename completion just like :!command. + minor lint fixes, e.g,. signed/unsigned values (buffer.c, input.c). > patches by Clark Morgan (mostly for visvile): + implement logic to return $font value on winvile. + simplified some expressions in vile's comment-formatter to make it format C++ comments. + if visvile disabled, no other dialog options are editable + added more document type checking to avoid occasionally opening such things as dialog box resource scripts. + implemented "CWD set from opened document's path" option + implemented "Write all modified buffers to disk prior to build" option. This feature doesn't work as well as it could due to a DevStudio (v5) bug. Refer to ../doc/visvile.doc for further details. + implemented "Build log -> errbuf if build reports errs/warnings" option. (tom) 980903 (o) + correct 8.0n change for highlighting, fixing an off-by-one error in visual-matches (reported by Alex Wetmore). + remove SetCursor calls from ntwinio.c, since they obstruct WinNT from showing the resize-cursor, as well as causing the cursor to flicker around the window border. > patches by Clark Morgan: + add the ability to set winvile's font from the command line or via the environment variable "$font" (a la xvile). + modify OLE automation registration to accept a font specification, making it possible to configure both the font and screen geometry of future instances of winvile OLE automation servers. + remove some compiler warnings in ntwinio.c and correct the OLE registration logic for the "-geometry" switch (file w32reg.c). (tom) 980902 (n) + modify updattrs function so that video attributes applied to tabs and other nonprinting characters will paint all of the cells used to display those characters (request by Richar A Ward). + modify win32 drivers (ntconio.c and ntwinio.c) to make visual-matches override syntax highlighting (reported by Clark Morgan). + correct unstacking behavior for next-tags as per original request. + modify shell_complete() function, which is used in both normal filename completion, and in completing shell commands so that for at least the former case it will handle filenames with embedded blanks (analysis by Rick Sladkey ). (tom) 980901 (m) + add a check to keep initial TTkopen from trashing the command-line help or version (termio.c). + implement token-type for macro label linenumber, e.g., tokens beginning with an '*'. + modify behavior of next-tags so that continued matches do not push the tags stack, but remain at the same level as the initial match (requested by Ed Henderson). + correct typo in change to imdying for the non-Unix case (patch by Clark Morgan). (tom) 980831 (l) + modify dbgwrite() message to show how to get out of the loop, since more than one person has thought vile is hung when it is awaiting a ^G after reporting a keyboard problem. + modify imdying() function to search for a temp-directory, preferring $TMPDIR, /var/tmp and /usr/tmp over /tmp. Lengthened cmd buffer in that function since it was too small. (reported by Duncan Barclay ). + correct logic for dragging scrollbar thumb in winvile which also moved cursor position unnecessarily (reported by Ed Henderson). + correct handling of Alt-F4 in winvile, which did not close the window because it was hidden by logic to support Win32 key modifiers (reported by Clark Morgan). + correct rendering of color 8 in winvile, which was black rather than gray (reported by Clark Morgan). + add gui_isprint() function to x11.c to test for characters which are nonprinting in xvile, override printing-low and printing-high modes to keep, for example, \80 to \A0 in printable form (main.c, x11.c) + added a TTkopen call to ttunclean to match the TTkclose in ttclean, fixes a problem where arrow keys did not work in the termcap version after a :sh command (reported by Ryan Murray). + modify configure script tests for termcap/terminfo libraries to allow $LIBS to have the corresponding libraries (for Ryan Murray, who wants to override the check for -lcurses). + correct handling of configure --without-perl, which still tried to use perl (reported by Ryan Murray). + add autoconf macro CF_PROG_PERL, based on macro from Brendan O'Dea. + remove x_quit function, using normal imdying function to handle SIGHUP and SIGTERM for xvile (reported by Shawn Halpenny). > patches by Clark Morgan: + remove spurious rumor in doc/visvile.doc + winvile shows file name in title bar + winvile ole automation server now catches bogus command line arguments before attempting to process -Or switch. (tom) 980827 (k) + add gui_version() function for winvile, to handle -V option (reported by Clark Morgan). + set flags for bminip and wminip so that all control characters except for newline are echoed as in list-mode (display.c, window.c). + correct rendering of termcap color while highlight-selection is active (tcap.c) + corrected logic of '<' register so it captures both calls on TTgetc in map.c, otherwise it missed the 'M' in xterm mouse clicks. + revise xterm mouse code to support movement of modelines by "dragging" button 1, and selection/extension with buttons 1 and 3. Integrated with multimotion() function (select.c, tcap.c). + fix a couple of memory leaks > patches by Clark Morgan: + adds _some_ winvile integration to DevStudio Version 5. In particular, this patch creates a component called visvile.dll, which is a DevStudio-compatible add-in that invokes an OLE-compatible version of winvile when editing/browsing text/source documents. Visvile.dll, a work in progress, is heavily based on visvim.dll. Full documentation is included in the new file doc/visvile.doc. + add InsertMode and IsMinimized functions for OLE interface. + remove unneeded assert's (winreg.c). + always set force-console mode for Win95 (main.c). + add command-line options to winvile to support OLE (ntwinio.c). (tom) 980816 (j) + implement a simple usage/popup for winvile. + correct a problem with cursor-droppings in winvile when the mouse is clicked on the modeline. + implement scrollbars for winvile (ntwinio.c) > patches by Clark Morgan: + changes to allow winvile to be built as an OLE automation server. Included with this patch are several new files, including one called doc/oleauto.doc, which describes the build process and the relevant server options/features. (tom) 980727 (i) + modify makefile.djg to use -f option of rm, to work with djgpp 2.x + updated dependencies in makefile.wnt (patch by Clark Morgan). + restore old functionality for win32 ^X-! (see 8.0c), but make a special check for its use in getting directory listings to avoid lockup with Thompson Toolkit Shell (patch by Clark Morgan). + change "%u" in lsprintf call in w32cbrd.c to "%d", fixes _snprintf change in 8.0h (reported by Clark Morgan). (tom) 980726 (h) + updated config.guess, config.sub based on automake 1.3. + combine some logic in file.c with new function strip_if_dosmode(). + correct typo in perl.xs from 8.0g + change win32 _snprintf calls to lsprintf, to build with Borland C++. + modify makefile.wnt to build with Perl 5.004, which is missing a global for 'rs' on win32 (patch by Clark Morgan, analysis by Kevin). + modified Clark's change so that the Win32-specific keycodes are returned only when combined with key-modifiers (shift/alt/ctrl) that are specific to Win32. + mods to cause apropos and show-bindings to display proper binding strings for the Win32 clipboard-related features. Also, modified ntconio to support noticed that winvile allows the user to sweep out a rectangular region when a control key is pressed during mouse-based text selection as in winvile, and documented in vile.hlp (patch by Clark Morgan). + correct message in win32 clipboard paste reporting the number of bytes transferred to the clipboard (patch by Clark Morgan). + updated makefile.blc, modified ifdefs to build with with Borland C++ 5.02 (patch by Ryan Murray ). + rename update_scrollbar to gui_update_scrollbar as part of ongoing work on scrollbars for winvile. + move autoconf tests for OpenLook and Motif libraries into aclocal.m4, for reuse in other applications (e.g., xterm). (kev) 980725 (g) + perl.xs (incgv, rs, ofslen, ofs, ors, orslen): Added PL_ prefix to these for perl5.005. Defined these in terms of the old non-prefixed names for older versions of perl5. (tom) 980717 (f) + corrected return-value of do_a_submode(), which was hiding a problem in the call on new_regexval() from set_mode_value(). + correction to fences-begin and fences-end logic, to account for the size of the matched text when doing a reverse sweep. Only one character from fences-end was selected, so that deleting a C-style comment would leave a '/' (reported by Clark Morgan). + add a couple of null-pointer checks in modes.c, to fix a case when 'comments' submode is not initialized. + implement previous-buffer command (requested by Quang Ngo ). + modify doindent() to adjust dot to point to the same text on exit as it did on entry. This fixes an instance of autoindent in cmode where inserting a right-brace character at the wrapmargin caused the brace to be inserted _before_ the wrapped word (reported by Michel Oey ). + corrected missing brackets in configure.in that caused --with-scr=xm to be misinterpreted. + modify win32 clipboard support to enable the copying of an arbitrary region or named register to the windows clipboard (patch by Clark Morgan). (tom) 980710 (e) + correct recompilation of [Error Expressions], by adding a check if the buffer is marked as changed, or if the number of lines in it has changed. If [Error Expressions] was popped up to view its contents, that worked, but otherwise (e.g., in .vilerc), it did not trigger the recompile (reported by Brian Moore). + change winvile -geometry parameter to COLSxROWS, for consistency with X Window applications (e.g., xterm), and documented in vile.hlp. + correct parsing of line-specification when a leading ',' is used, e.g., ":,$d" (reported by hymie! ). + documentation updates (patch by Clark Morgan). + modify logic in tags.c so that tags completion works when some of the tags files are missing (patch by Clark Morgan). (tom) 980708 (d) + correct offset for ending null in kbd_string(), which was beyond buffer limit - bug from 7.3f (patch by Chris Sherman ). + implement -geometry command-line option for winvile, and corresponding modifiable $pagelen and $pagewid values. + modify configure script to accept --with-screen=xaw and --with-screen=xm, i.e., lowercase screen values (reported by Ryan Murray ). + modify winvile to read stdin when there's data available, e.g., dir|winvile. Tested on Win95 _and_ NT (patch by Clark Morgan). (tom) 980703 (c) + remove spurious 'void' in perl.xs which caused items to be miscounted (report by Kuntal M Daftary, patch by Kevin Buettner). + shorten identifiers to no more than 31 characters (reported by Graeme Miller). > patches by Clark Morgan: + fix for a problem reported by Paul Fox: when a dos box has scroll bars (window size smaller than buffer size), then :! displays its output in a switched screen context that the user can't examine. This applies to console vile only (winvile has much worse problems in the same scenario :-). + changes to make ^X-! use the same code path as filter-region and read-pipe when the host is win32-based. + implement paste-from-clipboard for win32, bound to Shift+Insert + add a new documentation file (doc/w32modes.doc) that describes the optimum settings for win32 modes when the host OS is not NT4. (tom) 980702 (b) + change highlighting rule in vile-c-filt to highlight only the "#" and keyword on preprocessor lines (patch by Paul Fox). + dynamically allocate pm_buffer array in menu.c, eliminating limit on number of menu items (reported by William Yuan ). + new configure macro CF_CC_INIT_UNIONS checks for compilers that cannot initialize a union, e.g, a K&R compiler using unproto. Ifdef'd union in CMDFUNC to work in that case. + correct spelling of EXTRA_LOAD_FLAGS in CF_IMAKE_CFLAGS configure macro. + set VIEWOK flag on stored-procedure buffers, otherwise they cannot be used in buffers set "view" (reported by Larry Gensch). + rename character-type names to use "vl" prefix, to avoid conflict with ctype.h names on Digital Unix 5.0 (patch by Larry Gensch). + note that $progname may be "winvile" (patch by Clark Morgan). + modify configure.in and makefile.in so that $(datadir)/perl is not created unless vile is configured --with-perl (patch by Brendan O'Dea). + require perl 5.004 since the XS interface is dependent upon tied file handles, which are not completely implemented in 5.003 (request by Brendan O'Dea). (kev) 980606 (a) + perl.xs (svrs): No longer a global static variable. (perl_init): Don't initialize svrs here anymore. Also, stifle compiler warning. (READLINE): Declare and initialize svrs here, but only for platforms on which it's broken. (perl_default_region, do_perl_cmd, set_region): Adjust r_size field in region returned by getregion to account for buffers which don't have a trailing newline. (newVBrv): call gv_IOadd() in order to be able to use $. with the filehandles. (newVBrv, do_perl_cmd, set_region): Initialize $. . (READLINE): increment (or advance) $. as appropriate. [Brendan O'Dea sent me patches for much of the above.] This change log started on Monday Jun 8, 1998.