	This is the newfeatures file for UE3.10 with the Lancaster
modifications (preceeded by '>') added. Note that the Lancaster version
of UE3.9 had a number of differences from the original - these are not
described here.

		New Features since version 3.9
		==============================
 
***	Multiple Marks now supported

	The commands set-mark (M-<space>) and exchange-point-and-mark 
(^X^X) both now accept a numeric argument from 0 to 9 allowing up to 10
marks to be set in a buffer.  All region commands still work with mark 0
but the other marks can be used to make navigating around a complex
buffer simpler.  Also the goto-mark (M-^G) command allows you to go
to one of these marks.

***	More function key support

	Under UNIX BSD4.3, V7 SUN, XENIX and some other V5 systems
MicroEMACS can now use the TERMCAP entry of the current terminal and
decode it's function keys.  Also all function key bindings have been
renamed to make them machine independant.  The CMDFIX program/source
distributed along with MicroEMACS will allow you to automaticaly
translate old command files to the new bindings.
>
> Under UNIX, DEC VT200 keyboard is now supported via termcap. 
> Use SETENV TERM vt200, and make sure terminal is in VT200 mode.
> Keys are as follows:
>	Prev Screen/Next Screen - as expected
> 	<Find> = search-forward, <GOLD><Find> = search
>	<Macro><Find> = query-replace-string
>	<Select> = set-mark
>   	<Insert Here> = yank
>	<Remove> = kill-region, <GOLD><Remove> = copy-region
>	<Help> = Help, <GOLD><Help>= apropos, <META><Help>=Toggle fn key window
>	<Do> = execute-command, <GOLD><DO> = shell-command
>	F6 is a second GOLD key, F7 to F14 and F17-F20 can be bound as desired.
>	<F7> to <F10> Programmable as FNb to FNe
>	<F11> to <F20> Programmable as FN1 to FN0 (nb. FN5=Help, FN6= DO)
>
> UNIX version now uses TERMCAP file (with a few added fields), but I've
> made the VT100/200 keypad a special case.  If the TERMCAP entry contains
> the capability VT then the VT100 keypad code is enabled.  This saves
> a major reshuffle of the existing VT100 TERMCAP entry, and makes the VT200
> fit in more neatly. (the VT keypad is a bit of an anomaly).
>
> I've added the following key names to micro-emacs:
> The VT100/200 keypad keys generate the codes KP0-9, KP-, KP,, KP.,
> KPE (Enter) and KPa-d (PF1-PF4).  This allows for keyboards such as 
> The VT200 with both Keypads and Function keys;
> Find = FNS (think "search"), Insert Here = FNY ("yank"), Remove = FNR
> Select = FNM ("mark") for VT200.
>
> The gold key is now implemented as a prefix ("G-" in emacs key names) in the
> same way as Escape, CTRL-X etc.  Non-VT users can bind GOLD to any key.
>
> Meta works with function keys on UNIX - previously ESC-Function key
> sequences inserted rubbish in the text.

> *** Local .rc files
> After executing .emacs310rc, micro-emacs will now
> look for, and, if found,  execute the file  .uerc in the user's root
> directory.  This means that a user can make  minor customisations
> without having to take a copy of the whole of .emacs310rc 

***	Crypt algorithm much better

	Yes, we found a really bad problem in the security of the
encryption algorithm.  This has been fixed.  Set the environment variable
$oldcrypt to TRUE to read in your old encrypted file, and set it to
FALSE to write it out again with the new algorithm.

***	End-of-word

	Bending to popular demand, I added an end-of-word command which
advances to the end of the current word rather than the beginning of the
next word (as with next-word).

***	Command line switch to initialize variables

	The -i switch on the command line allows you to give environment
variables a value on the way into EMACS. For example:

	emacs -i$sres VGA <file>

	edits <file> in VGA mode on a properly equipped IBM-PC.

***	New Hooks

	added $writehook to execute macroes when writing files.
	added $exbhook to execute macro when exiting an old buffer.
	added $bufhook to execute macro when entering a new buffer.

***	Trim whitespace function

	The &trim function strips the trailing whitespace off of a user
expression.

***	Changed trim/entab/detab commands

	Now trim-line(^X^T), entab-line(^X^E), and detab-line(^X^D)
work on the current region if they have no arguments.  These commands
are now also called trim-region, entab-region and detab-region.  The
old names will hang about for a version, then disappear.

***	Foreign language text constants

	MicroEMACS may now be compiled with its internal messages in
ENGLISH, GERMAN, DUTCH, PIGLATIN, SPANISH, and FRENCH.  The $language
variable contains the name of the language of the current version.  All
command names are still in english to allow macros to be used between
versions.  Notice that the standard startup files and command files have
not been translated, thus the function key window is in english.  Only
the text messages generated by EMACS itself are translated.
>
> Some of my additions will always speak English.  I've tried writing
> programs that work in Spanish and German before and didn't enjoy it.
> (It might have helped if I knew any Spanish or German).

***	Upper/Lower case mapping

	Users can now arbitrarily reset the upper/lower case mapping
tables using the &slow and &supper functions.  For example:

	&slow "e" "E"

	causes a lower case "e" to translate to an "E" when upper
cased.  This is fairly useful in various foreign languages with
unusual and magical casing rules.

***	MicroSoft mouse support

	The MicroSOFT and compatible mice are now supported on the
IBM-PC.  Mousing commands have changed considerably and are consistent
across all supported environments.  See the reference manual's new
chapter on mousing.

***	New user input function

	&gtc allows a macro to get an EMACS command key sequence from
the user.  the resulting string is suitable for binding commands.

***	Tab variables

	$softtab can be used to cause EMACS to use spaces to tab to
multiples of $softtab using spaces.  If this is zero, EMACS will use
hard tabs.  $hardtab specifies how many columns between hard tabs.  The
default value is 8, but may be changed by the user.
>
> Changed to fit in with previous Lancaster implementation.  Each buffer
> has it's own TAB settings, set <Macro> <n> <TAB> (soft) and
> <Macro> <-n> <TAB> (hard).  The variables above can still be set, and
> allow the default settings used for new buffers to be changed.

***	New "safe" file saving

	Now MicroEMACS write all its output files to a temporary file,
then deletes the original, then renames the temp file as the original. 
This makes system crashes a lot easier to live with. (This behavior can
be toggles with the $ssave variable).  Notice that $ssave turned on
under UNIX will cause your file privledges to be reset to your current
umask.
>
> Now preserves file privileges, Note that you will
> have to turn this feature off when editing files in a directory to
> which you only have read access.
>

>***	Automatic file backup
>
>	This is a modified form of "safe saving" which leaves the original
> file intact but renamed.  (under BSD UNIX ",bak" is appended to the filename,
> for systems with shorter file names, the file name extension is replaced
> with ".BAK".
> This option is turned on/of by setting the variable $backup TRUE or FALSE.
> Again, it requires write access to the directory.  This is of dubious use
> in ASAVE mode...
>
***	Horizontal window scrolling

	Now, by default, when you go beyond the 80th column of the
screen, the entire current window scrolls to the left.  This makes
editing wide tables much more pleasant.  $hscroll toggles between this
and the old (single line scroll) behavior.  $fcol sets what text column
is in the first column of the screen. $hjump determines how many
characters the screen scrolls right or left.

***	More Debugging features

	The ^XG (display) command prompts the user for a variable name
and displays its value (as opposed to execute-command write-message
$var). The describe-variables command lists all the current environmental
and user variables and their contents in a buffer.

***	Named macroes are now bindable

	The macro-to-key (^X^K) command allows you to bind a keystroke
to a named function.  Very usefull, this lifts the limit of 40 macroes
tied to keys.  The older "execute-macro-n" functions will dissapear some
day, so please move to this!  The describe-bindings function now will
list the defined macroes after the built-in functions along with their
bindings.

***	Hidden modelines???

	If you are writing an emacs macro you can hide the emacs
modelines by setting $modeflag to FALSE.

***	Smooth scrolling

	If you are of the school that prefers the screen to ride up a
line at a time instead of by half windows, set $sscroll
to TRUE.
>
> Have now re-written scrolling routines to use hardware scrolling
> if available - currently supported on VTxxx terminals via. termcap.
> $sscroll is interpreted as follows:
> $sscroll = +n	:	Scroll screen in multiples of "n" lines
>			(or half-screen, if that is less) using hardware
>			scroll if available.
> $sscroll = 0	:	Old-style scrolling. No use of hardware.
> $sscroll = -n	:	Smooth scrolling when cursor reaches "n" lines
>			from top or bottom of screen ("scroll margin").
>
***	Recall last printed statement

	The last text printed by emacs on the command line can be
recalled by querying $lastmesg.  Look near the end of the new emacs.rc
file to see how this works.

***	VGA support

	IBM's VGA display adapter in 50 line mode is now supported.

***	Optimizations!

	Some internal optimizations have cause a speed increase of apx
30% to the speed of macro execution under all environments.

	Calling a different level of I/O functions has speed up disk I/O
by apx 30% on the IBM-PC and under UNIX.

***	CMODE improved

	CMODE now trims trailing whitespace when the enter key is used,
and copies its indentation from the last non-blank line.  Blank lines in
the middle of a function will no longer cause emacs to forget its
indentation level.
>
> Auto CMODE is implemented by a macro in the .emacsrc file, which is
> bound to $readhook (see below). Also sets hard tabs at 4 column intervals
> in accordance with Alan's little red book.

***	Query-replace bug fixed

	A rather long standing bug which caused emacs to lock up when
aborting a query-replace with the '.' character has been eliminated.

***	New Search Algorithm

	A new search algorithm, written by Geoff Gibbs, implementing
the Boyer/Moore search algorithm has speed up all non-MAGIC searches by
over 30 TIMES! 

***	Partial Mouse support added

	The Atari 512/1040ST, the DEC VAX system under VMS, the
IBM-PC with a Microsoft compatible mouse, and the Commodore AMIGA now
support mouse usage. Text can be cut and pasted from one buffer to
another.  Window sizes can be adjusted easily.  Mouse support for other
operating systems will be forthcoming. New environment variables added
for mice include:

	$xpos	Cursor column of last mouse button click
	$ypos	Cursor row of last mouse button click

***	Microsoft C Fixes

	Various fixes have made MicroEMACS compile well under Microsoft C
	version 5.0

***	New computers supported

	The WICAT computer is now supported under the MSC operating
system.  Also the Data General mainframe computers are supported.

***	New Compilers supported

	Mark Williams C on MSDOS is supported. Datalight C under MSDOS
is now fully supported as well.

***	Rewritten fill-paragraph

	Fill-paragraph has been rewritten. It is now generally four
times faster, and its speed is now related to the size of the
paragraph, rather then the square of the size of the largest line, as
previously.

***	-e switch changed

	The -e "EDIT" command line switch has been changed to -c
"changeable" to allow the -e to be used to automatically execute
error.cmd from the command line.  This is very useful from Mark
Williams C for error parsing.

***	New mechanism for hooks

	Hooks are ways of attaching macroes to MicroEMACS as it is doing
specific actions. In the past these were bound to illegal keystrokes.
This mechanism is now that there is an environment variable for each of
these "hooks" that contains the name of a macro to execute at hook time.
These must be one of the built in functions (including execute-macro-<n>)
for now. Hooks include:

	$readhook	executes immediately before reading a file,
			after it's buffer has been created.

	$wraphook	executes when it is time to do a word wrap. This
			is set to wrap-word by default.

	$cmdhook	executed immediately before MicroEMACS waits for a
			command from the user.

> To bind a hook to a named procedure, set it to the name of the corresponding
> buffer, i.e. the procedure name in square brackets. E.g.
> set $readhook [pre-process-file]

***	select-buffer upgraded

	A numeric argument to select-buffer causes the target buffer to
become "invisible"... ie not listed in the buffer list. Also, when
typing in a buffer name interactivly, the space bar will attempt to
complete the name from the available buffer list.

***	Prefix keys upgraded.

	More than one key can now be bound to meta-prefix and
ctrlx-prefix.  Also the terminating character for search and replace
strings defaults to the last thing bound to the meta-prefix, and can be
reset by setting the $sterm variable.

***	Completion routines rewritten

	Command names, buffer names and file names under some operating
systems now share a common completion routines.  Typing in a portion of
a name and hitting the space bar, meta key or tab key will cause
MicroEMACS to attempt to complete the name for you.

***	AMIGA INTUITION support

	The mouse, window resizing and close gadgets are no properly
supported on the Commodore Amiga.


>	Automatic Window Resizing on receipt of SIGWINCH
>
>	When used within a windows terminal emulator like xterm or
> WIN/QVT MicroEMACS will automatically resize its window to fit the
> terminal window up to 256 x 256.
