"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "vil96w32/README" of archive vile-w32.zip:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 
    2 README for vile, version 9.6
    3 ----------------------------
    4 
    5 vile is a text editor which is extremely compatible with vi in terms
    6 of "finger feel".  in addition, it has extended capabilities in many areas,
    7 notably multi-file editing and viewing, key rebinding, real X window
    8 system support, an optional embedded perl interpreter, and robust
    9 support for non-Unix hosts.
   10 
   11 the authors of vile are Paul Fox, Tom Dickey, and Kevin Buettner.
   12 
   13 many patches have been contributed by a lot of users.  we thank them.
   14 
   15 more recent additions to this README appear near the bottom.  that is, most
   16 of the newest stuff is at the end, not up here where you are.
   17 
   18 visit
   19 	ftp://invisible-island.net/vile
   20 	ftp://ftp.phred.org/pub/vile
   21 to be sure it's still the latest.
   22 
   23 impatient?  just type "./configure; make", and get a cup of coffee, decaf
   24 if necessary.
   25 
   26 want to know more about configure options?  type "./configure --help"
   27 and then read doc/config.doc for further details.
   28 
   29 want X11 support?  you'd better look at doc/config.doc, although
   30 "./configure --with-screen=x11"; make" may well do what you want.
   31 
   32 want syntax coloring?  add "--with-builtin-filters" to your configure
   33 options and then read the topics "Color basics" and "Syntax coloring" in
   34 the file vile.hlp.
   35 
   36 want PC support?  look for precompiled binaries at the various ftp sites.
   37 
   38 want to build vile on a PC host?  refer to the file README.PC .
   39 
   40 want VMS support?  some precompiled binaries are available at
   41 ftp://ftp.phred.org/pub/vile.  otherwise, you'll need to build vile
   42 yourself.  In either case, refer to the file README.VMS .
   43 
   44 if you like vile, and wish to be informed of new releases, let me know -- i
   45 maintain a mailing list for that purpose (scroll down a bit for details).
   46 don't worry -- the volume won't fill your inbox.
   47 
   48 paul fox, pgf@foxharp.boston.ma.us (original author)
   49 kevin buettner, kevin@buettner.to
   50 tom dickey, dickey@invisible-island.net (current maintainer)
   51 
   52 ------------------------------------------------------
   53 Up-to-date copies of vile, including executables for DOS, Win32 and
   54 OS/2 are found at
   55 	ftp://invisible-island.net/vile/
   56 
   57 which is mirrored at
   58 	ftp://ftp.phred.org/pub/vile/
   59 
   60 Development patches are found at
   61 	ftp://invisible-island.net/vile/patches/
   62 	ftp://ftp.phred.org/pub/vile/patches/
   63 
   64 In addition, we have distributed copies at other sites, including
   65 metalabs.unc.edu, hobbes.nmsu.edu (OS/2) and the VMS Freeware
   66 CDROM's.
   67 
   68 ------------------------------------------------------
   69 
   70 There is a project mailing list.  You can subscribe to it here:
   71     https://savannah.nongnu.org/projects/vile/
   72 
   73 To submit bug reports, either subscribe to the list (since
   74 non-subscribers aren't allowed to post) or use the bug system at
   75 that same URL.
   76 
   77 ------------------------------------------------------
   78 
   79 extracts from the original README, from February, 1992:
   80 
   81 VILE -- VI Like Emacs: a vi workalike put together from Micro-Emacs by Paul Fox
   82 -------------------------------------------------------------------------------
   83 
   84 	This editor grew out of a frustration that although lots of
   85 	eager programmers have tackled rewrites of Emacs, with new and
   86 	better features (not to mention free source), I've not seen
   87 	anything similar done with the Second True Editor.  (The
   88 	First, of course, being /bin/ed)
   89 
   90 	...
   91 
   92 	vile retains the multiple buffer/multiple window features of
   93 	MicroEMACS, but the "finger-feel", if you will, is very much
   94 	that of vi.  It is definitely not a clone, in that some
   95 	substantial stuff is missing, and the screen doesn't look
   96 	quite the same.  But what matters most is that one's "muscle
   97 	memory" does the right thing to the text in front of you, and
   98 	that is what vile tries to do for vi users.  THIS IS NOT A
   99 	"CLONE"!  But it feels good.  (Put another way, the things
  100 	that you tend to type over and over probably work -- things
  101 	done less frequently, like configuring a .exrc file, are quite
  102 	different.)
  103 
  104 	...
  105 
  106 	The collective developers of Micro-Emacs should be
  107 	complimented that the changes were as easy as they were.
  108 	...
  109 
  110 	Paul G. Fox	June, 1991, and February, 1992
  111 
  112 p.s. By the way, I'm _not_ the same Paul Fox who wrote Crisp, the Brief
  113 	work-alike.
  114 
  115 
  116 -----------------------
  117 
  118 September, 1992
  119 
  120 I don't have much to add to the original README -- vile has gotten a lot
  121 better since I first released it, thanks to a lot of users and a lot of
  122 bug reports.  It compiles and runs without modification on most major UNIXes,
  123 and under DOS.  It offers vi finger feel, and most (not all) of its features.
  124 I hope it fills someone's need out there.  -pgf 9/92
  125 
  126 (Special thanks to Dave Lemke and Pete Rucszinski, for X and DOS support,
  127 and (in no particular order) to Eric Krohn, Willem Kasdorp, J.C.Webber,
  128 Warren Vik, Julia Harper, Chris Sherman, Thomas Woo, Yanek Martinson, Miura
  129 Masahiro, Tom Dickey for lots of bug reports and suggestions and patience.)
  130 
  131 ------------------------------
  132 
  133 April, 1993
  134 
  135 Well, here's an update on vile.  The first release was a long time
  136 ago (a couple of years?).  Tom Dickey has been contributing a _whole_ lot
  137 of good changes.  vile now runs on VMS, and is much more stable on DOS
  138 thanks to Tom.  For me, vile is becoming an "old" program -- I first worked
  139 on it in 1989 sometime.  So it's been fun to have someone contributing
  140 fixes so energetically.  Thanks Tom.
  141 
  142 One thing that's changed since I first started vile is that "lots of eager
  143 programmers" have now tackled rewrites of vi.  There are several good work-
  144 alikes out there: elvis (the "king" :-), xvi, vim, stevie, and recent
  145 versions of vip-mode in GNU emacs.  [add "nvi" to that list.  and whatever
  146 happened to xvi?  -pgf 12/94]  From what little I've used any of
  147 these, they all seem like real good programs.  vile feels different from
  148 most of them, mainly due to its roots in MicroEmacs.  You may or may not
  149 like it.  If you don't, try one of the others.  There's certainly no reason
  150 to not have a vi-like editor on just about any machine you choose.  (yeah,
  151 I know -- I'm assuming you _want_ a vi-like editor...  :-)  Enjoy.
  152 
  153 Oh yes -- building it.  On UNIX, type "make", and choose one of the predefined
  154 targets.  Like "make linux". [ not anymore -- use "configure; make"  -pgf 12/94]
  155 
  156 DOS makefiles are named after the compiler they support:  makefile.tbc for
  157 Turbo-C, makefile.wat.  There is support in "makefile" for Microsoft-C, but
  158 it's next to useless -- if anyone puts together a good "nmake" makefile,
  159 could you pass it along?  [that support isn't there anymore.  -pgf 12/94]
  160 
  161 The Watcom C/386 v9.0 compiler should also work -- the makefile to use is
  162 makefile.wat.
  163 
  164 The latest version of vile is usually available for ftp at "ftp.cayman.com",
  165 in the pub/vile directory.  [not anymore -- it's at "id.wing.net" in the
  166 "pub/pgf/vile" directory.  -pgf 12/94] Sometimes there's a compiled DOS
  167 binary there too.  I don't maintain a mailing list, or anything like that
  168 to inform folks of new releases -- you just sort of have to check once in a
  169 while, or send me mail...  [ I've set up a mailing list -- contact me to be
  170 added -pgf 7/93]
  171 
  172 paul
  173 
  174 ------------------------------
  175 
  176 July, 1993
  177 
  178 More new features:  infinite undo, modification time checking, and, at
  179 long last, primitive support for the :map command.  [:map is now fully
  180 functional -pgf, 12/94] I've also received patches that let vile compile
  181 for DOS with the DJ GCC compiler.  Have I mentioned filename completion?
  182 Tom Dickey provided that and variable/modename/command completion too.
  183 
  184 If you would like to be informed, via email, of new vile releases (bearing
  185 in mind that the newest release may be _more_ likely to be buggy, rather
  186 than _less_), please send me mail, and I will add you to my list.  The email
  187 will probably contain a capsule summary of the most recent changes to the
  188 code.
  189 
  190 Thanks to Tuan Dang for the Watcom and DJ GCC work.  I don't know much
  191 about djgpp, the DOS port of djgcc, but take a look at makefile.djg.
  192 
  193 
  194 pgf
  195 
  196 
  197 -------------------------------
  198 
  199 March, 1994
  200 
  201 The X support in xvile has been given a huge boost with contributions from
  202 Kevin Buettner -- scrollbars, Motif widget support make it feel like a real
  203 application...  We now have rectangular regions.  DOS support is getting
  204 better all the time.  The major version number got bumped to 4 somewhere
  205 along the line, because Tom and I were getting tired of 3.  There are quite
  206 a few new "modes", some to support vi functionality, some altogether new.
  207 We should have keyboard selections and highlighted regions soon...
  208 
  209 pgf, pgf@foxharp.boston.ma.us
  210 
  211 
  212 -------------------------------
  213 December, 1994
  214 
  215 hmmmm -- lets see.  new stuff.  see the CHANGES and help files for details.
  216 
  217 	- vile is now completely autoconf'ed -- you should be able to type
  218 	either "./configure; make" or "./configure --with-screen=x11" to build
  219 	it on any (unix-like) platform.
  220 
  221 	- :map and :map! are now much more complete, but still by no means
  222 	done.  expect to have to edit your favorite macros to make
  223 	them work.
  224 
  225 	- :abbr now works.
  226 
  227 	- along with proper :map support comes proper function key support.
  228 	function keys defined for your terminal in the termcap/info database
  229 	are now premapped and can be bound to as #-1 etc.  so those of
  230 	you with ESC [ 10 ~ style function keys should be happy now.
  231 
  232 	- mouse clicks which move the cursor now count as proper motion
  233 	commands in both xvile and vile-in-an-xterm.  this means, for
  234 	instance, that '' or `` will get you back to where you were before
  235 	you clicked the mouse, and you can apply operators to mouse
  236 	movements.  for example -- click the mouse somewhere, hit 'd' to
  237 	start a delete operation, and click the mouse somewhere else.  the
  238 	text between the two mouse-click locations will be deleted.
  239 
  240 	- on-line help (just a single line) for every function, available
  241 	with describe-{bindings,function,key} commands.
  242 
  243 	- new modes to better control beeping and the "working..." message.
  244 
  245 	- autowrite mode now supported, on a global or buffer-by-buffer basis.
  246 
  247 	- popup windows now adjust their size to their contents -- less screen
  248 	space is wasted for small window, and more is used for big windows.
  249 
  250 	- file and command completion is now more emacs/bash/tcsh-like, in
  251 	that possible choices are shown when you hit a second TAB key.  this
  252 	can be tuned via a new mode, "popup-choices"
  253 
  254 	- "quoted" motions, which highlight the text they will act on.  type
  255 	a 'q', and start moving around, then type another 'q'.
  256 
  257 	- various fixes to the macro language, for core dumps and usability.
  258 
  259 	- file.bak and file~ backup files now supported.
  260 
  261 	- infinite (?) screen sizes should now be supported under X.
  262 
  263 	- it's now possible to break lines by putting ^M in the replacement
  264 	pattern.
  265 
  266 	- selections, the modelines, and the cursor, under xvile, can all
  267 	have different colors.
  268 
  269 	- color support for termcap, at least on the linux console.
  270 
  271 	- put'ing from registers (i.e. 'p' and 'P' commands) should be much
  272 	faster.
  273 
  274 	- multiple (error) messages arising from running a macro or a startup
  275 	file will now accumulate in a new popup window.
  276 
  277 	- a simple, probably incomplete file-locking protocol is available,
  278 	but is not compiled in by default.  the organization which
  279 	contributed the code (Baan Development) uses it to aid their
  280 	multi-user development.  turn on OPT_LCKFILES in estruct.h and
  281 	"set usefilelock" in your .vilerc to play with it.
  282 
  283 	- Windows NT support -- console mode only.  anyone want to port this
  284 	to the Windows95 console?  it's probably not hard, though i haven't
  285 	looked into it very hard.
  286 
  287 	- lots of bug fixes
  288 
  289 -------------------------------
  290 Febrary, 1995
  291 	xvile now supports color attributes, which means we can do some
  292 	primitive syntax coloring of C programs, using the external filter,
  293 	"c-filt".  this is still pretty new stuff.  expect it to get better
  294 	with age.
  295 
  296 
  297 -------------------------------
  298 November, 1995
  299 	lots of new users in the last year, due to better advertising
  300 	and inclusion in some of the big linux and freebsd archives.
  301 	support for NT and OS/2 has gotten much better, and lots of
  302 	little bugs have been fixed, and features added.  Win32 support
  303 	is very good these days, thanks mostly to the efforts of Rick
  304 	Sladkey.
  305 
  306 -------------------------------
  307 June, 1996
  308 	gee, i don't remember _what_ we've done recently.  enjoy.
  309 
  310 -------------------------------
  311 
  312 September, 1996
  313 	tom dickey has volunteered to take over releases, and maintaining
  314 	"official" sources.  i'll still contribute, but more as part of the
  315 	"audience".  tom has done a _huge_ amount of work over the years
  316 	on vile -- i _really_ appreciate it...  -pgf
  317 
  318 -------------------------------
  319 
  320 May, 1998
  321     vile 8.0 is released.  Major new features include:  an embedded
  322     perl interpreter (available on Unix and Win32 hosts), an editable
  323     mini-buffer, majormodes, enhancement of user-defined procedures to
  324     the point that they may now be bound to user-defined keystrokes,
  325     tag completion, and addition of a win32 gui (called winvile).
  326 
  327 -------------------------------
  328 
  329 Oct, 1998
  330     vile 8.1 and 8.2 are released.  These are primarily bugfix releases.
  331     Refer to the CHANGES files for details.  Tom Dickey continues to
  332     improve winvile, which now supports scroll bars and two new
  333     command-line options that control the editor's geometry and font.
  334 
  335 Apr, 1999
  336     vile 8.3 is released.  This release includes much enhanced syntax
  337     filter capabilities.  The filters are now much faster, mainly because
  338     vile uses a new command attribute-from-filter to apply their output
  339     directly as attributes to the buffer rather than modifying (and
  340     allowing undo).
  341 
  342     The organization of the keyword files for the syntax filters is now
  343     associated with majormodes.  Syntax filters are defined for most of the
  344     predefined majormodes which include:
  345 
  346         adamode                   jsmode                    perlmode
  347         awkmode                   keymode                   sccsmode
  348         batmode                   latexmode                 shmode
  349         cmode                     lexmode                   sqlmode
  350         cshmode                   m4mode                    tcmode
  351         cwebmode                  mailmode                  tclmode
  352         dclmode                   makemode                  timode
  353         diffmode                  mmsmode                   txtmode
  354         htmlmode                  nrmode                    vilemode
  355         imakemode                 pasmode                   yaccmode
  356         javamode
  357 
  358     Other changes of note (this is not an exhaustive list):
  359 
  360     + removed/rewrote code which would prevent us from making vile available
  361       under more liberal licensing.
  362 
  363     + winvile and xvile have icons.
  364 
  365     + new macro directives added, including:
  366 
  367       ~local  ~hidden  ~with  ~endwith  ~elsewith
  368 
  369     + many VMS bug fixes and enhancements.  8.3 is a keeper if you use VMS.
  370 
  371 Nov, 1999
  372     vile 8.4/9.0 is released, distributed with GPL licensing.
  373 
  374     In addition to improvements to syntax highlighting, e.g., user-definable
  375     color schemes, vile's macro language has been extended
  376 
  377     	+ procedures can be parameterized.
  378 
  379 	+ several new functions simplify handling of external filenames, and
  380 	  parsing strings.
  381 
  382     Further improvements have been made to winvile: drag/drop, file open
  383     dialog, better integration with the Windows Explorer and DevStudio.
  384 
  385 Jan, 2000
  386     vile 9.1 is released.  Highlights since 9.0:
  387 
  388     + continued improvement of syntax coloring (much work here)
  389 
  390     + add an Exporter-like mechanism to Perl5 interface. Instead
  391       of exposing a module's functions to the caller, it exposes them to
  392       vile as registered commands.  By renaming the extensions as `.pm',
  393       and making some minor changes to use Vile::Exporter, an extension
  394       becomes visible by simply adding:
  395           use extension;
  396       to vileinit.pl.  There is also provision for only including some
  397       commands provided by the extension, and for overriding the keybinding
  398       defined by the developer (documented in the attached module).
  399       Of course you can still say:
  400            require extension;
  401       and do the registering yourself if you so choose.
  402 
  403     + vile's perl interface includes a new Vile::Window module, which may
  404       be used to manipulate vile windows.  Examples of the use of this
  405       module may be found in winops.pm.
  406 
  407     + rename most .pl files to .pm (makefile.in).
  408 
  409     + add/improve several perl scripts, including
  410 
  411       - capture.pl - implements a perl version of capture-command.  This
  412         version incrementally updates the window however.
  413 
  414       - shell.pl - revised to use IO:Pty instead of Comm.pl (which
  415         seems to be no longer maintained).
  416 
  417       - Manual.pm - display embedded POD documentation.
  418 
  419     + implement watchfd support for the termcap/terminfo versions of vile.
  420 
  421     + added autocolor feature, which updates color syntax highlighting when
  422       the keyboard is inactive for a specified period.
  423 
  424     + Vileserv now also works for vile.
  425 
  426     + changed vmsbuild.com to accept a compiler specification on the VMS
  427       command line, which is much more convenient than editing the build
  428       script by hand.  compiler defaults to VAXC on Vax hosts and DECC on
  429       Alpha hosts.
  430 
  431     + Several Win32-specific improvements:
  432 
  433       - add the Win32 common dialog "save as" feature to both console
  434         vile and winvile.
  435 
  436       - modify directory.pm and dirlist.pm to make them work on win32, i.e.,
  437         by not executing portions that will not work (such as mime types).
  438 
  439       - implement autoscrolling feature for winvile, which makes the buffer
  440         scroll in the direction where the mouse leaves the window,
  441         automatically extending selection highlighting.
  442 
  443     + modify backspacelimit mode to allow backspacing through a newline
  444       when nobackspacelimit is specified.
  445 
  446     + add single-quoted strings, which eliminate the need for escaping
  447       backslash (useful in startup/command files)
  448 
  449     + Added binding / support for ^X-_ aka
  450       "historical-buffer-to-current-window".
  451 
  452     + modify logic in ins_any_time() to interpret control characters which
  453       are bound to GOAL or MOTION commands rather than inserting them
  454       without quoting.  This allows ^E and ^Y as commands within an insert.
  455 
  456 Oct, 2000
  457     vile 9.2 is released.  Highlights since 9.1 (modulo bug fixes):
  458 
  459     + improve performance of syntax highlighting with configure option
  460       for compiling-in any of the syntax filters.  Use the configure
  461       --with-builtin-filters option.  Both internal (built-in) and
  462       external filters are supported.
  463 
  464     + add key binding functions for the different editing modes (insert,
  465       command, minibuffer and default), making it simpler to bind a
  466       space or tab to a given function without having it confused for a
  467       function while in insert mode.
  468 
  469     + Vileserv now uses the registry, so 'perl "use Vileserv"' in your
  470       .vilerc automagically adds the commands startserv, stopserv, and
  471       vileserv-help.
  472 
  473     + added gdb.pm, which runs gdb in a vile window and tracks changes
  474       in editor.  (Must be used with shell.pm.)
  475 
  476     Several Win32-specific improvements:
  477 
  478     + allow pasting of one line of text into mini-buffer.
  479 
  480     + winopen, winopen-nocd, winsave, and winsave-nocd accept an
  481       optional directory argument, which specifies the initial directory
  482       opened by the Open/Save Win32 common dialogs.
  483 
  484     Other Modes:
  485 
  486     + add insert-exec mode to control logic in ins_any_time() which
  487       interprets control characters which are bound to GOAL or MOTION
  488       commands rather than inserting them without quoting (see 9.0a and
  489       9.0b changes).  This restores the default behavior, since some
  490       users had control characters bound to a function which was then
  491       executed.
  492 
  493     + add unique-buffers mode, which does dev/inode checking to be sure
  494       files aren't edited more than once.
  495 
  496     Syntax Filters:
  497 
  498     + add syntax filters for sed, imake
  499 
  500     + implement abbreviations for syntax keywords, using '*' as the
  501       default delimiter.
  502 
  503     + filters now attribute multi-line regions when appropriate, e.g.,
  504       multi-line comments in C.
  505 
  506     Macros and Scripting Support:
  507 
  508     + add &dquery function which prompts for input with a given default
  509       value.
  510 
  511     + implement function &error, which returns true if its argument was
  512       an ERROR token.  Modify built-in functions to return ERROR if an
  513       argument was ERROR.
  514 
  515     + add variable $filename-expr, to specify the actual pattern used
  516       for %F in [Error Expressions].  On DOS and Win32, this is
  517       initialized to a more complex pattern, to accommodate drive
  518       letters.
  519 
  520     + make the ~local directive work for modes.
  521 
  522     + add ~trace directive, which sets or reports the value of the
  523       $debug variable.  Use this to trace into internal buffer [Trace].
  524 
  525     + add macros/shifts.rc, which implements left/right shifting of
  526       words in the current line to align with the cursor.
  527 
  528     Other Changes:
  529 
  530     + modify color support in xvile to allow the pre-8.3s color scheme
  531       as a special case:  setting bcolor to fcolor makes xvile use the
  532       bcolorN resources on syntax-highlighted text rather than the color
  533       selected by bcolor (which is actually taken from the fcolorN
  534       resource in this case).
  535 
  536     + added pushd, popd, dirs commands with accompanying [DirStack].
  537 
  538 June, 2002
  539     vile 9.3 is released.  Highlights since 9.2 (aside from bug fixes):
  540 
  541     + add dirs-clear and dirs-add commands
  542 
  543     + added select-all and selection-clear commands.
  544 
  545     + change default for $XSHELLFLAGS from "-c" to "-e", which matches the
  546       documentation for $xshell-flags.
  547 
  548     + add write-all-buffers command; writes all buffers whether modified or not
  549 
  550     + add setenv (set-environment-variable) command.
  551 
  552     + added a swap-title mode and $title-format variable.
  553 
  554     + if the user specifies ":w!", and the file is not writable, vile will
  555       (try to) temporarily chmod the file for writable access.
  556 
  557     + added $findpath and $find-cmd state variables and, on win32 and unix
  558       hosts, modified capturecmd (aka ^X-!) to support find operations that
  559       span directory tree(s).
  560 
  561     + reimplement ":args" command to accept a filename expression.
  562 
  563     + add commands "ww!" and "wall!", to respectively write all changed
  564       buffers and write all buffers, using the "w!" behavior of ignoring
  565       readonly file permissions.
  566 
  567     + implement three functions for working with timestamps: &ftime, &stime,
  568       and &date, respectively for file modification time, system time, and
  569       formatted date/time.
  570 
  571     + extend insert-exec to allow ^A and ^X prefixes to be interpreted
  572       in insert mode
  573 
  574     + implemented support for reading/writing Macintosh files, i.e.,
  575       recordseparator=cr.  New commands set-rs-cr, set-rs-lf, set-rs-crlf
  576       extend the set-unix-mode and set-dos-mode commands to include Mac's.
  577 
  578     + add &stoken function, which searches for a token in a string, e.g.,
  579       "perl" in $cfgopts by
  580         &stoken  "perl"  ","  $cfgopts
  581 
  582     + add &translate function, e.g.,
  583         &trans   ","     " "  "a,b"
  584       to change commas to spaces
  585 
  586     + add commands leading-detab-til and leading-entab-til, binding those
  587       to ^X-' ' and ^X-^I.  Most of the logic was available internally.
  588 
  589     + implemented '< and '> marks, which denote the limits of the
  590       selection.
  591 
  592     Perl Interface:
  593 
  594     + add a new command to shell.pm called "xterm", which starts a shell in one
  595       of vile's buffers just as "start-shell" already does, but also starts an
  596       xterm through which one may (also) interact with the shell.  The shell
  597       output (and echoed input) is displayed in both the xterm and a vile
  598       buffer.
  599 
  600     + implement perl/Breadcrumbs.pm
  601 
  602     + add perl/Help.pm
  603 
  604     + add perl/CaptHook.pm, which provides useful wrappers for Vile's
  605       "hook" variables.
  606 
  607     Win32-Specific:
  608 
  609     + added basic win32 printing for winvile
  610 
  611     + modify ntconio.c so that default fcolor is 7
  612 
  613     + change paste in winvile to insert at DOT rather than after.  Also,
  614       when pasting in insert mode, set DOT to the end of the inserted
  615       text.
  616 
  617     + improve paste-by-right-mouse-click operation in winvile by NOT
  618       setting the insertion point at the position where the mouse happens
  619       to be when executing the right-click, but rather pasting at the
  620       current DOT (i.e.  right-mouse-click never sets DOT).
  621 
  622     + when popup-menu is inactive, if text is selected, right-click copies
  623       to w32clipboard; otherwise right-click pastes from w32clipboard.
  624 
  625     + added icursor (insertion cursor) mode.
  626 
  627     Syntax Filters:
  628 
  629     + add Verlog and ECLiPSe (Prolog dialect) filters
  630 
  631     + add syntax filter for BASIC, and majormodes basicmode and
  632       Visual Basic (vbmode).
  633 
  634     Other Changes:
  635 
  636     + add 'mouse' mode for OS/2 (CSet), to disable mouse when not wanted.
  637 
  638     + add $prompt variable, to allow changing the command-line prompt.
  639 
  640 Aug, 2003
  641     vile 9.4 is released.  Highlights since 9.3 (aside from bug fixes):
  642 
  643     General changes:
  644 
  645     + regular expressions and searches allow null characters.
  646 
  647     + minibuffer editing commands are more complete, implementing all of the
  648       inline cursor search- and motion-commands.
  649 
  650     + implement new editing commands in the minibuffer:  r, ~, x, X.
  651 
  652     + use insert-mode bindings when mini-edit mode is active.  Use insert-key
  653       to toggle, rather than set mini-edit mode.
  654 
  655     + modify buffer- and filename-completion on Unix to escape backslashes
  656       which are stored in the [Completions] buffer.  Doing this allows one
  657       to complete a buffer or filename containing a backslash.
  658 
  659     + improve history-editing by quoting tokens which contain embedded blanks
  660       or other special characters, using that to retrieve tokens from the
  661       history buffer unambiguously.
  662 
  663     + save/restore window modes such as linewrap when rereading a file,
  664       or when executing a shell command.
  665 
  666     + use realpath() if it is available, and "$VILE_PWD" environment variable
  667       rather than "." as parameter to getcwd() if it is valid, to speed up
  668       operation on quasi-filesystems such as ClearCase.
  669 
  670     + add configure option --with-screen=XawPlus for XawPlus library.
  671 
  672     + add configure option --with-screen=ncursesw to allow building the
  673       curses driver using the wide-character version of ncurses.
  674 
  675     + add check in tcap.c for terminfo kmous capability like xterm, in case
  676       we are running in screen, which also supports xterm mouse protocol.
  677 
  678     + modify support for "^X-e" to make it use the whole line if the current
  679       buffer is a directory.
  680 
  681     Locale Improvements:
  682 
  683     + change default for --with-locale option to yes.  Note that this
  684       option is only tested if locale support is found, and it is becoming
  685       less common to encounter systems with broken locale support.
  686 
  687     + add "locale" to the "$cfgopts" variable if vile is compiled with
  688       locale support.
  689 
  690     + modify vile-manfilt to decode UTF-8 emitted by groff 1.18
  691 
  692     + in UTF-8 locale, adjust termcap driver to use UTF-8 to display codes
  693       in the 160-255 range, setting vile's locale to non-UTF-8 locale.
  694       (yes, this is a short-term fix).
  695 
  696     + add configure check for wctype functions, to work around defect in
  697       glibc's ctype functions: in UTF-8 locale, the latter return useless
  698       information on character classes.  This works on Solaris.
  699 
  700     + move upper/lower case-conversion into tables so that locale support can
  701       augment the built-in translation.
  702 
  703     New Commands:
  704 
  705     + "which-keywords" macro shows the location of files containing keywords
  706       for the given majormode.
  707 
  708     + "edit-buffer" simplifies "which-keywords" and similar macros.
  709 
  710     + "encode-attributes-til" and "write-encoded-til" convert the syntax
  711       highlighting in a region back to control/A sequences, or write the
  712       corresponding data to a file.  There is a corresponding alias
  713       "decode-attributes-til" for "attribute-cntl_a-sequences-til".
  714 
  715     + "substitute-all-til" implements the "^X-s" binding.
  716 
  717     New Modes:
  718 
  719     + add "overlap-matches" mode, to control whether highlighting for the
  720       visual-matches mode should skip to the next character, or past the
  721       current match when checking.
  722 
  723     + add "percent-crlf" mode, which controls the threshold at which the
  724       whole file will be considered DOS-format (CRLF record separators)
  725       if the given percentage already ends with CR/LF.
  726 
  727     + "yankmotion" mode controls whether the cursor should be moved as in vi
  728       after yanking text.
  729 
  730     + add "xterm-title" mode.
  731 
  732     + add logmode majormode, to distinguish some makefiles from logfiles.
  733 
  734     + add "texmode" majormode, as a variation of latexmode.
  735 
  736     New Variables and Functions:
  737 
  738     + add several short-named relational operators "&geq", "&gt", "&leq",
  739       "&lt", "&neq", "&sgeq", "&sgt", "&sleq", "&slt", "&sneq" to reduce
  740       the need for "&not".
  741 
  742     + add "$pathname-separator" variable.
  743 
  744     Syntax Filters:
  745 
  746     + add Ruby syntax filter.
  747 
  748     + add syntax filter for rpm ".spec" files.
  749 
  750     + add syntax filter for PostScript ".ps" files.
  751 
  752     + add syntax filter for enscript ".st" files.
  753 
  754     + add xml-filter based on html-filter.
  755 
  756     + add pot-filt.l, to highlight ".po" files.  Using sh-filt.l was
  757       not satisfactory since the quoting rules were not close enough.
  758 
  759     + add syntax filters and corresponding modes for assembler (GNU and M$),
  760       info and texinfo.
  761 
  762     + add -j option to c-filt.c, to implement some java-specific features
  763       such as "$" as part of an identifier, and \u escapes.
  764 
  765     + add un-filters (atr2ansi, atr2html, atr2text) which convert encoded
  766       control/A text to different forms.
  767 
  768     + modify spell.rc, spellflt.l and select.c to allow spell filter to
  769       work as a built-in filter.
  770 
  771     + modify built-in spell filter to work with encrypted files.
  772 
  773     + add a -t option to filters, to pass tabstop value.  Use this in
  774       makefilt.l to provide better highlighting of problems with leading
  775       whitespace.
  776 
  777     + modify manpage.rc to check if the current buffer is perl, and if so,
  778       to render contents using pod2man or pod2text.
  779 
  780     + set "vilemode" for [History] buffer.
  781 
  782     + reorder lex-based filters to allow building with flex 2.5.31, which
  783       introduces several incompatibilities with respect to flex 2.5.4
  784       and lex.
  785 
  786     + add configure check/warning for flex 2.5.31, which has broken support
  787       for the "-P" option used for built-in filters.
  788 
  789     Win32 changes:
  790 
  791     + implemented tilde-expansion on win32.  Actually it was present, but
  792       globbing did not work, and the environment variables did not match
  793       the Windows 2000 configuration.
  794 
  795     VMS changes:
  796 
  797     + filename matching is case-independent, allowing majormodes to be
  798       recognized.
  799 
  800 July 2005,
  801     vile 9.5 is released.  Highlights since 9.4 (aside from bug fixes):
  802 
  803     General changes:
  804 
  805     + syntax filters can now be dynamically loaded.  This allows the
  806       main executable to be smaller, and is faster than external
  807       filters.  Loadable filters are configured using the
  808       "--with-loadable-filters" option to configure script.  This works
  809       for several platforms using gcc.
  810 
  811     + add configure script option for largefile support, change buffer
  812       size datatypes an unsigned type to allow for reading files larger
  813       than a signed value would allow.
  814 
  815     + modify historical-buffer to allow tab/back-tab to cycle through
  816       the first 9 buffers, solves the problem of seeing more than the
  817       first few possibilities on the message line.  Toggling with the
  818       repeated '_' selects the first buffer shown.
  819 
  820     + modify name-completion to allow completion of filenames containing
  821       a '$'.
  822 
  823     + relax a check in ":w" by checking if the given name differs from
  824       the current filename.  If so, do not require ":w!" to write a
  825       readonly file to a different location.  This allows one to reuse
  826       the filename history for ":w".
  827 
  828     + modify special treatment of "#" which prevents it from being
  829       shifted with ">>" by disabling that when cindent is unset.
  830 
  831     + add a few ex-commands:  nu, j!, wq!
  832 
  833     + modify statevars.c to make read/write of $title consistent, i.e.,
  834       will warn that it cannot be set in the termcap configuration.
  835 
  836     + modify [Messages] buffer so that it is only invisible, not a
  837       scratch buffer.  The latter makes it be automatically removed
  838       after viewing and closing the window.
  839 
  840     + add pattern for "ant" (Java make-program) to a few of the patterns
  841       in finderr.c
  842 
  843     + modify PromptAndSet() to allow a cancelled prompt for variable's
  844       value to store an ERROR token, which can be tested in scripts with
  845       &error.
  846 
  847     + split-out modes.rc from filters.rc to make configuration more
  848       flexible, e.g., for configure --disable-filters.
  849 
  850     + modify minubuffer editing to allow one to use ^Ga to toggle
  851       miniedit mode and append to the buffer shown from a previous
  852       command rather than having it erased.
  853 
  854     + modify name-completion for majormode names used as macro
  855       parameters to use the long name (with "mode" ending) rather than
  856       the short name, for consistency.
  857 
  858     + modify perl.xs to allow for $VILE_LIBDIR_PATH to be a list of
  859       paths.  Only add the corresponding xxx/perl names to @INC if they
  860       correspond to a real directory.
  861 
  862     + change minimum/maximum repeat counts for regular expressions from
  863       a byte to an integer.
  864 
  865     + modify interpretation of "~local", "~with", "~elsewith" and
  866       "~endwith" so they are within the normal "~if"/"~endif" hierarchy.
  867 
  868     + modify minibuffer editing to shift the display left/right as
  869       needed after doing the initial tab of a name-completion, in case
  870       that left the cursor position past the end of the line.
  871 
  872     + add experimental plugin support and example.
  873 
  874     Locale Improvements:
  875 
  876     + workaround for broken locale table on Solaris8 and Windows2000,
  877       etc., which shows tab as both as printable and a control
  878       character.  The ISO C standard states that control characters are
  879       not printable.
  880 
  881     + extend workaround for UTF-8 locale in termcap driver to translate
  882       UTF-8 input to Latin-1.
  883 
  884     + improve/extend checks for locales which correspond to 8-bit
  885       character encoding, resetting to POSIX locale (ASCII) if the
  886       nl_langinfo() function returns a value that does not look like
  887       ASCII or ISO-8859-x.  This change applies to the termcap/terminfo
  888       and X11 drivers.
  889 
  890     + show locale and encoding values in the header of the [Printable
  891       Chars] buffer.
  892 
  893     + add $encoding and $locale variables to show what vile's internal
  894       8-bit encoding and locale are set to.
  895 
  896     + turn on locale feature on win32
  897 
  898     New Commands:
  899 
  900     + add macro "which-menu" to which.rc, which shows the locations that
  901       xvile checks for a menu-file.
  902 
  903     + add macro "show-each-buffer" (file showeach.rc), which splits up
  904       the screen into equal chunks to display as many of the non-scratch
  905       buffers as possible.
  906 
  907     + add macro "which-filter" to show which locations would be checked
  908       for an external filter.  If the filter happens to be built-in,
  909       this is also noted, in the message line.
  910 
  911     + improve "eval" command, provide for mixture of functions and other
  912       tokens which are passed to the script interpreter.
  913 
  914     + modify SpellFilter macro to use the results from [Filter Messages]
  915       with the error-finder to step through the misspellings.
  916 
  917     + add macro "show-filtermsgs" to show syntax filter messages,
  918       setting the list to the error-buffer to provide simple stepping
  919       through the errors which are found.
  920 
  921     + add commands "popup-buffer" and "popdown-buffer", which open/close
  922       windows for the given buffer rather than changing the current
  923       window to show a different buffer.  The "popup-buffer" command is
  924       a wrapper for the existing logic used for help and similar
  925       commands.  The "popdown-buffer" command differs from
  926       "delete-window" by closing all windows for the given buffer.
  927 
  928     + add command "for-buffers", which performs the same command for the
  929       specified buffers.
  930 
  931     New Modes:
  932 
  933     + add "reader-policy" mode, which allows one to control whether vile
  934       will fall-back to line-by-line reading if it encounters an error.
  935 
  936     + add mode "for-buffers", which specifies whether kill-buffer (and
  937       for-buffers) command use globbing or regular expressions.
  938 
  939     + add "filtermsgs" mode, for built-in filters to report syntax
  940       errors into [Filter Messages] buffer so that one may use the error
  941       finder to locate these.
  942 
  943     + add mode "ignoresuffix", which tells vile to strip the given
  944       pattern from a filename before matching majormode suffixes against
  945       it.
  946 
  947     + add mode "showchar", which turns on a field in the modeline that
  948       tells what the character value is at the current editing position.
  949 
  950     New Variables and Functions:
  951 
  952     + add new operators to make it simpler for macros to check for
  953       features:  "&isa", "&classof" and "&mclass".
  954 
  955     + add "&match" and "&cmatch" functions for checking if a given
  956       regular expression matches a string.
  957 
  958     + add "$error-tabstop" variable, to allow changing the tabstop value
  959       used when interpreting "%C" results in the error finder.  Most
  960       programs assume 8, and that does not work well when editing
  961       buffers with other tabstops such as 4.
  962 
  963     + add "$goal-column" variable for debugging.
  964 
  965     Syntax Filters:
  966 
  967     + modify ".table" command in filters parsing to read the user's
  968       color definitions, e.g., from .vile.keywords, as is done in a
  969       ".source" command.
  970 
  971     + add a ".brief" to filters parsing, which uses "?" to match zero or
  972       all of the following characters, in constrast to ".abbrev" which
  973       uses "*" to match zero or more of the following characters.
  974 
  975     + several new majormodes, with corresponding syntax filters:
  976 
  977         + ".jsp" files are really (close to) a variety of HTML files.
  978           Add simple support for JSP in htmlfilt.l
  979         + add iss-, nsis- and ini-modes
  980         + add lispmode, to use vile-lisp-filt.
  981         + add nmakemode, for special cases such as M$'s ".dsp" files.
  982         + add syntax filter for AutoIt version 3 and majormode au3mode.
  983         + add syntax filters for iss- and ini-modes.
  984         + add vbsmode using ".vbs" suffix based on basmode.
  985 
  986     + extend suffixes for several majormodes:
  987 
  988         + add ".asp" to jspmode suffixes
  989         + add ".cls" filetype for vbmode, add symbols for Visual Basic
  990           class modules to vb.key
  991         + add ".dcl" filetype for dclmode.
  992         + add ".el" to suffixes for lispmode.
  993         + add ".hpp" to suffixes for cppmode.
  994         + add ".jad" suffix for javamode for Java Disassembler.
  995         + add ".mm" to nroff mode.
  996         + add ".ph" and ".pph" to esqlmode suffixes.
  997         + add ".shar" to shmode suffixes.
  998         + add ".termcap" and ".terminfo" suffixes for tcmode and timode
  999         + add ".tic" as a suffix for timode.
 1000         + make "TODO" a txtmode file.
 1001         + modify pattern for logmode to allow filenames such as gmake.out
 1002 
 1003     + add a mode-pathname setting for cppmode, so files under (for
 1004       example) /usr/include/g++ will be treated as C++.  Newer C++
 1005       headers have no suffixes.
 1006 
 1007     + add an "-s" option to c-filt.c, for JavaScript (to support
 1008       jsmode).  Use this to control whether to allow regular expressions
 1009       in certain cases.
 1010 
 1011     + modify ShowFormatted macro to support "-mm" macros.
 1012 
 1013     + modify spellflt.l to allow it to be used in winvile, using npopen,
 1014       as a built-in filter.
 1015 
 1016     + rewrote pascal syntax filter in lex, adding highlighting for
 1017       numbers, and TurboC, Delphi comments.
 1018 
 1019     + modify cppmode's suffixes to look for .C, .H and .CC only on
 1020       systems where filenames are case-sensitive.
 1021 
 1022     + split up the majormode "suffixes" into suffixes, mode-filename and
 1023       mode-pathname to make it clearer how to associated regular
 1024       expressions with the filename for majormodes.
 1025 
 1026     + change highlighting for misspelled words to Error class.
 1027 
 1028     + add environment variable VILE_SPELL_FILT to vile-spell-filt, to
 1029       allow overriding the compiled-in program and options used for
 1030       performing the lookup.
 1031 
 1032     + many improvements to parsing and highlighting in existing filters
 1033       (see CHANGES).
 1034 
 1035     X11 changes:
 1036 
 1037     + add --disable-imake option to configure script, from xterm.
 1038 
 1039     + modify xvile's wheelScrollAmount resource to scroll by pages if
 1040       the resource value is negative.
 1041 
 1042     + revise lookup for xvile's menu file to look for dotnames in the
 1043       current and home-directories, while non-dotnames may be found
 1044       there and in $HOME/.vile and on $startup-path.  Combine this with
 1045       changing the default for $menu-file back to ".vilemenu" as
 1046       documented rather than "vilemenu.rc".  The latter name is used in
 1047       the non-dotname locations if $menu-file is a dot-name.
 1048 
 1049     Win32 changes:
 1050 
 1051     + several changes to allow winvile to remember recent files and
 1052       folders
 1053 
 1054       + winvile remembers up to 20 of the files it has recently
 1055         opened/created (feature disabled by default).
 1056 
 1057       + winvile remembers up to 20 of the folders it has recently
 1058         visited via an implicit or explicit cd (feature disabled by
 1059         default).
 1060 
 1061       + Remembered files/folders are accessible and "replayable" from
 1062         winvile's system menu.
 1063 
 1064       + Two new modes:  recent-folders and recent-files specify maximum
 1065         number of folders/files that may appear in winvile's system
 1066         menu.  Range is 0-20; a value of 0 disables feature.
 1067 
 1068       + Two new commands:  purge-recent-folders and purge-recent-files
 1069         clear the list of folders/files that appear in winvile's system
 1070         menu.
 1071 
 1072       + modes and commands work in console mode (minimizes conflicts
 1073         when sharing a single vile.rc), but the files/folders that
 1074         console vile accesses are _not_ remembered.
 1075 
 1076     + improve the winvile resize/status window:
 1077 
 1078       + make resize window wide enough to show geometries that exceed 99
 1079         columns
 1080 
 1081       + make resize window continually center itself over the editor's
 1082         frame (NT and XP only).
 1083 
 1084     + modify dequoting of winvile's command-line in ntwinio.c to allow
 1085       for quoting to be within parameters, e.g.,
 1086 
 1087             winvile +"100" makefile
 1088 
 1089     + reenable SHIFT+INSERT in the win32 mini-buffer (for both vile.exe
 1090       and winvile.exe).  Unfortunately, the cygwin shell eats
 1091       SHIFT+INSERT for console vile (mini-buffer input only).  now, it's
 1092       once again possible to:
 1093 
 1094             $ vile somefile
 1095             /<shift+insert>     <- search for string sitting on clipboard
 1096 
 1097     + modify environment variable lookup for win32 to look in the
 1098       registry for the VILE* environment variables:
 1099 
 1100             VILEINIT
 1101             VILE_HELP_FILE
 1102             VILE_LIBDIR_PATH
 1103             VILE_STARTUP_PATH
 1104             VILE_ERROR_ABORT
 1105 
 1106       This change is made to make it more easily installable; Windows
 1107       changes to environment variables apparently do not take effect
 1108       until the machine is rebooted.  Registry changes take effect
 1109       immediately.
 1110 
 1111     + add package script for winvile using Inno Setup.
 1112 
 1113     + improve cursor display in winvile:
 1114 
 1115         + when selecting text, show I-beam cursor.
 1116 
 1117         + when selecting a movable mode line, show a double-headed,
 1118           north-south cursor.
 1119 
 1120         + when moving the mouse over a movable mode line, show a
 1121           double-headed, north-south cursor.
 1122 
 1123     + don't allow mouse capture if the left mouse button is pressed in
 1124       the area encompassing the editor's last two lines (message line
 1125       and nonmovable mode line).  Don't allow mouse capture if the left
 1126       mouse button is pressed on movable mode line.  Corrects
 1127       long-standing winvile bugs.
 1128 
 1129     + add graphical change-directory to [win]vile via new command
 1130       "wincd".  The graphical change-directory is also accessible via
 1131       winvile's system menu and right mouse popup menu.
 1132 
 1133     + ensure that files created via winvile's "Save As" and vile's ":f"
 1134       commands are remembered in winvile's "Recent Files" list.
 1135 
 1136     + make filename completion with cygwin ignore case.
 1137 
 1138     VMS changes:
 1139 
 1140     + add VMS mode record-attrs, modify logic in vms_creat() to use this
 1141       information to make the default VFC files written from DCL
 1142       editable.  Those use PRN (print file format) record attributes.
 1143 
 1144     + modify which.rc to use &pcat rather than $pathname-separator,
 1145       since the latter is ambiguous on VMS.
 1146 
 1147     + modify infer_majormode() to work with VMS pathnames.
 1148 
 1149     + correct logic for VMS pathnames so that a directory buffer will,
 1150       as on Unix, give the same buffer name as the directory leaf.
 1151 
 1152     + improve fakevms test-driver and related OPT_VMS_PATH code for VMS
 1153       pathnames, making name-completion work for VMS pathnames on Unix.
 1154 
 1155     + modify catnap() function to use IEEE floating point on IA64, since
 1156       that platform does not support F-floats.
 1157 
 1158     + modify vmsbuild.com and descrip.mms to work with IA64.
 1159 
 1160 December 2007,
 1161     vile 9.6 is released.  Highlights since 9.5 (aside from bug fixes):
 1162 
 1163     General changes:
 1164 
 1165     + implement basic support for Unicode (see Locale Improvements).
 1166 
 1167     + implement vi-style modeline, limited to setting buffer- and window-
 1168       modes, or majormodes.
 1169 
 1170     + implement patterns as line-specifiers in ex-mode.
 1171 
 1172     + revised command-line option parsing to use scripting more effectively:
 1173 
 1174       + multiple startup files are allowed.
 1175 
 1176       + most command-line options are translated to their equivalent script
 1177 	and executed, rather than saving state for the most recent of each
 1178 	option.  This makes the -s, -S, -g, -G options obsolete (but still
 1179 	accepted).
 1180 
 1181       + add "-c" option (the POSIX form of "+").
 1182 
 1183     + disallow source'ing from the current directory if the source'd file
 1184       might be writable by other users.
 1185 
 1186     + make mouse work for curses driver just like the termcap/terminfo
 1187       driver.
 1188 
 1189     + improve majormodes for complex fences by initializing the (non-string)
 1190       buffer mode values for submode groups according to the values in
 1191       the submode.  This makes ignorecase work as expected in the complex
 1192       fence matching for vbmode.
 1193 
 1194     + improve name-completion by saving/restoring the original window and
 1195       buffer when [Completions] closes, rather than the closest window.
 1196 
 1197     + add named marks for decimal digits .
 1198 
 1199     + modify ":describe-bindings" to show whether the command accepts a
 1200       range, and whether it is undoable.
 1201 
 1202     + correct comparisons used for handling bounds in regular expressions,
 1203       e.g., the "2" in "\(this\|[l-m]\)\{2\}".
 1204 
 1205     + change behavior of regular expression OR'd alternatives - only the
 1206       first match was used rather than the longest one.
 1207 
 1208     + modify "filename" shown in :show-filtermsgs to use the buffer name
 1209       if no filename is available.
 1210 
 1211     Locale Improvements:
 1212 
 1213     + several changes to provide usable Unicode support:
 1214 
 1215       + add mode percent-utf8 to set a threshold for file-encoding mode
 1216 	"auto" detection of UTF-16/UTF-32 files.
 1217 
 1218       + file-encoding mode can be set to "auto", to detect UTF-16 files,
 1219 	which are loaded as UTF-8.
 1220 
 1221       + UTF-8 files are detected based on the file-encoding mode as well.
 1222 
 1223       + Unicode values are displayed (where no locale controls) as "\uXXXX"
 1224 	in 4 hexadecimal digits.
 1225 
 1226       + add unicode-as-hex mode to override locale, forcing Unicode values
 1227 	to display as "\uXXXX".
 1228 
 1229       + for buffers with UTF-8 encoding, show illegal bytes as "\?XX".
 1230 
 1231       + Unicode values can be inserted into buffers using ^VuXXXX form.
 1232 
 1233       + modify manfilt.c to provide UTF-8 output in a UTF-8 locale.
 1234 
 1235       Limitations:
 1236 
 1237       + terminal drivers support Unicode display in varying degrees:
 1238 
 1239 	+ winvile - multicolumn characters, depends on font selection
 1240 
 1241 	+ termcap/terminfo - relies on terminal emulator, knows about
 1242 	  multicolumn characters
 1243 
 1244 	+ xvile - displays only single-column characters
 1245 
 1246 	+ curses - depends on the curses library, e.g., ncursesw
 1247 
 1248 	+ win32 console - not yet implemented
 1249 
 1250       + combining characters are not combined.
 1251 
 1252       + registers hold byte data, will show the UTF-8 encoding for data
 1253 	rather than a \uXXXX (unless the file-encoding for [Registers]
 1254 	is changed).
 1255 
 1256       + some "characters" such as the report for yanked text is still
 1257 	really a byte-count.
 1258 
 1259       + inserting a \uXXXX into the minibuffer will display the UTF-8
 1260 	encoding.
 1261 
 1262       + regular expressions are not wide-character aware.
 1263 
 1264       + UTF-16 and UTF-32 files are detected based on BOM and/or the
 1265 	contents of the first line of the file.
 1266 
 1267       + external syntax filters do not handle BOM or UTF-16, UTF-32.
 1268 
 1269     + add character classes [:ident:], [:octal:] and [:path:], and change
 1270       the association of \w and \W to [:ident:], making [:alnum:] no longer
 1271       include "_".
 1272 
 1273     + modify regexp.c so tab is not matched by \p or [[:print:]] for
 1274       consistency with POSIX regular expressions.
 1275 
 1276     New Commands:
 1277 
 1278     + add rename-other-buffer command, use that to modify spell.rc so it
 1279       can work with scratch buffers which otherwise would be lost, e.g.,
 1280       "[Help]".
 1281 
 1282     + add "describe-&functions" and "describe-$variables" commands.
 1283 
 1284     + add ":goto-percent" command.
 1285 
 1286     + add (nvi/vim) ex-commands: a!, c!, i!
 1287 
 1288     + add ":c" as alias for ":change-til" (nvi/vim).
 1289 
 1290     New Modes:
 1291 
 1292     + UTF-8 is supported via new modes "byteorder-mark" and
 1293       "file-encoding"
 1294 
 1295     + add mode xterm-fkeys, to allow termcap driver to generate
 1296       shift/control/alt modifiers for function keys.
 1297 
 1298     + add "rectangle-insert-mode".
 1299 
 1300     + add "showvariables" mode, for testing expressions used in [Variables].
 1301 
 1302     + add "echo-to-clipboard" mode for Win32 hosts:
 1303       all text selected with the mouse is automatically
 1304       copied to the Windows clipboard.
 1305 
 1306     + add "bufname-expr", "identifier-expr" and "pathname-expr" buffer modes to
 1307       provide regular expression parsing of $bufname, $identifier and $pathname
 1308       in the show-variables command as well as for the related expansion of
 1309       tokens from the cursor position.  If the expressions are empty, the code
 1310       falls through to use the corresponding older character-class parsing.
 1311       Default values are provided for each *-expr mode.
 1312 
 1313     + add cursor-tokens mode to control whether vile uses regular
 1314       expressions, character classes or a combination to obtain tokens
 1315       from the screen.
 1316 
 1317     New Variables and Functions:
 1318 
 1319     + add new symbols "$return" and "$_" which can be used to implement simple
 1320       functions .
 1321 
 1322     + add "%n" and "%N" substitutions for $title-format
 1323 
 1324     + change "%n" in modeline substitutions to use file name (pathleaf)
 1325       rather than relative path (shorten_path).  Use "%r" for the latter.
 1326 
 1327     + add "&gtmotion" function for scripts.
 1328 
 1329     + add $buf-fname-expr to show the combined bufname-expr, pathname-expr
 1330       used to interpret ^X-e.
 1331 
 1332     + improve handling of enumerated values by forcing all to lowercase,
 1333       e.g., to eliminate the need for the special case in 9.1x to handle
 1334       "TRUE" and "true".
 1335 
 1336     + update title when doing a "cd", in case it uses %r substitution.
 1337 
 1338     Syntax Filters:
 1339 
 1340     + modify syntax filters to use flex's character classes.
 1341 
 1342     + add configure check for lex's which support character classes, and
 1343       add filters/noclass.sh to work around those which do not.
 1344 
 1345     + several new majormodes, with corresponding syntax filters:
 1346 
 1347 	+ add confmode for "ordinary" config-files.
 1348 	+ add csmode (for C# ".cs" files).
 1349 	+ add csvmode for ".csv" files.
 1350 	+ add delphi mode
 1351 	+ add docbookmode
 1352 	+ add lua mode
 1353 	+ add mcrlmode for mCRL/mCRL2 modeling language.
 1354 	+ add midlmode, for Microsoft IDL.
 1355 	+ add rtfmode for RTF files.
 1356 	+ add wbtmode for WinBatch.
 1357 	+ add xpmmode
 1358 	+ add majormodes for bnf, css, php
 1359 
 1360     + extend suffixes for several majormodes:
 1361 
 1362 	+ add ".ebuild" suffix for shmode.
 1363 
 1364 	+ modify preamble for xml- and html-modes to ensure that the first
 1365 	  tag determines the type.
 1366 
 1367 	+ add output from rcshist to diffmode.
 1368 
 1369 	+ add ".vbp" files to inimode.
 1370 
 1371 	+ add ".reg" files to inimode.
 1372 
 1373 	+ add ".ddl" suffix to sqlmode.
 1374 
 1375 	+ add ".dsr" suffix to vbmode.
 1376 
 1377 	+ add several package-related suffixes to sqlmode.
 1378 
 1379     Other improvements to majormodes:
 1380 
 1381     + modify majormode inferencing to check preamble for [Standard Input]
 1382       and [Output] buffers.
 1383 
 1384     + modify preamble patterns for shell modes such as awk, etc., to allow
 1385       for programs without an absolute pathname, e.g., "#! awk".
 1386 
 1387     + improved cppmode's identifier-expr.
 1388 
 1389     + updated python keywords
 1390 
 1391     + improve bas-filt.l by not highlighting incidental matches in the
 1392       attribute section of a Visual Basic form-file.
 1393 
 1394     + add section definitions to vbmode.
 1395 
 1396     + add complex fences to vbmode.
 1397 
 1398     + improve vl-filt.l based on Verilog LRM draft
 1399 
 1400     + fill in complete list of event names for xres.key from Xt/TMParse.c
 1401 
 1402     + fix sh-filt.l for parameter substitutions containing an escaped
 1403       quote, e.g.,
 1404 	    VERSION=${VERSION#*VERSION \"}
 1405 	    VERSION=${VERSION%\"*}
 1406 
 1407     + change htmlfilt.l to highlight character- and URI-references as
 1408       numbers to make them distinct from strings with ordinary text.
 1409 
 1410     + add "+", ",", "&", "@" and ";" to URL patterns in filters.
 1411 
 1412     + fixes for termcap syntax highlighter, i.e., tcmode:
 1413       + allow description field to be empty
 1414       + color the "|" between aliases.
 1415       + improve string- and escape-parsing
 1416 
 1417     + fixes for terminfo syntax highlighter, i.e., timode:
 1418       + allow description field to be empty
 1419       + color the "|" between aliases.
 1420       + allow aliases to contain blanks.
 1421 
 1422     + add check in m4-filt.c for unbalanced quote, show the affected area
 1423       as an error.
 1424 
 1425     + several improvements and fixes to lex-filt.l (a rewrite which
 1426       makes it very complete, however it now requires flex).
 1427 
 1428     + minor fixes to make most of the lex filters build with "old" lex,
 1429 
 1430     + make autocolor work for curses-driver, e.g., --with-screen=ncurses
 1431 
 1432     + improve vilefilt.l, highlighting mode names and displaying error
 1433       for unknown mode, function and state variables.
 1434 
 1435     + modify spellflt.l to chop words according to Camel-case, so
 1436       tokens such as "ChopWords" are treated by the spell checker as
 1437       multiple words.
 1438 
 1439     + modify spell- and txt-filters to allow users to add words to their
 1440       respective ".keywords" files to override the builtin highlighting.
 1441 
 1442     + make ShowFormatted macro more configurable by allowing environment
 1443       variables $VILE_NROFF_FILT and $VILE_TABLE_FILT to override the
 1444       choice of programs therein.
 1445 
 1446     X11 changes:
 1447 
 1448     + add -class option to xvile.
 1449 
 1450     + make cursor-adjustment after paste in xvile dependent on whether the
 1451       pasted text ended with a newline.
 1452 
 1453     Win32 changes:
 1454 
 1455     + change winvile's registry subkey for recent-folders and recent-files
 1456       to match environment variable settings from 9.4r, e.g., change
 1457 	    "Software\winvile\MRUFiles"
 1458       to
 1459 	    "Software\VI Like Emacs\MRUFiles"
 1460 
 1461     + modify winvile's command-line parsing, adding "-i" option to perform
 1462       the case used for "Send To": use the part of the command line after
 1463       options as the filename and change working directory to match.
 1464 
 1465     + improve paste-performance in winvile by passing whole-line chunks
 1466       to the insert-function.
 1467 
 1468     + improve repainting in winvile while processing external command.
 1469       also modify keyboard handling to provide type-ahead while processing
 1470       external command.
 1471 
 1472     + correct order of evaluation from 9.4w when setting record-separator,
 1473       which was setting "crlf" ending temporarily when computing the buffer
 1474       size, even when "lf" was intended.  That would cause an immediate
 1475       write from winvile (without change) for a buffer to write too many
 1476       characters.
 1477 
 1478     + add a character-class check to find_b_file() to prevent names such
 1479       as "<vile.1>" from being canonicalized into "vile.1" on win32 via
 1480       FindFirstFile().  This fixes a problem where ^X-n would sometimes
 1481       display the wrong buffer.
 1482 
 1483     + add shifted-cursor-key bindings for winvile, like xterm.
 1484 
 1485     + add KEY_xxx definitions to OS/2 and Win32 drivers, defining up to
 1486       KEY_F35 for the former and KEY_F24 for the latter .
 1487 
 1488     + add &pquote in manpage.rc, to allow it to format html output when
 1489       vile-manfilt, etc., reside in directories containing spaces in their
 1490       name.
 1491 
 1492     + correct check of return of ffread() in spellflt.l's workaround for
 1493       platforms such as win32 which have no usable popen().  That made
 1494       spelling checks require two ^X-i presses.
 1495 
 1496     + modify ntwinio.c to invoke build_recent_file_and_folder_menus() in
 1497       the WM_INITMENUPOPUP event rather than WM_SYSCOMMAND.  This makes
 1498       winvile initialize the recent-folders and recent-files if one uses a
 1499       right-click on the title of the window.
 1500 
 1501     + modify spell filter so that it can get VILE_SPELL_FILT from the
 1502       registry on win32.
 1503 
 1504     + improved winvile's "flash".
 1505 
 1506     + fixes for 64-bit warnings of Visual Studio .NET 2003
 1507 
 1508     + modify wvwrap.exe to work with pathnames containing "$", "&" and "'".
 1509 
 1510     + improve winvile.iss (Inno Setup):
 1511       + use values in patchlev.h to set the package version information.
 1512       + add context menu and Send To shortcuts
 1513       + install the keyword files
 1514 
 1515     VMS changes:
 1516 
 1517     + minor build-fixes for VMS:
 1518 
 1519       + modify vmsbuild.com to simplify workaround for broken MMS 3.8
 1520 
 1521       + provide dummy variables for xvile to reflect modularization changes
 1522 	with respect to vmsvt.c
 1523 
 1524     + move VMS-specific code from termio.c to vmsvt.c
 1525 
 1526     Other portability:
 1527 
 1528     + use va_copy() in dofmt() to work with Linux on powerpc
 1529 
 1530     + modify configure script to omit lex-filt.l from build if lex is not
 1531       really flex, since the tables are too large for the older program.
 1532 
 1533     + improve os2vio.c, adding a check to distinguish between fullscreen
 1534       and VIO to allow using bright background colors in the latter .
 1535 
 1536     + modified regexp.c, add headers vl_regex.h, vl_alloc.h and vl_ctype.h
 1537       to allow it to be easily built outside vile .
 1538 
 1539     + add KEY_BackTab to the output of show-key-names
 1540 
 1541     + fix kcod2prc() so that a shifted-tab is converted to "Shift+^I"
 1542       rather than emitting a literal tab in the result.
 1543 
 1544     Performance:
 1545 
 1546     + modify the symbol-table lookup in filters.c to use tsearch() when
 1547       available.  For an 8Mb rtf file this improved performance by about
 1548       a factor of two (on Linux - Visual C++ has no tsearch).
 1549 
 1550     + use new module blist (binary search of lists) to reduce linear
 1551       searches in the places where btree is not already used.
 1552 
 1553     + add configure check for getc_unlocked(), putc_unlocked() and
 1554       tsearch() to use in performance improvements for syntax filters.
 1555 
 1556 -------------------------------
 1557 $Header: /usr/build/vile/vile/RCS/README,v 1.100 2007/12/28 03:22:22 tom Exp $
 1558 -------------------------------