File psl-1983/nmode-emacs.txt artifact 4eebcfbf6a part of check-in eb17ceb7f6


NMODE for EMACS users - A quick comparison 
Alan Snyder (2 February 1983)
--------------------------------------------------------------------------------
Introduction

If you are familiar with EMACS on the Dec-20, then you should have little
trouble using NMODE, since NMODE is largely compatible with EMACS.  If you are
using an HP terminal or the 9836 VT52 emulator, then you can use the cursor
keys and other special function keys with NMODE.  There are some differences
between NMODE and EMACS, and these are described below.  What you are most
likely to find is that there are some EMACS commands that have not (yet) been
implemented in NMODE; section I below lists the most significant of these.  (We
are not promising to implement all EMACS commands, but if there is some command
you just can't live without, let us know, or volunteer to implement it
yourself!)  Section II describes areas of inconsistency between NMODE and
EMACS; some of these are deficiencies in NMODE that may someday be fixed,
others are regarded as features of NMODE, and others are just plain differences
which are not likely to go away.  Section III lists other known deficiencies in
NMODE, many of which we hope to fix.  Section IV summarizes those features of
NMODE that EMACS doesn't have.

--------------------------------------------------------------------------------
I. Things that EMACS has that NMODE doesn't (an incomplete list)

* Auto Save
* Help Character (C-_)
* Many 'options' variables (NMODE has almost none)
* Most Minor Modes, including:
   Word Abbrev Mode
   Auto Arg Mode
   Atom Word Mode
   Overwrite Mode
   Indent Tabs Mode
* The Tags Package
   M-. (find tag)
   M-X Visit Tag Table
   M-X Tags Search
* Local Modes specification in files
* Syntax Table
* Miscellaneous commands:
   C-M-G (grind form)
   M-= (count lines region)
   C-M-Z (exit recursive edit)
   M-Esc (Execute Minibuffer)
   C-X Esc (ReExecute Minibuffer)
* Mail Commands:
   C-X M (Send Mail)
   C-X R (Read Mail)
   M-X Check Mail
* Comment commands:
   C-; (indent for comment)
   C-M-; (kill comment)
   Return (skip trailing comment terminator)
   C-X ; (set comment column)
   M-N (down comment line)
   M-P (up comment line)
   M-J or M-Linefeed (indent new comment line)
* Indentation commands:
   C-X Tab (indent rigidly)
* Text-Processor commands:
   M-# (change font word)
   M-_ (underline word)
   C-X # (change font region)
   C-X _ (underline region)
* File commands:
   C-X C-D (directory display)
   C-X C-Q (set file read only)
   M-X Clean Directory
   M-X Copy File
   M-X List Files
   M-X Reap File
   M-X Rename File
   M-X View Directory
   M-X View File
* Page commands:
   C-X [ (previous page)
   C-X ] (next page)
   C-X L (count lines page)
   C-X C-P (mark page)
   M-X What Page
* Many M-X commands, including:
   M-X Compare Windows
   M-X List Matching Lines
   M-X Occur
   M-X Tabify
   M-X Untabify
   M-X View Buffer
* Keyboard macros
   C-X (
   C-X )
   C-X E
   C-X Q
   M-X Name Kbd Macro
   M-X Write Kbd Macro
* Command Libraries
   M-X Kill Libraries
   M-X List Library
   M-X List Loaded Libraries
   M-X Load Library
   M-X Run Library
* Spelling Correction (M-$)
* Narrowing:
   C-X N (Narrow Bounds to Region)
   C-X P (Narrow Bounds to Page)
   C-X W (Widen Bounds)

--------------------------------------------------------------------------------
II. Inconsistencies between NMODE and EMACS

  A. NMODE Features

* NMODE DIRED 'E' and 'V' commands allow editing of the file.  These commands
  do not use "recursive editing": arbitrary switching between buffers and
  windows is allowed; C-M-L returns to the previous buffer (not C-M-Z).
* NMODE has a separate ring of marks for each buffer.
* NMODE C-X C-B brings up a buffer browser, instead of just listing the buffers.
* NMODE's Lisp parsing commands recognize comments, string literals,
  character literals, etc.  For this reason, the commands C-M-N (Forward
  List) and C-M-P (Backward List) are not really needed, although they
  are presently still provided.
* When the fill prefix is non-null, NMODE treats lines not beginning with the
  fill prefix as delimiting a paragraph (ZMACS does this, too).  EMACS will
  treat a single preceding line without the fill prefix as the first line of the
  paragraph and will insert the prefix onto that line when you do M-Q.
* NMODE's incremental search allows you to rubout the old search string
  (inserted by an immediate C-S or C-R) one character at a time, instead of
  all at once (like EMACS).

  B. NMODE Deficiencies (may be fixed someday)

* NMODE Query-Replace does not alter the case of the replacement string,
  does not support word search, does not support recursive edit.
* NMODE does not have a ring buffer of buffers; the default buffer for C-X B
  may be different than in EMACS.
* NMODE's incremental search does not escape to a non-incremental search,
  does not do word searches, always ignores case.
* No completion on File Name input.
* NMODE doesn't set the Mode from the first line of a file.
* In NMODE, M-digit does not enter autoarg mode (i.e., if you then type a
  digit (without Meta), the digit is inserted.
* NMODE search commands never set the Mark.
* NMODE lacks true read-only buffers.
* NMODE's Dired does not support C, H, or N.  Dired commands do not take
  a command argument.
* NMODE's Kill Buffer commands ask for confirmation rather than offering
  to write out the buffer.
* NMODE's C-M-Q command does not use the command argument.
* NMODE's C-X H command does not use the command argument.
* NMODE's M-< command does not use the command argument.
* NMODE's M-> command does not use the command argument.
* NMODE's C-X C-Z command does not save any files.
* NMODE's M-X Make Space command does not offer to delete buffers, kill
  rings, etc.
* NMODE's C-M-R command works only in Lisp mode (it doesn't do paragraphs).
* NMODE's Return command doesn't delete blanks and tabs when moving onto
  a new line.
* NMODE's Return command is not changed in Auto Fill mode.
* NMODDE's LineFeed command is quite a bit different: (1) it doesn't delete
  spaces before the inserted CRLF; (2) it doesn't use the fill prefix to
  indent; (3) it passes the command argument to the Return command, rather
  than to the Tab command.
* NMODE's C-X T command doesn't try to readjust the marks.
* NMODE's C-X 4 command recognizes only B and F as options (not C-B or C-F).

  C. Just Plain Differences

* NMODE customization is completely different than EMACS customization.
* NMODE M-X commands always prompt for their arguments; Escape is not a
  terminator for the command name.
* Find File in NMODE creates a buffer whose name is of the form "foo.bar",
  rather than "foo".
* In NMODE, the various Lisp-related commands (C-M-B, etc.) are defined
  only in Lisp mode.
* NMODE's "defun" commands don't set the mark.
* C-M-L means "return to previous buffer" instead of "insert formfeed".
* C-] is a prefix character (in Lisp mode) instead of meaning "abort".
* C-X P means "write screen photo" instead of "narrow bounds to page".
* NMODEs text filling commands compress non-leading tabs into spaces;
  EMACS leaves them alone.

--------------------------------------------------------------------------------
III. Known deficiencies of NMODE

* During prompted character input, the cursor remains in the edit window.
* Printing to the OUTPUT buffer is slow.
* Quitting out of NMODE to the standard break handler won't restore echoing.
* NMODE does not provide a good way to interrupt a Lisp-E execution or printout.
  (The only way is to ^C NMODE and then START it.)
* "Typeout" is clumsy.
* If you type ^^x to get C-X, the prompt string is sort of strange.

--------------------------------------------------------------------------------
IV. Things that NMODE has that EMACS doesn't

* Miscellaneous Commands:
  M-Z - format comment (automatically sets the fill prefix)
  C-X V - toggle between normal and inverse-video
  C-X < - scroll window left
  C-X > - scroll window right
  C-X P - write screen photograph to file
  C-X E - exchange windows
* Lisp Interface Commands
* Buffer Browser
* Split Screen option for Dired (and the Buffer Browser)
* Two-Screen option (on 9836 with auxiliary color monitor)

-------------------------------------------------------------------------------


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]