[comp.emacs] Early experience with MicroEMACS 3.9

davidsen@steinmetz.steinmetz.UUCP (William E. Davidsen Jr) (07/31/87)

A few words about the new features, documentation, and bugs in memacs
3.9. There are several new features, most notably a new "autosave" mode
and at least one new macro operator which seems to be documented only in
the source code (&env, returns the value of an environment variable).
There is code for named-procedures, looks like macros, but I haven't
found any documentation on this. I looked in the index under 'named' and
'procedures,' and scanned the manual, but I haven't gotten my hardcopy
back yet. The standard keyscanner has the code added for recognizing
ANSI keyboard code (start with ESC-[), but they're not in a conditional,
so you're out of luck if you bound ESC-[ to a function.

There is a spelling checked (MicroSPELL) included, and I haven't really
had a chance to check it out. I did find 31 spelling errors in the EMACS
document, but it may not have been thru the checker. I'm mailing the
fixes to the author.

Several gotcha's, one small and one (for me) huge. The nice ACMODE flag
in the source is gone. The editor enters CMODE whenever a .c or .h file
is opened. There is some was to disable this (it's either in a macro, or
a macro is called every time a file is opened so you can reset the mode)
but it is not obvious in either the source code or documentation. I
finally bound a key to "disable CMODE".

The big problem I had was that input from files and keyboard is handled
in a slightly different way.  When doing bindings from the .emacsrc
file, all of the functions are assumed to be upper case, with a comment
indicating that this is true in DOS.  My rc file bound "next-line" to
FNB (the down arrow) and to FBb (Shift F4) a macro which undoes changes
to a buffer by marking it as unmodified, then reading the original file
back in. 

They were in the wrong order in the file, and after about a half hour of
editing, I pressed the "cursor down" for the first time and lost
everything I'd typed. The code to force functions is in bind.c, and I
have taken it out of my version, since DOS already seems to do what I
want without it.

In spite of comments in the code indicating that it should be smaller,
it wasn't under Xenix, using all the features. It may be faster, but not
blindingly so. I just got the function keys working on my hacked 3.8i
when 3.9 arrived, so I wrote a few more macros to use the new features.

I hope this helps people getting started on 3.9, and when I find out how
to kill automatic CMODE I'll post. Copies of all changes have been
posted to the author.
-- 
	bill davidsen		(wedu@ge-crd.arpa)
  {chinet | philabs | sesimo}!steinmetz!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me

nwd@j.cc.purdue.edu (Daniel Lawrence) (08/04/87)

It always amazes me that MicroEMACS gets around so fast after I post it
to my BBS. I haven't even gotten this stuff off to the proper moderators
yet.

In article <6867@steinmetz.steinmetz.UUCP> davidsen@steinmetz.steinmetz.UUCP (William E. Davidsen Jr) writes:
>
>A few words about the new features, documentation, and bugs in memacs
	[he talks about the new stuff]
>
>There is a spelling checked (MicroSPELL) included, and I haven't really
>had a chance to check it out. I did find 31 spelling errors in the EMACS
>document, but it may not have been thru the checker. I'm mailing the
>fixes to the author.
>
Yea    thats the big reason I wrote the spell checker, I can't spell
worth a &^%$. I was so late on getting this out, I spaced spell checking
the manual.

>Several gotcha's, one small and one (for me) huge. The nice ACMODE flag
>in the source is gone. The editor enters CMODE whenever a .c or .h file
>is opened. There is some was to disable this (it's either in a macro, or
>a macro is called every time a file is opened so you can reset the mode)
>but it is not obvious in either the source code or documentation. I
>finally bound a key to "disable CMODE".
>
Whatever MACRO is bound to the illegal keystroke M-FNR is called
whenever a file is read in. In the standard .emacsrc, this then parses
the file extention and adds CMODE for .C and .H files. This was ment to
be more flexable then the old ACMODE code.

>The big problem I had was that input from files and keyboard is handled
>in a slightly different way.  When doing bindings from the .emacsrc
>file, all of the functions are assumed to be upper case, with a comment
>indicating that this is true in DOS.  My rc file bound "next-line" to
>FNB (the down arrow) and to FBb (Shift F4) a macro which undoes changes
>to a buffer by marking it as unmodified, then reading the original file
>back in. 
>
	[he then goes on to discribe a disaster]

Ok, I'll look into the case treatment of the text function key names.

>
>In spite of comments in the code indicating that it should be smaller,

	The section that the comment was about did turn out smaller...
		creeping featurism creept in however

>	bill davidsen		(wedu@ge-crd.arpa)
>  {chinet | philabs | sesimo}!steinmetz!crdos1!davidsen

	Having gotten permishion to post finally, from the powers that
be here at purdue, I will try to be more responcive in the newsgroup
here.

			Daniel Lawrence
			UUCP:	ihnp4!pur-ee!j.cc.purdue.edu!nwd
			ARPA:	nwd@j.cc.purdue.edu
			FIDO:	201/2 The Programmer's Room (317) 742-5533
			ATT:	(317) 742-5153

davidsen@steinmetz.steinmetz.UUCP (William E. Davidsen Jr) (08/05/87)

I offer this enhancement to memacs 3.9, courtesy of Michael Tiemann. It
allows entry of RETURN in command strings, most commonly search strings.
memacs will allow you to enter a RETURN (^Q^M) in text but not commands.
In procedure getstring, file input.c there is a comment
	/* if it is a <ret>, change it to a <NL> */
followed by the line:
	if (c == (CNTL | 0x4d))
It may be changed to:
	if (c == (CNTL | 0x4d) && !quotef)
which then allows you to enter a RETURN in a search or replace string.
I admit that I would prefer having the search string terminator be a
<NL> by default and quote the <NL> on those rare occasions when I want
them. My RETURN key is easier to find than ESC. Since getstring()
accepts a terminating character, I may change the call, but admit that
it's a matter of taste, not a bug. How about a variable to define the
search terminator character ($stchar or something)?

Two minor points on ANSI keyboard sequences. memacs 3.9 does accept
them. When I fixed 3.8i I put the test earlier in getcmd() to avoid
checking for lowercase and control characters before checking for the
'[' character. I also added a define to estruct.h called KBANSI and set
that to control the use of the ANSI code.

For the unix-pc, I also added KBUNIXPC, SPEC1 and SPEC2 for the key
sequences which start with ESC-[O (that's oh) and ESC-[N. Please don't
flame me if the N is wrong, I don't have the code here.

-- 
	bill davidsen		(wedu@ge-crd.arpa)
  {chinet | philabs | sesimo}!steinmetz!crdos1!davidsen
"Stupidity, like virtue, is its own reward" -me

bcg@edison.GE.COM (Bruce Garland) (08/11/87)

Three changes that can help, the first eliminates the case sensiveity 
of reading the emacs.rc file the other 2 are just errors.


File BIND.C should be
  694   	if (*keyname >= 'a' && *keyname <= 'z' && !(c & SPEC))
and not
  694   	if (*keyname >= 'a' && *keyname <= 'z' && !(*keyname & SPEC))


File BIND.C should be
  689           *keyname += '@';
and not
  689           *keyname += 'A';


File VMSVT.C should read
  364   	eolexist = erase_to_end_line != NULL;
and not
  364   	eolexist = erase_whole_display != NULL;
as erase_whole_display is not defined yet.




Bruce Garland		GE Fanuc  Company - Charlottesville, VA
bcg@edison.GE.COM	old arpa: bcg%edison.GE.COM@seismo.CSS.GOV
bcg@edison.UUCP		old uucp: {seismo,decuac,houxm,calma}!edison!bces