Multics Emacs -- 04/23/81 **This file is intended to be perused via dprint, print, or via an** **editor. It is not intended to be perused with the help command ** Multics Emacs is a display-oriented text-preparation and editing facility modelled after the EMACS editor of R. Stallman and others on the MIT AI Lab's PDP-10. The pathname of Multics Emacs is >unb>emacs. The normal arguments to the emacs command are the pathnames of files to be read in and edited. The command has the added names multics_emacs and e. This info segment contains basic information about accessing Multics Emacs, and the most fundamental information about its use. For a list of editor commands available in the default environment (Fundamental Mode), see fundamental-mode.info in this directory. The reader should be aware of the following documents in >doc>ss>emacs; you should obtain a copy of fundamental-mode.info if you have not already. Most of these documents are intended to be printed and read; they are not intended for perusal with the "help" command: emacs.info This info segment. fundamental-mode.info The editor commands available in the default environment. emacs-tutorial.info A tutorial introduction to using Multics Emacs (incomplete, but valuable) pl1-mode.info Documentation of the features for editing and creating PL/I programs. lisp-mode.info Documentation of the features for editing and creating Lisp programs. fortran-mode.info Documentation of the features for editing and creating FORTRAN programs. rmail.info Information on the Emacs mail reading and sending subsystem. windows.info A description of the window management system, and the window and buffer editor subsystems. emacs.changes.info A reverse chronological transcript of missives announcing changes to Multics Emacs. emacs.status.info A list of known bugs, deficiencies, and planned features, and their status. extensions.info Information for those wishing to write their own code in the Emacs environment, including an introduction to Lisp. extensions.changes.info Changes to extensions.info. ldebug-mode.info Information on the interactive debugging facility for Lisp code in Emacs. ctl-writing.info Information on how to write new terminal support packages to support additional types of video terminals. Mail complaining about bugs, or missing features, should be sent to emacs.bugs at MIT-Multics or via the standard trouble report mechanism at any other site. There exist mailing lists for changes, both for all ARPANET sites and Phoenix System M. If you wish to be put on these mailing lists, or taken off, please send mail to either of the above addresses. Invoking the emacs command places you in an editor buffer named "main". Text may be typed immediately: it goes directly into the buffer. The carriage-return key is used to terminate lines. The cursor of a video terminal, or the print head of a printing terminal, shows the place where text will next go. The cursor (or print head) corresponds to a point in the buffer known as "point". "Point" moves around as characters are typed. Point may be moved explicitly by "editor commands", which are issued by typing either single "control" characters, or two-character sequences. Commands exist to move point over words, paragraphs, characters, sentences, etc., forward and backward one or many times. Commands exist to delete characters, words, sentences, etc., and to retrieve or rearrange text so deleted. Various sets of commands are available to deal with various types of editing tasks: the file fundamental-mode.info tells what commands are invoked by what keys, and what they do. "Control" characters are entered by holding down the key marked "CTL", "CTRL", "CNTRL", "CONTROL", or the like, and pressing some other key (say, "N", to get a "Control N") while the "CONTROL" key is being held down; it is like a "shift" key. In some cases, although not for letters, it may be necessary to hold the CONTROL and SHIFT keys to get some characters. Control characters are represented by the circumflex character in all Emacs documentation: "^N" means a "Control N", i.e., the character generated by depressing the "N" key while the "CONTROL" key is being held down. Many Emacs commands are invoked by 2-key sequences whose first key is the "ESCAPE" key; this key is often marked "ESC", "ALT", or "ALTMODE". It is denoted by "ESC" or "esc" in the documentation. The "ESC" key generates a character; it should be depressed and released like any other key. In this document, and all the Emacs documentation, "CR" means the "carriage return" key. "\177" means the "DEL" or "RUBOUT" key. "TAB" means the "TAB" key; if your terminal does not have a "TAB" key, "Control I" will do as well. There is an automatic documentation feature in Emacs; to find out what any key does, depress and release the ESC key, and type a question mark (i.e., type the TWO KEYS in order, ESC and ?). Emacs will then prompt: Explain Key: Then type the key or key sequence (for instance, a Control N) about which you wish to find out. Emacs will display (or print) the appropriate documentation automatically (it may take a little time to find it, however). When you resume editing, the documentation will be removed from the screen. "Point" is considered to be between two characters; it is to the left of the blinking cursor. Newline characters at the ends of lines count as one character each, as do tabs, backspaces, and other control characters in the text (all control characters other than tab and linefeed are displayed in the usual Multics octal escape format, e.g., \032). Emacs will often prompt for information such as search strings, file names, buffer names, etc., in an area at the bottom of the screen (or on an indented line on a printing terminal) called the "minibuffer". This is a little buffer: one can edit it, for example, use the familiar "#" to delete unwanted characters as a regular buffer. Responses in the minibuffer are almost always terminated with the Carriage Return key. To get out of a minibuffer at any time without executing the command, type two Control G's. The terminal will beep, and the minibuffer command will be aborted. Only the most common commands are invocable from one-or-two key sequences; other commands, known as "Extended commands" must be invoked by their full name. In order to invoke an extended command, type the two characters ESC and X: Emacs will propmpt in the minibuffer for the name and arguments of the extended command. Type them, and a carriage return. To obtain the documentation for any extended command, use the "describe" extended command. Type, ESC, X, describe, a space, the name of the extended command you wish to find out about, and a carriage return. For instance, type ESC X describe speedtype CR to learn about the "speedtype" command. The "apropos" extended command can be used to find all commands (and what keys invoke them) that "mention" a particular subject in their command-names. This can be used to find what command you want when you don't know what key invokes it. Type ESC X describe apropos CR to find out about it. Many commands can be repeated many times automatically by giving them a "numeric argument". This is done by typing ESC, the number desired, and then the basic command. For instance, ^D (Control D) deletes a character. ESC 3 ^D deletes three characters. Other commands use the presence or value of a numeric argument to perform alternative actions, or modify their actions: this is documented in the documentation of the individual commands. A brief list of commands that accept numeric arguments appears below. Negative arguments can be supplied by typing a minus sign (-) after ESC; negative arguments generally cause "backwards action", for instance going backward by screens instead of forward. Single-character commands usually deal with spacing over, or otherwise manipulating characters or lines. Two-keystroke commands starting with the ESC key usually deal with words or sentences, often parallelling the single-character commands (example, Control D is delete a character, ESC D is delete a word). More uncommon commands start with "prefix" control characters: for instance, Control X Control F reads in a file. Characters need not be shifted (upper case) when entered after ESC or a prefix character. Here is a list of very few simple commands. To find out more about any of them, use ESC ? as described above: ^X^F Find, i.e., read in a file. ^N Go to the next line. ^P Go up to the previous line. ^A Go to the beginning of the line. ^E Go to the end of the line. ^F Go forward a character. ^B Go backward a character. ESC-< (Escape Less-than) Go to the beginning of the buffer. ESC-> (Escape Greater than) Go to the end of the buffer. ^S Search forward. CR ends the search string. ^D Delete a character. # Delete last character. ESC ? Help- find info on a command. ^X^C Quit Emacs. ^X^W Write out buffer to a file. There are many, many commands. See fundamental-mode.info. To find out about all the "search" commands, type ^_ A search CR and so forth. Typing Control Underscore (^_) gets you into a help facility: ^_? gets it to describe what it can do. ---------------------------------------- The following commands repeat with numeric arguments: ^B ^C ^D ^F ^N ^O ^P ^Q # ESC-A ESC-B ESC-D ESC-E ESC-F ESC-# ESC-[ ESC-] Also tells ^Y how many back to yank. Also tells ^K how many lines to kill. Also tells ESC-Q whether to adjust or not. Also tells ^XS whether to use string or QEDX-like matching. Tells ^X2 how big to make top window. Tells ^XV how many lines to print. Tells ESC-R how to position the cursor, and ^L the screen. Tells ^X* whether to display long form, and macros how to iterate. Tells ^XD whether to edit the working directory or some other. Tells ESC-I whether to indent to words on last line, or look up. ------------------------------------------------------- Here is a brief table of some common cursor motion and deleting commands: (\177 means the "RUBOUT" or "DEL" key) Forward Backward End-of Beginning-of Delete Delete Forward Backward Character ^F ^B ^D \177 or # Line ^N ^P ^E ^A ^K Word ESC F ESC B ESC F ESC B ESC D ESC \177, ESC # Sentence ESC E ESC A ESC E ESC A ESC K ^X \177, ^X# Paragraph ESC ] ESC [ ESC ] ESC [ Screen ^V ESC V ESC99ESC R ESC0ESC R Buffer ESC > ESC < ---------------------------------------- If you have set your Multics erase, kill, and character-escape characters to other printing characters than the usual #, @, and \, Emacs will use them for these purposes. If you use the standard Multics editing characters, or have non-printing characters as editing characters, Emacs will use #, @, and \ in their usual sense. Emacs attempts to determine the characteristics of your terminal from the Multics terminal type. If you are logged in via the ARPA network, Emacs will attempt to negotiate the "Supdup Output" TELNET option to determine your terminal type. If the Multics type is ASCII, or your User Host does not support the Supdup Output option, or your Multics terminal is not of a recognized type, Emacs will ask you the type of terminal you have with a question of the form: What type terminal do you have? You may answer "quit" to this response to exit Emacs immediately. In addition, three control arguments for setting the terminal type are recognized by Emacs when given as the FIRST command line argument. These are: emacs -ttp STRING or emacs -terminal_type STRING tells Emacs that your terminal type is STRING. The value of STRING may be any recognized editor terminal type or the pathname of a control file to load. The terminal type given by STRING will be set permanently. IE: changing your Multics terminal type will not affect Emacs' memory of this STRING. emacs -reset causes Emacs to forget any characteristics of the terminal set by the -ttp option. Emacs will once again check the Multics terminal type as is the normal case. The line speed (if set by -line_speed) is forgotten as well. emacs -query causes Emacs to immediately ask the user for the terminal type without checking the Multics terminal type first. The answer you give may be any STRING accepted by the -ttp option. The following control argument may be supplied to indicate to Emacs your line speed. Although Multics normally supplies this information to Emacs automatically, network users may find it necessary to use this control argument to obtain proper padding: emacs -line_speed BAUD-RATE where BAUD-RATE is the output line baud rate in bits per second. The -line_speed control argument need only be supplied once per process. If used, it must be the first control argument given, or may follow -ttp, -query or -reset immediately. Emacs looks for a file called start_up.emacs in the home directory. It may be full of Lisp forms, or be a compiled Lisp object segment. It will be loaded (executed) if it exists. Execution of the start_up segment will be suppressed if emacs is given the -no_startup (-ns) control argument, which must follow all the terminal type control arguments but precede any pathnames on the command line (or, of course, be the only control argument). After the start_up segment (if any) is executed, the following control arguments are processed by the "default start up": emacs -mc path or emacs -macros path path is a pathname. Loads path as Lisp, like teco$macro. emacs -ap fun arg1 arg2 or emacs -apply fun arg1 arg2 evaluates (fun 'arg1 'arg2 ... ) Valuable for constructing abbrevs. emacs paths where paths are not any of the above. Does a find-file (^X^F) on each path. The actions of the default start up may be suppressed by the start_up segment if the latter sets the list variable "suppress-default-start-up-execution" to t. Emacs accepts META characters from AI TV's, and does TELNET break/interrupt processing. ******************** Multics Emacs was designed, implemented, and documented by Bernard Greenberg. William York has been co-implementor. Gary Palter designed and implemented the current Multics file interface and "hairy search commands", the current internal command definition facility (defcom), and has otherwise contributed very heavily. Richard Lamson designed and implemented the current message and interrupt facility. Many other people have contributed ideas and suggestions. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved