/* DESCRIBE_EMACS, EMACSSRC>EMACS*>INFO>, ENVIRONMENTS GROUP-DNK, 06/18/84
/* EMACS on-line documentation File, accessed by DESCRIBE command
/* Copyright (c) 1984, Prime Computer Inc., Natick, MA 01760
--*-- #
    extended command that checks for line numbering mode.


--*-- #off
    extended command that shuts off line numbering mode.


--*-- #on
    extended command that turns on line numbering mode.  Line  numbering  mode
    puts line numbers on the screen.


--*-- &
    boolean function that returns the logical "and" of  its  arguments.   That
    is, &  returns  a  true  if all arguments evaluate to true;  otherwise, it
    returns false.

        (& boolean-1 ...  boolean-8)

    The first two arguments  (boolean-1  and  boolean-2)  are  required.   The
    remaining six booleans are optional.


--*-- &args
    see &arguments.


--*-- &arguments
    defcom keyword that describes the characteristics of the prompt  typed  by
    the user.  See defcom for the syntax.


--*-- &character_argument
    defcom keyword that allows the passing of the  keystroke  that  invoked  a
    command.


--*-- &chararg
    see &character_argument.


--*-- &default
    defcom keyword that says what the default value for an argument should  be
    if the argument is not typed in a defun.


--*-- &doc
    see &documentation.


--*-- &documentation
    defcom keyword that tells what a command or  statement  does.   This  text
    will appear in help-like texts such as apropos and explain_key.


--*-- &eval
    defun keyword that shuts off the &quote argument  so  that  all  following
    arguments are evaluated.


--*-- &ignore
    defcom keyword that tells EMACS to ignore numerical arguments.


--*-- &integer
    type specifier that indicates the data type of an argument in a defcom.


--*-- &local
    defun keyword that says there are no further arguments in an argument list
    and that the remainder of the information are  variables  that  will  only
    have a scope of the current function.


--*-- &na
    see &numeric_arg.


--*-- &numeric_arg
    defcom component  that  tells  EMACS  that  it  should  accept  a  numeric
    argument.  Other attributes specify how the argument will be handled.


--*-- &optional
    defun keyword that says  that  all  arguments  pass  this  point  are  not
    required.  If they are not there, they are set to NIL.


--*-- &pass
    defcom keyword that says that a  numeric  argument  is  transmitted  to  a
    variable.


--*-- &prefix
    defcom prefix used for passing invocation characters.


--*-- &prompt
    defcom keyword that passes a string to the minibuffer.  The reply to it is
    passed on to the program.


--*-- &quote
    defun keyword that tells EMACS that it  should  only  bind  all  following
    atoms, not  evaluate  them.   To resume evaluation of atoms, use the &eval
    argument.


--*-- &repeat
    defcom keyword that tells EMACS how many times it should repeat  the  body
    of the defcom code.  For example:

        &na (&repeat)


--*-- &rest
    defun keyword that tells EMACS  that  it  should  take  the  rest  of  the
    arguments and put them into a list;  e.g., &rest (r list).


--*-- &returns
    defun keyword that specifies the data type  of  any  value  that  a  defun
    returns.  In  EMACS, returns means that you are specifying the effect, not
    the side-effect.
--*-- &string
    defcom type specifier that indicates the data type of an argument.


--*-- &symbol
    defcom type specifier that indicates the data type of an argument.


--*-- *
    arithmetic function that multiplies its arguments.

        (* integer-1 ...  integer-8)

    Only integer-1 is required.  All other  integer  arguments  are  optional.
    The value  returned  is the product of all the integers.  If there is only
    one integer, that integer is returned.  For example:

        (print (* 3))

    prints 3.


--*-- *_list
    lisp function that returns a list of its arguments, the last of  which  is
    the lists cdr.  This is used for backquote handling.

        (*_list arg-1 ...  arg-8)

    The arguments  to  this  function  can  be  of  any  type.   The first two
    arguments are required.  The remaining six are optional.


--*-- *catch
    lisp function that returns the value of the  form  or  the  thrown  value.
    Like catch  except  different  argument order.  This is a standard Maclisp
    function.

        (*catch atom 'any)

    where atom is the condition tag and any is the form to evaluate.


--*-- *throw
    lisp function that is like throw except different arguments.   This  is  a
    standard Maclisp function.

        (*throw atom any)

    where atom  is  the  tag  to throw to and any is the value to throw.  This
    statement does not return a value.


--*-- +
    arithmetic function that adds its arguments.  It returns the  sum  of  the
    numbers added.

        (+ integer-1 ...  integer-8)

    Ony integer-1  is required.  All other integers are optional.  If you only
    specify one integer, that integer is returned.  For example:

        (print (+ 3))

    returns 3.


--*-- -
    arithmetic function that subtracts or negates.  It returns the  difference
    or negation.

        (- integer-1 optional-integer-2)

    Only integer-1 is required.  If you omit integer-2, the value of integer-1
    is negated.  For example:

        (- 4 2)

    returns 2.


--*-- /
    arithmetic function that divides its arguments.  / returns the quotient of
    two numbers.

        (/ integer-1 integer-2)

    integer-1 is the dividend and integer-2 is the divisor.  For example:

        (/ 4 2)

    red, use  forward_search.   If  you  use  a numeric argument with this
    command, it is ignored.  This is the same as forward_search_command.   The
    difference is this is the binding used when -noxoff is used.


--*-- abort_command
    command for aborting  a  partially  typed  sequence.   Normally  bound  as
    {CTRL-G}.

        (abort_command)


--*-- abort_minibuffer
    command for aborting minibuffer.

        (abort_minibuffer)


--*-- abort_or_exit
    aborts command or exits minibuffer.

        (abort_or_exit)


--*-- af
    takes a string that is an active function  invocation  which  inserts  its
    results into the buffer at the current cursor.


--*-- all_modes_off
    extended command that turns all modes off.  Note that if the mode sets  up
    some conditions (such as 2don in overlay mode), this command will not shut
    them off.  (EMACS*>EXTENSIONS>SOURCES> MISC.EM)

        (all_modes_off)


--*-- and
    boolean operator that returns the logical "and" of  its  arguments.   That
    is, "and" returns a true if all arguments evaluate to true;  otherwise, it
    returns false.

        (and boolean-1 ...  boolean-8)

    The first  two  arguments  (boolean-1  and  boolean-2)  are required.  The
    remaining six booleans are optional.

    For example:

        (if (and (forward_search "the") (looking_at " ") ...  )


--*-- any
    this is a data type.  It is the declaration  used  when  a  variable  will
    receive different kinds of information.


--*-- append
    lisp command that appends an item to the end of a list.   It  returns  the
    resulting list.  Note that the original list is unchanged.

        (append list any)

    The second  argument,  any,  is the new list's cdr.  If you wish to change
    the value of the original list, you will have to do this:

        (setq list (append list any))


--*-- apply
    lisp command that applies a function to a list of arguments.   It  returns
    the result  of  the  function.  Use this very sparingly as eval works much
    better.

        (apply function list)

    where function is the command to apply and list is the list of  values  as
    arguments.


--*-- append_to_buf
    buffer command that appends the current  region  to  a  buffer  (which  it
    prompts for).  Append means put it at the end of the buffer.  If you use a
    numerical argument  (any  value),  the  region  is copied.  Otherwise, the
    region    is     deleted.      This     is     bound     as     {CTRL-X}a.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (append_to_buf integer)


--*-- append_to_file
    file command that appends the current region to a file (which  it  prompts
    for).  Append means put it at the end of the file.  If you use a numerical
    argument (any  value),  the  region  is  copied.  Otherwise, the region is
    deleted.     This      is      bound      as      {CTRL-X}      {CTRL-Z}a.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (append_to_file integer)


--*-- apropos
    extended help command that retrieves a list of commands  that  match  what
    has been typed.  Restated, it finds a command description.  When you write
    an extension  command, use the &doc argument to get the documentation into
    this listing.


--*-- aref
    accesses an array element.  This returns the value of the element.

        (aref array integer)

    The integer argument specifies which element in  the  array  you  wish  to
    retrieve.  That is, integer is an array index.


--*-- array
    this a data type.


--*-- array_dimension
    returns the number of elements in an array, minus one, as was  established
    in a make_array function.

        (array_dimension array)


--*-- array_type
    returns the type set by make_array.  That  is,  in  make_array,  you  must
    specify a data type for the elements.  This returns the kind of array.

        (array_type array)


--*-- aset
    sets an array element.  It returns the value which was stored.  This value
    may be of any type.

        (aset any array integer)

    where any is the value to set, array is the array to set  an  element  in,
    and integer is the element to set.


--*-- assoc
    looks up an item in a lisp style association list.  An association list is
    really a list of lists.  The car of  each  sublist  is  the  key  and  the
    operation assoc  may be used to return the matching sublist.  It returns a
    list which is a sublist of what was found.

        (assoc any list)

    where any is the item to look for and list is the association list in  the
    form:

        ((key ...)  ...).

    The value returned is of the form (key ...).  For example:

        (setq joe '((name "Joe Smith") (age 27)
                              (phone "234-1234")))

        (assoc 'phone joe)       -> (phone "234-1234")
        (assoc 'age joe)         -> (age 27)
        (assoc 'quux joe)        -> ()
        (remassoc 'age joe)      ->
                       ((name "Joe Smith") (phone "234-1234"))

    Note that to remove the age sublist from joe you must do a:

        (setq joe (remassoc 'age joe))

    since remassoc returns its result.


--*-- assure_character
    returns the next character typed but leaves  it  there.   It  returns  the
    character read.   This  waits for a user to type the character and returns
    the character.  If "raw" is an  argument,  it  does  not  support  special
    handling such as "help on tap".

        (assure_character arg-1)

    where arg-1 is an optional quoted atom.  If a raw read is being performed,
    it does a raw read.


--*-- at_white_char
    whitespace function that returns true if the character to the right of the
    cursor is in the string bound to the atom whitespace.

        (at_white_char)


--*-- atom
    lisp test that returns true if its argument is not a cons.  That  is,  the
    atom function  returns true if its argument is not list structure (i.e., a
    cons or null).

        (atom any)

    Here any is the argument in question.  For example, the variable tab_array
    is used in the library tab functions.  Therefore:

        (atom tab_array)

    returns true.


--*-- autoload
    this property is used when applying a function whose value  is  null.   If
    the autoload  property  is  a  string,  it  is assumed to be the name of a
    package to load which should define the function.  The package  is  loadeen statements or forms, it skips over
    the next  form  or  statement.  It is bound as {ESC}{CTRL-F} in lisp mode.
    (EMACS*> EXTENSIONS>SOURCES> LISP.EM)

        (balfor optional-integer)


--*-- begin_line
    line command for moving the cursor back to the start of a  line,  normally
    bound as {CTRL-A}.  This command ignores arguments.

        (begin_line)


--*-- beginning_of_buffer_p
    buffer test function that returns true if the current  cursor  is  at  the
    beginning of the buffer.

        (beginning_of_buffer_p)


--*-- beginning_of_line_p
    line test function that returns true if  the  current  cursor  is  at  the
    beginning of the line.

        (beginning_of_line_p)


--*-- bolp
    see beginning_of_line_p.


--*-- boolean
    this is a data type.


--*-- buffer_info
    information function that gets/sets information about a buffer.

        (buffer_info 'any optional-any)

    any           Either an atom, string, or user atom or  user  string  which
                  indicates the variable/property to be examined or set.
    optional-any  The new  value  for  the  property   or   variable.    These
                  properties are defined below.

    buffer_info is  used  to  set  and/or  access per/buffer values.  When the
    value is changed, it returns the previous value.  The  first  argument  is
    the name  of the value to be accessed.  It is quoted.  The second argument
    is optional and is the value to assign.  Note that some  values,  such  as
    the buffer name, cannot be modified.

    The following values (properties) may be accessed:

    name             Is the name of the buffer.  This is read-only.
    default_file     Is the the pathname of the default file  associated  with
                     the buffer.
    modified         Is true if the buffer is considered  modified.   This  is
                     indicated by an asterisk on the status line.
    modes            Is the list of modes associated with this buffer.
    read_only        Prevents accidental modification of a buffer.
    changed_ok       The user is allowed to  quit  the  editor  even  if  this
                     buffer has been changed.  That is, don't let modification
                     status affect {CTRL-X}{CTRL-C}.
    dont_show        If true, buffer  name  suppressed  in  {CTRL-X}  {CTRL-B}
                     listing.
    two_dimensional  This controls whether next_line/prev_line  move  strictly
                     and whether  forward_char  moves  to  the  next line when
                     reaching the end of the current line.
    fill_column      This can be set for word-wrapping and  related  packages.
    mark             Is current mark position in the buffer.
    top_cursor       Is the beginning of buffer pointer.
    bottom_cursor    Is the end of buffer pointer.
    user             Is used for extended values as in:

                          (buffer_info (user frob) 17)

                     This indicates a user variable.  Actually, the car  of  a
                     cons whose  cdr  is a user-defined per buffer value.  The
                     cdr may be the same as the name of  a  request  value  in
                     which case  it  is  identical  to using the name directly
                     without "user".

                     The following example returns or sets the list  of  modes
                     associated with  the  current  buffer.   Note that in the
                     following example, mode is an unquoted atom as in:

                         (buffer_info modes (list (find_mode "quux")))

                     So to add a new mode:

                         (buffer_info modes (append (buffer_info modes)
                                            (find_mode newmode)))

                     or to remove a mode:

                         (buffer_info modes (remove (find_mode newmode)
                                            (buffer_info modes)))

                     Note that  the  order  of  the  modes  in  the  list   is
                     significant!


--*-- buffer_name
    buffer function that returns the name  of  the  associated  buffer.   This
    returns a  string  that  is  the name of the buffer the cursor is pointing
    into.

        (buffer_name cursor)


--*-- capinitial
    text formatting command that initial caps a word.  It is bound as  {ESC}C.
    (EMACS*>EXTENSIONS>SOURCES>TEXT.EM)

        (capinitial optional-integer)


--*-- car
    lisp function that returns the car of the cons  passed  to  it.   This  is
    lisp's car function.

        (car list)


--*-- catch
    lisp function that catches  either  an  error  or  thrown  condition.   It
    returns the thrown value or the value of the evaluated form.

        (catch 'any atom)

    where any  is  the  code  to  execute  with the handler on and atom is the
    condition tag.


--*-- catenate
    text function that catenates its arguments.  It returns the result of  the
    catenation.

        (catenate string-1 ...  string-8)

    Only string-1 is required.  The remaining seven strings are optional.


--*-- cdr
    lisp function that returns the cdr of the cons  passed  to  it.   This  is
    lisp's cdr function.

        (cdr list)


--*-- center_line
    command that centers a line of text.  It doesn't matter where you are when
    you   do    this.     This    is    bound     as     {ESC}S.      (EMACS*>
    EXTENSIONS>SOURCES>TEXT.EM)

        (center_line arg)


--*-- char_to_string
    conversion function that converts a character  object  into  a  string  of
    length one.  It returns a string whose length is one.

        (char_to_string character)

    where character is the object of the function.


--*-- character
    This is a data type.


--*-- character_argument
    Returns the  character  argument  to  the  current  command.    That   is,
    current_command.charg.


--*-- charp
    data type test function that returns true if the argument is a  character.

        (charp any)


--*-- clear_and_say
    Clears the screen and starts "print out" mode.

        (clear_and_say string)

    where string is the information to put on the first line of the  terminal.
    This goes outside the context of EMACS and just writes to the screen after
    clearing it.


--*-- close_paren
    lisp mode command that moves the cursor to the  opening  parenthesis  that
    corresponds to  the  closing  parenthesis  just typed.  After a pause, the
    cursor returns to the position just after  the  closing  parenthesis  just
    typed.  This  command  understand  nesting  so  that it will skip over any
    number of nested parenthesis.  This command is bound as )  in  lisp  mode.
    (EMACS*>EXTENSIONS>SOURCES>LISP.EM)

        (close_paren)


--*-- collect_macro
    Command for starting the collecting  keystrokes  typed  at  the  terminal,
ect is an atom.  This is the normal usage.


--*-- current_line
    line function that returns the value (i.e., the contents) of  the  current
    line.

        (current_line cursor)

    The cursor  argument  is  optional.   If  it  is  specified, this function
    returns the line this cursor points into.


--*-- current_major_window
    returns the current  major  window  which  is  the  window  in  which  the
    current_cursor will  be  redisplayed.  (The minibuffer is a minor window.)

        (current_major_window)

    This is used with go_to_window


--*-- cursor
    this is a data type.  Cursors are pointers at text in buffers.   They  try
    and point  at  the same text no matter what happens to the contents of the
    buffer.  A number of operations may  be  performed  on  cursors  but  most
    operations operate  on the current cursor which is also the user's cursor.
    For example, forward_char advances  the  current  cursor  forward  by  one
    character.  It  is  rather  easy  to  "push" the current cursor, execute a
    series of commands that may alter it and then "pop" it and return to  your
    old location.


--*-- cursor_on_current_line_p
    cursor function that returns true if the line pointed to  by  the  current
    cursor is the same as that pointed to by a saved cursor.

       (cursor_on_current_line_p cursor)


--*-- cursor_same_line_p
    cursor function that returns true if the two cursors point into  the  same
    line.

        (cursor_same_line_p cursor-1 cursor-2)

    The two arguments are the cursors to be checked.


--*-- data types
    the PEEL data types are:

         any            integer             boolean
         character      string              atom
         list           cursor              buffer
         function       dispatch_table


--*-- date
    extended command for inserting a date into a file.  For example:

        TUE, 19 MAY 1981.


--*-- debug_info
    sets a debugging flag.  It returns the old value of the flag.

        (debug_info 'atom any)

    where atom is the flag to set,  either  free  or  try_insert,  any  is  an
    optional argument that has a value of true or false.

    If free is false, suppress most use of the FREE statement in EMACS.


--*-- decompose
    special lisp function that implements the decompose special form.

        (decompose value
                   form
               regular code sequence
           else
               error code handler)


    The decompose  primitive  is designed to decompose list structure into its
    components in a let-like form.  It also provides for error handling.

    The value is evaluated but the form is not.  The form is  then  traversed.
    When ()  is  encountered,  it expects the value to be ().  When an atom is
    encountered it is locally bound  to  the  matching  piece  of  the  value,
    otherwise if  a  list is encountered the car is matched against the car of
    the value and the cdr is matched against the cdr of the value.   If  there
    is a  mismatch  then  the  error action is run.  If the form and the value
    matches, the action is run as if it were in a let form.

        (decompose '(a b c) (x . y)
                    (print x)
                    (print y)
               else
                    (print "BARF"))

    would print: a and then (b c)

        (decompose '((a b) (c d)) (x (y z))
                    (print (list x y z))
                else
                    (print "BARF"))

    would print: ((a b) c d)


--*-- default_tabs
    extended tab  command  that  restores   tabs   to   every   five   spaces.
    (EMACS*>EXTENSIONS>SOURCES>TAB.EM)

        (default_tabs)


--*-- defcom
    special function that defines a command with the given name, documentation
    sequence, and argument acceptance mode.

        (defcom command_name
            &doc | &documentation documentation_string
            &na  | &numeric_arg
                   &repeat | &pass | &default | &ignore
            &args | &arguments ((name &prompt string
                                      &default value
                                 &string | &symbol | &integer )
                                 ... )
            &prefix
            &chararg | &character_argument
            body
            ... )


--*-- defun
    lisp function that builds a function with the  specified  name  using  the
    given argument list and body.

         (defun name ((argument1 type1) ...
                             &optional ... &rest ... &quote ...
                          &returns type
                     &local (variable1 type2) ... )
                body1
                  ...   )


--*-- delete_blank_lines
    whitespace command that deletes blank lines.  Because it is often used  in
    conjunction with  an  arg open_line, it works downward, rather than upward
    if executed while on a non-blank line.  It is bound  as  {CTRL-X}{CTRL-O}.
    (EMACS*>EXTENSIONS>SOURCES> INDENT_AND_WHITE.EM)

        (delete_blank_lines)


--*-- delete_buffer
    deletion function that deletes the contents of  a  buffer  without  saving
    contents on the kill ring.  It returns Nil.

        (delete_buffer)


--*-- delete_char
    deletion command that  deletes  a  character  in  the  forward  direction,
    normally bound as {CTRL-D}.

        (delete_char optional-arg)


--*-- delete_point_cursor
    deletes text between the current cursor  and  the  specified  cursor.   It
    returns Nil.

        (delete_point_cursor cursor)

    where cursor the other end of the text to delete.


--*-- delete_region
    deletes the region between point and mark without putting it onto the kill
    ring.

        (delete_region)


--*-- delete_white_left
    deletes all blanks to the left of the  current  position.   It  returns  a
    boolean that tells if the operation was successful.

        (delete_white_left)

    This function  has  the  peculiarity that if point is not at a whitespace,
    while whitespace is to the left, it does not perform the deletion.


--*-- delete_white_right
    deletes all blanks to the right of the current  position.   It  returns  a
    boolean that tells if the operation was successful.

        (delete_white_right)


--*-- delete_white_sides
    deletes all blanks surrounding the current position.  It returns a boolean
    that tells if the operation was successful.

        (delete_white_sides)


--*-- delete_word
    deletion command for deleting forward a word, normally  bound  as  {ESC}D.
    The command will accept a positive or negative argument.

        (delete_word optional-arg)


--*-- describe
    this help command is bound to {CTRL-_} d  or  it  can  be  invoked  as  an
    extended command.   By  typing  a  function  name,  Eion,  etc.
    This is  like  do_forever except it executes its body the specified number
    of times.

        (do_n_times  integer_expression
                     action-1
                        ... )


--*-- downcase
    text function that transforms its argument into lowercase.  It returns the
    lowercase form of its string argument.

        (downcase string)


--*-- dt
    extended command for retrieving the date and time.  Here's an example:

        05/19/81 11:06:57


--*-- dump_file
    compilation command that converts an ASCII file to a fasdump file.  It  is
    run as  {ESC}X  dump_file.   It  assumes that the extension to the file is
    EMACS.  (EMACS*>EXTENSIONS>SOURCES>MAINTAIN.EM)

        (dump_file)


--*-- else
    the atoms that tells EMACS  to  execute  a  function  if  the  immediately
    preceding if statement's condition was false.


--*-- empty_buffer_p
    buffer test function that returns true if the current buffer is empty.

        (empty_buffer_p)


--*-- end_line
    line command for moving to the end of a line, normally bound as  {CTRL-E}.

        (end_line)


--*-- end_of_buffer_p
    buffer test function that returns true if the current cursor is at the end
    of the buffer.

        (end_of_buffer_p)


--*-- end_of_line_p
    line test function that returns true if the current cursor is at  the  end
    of the line.

        (end_of_line_p)


--*-- eolp
    see end_of_line_p.


--*-- eq
    returns true if arguments are the same object.

        (eq arg-1 arg-2)

    Both arguments can be of any type.  The comparison operator eq (as opposed
    to the = operator) compares two objects to  see  if  they  are  identical.
    This should be used sparingly as the following example illustrates.

        (eq 2 2)            Is always true since 2 always becomes
                            the same object.
        (eq "a" "a")        Is never true (as typed) since a new
                            "a" is allocated for each by the reader.


--*-- error_message
    displays an error message in the minibuffer.

        (error_message string)

    where string is what is to be printed.


--*-- esc_<digit>
    prefix command that lets you type a numerical argument to a command.


--*-- esc_minus
    prefix command that lets you type in a negative numerical  argument  to  a
    command.


--*-- escape sequences

    The following escape sequences are available:

         ~hnn  The character with hexadecimal code of nn
--*-- +           __

         ~cC   The character corresponding to the "controlified"
--*-- +           _
               character C

         ~n    The newline character

         ~"    The string delimiter (quote)

         ~~    The string escape character (tilde)

         ~<nl>     Concealed newline.  i.e., allows strings to be
                   continued on the next line without including the
                   newline character in the string


--*-- europe_dt
    date command that first invokes trim_dt then inverts  the  month  and  the
    day.  It  also  removes  leading  zeroes  from  month and day.  This is an
    extended command.  (EMACS*>EXTENSIONS>SOURCES>DATE_FORMAT.EM)


--*-- eval
    lisp function that evaluates its argument so that a variable may be  bound
    to executable code.  It returns the result of the evaluation.

        (eval any)

    where any is the form to evaluate.


--*-- evaluate_af
    lisp function that evaluates an active function in PRIMOS.  It  returns  a
    string.

        (evaluate_af string)

    where string is the active function invocation.


--*-- exchange_mark
    command for exchanging mark and point, normally bound as {CTRL-X}{CTRL-X}.

        (exchange_mark)


--*-- execute_macro
    command for executing a stored sequence of  commands,  normally  bound  as
    {CTRL-X}e.


--*-- expand_macro
    extended command for expanding a stored keyboard macro into  its  function
    names.


--*-- exit_minibuffer
    command that exits minibuffer.


--*-- explain_key
    help command that explains specified key path, normally bound  as  {ESC}?.


--*-- extend_command
    command that lets you type in long names for functions  or  for  executing
    unbound functions, normally bound as {ESC}X.


--*-- fasdump
    compilation function that dumps the current buffer in fasload format.   It
    returns a  boolean  that  specifies whether the file was opened.  When the
    file is written, it will have .EFASL appended to it.

        (fasdump string boolean)

    where string is the pathname of the EFASL file and  the  optional  boolean
    argument indicates if debug mode is on or off.


--*-- fasload
    compilation function that loads a  fasload  format  file.   It  returns  a
    boolean that  specifies  whether or not the operation succeeded.  The file
    read in must have the extension .EFASL.  This can not be overridden.

        (fasload string boolean)

    where string is the pathname of the file to be  loaded  and  the  optional
    boolean argument  indicates whether or not to print debugging information.


--*-- file_info
    file function that returns information about a file.  It returns  the  old
    value of the property.

        (file_info string  property any)

    where string  is  the  pathname  of  the  file,  property is a quoted atom
    (explained below), and the optional any argument is the new value  of  the
    property.

    file_info may  be  used  to  determine attributes of a file.  Currently it
    requires the pathname of the file as  the  first  parameter.   The  second
    parameter is one of the following keys:

    path_name       Returns the absolute pathname of the file.
    entry_name      Returns the entry name of the file.
    directory_name  Returns the name of the directory that contains the  file.
    type            Returns the  type  of  the  file  as  "none",   "   file",
                    "directory", "segdir" or "unknown".
    exists          Returns true if and only if the file exists.
    dumped          Returns true if and only if the file has been dumped.


--*-- file_name
    file function that returns the default filename.  That is, it returns  the
    filename associated with the buffer into which a cursor points.

        (file_name cursor)


--*-- fill_array
    array function that fills an array with a specified value.  It returns the
    value to fill (which is of type any).

        (fill_array array any integer-1 integer-2)

        array      The array

        (forward_word optional-arg)


--*-- fset
    lisp function that sets the function cell of  an  atom.   It  returns  the
    atom.

        (fset atom any)

    where atom is the atom to set and any is the functional property.


--*-- fsymeval
    lisp function that returns the contents of the function cell of  an  atom.
    This is of type any.

        (fsymeval atom)


--*-- function
    this is a data type.  Functions are objects which contain executable code.
    A function contains all the information needed to call  this  code.   This
    includes the  number of expected arguments, their data types, and the type
    of value which will be  returned.   Built-in  functions  have  their  code
    written in  PL/I while user written functions are written in the extension
    language and have list structure as their executable code.


--*-- function_info
    returns information about a function.

        (function_info function 'atom integer)

    where function is the  function  to  examine;   the  quoted  atom  is  the
    property to examine, and the optional integer indicates which argument you
    are concerned  with  when applicable.  The properties that can be examined
    are:

        return_value     required_arguments
        argument_type    optional_arguments
        special_form     evaluate_argument
        user_defined_function
        Returns_a_value  cleanup_handler


--*-- get
    like lisp get, which returns a property of an atom.

        (get atom-1 atom-2)

    where atom-1 is the object and atom-2 is the property.

    Each atom has a list of properties which are identified by tag atoms.  For
    each tag atom, a specified atom has a given value.  These  properties  may
    be checked  for with the get primitive, set with the putprop primitive and
    removed with the remprop primitive.

        (get 'atom 'tag)
                  Returns the tag property or ().
        (putprop 'atom value 'tag)
                  Makes value the tag property of atom.
        (remprop 'atom 'tag)
                  Removes the tag property of atom and
                  returns the old tag property.


--*-- get_filename
    command that retrieves the  current  pathname  and  places  it  at  point,
    usually bound as {CTRL-X}{CTRL-Z}{CTRL-F}.

        (get_filename)


--*-- get_pname
    lisp function returns the print name of the atom.   It  returns  a  string
    value.

        (get_pname atom)

    where atom is the atom whose name you wish.


--*-- get_tab
    extended tab command  that  restores  tabs  that  were  previously  saved.
    (EMACS*>EXTENSIONS>SOURCES>TAB.EM)


--*-- go_to_cursor
    sets the current cursor to the specified one.  It returns a  cursor  which
    is the new position in the buffer.

        (go_to_cursor cursor)

    where cursor is the place you wish to go.


--*-- go_to_hpos
    goes to a horizontal position, if possible.  In 2-D  mode,  it  is  always
    possible.  It  returns  a  boolean  that  indicates  if  the operation was
    successful.

        (go_to_hpos integer)

    where integer is the new horizontal position.


--*-- go_to_window
    selects a new window as the current one.  It returns the window you've now
    gone to.

       (go_to_window window)

    where window is the window to select.

    This makes the cursor associated with the  specified  window  the  current
    cursor.  It  does  not  change  the  association of a window and a cursor.
    This means that you can only go to windows which are on the screen.   This
    also changes the current_cursor.


--*-- goto_line
    line command for moving to a specified line in the buffer, normally  bound
    as {ESC}G.  It needs a numerical argument to go to any place but the first
    line.  For example, {ESC}35{ESC}G goes to line 35.

        (goto_line integer)


--*-- handler
    this is a data type.


--*-- handler_info
    gets information about a  handler.   It  returns  the  old  value  of  the
    property.

        (handler_info handler  atom any)

    where handler  is  the handler (command) to get information on, the quoted
    atom is the information desired, namely:

        name           explanation
        handler        data_value
        is_prefix

    and the optional any value is the new value to replace the old one.


--*-- have_input_p
    returns true if there is pending input.

        (have_input_p)


--*-- hcol
    extended command that tells what  column  in  the  text  it  should  begin
    printing at.  For example, if hcol = 20, then positions 20 through 100 are
    displayed on the screen.  Also set or query horizontal column.

    If hcol  is  typed  without  an  argument,  it  tells  what the horizontal
    position is.  If it is typed with an argument, this argument  becomes  the
    horizontal position.


--*-- help_char
    command that lets you  get  some  information  about  EMACS  capabilities,
    normally bound  as {CTRL-_}.  This is also called the Explain command.  It
    has its own built-in help function.


--*-- high_bit_off
    turns off the high order bits  in  a  string.   It  returns  the  modified
    string.

        (high_bit_off string)

    where string is the string which will be manipulated.


--*-- high_bit_on
    turns on the high order bits in a string.  It returns the modified string.

        (high_bit_on string)

    where string is the string which will be manipulated.


--*-- hscroll
    extended command that  uses  the  current  column  position  to  set  hcol
    (horizontal scrolling).  (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (hscroll)


--*-- if
    special form for making logic choices.  The predicate to this command must
    evaluate to a boolean.  It does not return a value.

        (if boolean_expression
              action_if_true
         else
              action_if_false)


--*-- if_at
    special form that is the same as:

        (if (looking_at "string") ... )

    The structure of if_at is:

        (if_at string_expression
               action_if_true
         else
               action_if_false)


--*-- ignore_prefix
    command that ignores a typed in  {CTRL-X},  {ESC},  or  {CTRL-X}  {CTRL-Z}
    after it is typed, e.g., abort the command.


--*-- indent_relative
    indentation command that lines up the current line  with  the  line  right
    above it.   With  an  argument,  it  tabs the line over that many more tab
    stops.  This is The variables may assume values of any type,
    not just that of the values bound to them.  When the let body is  finished
    or otherwise executed, the variable bindings are popped.


--*-- line_is_blank
    line test that returns true if the current line is blank.   A  blank  line
    can contain spaces.

        (line_is_blank)


--*-- line_number
    line function that returns the line number at which the  specified  cursor
    points.

        (line_number cursor)


--*-- lines_in_file
    line function  that  returns  the  number  of  lines  in  file.   (EMACS*>
    EXTENSIONS>SOURCES>MISC.EM)

        (lines_in_file)


--*-- lisp_comment
    lisp mode command that moves the lisp comment column (default of  40)  and
    inserts  a  comment  designator.   If  point  is  past  this  column,  the
    designator is placed on  the  next  line  (which  this  command  creates).
    (EMACS*>EXTENSIONS>SOURCES>LISP.EM)

        (lisp_comment)


--*-- lisp_indent_command
    lisp mode command that  insures  that  statements  are  indented  in  some
    semblance   of  order.   This  is   normally    bound     as       {ESC}I.
    (EMACS*>EXTENSIONS>SOURCES>LISP.EM)

        (lisp_indent_command)    or    (lisp_indent)


--*-- lisp_off
    extended command  that   turns   off   lisp   mode.    (EMACS*>EXTENSIONS>
    SOURCES>LISP.EM)


--*-- lisp_on
    extended command   that   turns   on   lisp   mode.    (EMACS*>EXTENSIONS>
    SOURCES>LISP.EM)


--*-- list
    lisp function that returns a list of its arguments.

        (list any-1 ...  any-8)

    All arguments can be of any kind.  Only the first argument is required.


--*-- list_buffers
    buffer command  that  lists  all  active  external  (i.e.,   user-created)
    buffers, normally bound as {CTRL-X}{CTRL-B}.


--*-- list_dir
    extended function that lists directory information.  It is similar to x.ls
    in many ways.  The general syntax is:

        (list_dir pathname [options])

    The pathname must be a string which is a  valid  pathname.   The  function
    either returns  a  list of strings or inserts each of these strings at the
    current cursor separated by newlines.  The options are:

    entry_names        Gives entry names, not pathnames.  Indicates  that  the
                       function is to return the entry name part as opposed to
                       the   entire  pathname.   This  is  useful  since   the
                       directory parts of all of the pathnames are  the  same.
    files              Returns names of files.
    directories        Returns names of directories.
    segdirs            Returns names of segment dirs.
    insert_names       Inserts the  names  at  current   cursor   instead   of
                       returning them in a list.
    sorted             Sorts the names before returning or inserting.
    no_error_messages  Suppresses error messages (just in case).

    If no options are specified, files and sorted are assumed.


--*-- load_compiled
    extended compilation command that load a fasload  file.   It  prompts  the
    user for a file name.  (EMACS*>EXTENSIONS>SOURCES>MAINTAIN.EM)


--*-- load_package
    compilation command hat prompts for  the  pathname  of  a  package  to  be
    loaded.

        (load_package)     or     (load_package string)


--*-- load_pl_source
    compilation function that loads an external file, then compiles it.

        (load_pl_source)     or     (load_pl_source string)


--*-- local_display_generator
    puts a line on the screen in "print out" mode.

        (local_display_generator string)

    where string is the line to display.


--*-- looked_at
    function that returns true if the text preceding point is the same as  the
    argument to the command.  (EMACS*>EXTENSIONS>SOURCES> DEFINITIONS.EM)

        (looked_at string)

        (if (looked_at "foo") ...  )

    where string is the text you want to determine is preceding point.


--*-- looking_at
    returns true is the specified string  is  to  the  right  of  the  current
    cursor.  This string may have NL's.

        (looking_at string)


--*-- looking_at_char
    tests the current character and returns a boolean that  indicates  if  the
    current character is the one specified.

        (looking_at_char character)

    where character is the character to check for.


--*-- lowercase_region
    text command that changes  a  region  into  lowercase.   It  is  bound  as
    {CTRL-X}{CTRL-L}.  (EMACS*>EXTENSIONS>SOURCES>TEXT.EM)

        (lowercase_region)


--*-- lowercase_word
    text command that changes the text from point to the end of the word  into
    lowercase.  It  returns  the  lowercase  text.   It  is  bound  as {ESC}L.
    (EMACS*>EXTENSIONS>SOURCES>TEXT.EM)

        (lowercase_word optional-arg)


--*-- major_window_count
    returns the number of major windows, which is an integer.  This is used to
    allow moving through windows.

        (major_window_count)


--*-- make_array
    makes an array.  This returns the created array.

        (make_array atom integer)

    where atom is the type of the array and integer is the number of  elements
    in the array.


--*-- mark
    places a mark at point, normally bound to  {CTRL-@}.   This  function  can
    take an  argument.   When you type an argument, it pops the mark and moves
    the cursor there.

        (mark optional-arg)


--*-- mark_bottom
    command that places a mark at the bottom of the buffer  and  leaves  point
    alone.    Bound    as      {CTRL-X}{CTRL-Z}>.          (EMACS*>EXTENSIONS>
    SOURCES>BUFFER.EM)

        (mark_bottom)


--*-- mark_end_of_word
    command that places a mark at the end of the current word and leaves point
    alone.  Bound as {ESC}@.  (EMACS*>EXTENSIONS>SOURCES> TEXT.EM)

        (mark_end_of_word)


--*-- mark_para
    command that puts a mark at the end  of  a  paragraph  and  point  at  the
    beginning.  It is bound as {ESC}H.  (EMACS*>EXTENSIONS>SOURCES> TEXT.EM)

        (mark_para optional-integer)


--*-- mark_top
    command that places a mark at the top  of  the  buffer  and  leaves  point
    alone.    Bound    as      {CTRL-X}{CTRL-Z}<.          (EMACS*>EXTENSIONS>
    SOURCES>BUFFER.EM)

        (mark_top)


--*-- mark_whole
    command that places a mark at the end of the buffer and puts point at  the
    beginning of the buffer, normally bound to {CTRL-X}h.

        (mark_whole)


--*-- merge_lines
    text command that merges two lines tog
        (one_window)


--*-- open_line
    command that is equivalent to {cr} followed by a  back_char.   It  differs
    from carriage  return  in  that  while both put in carriage returns, point
    does not move, normally bound as {CTRL-O}.  A positive argument  indicates
    how   many  lines  to  open.   It  is  often   convenient    to      type:
    {CTRL-U}{CTRL-U}{CTRL-O}.

        (open_line optional-arg)


--*-- or
    returns the logical or of its arguments.  That is, it returns true if  any
    element is true and false only when no element equals true.

        (or boolean-1 ...  boolean-8)

    where only boolean-1 and boolean-2 are required.


--*-- other_window
    switches point between the current window  and  the  last  window  on  the
    screen that was used, normally bound as {CTRL-X}O.

        (other_window)


--*-- otherwise
    this specifies an action if none of the criteria in a select or a dispatch
    has been met.  It must be  the  last  item  in  these  special  forms  and
    anything after the otherwise is not evaluated.


--*-- overlay_off
    extended command  that  turns  off  overlay   mode.    (EMACS*>EXTENSIONS>
    SOURCES>OVERLAY.EM)


--*-- overlay_on
    extended command  that  turns  on   overlay   mode.    (EMACS*>EXTENSIONS>
    SOURCES>OVERLAY.EM)


--*-- overlay_rubout
    command that  deletes  a  character  in  overlay  mode.   It  removes  the
    character but  leaves  a  space  there.   This  does not accept arguments.
    (EMACS*>EXTENSIONS>SOURCES>OVERLAY.EM)

        (overlay_rubout)


--*-- overlayer
    function that  actually  performs  the   overlaying   in   overlay   mode.
    (EMACS*>EXTENSIONS>SOURCES>OVERLAY.EM)

        (overlayer)


--*-- pl
    extended command function  that  compiles  the  contents  of  the  present
    buffer.

        (pl)


--*-- pl_minibuffer
    extended command that lets you type an expression into the minibuffer  and
    then let EMACS execute it, normally bound as {ESC}{ESC}.


--*-- point_cursor_to_string
    returns the text between a cursor and the current cursor.

        (point_cursor_to_string cursor)

    where cursor specifies one end of the text.


--*-- popmark
    command that pops the mark off the mark stack.


--*-- prepend_to_buf
    buffer command that prepends the current region  to  a  buffer  (which  it
    prompts for).   Prepend  means  put it at the beginning of the buffer.  If
    you use  a  numerical  argument  (any  value),  the  region   is   copied.
    Otherwise,   the  region  is  deleted.   This  is  bound   as   {CTRL-X}p.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (prepend_to_buf integer)


--*-- prepend_to_file
    file command that prepends the current region to a file (which it  prompts
    for).  Prepend  means  put  it at the beginning of the file.  If you use a
    numerical argument (any value), the  region  is  copied.   Otherwise,  the
    region   is  deleted.   This  is   bound   as     {CTRL-X}      {CTRL-Z}p.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (prepend_to_file integer)


--*-- prev_buf
    buffer command that cycles through all buffers.  This command goes to  the
    previous buffer.   The  order  of  searching is as defined in the .BUFFERS
    buffer.  This  command,  bound  as  {ESC}P,  does  not   take   arguments.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)


--*-- prev_line
    moves to  the  previous  line.   This  function  returns  a  boolean  that
    indicates if the move was made.

        (prev_line integer)

    where integer indicates how many lines to move up.


--*-- prev_line_command
    function that moves point up one line.  It is normally bound to  {CTRL-Z}.
    This command  accepts  positive  and negative arguments.  It should not be
    used in extension programs.  Instead, use prev_line.


--*-- primos_command
    this function takes an argument that is a PRIMOS command.  This command is
    run as a phantom.  However, if the PRIMOS  command  is  preceded  by  a  !
    (meaning it  is  an  internal  command), the command is executed directly;
    that is, primos_internal_command is run.  If it is preceded  by  !!,  then
    this  command  runs  primos_internal_screen.   It  is  normally  bound  to
    {CTRL-X}{CTRL-E}.


--*-- primos_external
    extended command that executes a PRIMOS external command.  The command  is
    run as a separate phantom job.


--*-- primos_internal_como
    extended command that captures internal command with comoutput.  Runs  the
    command using CP$.


--*-- primos_internal_quiet
    extended command that executes a  PRIMOS  command  without  terminal  I/O.
    Runs the command using CP$.  If command produces  output,  such  as listf,
    EMACS will print on the screen.


--*-- primos_internal_screen
    extended command that executes a PRIMOS  command  with  screen/  keyboard.
    After you  have  seen this display, you can then resume typing in the same
    way as if a clear_and_say display had been presented.  This  is  used  for
    commands such  as  dl  that  might query the user.  Runs the command using
    CP$.


--*-- primos_recycle
    runs the PRIMOS rescheduler.


--*-- prin1
    lisp prin1 function.  It is like print except there is no NL.

        (prin1 any cursor)

    where any is what to print (it can be of any type) and the optional cursor
    is where any should be printed.  If no cursor is  present,  it  overprints
    the main window area.  It returns what was printed.


--*-- print
    lisp print function.  Prints an extension language form on the  screen  or
    at a cursor.  It returns what was printed.

        (print any cursor)

    where any is what to print (it can be of any type) and the optional cursor
    is where  any  should  be printed.  If no cursor is present, it overprints
    the main window area.  It returns what was printed.


--*-- progn
    lisp progn function.  It executes a series of expressions.

        (progn expression1 expression2 ... )


--*-- prompt
    prompts user for a string, returns whatever was typed.

        (prompt string any)

    where string is the prompting string and any is the default value.


--*-- prompt_for_integer
    prompts user for an integer, returns whatever was typed.

        (protring  with  the
    characters removed.

        (remove_charset string-1 string-2)

    where string-1 is the string to remove characters from and string-2 is the
    characters to remove.


--*-- remprop
    lisp remprop function.  Removes a property from an atom.  It returns  Nil.

        (remprop atom-1 atom-2)

    where atom-1 is the atom and atom-2 is the property.

    Each atom has a list of properties which are identified by tag atoms.  For
    each tag atom a specified atom has a given value.  These properties may be
    checked for  with  the  get primitive, set with the putprop primitive, and
    removed with the remprop primitive.

        (get 'atom 'tag)
                  Returns the tag property or ().
        (putprop 'atom value 'tag)
                  Makes value the tag property of atom.
        (remprop 'atom 'tag)
                  Removes the tag property of atom and
                  Returns the old tag property.


--*-- repaint
    buffer command that moves point to the line specified.  With  no  argument
    or with  an  argument  of  one,  point  is  moved to the first line of the
    screen.  It is bound as {CTRL-X}r.  (EMACS*> EXTENSIONS>SOURCES>BUFFER.EM)

        (repaint optional-integer)


--*-- replace
    extended function that searches for a string and replaces all instances of
    that string with another between mark and point.

        (replace)     or      (replace search-string replace-string)


--*-- reset
    extended command that puts you back in one window mode, sets  hcol  to  1,
    and refreshes the screen.  (EMACS*>EXTENSIONS>SOURCES> BUFFER.EM)

        (reset)


--*-- rest_of_line
    text function that returns the rest of the current line.

        (rest_of_line cursor)

    where cursor is an optional argument that if specified, returns  the  rest
    of the line this cursor points to.


--*-- return
    function that goes back to  the  calling  function  or  to  EMACS.   (This
    returns to the immediate calling level, not top level.)

        (return any)

    The optional any argument is the value type to return to the caller.


--*-- reverse_search
    searches in the reverse direction for a string.  This  returns  a  boolean
    that indicates whether or not the search succeeded.

        (reverse_search string)

    where string is the string to search for.


--*-- reverse_search_command
    search command that searches for a  string  backward,  normally  bound  to
    {CTRL-R}.  This  should  not  be used in extension programs.  Instead, use
    reverse_search.


--*-- ring_the_bell
    sends a control-g to the terminal.  Returns Nil.

        (ring_the_bell)


--*-- rubout_char
    deletion command that deletes the preceding character, normally  bound  to
    both {backspace}  and  {CTRL-H}  (which  are  the  same thing).  Note that
    {DELETE} is also bound.

        (rubout_char optional-arg)


--*-- rubout_word
    deletion command that deletes the preceding word (or from  point  back  to
    the start of a word, normally bound to {ESC}{CTRL-H} and {ESC}{back space}
    (which are the same thing).  Note that {ESC}DELETE is also bound.

        (rubout_word optional-arg)


--*-- same_buffer_p
    buffer test that returns true if the  two  cursors  point  into  the  same
    buffer.

        (same_buffer_p cursor-1 cursor-2)


--*-- save_all_files
    command that automatically saves all files that have been modified.   This
    command ignores  buffers  that  have been modified.  This is invoked as an
    extended       command;         i.e.,        {ESC}X        save_all_files.
    (EMACS*>EXTENSIONS>SOURCES>BUFFER.EM)

        (save_all_files)     or     (save_all_filesf)


--*-- save_excursion
    this function pushes the current cursor and executes all of its arguments.
    When this is finished, it restores the current cursor.   If  this  entails
    switching buffers,  it will do so and update all values, modes, and so on,
    accordingly.

        (save_excursion
             action
             ... )


--*-- save_file
    command that writes the current file to the PRIMOS file system  under  its
    current name.   This  overwrites  the  last file copied, normally bound to
    {CTRL-X}{CTRL-S}.

        (save_file)


--*-- save_tab
    extended tab command that writes the tabs currently being used to a  file.
    It prompts  for  the filename.  If the file does not exist, it creates it.
    After   the    tabs    are     written,     the     file     is     saved.
    (EMACS*>EXTENSIONS>SOURCES>TAB.EM)


--*-- say_more
    puts a line on the screen in "print out" mode  following  a  clear_and_say
    command.  More processing is automatic.

        (say_more string)

    where string is the line to display.


--*-- scroll_other_backward
    command that scrolls the window reached by other_window command backwards.
    It will accept both positive and negative arguments.  If the  argument  is
    negative,  it  calls  scroll_other_forwardf.   It  is  normally  bound  as
    {CTRL-X}v.  (EMACS*>EXTENSIONS>SOURCES> BUFFER.EM)

        (scroll_other_backward optional-integer)


--*-- scroll_other_forward
    command that scrolls the window reached by other_window  command  forward.
    It will  accept  both positive and negative arguments.  If the argument is
    negative, it calls  scroll_other_backwardf.   This  command  is  bound  as
    {ESC}{CTRL-V}.  (EMACS*>EXTENSIONS>SOURCES> BUFFER.EM)

        (scroll_other_forward optional-integer)


--*-- search
    PL/I built-in search  function.   It  returns  an  integer  which  is  the
    position of  the  first  character  in string-2 which appears in string-1.
    The first character is number 1.  If none is found, 0 is returned.

        (search string-1 string-2)

    where string-1 is the string to search within and string-2 is  the  string
    of characters to search for.


--*-- search_bk
    like search_fd except it searches backwards  from  point.   This  function
    returns a  boolean  that  indicates  whether  or  not  the  operation  was
    successful.

        (search_bk string integer)

    where string is the set of characters to search  for  and  integer  is  an
    optional argument that indicates how many times to search.


--*-- search_bk_in_line
    like search_bk, except only in the current line.  This function returns  a
    boolean that indicates whether or not the opn PEEL is setq which is more or less the
    same as lisp's setq.  The first argument, which must be an atom, is  bound
    to the  second  argument, which may be of any type.  From that time onward
    that value is "bound to" that atom.  Note that the atom is  not  evaluated
    (hence the q).  Example:

        (setq number_of_marks (+ number_of_marks 1))


--*-- settab
    extended tab command that lets a user set tabs in  whatever  way  that  is
    wanted.  (EMACS*>EXTENSIONS>SOURCES>TAB.EM)


--*-- settabs_from_table
    extended tab command that looks at a line  and  sets  tabs  based  on  the
    column position  of  words.   This  command  may  be abbreviated to setft.
    (EMACS*>EXTENSIONS>SOURCES>TAB.EM)

        (settabs_from_table)


--*-- setup_overlay_mode
    function used  by  overlay  mode  to  define  how  characters  are   used.
    (EMACS*>EXTENSIONS>SOURCES>OVERLAY.EM)

        (setup_overlay_mode)


--*-- skip_back_over_white
    like skip_over_white except in reverse.  This function returns  a  boolean
    that indicates whether or not the operation succeeded.

        (skip_back_over_white integer)

    where integer  is  an  optional  argument that indicates how many times to
    skip.


--*-- skip_back_to_white
    like skip_to_white except in reverse.  This  function  returns  a  boolean
    that indicates whether or not the operation succeeded.

        (skip_back_to_white integer)

    where integer  is  an  optional  argument that indicates how many times to
    skip.


--*-- skip_over_white
    whitespace function that skips to the first character not  in  the  string
    bound to  the  atom  whitespace.   This  function  returns  a boolean that
    indicates whether or not the operation succeeded.

        (skip_over_white integer)

    where integer is an optional argument that indicates  how  many  times  to
    skip.  That  is, it alternates searching over and for white so this can be
    used to skip tokens.


--*-- skip_to_white
    whitespace function that moves  forward  to  any  character  in  the  atom
    whitespace.  This function returns a boolean that indicates whether or not
    the operation succeeded.

        (skip_to_white integer)

    where integer  is  an  optional  argument that indicates how many times to
    skip.  This may be used to skip tokens since it alternates  searching  for
    white and nonwhite.


--*-- sleep_for_n_milliseconds
    function that  tells  EMACS  not  to  do  anything  for  the   number   of
    milliseconds specified.   This  returns  an integer indicating how long it
    slept.

        (sleep_for_n_milliseconds integer)

    where integer indicates the number of milliseconds to sleep.


--*-- sort_dt
    date command that moves date information around so it is  in  sort  order.
    (EMACS*>EXTENSIONS>SOURCES>DATE_FORMAT.EM)


--*-- sort_list
    function that sorts a list and returns the sorted list.  The original list
    is unchanged.

        (sort_list list)

    where list to sort is of the form ((key ...)  ...)


--*-- split_line
    indentation command that breaks a line, preserving the horizontal position
    of the second half by indenting it to its  old  starting  position.   This
    command is  bound  as  {ESC}{CTRL-O}.   This  command  does  not  take  an
    argument.  (EMACS*>EXTENSIONS>SOURCES> INDENT_AND_WHITE.EM)

        (split_line)


--*-- split_window
    command that splits the current window into  two.   Point  goes  into  the
    second window, normally bound to {CTRL-X}2.

        (split_window)


--*-- split_window_stay
    command that splits the current window into two.  Point stays in the first
    window, normally bound to {CTRL-X}3.

        (split_window_stay)


--*-- stop_doing
    special function  that  stops  execution  of  the  current  do_forever  or
    do_n_times loop.


--*-- stem_of_line
    text function that returns the stem (that is, the leading portion) of  the
    current line.

        (stem_of_line cursor)

    where cursor  is  optional.  If it is used, this function returns the stem
    of the line pointed to by the cursor.  Otherwise, it returns the  stem  of
    the current line.


--*-- string
    this is a data type.


--*-- string_length
    text function that returns the length of a  string  which  is  an  integer
    value.

        (string_length string)


--*-- string_of_length_n
    function that produces a string of the specified length.  It returns  this
    string.

        (string_of_length_n string-1 integer string-2)

    where string-1  is  the  string  to be padded or truncated, integer is the
    length to pad or truncate to, and  the  optional  string-2  indicates  the
    characters to be used for padding.


--*-- string_to_integer
    function that converts a string to  an  integer.   Returns  the  resulting
    integer if there is no error.

        (string_to_integer string)

    where string is the string to convert.


--*-- stringp
    string test function that returns true if the argument is a string.

        (stringp any)

    where any is the argument to check.


--*-- substr
    text function which is  identical  to  the  PL/I  substr  function.   This
    returns a substring (or portion) of a string.

        (substr string integer-1 integer-2)

    where string  is  what  you  are  taking  a substring of, integer-1 is the
    offset into  the  string  (starting  at  1),  and  the  optional  string-2
    indicates the  number of characters to take.  If string-2 is omitted, this
    function takes the rest of the string beginning at the offset.


--*-- suppress_redisplay
    function that turns on  or  off  redisplay.   Returns  the  old  value  of
    redisplay (which is a boolean).

        (suppress_redisplay boolean)

    where boolean indicates whether to turn it on or off.


--*-- tab
    tab command that inserts blanks until it reaches the  tab  stop,  normally
    bound to  {CTRL-I}.   (The  tab library contains many other tab functions.
    Also, the library rebinds {CTRL-I} to type type_tab command.)


--*-- tablist
    extended tab commands that accepts a series of numbers from  the  terminal
    and   converts  these   numbers   into    tab      stops.         (EMACS*>
    EXTENSIONS>SOURCES>TAB.E        6    atom
        7    function
        8    list
        9    cursor
       11    dispatch_table
       12    handler
       14    window

--*-- type_tab
    tab command  that  moves  point  to   the   next   tab   stop.    (EMACS*>
    EXTENSIONS>SOURCES>TAB.EM)

        (type_tab optional-integer)

    where the  optional  integer can be either positive or negative.  If it is
    negative, the back_tab routine is called.


--*-- uid
    function that returns a unique id.

        (uid)


--*-- unmodify
    buffer command that tells EMACS to treat the buffer  as  if  it  were  not
    modified (even if it was).


--*-- upcase
    text command that uppercases its argument.  It returns the uppercase  form
    of the string.

        (upcase string)


--*-- uppercase_region
    text command that  converts  a  region  to  uppercase.   It  is  bound  as
    {CTRL-X}{CTRL-U}.  (EMACS*>EXTENSIONS>SOURCES>TEXT.EM)

        (uppercase_region)


--*-- uppercase_word
    text command that changes the text from point to the end of the word  into
    upper case.   It  also  returns  the altered text.  It is bound as {ESC}U.
    (EMACS*>EXTENSIONS>SOURCES>TEXT.EM)

        (uppercase_word optional-arg)


--*-- user_name
    function that returns the login name.

        user_name

    Parentheses are not normally used.


--*-- use_cursor
    like save_excursion followed by a go_to_cursor.

       (use_cursor xyz
                action
                  ... )


--*-- verify
    this is the PL/I verify function which returns the first character in  the
    first string that is not in the second.  It returns zero if all characters
    in the  first  string  appear  in  the  second.   The value returned is an
    integer.

        (verify string-1 string-2)

    where string-1 is the string to verify within and string-2 is the  set  of
    characters to check for.


--*-- verify_bk
    like verify_fd except it scans  backwards.   It  returns  a  boolean  that
    indicates whether or not the appropriate character was found.

        (verify_bk string integer)

    where string  is  the  set of characters and the optional integer argument
    indicates the number of times to verify.


--*-- verify_bk_in_line
    like verify_bk except limited to the current line.  It returns  a  boolean
    that indicates whether or not the appropriate character was found.

        (verify_bk_in_line string integer)

    where string  is  the  set of characters and the optional integer argument
    indicates the number of times to verify.


--*-- verify_fd
    function that scans forward until a character not in the specified set  is
    found.  It  returns  a  boolean  that  indicates  whether  or  not the the
    appropriate character was found.

        (verify_fd string integer)

    where string is the set of characters and the  optional  integer  argument
    indicates the  number  of  times  to verify.  Verifying is alternated with
    searching.


--*-- verify_fd_in_line
    like verify_fd except only in the current line.  It returns a boolean that
    indicates whether or not the appropriate character was found.

        (verify_fd_in_line string integer)

    where string is the set of characters and the  optional  integer  argument
    indicates the number of times to verify.


--*-- view_file
    command that lets a user look through a file without using EMACS commands.
    (EMACS*>EXTENSIONS>SOURCES>MISC.EM)

        (view_file)


--*-- view_kill_ring
    after view_kill_ring  is  invoked,  the  contents  of  kill  buffers   are
    displayed.  At  all  times  you  are given the options of next, saving, or
    quiting.  It   is   normally   bound   as   {CTRL-X}{CTRL-Z}k.    (EMACS*>
    EXTENSIONS>SOURCES>KILL_RING.EM)


--*-- view_lines
    command that views lines toggled off.


--*-- viewer
    function that  moves  though  a  file  without   using   EMACS   commands.
    (EMACS*>EXTENSIONS>SOURCES>MISC.EM)

        (viewer optional-integer optional-string)

    where integer  is  optional  and indicates the number of lines in the file
    and string is an optional text message to be printed.


--*-- vsplit
    extended function that splits  the  current  window  vertically  into  two
    parts.  The split occurs at point.


--*-- wait_for_input
    function tht waits for the user to type a character.   This  returns  Nil.
    This function is obsolete--like assure_character raw)" but does not return
    the character.

        (wait_for_input)


--*-- wallpaper
    extended help command that displays all functions bound to function  keys,
    including ones that are set by the user.


--*-- whitespace
    atom that contains characters used when searching for whitespace.


--*-- whitespace_to_hpos
    inserts whitespace until the specified  horizontal  position  is  reached.
    May insert  nothing.  This returns a boolean indicating whether or not the
    function succeeded.

        (whitespace_to_hpos integer)

    where integer is the horizontal position.


--*-- white_delete
    whitespace command that deletes the whitespace around point.  The function
    white_deletef returns  a  boolean  that  indicates  whether  or  not   the
    operation   was  successful.   The  command  is   bound    as      {ESC}\.
    (EMACS*>EXTENSIONS>SOURCES>INDENT_AND_WHITE.EM)

        (white_delete)

        (if (white_deletef) ...  )


--*-- window
    this is a data type.


--*-- window_info
    information function that gets/sets  information  about  a  window.   This
    returns the old value of the property.

        (window_info 'property any)

    where the quoted property atom is explained below, and the optional any is
    the new value for the property.

    top_line           The top line at which the current window is  displayed.
    bottom_line        The last line on which the window is displayed.
    left_column        The leftmost column in which the window appears.
    right_column       The rightmost column in which the window appears.
    is_active          Whether the window is being redisplayed.
    is_major           Whether the  window  is  a  major  window.   This  will
                       usually be true.
    top_line_cursor    This cursor points into the top line of the text  which
                       appears as the top line in the window.
    showing_numbers    Whether line numbering is on.
    column_offset      The value of the horizontuired.


--*--
