1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913
|
<HTML><HEAD>
<TITLE>README.html file for elvis 2.1i-beta</TITLE>
<META name="description" content="Quick intro to elvis 2.1g-alpha, with links to source code and binaries">
<META name="keywords" content="vi, elvis, unix, linux, msdos, win32, windows95 windowsNT, nt, editor, source">
</HEAD><BODY>
<STRONG>CONTENTS</STRONG>
<MENU>
<LI><A HREF="#thisfile">1. ABOUT THIS FILE</A>
<LI><A HREF="#new">2. RECENT CHANGES</A>
<MENU>
<LI><A HREF="#2.1i">Between 2.1h-beta and 2.1i-beta</A>
<LI><A HREF="#2.1h">Between 2.1g-beta and 2.1h-beta</A>
<LI><A HREF="#2.1g">Between 2.1f-alpha and 2.1g-beta</A>
<LI><A HREF="#2.1f">Between 2.1e-alpha and 2.1f-alpha</A>
<LI><A HREF="#2.1e">Between 2.1d-alpha and 2.1e-alpha</A>
<LI><A HREF="#2.1d">Between 2.1c-alpha and 2.1d-alpha</A>
<LI><A HREF="#2.1c">Between 2.1b-alpha and 2.1c-alpha</A>
<LI><A HREF="#2.1b">Between 2.1a-alpha and 2.1b-alpha</A>
<LI><A HREF="#2.1a">Between 2.0 and 2.1a-alpha</A>
</MENU>
<LI><A HREF="#future">3. FUTURE PLANS</A>
<LI><A HREF="#links">4. LINKS TO RELATED FILES</A>
</MENU>
<hr>
<H1><A NAME="thisfile"></A>1. ABOUT THIS FILE</H1>
This file is written in the HTML markup language.
You can view it with any WWW viewer, such as Netscape.
You can also use elvis 2.1i-beta to view it; this version of elvis
has the ability to view HTML documents, and print them.
<P>This file has many hypertext links.
Use them!
If you're using elvis 2.1i-beta to browse this file, then hypertextual
references will appear as underlined text.
(Except on color PCs;
since color video cards don't support underlining,
hypertextual references will be colored -- white on red, by default.)
To follow the hypertext link, move the cursor onto the underlined
text and press (Enter).
To go back, press (Control-T).
The (Tab) key moves the cursor forward to the next hypertext reference.
<P>If elvis 2.1i-beta doesn't automatically start up in HTML mode when you view this file,
then you'll need to force it into HTML mode by giving the command
"<code>:display html</code>".
<H1><a name="new"></a>2. RECENT CHANGES</H1>
The following is a summary of changes made since the release of elvis 2.0.
For a more detailed (but cryptic) list, see the "BUGS" file included in the
source and binary distribution archives.
<H2><a name="2.1i"></a>Changes between 2.1h-beta and 2.1i-beta</H2>
Well, I broke my own rule this time. Even though elvis is in beta-test, there
are some significant new features in this update for OS/2 and MS-DOS users.
Other than that, most of the changes are bug fixes, portability enhancements,
or standards conformance tweaks.
<DL>
<DT>OS/2 support
<DD>Elvis can now be compiled on OS/2 as a native program -- you aren't stuck
using the MS-DOS version anymore! Currently it only runs as a text-mode
program using the "vio" interface, which looks and acts a lot like the
termcap interface for other operating systems. A graphical version, based
on Presentation Manager, is not yet available.
<DT>More free memory under MS-DOS
<DD>Elvis now uses Thomas Wagner's "exec 3.3b" functions to swap itself out
to EMS/XMS memory or a temporary file, while it runs any external programs.
Typically, only about 2K bytes remain resident. This makes a <em>huge</em>
difference -- DOS users can finally run a compiler from within elvis!
<P>Since elvis doesn't have to conserve memory quite so much, most of
the features that had to be disabled in previous versions are now enabled.
Also, the default block size has been increased from 512 bytes to 1024 bytes;
this should make elvis run faster.
<DT>Regular expressions
<DD>In regular expressions, some problems with character classes were fixed.
Character classes are symbols such as <CODE>[:alpha:]</CODE> which appear
inside <CODE>[...]</CODE> metacharacters.
<P>Also, there were problems parsing a / character that appeared as part of
a character list inside <CODE>[...]</CODE> metacharacters. That's fixed now
too.
<DT>X11 detection
<DD>In addition to checking the value of the TERM environment variable for
a known X terminal emulator, elvis now checks for the existence of WINDOWID.
This will usually allow elvis to automatically select the "x11" user interface
even if you start it from a terminal emulator that isn't known to elvis.
However, when starting elvis from a menu (e.g., from the window manager), you
will still need an explicit "-Gx11" flag.
<DT>Error logging
<DD>When elvis is invoked with "-VVV", it writes debugging information to
stdout and stderr. However, Windows95 and WindowsNT discard anything written
to stdout or stderr by a graphical program, which made WinElvis configuration
problems hard to diagnose. So I added a "-o logfile" argument which redirects
that information out to a file.
<DT>Documentation
<DD>Many typos in the online manual have been fixed.
Unclear verbage has been revised.
Errors have been corrected.
Many broken hypertext links have been fixed.
The discussion of character classes in the "Regular expression" chapter has
been expanded.
In the "Ex commands" chapter, the description of file arguments has been
greatly expanded, describing all of the special characters you can use in
file names.
The new OS/2 port is discussed.
<DT>Miscellany
<DD>The convention for extended tags has been revised again; elvis and its
related programs have been tweaked to use the new convention.
If an expression uses $VARIABLE and there is no environment variable with a
case-sensitive matching name, then elvis tries the lowercase equivelent,
$variable.
Some problems with single-line aliases were fixed.
Lots of little bugs have been fixed, some of which could have caused
elvis to crash.
</DL>
<H2><a name="2.1h"></a>Changes between 2.1g-beta and 2.1h-beta</H2>
Elvis is now in beta-test, so no big new features will be added until
after the official 2.1 release. Consequently, all of the changes between
2.1g-beta and 2.1h-beta are bug fixes and documentation updates.
The following is a list of bugs fixed:
<DL>
<DT>The X11 User Interface
<DD>Elvis was miscalculating the size of the window, so that its requested
window size wasn't equal to the base size plus an integer times the increment
size. When this happened, some window managers tried to force elvis to resize
the window, at which point elvis would miscalculate the size again, resulting
in a loop. This loop had no visible effects, but it did burn CPU cycles.
This is now fixed.
<P>In a related problem, if two configure events for different sizes happened
to be in the message queue, then would try to adjust to the first configure
event and and force the window to its miscalculated size before handling the
second queued configure event. This resulted in an endless loop in which
elvis cycled between two or more different window sizes. Fixing the
miscalculation described in the previous paragraph reduced the chance that
two configure events could be queued, but it didn't eliminate the chance.
Consequently, elvis will now try to detect multiple configure events and
ignore all but the last. This should solve the problem. It also has the
unfortunate side-effect that if you manually resize the window rapidly then
elvis may wait a while before responding.
<p>The XGetInputFocus() function is now assumed to return a void value.
In previous versions of X it returned a success indicator; elvis was testing
that value, but it didn't really need to and the test was interfering with
X on some platforms.
<p>Modifiers on non-US keyboards weren't working correctly. I took a stab
at fixing this one, but since I don't have a non-US keyboard I can't really
tell if it works. (What's the German phrase for "Cross your fingers"?)
Anyway, it still works great for US keyboards, so apparently I didn't break
anything.
<DT>The Graphical WIN32 User Interface
<DD>When dropping a file into elvis, the special characters weren't being
quoted. This prevented elvis from accepting files whose names contained
spaces, etc. This should be fixed now.
<DT>Compatibility Problems
<DD>In osunix/tcaposix.h, the sigaction() calls don't use sa_restorer anymore
because it is obsolete and not universally supported.
<P>In osunix/osnet.c, the function netread() tried to return -1 to indicate
an error. It should return False.
<P>Problems remained with terminals that support dim text but not bright text
(the md/me/mh termcap attributes). Hopefully this is now fixed.
<P>The "configure" script has been patched to support FreeBSD.
<DT>Obscure features
<DD>The [charlist] notation in regular expressions didn't allow ] to be
included in a regexp. It should be allowed as the first character, or after
an initial ^ character for negating the list, or after a - as the end of a
range. Now it is!
<P>The backslash changes for aliases seemed to break backslash handling
for commands like...
<pre> g/foo/a\
one\
two</pre>
... which suddenly started adding an extra blank line. This is now fixed.
<P>In ex mode if you hit <Enter> at the end of a file, elvis used to say
"bad delta". Now it gives a better error message, "no more lines".
<P>The "tags" option needs to support a notation for "look in the directory
of the current file". Elvis now allows you to say "./tags" to denote that.
<P>After a <L command, elvis gave the message "15 lines NULLed". Now it will
correctly say "15 lines <ed".
<P>Added a dummy "redraw" option.
<P>Improved the entry in "elvis.syn" that describes HTML highlighting. Now
it includes all tags in HTML 3.2, and most of the parameters as well.
<P>When the "number" option is set, clicking the mouse would set the
preferred column to the wrong value; if you clicked and then hit j/k,
the cursor jumped to a different column. This is fixed.
<P>A crash was reported in the "tex" display mode. I suspect this was caused
by overflow when elvis encountered a very long token. I have now gone through
that code and ensured that elvis always detects token buffer overflow and
handles it gracefully.
<P>The hacked ctags program couldn't quite handle derived classes:
"class foo: public bar {...}" should
generate an entry for "foo" and ignore "bar".
I've managed to fix this particular bug, but others remain.
<DT>Changes to the Manual
<DD>The use of multiple -V flags was never explained. Now the "Sessions..."
chapter describes it at the top of the "Initialization" section.
<P>Due to memory constraints, the DOS version is missing some features.
Notes have been added to the manual where necessary to warn DOS users when
features about to be discussed are unavailable to them.
<P>The online manual title said "elvis 2.0" -- I changed to "2.1".
<P>I fixed a reference to "14.x" which should actually read "16.x".
<P>The "Tips" chapter of the manual has a new section that discusses
how to make elvis run faster.
<P>I added a paragraph to the manual describing how to embed ']' and '-'
characters in a character list in a regular expression.
</DL>
<H2><a name="2.1g"></a>Changes between 2.1f-alpha and 2.1g-beta</H2>
<DL>
<DT>In the "x11" interface
<DD>The bug which intermittently prevented the scrollbar's "down" button
from being drawn.
Another bug has been fixed which caused the toolbar to be drawn incorrectly
on some systems, notably AIX.
Changed the name of the "scrollbar" option to "xscrollbar", to avoid
a clash with WinElvis's "scrollbar" option.
<P>Added a pushpin to the dialog's icon.
Dialog fields can be declared to be of type "locked".
The labels of the dialog's [Submit] and [Cancel] buttons can be
changed via some new options named "submit" and "cancel"; the default
values of those options are drawn from the "elvis.msg" file.
<p>Added a "-mono" command-line flag.
<DT>Some "win32" fixes...
<DD>UNC names (e.g., "\\machine\directory\file") are parsed correctly.
There was a bug which caused elvis to leave
temp files lying around; This is fixed.
<P>The "windows" user interface is now described in the online manual.
In WinElvis, the names of some options have changed, in order to avoid
clashes with X11 option names (which shared the same names, although
they have different meanings). Specifically, "normalfont" was changed
to "normalstyle", "boldfont" to "boldstyle", and so on.
<P>WinElvis now supports -Gquit, so you can print elvis' files using
lptype=windows.
<P>The text-mode version now allows you to resize the console buffer by
giving the command ":set ttyrows=... ttycolumns=...".
Text-mode elvis can now read from external programs again (":r !cmd").
<DT>Some tag enhancements...
<DD>In the <code>:ta</code> command, you can now quote special characters
by preceeding them with a backslash. The tag search code has been extended
to support unsorted tags files, if "!_TAG_FILE_SORTED 0" appears near the
start of the tags file.
There are also new "tagprg" and "tagprgonce" options, for running
an external tag search program. With suitable wrappers, this allows
you to use CSCOPE or Shigio Yamaguchi's GLOBAL program for tags.
<P>The default behavior of "ctags" has changed. If you invoke it without
any flags, it assumes it should use the "-s -t -v -h" flags.
<DT>In input mode...
<DD>^L doesn't redraw the screen anymore; that was causing problems
for some people's macros.
Abbreviations weren't expanded before <Return> or <Esc>;
now they are.
Rapid left-arrow in input mode could cause characters to be dropped.
(I had fixed *part* of that last bug before, and this should complete the job.)
<DT>A new :alias command has been added.
<DD>It uses a syntax similar to csh's alias command.
Run "<code>:help :alias</code>" for more info.
Also there are now :while/:do commands, and the { ... } notation for
grouping commands can now be nested.
<DT>Lots of little bug fixes...
<DD>"<code>:w >>foo</code>" wasn't setting the alternate file name correctly.
The "<code>:set</code>" command didn't permit trailing spaces after the last name=value clause.
Macros couldn't be undone in a single step; now they can.
Under MS-DOS, elvis was writing each output character twice, and
mouse selections didn't look right when using ANSI.SYS.
The saveregexp option wasn't saving the replacement text.
Long cursor movements didn't always center the cursor correctly.
Large "<code>:copy</code>" commands didn't work right.
The syntax-coloring mode's keyword table was too small to handle PERL.
The Linux console version didn't save the shell prompt's screen colors.
</DL>
<H2><a name="2.1f"></a>Changes between 2.1e-alpha and 2.1f-alpha</H2>
<DL>
<DT>Changes to filename handling
<DD>Under some circumstances a leading backslash was removed from file names;
this has been fixed. Also, file name completion (the <Tab> key) has
been modified insert a backslash before special characters, such as spaces,
to "quote" them so they're treated as normal characters. Win32 menu items
which prompt for a file name will do this too.
<DT>The :mkexrc command is slightly more powerful
<DD>Previously :mkexrc couldn't store window-specific GUI-dependent options.
This was siginificant in WinElvis, because the font is a window-specific
option. Now :mkexrc will store the values for the current window; those
values will then be the defaults for all windows the next time you start
elvis. The generic window-specific options and colors already worked this
way.
<P>Also, WinElvis' "Options->Save" menu item will now add a "!" to the :mkexrc
command line, so it can overwrite any existing <code>elvis.rc</code> file.
<dt>Clipboard
<dd>The GUI's cut buffer is now referred to as "^ (doublequote carat)
regardless of whether you're cutting or pasting. Previously the buffer was
referred to as "> when cutting, or "< when pasting, but that seemed
counterintuitive to a lot of people.
<dt>Comments in "syntax" mode
<dd>Single-line comments are now marked with keywords, rather than simple
one- or two-character strings. Since one- or two-character strings can be
defined as keywords, this shouldn't cause any problems. It does, however,
offer a lot of interesting new possibilities.
<p>You can use actual words to start comments, such as "rem" in DOS batch
files. You can make comments appear in any font, not just the one defined
by the commentfont option. You can configure multiple keywords for starting
comments.
<p>Also, the syntax mode now allows you to restrict certain keywords to
a particular column, via an "anchor" line in the description. For example,
if your elvis.syn file contains the line "<code>anchor 1 BEGIN END</code>" then
the BEGIN and END words will only be keywords if they appear at the start
of a line.
<dt>The X11 user interface
<dd>The text cursor now defaults to the solid "xor" shape, instead of the
"hollow" shape. It reverts to the "hollow" shape whenever the window looses
input focus, just like an xterm window.
<p>You can now attach configurable dialog windows to any toolbar button.
The dialogs allow you to edit some options before the toolbar's ex
command is run.
<dt>Text-mode Win32 improvements
<dd>Under Win32, the termcap interface runs much faster, and all of the display
bugs have been fixed (knock on wood). Also, you can now access Windows'
clipboard via the "^ cut buffer.
<dt>Scripts
<dd>The POSIX "-s" flag (and archaic "-" flag) for running scripts is now
supported. The flag for setting the "safer" option has been changed to
"-S" (uppercase) to avoid a name clash.
</DL>
<H2><a name="2.1e"></a>Changes between 2.1d-alpha and 2.1e-alpha</H2>
<DL>
<DT>The tag file format has been tweaked.
<DD>The authors of Vim, Elvis, and Exuberant Ctags are working together
to define a new standard for tags files.
A new standard is needed because the old format doesn't work well for C++.
The new tags format is almost identical the extended tags that were introduced
in elvis 2.1b; in fact,
2.1e should still be able to read tags files created for 2.1b through 2.1d.
<DT>The Win32 graphical interface has been improved.
<DD>Most of the changes were bug fixes. Some of the more visible ones are:
<UL>
<LI>When the mouse pointer is moved into the left margin (the area used
for selecting whole lines) the cursor shape changes.
<LI>Italic characters were always shifted slightly to the left. This was
done to compensate for the skewing that Win32 uses to simulate italics.
However, if you disabled the skewing by ":set italicfont=n" then elvis
still shifted them needlessly. Now it won't shift italics if italics
are displayed as normal unskewed characters.
</UL>
<DT>The X11 graphical interface has been improved.
<DD>Many improvements were added in 2.1d-alpha. Here are some that were
added after that:
<UL>
<LI>Changed the X resources so that toolbar buttons now have separate
foreground and background resources. Previously, the button face was
drawn in the scrollbar foreground, and th button label was drawn in
the normal text foreground; this foreground-on-foreground combination
used to show as solid black on some workstations.
<LI>The "-client" option should be smart enough now to ignore elvis servers
which are running on a different host, or have a different user ID.
</UL>
<DT>Lots of little GUI-independent bugs have been fixed.
<DD>These are the main reason for 2.1e-alpha!
<UL>
<LI>The handling of backslashes in filenames has changed slightly, so that
fewer MS-DOS file names will cause problems. Now a backslash is only
seen as a quote when it precedes a dollar sign, parenthesis, or another
backslash.
<LI>The :lpr command now supports appending. E.g., ":lp >>foo".
<LI>If the last line didn't end with a newline, and you did a Y on the
last line, then elvis used to go into an infinite loop. Not any more!
<LI>Newly created windows now acquire input focus immediately. Previously
they didn't acquire input focus until the next keystroke was read; this
prevented macros from creating new files and doing something in them.
<LI>The :s command (with no args) should repeat the previous :s/old/new/
command, just like :&. It didn't, but now it does.
<LI>Some cut buffer bugs have been fixed. This also affects cut&paste
between applications.
<LI>The "Hit <Enter> to continue" prompt is disabled during the execution
of a macro.
<LI>Fixed a minor bug in the handing of the scrollbar (for any graphical
interface) which caused the screen to jump slightly as soon as you
started to move the scrollbar's thumb.
<LI>The :close command was dangerous. It could conceivably close the last
window even if there were unsaved buffers. This has been fixed.
<LI>The :only command caused core dumps on some systems.
<LI>The markup display modes (html, man, and tex) used to widow punctuation
that occurred near the end of the line. This shouldn't happen any more.
</UL>
</DL>
<H2><A name="2.1d"></A>Changes between 2.1c-alpha and 2.1d-alpha</H2>
<DL>
<DT>Network I/O has been improved several ways.
<DD>These affect the use of elvis as a Web browser.
<UL>
<LI>FTP protocol is supported, in addition to HTTP
<LI>The FTP protocol can be configured to access selected sites using
your own account, instead of the default anonymous access.
<LI>Elvis can be configured to use HTTP proxies, either to reach past a
firewall or to use protocols which elvis doesn't support directly.
<LI>While a file is being received, elvis displays the total number of
expected, in addition to the number of bytes received so far.
<LI>Directories can be read via FTP. They are converted into HTML
documents so you can use elvis as a remote file browser.
</UL>
<P>By the way, the combined FTP/HTTP network access adds only about 8k bytes
to the executable.
If you want to reuse the code for your own project, grab url.c, http.c, ftp.c,
os*/osnet.c, and parts of elvis.h, elvisio.h and opsys.h.
<DT>The X11 interface has been slightly improved.
<DD>These are in addition to the 2.1e-alpha changes, listed above.
<UL>
<LI>The "x11" initialization has been split into a separate "elvis.x11"
configuration file. This was done mostly to keep "elvis.ini" small.
<LI>An optional status bar has been added. It is enabled by default; to
disable it, give the command "set nostatusbar".
<LI>Toolbar buttons can now be assigned one-line descriptions. These are
displayed on the statusbar while you hold the toolbar button down.
<LI>A weird bug has been fixed which caused elvis to continually adjust
the size of the window.
</UL>
</DL>
<h2><a name="2.1c"></a>Between 2.1b-alpha and 2.1c-alpha</h2>
<dl>
<dt>The "x11" user interface has been reorganized.
<dd>The "x11" interface began as a quick hack;
I intended to replace it with the REAL "x11" interface fairly quickly.
But I never got around to that, so now I've decided to clean up the hack,
and give it a future.
<p>Most of the changes merely affect the internal organization of the
interface, with the intent of making it easier to add new features
such as a menubar in the future.
However, some of the changes are detectable now:
<ul>
<li>If the toolbar has too many buttons to fit on a single row, then
the toolbar will wrap onto multiple rows.
<li>The gaps between groups of related buttons will now be expanded,
so the button groups are spread across the whole width of the
toolbar. Also, a tiny dimple is drawn in each gap.
<li>The toolbar buttons now perform their assigned action when you
<em>release</em> the mouse button.
Previously, they acted when you <em>pressed</em>
the mouse button, but that caused problems with the [Quit] button.
<li>If no toolbar buttons are defined, then the toolbar is always hidden,
even if the "toolbar" option is set.
<li>Some of the X11 resources have changed names, to avoid clashes.
<li>The scrollbar's position is now configurable. A new "scrollbar"
option can be set to one of {<code>left right none</code>} to control this.
<li>Many x11 options which used to be locked after initialization,
can now be changed at any time. You can switch fonts, or change
the scrollbar's width or position, with a simple ":<code>set</code>"
command.
</ul>
<dt>Elvis can now fetch files via HTTP.
<dd>In addition to being a really good editor,
elvis can also be used as a crappy Web browser...
currently under Unix only, but it should be fairly easy to add to Win32 as well.
<p>I implemented this partly just to see how hard it would be.
It took less than one day, and added maybe 4k bytes of code!
It was worth the effort.
<p>I added a new section to the "Tips" chapter of the online manual,
describing elvis' Web facilities. Basically, it boils down to:
<ul>
<li>If a file name starts with "http:", elvis loads it via network using HTTP.
For example...
<pre>:e http://www.cs.vu.nl/~tmgil/vi.html</pre>
...will load the Vi Lovers' Home Page.
<li>Other network protocols are not supported yet. FTP is greatly
missed, and is a high priority for me.
<li>I tweaked the "html" display mode to work better for other
peoples' documents.
<li>It will probably never support graphics, forms, or secure
connections. Bill and Marc can relax!
</ul>
<dt>A new "locked" option has been added.
<dd>It prevents practically all types of changes to a buffer.
By default, it is set for some of the more delicate internal buffers.
The default "elvis.arf" file also sets them for Web pages which were read via
the network, just as a convenience:
You probably don't want to edit them anyway.
<p>The "locked" option is totally separate from the "readonly" option.
<dt>A new "lpnumber" option has been added.
<dd> It causes printouts to have line numbers, just like the "number"
option does for windows.
Also, for the <code>normal</code> and <code>syntax</code> display modes, it causes
each page to include a header which shows the file name, page number, and
date/time that the printout was created.
<dt>A new "tex" display mode has been added.
<dd>Don't get excited, it isn't that good.
This is just a two-day hack by somebody (me!) who doesn't use TeX very much.
Obviously I expect TeX folks to find it useful...
but I'm worried that if I say anything good about it, I'll get mail from
somebody saying, "I know TeX. TeX is a very good friend of mine.
And Mister Kirkendall, <em>elvis is no TeX!</em>"
<p>It shares a lot of code with the <strong>html</strong> display mode.
Consequently, it only increases the size of elvis by about 3k bytes!
<dt>The "^Wd" command is a little smarter.
<dd>The <kbd>^Wd</kbd> command toggles the display mode between the buffer's
<code>bufdisplay</code> mode, and one other mode.
Previously, that other mode was always <strong>normal</strong>,
but now it will use the <strong>syntax</strong> mode whenever appropriate.
<p>For example, if you're editing an HTML file, then <kbd>^Wd</kbd> will
toggle between the <strong>html</strong> and <strong>syntax html</strong>
display modes.
</dl>
<h2><a name="2.1b"></a>Between 2.1a-alpha and 2.1b-alpha</h2>
<dl>
<dt>Bugs
<dd>Many small bugs have been fixed. See the "BUGS" file for a detailed list.
<dt>The "showname" option
<dd>A "showname" option has been added.
When set, it causes the name of the buffer to be displayed at the bottom of
each window.
<dt>The % visual command.
<dd>The <kbd>%</kbd> visual command has been enhanced.
There is a new option, "matchchar", which stores a list of character-pairs
to be matched.
The default is <code>matchchar=()[]{}</code> which makes % act like it always has.
You might want to try <code>matchchar=()[]{}<>\"\"</code> though.
<p>Also, in the "syntax" display mode, the % command can match #if/#else/#endif
preprocessor directives.
The cursor must be on or before the '#' character for this to work.
<dt>Buffer browser
<dd>A <code>:bb</code>[<code>rowser</code>][<code>!</code>] command has been added.
It constructs an HTML document listing all of the edit buffers, with
hypertext links to each of them so you can select a buffer just by
double-clicking it.
Normally <code>:bb</code> lists the user buffers, but <code>:bb!</code> (with a !)
lists <em>all</em> buffers including elvis' internal ones.
<dt>Tags
<dd>Elvis' handling of tags has been enhanced to work better for C++.
The specific changes are:
<ul>
<li>Elvis finds <em>all</em> tags with the requested name, and moves
the cursor to the most likely match. If you immediately
request the same tag name again, then elvis moves the cursor
to the next most most likely match, and so on through all
possibilities.
<li>After a tag search, elvis tries to leave the cursor on the tag
name (not simply at the start of the line). This way,
if elvis chooses the wrong overloaded tag, you can find the
next one just by typing <kbd>^]</kbd>.
<li>The <code>ctags</code> program has been extended slightly. If invoked
with <code>-h</code> it will add some extra hints to the tags file
which should help elvis guess which overloaded tag you're
probably trying to find. This is <em>not</em> the ultimate
ctags program; this is just a quick hack to allow elvis' new
tags features to be put to the test.
<li>Elvis now requires the <code>tags</code> file to be sorted; this helps
elvis search faster. The <code>ctags</code> program has been
modified so that it will now sort the tags on all operating
systems. (Previously, the tags weren't sorted under DOS or
Win32.)
<li>Elvis remembers the hints from recent successful or failed tag
searches, and uses them to guess the likelyhood that any later
tags are the ones you're looking for.
<li>The syntax of the <code>:tag</code> command has been extended to allow
you to restrict tags which have a specific hint, or to tweak
the remembered hints that elvis uses to sort the matching tags.
<li>There is a new <code>:br</code>[<code>owse</code>] command which builds an
HTML document listing selected tags from the tags file, with
hypertext links which take you to the definition points in your
source code.
</ul>
<dt>X11 resources
<dd>The "x11" user interface can now read some of its defaults from the
X resources database.
The resource values are used as defaults for options or color table entries.
The supported resources are:
<pre graphic>
.----------------------------.----------------------------------.
| Resource name | Option, default |
|----------------------------|----------------------------------|
| elvis.toolbar | toolbar, yes |
| elvis.font | normalfont, fixed |
| elvis.geometry | geometry, 80x34 |
| elvis.foreground | (normal foreground), black |
| elvis.background | (normal background), white |
| elvis.dblclicktime | dblclicktime, 4 |
| elvis.control.font | controlfont, variable |
| elvis.cursor.foreground | (cursor foreground), red |
| elvis.cursor.selected | (cursor background), red |
| elvis.cursor.blinktime | blinktime, 3 |
| elvis.scrollbar.foreground | (scrollbar foreground), gray75 |
| elvis.scrollbar.background | (scrollbar background), gray60 |
| elvis.scrollbar.width | scrollbarwidth, 14 |
| elvis.scrollbar.repeat | scrollbartime, 3 |
^----------------------------^----------------------------------^
</pre>
In each case, if your .exrc file sets the option or color, then the value
from the resources database is ignored.
All times are given in units of 0.1 second.
<dt>:only and ^Wo
<dd>The <code>:on[ly]</code> and <kbd>^Wo</kbd> commands have been added.
They close all windows except the current one.
<dt>:buffer <var>name</var>
<dd>When <code>:buffer</code> is given a buffer name as an argument, it will now
cause the current window to switch to the named buffer.
(Previously, <code>:buffer</code> <var>name</var> would simply rename the current
buffer.)
<dt>Numbered buffers
<dd>Each buffer now has a bufid option.
User buffers' bufid options are assigned consecutive numbers, and you can use
those numbers in place of a buffer name.
For example, if your first file is named "foo.c", then your first buffer will
be named "foo.c" as well.
Since it is your first, its bufid will be 1.
You can then refer to the buffer by name (<code>:(foo.c)%p</code>) or number
(<code>:(1)%p</code>).
Also, anywhere that elvis is expecting a filename, elvis will replace
"<code>#</code><var>n</var>" with the filename of the buffer whose
bufid=<var>n</var>.
You can use <code>:buffer</code> (with no arguments) to list all user buffers'
names and bufid values.
<dt>The untar program
<dd>On POSIX-compliant systems, the <code>untar</code> program can now restore
timestamps and permissions of the files that it extracts.
These features are enabled when untar.c is compiled with _POSIX_SOURCE defined.
<p><em>Note:</em> The <code>untar</code> program isn't really part of the elvis
package.
<dt>Binary and text conversions
<dd>The "binary" option has been deleted.
It is replaced by the following:
<ul>
<li><strong>fileeol(</strong><var>filename</var><strong>)</strong> is a
new function which tries to guess a file's format by examining its first
hundred bytes.
<li><strong>readeol</strong> is a new option which is used to determine
what conversions are used when reading a file.
<li><strong>writeeol</strong> is a new option which influences the conversions
that elvis performs when writing a file.
</ul>
The default configuration handles binary, unix text, dos text, and mac text
files automatically.
<dt>DOS Mouse
<dd>The MS-DOS port now supports the mouse.
The DOS port is a text-mode application, and you must have a mouse driver
installed and running for the mouse to work.
The mouse behaves the same as it does in the Win32 text-mode port;
they are both subsets of the X11 mouse support.
Specifically...
<ul>
<li>Clicking the left button cancels any pending visible selection and
moves the mouse.
<li>Clicking the right button moves the mouse and extends any pending
visible selection to the cursor's to new location.
<li>Dragging the mouse with the left button pressed selects characters,
like the <kbd>v</kbd> command.
<li>Dragging the mouse with the right button pressed selects whole lines,
like the <kbd>V</kbd> command.
<li>Dragging the mouse with the middle button pressed selects a rectangular
area, like the <kbd>^V</kbd> command.
If you have a two-button mouse, you can achieve the same effect by
dragging the mouse with <em>both</em> buttons pressed.
<li>Double-clicking the left button on a word performs a tag search on that
word, like the <kbd>^]</kbd> command.
<li>Double-clicking the right button anywhere will return from a tag search,
like the <kbd>^T</kbd> command.
</ul>
</dl>
<h2><a name="2.1a"></a>Between 2.0 and 2.1a-alpha</h2>
<ul>
<dt>Bugs
<dd>Many small bugs have been fixed. See the "BUGS" file for a detailed list.
<dt>WinTags
<dd>Serge has also provided a "WinTags.exe" version of ctags.
The only change is that WinTags shows a feedback window so you can see which
file it is currently scanning.
Unfortunately, I have an ancient version of Visual C++ and this window isn't
updated correctly.
I intend to update my Visual C++ as soon as possible, which should solve that
problem.
<dt>Default values of options
<dd>The options listed by ":set" (with no arguments) are now chosen in a
slightly different way.
Immediately after executing the "elvis.ini" script, elvis stores the value
of each option.
Later, setting that option to a different value will set a flag allowing that
option to be output by ":set"; setting it back to its original value will
reset that flag.
This is closer to the POSIX definition of how ":set" should behave.
<dt>X11 "textcursor" option
<dd>The "x11" user interface has a new option: <em>textcursor</em>.
It can be set to one of <strong>hollow, opaque,</strong> or <strong>xor</strong>
to control how the text cursor is drawn.
<dt>Syntax-coloring strings
<dd>The syntax-coloring display mode, "syntax", has been extended slightly
to allow it to handle languages whose string contants don't require a backslash
before an embedded newline.
This allows elvis to do a better job of coloring Perl source code.
<dt>Graphical Win32 interface
<dd>A graphical interface has been added for Win32.
Microsoft doesn't allow a single executable to support both Windows and console
I/O, so the graphical version of elvis resides in a separate executable, named
"WinElvis.exe".
After starting WinElvis, you can give the command ":set guiwin" to see the
names and values of the new configuration options.
<p> The Win32 graphical interface was written by
<a href="mailto:serge_pirotte@gtech.com">Serge Pirotte</a>.
If you wish to report a bug which exists only in the graphical Win32 version of
elvis, then write to him.
You can also thank him, if you feel so motivated.
(Other bugs should still be reported to
<a href="mailto:kirkenda@cs.pdx.edu">Steve Kirkendall</a>.)
</dl>
<H1><a name="future"></a>3. FUTURE</H1>
Lee Johnson is working on a graphical port to OS/2.
I can't make any estimates on when it will be available.
<p>One of the biggest tasks on my list is to rewrite the ctags program
so that it will be able to parse C++ code, and (optionally) place extra
hints in the tags file so that elvis' tag heuristics can do a better job.
It should read the language descriptions from "elvis.syn", and do at least
a half-assed job of generating tags for any language described there.
I'm also toying with the idea of a statistical tags generator, but that's
still pretty nebulous at this point.
<p>I intend to add a true extension language to elvis someday, but it
won't be in 2.1.
The language interface will be general enough to support a variety of
languages. The first language supported will probably be PERL, followed
rapidly by Python and TCL.
<H1><a name="links"></a>4. LINKS TO RELATED FILES</H1>
If the main site (<a href="ftp://ftp.cs.pdx.edu/pub/elvis/unreleased/README.html">ftp.cs.pdx.edu</a>) is too slow, try the mirror site at
<a href="ftp://ftp.false.com/pub/elvis/unreleased/README.html">
ftp.false.com</a>.
<p>Most of the following are binary files, not text or HTML files,
so you can't view then with your Web browser.
But you can use your browser to download the files.
For Netscape, use <Shift-Click>;
for MSIE, use <LeftClick> and "download".
<dl>
<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/untar.c">untar.c</a>
<dd>This is the complete source code for "untar",
a little program which extracts files from a gzipped tar archive.
Comments near the top of "untar.c" describe how to compile and use it.
If you already have the gzip and tar utilities, then you don't need this.
<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/untardos.exe">untardos.exe</a>
<dd>This is an MS-DOS executable, produced from the above "untar.c" file.
It can also be run under Windows 3.1, in a Dos-prompt window.
For brief instructions on how to use <code>untardos,</code>
run it with no arguments.
<dt><A href="ftp://ftp.cs.pdx.edu/pub/elvis/untarw32.exe">untarw32.exe</a>
<dd>This is a Win32 executable, produced from the above "untar.c" file.
It runs under WindowsNT and Windows95.
It runs somewhat faster than the MS-DOS version.
It also supports long file names.
For brief instructions on how to use <code>untarw32,</code>
run it with no arguments, in a text-mode window.
<p><strong>NOTE:</strong>
MS-Windows95 and MS-DOS use incompatible methods for mapping long file names
to short ones.
So if you extract the files under Windows95, DOS programs won't be able to
find them with their expected names, and vice versa.
Consequently, you must use <code>untardos.exe</code> to unpack
<code>elvis-2.1i-msdos.tar.gz</code>, and <code>untarw32.exe</code> to unpack
<code>elvis-2.1i-win32.tar.gz</code>.
<dt><a href="ftp://ftp.cs.pdx.edu/pub/elvis/untaros2.exe">untaros2.exe</a>
<dd>This is an OS/2 executable, produced from the above "untar.c" file.
For brief instructions on how to use <code>untaros2,</code>
run it with no arguments.
<dt><a href="elvis-2.1i.tar.gz">elvis-2.1i.tar.gz</a>
<dd>This is a gzipped tar archive of the source code and documentation for
Elvis 2.1i-beta and its related programs.
<dt><a href="elvis-2.1i-msdos.tar.gz">elvis-2.1i-msdos.tar.gz</a>
<dd>This archive contains the documentation and MS-DOS executables
for Elvis 2.1i-beta.
<dt><a href="elvis-2.1i-win32.tar.gz">elvis-2.1i-win32.tar.gz</a>
<dd>This archive contains the documentation and Win32 executables
for Elvis 2.1i-beta.
These were compiled and tested under Windows95, but should work under
WindowsNT 3.51 (or later) as well.
<dt><a href="elvis-2.1i-os2.tar.gz">elvis-2.1i-os2.tar.gz</a>
<dd>This archive contains the documentation and OS/2 executables
for Elvis 2.1i-beta.
</dl>
</BODY></HTML>
|