EditorDoc Sections Nuprl Doc
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html
Often edit commands are overloaded depending on the display-forms or operators the point is located on or in, and perhaps on the kind of object in which the command is being executed.

There are 3 major contexts used by this editor, as well as some lesser ones that are handled less systematically.

1. The PLAIN context is really just the lack of any special context: it is the one in which one performs most editing of mathematical notation, for example.
2. The ML context is used to interpret commands for editing structured ML expressions. doc for ML editing
3. The WORDS context is used to interpret commands for a simple word processor, which is used not only for creating text, such as you are reading here, but also provides the generic "glue" for informally combining various kinds of expressions together into a single term, by providing some white-space and margin control for example. doc for WORDS editing

Some minor contexts supported by this editor are: operator definitions, display-form specifications, operator-precedence descriptions, and inference rule definitions.

When one wants to mix different kinds of expressions, there will be moments in the editing process, namely, when one is trying to embed one kind of expression in a context for another kind, when the command you want to give cannot be used in the context. For this reason, each major context has an associated "temporary environment" which can be inserted in order to give the appropriate interpretation to the otherwise ambiguous command.
These temporary environments and the commands for inserting them are:

`ml' ML <ml>
`wo' WORDS <words>
`{plplain}' PLAIN <term>

If point-suppression (toggled by `(c-u)(c-s)') is enabled as is normal, these environments will be removed if the point is located onto them, and the special ones, i.e. not PLAIN <term>, will even be removed if the point is just below, so long as the operator is native to the context.
For example, to insert <ml> <ml> in a WORDS context, issue the commands `ml' `(c-(space))'. If you had just entered `(c-(space))' in the WORDS context you would have gotten <words go here> <words go here> instead.

The prompts for term slots in special contexts are usually indicative of the the appropriate context. For example, ordinary juxtaposition of words, and function application in ML are usually indicated simply by separating the two components by a space or line break.
Guess which is which: <ml> <ml> versus <words go here> <words go here> IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html

EditorDoc Sections Nuprl Doc