DIRECTORY IO USING [STREAM], PFSNames USING [PATH], Rope USING [ROPE]; SourceFileOps: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Position: TYPE ~ RECORD [ fileName: FileName, index: ARRAY PosKind OF Range]; FileName: TYPE ~ PFSNames.PATH; PosKind: TYPE ~ {char, line}; Index: TYPE ~ INT; Range: TYPE ~ RECORD [first, last: Index _ noIndex] _ noRange; noRange: Range ~ []; noPosition: Position ~ [noName, ALL[noRange]]; noName: PFSNames.PATH ~ NIL; noIndex: Index ~ INT.FIRST; WhichSelection: TYPE ~ { primary, secondary, feedback }; GetSelection: PROC [selection: WhichSelection _ primary] RETURNS [Position]; FormatPosition: PROC [Position] RETURNS [ROPE]; FmtIdxs: PROC [pos: Position] RETURNS [ROPE]; FmtRange: PROC [r: Range, introSingular, introPlural: ROPE _ NIL] RETURNS [ROPE]; OpenSource: ShowProc; ShowProc: TYPE ~ PROC [desc: ROPE, pos: Position, feedBack: IO.STREAM, selection: WhichSelection _ feedback]; END. €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 Some basic feedback operations on source files. Implemented in the most reasonable way for each world. A position in a file may be identified by either or both of a line number range and a character index range. [n] is how to talk about a position, rather than a range. [] is the unspecified range/position. Denotes choice of what selection to use. Returns the file name and position within the file for the selected text viewer. Returns noPosition if no valid editor viewer is selected. Gives answers like introSingular.Cat["5"] and introPlural.Cat["5..6"]. Directs the user's attention to the given position, describing it as desc when text is used. Κ˜codešœ™K™˜K™9K™%—K˜Kšœ œ ˜.Kšœœœ˜Kšœœœ˜K˜šœœ$˜8K™(—K˜šž œœ'œ ˜MKšœR™RKšœ9™9—K˜Kšžœœ œœ˜/Kšžœœœœ˜-š žœœ(œœœœ˜QKšœF™F—K˜Kšž œ ˜š œ œœœœœ(˜mKšœEΟeœ™\—K˜—Kšœ˜K˜—…—² d