Focus and prompt

There is always one name, called the focus, which is the current center of interest. After the completion of each command, the Elan Programming Environment prompts with the focus, indicating its readiness to accept further commands. The focus is extended by a type indication, indicating whether there exists a definition associated with the name, and if so, what kind of definition (refinement, PROCedure, OPerator, LET or TYPE).

Undefined names are recognized by a question mark:


\begin{elan}
program ?\cursor
\end{elan}

or


\begin{elan}
RESL ?\cursor
\end{elan}

Refinement names have a colon mark:


\begin{elan}
take next:\cursor
\end{elan}

The names of procedures and operators are generic, i.e. can have more than one definition. The headings of all definitions of the name are shown. Procedures and operators are indicated like:


\begin{elan}
PROC put (INT a):\cursor
PROC put (REAL a):
PROC put (TEXT a):
\end{elan}

or


\begin{elan}
TEXT OP CAT (TEXT CONST a):\cursor
\end{elan}

LET definitions for values and types have a let mark:


\begin{elan}
LET n\cursor
\end{elan}

or


\begin{elan}
LET VECTOR\cursor
\end{elan}

TYPE definitions are displayed like:


\begin{elan}
TYPE T\cursor
\end{elan}

Initially, the focus is the name program, being as yet undefined. Thus, the initial prompt looks like:


\begin{elan}
program ?\cursor
\end{elan}

Another name can be chosen as focus by the focus-command (see 5.3).

Upon focussing on a generic name the cursor appears at the heading of the first definition. By (repeatedly) giving a next-command (n), it is possible to navigate over the various definitions of a generic algorithms, e.g. (after one n):


\begin{elan}
PROC put (INT a):
PROC put (REAL a):\cursor
PROC put (TEXT a):
\end{elan}

It is now the second definition which is the focus for e.g. an edit- or show-command.