Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - info/
There are no other files named in the archive.
This file describes the TMACS library, source in MC:ECC;TMACS >.

Node: Top,		Next: M-X Commands,		Up: (EMACS)

    TMACS is a library containing EMACS commands of various sorts, which
may be of occasional (or perhaps frequent) interest to the EMACS
community.  This file describes each of the functions in TMACS, starting
here with the ones that are probably of most general interest.  These are
summarized here;  for full details see the next node.

M-X Type Mailing List<mailing list name><cr>
	This command shows you who is on any ITS mailing list.
	It will work from one ITS machine to another -- e.g. if you are on
	AI, you can see MC's TMACS mailing list by doing:
	M-X Type Mailing ListTMACS@MC<cr>

^R Select Buffer
	This function is designed as a replacement for the standard List
	Buffers on C-X C-B.  This version will not only list the buffers,
	but let you select buffers in a recursive edit level on this list.

M-X Graph Buffer<cr>  or  ^R Buffer Graph
	This function (called either by M-X or put on a key) shows you a
	schematic picture of the buffer in the echo area, e.g.:
	     1      2     3      4      5     6      7      8     9
	This shows the region, the window, any narrowing that has occured.

M-X Send Mail  (commonly put on C-X M)
	A replacement for the standard EMACS C-X M (Mail) command.  This
	one allows you to say which mail subsystem you want to use, e.g.

M-X =Abbrev<abbrev><full function name><cr>
	This allows you to create abbreviations for function names that
	you call via M-X.  E.g. to make M-X LLL<cr> be an abbreviation for
	M-X List Loaded Libraries<cr>, just do:
	M-X =AbbrevLLLList Loaded Libraries<cr>
	This works nicely with completion -- if you type M-X LLL you see:
	M-X LLL = List Loaded Libraries giving you confirmation (though
	you could just type M-X LLL<cr> and not bother to see it).

^R Draw Vertical Line
	Draws a vertical line on the screen (but not modifying the
	buffer), allowing you to line up things visually.  Only works on
	ITS machines.

* Menu:		The descriptions in the nodes below were produced
		automatically by the Abstract File command in the ABSTR
		library.  (Note:  if you see things like ^R Exit, just
		think of them as function names and ignore the s that
		surround them.  Someday these may be handled by ABSTR in
		the way that M-X Describe does -- by telling the key those
		functions are on.)

* M-X Commands::	The functions in TMACS generally run by M-X.
* Character Commands::	The functions in TMACS generally put on keys.
* Subroutines::		Subroutines of interest to TECO programmers.
* Mail::		If you wish to get news about TMACS or complain.

Node: M-X Commands,	Next: Character Commands,   Up: Top

Commands in file TMACS:

Type Mailing List
   C	Prints entry for string argument in .MAIL.;NAMES.
	This works on any ITS machine.  (.MAIL.;NAMES > has the ITS mailing lists.)
	For instance, M-X Type Mailing Listbug-random-program<cr> will show you who
	    is on the bug-random-program mailing list on your machine.
	If string argument is of form <name>@<site>, <site>:.MAIL.;NAMES is used.
	    Only final @ indicates site, so you can do something like:
	    M-X Type Mailing List$BUG-@@AI$
	A numeric ARG limits depth of recursion on EQV-LIST members. (Default depth
	    is 3.)
	<name>@<site> entries in EQV-LIST are not followed.
	Prints "Done." when done, since it sometimes is slow.

Send Mail
   C	Send mail using some EMACS mail subsystem.
	Lets you edit a message in a recursive edit level.  Check the documentation
	    for the particular mail sender you are using, but in general ^R Exit
	    will finish and send the mail, and Abort Recursive Edit will abort
	    without sending the mail.
	Giving an explicit numeric argument means continue previous mail (which
	    might have been aborted).
	The option variable Mail Sender Library (if non-0) should be the name of the
	    library which has the mail sender.  (E.g. RMAIL, BABYL...)
	    It defaults to RMAIL on ITS, BABYL on TNX.
	The options Mail Sender Function and Mail Continuer Function (if non-0)
	    may be set to specify functions in the mail library, though they default
	    for the RMAIL, BABYL, and SEND-MAIL libraries.

Graph Buffer
   C	Call ^R Buffer Graph to show schematic of buffer.

   C	Define or delete MM abbreviations.
	MM =Abbrev$IF$Insert File$ will define MM IF = Insert File$
	    to be MM Insert File$, evaluated by name each time
	    MM IF$ is used.  Thus if a new Insert File is created or loaded,
	    that one will be used.  This works nicely with command-completion.
	0MM =Abbrev$IF$ and
	-MM =Abbrev$IF$ will remove definition for MM IF$.

Lock File
   C	"Lock" the file in the current buffer by creating FN1 *LOCKED*.
	Will complain if FN1 *LOCKED* already exists, and will tell who has it
	    locked (since FN1 *LOCKED* contains that person's xuname).
	Fails the critical-race test.
	This assumes that others will cooperate and use MM Lock File$ and
	    the matching MM Unlock File$.

Unlock File
   C	"Unlock" file in buffer locked by MM Lock File.

Flush Variables
   C	Flush variables with names containing string argument.
	String argument actually is a TECO search string, and so you can flush
	    variables containing "foo" OR "bar" by using the string argument
	The list to be flushed is typed, asking Y, N, or ^R?
	    N means abort, ^R allows editing of the list.

List unused ^R characters
   C	List unused control, meta, control-meta characters.
	If numeric argument then list unused prefix commands.

   C	Does nothing, returns nothing...
	...but is good for something:
	If you want to give some Teco commands from the bottom of the screen,
	you can call ^R Extended Command (or any such "Meta-X") and give the Teco
	commands as the "string argument".

   C	Turn SAIL file into readable form.
	mmUnSAILify interchanges underscore and backarrow; this is good for mail.
	1 mmUnSAILify goes further and fixes lossage caused by image FTPing a
	    SAIL file.

   C	Turn control chars into uparrowed chars.
	This is good for listing a file with control characters in it on a line
	    printer which would not show control characters well.
	String argument is a string of characters NOT to change.
	TABs are turned into spaces.  CRLF pairs are left alone.

Alter Options
   C	Edit some or all of the permanent options.
	String argument is a filter for the option names -- you will be editing all
	    options whose names contain the string.  If you don't give a string
	    argument, all options will appear for editing.
	A variable is an option if its comment starts with "*" or "!*".  (The variable
	    name must not contain a colon.)
	When you exit the recursive edit with ^R Exit, the values are updated.
	To abort, use Abort Recursive Edit.
	If you are only editing a few options, only part of the screen will be used,
	    to reduce the amount of redisplay upon exit.
	The format of the table is fairly obvious; type HELP to get details.
	*** This version will soon be removed from TMACS, since it will be in
	    standard EMACS.

Edit Options
   C	Edit some or all of the permanent options.
	String argument is a filter for the option names -- you will be editing all
	    options whose names contain the string.  If you don't give a string
	    argument, all options will appear for editing.
	A variable is an option if its comment starts with "*" or "!*".  (The variable
	    name must not contain a colon.)
	When you exit the recursive edit with ^R Exit, the values are updated.
	To abort, use Abort Recursive Edit.
	If you are only editing a few options, only part of the screen will be used,
	    to reduce the amount of redisplay upon exit.
	The format of the table is fairly obvious; type HELP to get details.
	*** This version will soon be removed from TMACS, since it will be in
	    standard EMACS.

Abort Recursive Edit
   C	Abnormal exit from recursive editing command.
	The recursive edit is exited and the command that invoked it is aborted.
	For a normal exit, you should use ^R Exit, NOT this command.
	This is a replacement for the standard EMACS Abort Recursive Edit -- this
	TMACS version differs in that it never asks for confirmation.

Revert File
   C	Undo changes to a file.
	Reads back the file being edited from disk
	(or the most recent save file, if that isn't the same thing).
	A numeric argument means don't ignore the auto save files.
	This is a replacement for the standard EMACS Revert File -- this TMACS
	version differs in that it does not ask for confirmation.

Save Trees
   C	Compress a listing with form feeds.
	Replaces some ^L's in buffer by 4 blank lines, in an attempt
	to fill  all  pages.  Page length  is  an  optional  numeric

   C	Summarize new mail and call RMAIL or other mail-reader.
	The RMAIL library is used unless the variable $Mail Reader$ contains a
	    string naming the library to use.  That library must provide the
	    following functions compatible with RMAIL:
		# <libname> B	take a NUMARG and summarize that many messages.
		<ENTRY>		take a string argument and read that mail.
	    Also, the old-mail file must be of the form <xuname> <libname>, and
	    RMAIL's convention about *APPEND* is followed.
	If there is NO new mail, and the variable SRMAIL No New Mail Query Exit
	    is non-0, asks whether to exit or read mail.
	Any string arg is passed to the mail-reading command.
	Summarizing happens only if there is no string arg, i.e. you're reading
	    your mail in the normal way.

Nowhere Links
   C	Enters recursive ^R on links to nonexistant files
	String argument is directory name (should end with semicolon).

List Buffers
   C	List numbers, names, files and modes of all buffers.
	This is a replacement for the standard EMACS List Buffers (C-X C-B) but is
	    deemed prettier by some.

Node: Character Commands,   Next: Subroutines,	Previous: M-X Commands, Up: Top

^R Commands in file TMACS:

^R Select Buffer
   ^R	Display information about all buffers.
	A recursive edit level is entered on a list of all buffers.  On exit the
	buffer on the current line is selected.  Point is initially on line of current
	buffer and space will exit (like ^R Exit), so this is very much like
	List Buffers but combines listing with selecting in a way that does not
	involve much typing or redisplay.

^R Buffer Graph
   ^R	Show a scale schematic of buffer in echo area.
	(You can also use M-X Graph Buffer<cr>.)
	Draws something like the following in the echo area:
	     1      2     3      4      5     6      7      8     9
	The |--...--| indicates the whole buffer, numbers approx tenths.
	=== indicates the region.
	B indicates the virtual buffer beginning.
	Z indicates the virtual buffer end.
	[---] indicates the window.

^R Draw Vertical Line
   ^R	Draws from current hpos, not inserting.
	Line drawn only in current window, and column printed at base of line.
	This only works on ITS machines.
	If any ARG given, is displacement from current hpos.  E.g. -1
	    means draw line through position one column left.
	If C-U is specified, together with an ARG then ARG is an absolute column.
	    E.g. M-3 C-U as argument makes line in column 3.
	    But  M-3 as argument makes line in column 3+current_column.

^R Change Case Letter
   ^R	Next numeric argument letters, moving past.
	numeric argument negative means move left.
	Fast, does not move gap.

^R Get Macro Name
   ^R	Inserts macro name for char typed.
	MARK is set before inserted name.
	Handles bit and char prefixes, e.g. Meta-, ^X, unless:
	Given a numeric argument, gets the name of a prefixer (e.g. metizer).
	Impure-strings that are uncompressed macros are handled if their names
	    are present at the beginning of the macro.
	Some characters run standard builtin functions whose names are found in the
	    BARE library.  These work fine.  Others which are not found just insert
	    their key names, e.g. Meta-O.

^R Argument
   ^R	Put on digits, minus, and comma to get arguments

^R Break Line
   ^R	Break line if too long, even if not in Auto Fill Mode.
	Cursor may be anywhere within line.
	Line will be broken (space inserted at margin) repeatedly until it fits
	    within the margins.
	When break occurs, indenter (TAB) is invoked if $Space Indent Flag$ is non-0.
	    (Language modes set this, Text Mode does not.)
	*** Needs word to restore point correctly and hack printing tty. It also may
	    lose on some comment end cases currently.

^R Uppercase Last Word
   ^R	Uppercase word(s) before point.

^R Lowercase Last Word
   ^R	Lowercase word(s) before point.

^R Uppercase Last Initial
   ^R	Capitalize word(s) before point.

^R Really Underline Word
   ^R	Underline <NUMARG> words using backspaces.
	Canonicalizes the underlining if the option Canonicalize Underlines
	    is non-0.  (Multics-style canonicalization.)
	    If 0, it puts _<BS><letter> so that scopes don't show only the _.

^R Remove Word Underline
   ^R	Removes underlining from NUMARG words.

^R Comma-Arg
   ^R	Give pre- and post-comma arguments to a ^R command.
	Numeric argument becomes the pre-comma argument.
	Any digits you type after this become post-comma arguments.
	    They are terminated by a non-digit, which is the ^R command called.
	    If there are no post-comma digits typed, there is only a pre-comma
	Example (assuming this is on M-, and meta-digits are autoarguments):
	    Typing the following characters: M-1 2 3 M-, 4 5 6 M-X
	    Calls M-X with arguments of 123,456 so you get "123,456 MM".
	Leaves ..0 set to char after the post-comma argument.

Node: Subroutines,  Next: Mail,	Previous: Character Commands, Up: Top

Subroutines in file TMACS:

^^ TMACS Error Handler
   S	Q..P: handles TECO errors.
	If first character typed is "?" then MM Backtrace is called.
	A space makes us exit, with no action.
	If option TMACS Error Dispatch is non-0, some other characters may be
	    typed, in any order, ending with a space (no further action) or "?"
	    (enter MM Backtrace):
		B	Display the offending buffer.
		D	Directory Lister is run.
		W	Who caused this? -- type function's name.
	Typing HELP character describes the error handler.
	Quits are not handled at all unless QDebug is nonzero. That is so a quit
	    will cause the buffer and modeline to be restored and redisplayed

& Set ..D
   S	Create a new ..D with chars in arg as break characters.

& Get 9-Bit Character Name
   S	Inserts pretty name for 9-bit ARG.
	Example:  415. MM & Get 9-Bit$ inserts "Meta-CR".
	An arg of "2," means say "^M" instead of "CR", etc, and
	    ^B instead of an alpha on TV's.

& Get Function Name	[this is going away soon -- use 8,f or & Read Command Name]
   S	Return string argument1 or use ask use with completion.
	If string argument1 is null or "?", then calls the completing MM-name reader.
	If string argument1 is not ? or null, just returns that after getting its full name.
	numeric argument present means don't check the MM-name for validity; just return it.
	string argument2 is a prompt for asking user.
	VAL1: Non-0 if know the MM-name is valid.
	VAL2: The MM-name.
	Useful for commands that take MM-names as arguments:  the user can provide
	    an MM name or ask for completion on it.

& Kill Prefixed Variable Names
   S	Kill variables if names string argument-prefixed.
	string argument is prefix for variable name.  E.g. doing
	    m(m.m& Kill Prefixed Variable Names)Cache  will kill all variables
	    whose names start with "Cache ".

& List Prefixed Variable Names
   S	Display variable names string argument-prefixed.

& Insert Prefixed Variable Names
   S	Insert if name is string argument-prefixed.
	string argument is prefix for variable name.  One variable name to a line.
	E.g. m(m.m& Insert Prefixed Variable Names)MM  will insert the names of
	    all variables whose names start with "MM ".
	Also see & Kill Prefixed Variable Names, and & List Prefixed Variable Names.

   S	Edit and then send a reply to current message.
	With 1st arg of 1, continues editing an outgoing message.
	With 1st arg of 2, sends a (non-reply) message - different initialization.
	Uses its own buffer, *REPLY*, with Text and Auto Fill modes.
	This must be put into $MM # RMAIL R$ to work.

& Temporarily _<BS> No Break
   S	Set so _ and <BS> are not text breaks.
	Pushes a ..N so definitions for _ and <BS> revert when caller exits.

Node: Mail,   Previous: Subroutines,	Up: Top

    If you wish to be informed of changes to TMACS, asked about various
EMACS ideas being bandied about, or kept up-to-date on news about TMACS
commands, you can place yourself on the TMACS mailing list, which lives on

    If you wish to make any suggestions about TMACS, or comments etc., you
can mail them to TMACS@MIT-MC.  People on the TMACS mailing list get both
information and bug-reports.  It is thus a more verbose (though not
terribly so) mailing list than INFO-EMACS.

    The primary maintainers of TMACS are ECC@MIT-AI and EAK@MIT-MC, if you
want to be more selective in your suggestions.