V9/cmd/emacs/recent_changes

SUBJECT: new features and old bugs

Version 2.4 will soon be installed as EMACS (it is now NEMACS). 
This version allows longer files to be edited (up to about 9,000
lines), and has several other changes.

The M-w command puts a "wall chart" of commands (the combined output
of "M-?*" and "M-?^X*" into the current buffer.  This is a handy reference.

If you try to quit via ^X^C and tell emacs to write a buffer that
has been modified, it will not quit if it encounters a problem (such
as a protection violation).

Several problems in the manual have been fixed.  These were first
discovered when Brad, a new user totally unfamiliar with emacs,
tried to learn emacs from the manual.  The manual is in
/n1/warren/emacs/emacs.doc

SUBJECT: Version 2.6

Version 2.6 (now /usr/obin/nemacs) has several new features.  This
version has some modifications to the file and buffer handling, and
there may be bugs that cause garbled files.  It will probably stay
as nemacs for some time until I am sure that it is sound.

Non-Destructive buffer reading:  The ^X^R and M-$ commands now take
the value of their argument to specify whether or not clear the buffer
before reading.  If no argument is given (just
invoke ^X^R or M-$), they clear, as they did in past versions.  If
an argument is given, the text read is inserted into the buffer at
the current cursor position, or at the end for M-$.   Thus if you
type ^U^X^R and a file name, it is inserted.  If you type ^UM-$ and
a command line, the output of the command is appended to the buffer .exec.

(almost) Unlimited Kill Buffer.  The limit on the amount of text you
can kill and still receive is now 256K characters.  The kill buffer
is kept in a file, and the only limit is the amount of stuff you
want to clutter up the file system with.  As before, only the last 8
deletions are remembered.

Reading a file without re-initializing the buffer, or retrieving
lots of killed text, take lots of time if the cursor is in the
middle of a line (i.e. there is text to the right of the cursor). 
You can save a lot of time by opening up a line, doing the read or
retrieval, and then killing the leftovers.

SUBJECT: version 2.7

version 2.7 contains many non-visible changes to reduce memory usage
and improve efficiency.  The visible changes in version 2.7 are

support for HP terminals (terminal type hp)

An improved re-display algorithm that sometimes scrolls the screen.

^Z now does exactly what ^X^C did.

The ^X^T command takes the marked region in the current buffer and
inserts it into a second buffer.

Mail will now take any number of lines starting TO: or CC: for the
destination of the mail.

EMACS will not try to write buffers with a null file name after ^X^C
or ^X^S

SUBJECT: new features in EMACS 2.8

New commands:

	^X= will print out the character position of the cursor in
the buffer and the total number of characters in the buffer.

	M-" will re-adjust the lines in the buffer so that each line 
has 72 or fewer characters.  Blank lines, or lines starting with '.'
or '`' are not changed (these are nroff control lines).

Other new features:
	You now have 12 marks available for the commands dealing
with marks.  If you specify no argument to commands using marks,
they will use a different mark in each buffer.  By specifying an
argument to commands using marks, you can explicitly set two or more
marks in the same buffer.  See the documentation for more details.

	You can now set default modes for a file by putting the
string EMACS_MODES: anywhere in the first 10 lines of a file,
followed by a description of the modes to set.  For example, the string
/* EMACS_MODES: c, !fill, tabstop=3 */
in a c source file will turn on c mode, turn off fill mode, and set
the number of spaces per tab in the display to 3.  For more details,
see the document.

	When EMACS asks "continue?" after executing a unix command
or listing active buffers, if you type 'y', ' ', or (return), EMACS
will go back to the buffer.  Otherwise, it will ask for another unix
command or another buffer name.  You can also get a list of active
buffers by entering (return) in response to any of the commands
that ask for a buffer name.

SUBJECT: new features in EMACS 3.0

There is now a way to pass the contents of the current buffer as
standard input to a command.  Preceding meta-! (execute unix
command) with ^U causes it to pass the buffer as standard input. 
This does not work for meta-$.  (Sorry, but there is no obvious way
to do this without the possibility of deadlock.)

There are several minor bug fixes in this version.

The undocumented game of life command (M-#) has been deleted.  If
there is any interest in it, I will keep a version that has this feature.

The big change here is the ability to define new commands.  Basically,
any sequence of emacs commands can be defined as a command.  There
are additional commands for sequencing execution, and for obtaining
information from the terminal.  A brief description of the new
commands is available in /n1/warren/emacs/macro.mm (mm source) or
/n1/warren/emacs/macro.xopr (xopr'able copy).  Some sample macro
definitions are available in the directory /n1/warren/emacs/macros.

SUBJECT: new features in EMACS 3.1

Several new features relating to macros:
	The ^X% command which exchanges the top of the kill stack with
 	the item identified by the argument.

	All of the commands that access the kill stack
	(^Y,^X-,^X>,^X%, etc) now return 1 as a result if successful
	and 0 if there are not enough items in the kill stack to
	satisfy the request.
	
	EMACS will not ask Continue? after commands, buffer display,
	statistics, and similar commands when the command is invoked
	in a macro.  You can use ^X< to ask Continue? if you like.
	
	M-s now displays the amount of buffer space left for editing
	or macro text.  You need a minimum of 1024 characters.

	The buffer name ... is now special.  If you create a buffer
	named ..., it will create a new buffer with a unique name
	instead.  This is useful for creating temporary buffers in macros.
	
	M-x can now be used to call macros by names, rather than always
	invoking a macro by a character.  This should help in the
	construction of macro libraries.
	
	^X& compares two strings for a macro

SUBJECT: new features in EMACS 3.2

Several miscelaneous display bugs have been fixed

A new mode parameter (keepscroll) has been added.  This is initially
0 and can be set to the number of lines that you wish to keep from
the last screen when going forward or backward by pages (^V or M-V)

If you give an argument to ^L, it specifies the number of lines to
appear on the screen before the current line when the display is rereshed.

The command ^X^^ causes one line to be added to the current window
when in two window mode.

The command ^X^U causes the display to be updated and causes EMACS
to delay for n seconds, where n is the argument to ^X^U.  This is
useful in macros.

The command M-] causes the last numeric argument to a macro to be
passed as the argument to the current command.

By popular demand, EMACS will now ask whether or not to write a
buffer that contains text and has no file name associated with it.

SUBJECT: new features in EMACS 3.3

The command ^X! starts a case statement in a macro (see the macros
memo for details)

The redisplay heuristics have been improved for terminals that have
insert/delete line and insert/delete character capabilities (hp,
adm31, vt100, etc.)

The command M-~ marks a buffer as not being up to date without
writing it out.

The .emacs_init file is now run before reading in a file specified
on the command line.  This should reduce unwanted display on
starting up.

I am now maintaining a library of macros in /n1/warren/emacs/macros.
There are macros for various purposes, such as dealing with unix
mail, keeping track of refrences for mm, a help function for emacs
commands, balancing parentheses, etc.  Anyone interested in
submitting macros should follow the rules outlined in the
LIBRARY_RULES file, and send them to me.

SUBJECT: new features in EMACS 3.4

EMACS will now expand environment variables, such as $HOME or $MAIL,
in pathnames for reading, writing, and finding files.  Asteristisks
in file names (ie *.c) are still not expanded.

EMACS will not print prompts from commands read from an init file or
form files read with ^X^I. This should cut down on annoying output
at startup.

A negative argument to a command can be specified with escape, '-',
followed by the number.  Most commands treat their argument as
unsigned, so a negative argument is treated like a large positive
argument.  For some commands, negative arguments cause special effects.

Passing a negative argument to ^X< causes a prompt to be given, and
a single character to be read from the terminal as the result.

The command M-: allows you to re-map character commands.  It prompts
for a character (or a meta or ^X sequence) and a command  (also a
character sequence) to put on that character.  This allows you to
re-configure EMACS to your liking.

The regular expression search facility (M-^S) has been improved.  You can
now search forward or backward, either ending at the beginning or end of
buffer, or wrapping around (like ed).  With a positive argument, the
search is forward, while a negative argument searches backwards.  An
argument of 1 or -1 causes the search to wrap, failing only if there
is no occurance of the expression in the buffer.  Any other argument
causes the search to stop at the beginning or end of file.  Note
that the default (argument = 1) does exactly what the old one did.
Entering ^S or ^R immediately following a regular expression search
will find the next or previous occurance of the expression.

***********Note to EMACS maintainers*************

As of version 3.4, the file regexp.h is no longer needed.  The
makefile has been updated to reflect this, and you will not receive
this file in future updates.

Beginning with version 3.5, EMACS will maintain error messages in a
separate file (errfile).  This is produced like the helpfile.  Also
beginning with this version the pathnames for the help and error
files will be automatically set to the directory from which make is
invoked.  Thus you do not need to change any pathnames unless you
plan to keep the error, help, and statistics files in some other
location on your system.  This should simplify making EMACS.

***************************************************************

SUBJECT: new features in EMACS 3.5

Passing an argument to ^X^W (i.e. ^U^X^W) will cause the contents of the
buffer to be appended to the specified file, rather than replacing it.

There is a new mode: caseless.  Setting this mode will cause case to be
ignored in searches and replaces.

EMACS will now periodically check to see if you have received mail. 
If so, it will print a warning at the bottom of the screen and beep.

You can now use \ folowed by a single digit in the "To? " string for
regular expression query replace to specify replacement by a
sub-expression of what was matched.  This works just like it does in ed.

You can now have local variables within a macro.  This is done through
the ^] ad M-^] commands.  ^] returns as its result the value of a
local variable selected by its argument.  M-^] assigns the result of
the following command to a local variable selected by the argument
to M-^] and returns as its result the previous value held by the
variable.  You can have up to 10 local variables in each macro.  For
compatibility with the previous definition of ^], local variable
number 1 in each macro invocation is initialized to the argument
given to the macro.

There is a new mode, rigid_newline, that will cause a newline or carriage
return to always insert a newline into the file, even if the
following line is blank.

Typing ^Z in response to an error message will no longer result in a
core dump, but will ask if you want to write out modified buffers
before exiting.

Regular expression querry replace will check for matching something
at the end of a line, and move to the next line if so, so that you
will not get into an infinite loop replacing the end of a line with
something else.

^N will no longer go beyond the end of the buffer.

The displays for search and querry replace have been changed somewhat to
give you immediate feedback in response to characters typed before
long searches.

SUBJECT: new features in EMACS 3.6

There is now a default match in the macro case construct.  See the
macro memo for details.

The display algorithm has been changed somewhat to avoid centering
the window every time that you change buffers.  This should make
macros like abbrev, that changes to another buffer to look up the
abbreviation, more acceptable on slow terminals.

The special character sequences \< and \> can be used to delimit a
word in a regular expression.  The regular expression "\<the\>"
matches an occurance of the word "the" (but not the delimiters on
either side).  Words are delimited by line boundaries, white space,
punctuation, and control characters.

The new command ^X+ causes the next item put in the kill stack to be
appended to the last item put in the kill stack.  See the macros manual for
more details and cautions.

Minor changes:  

	^X^S on a buffer without a file name will fail in a
	macro, rather than asking for a file name.

	The algorithm used to find sentence beginning and end has
	been changed somewhat.

	The change mode command (^X^M) now returns the previous value of
	the mode set as its result.  

	There is a new mode (end_newline) which when set causes ^N
	at the end of a buffer to extend the buffer by one line like
	it used to before version 3.5.

New Macros:
	
	There is a new macro package called tags in
	/n1/warren/emacs/macros that facilitates working with a
	group of related files.  See /n1/warren/emacs/macros/CATALOG
	for details

DIRED changes:
	If you give dired an argument beginning with a dash, it is taken
	as additional arguments to the ls -al command used to
	produce a listing for dired.  Thus "dired -t" produces a
	time sorted listing of the current directory, "dired -t
	/usr/bin" produces a similar listing of /usr/bin.

SUBJECT: new features in EMACS 4.0

There is a new terminal support mechanism in EMACS 3.7.  This allows
me (or anyone) to construct terminal description files for terminals
without re-compiling.  This will allow many more terminal
descriptions and synonyms, easing compatibility problems with EX. 
It also lets us define "funny" terminals, such as vt100 in 80 column mode.

This version makes use of the (crude) terminal improvements in UNIX
3.0 to read-ahead, and hopefully reduce re-display somewhat on slow
terminals.  System support for this is still very poor, thus there
is little I can do.

There are lots of new features for DIRED, see the manual page or
memo for details.

^X= has been changed to give lots more information.

There are two new modes, tspeed and usilent.  

tspeed is the speed of
your terminal in miliseconds per character.  tspeed is used by emacs
in determining how to update the screen, and is set automatically
whenever you enter or exit emacs.

usilent causes emacs not to display the command line or output of
M-$ commands.  This is useful for running unix commands silently
from macros.

The new command ^X^N allows you to change the buffer name or the
file name associated with a buffer without changing the contents of
the buffer.

The buffer re-display algorithm has been changed.  This should eliminate
several display bugs and make it much easier to maintain.  Report
any bugs in terminal support or display.

There is a new macro library (/n1/warren/emacs/macros/crypt) for
those who like encrypted files.  See /n1/warren/emacs/macros/CATALOG
for details.

SUBJECT: new features in EMACS 4.2

There is a new command line option, "-i <filename>" which lets you specify
an additional initialization file.  The file <filename> will be run after
your standard init file and before any file name specified on the
command line is read in.  Recall that init files contain sequences
of emacs commands.

The algorithm for determining terminal type has changed slightly. It
first checks $TERM, then runs your init file, and if terminal type
still hasn't been determined, asks for it.

The command ^X= has been changed to return status information when
invoked in a macro, depending on its argument.  You can get file or screen
line and character positions. See the macros document for details.
 
^X^F or ^X^R will not give an error if the file cannot be read when
invoked with a negative argument.

You can now re-map any command using M-:.  This allows, for example,
mapping some more convenient key to escape on a terminal where
escape is not in a convenient place.

NEW modes:

	notabs mode causes emacs to display tabs as ^I (rather than
	white space), and to insert spaces up to the next tab
	boundary when the tab key is pressed (unless the tab is
	quoted with ^Q).
	
	readonly mode causes emacs to refuse to save the current
	buffer back to the associated file and to not save the
	buffer in auto save mode.  You can still save by writting to
	a file explicitly with ^X^W.
	
	controlify mode allows you to use the character ^^ 
	(control-uparrow) to make the next character a control
	character.  This is primarily useful for using emacs over cu
	(uucall, cuu) links, which swallow ^S and ^Q, or on a
	console terminal, which swallows ^O.
	
SUBJECT: new features in EMACS 4.3

Failing Searches inside of macros no longer beep.

The mail command has been modified to support the header format used
by other unix tools and by the arpanet community.  The principal
changes are to define the header of a mail item to be all of the
lines up to the first blank line, and to have M-^M look for lines
beginning To: or Cc: (Instead of TO: and CC:) to specify the recipients.
The old format will continue to be supported for some time, and old
header lines will be converted to new headers before the mail is sent.

New support has been added for terminals that underline, and terminals with
a forms-editing style insert character mode (like the concept-100). 
On terminals with underlining capabilities, the backspace mode is on
by default, and positions that are over struck with an underscore
will be underscored on the display.  Turning backspace mode off
causes backspaces to appear as ^H, and nothing to be underscored.

Emacs will now send you mail when it is killed (i.e. hung up on from
a dialup terminal) and saves buffers.

Emacs will only ring the terminal bell after the first "you have
mail" warning.  If you don't read the mail, the warning will stay on
the screen but emacs will not beep.

Emacs will now preserve owner and group when writing files.  It also
warns you when you try to write to a file that you do not own.

New command: ^X^A.  This command puts the first un-processed command
line argument on the kill stack.  See macros document for details.

MACRO changes:

rmail has been extended to provide local, btl-wide, and arpanet signatures,
for mail replies depending on the destination.  It has also been
modified to support standard mail headers.

There is a new macro package (vmail) that automatically responds to
your mail while you are on vacation.

SUBJECT: changes in emacs_4.4

Several bugs in regular expressions having to do with ranges of
repeats (\{n,m\}) have been fixed.  Also, a new operator '+' has
been defined to mean 1 or more occurance of what preceeds it, as it
does in common use of regular expressions.

The newline function has been changed so that the only time it does
not insert a new line is when you are at the end of the current
line, the next line is blank, and you are not in "rigid_newline" mode.

Autofill and fill buffer have been slightly modified.  Autofill will
now consider the whole line for possible breaking whenever you type
a space or tab.  This means that if the line is several words over
the line length, and you type space, several words will move to the
next line instead of just the last word.  

Fill buffer will now act
just on the marked region (Actually the first character of the first
line marked to the last character of the last line marked)  when
given an argument.  The whole region is considered as one block to
fill, irrespective of paragraph boundaries or blank lines, although
it still avoids breaking lines in such a way that a '.' or ''' is
put at the front of a line.

The new command ^X@ works just like ^^X<, except that it takes the
string used for prompting
from the kill stack (or from the user if invoked from the
terminal)  This allows you to alter the string used for prompting
rather than compiling it in.

The ^X^O command now returns 1 if both windows contain the same
buffer, 0 if the windows contain different buffers, and -1 if it is
called in one window mode.

Querry replace will now display the from and to strings at the
bottom of the screen.  It also has a new option 'b' which causes it
to go backwards to the previous occurance of the To string.  (Note
that this means find the previous occurance in the current file and
does not find something that has already been replaced!).  Query
replace also remembers the most recent replacement string and will
substitute it for a replacement string consisting of a single '%'
character.  

The grow/shrink window  command (^X^^) will now expand or contract
the display window while in 1 window mode as well as two window
mode. The mode and echo lines remain at the bottom of the screen
independent of window size.

Emacs will now expand all of the usual shell meta characters in
filenames.  Thus you can read "*.c", or `logdir usa`/.profile.  In
all cases, only the first "word" (up to the first whitespace
character) is used from the expansion.  Thus when specifying files
with "*", only the first match is found.  The expansion of shell
meta characters is slow, since emacs runs a subshell to do it.

There is a new mode (display_percent) which will display the current
file position as a percentage of the number of lines in the file
when turned on.

Two new operators have been added to convert between numeric and
string values.  With an argument of 16, ^X~ will convert the result
of the next command to a string and put it on the kill stack.  With
an argument of 17, The top item on the kill stack is converted to an
integer and returned as the result of ^X~.  See the macros document
for details.

Emacs now strips leading tabs and blanks from macro definitions when
they are loaded in order to reduce storage requirements.  Although
it is possible to construct a macro that would be effected by this
change, it does not occur with normal coding practices.

SUBJECT: changes in emacs_4.5

Added a new command (M-E) which expands an environment variable and
returns its value (or a null string) on the kill stack.  The return
value of M-E is 1 if the string fed to it matched an environment
variable, and 0 otherwise. (12/22/81)

Added a new option to query replace.  When you respond with ".",
query replace replaces the current occurance and exits query
replace. (12/29/81)

New Meta character for file names: (12/30/81)

Emacs now interprets the tilde character (~) in filenames as meaning
	"home directory" like the C shell.  Emacs will take the
	characters following the ~ up to the next word separator as
	the login name of a user and translate the entire sequence
	to that user's home directory.  A null user name is taken as
	your own, while the special user name EMACS is mapped to the
	emacs data directry (contains the macro library and other
	emacs related files).  Thus ~/.profile references
	your .profile, ~foo/.profile references the .profile for
	user foo, and ~EMACS/macros/crypt references the crypt macro
	package.

Emacs will now take a full path name to specify the terminal
	description file either in the TERM environment variable or
	with the M-t command.  This allows a user who does not have
	control of the terminals database to customize his own
	terminal description to meet special needs.

Emacs now responds to a break signal.  When a break is detected,
emacs stops what it is doing and prompts the user.  You have 5 options:

	'y' or ' ' causes a "recursive edit" to be invoked on top of
	whatever you were doing.  Entering ^Z from the recursive
	edit will return you to the break message.
	
	'n' (no break) causes emacs to resume whatever was in
	progress when break was detected.
	
	'^G' (quit) causes emacs to abandon what was interrupted and
	unwind to the top level.  Any macros or init files being
	executed are abandoned.
	
	'^Z' Causes emacs to exit, after asking about saving any
	modified buffers.

	'^]' Causes emacs to crash leaving behind a core dump.  (Not
	terribly useful except for my debugging!)

This allows you to interrupt a looping macro or long running search
and to escape from it if necessary.

MAILER parameter:  If you set the environment variable $MAILER,
emacs will take it as the name of the command to run to send mail
when M-^M is invoked.

More editing for string parameters: (3/1/82)

	You can now edit string-valued parameters (Like filenames or
	unix commands) Using ^A, ^E, ^F, ^B, ^D, ^K ^U and ^?
	If you type characters in the middle of a line, they are
	inserted in place.

Keyboard Macros: (6/15/82)

	You can now tell emacs to remember a sequence of keystrokes
	to be re-executed whenever you want.  ^X( tells emacs to
	start remembering, ^X) ends the remembered sequence, and ^XE
	executes it.  ^X( and ^X) do not interfere with normal
	editing, however the saving causes some overhead, as
	characters received from the keyboard are written one at a
	time into a file ($HOME/.emacs_kbd) to be re-invoked.  Note
	that you can use this feature to record a backup script of
	your editing session.
	
Picture Editing Modes:  (6/6/82)

	Two new modes have been added to facilitate editing of pictures:

	"picture" mode treats the buffer as an electronic blackboard
	extending infinitely to the right and down.  The screen is a
	window into this blackboard.  Text to the right of the window is
	not shown  (As in normal mode, a ! appears at the right margin,
	but the rest of the line is invisible.)  The horizontal position
	of the left most character position displayed is given on the
	mode line to the left of the editor name, if it is not zero. 
	The screen automatically scrolls left or right to keep the
	cursor in view.  Several commands behave differently in
	picture mode:
	
	^N/^P	These keep the same character position.  If the line
		being moved to is not long enough, it is extended.

	^F/^B	These will not go off of the current line.  Movement
		to the right causes the line to extend, movement to
		the left stops at the left margin.
		
	Deletions and ^Y.  These treat the region to be deleted as a
		rectangle on the screen.  For example, ^W takes the
		mark as one corner and the cursor position as the
		other corner of a rectangle and deletes its
		contents.  Likewise, ^Y retrieves text in the same
		fashion.  (This makes most sense with nodelete mode
		and overwrite mode.  See below).
		
	"nodelete" mode directs emacs not to remove text that is
	deleted via text deletion commands, but to overwrite it with
	blanks.  This should probably be the behavior associated
	with overwrite mode, but for compatibility, they are treated
	separaterly.
	
	These two modes are intended to work together with overwrite
	mode to give you an editor designed to work with two
	dimensional displays of textual information.  Using these
	modes in other combinations may cause somewhat strange
	behavior.  In addition, commands may not behave exactly as
	expected if the file being edited contains tabs, backspaces,
	or control and meta characters.  If this is a serious
	problem, I can consider fixing it, but this would not be a
	simple fix!
	
	Enjoy
	
SUBJECT: changes in emacs_4.6

Dired now does recursive edits in the same process, allowing you to
peruse a directory structure much quicker.  If you try to read a
file with dired, it will display the contents, not the directory
listing.  

Emacs has some hooks to interface to the blit terminal.  These
include a new command (^Xg) for use in positioning from input from
the mouse, and a new method of spewing out raw text to the terminal
(M-3^X<) that can be used to download control information directly
into the terminal, and a feature that enables emacs to discover the
window size of the current layer.  For more information, see the
blit.info file in the macros directory.

Emacs will read and write encrypted files via the unix crypt
program.  The command ^Xk prompts for an encryption key.  All
subsequent reads, writes, and saves use that key in saving.  This
also applies to files saved in case of crashes, and to the temporary
files used by emacs (though the encryption algorithm used for
temporary files is not the standard one).  Running emacs with the
command line flag "-x" will cause emacs to prompt for a key name
before reading the file specified on the command line.  For both
this and ^Xk, the key is echoed on the screen, but disappears as
soon as you hit return.

Performance on editing large files should be improved substantially.
Startup for all size files should be faster.

There is a new option to querry replace.  Typing <escape> to the
prompt during querry replace will cause it to ask for a new string
to substitute.  Unless you type ^G, this will become the new string
to substitute in subsequent instances (^G exits querry replace).

Lowercase letter command: M-l.  Converts the next character to lower
	case.

Screen goto command: ^Xg

	This command goes to a screen position.  It is intended to
	help interface to terminals with a mouse, or other
	positioning device.  The command takes its argument and
	decodes it as: Row=arg%128,Col=arg/128, where row 0,col 0 is
	the upper left hand corner of the screen.  It then goes to
	the requested position, changing windows if appropriate. 
	Attempts to position to most "illegal" positions result in
	going to the nearest legal position, however positioning
	into the echo area or off the bottom of the screen result in
	no movement.
	
The display of time and "you have mail" has been changed somewhat. 
The effect should be that both messages will now appear on the line
below the mode line when appropriate, and both will be updated when
your terminal sits idle.  You may notice the mail message appearing
and disappearing at different times than it did before.

New Modes:

ctl_char:	The character to be used to specify that the next
		character is to be made a control character when
		controlify mode is on.  The mode is the ascii value
		of the character.

flow_lim:	An integer specifying control over xon/xoff flow
		control.  If flow_lim is non-zero, emacs will enable
		xon/xoff flow control whenever more than flow_lim
		characters are sent to the terminal at one time. 
		This will also cause typeahead of ^S or ^Q to be
		mis-interpreted.  This mode should be set only if
		xon/xoff flow control is absolutely required for
		correct operation.  Under normal conditions, emacs
		supplies sufficient padding to terminals to allow
		operation at all speeds without xon/xoff flow
		control.
		
eofnl:		an on/off mode specifying that a newline will be
		appended to any file written from a buffer not
		containing a newline.  This mode defaults to ON.  If
		you want to edit files that you do not want to end
		in a newline, turn this mode off.
	
SUBJECT: changes in emacs_4.7

4.6a,b,c:	Added checks on reading/writing files for concurrent
		access by other processes.  Emacs will complain if
		you try and write to something that someone modified
		while you were editing it.  It will not let you
		overwrite the other changes.  You must save your
		buffer in some other file, then find out what's
		wrong.
		
4.6d:		Lots of minor bug fixes, including fixes to dired.


4.6d:		Macro trace command (^XT).  This command traces the
		execution of the next command. Each primitave
		command is printed as it is executed, along with the
		argument and result.  Retrievals from the kill stack
		are also displayed so that you can see the arguments
		passed to commands that take string arguments. 
		Emacs pauses after every command for you to hit a
		key.

4.7:		Improved macro capabilities.  A macro compiler that
		compiles a lisp like language into the familiar and
		uncomprehensible macro language of the past.  This
		is separately described (in the nroff file
		ecompile).  In connection with this change, the
		following additions/changes were made to the basic
		macro language:
		
		a)	Expanded naming.  There is now no limit on
			the number of named macros.  calling/called
			names must matched exactly now.  (The old
			system allowed any prefix, and just caused
			confusion.)
		b)	New numeric operations for bitwise and, or,
			and xor.  (see macro.mm for details)
			
		c)	New string operations for append strings,
			substring, index, and string length.

		d)	New operation to convert strings to pointers
			and vice versa.  This supports the string
			variables.
			
		e)	Named global variables (seem macro
			documentation for details)
			
	new modes:
	
	autoload mode (defaults to on) 
	
		causes a call of a macro by name from another macro
		to try to load a file with the same name as the
		macro from either the directory specified by
		environment variable $EMACS_LIB, or the directory
		~EMACS/macros.

4.7:	Display enhancement.  Emacs will now display the current line
	first whenever re-drawing a large portion of the screen, provided
	that your terminal has either insert/delete line or selective
	scrolling capability.

Subject: New features in emacs versions 4.8 and 4.9

1)	Undo command.  M-u will undo the last significant text
	change.  Deletions, insertions, the effect of m-y, can all
	be undone.  Replacements can sometimes be undone.  (If there
	weren't more than about 10 individual replacements done). 
	Undo is it's own inverse.  
	
2)	Macro hooks.  Macros defined with particular names will be
	invoked automatically under appropriate circumstances,
	allowing you to customize the behavior of emacs.
	
3)	New macro programming commands:

		format -- do  string format conversion, substituting
		parameter strings for format specifiers.

	(unget-character <arg>) pushes a character back onto the
		input queue.
	
	input-count Returns the number of characters typed and not
		yet processed by emacs.

	window-top	screen-line of top of window
	window-bottom	screen-line at bottom of window
	first-visible-line	file-line at top of window
	last-visible-line	file-line at bottom of window

	(format <format> <string 1> <string 2 > ...)
		This is a kind of primitive printf allowing you to
		substitute string arguments into a format string.
		
	Several macro compiler bugs were fixed, allowing more
	flexible syntax and avoiding errors that caused coredumps in
	earlier versions.		

	Due to changes in the ways that key bindings are done,
	macros should now run about 3 times as fast as they did in
	previous versions.

4)	Berkeley unix tty I/O changes.  Emacs now supports flow_lim
	mode, handles break from the keyboard, and updates the time
	and mail messages while the terminal is idle on 4.2BSD
	systems as well as on AT&T unix.  As a result of this
	change, the mark command cannot be typed as ^@ on the
	keyboard from berkeley unix systems.  Please use meta-space
	instead.  (^@ and meta-space both continue to work in macros
	as usual).

5 (11/1) 7bit_ascii mode:  This mode changes the display of meta
	characters, showing them as underlined rather than prefixed
	with M-, to make displays of files using the high order bit
	for graphics or format control more readable.


6 New command:	M-^Z.  This command causes emacs to try to suspend
		itself and return control to the shell on any system
		using berkeley job control, or on a system using
		"shl".  On systems using "shl", emacs will print a
		message requesting you to type your normal character
		for suspending jobs, while on berkeley systems,
		emacs suspends itself automatically.

7 New command -- M-0M-$.  This command runs a sub-process in a buffer
		on emacs.  The process is started and runs
		assynchronously.  All output that is produced is
		appended to the buffer.  You can send input to the
		sub-process by entering a line of text and hitting
		return in the buffer in which it is run, or by using
		the ^X^T command to send text to that buffer.  The
		mark in this buffer is maintained at the end of the
		last output from the process.  When you hit return,
		if you are on the same line as the mark, everything
		after the mark is sent.  This avoids sending back
		prompts typed by the process.  (If you are anywhere
		else, it sends the whole line.)
		
Key Bindings:	As of version 4.9, the key bindings used by macros
		are different from those of the terminal.  This
		allows you to re-map the keyboard without
		interfering with the execution of macros.  Macro
		code will use the built-in command attached to a key
		(if any), no matter how the keyboard may have been
		re-mapped by changing key bindings around with M-:,
		and no matter what macros have been bound to
		keyboard keys.  If there is no default binding, and
		if there is a macro bound to the key, then it will
		execute the macro.  You can restore the default
		keyboard key bindings with by invoking the M-:
		command with an argument of 0.


Macros:		Many macros have been enhanced, and source is now
		available for more of them.
		

		Of particular interest are the new netty and
		emacsterm macros for use with blits and dmd 5620
		terminals.  For documentation, see
		~EMACS/macro_source/blit-or-dmd.  Also included are
		new macros for lisp editing and for editing of emacs
		macros.  These provide the parentheses matching and
		indenting functions of the old lisp macros, plus
		some new functions for navigating in a lisp file and
		interacting with a lisp interpreter running in a
		buffer.

Documentation:	The users manual and macros manual have both been
		completely rewritten to try to achieve a logical
		organization rather than a historical one.