One navigates around a term by moving a cursor, sometimes called the point by analogy with emacs. The cursor can be in one of three modes:
i:
.
j:
.
indicates that a term cursor is at the subterm j = i + 1.
Occasionally a term has no width
, and a term cursor on such a term
is displayed as a thin vertical line. In this document, we indicate
such a cursor by
.
abcdefabc defabcdef
The text cursor is the insertion point for new characters.
There is a potential ambiguity as to which text slot a text cursor
is at: consider two adjacent text slots containing the strings
aaa
and
zzz
and the following text cursor:
aaa zzz.
Display forms are designed so this kind of situation should never occur.
The text cursor is significantly thinner than the term cursor on a no-width term, so it should be easy to distinguish the two.
For example, if we had the following text cursor in a term:
i:
.
j:
. j = i + 1
then a `move-left-one-character' command would leave a screen cursor
(indicated by a box) over the
.
i:
.
j:
. j = i + 1
In the rest of this document we'll never have to explicitly represent a screen cursor, so all outlined terms should be interpreted as term cursors.