The following is a list of things that have changed between elvis 1.7 and 1.8
* The version number was changed from 1.7 to 1.8.
* Many bugs were fixed; see "bugs17" for a complete list (fixed & unfixed).
The most notable are:
* Most screen update bugs are fixed. Most of ones that weren't fixed
can be avoided by ":set nooptimize". (I'm *REALLY* looking forward
to rewriting the screen update code from scratch for 2.0.)
* If you never give a :color command, then elvis will leave the
screen colors unchanged, even when you exit. I know 1.7 claimed
to do this, but in 1.8 it really works! Except under some versions
of Coherent, in which *ANY* character attribute change clobbers the
Also, the :color command now allows you to specify the "quit" colors,
just as 1.7 allowed "standout", etc.
Note: This color changing stuff is known to be flaky under Coherent
4.0. I think it'll work under 4.2 (MWC fixed the screen quirks
that are responsible) but I can't say for sure since I only have 4.0.
* A bug in the visual '@' command was fixed. This bug can be blamed
for most of elvis' incompatibility with fancy macro packages. Elvis
can now run the "Bouncing Ball", "Word Completion", and "Turing"
macros with no changes. It still can't do "Towers of Hanoi", but
I'm on the trail of that one.
* New ports, most of them untested as yet.
* OS/2: Based on Rommel's port of 1.7, this requires emx+gcc to
* AIX, HPUX: Collected some hints and tips, and made a few patches
as suggested by various people. Hopefully this will convert a
30-minute tweak session into a 10-minute tweak session for you
* Linux: I'm using linux as my development platform now, so it should
* New feature: conditional commands. Some commands set a conditional
execution flag; others examine that flag and perform commands (or not)
if the flag is set. Conditional clauses can't be nested.
* :if, :and, and :or -- change the conditional execution flag.
Each command tests for a single condition. That condition
may involve ":set" options, environment variables, termcap
values, or constants. Syntax is pretty much what you'd expect.
* :then, and :else -- execute commands conditionally, based on the
value of the conditional execution flag. The commands that follow
:then or :else, up to the end of the line, are executed or skipped.
As an example, here's part of the .exrc on my Linux system, to work around
the fact that Linux's console can handle color, but an xterm can't.
then color yellow on blue | color quit white on blue
These extensions can be disabled by added "-DNO_IF" to CFLAGS.
* New feature: File initialization script. If your home directory contains
a file named ".exfilerc" (or "EXFILE.RC" for non-UNIX systems), its contents
will be interpretted as a series of ex commands after each file is loaded.
This is handy, especially in conjunction with the :if command. You can do
things such as...
if newfile | and *.c
then %!mkskel %
* New feature: "learn mode". Elvis can record keystokes into a cut buffer.
This is handy when you want to interactively define a macro. To record
keystokes into the "a buffer, begin by typing [a. Then type any other
keystrokes -- they'll be executed as normal, plus they'll be stored in
a temporary buffer. Typing ]a will stop recording and copy the keystrokes
into the cut buffer. You can replay the keystrokes by typing @a.