<> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> DIRECTORY Atom USING [PropList], ImagerFont USING [XChar], Rope USING [ROPE], TextLooks USING [allLooks, Looks, noLooks], TextNode USING [Node], UndoEvent USING [Event]; TextEdit: CEDAR DEFINITIONS = BEGIN Node: TYPE = TextNode.Node; ROPE: TYPE = Rope.ROPE; XChar: TYPE ~ ImagerFont.XChar; -- [set: BYTE, code: BYTE] CharSet: TYPE ~ BYTE; <> Looks: TYPE = TextLooks.Looks; noLooks: Looks = TextLooks.noLooks; allLooks: Looks = TextLooks.allLooks; MaxLen: INT = LAST[INT]; MaxNat: NAT = LAST[NAT]; Event: TYPE = UndoEvent.Event; <> Size: PROC [node: Node] RETURNS [INT]; FetchChar: PROC [node: Node, index: INT] RETURNS [XChar]; <> FetchLooks: PROC [node: Node, index: INT] RETURNS [Looks]; <> FetchCharPropList: PROC [node: Node, index: INT] RETURNS [PropList]; <> CharSetRun: TYPE ~ RECORD [charSet: CharSet, start, end: INT]; FetchCharSetRun: PROC [node: Node, index: INT] RETURNS [CharSetRun]; LooksRun: TYPE ~ RECORD [looks: Looks, start, end: INT]; FetchLooksRun: PROC [node: Node, index: INT] RETURNS [LooksRun]; PropListRun: TYPE ~ RECORD [propList: PropList, start, end: INT]; FetchCharPropListRun: PROC [node: Node, index: INT] RETURNS [PropListRun]; <> GetCharProp: PROC [node: Node, index: INT, name: ATOM] RETURNS [value: REF]; PutCharProp: PROC [node: Node, index: INT, name: ATOM, value: REF, nChars: INT _ 1, event: Event _ NIL, root: Node _ NIL]; <> <> MapCharProps: PROC [node: Node, index: INT, action: MapPropsAction] RETURNS [quit: BOOL]; <> MapPropsAction: TYPE ~ PROC [name: ATOM, value: REF] RETURNS [quit: BOOL _ FALSE]; ModifyCharProps: PROC [node: Node, name: ATOM, index: INT _ 0, nChars: INT _ INT.LAST, action: ModifyPropsAction, event: Event _ NIL, root: Node _ NIL] RETURNS [quit: BOOL]; <> ModifyPropsAction: TYPE ~ PROC [value: REF, index: INT, nChars: INT] RETURNS [quit: BOOL _ FALSE, newValue: REF]; PropList: TYPE ~ Atom.PropList; <> <<>> PutCharPropList: PROC [node: Node, index: INT, propList: PropList, nChars: INT _ 1, event: Event _ NIL, root: Node _ NIL]; GetPropFromList: PROC [propList: PropList, key: ATOM] RETURNS [value: REF]; PutPropOnList: PROC [propList: PropList, key: ATOM, value: REF] RETURNS [new: PropList]; <> FromRope: PROC [rope: ROPE] RETURNS [Node]; <> FromString: PROC [string: REF READONLY TEXT] RETURNS [Node]; <> DocFromNode: PROC [child: Node] RETURNS [root: Node]; <> <> <> ChangeLooks: PROC [root: Node, node: Node, remove, add: Looks, start: INT _ 0, len: INT _ MaxLen, event: Event _ NIL]; <> <> ChangeFormat: PROC [node: Node, formatName: ATOM, event: Event _ NIL, root: Node _ NIL]; ChangeStyle: PROC [node: Node, name: ROPE, event: Event _ NIL, root: Node _ NIL]; < style to end of node prefix>> PutProp: PROC [node: Node, name: ATOM, value: REF, event: Event _ NIL, root: Node _ NIL]; GetProp: PROC [node: Node, name: ATOM] RETURNS [value: REF]; <> <> TwoSpanProc: TYPE = PROC [destRoot, sourceRoot: Node, dest: Node, destStart: INT _ 0, destLen: INT _ MaxLen, source: Node, sourceStart: INT _ 0, sourceLen: INT _ MaxLen, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; DestSpanProc: TYPE = PROC [destRoot, sourceRoot: Node, dest: Node, destLoc: INT _ 0, source: Node, start: INT _ 0, len: INT _ MaxLen, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; OneSpanProc: TYPE = PROC [root: Node, node: Node, start: INT _ 0, len: INT _ MaxLen, event: Event _ NIL]; TransposeProc: TYPE = PROC [alphaRoot, betaRoot: Node, alpha: Node, alphaStart: INT _ 0, alphaLen: INT _ MaxLen, beta: Node, betaStart: INT _ 0, betaLen: INT _ MaxLen, event: Event _ NIL ] RETURNS [alphaResultStart, alphaResultLen, betaResultStart, betaResultLen: INT]; ReplaceText: TwoSpanProc; <> <> <> DeleteText: OneSpanProc; <> <> CopyText: DestSpanProc; <> <> MoveText: DestSpanProc; <> <> <> <> <> MoveTextOnto: TwoSpanProc; <> <> TransposeText: TransposeProc; <> <> <> <> ReplaceByChar: PROC [root: Node, dest: Node, char: CHAR, start: INT _ 0, len: INT _ MaxLen, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; <> <> <> <> < 0, then gets looks from previous char,>> <> ReplaceByString: PROC [root: Node, dest: Node, string: REF READONLY TEXT, stringStart: NAT _ 0, stringNum: NAT _ MaxNat, start: INT _ 0, len: INT _ MaxLen, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; ReplaceByRope: PROC [root: Node, dest: Node, rope: ROPE, start: INT _ 0, len: INT _ MaxLen, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; InsertChar: PROC [root: Node, dest: Node, char: CHAR, destLoc: INT _ 0, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; AppendChar: PROC [root: Node, dest: Node, char: CHAR, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; InsertString: PROC [root: Node, dest: Node, string: REF READONLY TEXT, stringStart: NAT _ 0, stringNum: NAT _ MaxNat, destLoc: INT _ 0, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; AppendString: PROC [root: Node, dest: Node, string: REF READONLY TEXT, stringStart: NAT _ 0, stringNum: NAT _ MaxNat, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; InsertRope: PROC [root: Node, dest: Node, rope: ROPE, destLoc: INT _ 0, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; AppendRope: PROC [root: Node, dest: Node, rope: ROPE, inherit: BOOL _ TRUE, looks: Looks _ noLooks, charSet: CharSet _ 0, event: Event _ NIL] RETURNS [resultStart, resultLen: INT]; <> CapChange: TYPE = {allCaps, allLower, initCaps, firstCap}; ChangeCaps: PROC [root: Node, dest: Node, start: INT _ 0, len: INT _ MaxLen, how: CapChange _ allCaps, event: Event _ NIL]; END.