MicroEmacs 4.00 - A Review
   By Tim Swenson

MicroEmacs is  a text editor  that is available  on many different
computer  platforms.  It was  originally written for  Unix, but it
has  migrated to MS-DOS, Windows, Mac,  ST, Amiga, CP/M, and QDOS.
The  earliest port that I am aware  of was done of MicroEmacs 3.8.
Then versions 3.9 and 3.11  were  ported.   Thierry  Godefroy  has
taken the  source of the  latest version of  MicroEmacs, 4.00, and
ported it to the QL.  Unlike the previous ports, Thierry has added
a number of QDOS features that  make  the  end  editor  much  more
usable.

I  first started  using MicroEmacs  when I  wanted an  editor that
could be used on the same file on different platforms.  MicroEmacs
was  about the only editor  on the QL that  was available on other
computers.   It was not the easiest editor to learn.  The commands
were a bit cryptic, the terms were different, and overall a bit of
a  struggle.  I started using it only knowing just enough commands
to get done what I needed to get done.


Editing Power

MicroEmacs has  all of the basic  text editing fuctions, including
marking text, deleting  marked text,  copying marked  text, saving
mark text to a  file, importing  a file,  and search  and replace.
MicroEmacs  can edit and display more than one file.  Each file is
loaded  into a buffer to edit.  Each  buffer can be displayed in a
seperate window.   There are commands to  create new windows, jump
between windows, resize windows, and delete windows.

MicroEmacs has various modes that it can work in.  The modes are:
     ABBREV  -  Saves  typing  by  automatically  expanding  known
abbreviations to full words.  Some abbreviations are built-in, but
more can be added.
   ASAVE - Automatically saves files after so many characters have
been changed (added or deleted).
    CMODE - Adds  a number of  features to help  programming in C,
such as  autoindentation, show matching open  brace ({) when close
brace  (}) is typed, and a # sign with leading white space will be
left flushed (for preprocessor directive). 
   CRYPT -  The file edited  is encrypted for  saves and decrypted
for reading, based on a user given encryption key.
   OVER - Overwrite mode.
    WRAP - Turns on word wrap.  The right margin is defined by the
user.
   VIEW - Read-only mode.

I  found that when  using the WRAP  mode, MicroEmacs is  not a bad
word   processor.   The  reformat  command  lets  you  reformat  a
paragraph after it's been edited.

One feature that  I really  have not  used is  Undo.  A  number of
commands are kept in memory (user configurable) and you can undo 1
or more commands.  You can even list the past commands.

Since MicroEmacs came from a Unix backgroud, it can "shell" out to
the operating system.  Since the QL  does  not  have  a  shell  to
execute, the built  in default is  to run Adrian  Ives Shell "sh".
This will allow  you to  do QDOS-like  commands, like  listing the
directory  of a disk.  You can also run/exec a program from within
MicroEmacs.  You  can edit a C program   and then run the compiler
from within MicroEmacs.


Macro Language

The most  powerfull  feature  of  MicroEmacs  is  having  a  macro
langauge.  Other editors have  ways  to  automate  tasks.   ED/QED
allows  you to enter a list of  commands and it will execute them,
even  repeatedly.  MicroEmacs allows all this, plus it supports IF
statements and WHILE loops.  All of the MicroEmacs commands have a
name,  so every command is available for  use in a macro.  Here is
an example of what a macro looks like:

     store-procedure get-word
        set $kill ""
        !force next-word
        set-mark
        !force end-of-word
        copy-region
        set %word $kill
     ;   write-message &cat "The Word is : " %word
     !endm

This procedure goes to the next word, marks it, and then copies it
into the "kill" buffer.

Macros  can be stored in  a file and executed  by reading the file
in, or  you can  create procedures,  read them  in, and  call then
whenever you need them.  You can even bind your procedure to a key
sequence so that it is run when you enter the sequence.

MicroEmacs  is really driven by the commands and not the keyboard.
The various commands are binded to a particular keyboard sequence.
Since only  the commands themselves perminate,  you can change the
keyboard commands to  suit your  prefered setup.   If you  want to
change  the save-file  command from  CTRL-X-CTRL-S to  CTRL-S, you
can.  This allows  MicroEmacs to  "emulate" virtually  any editor.
On the MicroEmacs web  page  there  is  a  macro  file  that  make
MicroEmacs behave  like the popular MS-DOS  editor, BRIEF (which I
believe is based on older WordStar commands).

MicroEmacs has a configuration file called emacs_rc.  This file is
nothing  more  than   a   macro   file   with   some   pre-defined
configuration.   You can  put in  your own  procedures or  you can
totally change the  configuration.  The  only thing  special about
this file is that MicroEmacs looks for it upon starting.


QDOS Support

Thierry  has added a lot  to MicroEmacs to make  it work better in
the QDOS environment.   He  has  added  support  for  Toolkit  II,
Pointer  Environment,   Menu   Extensions   (QMENU),   Environment
Variables, QPAC2 (for buttons), FileInfo II, and QTYP II.  Not all
of these  extensions are need to run  MicroEmacs, it checks to see
which extenions are resident and only uses those that are present.

The  biggest addition is  Pointer Environment menus.   Most of the
MicroEmacs commands can be executed by selecting them from a menu.
Without the menus, you  have  to  memorize  a  number  of  cryptic
commands.   The commands are still there,  but the menus make them
almost useless.

With  Environment   Variable   support,   you   can   change   the
configuration of MicroEmacs for QDOS specific features.  A list of
paths can be put in the PATH variable for MicroEmacs to search for
files.   SHELL defines which shell you want to use.  EMACS_POINTER
defines  what type of pointer (hand or cursor) to use.  EMACS_HOME
defines where the  emacs_rc  will  reside  (this  was  a  variable
Thierry put in at my request).

I  am not a user of FileInfo II, so I can't really explain exactly
how MicroEmacs interfaces with FileInfo II.  Since Thierry is also
the author of FileInfo II, I'm sure that it interfaces well.

If you  have the  Menu Extensions  loaded then  you can  copy text
to/from MicroEmacs  and the  scrap.  This  allows you  to transfer
text to/from other applications.

With QTYP  II, the SPELL mode is  usable.  It allows for real-time
spell checking or the use  of  the  "spell-check"  command,  which
spell  checks words in the current  buffer.  This feature was only
just recently added.   Theirry expects  to expand  it and  make it
more  usable.  Personally, I really like  the ability to run spell
checking  in an editor after I've type the text.  I find real-time
spell checking a  bit  of  a  pain.   The  interruption  of  spell
checking throws off my train of thought.

Thierry   has  even  made  the  mouse  implement  some  MicroEmacs
commands.  Besides moving the cursor around, using the right mouse
button to  drag across text, the text  is highlighted and put into
the  "kill" buffer.  The kill buffer is a temporary place to store
text.   The text can then be copied  from the kill buffer into the
current  buffer (by again using the  right mouse button).  This is
how MicroEmacs does cut & paste.


Running MicroEmacs

Since I've been  using MicroEmacs for  a while, setting  it up and
running it was fairly easy.  I'll explain the steps here to assist
someone new to MicroEmacs.

The  MicroEmacs  zip  file  is  fairly  large.   It  contains  the
executable,  the configuration  file, some  command file,  and the
source  code.  The whole package  needs a hard disk  or ED disk to
unzip to.  If you are proficient  with  unzip  or  have  ACP,  you
should  be able to unzip only the  portions you need.  It would be
nice to  have just a zip  file of only the  parts necessary to run
MicroEmacs, as most people don't need the source code.
The primary files needed for MicroEmacs are:

     emacs    - The executable
     emacs_rc - The configuration file

There are a number  of  command  (_cmd),  macro,  files  that  are
mentioned   in  the  configuration  file,  but  unless  you  these
commands, they  are not really  necessary.  In fact,  you can edit
the emacs_rc file to take any reference out.

You should put the emacs  executable  in  a  directory  for  other
executables  (defined by PROG_USE).  I'm using a RomDisq, so I put
MicroEmacs  in the directory ROM1_EDT_.  I  use the PTH device and
have PROG_USE set  to PTH1_ with  ROM1_EDT_ stored in  the PTH.  I
have also put the emacs_rc in ROM1_EDT_.

MicroEmacs firsts checks DATA_USE then PROG_USE when searching for
the  emacs_rc configuration  file.  Since  I had  the file  in the
PROG_USE directory with  DATA_USE  defined  to  FLP1_,  MicroEmacs
would first look at FLP1_ for the file and then look in ROM1_EDT_.
If I did  not have a floppy  in the drive, this  would add about 5
seconds  to the start up time.   After some heavy hinting, Theirry
added  the EMACS_HOME environment variable.  MicroEmacs now checks
to  see if this variable  is set.  If so,  it checks the directory
there for the  configuration file.   If not,  it defaults  back to
it's old behavior.   Now  MicroEmacs  comes  up  much  faster.   I
quickly added :
                  setenv "EMACS_HOME=rom1_edt_"
to my BOOT file.

If you unzip MicroEmacs to a  floppy  and  execute  it  there,  it
pretty  much works "right out of the box".  You can then configure
it  all you want.  The emacs_hlp file  is the QDOS README file and
covers  all of the features of the QDOS version.  Also included in
the  zip  file  is  the  original  MicroEmacs  documentation.   It
explains how  to use and  configure MicroEmacs.  Expect  to read a
bit  before attempting to really configure MicroEmacs.  With power
comes complexity.

My Impression

As  a user of  MicroEmacs for a  number of years,  this version of
MicroEmacs is  big jump in usability.   MicroEmacs was a powerfull
editor  that was anywhere from kind of hard to fairly hard to use,
depending on  what you wanted to do.   The addition of menus makes
it  easy to use.  I  have been wanting to  do more with MicroEmacs
macros,  but found it a bit confusing to figure out how to execute
them.   This was due mostly to  the key the "execute-file" command
was  bound to.  It was very unobvious to me how to get it to work.
A few months  ago I  sat down,  banged my  head against  the wall,
until it sunk in.   Then Theirry  came out  with this  version and
suddenly  it was so easy to just  select the command I wanted from
the menu.

With all  the new features and such, I  did find that this port of
MicroEmacs to  be slower, in screen  handling, than over versions.
I have attrubited this to  the  overhead  needed  by  the  Pointer
Environment  support.  It  takes a  few extra  cycles to  scan for
mouse  movement.  When executing  commands I have  not noticed any
slowness.  If  you have  MicroEmacs execute  a couple  of commands
from a  macro, it's very fast.  I wrote  a macro to do some search
and  replacing, printing out some text to the message line between
each  search.  The text flashed  by on the message  line so fast I
could not read it.


Your Impression

Your opinion of  MicroEmacs will  depend on  a number  of factors.
Depending on the level  of  complexity  you  like,  you  may  find
MicroEmacs harder to run  than other  QL editors.   If you  have a
basic QL system  (non-(Super)Gold Card),  you may  find MicroEmacs
kind of slow, when compared to an editor like QED (which I believe
was written in Assembly).

I  would not recommend MicroEmacs to anyone that is not willing to
spend some time to learn  the  powerfull  features.   If  you  are
comfortable with  your current  editor and  it satisfies  all your
needs, then  MicroEmacs may not  benefit you.  If  you are looking
for  more capability from your editor, then MicroEmacs is probably
something worth looking into.



    Source: geocities.com/siliconvalley/pines/5865

               ( geocities.com/siliconvalley/pines)                   ( geocities.com/siliconvalley)