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.8c-beta. * 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 screen colors. 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 compile. * 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 guys. * Linux: I'm using linux as my development platform now, so it should be trouble-free. * 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. if term="console" 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.