.* EMACS.RUNI, EMACS>INFO, EMACS TEAM, 01/07/85
.* Info file for rev. 19.4 EMACS
.* Copyright (c) 1984, Prime Computer Inc., Natick, MA  01760
.nf
.width 100


Subject:  EMACS

Release:  19.4

Date:     January 7, 1985

     EMACS   Release  19.4  is  a  "Functionality  Release."    Without
sacrificing the significant performance gains made at previous releases
of  the  product,  we  have significantly enhanced the functionality of
EMACS at release 19.4.

     The following set of Prime  Technical  Publications  on  EMACS  is
available:
   - The EMACS Primer (IDR6107-183P)
   - The EMACS Reference Guide (IDR5026)
   - The EMACS Extension Writing Guide (IDR5025)
   - The EMACS Standard User Interface Guide (DOC7446-192P).
   - EMACS PT45 Template (IDR6135-001)
   - EMACS Update (PTU2600-105)
   - EMACS RPG Mode, REV. 19.3 (PTU2600-107)

     The  following  additional  document will be available in the 19.4
timeframe:
     EMACS on the PT200 (UPD7446-11A). This will be an update to
     the current EMACS Standard User Interface Guide.


     Some components of this documentation set  are  much  more  recent
than  others.    For  that  reason,  we  caution  you  that more recent
documentation takes precedence over  less  recent,  and  that  to  some
unfortunate extent, the most valid order in which to read the preceding
EMACS literature is MOST to LEAST recent!

                           GENERAL CAUTION:
           THE "NOT ENOUGH SEGMENTS" ERROR AT REVISION 19.4

     Unless your user process has been allocated an adequate number  of
"dynamic  segments,"  you  will  be  plagued  by EMACS telling you "NOT
ENOUGH SEGMENTS" and having many of  your  commands  (e.g.,  find_file,
insert_buffer, etc.) aborted.  The fix for this is very simple.

     To  run  EMACS  without  getting such errors, you should have your
System Administrator set your allowed number of dynamic segments to  at
least 100.  This should only be done by the System Administrator, using
EDIT_PROFILE.

.>{{BEGIN TABLE OF CONTENTS}}

1.  {{NEW FUNCTIONALITY}}

    1.1  New EMACS functions
    1.2  New EMACS Atoms
    1.3  New Terminal Support:  the Prime PT200
         1.3.1  Command Line Arguments -ttp pt200 and -ttp pt200w
         1.3.2  Saving/Restoring the state of PT200 Screen Display
                Mode
         1.3.3  New Command Line Option:  -save_screen for PT200
                in 80x48 mode
         1.3.4  "Change" in the setup of the PT200 CURSOR-
                FUNCTION/NUMBER Pad in EMACS Fundamental Mode, and
                its relation to the PST100 PF/NUMBER Pad
    1.4  Changes to EMACS Which Are Not Terminal-Specific
         1.4.1  Removal of the Limitations on the
                primos_internal_screen Command
         1.4.2  New Global Switch Controlling Level of User
                Feedback:  verbosity_level$
         1.4.3  OPTIONAL Change to feedback from quit command when
                buffers are unsaved
         1.4.4  OPTIONAL Change to Feedback From <CTRL>P
         1.4.5  Slight change to internals of COBOL mode
         1.4.6  New Command or Macro: fundamental for re-
                establishing Fundamental Mode bindings
    1.5  Changes to the Standard User Interface
         1.5.1  Change to primos_command command
         1.5.2  Substitution of the find_file for the get_file
                function
         1.5.3  Addition of new predefined PRIMOS commands:  LD,
                TLD, VLD
         1.5.4  Changes to attach and spool commands
         1.5.5  Miscellaneous Changes to Internals of the SUI
         1.5.6  New Commands or Macros: sui and suix for
                re-establishing SUI or SUIX Mode bindings
         1.5.7  Horizontal Scrolling Has Been Added to the SUI
         1.5.8  Changes to the SUI HELP screens
         1.5.9  SUI Support in both 80x24 and 132x27 display modes
                for the PT200 terminal
         1.5.10  Normal Operation of SUI/SUIX on PT200 terminal
         1.5.11  A Note on the BS and DEL keypaths in SUI/SUIX
                 versus Fundamental Modes
    1.6  Changes in the EMACS* Directory
         1.6.1  Contents of EMACS*
         1.6.2  Contents of EMACS*>INFO
         1.6.3  Contents of EMACS*>EXTENSIONS
         1.6.4  Contents of EMACS*>EXTENSIONS>SOURCES
         1.6.5  Contents of EMACS*>EXTENSIONS>SUI
         1.6.6  Contents of EMACS*>EXTENSIONS>SUI>SOURCES
         1.6.7  Contents of EMACS*>EXTENSIONS>SUI>UNSHARED

2.  {{PROBLEMS FIXED -- USER VISIBLE}}

3.  {{PROBLEMS FIXED -- NOT USER VISIBLE}}

4.  {{OUTSTANDING PROBLEMS}}

5.  {{PERMANENT RESTRICTIONS}}

6.  {{ENVIRONMENT}}

7.  {{INSTALLATION AND BUILD PROCEDURES}}

.>{{END TABLE OF CONTENTS}}

.>{{BEGIN TEXT}}


1.  {{NEW FUNCTIONALITY}}


1.1  New EMACS functions

     The following  previously-undocumented  functions  are  documented
here,  in  a  format similar to that used in EMACS*>INFO>DESCRIBE_EMACS
where other functions, and perhaps these new ones, can be accessed  via
the describe command.

autoload_lib    extended  command that fasloads a file and executes the
                given command.

                              (autoload_lib atom string)

                The arguments are an atom which is the  command  to  be
                executed and a string which is the pathname of the file
                containing the command.  Both arguments  are  required.
                The  file  must  be in "fasload" format.  (See fasdump,
                fasload and dump_file.)

clerical$       this is another user type similar to  programmer$  (see
                EMACS  Reference  Guide,  IDR 5026, page A-9 thru A-11)
                but it is much simpler.  All files are loaded with fill
                mode turned on.

create_text_save_buffer$
                goes to or creates the next buffer in a  circular  list
                of ten buffers, deletes the contents of that buffer and
                inserts the string argument into that buffer.  It saves
                the text in a temporary buffer.

                           (create_text_save_buffer$ string)

                where the argument is a string of text to be saved.

cursor_info     returns the asked for pro                the   numbered  car.  If  the  optional  'how_many'  is
                specified it returns the list with that number of items
                starting at the numbered car.

suffix$         returns  the  substring after the rightmost '.'  in the
                name of the current buffer or the passed treename.   If
                the  string  has no periods or there is a '>' after the
                rightmost period, then this returns a string consisting
                of a single space.

                                  (suffix$ [string])

                where  string is an optional argument and is assumed to
                be a pathname.

sui             Establishes the Standard User Interface  for  terminals
                which support it.

suix            Establishes the Standard User Interface with Extensions
                for terminals which support it.

sui_exchange_mark
                SUI  version  of  exchange_mark  command.    More  user
                feedback is provided.

sui_horiz_left  SUI version of horiz_left command.

sui_primos_command
                SUI version of primos_command command.

sui_set_tabs    establishes TAB settings for SUI users.

tld             Does  a  PRIMOS  LD  -LONG -SRTD command at the current
                attach point.  (Operative in SUI only)

unused_key_feedback$
                Bound to unused keys in SUI.

unused_mb_key_feedback$
                In mb_mode, bound to unused keys in SUI.

vld             Does a PRIMOS LD -LONG -SRTN  command  at  the  current
                attach point.  (Operative in SUI only)


1.2  New EMACS Atoms

verbosity_level$
                Controls level of user feedback from quit function  and
                CONTROL-P  Handler.    Default  value  =  2.    Further
                documentation below.

sui_info_message_time$
                Controls length of time that certain SUI error messages
                are displayed at the bottom of  the  screen.    Initial
                value  =  3000,  measured  in  milliseconds.    Further
                documentation below.

     A new COMPILE command has been installed.  It is much faster  than
the  previous  one in scanning and displaying errors.  It allows a user
to include language options on the COMPILE  command  line.    Languages
supported: C, COBOL, FTN, PMA, RPG, PL/1, PL/1g, Pascal, CBL, VRPG, and
SPL.


1.3  New Terminal Support:  the Prime PT200

1.3.1  Command Line Arguments -ttp pt200 and -ttp pt200w

     EMACS now recognizes two new arguments to the  -ttp  Command  Line
option.      When   given   with   no   additional  -width  or  -height
qualifications, -ttp pt200 will enter EMACS with normal support for the
PT200  terminal  (see  Section  1.5  below for details on SUI support).
EMACS will assume you wanted its screen defaults for the  PT200,  which
are -width 80 and -height 24.

     If  you  enter EMACS with -ttp pt200w EMACS will come up in 132x27
display mode.  132 character-wide files can be displayed with  no  need
for horizontal scrolling.  The text display area is 24 lines high, with
the normal 3 lines for mode line and minibuffer.

1.3.1.1  Normal use of -height and -width Command Line Options for -ttp
         pt200

     If you add only the option -width N to the EMACS command line, and
N  is  less  than  81,  EMACS  will  come up after having set the PT200
terminal into 80x24 display mode.  If N is greater  than  80  and  less
than 133, EMACS will come up on the PT200 terminal after having set the
terminal's display into 132x27 mode.  In both cases, the  actual  EMACS
display window will be N characters wide, which may be smaller than 132
characters.

     If you add ONLY the option -height N to the  EMACS  command  line,
and  N is greater than 5 and less than 25, EMACS will come up in normal
80x24 display mode.  If N is between 25 and 27,  AND  -width  is  > 80,
EMACS  will  come  up after having placed the PT200 in 132x27 mode.  In
both cases, the EMACS display window will be N  lines  high,  including
mode line and EMACS MiniBuffer lines.

     Thus  the  -ttp pt200w Command Line Option is simple shorthand for
the text

-ttp pt200 -height 27 -width 132

on the command line.  In fact,  if  your  command  line  contains  -ttp
pt200w,  any  arguments  to  -height or -width will be ignored.  If you
want any nonstandard screen height or width, use -ttp pt200 and go from
there.

1.3.1.2  Limitation:  No PT200 display mode-switching within an EMACS
         session

     It  is  not  possible  at  this release to issue any EMACS command
which will switch a given EMACS session between the PT200's  132-column
and 80-column modes.  To switch display modes, the user must exit EMACS
and return in the other mode.

1.3.2  Saving/Restoring the state of PT200 Screen Display Mode

     The PT200 can operate in any of four  configurations  of  its  own
internal display memory:  80x24, 80x48, 132x27, and 160x24.

     EMACS, when IT is in control of the terminal, will place it EITHER
in 80x24 OR in 132x27 mode.  This is because  EMACS  makes  no  use  of
within-terminal  display  scrolling  capabilities, either horizontal or
vertical.  EMACS handles all of the  scrolling  responsibility  itself.
When you are not using the SUI, the total size of your EMACS screen may
be between 6 and 27 lines in -height and between 10 and 132 columns  in
-width.

     The  user  can call EMACS from the PT200 terminal at PRIMOS level,
when it is operating in any of its four configurations of its  internal
display memory.

     In  all  cases, upon normal exit from EMACS, the PT200 is returned
to the "going-in" state of its internal display memory.

1.3.3  New Command Line Option:  -save_screen for PT200 in 80x48 mode

     The normal behavior of EMACS, upon the  termination  of  an  EMACS
session,  is  to  clear the contents of the terminal display memory and
leave the user with the PRIMOS prompt, at the top of the screen.

     Users will now be able to invoke EMACS with the  addition  of  the
new command-line option -save_screen.  This will not have any effect on
any terminal other than the PT200 (and its Prime terminal successors).

     The -save_screen option only has an effect when the PT200 terminal
is  in  80x48  mode  before going into EMACS and the 132x27 mode is NOT
used inside of EMACS.  The save_screen option will be accepted  without
error,  but  will  have  no  effect, if the user invokes EMACS when the
PT200 terminal is in any state other than 80x48 screen display.

     When the a in
       EMACS Fundamental Mode, and its relation to the PST100 PF/NUMBER
       Pad

1.3.4.1  The previous situation on the PST100 terminal's PF/NUMBER Pad

     On the PST100 terminal, the PF/NUMBER (PF/N) pad  can  operate  in
either  mode,  at  the  PRIMOS  level.    When  EMACS  is  operating in
Fundamental Mode on the PST100, the PF/N pad has  no  role  in  running
EMACS  functions.    The PF/N pad used to be set invariably into NUMBER
pad mode when EMACS was running in Fundamental Mode.  However, when  in
SUI  or  SUIX,  the keys used to be set invariably into PF mode so that
they can run the begin_line, end_line, etc., functions labeled  on  the
keyboard overlay template.

     This  dichotomy allowed the EMACS Fundamental Mode user to type in
lots  of  numbers  using  the  number  pad.    Unfortunately,  in   our
estimation,  a  Fundamental Mode EMACS user isn't likely to be the type
of user who needs to use the number pad in "calculator mode."    S/he's
far  more  likely  to be the kind of person who might well like to bind
their own functions to the PF PAD as well as the FUNCTION KEYS  on  the
top row of the terminal keyboard.

     The PST100 SUIX user who wished to bind new or different functions
to the PF pad encountered no obstruction.  All s/he had to  do  was  to
associate  the  PF  keypath  with  the  function name, using one of the
set_key, set_mode_key, or set_permanent_key commands.  The problem with
this  is  that the SUIX functionality set and function layout is a very
small base upon which to construct a  more  powerful  interface.    One
might  have  wished to give a better base to Fundamental Mode users, so
they might "start from scratch" more easily.

     The reason a PST100 Fundamental  Mode  EMACS  user  used  to  have
difficulty  in  rebinding  the  PF  keys is that the (refresh) function
associated with Fundamental Mode EMACS  for  the  PST100,  at  previous
releases, contained a terminal command string which forced the PF/N pad
into NUMBER mode.  The primitive-level refresh  function  is  run  many
times  per  session,  thus  continually  "forcing  the  issue."    This
(refresh)  function  was  written  in  SPL.    Users  could  rewrite  a
substitute  for  it  in PEEL, but this was technically difficult, given
the complexity of the PST100's control sequences.

1.3.4.2  The NEW situation on the PST100 terminal

     To avoid disrupting current PST100 users' EMACS  Fundamental  Mode
interfaces at this release, we have not changed the default handling of
the PST100 PF/N pad.  For Fundamental Mode, the PF/N pad setting is NOT
AFFECTED at startup.  SUI/SUIX users' PF/N pads are forced into PF mode
at startup.   We  have  also  removed  from  the  respective  (refresh)
functions  used in both Modes, the PST100 commands which force the PF/N
Pad into one or the other mode.

     Thus, the EMACS Fundamental Mode user wishing  to  bind  functions
onto the PF/N pad can easily include in their library file, an EMACS

(send_raw_string "~c[[>10h")

command  which  switches  the pad into PF mode.  It will stay there for
the balance of the session,  unless  countermanded  by  a  similar  raw
string  terminating  in  "10l"  (the final character is a lowercase L).
The PST100 (refresh) function does not affect the mode setting  of  the
PF/N pad.

     The  PST100  SUIX  user gets the switch into PF mode "for free" in
the  initialization  sequence  used  for  that  mode.      The   PST100
(sui_refresh)  function  does  not  affect the mode setting of the PF/N
pad.

The PST100 PF/N Pad vs. the primos_internal_screen Command

     One major, but subtle, exception to  this  "hands-off"  policy  is
important  for  SUI/SUIX  users only: in the control sequences given to
the PST100 when returning from the primos_internal_screen command.(This
command  is  accessible  either  by  name,  or  by  prefixing !! to the
argument of a primos_command command.  It is also used in the STAT, LD,
TLD, and VLD commands noted elsewhere in this document.)  When EMACS is
repainting the SUI/SUIX screen, the control sequence forcing  the  PF/N
pad  back into PF mode is invariably given.  Thus, if the SUI/SUIX user
had, for some reason, had the PF/N pad  in  N  mode  prior  to  such  a
command, s/he would find the pad back in PF mode after it.

     There  is  another  side to this coin, for Fundamental Mode users.
The PF/N pads of Fundamental Mode users of the PST100 terminal will not
be  affected  on  returning  from  these  commands --  but they WILL be
affected, upon exit to PRIMOS level.  Here's how it works.  If the user
starts  EMACS  Fundamental  Mode  with  the PF/N pad in N mode, it will
remain in N mode inside EMACS.  If the  pad  is  switched  to  PF  mode
within the session, it will remain so through normal refresh functions.
However, if a primos_internal_screen command  is  given,  the  terminal
will be reset to its going-in state, including N mode for the PF/N pad,
for that command; and it will NOT be forced  back  into  PF  mode  upon
return to EMACS Fundamental Mode.

1.3.4.3  The corresponding key pad on the PT200:  The CURSOR-
         FUNCTION/NUMBER pad (CF/N)

     The  pad  corresponding  to  the  PST100's  PF/NUMBER  pad  is the
CURSOR-FUNCTION/NUMBER pad.  (The old PF keys have moved  elsewhere  on
the  PT200  keyboard.)    The CF/N pad can be toggled between these two
modes from the PRIMOS level, using the NUM LOCK key.   When  in  NUMBER
mode,  the  NUM  LOCK led is lit up.  When in CURSOR-FUNCTION mode, the
pad sends several different ESC sequences to the host, which EMACS  SUI
uses for cursor control and suchlike.

1.3.4.4  Behavior of PT200's CF/N pad in EMACS

     At  this  release  of  EMACS  for  the PT200 terminal, the default
behavior of the CF/N pad is similar to the  PF/N  pad  of  the  PST100:
that  it  will  be placed in CURSOR-FUNCTION mode as SUI/SUIX modes are
started up, and will be untouched in the startup of  Fundamental  Mode.
This   facilitates   users'   binding   their   own  functions  to  the
CURSOR-FUNCTION pad in both SUI/SUIX and Fundamental Modes.  Now, under
default  conditions  for  PT200 Fundamental Mode users, the avior
of  commands using it.  Of course, if they do change it, they must take
care to make its new value a valid one.

     There are four  "logical  levels"  for  the  new  verbosity_level$
variable.  They are all entered as integers:

0     This  signifies  the  "old-style" feedback or the lowest possible
      level of user feedback, for newly-written functions.

1     The number 1 signifies a "low" level of feedback.

2     The number 2 signifies a "medium" level of feedback.  THIS IS THE
      NEW DEFAULT VALUE FOR THE verbosity_level$ GLOBAL VARIABLE.

3     The  number  3 signifies a "high" level of feedback.  While it is
      not used at present, it could be used in the future.

     It is our intention that EMACS command writers test the  value  of
this  variable  and  "do action A if verbosity_level$ is 1 or greater,"
etc.; or they can have their commands do a different thing for each  of
the four logical levels.

     As  far as the two commands below are concerned:  If users wish to
reinstate the original behavior of the quit command, or of the response
to  the  <CTRL>P  key, all they have to do is incorporate the following
into their user library file:

(setq verbosity_level$ 0)      ; where the argument is an UNQUOTED zero

     As usual, users can  write  macros  which  control  the  value  of
verbosity_level$ in a more automated and/or user-friendly manner.

1.4.3  OPTIONAL Change to feedback from quit command when buffers are
       unsaved

     One of the more cryptic pieces of user feedback that EMACS used to
produce  was  given  if  the  user  attempts  to  quit  EMACS  via  the
<CTRL>X<CTRL>C  command in Fundamental Mode, or by the key labeled EXIT
(PT45) or QUIT EMACS (PST100/PT200) in the SUI.

     If, at the time of this command, there are no buffers with unsaved
changes,  EMACS  simply  halts  with  no  errors and no problems.(It is
debatable whether one might still like to be required  to  confirm  the
quit command before leaving an entire editing session's context, but we
have not changed that at this release.)

     If, however, there are buffers with unsaved changes  (i.e.,  there
are  buffers  for  which the * is shown on the mode line between buffer
(name) and the associated  filename),  EMACS  always  used  to  do  the
following:

   - It displays, on the top of the screen, over any text therein,
     a list of the unsaved buffers and the associated filename(s),
     if any;

   - It prompts the user in the MiniBuffer with the question:

     Modified buffers, exit?

     EMACS  then  requires  the user to input an unambiguous Y, y,
     yes, etc., before allowing the EMACS  session  to  terminate.
     If  the  user  responds N, etc., EMACS wipes away the list of
     unsaved buffers and the session continues normally, as if the
     whole thing never happened.

     This latter question has always confused beginning users.

     At   this   release,   we   have   changed  not  the  behavior  of
overwrite-listing the unsaved buffers, but the language of the question
itself.    Under  the  above circumstances, the new default behavior of
EMACS is to prompt:

Above list of modified buffer(s) not saved to file(s).  Quit anyway?

     If the user wishes to retain the old form of the question in  this
case,  the  only  thing required is to set verbosity_level$ back to the
number zero 0.

1.4.4  OPTIONAL Change to Feedback From <CTRL>P

     At  previous  EMACS  releases,  typein  of  <CTRL>P  produced  the
clearing of the screen and the display of the text:

Type REN to abort command, START to continue.

     The  distinction  between  REN and START has always been vague for
the less experienced EMACS user.  It is simply the  difference  between
halting  ongoing  EMACS command activity (if any) before repainting the
screen, or simply continuing whatever was going on, as if  <CTRL>P  had
not been typed in the first place.

     For  example  if  you're  in  a  100,000-line file and you start a
global replace of FOO with BAR, and while it's going along you say  "Oh
no,  I  shouldn't  have  done that!" and hit <CTRL>P, you can abort the
ongoing command with REN and then press RETURN, or continue without any
interruption  with START.  If you had no EMACS command in progress when
<CTRL>P was pressed, there is no difference between the two responses.

     The newly-added default version of EMACS's feedback in  this  case
makes   that  distinction  much  clearer  and  will  also  prevent  the
unintentional wiping-out of an entire EMACS editing context.

     The first thing that happens is that the terminal's bell  is  rung
and  the  EMACS  screen  is cleared.  All typeahead is flushed, and the
terminal display memory is restored to its "going-in state."  Then  the
following text appears on the screen.

-----------------------------------------------------------------------
CONTROL-P typed.

To really Quit from EMACS, type Q
To return to EMACS and Abort the current command (if any), type A
To return to EMACS and Continue with no interruption, type C

Confirm your choice with the RETURN key.
Typing the RETURN key without making a choice is the same as Continue.

(If no EMACS command was executing when you pressed CONTROL-P,
 then Abort is the same as Continue.)

You may need to refresh the screen if you choose to re-enter EMACS.

C, A, or Q:
-----------------------------------------------------------------------

     All  responses other than a bare RETURN, or Q, A, or C preceding a
RETURN, result in the repetition of the last-line prompt.

     Thus, if you mistakenly type <CTRL>P, you CANNOT lose your  entire
editing  context  and  return  to  PRIMOS level without hearing a bell,
getting your typeahead flushed, and then typing Q and then RETURN.  The
distinction  between returning after Aborting an ongoing EMACS command,
and simply Continuing, is also somewhat clarified.

                              PLEASE NOTE

     The user is told to refresh the screen after returning control  to
EMACS,   because  it  probably  WILL  be  necessary.    SUI  users,  in
particular, will almost SURELY need to press <CTRL>L or their CLEAR  or
RESET keys to re-establish the SUI's reverse-videor  command  was  given,  the  new
     command   executes   the   appropriate   highlight  function,
     restoring the reverse videoed screen command area.  This  was
     a disconcerting lack in earlier SUI releases.

1.5.2  Substitution of the find_file for the get_file function

     The  get_file  function  has  been  removed  from  the  SUI.   The
Fundamental Mode find_file function has been put in its place.

1.5.2.1  Advantages of find_file over get_file

     With the newly-available find_file function, SUI users will now be
able  to  inspect many files simultaneously, without having to save one
before looking at another.  They will also be able to use  PRIMOS-level
wild  cards  (@-signs) as arguments to the Find file:  prompt, and load
several found files simultaneously.

     SUIX users will have more reason to take advantage of the  <ESC>P,
<ESC>N, <CTRL>Xb, etc., commands.  See the documentation.

1.5.2.2  Disadvantages of the obsolete get_file function

     The  get_file  function  was  written in the misplaced belief that
"the fewer files you can edit at a time, the better."  While  this  may
not be such a bad idea for the true novice, the implementation was full
of holes.

   - It was possible to erase a buffer so that if you returned  to
     it later in the session, it would unexpectedly be empty!!

   - Despite  its  design  goal  of never allowing users to take a
     file off the screen without "saving" it, get_file  was  never
     capable  of  completely  avoiding the Modified buffers, exit?
     query on exit, if you used TWO FILE mode in the right way.

   - It did not mix at all well with EMACS EXPLORE mode, a set  of
     functionality we want SUIX users to take more advantage of.

     For all the above reasons, Fundamental Mode find_file function has
been substituted for the get_file function originally bound to the  key
labeled GET FILE.

1.5.2.3  Implications for SUI template labeling

     The  corresponding  key  of the PT200 SUI template is labeled FIND
FILE instead of the old GET FILE.

     PT45 and PST100 users are encouraged to revise the GET FILE labels
of their SUI templates to track this change.

     The  "pros  and  cons" of find_file vs. get_file are summarized in
the new FIND FILE screen which replaces the GET FILE screen in the  SUI
HELP system.

1.5.2.4  Possible retention of the use of the unsupported get_file
         function

     The  old  get_file  PEEL  code  has  been left in the shared EMACS
library, so that any user wishing to keep on using it can  re-establish
the old keybinding.

     If  you  wish to return temporarily to the use of the old GET FILE
function on the "appropriate" key, issue the set_get_file command after
pressing  the  COMMAND MODE key.  You can return with the set_find_file
command.

     If you wish to permanently retain the binding of  the  unsupported
get_file  function  to  the  GET FILE key on your terminal, add to your
EMACS library file:

(set_get_file)

1.5.3  Addition of new predefined PRIMOS commands:  LD, TLD, VLD

     Previous releases of the SUI allowed the user to give the commands
L  or LISTF to the Command:  prompt raised by pressing the COMMAND key.
Either of these two inputs results in EMACS running  the  PRIMOS  listf
command as a primos_internal_screen.

     The LISTF is done at your current directory attach point.

     Three  new  commands have been added to this release of SUI.  Here
are their names and some of what they do.

Name:                          Underlying PEEL:

ld      (primos_internal_screen "ld")

        Thus this command will simply run the PRIMOS LD function at the
        current  attach point, and when it is complete, the screen will
        be restored to its state within EMACS.

tld     (primos_internal_screen "ld -long -srtd")

        This command gives a "Time-ordered LD" at  the  current  attach
        point, and then returns control to EMACS at its conclusion.

vld     (primos_internal_screen "ld -long -srtn")

        This  command gives a "Verbose LD" at the current attach point,
        and then returns control to EMACS at its conclusion.

     Of course, EMACS  will  run  the  appropriate  one  of  the  above
commands  no  matter  if  the  user types in ld, LD, tLD, or VLd at the
Command:  prompt.  EMACS  is  not  case-sensitive  when  prompting  for
command-names in the extend_command function.

     All  the above commands have one added innovation at this release:
They add,  to  the  above  underlying  PEEL,  a  prompt  shown  on  the
PRIMOS-level screen, at their conclusion.  This instructs you to "Press
CONTROL-G to repaint the EMACS screen."  This new prompt has been added
to   alleviate   SUI   users'  possible  confusion  at  the  end  of  a
directory-listing's output.  When  such  feedback  is  done,  EMACS  is
"hanging  there,  waiting"  for any user typein.  The user may not know
this.(In fact, most any EMACS command will serve to return  the  user's
screen to normal, but using <CTRL>G is a good habit to get into.  Since
EMACS  is  "hanging  there"  waiting  for   any   input,   a   normally
self-inserting  typing key will both return you to EMACS and insert the
character, which may be confusing.   Any  SUI/SUIX  function  key  will
work.    Any  unbound  function  keys  will  cause  errors and possible
spurious insertions.  The help_on_tap function <CTRL>_ can be  executed
completely  without  causing  a  return  to  the  normal  EMACS  screen
display.)

     Nothing in this section says it's impossible for the user to issue
his/her  OWN  primos_internal_screen  commands  at any time.  All we're
doing above  is  providing  "canned"  commands  to  make  life  easier.
However,  user-issued  primos_internal_screen  commands  do not get the
above-mentioned prompt instructing the  user  to  "Press  CONTROL-G  to
repaint the EMACS screen."

1.5.4  Changes to attach and spool commands

     At  this  release,  the  user feedback from the ATTACH command has
been improved.  If the attach is made  successfully,  the  feedback  to
that effect is removed after sui_info_message_time$ milliseconds.  (See
section 1.5.5.1 below for a discussion of sui_info_message_time$.)   If
the  user  enters a directortion on many SUI function keys in the MiniBuffer

     At this release, several SUI function keys on the PST100 and PT200
are bound to the newly-coined unused_mb_key_feedback$  macro,  for  the
purpose  of restricting the types of actions that SUI or SUIX users can
take while in the MiniBuffer.  The original impetus  for  this  was  to
eliminate  the problem that occurred when the user pressed the HELP key
when already in the HELP function.  It used to be that you could invoke
the  SUI  HELP while in the MiniBuffer, which of course is too small to
hold the many display lines required!

     The prohibition against use of certain functions in the MiniBuffer
has  been  extended(Curiously  enough,  the  prohibition was present in
EMACS SUI rev. 19.0 and earlier, but has been lost  recently.)  to  the
disabling  of  other keys which can potentially confuse the SUI or SUIX
user if used there.  Included in the "disabled list" are the CURSOR UP,
CURSOR  DOWN,  INSERT  FILE,  SAVE FILE, WORD/CHAR, and several others.
RIGHT and LEFT CURSOR, BEGIN/END  LINE,  DELETE  and  RUBOUT  CHAR  all
survive,  of  course,  so  you can edit your (presumed short, one-line)
MiniBuffer commands normally.

     Consult      the       @BINDINGS.EM       files       in       the
EMACS*>EXTENSIONS>SUI>UNSHARED    subdirectory    (noted    below    in
section 1.6.7) for the full  list  of  restricted  function  keys,  and
change them in your private library if you wish not to be so restricted
in your own use of the MiniBuffer.

     SUIX users who dislike the restrictions have another, simpler  way
around  them:  simply to use the Fundamental Mode keypaths, rather than
the prohibited function keys, to "navigate" within the MiniBuffer.

1.5.5.4  Changes to support PT200 terminal modes

     It is possible, through mishap, that the PT200 terminal might  get
placed  into  its INSERT mode.  In this case, the led on the key etched
INSERT (the SUI's OPEN LINE key) on the CF/N pad is  lit  up,  and  the
word  INSERT  appears  on  the  PT200  terminal's System Line.  If this
happens, any depression of the OPEN LINE key is automatically bound  to
a  new  function  to  correct  this  wrong insert mode.  It also does a
screen clear, to fix up any mis-displays that the wrong mode might have
caused  (EMACS  normally  operates  in  the  terminal  screen's default
overlay mode).

     It is possible, through mishap, that the PT200 terminal might  get
placed into its NUM LOCK mode.  In this case, the led on the key etched
NUM LOCK (the SUI's DEL FWD key) on the CF/N pad is lit up, and the pad
will  send numbers instead of running EMACS functions.  This would be a
DISASTER for the SUI/SUIX user!  If this  happens,  any  depression  of
this key is automatically bound to a new function to correct this wrong
NUM LOCK mode.(If you are a Fundamental Mode EMACS user, or if you  are
writing  your  own  EMACS  interface, see the earlier discussion of the
CF/N Pad's  possible  mode  settings  in  Fundamental  Mode,  above  in
section 1.3.4.4.)

     It is possible, through mishap, that the PST100 or PT200 terminals
might receive an incorrect escape sequence from the  host,  which  they
cannot execute.  This normally results in the terminal's bell sounding,
and the addition of INVALID CMD to the terminal's system line.  At this
release,  there is a macro called remove_invalid_cmd$ which is bound to
the  RESET  key  on  the  PST100,  and  to  the  CLEAR   key   on   the
PT200.(Incidentally,  for  the  PT200  terminal  ONLY,  the  CONTROLled
augmentation of the PT200's CLEAR key sends <ESC>? which,  in  SUIX  or
Fundamental Modes only, is bound to the explain_key command.  This is a
"Helpful Hint" because it saves you a keystroke if all you want  to  do
is  get  a keypath explained; you don't have to type <CTRL>_c to get to
the same function.

     The  corresponding  PST100   key,   RESET,   in   its   CONTROLled
augmentation,  does  a  complete local screen clear, which doesn't help
you much.  You have to press the RESET key, unaugmented, or <CTRL>L  to
refresh the screen after that!)  This macro removes the offending error
message from the terminal's system line, and does a screen repaint just
to  be sure that any garbage that may have prompted the keypress (e.g.,
an operator message) has been removed.

1.5.5.5  New macro: restrict_to_sui$

     All shared SUI macros which should not be  run  by  non-SUI  users
have  had a major change at this revision:  they have had a call to the
new restrict_to_sui$ macro added  to  their  code.    Therefore,  users
without  the  proper internal variables set will not be able to execute
those SUI-specific macros if they bind them to keys, or  even  if  they
attempt to invoke them by name.  Reason:  the newly-restricted commands
would fail anyway, but far less gracefully, for the lack of atoms which
are available for SUI users -- but not for non-SUI users.

1.5.5.6  New macro:  sui_highlight

     To  facilitate  the  highlighting of the bottom three lines of the
screen, a new PL-callable command,  (sui_highlight),  has  been  added.
This  macro "knows about" the three physical and four logical terminals
on which the SUI can be realized:  PT45, PST100, PT200, and PT200W.  It
can be called without restriction on these four terminals.  When called
by a user withOUT the proper underlying variable, keybinding$,  set  to
either  pt45  pst100  or  pt200  this  macro will have no effect on the
screen.

     This new macro is called by the (sui_refresh)  function.    It  is
provided  as a separate call for technical reasons which may be seen in
various places in the EMACS*>EXTENSIONS libraries.

1.5.6  New Commands or Macros: sui and suix for re-establishing SUI or
       SUIX Mode bindings

     As seen earlier in section 1.4.6, you can now  re-establish  EMACS
Fundamental  Mode bindings with a single new command, fundamental.  The
new commands sui and suix accomplish an analogous purpose.

     If you give the sui command, it produces a situation just the same
as if you had included -sui on your EMACS command line.  No Fundamental
Mode EMACS keybindings will be in effect thereafter, save for  the  k, sui_exchange_mark,
sui_horiz_left, sui_primos_command, sui_copy_region).  The remainder of
the  above are real changes from the Fundamental Mode bindings, done to
improve consistency in the type  of  service  expected  (one_file_mode,
two_file_mode,  mod_other_window,  sui_refresh, query_replace_forward).
The last one, especially, is  a  substantial  change  from  Fundamental
Mode,  in that the fundamental mode query_replace is normally sensitive
to the EMACS "region," where the  SUI's  query_replace_forward  command
goes  from  point  to  the end of the buffer, regardless of the current
"region."

     If you don't like these changes, feel free to rebind the  original
Fundamental  Mode functions to the above keystrokes in your own private
-ulib file.

1.5.7  Horizontal Scrolling Has Been Added to the SUI

1.5.7.1  Background

     One of the functional areas  lacking  in  the  SUI  as  originally
released is horizontal scrolling bound to function keys.  This has been
now been corrected.

     This addition raises some minor issues  with  adding  undocumented
functionality to previously-unused function keys on the PT45 and PST100
versions of the SUI, when  the  published  keyboard  templates  do  not
contain any legending for such functionality.

     This  issue is less severe on the PT200, because there are already
two keys on the PT200's CF/N pad which are  legended  SCROLL  LEFT  and
SCROLL RIGHT.

     When  EMACS  SUI comes up now, the SCROLL LEFT and RIGHT functions
are already bound to the function  keys  of  all  three  SUI-supporting
terminals.

     PT45 and PST100 SUI users who don't add any customized keybindings
will have to add some labels  to  their  templates,  in  the  positions
indicated  by  the  keyboard maps shown in the HELP system, and also in
the newly-added HORIZONTAL SCROLLING item in the help menu.   If  users
of  these  terminals  don't do this, they'll be surprised if they press
the newly-active keys by mistake.

-----------------------------------------------------------------------
        Terminal            SCROLL LEFT Key        SCROLL RIGHT Key
          PT45                   E-AUX                  AUX-ON
         PST100                   PF4                     PF6
-----------------------------------------------------------------------

     PT200 SUI users' keys are already legended, and all they  need  is
documentation on the new keys' functions, which is also provided in the
HORIZONTAL SCROLLING item in the HELP menu.

     Users who have already made some additions to the PT45  or  PST100
SUI  or  SUIX  via  -ulib  files  may  have conflicts between their own
keybindings and the keys which have been newly-assigned to SCROLL  LEFT
and  RIGHT.   There are two issues that must be addressed, and both are
trivially resolved:

   - WHOSE  BINDINGS  WIN?    Since  the  new  bindings  will   be
     pre-shared,  any user coming up through a private -ulib which
     binds something to the affected keys, will see no  change  in
     those keybindings.  USERS' OWN -ulib FILES "WIN."

     This  is  because  the  user's  changes  are  done  after the
     publicly-shared bindings are established in the product.   Of
     course,  they will lose the newly-available ability to SCROLL
     LEFT and RIGHT on those keys; but at least their custom-built
     interfaces will not be disrupted.

   - HOW  DOES  AN  EXISTING  -ulib  USER,  WITH  CONFLICTS ON THE
     ASSIGNED SCROLLING KEYS, GET HORIZONTAL SCROLLING?    Simple.
     They have two choices:

        * Move  their  own functions off the newly-assigned SCROLL
          LEFT and RIGHT keys, and allow the  shared  bindings  to
          take effect;

        * Bind  these  sui_horiz_left and horiz_right functions to
          as-yet-unused keys on their terminals.

     If you  want  to  bind  the  horiz_right  and  sui_horiz_left
     functions  to  keys of your own choosing, see section 1.6.4.1
     below for descriptions  of  files  containing  lists  of  the
     preshared   EMACS  variable  names  to  use  in  doing  these
     bindings.(The sui_horiz_left function is to  be  assigned  to
     the  SCROLL  RIGHT  key.    The  name conflict is because the
     FUNCTION NAME is talking about moving the WINDOW rather  than
     moving  the  TEXT,  which  is the naming standard used in the
     SUI.)

1.5.7.2  Functional Specification of SCROLL LEFT and SCROLL RIGHT keys

     The basic specification is given in the following excerpt from one
of the HELP screens.

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

SCROLL LEFT: Means "Push the TEXT to the LEFT so I can see more toward
the right end of the lines."  Unless you say otherwise, the horizontal
offset  changes by 40 columns.  If you prefix the SCROLL LEFT key with
ESC followed by a number -- e.g., ESC 23 SCROLL LEFT -- you  will  get
put on "hcol 24."

SCROLL RIGHT: Means the opposite.  This key also takes the  ESC-number
prefix.

If hcol is very large and you want to  scroll  RIGHT  "all  the  way,"
press  ESC  1 and then the SCROLL RIGHT key, and hcol will be set back
to 1.

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

     One  addition to that specification that HELP screen space did not
permit is the provision of an info_message "hint" to the user when hcol
is greater than 122 at the conclusion of a SCROLL RIGHT command.

     In  that case, a "helpful hint" appears for a period of time equal
to sui_info_message_time$ milliseconds, telling the  user  how  to  get
back   to   zero   offset   without   many   additional   SCROLL  RIGHT
keystrokes.(The sui_info_message_time$ notion is documented earlier  in
section 1.5.5.1.)

     One  minor  point:   the functions associated with the SCROLL keys
are named, respectively and unexpectedly, horiz_right  on  SCROLL  LEFT
and sui_horiz_left on SCROLL RIGHT.  That's because the function writer
was describing movement of the WINDOW rather  than  of  the  TEXT,  the
naming convention used for scrolling on the PT200 keyboard.

1.5.7.3  Minor perturbation to users of SUIX RPG Mode on PT45 terminals

     Due  to the addition of the SCROLL LEFT and RIGHT keys to the PT45
SUI, there has been a displacement of the RPG Mode function  key  which
used  to  be bound to the rpg_unplate$ funct--+     +-----+-----+  the PT200's System Line, and to
                                              allow your EMACS session to
       +-----+-----+    +-----+               continue.
       |-nil-|-nil-|    | ESC |
       |     |     |    |     |               If you press the SHIFT-STOP,
       +-f01-+-f02-+    +-----+--------+      CONTROL-STOP, or SHIFT-CONTROL-
       |MARK |Exchg|    |Back |  TAB   |      STOP key by mistake, just follow
       |     |Mk+Cr|    |Tab  |        |      the instructions to repaint the
       +-f03-+-f04-+    +-----+--------+      EMACS Screen.
       |Copy |Paste|
       |Regin|     |                          EMACS will not allow some
       +-f05-+-f06-+                          terminal SET UP parameters.
       |Cut  |-nil-|                          EMACS will set them back if
       |Regin|     |                          you change them.
       +-f07-+-f08-+
       |-nil-|-nil-|               -nil- Means that no EMACS SUI function
       |     |     |                     has been assigned to this key.
       +-f09-+-f10-+
-----------------------------------------------------------------------

-----------------------------------------------------------------------
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
Sh&|     |     |     |     | |     |     |     |     | |     |     |     |     |
Ctl|     |     |     |     | |     |     |     |     | |     |     |     |     |
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
Con|QUIT |     |     |     | |     |     |     |     | |     |     |     |     |
trl|EMACS|     |     |     | |     |     |     |     | |     |     |     |     |
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
Sh-|Save |Insrt|     |2File| |     |     |     |     | |     |Delet|     |     |
ift|File |File |     |On/Of| |     |     |     |     | |     |Line |     |     |
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
    PF01  PF02  PF03  PF04    PF05  PF06  PF07  PF08    PF09  PF10  PF11  PF12
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
Nor|Write|Find |Comnd|Other| |     |     |     |     | |RPG_ |Insrt|RPG_ |     |
mal|File |File |Mode |File | |     |     |     |     | |Plate|/Ovla|UnPlt|     |
   +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+

A blank rectangle means that no EMACS SUI               PF09 & PF11 are active
function has been bound to this key.                    only in RPG mode.
-----------------------------------------------------------------------

-----------------------------------------------------------------------
      +-----+-----+-----+-----+
      | pa1 | pa2 | pa3 | pa4 |     -nil- Means no EMACS SUI function
      |-nil-|-nil-|-nil-|-nil-|           is assigned to this key
      +-----+-----+-----+-----+

+-----+-----+-----+-----+-----+
|Del *|Revrs|Re- @|Forwd|Char/|     * Means these keys can work either in
|Fwd *|Serch|plce@|Serch|Wd Sw|     * CHARACTER or WORD mode, depending
+-----+-----+-----+-----+-----+       on Char/Wd Switch
|     |Prev |Next+|Next |Open |
|  ,  |-nil-|Scrn+|-nil-|Line |     @ UnSHIFTed, runs Query Replace
+     +--7--+--8--+--9--+-----+     @ SHIFTed, runs !!GLOBAL REPLACE!!
|-nil-|Scrol|Prev%|Scrol|ChgMd|
|     |Left |Scrn%|Rite |-nil-|     + UnSHIFTed, rolls text UP 1 SCREEN
+-----+--4--+--5--+--6--+- - -+     + SHIFTed, goes to BOTTOM OF FILE
|     |Home |  ^  |End/ |     |
|Enter|     |  |  |Begin|Can- |     % UnSHIFTed, rolls text DOWN 1 SCREEN
+     +--1--+--2--+--3--+ cel +     % SHIFTed, goes to TOP OF FILE
|-nil-|* <- |  |  | -> *|     |
|     |*    |  V  |    *|-nil-|     No CONTROLled or SHIFT-CONTROLled
+-----+--0--+--00-+--.--+-----+             keystrokes are used.
-----------------------------------------------------------------------

     The  third  map  of  this  set  is  of somewhat more help than the
plastic template proper, because it gives  some  more  details  on  the
actions  of  the CF/N pad.  Pay particular attention to the differences
between the SHIFTed and unshifted REPLACE, NEXT SCREEN, and PREV SCREEN
keys.    The  lack of labeling space on this pad makes it impossible to
clearly label the two augmentations of these three keys.

     The CHAR/WORD key, and the DEL FWD key, operate as they do on  the
PT45 and PST100.

     Why  did  we  choose  to put the CHAR/WORD Switch key on the PT200
function key etched with the word DELETE, and to put the DEL FWD key on
the  PT200  function  key labeled NUM LOCK?  To locate the DEL BACK and
DEL FWD keys near each other, and to  put  the  (somewhat  "dangerous")
CHAR/WORD Switch key as far away from the cursor keys as possible.

     The  END/BEGIN  key moves CURSOR TO BEGINNING OF LINE when pressed
unaugmented, and moves CURSOR TO END OF LINE when pressed SHIFTed.

     There are obvious conflicts between the CF/N  Pad  keys  bound  to
FORWARD  and  REVERSE SEARCH, and the etchings on the keytops of PT200s
as first shipped.(The SUI REVERSE SEARCH key  has  the  etching  SCROLL
LOCK,  and  the  SUI  FORWARD SEARCH key is etched ERASE.)  Here is the
reason for this and other such conflicts:    Future  revisions  of  the
PT200  keyboard will include a new set of keytop etchings which will be
in much closer harmony with the SUI function key bindings.  Until then,
we  ask  the SUI user's understanding of these conflicts.  Read the SUI
template legends, not the keytop etchings.

-----------------------------------------------------------------------
* Means that this key can work in either CHARACTER or WORD mode, depending on
* the CHAR/WORD switch.  Text deleted in CHARACTER mode cannot be PASTEd back.

@ Means that these keys can send unwanted information in SUIX mode.
@ No alternate character sets are supported in EMACS at this time.
                                                                   +-----------+
& Means that these keys work normally, as        ...(   )   _   +  |BACKSPACE *|
& defined both by the terminal and by EMACS.     ...9   0   -   =  |Del Back  *|
                                                                   +--+--------+
%%% The CLEAR key can be used to refresh the screen.  ...P    {    }  |        |
                                                      ...p    [    ]  | RETURN&|
 +----------+                                                         +-+     &|
 |  LOCK   &|  A    S    D    F    G    H    J    K    L   :    "    |  |      |
 |         &|                                              ;    '    \  |      |
 +--------+-+                                                  +--------+-----++
 | SHIFT &|  <   Z    X    C    V    B    N    M    ,    .   ? | SHIFT &|Clear|
 |       &|  >                                      ,    .   / |       &| %%% |
 +-----+--+-----+                                              +-----+--+-----+
 |Char@|  |Ctrl&|                    SPACE                     |Ctrl&|  |Char@|
 |Set @|  |    &|                     BAR                      |    &|  |Set @|
 +-----+--+-----+                                              +-----+--+-----+
-----------------------------------------------------------------------

1.5.11  A Note on the BS and DEL keypaths in SUI/SUIX versus
        Fundamental Modes

     Fundamental Mode EMACS binds the rubout_char function to both  the
BS  and  DELtomized
terminal drivers are kept.

     If the LIB subdirectory is also present, it is for the use of  the
local  EMACS  maintainer  and  community.    Caution:  the  contents of
EMACS*>LIB may well be erased as new versions of EMACS  are  installed,
although  the  newer  versions  of  the  EMACS  installation  files are
designed to prevent this.

1.6.2  Contents of EMACS*>INFO

     All files in this subdirectory whose names terminate in _INFO  are
screen  files used by the EMACS SUI HELP system.  The only exception to
this rule is this very file.

     The  describe_emacs  file  is  accessed  interactively  with   the
<CTRL>_d help_on_tap option or with the describe command.

     There  have  been no destructive changes to this directory, though
there have been several PT200-related additions.  The only exception is
the  obsolete  sample_library_file.em  file,  which has been deleted at
this release.

     The file KEY_ASSIGNMENTS.EM is present  "for  historical  purposes
only."  It was referred to above in section 1.4.6.  It is an incomplete
list of some of the bindings which are in effect for Fundamental Mode.

1.6.3  Contents of EMACS*>EXTENSIONS

     The .EFASL files found in this subdirectory  comprise  the  shared
code   which   is   used   in  EMACS  Fundamental  Mode,  and  in  many
language-specific Modes.  All .EFASL files in EMACS*>EXTENSIONS may  be
considered resident in shared memory.

     Below  EMACS*>EXTENSIONS are two subdirectories:  SOURCES and SUI.
The old subdirectory PRIME_SUI_LIB has been replaced with SUI.  The old
OBSOLETE_SOURCES subdirectory has been removed.  Some of its files have
reappeared  under  EMACS*>EXTENSIONS>SOURCES,  and  others  have   been
removed because they have become more confusing than helpful.

1.6.4  Contents of EMACS*>EXTENSIONS>SOURCES

     All  the  source files that produced the .EFASL files above sit in
this subdirectory.  The code you see here can be an extremely  valuable
tutor  on the "fine points" of the Prime EMACS Extension Language, PEEL
("PL" for short).   Many  users  have  reported  that  EMACS's  PL  was
obscure,  until  they  laid  eyes on the library sources.  If you do so
after having used EMACS and puzzled over PL for a while, you will begin
to see the meaning behind the syntax.

     Because  the  .EFASL  equivalent in the upper directory is shared,
the code in this subdirectory is, in a sense, "shared".

     If you don't like the actions of  any  of  the  functions  defined
herein,  feel  free  to  edit  a  private copy of any parts you wish to
change, and use the changed versions in your -ulib  file.    Please  be
aware,  if  you  do this, of your responsibility to debug your own code
first, rather than blaming any apparent shortcomings  of  the  MODIFIED
libraries on the maintainers!



1.6.4.1  Addition of files of symbolic function key names

     One  major  omission  in the EMACS* directory, in previous product
revisions, was the PEEL source files giving the symbolic names  of  the
function  keys for the three Prime terminals supporting SUI/SUIX.  This
omission   has   been   corrected    at    this    release    of    the
EMACS*>EXTENSIONS>SOURCES subdirectory, which now contains the files:

PST100_FUNCTION_KEYS.EM
PT200_FUNCTION_KEYS.EM
PT45_FUNCTION_KEYS.EM

     These  files make it considerably easier for users to create their
own customized EMACS interfaces, because their purpose is to  save  the
user  the  work  of finding out exactly what each terminal key sends to
the host -- or if in fact it does send anything to  the  host.    Since
we've already done this research, there's no reason to keep it hidden.

     In the shipped version of EMACS, the actual keybindings in SUI and
Fundamental Mode are not done with these  symbolic  files.    They  are
established  by  an automatic setup procedure.  However, the intentions
of  the  files  have  in  fact  been  executed  as  part   of   EMACS's
initialization  sequence,  and  therefore the user can establish custom
bindings to those variables in the way described in the  beginnings  of
each of the above-noted files.

1.6.5  Contents of EMACS*>EXTENSIONS>SUI

     The  .EFASL  files  found in this subdirectory comprise the shared
code which is used in EMACS SUI and SUIX Modes.  All  .EFASL  files  in
EMACS*>EXTENSIONS>SUI may be considered resident in shared memory.

     Below  EMACS*>EXTENSIONS>SUI  are two subdirectories:  SOURCES and
UNSHARED.

1.6.6  Contents of EMACS*>EXTENSIONS>SUI>SOURCES

     In this subdirectory sit  all  the  sources  of  the  SUI-specific
macros.  These are the sources of the shared .EFASL files above.

     Changing  the  contents  of  these  files,  or even working with a
private edited copy, is not recommended.  The thing that makes the  Sui
generally  useful  is just that, its Standardized nature.  Extending it
via adding keybindings to SUIX is not "dangerous,"  in  our  view;  but
rebinding previously-bound keys, or changing their functionality, makes
your "Non-Standard User Interface" not generally useful by  others  who
might use it.

1.6.7  Contents of EMACS*>EXTENSIONS>SUI>UNSHARED

     All  files  in  this  subdirectory  are  provided  for information
purposes only.  The @BINDINGS.EM files are the prototype bindings files
used in development of the SUI, and they show the PL level of interface
design.  They have been replaced by internal equivalents.

     The SUI_REFRESH_ETC.EM file gives some of the early PL development
equivalents  of  the  internal  refresh-related  commands.   To improve
performance, what is actually running in EMACS  is  a  faster  internal
equivalent of these PL functions.  What you see in this .EM file is NOT
exactly functionally equivalent to what's actually installed in  EMACS.
(See  above  in  section 1.3.4.2, and in section 1.3.4.5 for a detailed
discussion of the SUI refresh macros.)

     The    final    file    in    EMACS*>EXTENSIONS>SUI>UNSHARED    is
SUI_STRINGER$.EM which is the PL source of a simple "graphics compiler"
used in construction of the SUI help screens for the PST100  and  PT200
terminals.      It  can  be  better  understood  by  reference  to the  set] was found." All the verify_ primitives now return
       true if a character in the specified set was  found,  and  false
       otherwise.     Note  that  this  leads  to  the  correlary  that
       true=cursor moved; false=cursor stationary.

       This returned value is consistent with the set  of  "search_..."
       routines,  which also return true if an appropriate character in
       the specified set was found and false otherwise.

       PROPAGATION: The fixes here also affect the return value of  the
       following  primitives, which call upon the "verify_..." routines
       and return their returned value:
       skip_over_white
       skip_back_over_white

       (2) The primitives (once again)
       verify_fd            (a.k.a. search_not_charset_forward)
       verify_bk            (a.k.a. search_not_charset_backward)
       verify_fd_in_line    (a.k.a. search_for_first_not_charset_line)
       verify_bk_in_line    (a.k.a. search_back_first_not_charset_line)

       previously ignored a NewLine "~n" character within  the  buffer,
       IMPLICITLY  INCLUDING  it  in  the character set to be verified.
       They no longer include the  NewLine  character  implicitly,  and
       will perform correctly when it is included explicitly.

       PROPAGATION:  The  fixes  here  affect  the  following  internal
       primitives since they directly use the "verify_..." routines:
                skip_over_white
                skip_back_over_white

       Previously, these routines implicitly included the NewLine as  a
       white-space character to be skipped over even though the default
       value for the whitespace global did not include it.    This  was
       contrary   to  the  Emacs  documentation.    Now  they  work  as
       documented.

       (3) The primitives
       search_fd            (a.k.a. search_charset_forward)
       search_bk            (a.k.a. search_charset_backward)
       search_fd_in_line    (a.k.a. search_for_first_charset_line)
       search_bk_in_line    (a.k.a. search_back_first_charset_line)

       previously  ignored  a  NewLine  character  within  the  buffer,
       implicitly  EXCLUDING  it in the character set to be search for,
       even if that character set explicitly included a NewLine.   They
       no  longer  exhibit  this  implicit  behavior  and will honor an
       explicit NewLine correctly.

       PROPAGATION:  The  fixes  here  affect  the  following  internal
       primitives since they directly use the "search_..." routines:
       skip_to_white
       skip_back_to_white

       Only  if  the  whitespace (global) string contained a NewLine is
       their behavior now  different.    Since  the  whitespace  string
       defaults  NOT  to  include  a NewLine, their behavior should not
       normally be affected.

       (4) The primitives
       forward_search
       reverse_search

       previously would behave unpredictably and inconsistently when  a
       NewLine  character  was  included  as  the  first character of a
       search string.  They now work properly.

       PROPAGATION:  The following primitives are directly affected:
       ^s_forward_search_command
       forward_search_command
       reverse_search_command
       query_replace
       replace

       (5) The primitives (again)
       forward_search
       reverse_search

       previously could not locate the last (first with reverse_search)
       text  in a buffer when the NewLine character was included as the
       first (last)  character  in  the  search  string  and  remaining
       characters  spanned  the  last  (first) character in the buffer.
       Both primitives now behave correctly at buffer boundaries.

       PROPAGATION:  The following primitives are directly affected:
       ^s_forward_search_command
       forward_search_command
       reverse_search_command
       query_replace
       replace

SPAR 3006770:
       Get_file  is  obsolete.    Find_file,  on the same function key,
       correctly loads a file in 2 file mode after a pathname error  on
       the  first  try.   Read the information on GET_FILE in this info
       file.

SPAR 3008712:
       Get_file  is  obsolete.    Find_file  works correctly.  Read the
       information on GET_FILE in this info file.

SPAR 3008806:
       Get_file  is  obsolete.    Find_file  works correctly.  Read the
       information on GET_FILE in this info file.

SPAR 3009063:
       Fixed a bug which allowed "gutters" in fill mode.


3.  {{PROBLEMS FIXED -- NOT USER VISIBLE}}


SPAR 3006090:
       Fixed call to  rdln$p  in  READF.    User  will  no  longer  get
       remainder  of  old  read  buffer  after  aborting  find_file (or
       read_file, insert_file).

SPAR 3006258:
       Fixed  dumpfile  to correctly determine the pathname of the file
       to be dumped.

SPAR 3007488:
       Fixed  so  successive  yank_replaces  separated by blanks do not
       behave the same as those separated by by other characters.


4.  {{OUTSTANDING PROBLEMS}}


SPAR 3001737:
       Incomplete documentation in PRIMER and REFERENCE GUIDE.

SPAR 3003146:
       On a PT45 in VIEW mode, tabbing past the end of the  line  locks
       up the keyboard, rings the bell and displays an error message.

SPAR 3003437:
       QUIT during initialization leaves the terminal  in  half  duplex
       mode.

SPAR 3004515:
       Documentation bug in the  extensions  guide  incorrectly  states
       that  the peel function make_array produces an array with bounds
       (0..N) when in fact the bounds are (0..N-1) i.e. and array of  N
       elements.

SPAR 3004605:
       Pericom78  terminal  driver  switches  the  numeric  keypad   to
       function keys.  0 SPAR 3006256:
       Problem in COMPILE if level 'd' errors occur.

SPAR 3006785:
       When  a library .efasl file is not found while installing EMACS,
       then it causes the operator console process to get a fatal error
       and be reinitialized.

SPAR 3009068:
       If the command  line  argument  -HEIGHT  is  given  an  argument
       greater  then  the  physical  height  (or  diplay height) of the
       screen then the EMACS display may  act  strangely.    A  similar
       situation holds for the -WIDTH argument.


5.  {{PERMANENT RESTRICTIONS}}


SPAR 3005943:
       PL can only 'compile' buffers with less than 32000 characters in
       them.  This is a permanent restriction.

SPAR 3006257:
       Rebinding of the function forward_place_holder to a printing key
       incorrectly removes the place holder.

SPAR 3006599:
       Forward_kill_sentence  and  forward_kill_clause  cannot  collect
       