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. |
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. |
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:
![]() |
|
WORDS![]() |
|
![]() |
PLAIN![]() |
If point-suppression (toggled by <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
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: