SourceFileOps.mesa
Copyright Ó 1989 by Xerox Corporation. All rights reserved.
Linda Howe October 13, 1989 5:03:21 pm PDT
Coolidge, July 17, 1990 5:17 pm PDT
Christian Jacobi, August 24, 1990 12:35 pm PDT
Last tweaked by Mike Spreitzer on October 3, 1990 8:54 am PDT
SourceFileOps:
CEDAR
DEFINITIONS ~
BEGIN
ROPE: TYPE ~ Rope.ROPE;
Position:
TYPE ~
RECORD [
fileName: FileName,
index: ARRAY PosKind OF Range];
A position in a file may be identified by either or both of a line number range and a character index range.
FileName: TYPE ~ PFSNames.PATH;
PosKind: TYPE ~ {char, line};
Index: TYPE ~ INT;
Range: TYPE ~ RECORD [first, last: Index ← noIndex] ← noRange;
noRange: Range ~ [];
[n] is how to talk about a position, rather than a range.
[] is the unspecified range/position.
noPosition: Position ~ [noName, ALL[noRange]];
noName: PFSNames.PATH ~ NIL;
noIndex: Index ~ INT.FIRST;
WhichSelection:
TYPE ~ { primary, secondary, feedback };
Denotes choice of what selection to use.
GetSelection:
PROC [selection: WhichSelection ← primary]
RETURNS [Position];
Returns the file name and position within the file for the selected text viewer.
Returns noPosition if no valid editor viewer is selected.
FormatPosition: PROC [Position] RETURNS [ROPE];
FmtIdxs: PROC [pos: Position] RETURNS [ROPE];
FmtRange:
PROC [r: Range, introSingular, introPlural:
ROPE ←
NIL]
RETURNS [
ROPE];
Gives answers like introSingular.Cat["5"] and introPlural.Cat["5..6"].
OpenSource: ShowProc;
ShowProc:
TYPE ~
PROC [desc:
ROPE, pos: Position, feedBack:
IO.
STREAM, selection: WhichSelection ← feedback];
Directs the user's attention to the given position, describing it as desc when text is used.