DIRECTORY Rope USING [ROPE], Tioga USING [CapChange, Location, Look, Looks, Node], TEditDocument USING [Selection, SelectionGrain, SelectionId], TEditLocks USING [Access]; TEditInputOps: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Selection: TYPE ~ TEditDocument.Selection; SelectionGrain: TYPE ~ TEditDocument.SelectionGrain; SelectionId: TYPE ~ TEditDocument.SelectionId; CallWithLocks: PROC [ proc: PROC [root: Tioga.Node, tSel: Selection], access: TEditLocks.Access ฌ write]; CallWithBothLocked: PROC [ proc: PROC [sourceRoot, destRoot: Tioga.Node, tSel, srcSel, targetSel: Selection], targetSel, srcSel: Selection, sourceAccess: TEditLocks.Access]; InsertChar: PROC [char: CHAR]; InsertRope: PROC [rope: ROPE]; InsertLineBreak: PROC; BufferedInsertChar: PROC [char: CHAR]; BufferedInsertText: PROC [text: ROPE]; WaitForInsertToFinish: PROC; BackSpace: PROC [count: INT ฌ 1]; BackWord: PROC [count: INT ฌ 1]; DeleteNextChar: PROC [count: INT ฌ 1]; DeleteNextWord: PROC [count: INT ฌ 1]; GoToNextChar: PROC [count: INT ฌ 1]; GoToPreviousChar: PROC [count: INT ฌ 1]; GoToNextWord: PROC [count: INT ฌ 1]; GoToPreviousWord: PROC [count: INT ฌ 1]; GoToNextNode: PROC [count: INT ฌ 1]; GoToPreviousNode: PROC [count: INT ฌ 1]; FindPrevWord: PROC [node: Tioga.Node, offset: INT] RETURNS [nChars: CARDINAL]; FindNextWord: PROC [node: Tioga.Node, start: INT] RETURNS [nChars: CARDINAL]; MakeControlCharacter: PROC; UnMakeControlCharacter: PROC; MakeOctalCharacter: PROC; UnMakeOctalCharacter: PROC; DoPendingDelete: PROC; Delete: PROC [saveForPaste: BOOL ฌ TRUE]; Paste: PROC; SaveForPaste: PROC; SaveSpanForPaste: PROC [ startLoc, endLoc: Tioga.Location, grain: SelectionGrain]; Break: PROC; Join: PROC; Nest: PROC; UnNest: PROC; Move: PROC [target: SelectionId ฌ primary]; CheckReadonly: PROC [targetSel: Selection] RETURNS [BOOL]; Copy: PROC [target: SelectionId ฌ primary]; CopyLooks: PROC [target: SelectionId ฌ primary]; CopyFormat: PROC [target: SelectionId ฌ primary]; Transpose: PROC [target: SelectionId ฌ primary]; TransposeLooks: PROC [target: SelectionId ฌ primary]; TransposeFormat: PROC [target: SelectionId ฌ primary]; InsertBrackets: PROC [left, right: CHAR]; SelectMatchingBrackets: PROC [left, right: CHAR]; DoSelectMatchingBrackets: PROC [left, right: CHAR] RETURNS [found: BOOL]; NextViewer: PROC [forward: BOOL]; DoNextViewer: PROC [forward: BOOL] RETURNS [found: BOOL]; FindPlaceholders: PROC [next: BOOL]; DoFindPlaceholders: PROC [next, gotoend: BOOL, startBoundaryNode, endBoundaryNode: Tioga.Node ฌ NIL, startBoundaryOffset: INT ฌ 0, endBoundaryOffset: INT ฌ LAST[INT] ] RETURNS [found, wenttoend: BOOL]; InsertTime: PROC; Capitalise: PROC [flavor: Tioga.CapChange]; ModifyOp: TYPE = {add, remove}; ModifyLook: PROC [look: Tioga.Look, op: ModifyOp]; ModifyCaretLook: PROC [look: Tioga.Look, op: ModifyOp]; ChangeLooks: PROC [add, remove: Tioga.Looks]; ChangeCaretLooks: PROC [add, remove: Tioga.Looks]; SetStyle: PROC; SetStyleName: PROC [name: ROPE, node: Tioga.Node ฌ NIL]; ReloadStyle: PROC; ReloadStyleName: PROC [name: ROPE]; SetFormat: PROC; GetFormat: PROC; SetFormatName: PROC [name: ROPE, node: Tioga.Node ฌ NIL]; SetCommentProp: PROC [flag: BOOL]; RegisterAbbrevFailedProc: PROC [proc: PROC RETURNS [BOOL]]; ExpandAbbreviation: PROC; LoadAbbreviations: PROC [dictName: ROPE]; EditFailed: PROC [msg: ROPE ฌ NIL]; END. TEditInputOps.mesa Copyright ำ 1985, 1986, 1991, 1992 by Xerox Corporation. All rights reserved. Edited by Paxton on December 31, 1982 2:16 pm Michael Plass, March 18, 1985 4:23:38 pm PST Doug Wyatt, February 27, 1992 5:41 pm PST Inserts a character in the document at the primary selection and repaints like InsertChar, but for entire rope insert a CR and then copies blanks from front of previous line Exactly as InsertChar, but returns immediately, forking a repaint process. This is intended for use with user type-in. See TEditBufferedInputImpl Exactly as InsertChar, but returns immediately, forking a repaint process. This is intended for use with user type-in. See TEditBufferedInputImpl returns after buffered input has completed Deletes the character preceding the insertion point and repaints the document Deletes the word preceding the insertion point and repaints the document Deletes the character after the insertion point and repaints the document Deletes the word after the insertion point and repaints the document commands for moving caret Deletes the primary selection insert the last deletion at current insertion point save the selection for future Paste like SaveForPaste, but saves the given span rather than the selection break node at current insertion point copies text of current insertion point node to end of previous node then deletes node and makes point selection at place where joined them move the selection to a deeper nesting level in the tree move the selection to a shallower nesting level in the tree Move the contents of the other selection to the target selection Copy the contents of the other selection to the target selection Copy the looks of the other selection to the target selection Copy the format of the other selection to the target selection Transpose the contents of the primary and secondary selections Transpose the looks of the primary and secondary selections Transpose the formats of the primary and secondary selections insert left char at start of selection, right char after selection extend selection until includes matching left and right brackets extend selection until includes matching left and right brackets move selection to next viewer in left-right, top-bottom order insert the current date and time Perform the capitalisation operation on the target selection change the looks of a selection change the looks of a selection caret wholesale change of the selection looks wholesale change of the caret looks sets style of caret node to word before caret sets style of caret node to given name if node is nil, sets style for caret node reloads style of caret node reloads named style sets format of caret node to word before caret inserts format of caret node sets format of caret node to given name if node is nil, sets format for caret node called if ExpandAbbreviation finds an unknown key call with NIL to unregister only one proc registered at a time expand abbreviation at insertion point abbreviatiions files are loaded automatically can call this to force reloading after have changed contents สฎ•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ ฯeœC™NKšœ-™-K™,K™)—K˜šฯk ˜ Kšœžœžœ˜Kšœžœ*˜5Kšœžœ*˜=Kšœ žœ ˜—K˜Kšฯn œžœž œž˜(K˜Kšžœžœžœ˜Kšœ žœ˜*Kšœžœ ˜4Kšœ žœ˜.K˜šŸ œžœ žœJ˜jK˜—šŸœžœ žœ‰˜ฎK˜—šŸ œžœžœ˜KšœI™IK˜—šŸ œžœžœ˜Kšœ$™$K˜—šŸœžœ˜Kšœ>™>K˜—šŸœžœžœ˜&KšœJ™JKšœG™GK˜—šŸœžœžœ˜&KšœJ™JKšœG™GK˜—šŸœžœ˜Kšœ*™*—K˜šŸ œžœ žœ˜!KšœM™MK˜—šŸœžœ žœ˜ KšœH™HK˜—šŸœžœ žœ˜&KšœI™IK˜—šŸœžœ žœ˜&KšœD™DK˜—KšŸ œžœ žœ˜$KšŸœžœ žœ˜(KšŸ œžœ žœ˜$KšŸœžœ žœ˜(KšŸ œžœ žœ˜$šŸœžœ žœ˜(šœ™K˜——š Ÿ œžœžœžœ žœ˜NK˜—š Ÿ œžœžœžœ žœ˜MK˜—KšŸœžœ˜KšŸœžœ˜K˜KšŸœžœ˜KšŸœžœ˜K˜KšŸœžœ˜K˜šŸœžœžœžœ˜)Kšœ™K˜—šŸœžœ˜ Kšœ3™3K˜—šŸ œžœ˜Kšœ#™#K˜—šŸœžœ˜Kšœ9˜9K™EK™—šŸœžœ˜ Kšœ%™%K˜—šŸœžœ˜ KšœC™CKšœF™FK˜—šŸœžœ˜ Kšœ8™8K˜—šŸœžœ˜ Kšœ;™;K˜—šŸœžœ!˜+Kšœ@™@K˜—KšŸ œžœžœžœ˜:K˜šŸœžœ!˜+Kšœ@™@K˜—šŸ œžœ!˜0Kšœ=™=K˜—šŸ œžœ!˜1Kšœ>™>K˜—šŸ œžœ!˜0Kšœ>™>K˜—šŸœžœ!˜5Kšœ;™;K˜—šŸœžœ!˜6Kšœ=™=K˜—šŸœžœžœ˜)KšœB™BK˜—šŸœžœžœ˜1Kšœ@™@K˜—š Ÿœžœžœžœ žœ˜IKšœ@™@K˜—šŸ œžœ žœ˜!Kšœ=™=K˜—Kš Ÿ œžœ žœžœ žœ˜9K˜KšŸœžœžœ˜$K˜KšŸœžœžœ4žœžœžœžœžœžœžœ˜หK˜šŸ œžœ˜Kšœ ™ K˜—šŸ œžœ˜+Kšœ<™