(FILECREATED " 7-Oct-86 14:03:08" ("compiled on " {ERIS}TEDITDECLS.;2) " 1-Oct-86 20:23:15" bcompl'd in "Xerox Lisp 1-Oct-86 ..." dated " 1-Oct-86 21:24:44") (FILECREATED "26-Sep-86 16:56:06" {ERIS}TEDITDECLS.;2 87725 changes to: (VARS TEDITDECLSCOMS) previous date: "25-Sep-86 22:10:43" {ERIS}TEDITDECLS.;1) (PRETTYCOMPRINT TEDITDECLSCOMS) (RPAQQ TEDITDECLSCOMS ((* ;;; "This file is the collected record declarations and compile-time necessities for TEDIT.") (* ;; "FROM TEDIT") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64))) (* ;; "FROM TEXTOFD") ( RECORDS EDITMARK) (RECORDS PIECE TEXTOBJ TEXTIMAGEDATA TEXTSTREAM) (MACROS TEXTPROP) (COMS (* Private data structures and constants FROM TEXTOFD) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS ( \PCTBFreePieces 0) (\PCTBLastPieceOffset 1) (\FirstPieceOffset 2) (\SecondPieceOffset 4) ( \EltsPerPiece 2)) (MACROS \EDITELT \GETCH \GETCHB \EDITSETA \WORDSETA) (GLOBALVARS \TEXTIMAGEOPS \TEXTOFD \TEXTFDEV))) (* ;;; "FROM TEDITPAGE") (RECORDS PAGEFORMATTINGSTATE PAGEREGION) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITPAPERSIZE)) (* ;; "FROM TEDITFIND") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (\AlphaNumericFlag 256) (\AlphaFlag 512) (\OneCharPattern 1024) (\AnyStringPattern 1025) (\OneAlphaPattern 1026) (\AnyAlphaPattern 1027) (\OneNonAlphaPattern 1028) (\AnyNonAlphaPattern 1029) (\LeftBracketPattern 1030) (\RightBracketPattern 1031) (\SpecialPattern 1024))) (* ;; " FROM TEDITLOOKS") (RECORDS CHARLOOKS FMTSPEC PENDINGTAB) (DECLARE: EVAL@COMPILE DONTCOPY (MACROS \SMALLPIN \SMALLPOUT ONOFF)) (* ;; "FROM TEDITMENU") (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS MBUTTON) ) (INITRECORDS MBUTTON) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS NWAYBUTTON)) (INITRECORDS NWAYBUTTON) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS MARGINBAR)) (INITRECORDS MARGINBAR) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TAB)) (RECORDS MB.3STATE MB.BUTTON MB.INSERT MB.MARGINBAR MB.NWAY MB.TEXT MB.TOGGLE) (* ;; "FROM TEDITHISTORY") (RECORDS TEDITHISTORYEVENT) (* ;; "FROM TEDITSCREEN") (RECORDS THISLINE LINEDESCRIPTOR LINECACHE) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (LMInvisibleRun 401) ( LMLooksChange 400))) (* ;; "FROM TEDITFILE") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS ( \PieceDescriptorLOOKS 0) (\PieceDescriptorOBJECT 1) (\PieceDescriptorPARA 2) ( \PieceDescriptorPAGEFRAME 3) (\PieceDescriptorCHARLOOKSLIST 4) (\PieceDescriptorPARALOOKSLIST 5) ( \PieceDescriptorSAFEOBJECT 6))) (* ;; "FROM TEDITCOMMAND") (DECLARE: EVAL@COMPILE DONTCOPY (MACROS \INSERT\TTY\BUFFER \TEDIT.MOUSESTATE \TEDIT.CHECK)) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITTERMCODE)) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (NONE.TTC 0) (CHARDELETE.TTC 1) ( WORDDELETE.TTC 2) (DELETE.TTC 3) (FUNCTIONCALL.TTC 4) (REDO.TTC 5) (UNDO.TTC 6) (CMD.TTC 7) (NEXT.TTC 8) (EXPAND.TTC 9) (PUNCT.TTC 20) (TEXT.TTC 21) (WHITESPACE.TTC 22))) (DECLARE: EVAL@COMPILE DONTCOPY ( CONSTANTS (MSPACE 153) (NSPACE 152) (THINSPACE 159) (FIGSPACE 154))) (* ;; "FROM TEDITWINDOW") ( DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITCARET)) (INITRECORDS TEDITCARET) (* ;; "FROM TEDITSELECTION") (RECORDS SELECTION) (CONSTANTS (COPYSELSHADE 30583) (COPYLOOKSSELSHADE 30583) ( EDITMOVESHADE -1) (EDITGRAY 32800)) (* ;;; "THE END") (VARS TEDITDECLSCOMS))) (RECORD EDITMARK (PC PCOFF . PCNO)) (DATATYPE PIECE ((* The piece describes either a string or part of a file. , or a generalized OBJECT.) PSTR (* The string where this piece's text resides, or NIL) PFILE (* The file which contains this piece's text, or NIL) PFPOS (* The FILEPTR of the start of the piece in the file) PLEN (* Length of the piece, in characters.) NEXTPIECE (* -> Next piece in this textobj.) (PREVPIECE FULLXPOINTER) (* -> Prior piece in this text object.) PLOOKS (* Formatting info and formatting events in this piece) POBJ (* The OBJECT this piece describes) (PPARALAST FLAG) (* This piece contains a paragraph break) PPARALOOKS (* Paragraph looks for this piece) (PNEW FLAG) (* This text is new here; used by the tentative edit system, and anyone else interested.) (PFATP FLAG) (* T if the characters in this piece are FAT -- i.e., are 16 bits each.)) PSTR _ NIL PFILE _ NIL PFPOS _ 0 PLEN _ 0 PPARALOOKS _ TEDIT.DEFAULT.FMTSPEC) (DATATYPE TEXTOBJ ((* * This is where TEdit stores its state information, and internal data about the text being edited.) PCTB (* The piece table) TEXTLEN (* # of chars in the text) \INSERTPC (* Piece to hold type-in) \INSERTPCNO (* Piece # of the input piece) \INSERTNEXTCH (* CH# of next char which is typed into that piece.) \INSERTLEFT (* Space left in the type-in piece) \INSERTLEN (* # of characters already in the piece.) \INSERTSTRING (* The string which the piece describes.) \INSERTFIRSTCH (* CH# of first char in the piece.) (\INSERTPCVALID FLAG) (* T if it's OK to use the cached piece. Set to NIL by people who require that the next insertion/deletion use a different piece.) \WINDOW (* The window where this textobj is displayed) MOUSEREGION (* Section of the window the mouse is in.) LINES (* -> to top of chain of line descriptors for displayed text) DS (* Display stream where this textobj is displayed) SEL (* The current selection within the text) SCRATCHSEL (* Scratch space for the selection code) MOVESEL (* Source for the next MOVE of text) SHIFTEDSEL (* Source for the next COPY) DELETESEL (* Text to be deleted imminently) WRIGHT (* Right edge of the window (or subregion) where this is displayed) WTOP (* Top of the window/region) WBOTTOM (* Bottom of the window/region) WLEFT (* Left edge of the window/region) TXTFILE (* The original text file we're editing) (\XDIRTY FLAG) (* T => changed since last saved.) (STREAMHINT FULLXPOINTER) (* -> the TEXTOFD stream which gives access to this textobj) EDITFINISHEDFLG (* T => The guy has asked the editor to go way) CARET (* Describes the flashing caret for the editing window) CARETLOOKS (* Font to be used for inserted text. ) WINDOWTITLE (* Original title for this window, of there was one.) THISLINE (* Cache of line-related info, to speed up selection &c) (MENUFLG FLAG) (* T if this TEXTOBJ is a tedit-style menu) FMTSPEC (* Default Formatting Spec to be used when formatting paragraphs) (FORMATTEDP FLAG) (* Flag for paragraph formatting. T if this document is to contain paragraph formatting information.) (TXTREADONLY FLAG) (* This is only available for shift selection.) TXTTERMSA (* Special instructions for displaying characters on the screen) EDITOPACTIVE (* T if there is an editing operation in progress. Used to interlock the TEdit menu) DEFAULTCHARLOOKS (* The default character looks -- if any -- to be applied to characters coming into the file from outside.) TXTRTBL (* The READTABLE to be used by the command loop for command dispatch) TXTWTBL (* The READTABLE to be used to decide on word breaks) EDITPROPS (* The PROPS that were passed into this edit session) (BLUEPENDINGDELETE FLAG) (* T if the next insertion in this document is to be preceded by a deletion of the then-current selection) TXTHISTORY (* The history list for this edit session.) (SELWINDOW FULLXPOINTER) (* The window in which the last "real" selection got made for this edit; used to control caret placement) PROMPTWINDOW (* A window to be used for unscheduled interactions; normally a small window above the edit window) DISPLAYCACHE (* The bitmap to be used when building the image of a line for display) DISPLAYCACHEDS (* The DISPLAYSTREAM that is used to build line images) DISPLAYHCPYDS (* The DISPLAYSTREAM used to build line images of lines that are displayed in "hardcopy" simulation mode) TXTPAGEFRAMES (* A tree of page frames, specifying how the document is to be laid out.) (TXTNEEDSUPDATE FLAG) (* T => Screen invalid, need to run updater) TXTCHARLOOKSLIST (* List of all the CHARLOOKSs in the document, so they can be kept unique) TXTPARALOOKSLIST (* List of all the FMTSPECs in the document, so they can be kept unique) ( TXTDON'TUPDATE FLAG) (* T if we're)) (ACCESSFNS TEXTOBJ ((\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) ( PROGN (IF (NEQ (FETCH (TEXTOBJ \XDIRTY) OF DATUM) NEWVALUE) THEN (* update the title to reflect the change) (\TEDIT.WINDOW.TITLE DATUM (\TEDIT.ORIGINAL.WINDOW.TITLE (ffetch (TEXTOBJ TXTFILE) of DATUM) NEWVALUE))) (freplace \XDIRTY OF DATUM WITH NEWVALUE))))) SEL _ (create SELECTION) SCRATCHSEL _ ( create SELECTION) MOVESEL _ (create SELECTION HOW _ EDITMOVESHADE HOWHEIGHT _ 32767 HASCARET _ NIL) SHIFTEDSEL _ (create SELECTION HOW _ COPYSELSHADE HASCARET _ NIL) DELETESEL _ (create SELECTION HOW _ BLACKSHADE HOWHEIGHT _ 32767 HASCARET _ NIL) \INSERTNEXTCH _ -1 \INSERTPC _ NIL \INSERTLEFT _ 0 \INSERTLEN _ 0 \INSERTSTRING _ NIL \INSERTFIRSTCH _ 1000000 TEXTLEN _ 0 WRIGHT _ 0 WTOP _ 0 WLEFT _ 0 WBOTTOM _ 0 TXTFILE _ NIL \XDIRTY _ NIL MOUSEREGION _ (QUOTE TEXT) THISLINE _ (create THISLINE) MENUFLG _ NIL FMTSPEC _ TEDIT.DEFAULT.FMTSPEC FORMATTEDP _ NIL) (DATATYPE TEXTIMAGEDATA (TICURPARALOOKS (* The current paragraph looks) TICURIMAGESTREAM (* The image stream for this hardcopy transduction) TILOOKSUPDATEFN (* The function to call to update looks for this stream) TIPCOFFSET (* The offset into the current piece, as of the last page cross.))) (ACCESSFNS TEXTSTREAM ((REALFILE (fetch F1 of DATUM) (REPLACE F1 OF DATUM WITH NEWVALUE)) (* The real, underlying file behind the current piece) (CHARSLEFT (fetch F2 of DATUM) (REPLACE F2 OF DATUM WITH NEWVALUE)) (* The # of characters that will be left in the current piece the next time its file crosses a page boundary) (TEXTOBJ (fetch F3 of DATUM) (REPLACE F3 OF DATUM WITH NEWVALUE)) (* The TEXTOBJ that is editing this text) (PIECE (fetch F5 of DATUM) (REPLACE F5 OF DATUM WITH NEWVALUE)) (* The PIECE we're currently fetching chars from/putting chars into) (PCNO (fetch FW8 of DATUM) (REPLACE FW8 OF DATUM WITH NEWVALUE)) (* The position of that piece in the piece table) (PCSTARTPG (fetch FW6 of DATUM) (REPLACE FW6 OF DATUM WITH NEWVALUE)) (* The underlying file page# that this piece starts on ) (PCSTARTCH (fetch FW7 of DATUM) (REPLACE FW7 OF DATUM WITH NEWVALUE)) (* The char within page of the underlying file that this piece starts on -- for backbin & co) (PCOFFSET (fetch TIPCOFFSET of (fetch IMAGEDATA of DATUM)) (REPLACE TIPCOFFSET OF (fetch IMAGEDATA of DATUM) with NEWVALUE)) (* The offset into the current piece, as of the last page cross.) (CURRENTLOOKS (fetch F10 of DATUM) (replace F10 of DATUM with NEWVALUE)) (* The CHARLOOKS that are currently applicable to characters being taken from the stream.) (CURRENTPARALOOKS (fetch TICURPARALOOKS of (fetch IMAGEDATA of DATUM)) (REPLACE TICURPARALOOKS OF (fetch IMAGEDATA of DATUM) with NEWVALUE)) (* The FMTSPEC that is currently applicable to characters being taken from the stream.) (CURRENTIMAGESTREAM (fetch TICURIMAGESTREAM of (fetch IMAGEDATA of DATUM)) (REPLACE TICURIMAGESTREAM OF (fetch IMAGEDATA of DATUM) with NEWVALUE) (* The image stream that this text is being put onto; used for scaling decisions)) (LOOKSUPDATEFN (fetch TILOOKSUPDATEFN of (fetch IMAGEDATA of DATUM)) (REPLACE TILOOKSUPDATEFN OF (fetch IMAGEDATA of DATUM) with NEWVALUE)) (* Function to be called each time character looks change.) (FATSTREAMP (fetch F4 of DATUM) (REPLACE F4 OF DATUM WITH NEWVALUE)) (* T if the current piece is 16 bit characters.)) (CREATE (create STREAM using \TEXTOFD IMAGEDATA _ (create TEXTIMAGEDATA)))) (/DECLAREDATATYPE (QUOTE PIECE) (QUOTE (POINTER POINTER POINTER POINTER POINTER FULLXPOINTER POINTER POINTER FLAG POINTER FLAG FLAG)) (QUOTE ((PIECE 0 POINTER) (PIECE 2 POINTER) (PIECE 4 POINTER) (PIECE 6 POINTER) (PIECE 8 POINTER) (PIECE 10 FULLXPOINTER) (PIECE 12 POINTER) (PIECE 14 POINTER) (PIECE 14 ( FLAGBITS . 0)) (PIECE 16 POINTER) (PIECE 16 (FLAGBITS . 0)) (PIECE 16 (FLAGBITS . 16)))) (QUOTE 18)) (/DECLAREDATATYPE (QUOTE TEXTOBJ) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER FLAG FLAG POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER FLAG)) (QUOTE ((TEXTOBJ 0 POINTER) (TEXTOBJ 2 POINTER) ( TEXTOBJ 4 POINTER) (TEXTOBJ 6 POINTER) (TEXTOBJ 8 POINTER) (TEXTOBJ 10 POINTER) (TEXTOBJ 12 POINTER) ( TEXTOBJ 14 POINTER) (TEXTOBJ 16 POINTER) (TEXTOBJ 16 (FLAGBITS . 0)) (TEXTOBJ 18 POINTER) (TEXTOBJ 20 POINTER) (TEXTOBJ 22 POINTER) (TEXTOBJ 24 POINTER) (TEXTOBJ 26 POINTER) (TEXTOBJ 28 POINTER) (TEXTOBJ 30 POINTER) (TEXTOBJ 32 POINTER) (TEXTOBJ 34 POINTER) (TEXTOBJ 36 POINTER) (TEXTOBJ 38 POINTER) ( TEXTOBJ 40 POINTER) (TEXTOBJ 42 POINTER) (TEXTOBJ 44 POINTER) (TEXTOBJ 44 (FLAGBITS . 0)) (TEXTOBJ 46 FULLXPOINTER) (TEXTOBJ 48 POINTER) (TEXTOBJ 50 POINTER) (TEXTOBJ 52 POINTER) (TEXTOBJ 54 POINTER) ( TEXTOBJ 56 POINTER) (TEXTOBJ 56 (FLAGBITS . 0)) (TEXTOBJ 58 POINTER) (TEXTOBJ 58 (FLAGBITS . 0)) ( TEXTOBJ 58 (FLAGBITS . 16)) (TEXTOBJ 60 POINTER) (TEXTOBJ 62 POINTER) (TEXTOBJ 64 POINTER) (TEXTOBJ 66 POINTER) (TEXTOBJ 68 POINTER) (TEXTOBJ 70 POINTER) (TEXTOBJ 70 (FLAGBITS . 0)) (TEXTOBJ 72 POINTER) ( TEXTOBJ 74 FULLXPOINTER) (TEXTOBJ 76 POINTER) (TEXTOBJ 78 POINTER) (TEXTOBJ 80 POINTER) (TEXTOBJ 82 POINTER) (TEXTOBJ 84 POINTER) (TEXTOBJ 84 (FLAGBITS . 0)) (TEXTOBJ 86 POINTER) (TEXTOBJ 88 POINTER) ( TEXTOBJ 88 (FLAGBITS . 0)))) (QUOTE 90)) (/DECLAREDATATYPE (QUOTE TEXTIMAGEDATA) (QUOTE (POINTER POINTER POINTER POINTER)) (QUOTE (( TEXTIMAGEDATA 0 POINTER) (TEXTIMAGEDATA 2 POINTER) (TEXTIMAGEDATA 4 POINTER) (TEXTIMAGEDATA 6 POINTER) )) (QUOTE 8)) (PUTPROPS TEXTPROP MACRO (ARGS (CTEXTPROP ARGS))) (RECORD PAGEFORMATTINGSTATE ((* Contains the state for a TEdit page-formatting job.) PAGE# (* The current page number. Counted from 1) FIRSTPAGE (* T if the current page is the "first page" %. Is set initially, and can be set again by the user at will. Gets reset after each page image is printed.) MINPAGE# (* The page # of the first page to be printed, or NIL) MAXPAGE# (* The page # of the last page to be printed, or NIL) STATE (* One of FORMATTING or SEARCHING.) REQUIREDREGIONTYPE (* If STATE is SEARCHING, the kind of box we're looking for.) MAINSTREAM (* The principal textobj/stream source) CHNO (* Our position in that stream) PRESSREGION (* The press code's REGION info.) PAGEHEADINGS (* The list of current values to be printed, indexed by heading type) PAGE#GENERATOR (* List of page numbers; later, maybe, a function to generate page numbers. Used to fill in PAGE#TEXT, below) PAGE#TEXT (* If special page numbers are in use, this is the place to take them from. PAGE# is still used for recto/verso decisions &c) PAGEISRECTO (* T if this is a recto page, NIL if it's a VERSO page. ) PAGEFOOTNOTELINES (* A list of extant footnote lines that should appear at the next opportunity) PAGEFLOATINGTOPLINES (* A list of lines that should float to the top of the next available place) PAGECOUNT (* The number of pages we've formatted so far.) PAGELINECACHE (* A cache for pre-created LINEDESCRIPTOR/THISLINE sets, to avoid the overhead of re-allocating them all the time)) PAGECOUNT _ 0 ) (DATATYPE PAGEREGION (REGIONFILLMETHOD (* What kind of a region this is -- TEXT, FOLIO, PAGEHEADING, etc.) REGIONSPEC (* The page-relative region this occupies) REGIONLOCALINFO (* A PLIST for local information) (REGIONPARENT FULLXPOINTER) (* The parent node for this box, for sub-boxes) REGIONSUBBOXES (* The sub-regions of this region) REGIONTYPE (* A user-settable region type))) (/DECLAREDATATYPE (QUOTE PAGEREGION) (QUOTE (POINTER POINTER POINTER FULLXPOINTER POINTER POINTER)) ( QUOTE ((PAGEREGION 0 POINTER) (PAGEREGION 2 POINTER) (PAGEREGION 4 POINTER) (PAGEREGION 6 FULLXPOINTER ) (PAGEREGION 8 POINTER) (PAGEREGION 10 POINTER))) (QUOTE 12)) (DATATYPE CHARLOOKS (CLFONT (* The font descriptor for these characters) CLNAME (* Name of the font ( e.g., HELVETICA) THIS FIELD IS A HINT, OR FOR USE IN CHARLOOKS-BUILDING CODE. USE FONTPROP TO GET THE RIGHT VALUE FROM CLFONT.) CLSIZE (* Font size, in points) (CLITAL FLAG) (* T if the characters are italic, else NIL) (CLBOLD FLAG) (* T if the characters are bold, else NIL) (CLULINE FLAG) (* T if the characters are to be underscored, else NIL) (CLOLINE FLAG) (* T if the characters are to be overscored, else NIL) (CLSTRIKE FLAG) (* T if the characters are to be struck thru, else nil.) CLOFFSET (* A superscripting offset in points (?) else NIL (SUBSCRIPTING IF NEGATIVE.)) (CLSMALLCAP FLAG) (* T if small caps, else NIL) (CLINVERTED FLAG) (* T if the characters are to be shown white-on-black) (CLPROTECTED FLAG) (* T if chars can't be selected, else NIL) (CLINVISIBLE FLAG) (* T if TEDIT is to ignore these chars; else NIL) (CLSELHERE FLAG) (* T if TEDIT can put selection after this char (for menu blanks) else NIL; anything typed after this char will NOT BE PROTECTED.) ( CLCANCOPY FLAG) (* T if this text can be selected for copying, even tho protected (it will become unprotected after the copy; for Dribble/TTY interface)) CLSTYLE (* The style to be used in marking these characters; overridden by the other fields) CLUSERINFO (* Any information that an outsider wants to include) CLLEADER (* For creating dotted and other kinds of leader) CLRULES (* For arbitrarily-places horizontal rules. List of pairs, of (widthinpts . offsetfrombaselineinpts) %. Should be taken account of in ascent/descent calcs.) (CLMARK FLAG) (* Used for a mark-&-sweep of looks at PUT time -- T means this set of looks really IS in use in the document)) CLOFFSET _ 0) (DATATYPE FMTSPEC (1STLEFTMAR (* Left margin of the first line of the paragraph) LEFTMAR (* Left margin of the rest of the lines in the paragraph) RIGHTMAR (* Right margin for the paragraph) LEADBEFORE (* Leading above the paragraph's first line, in points) LEADAFTER (* Leading below the paragraph's bottom line, in points. NOT IMPLEMENTED.) LINELEAD (* Leading between lines, in points. Actually, this space is added BELOW each line in the para.) FMTBASETOBASE (* The baseline-to-baseline spacing between lines in this paragraph. THIS OVERRIDES THE LINE LEADING) TABSPEC (* The list of tabs for this paragraph, including CAR for a default tab width) QUAD (* How the para is formatted: one of LEFT, RIGHT, CENTERED, JUSTIFIED) FMTSTYLE (* The STYLE that controls this paragraph's appearance) FMTCHARSTYLES (* The characterstyles that control the appearance of characters in this para (maybe? may be part of the fmtstyle.)) FMTUSERINFO (* Space for a PLIST of user info) FMTSPECIALX (* A special horizontal location on the printed page for this para.) FMTSPECIALY (* A special vertical location on the page for this para) (FMTHEADINGKEEP FLAG) (* This para should be kept with the top line or so of the next para. NOT USED YET.) FMTPARATYPE (* What kind of para this is: TEXT, PAGEHEADING, whatever) FMTPARASUBTYPE (* Sub type of the type, e.g., what KIND of page heading this is.) FMTNEWPAGEBEFORE (* Start a new box (if T) or back up the page formatting tree to make a new box of the type named in the value -- by going the least distance back up the tree, then back down until you find that kind of box. ) FMTNEWPAGEAFTER (* Similarly) FMTKEEP (* For information about how this paragraph is to be kept with other paragraphs.) FMTCOLUMN (* For setting up side-by-side paragraphs easily ala BravoX) FMTVERTRULES (* For Keeping track of vertical rules in force) (FMTMARK FLAG) (* Used to keep track of which PARALOOKSs are really being used -- a mark & collect is done just before a PUT, so that only "real" PARALOOKSs make it into the file) (FMTHARDCOPY FLAG) (* T if this paragraph is to be displayed in hardcopy-format.) (* Used for a mark&sweep of para looks at PUT time -- T means this looks really IS in use in the document, so it makes sense to save it on the file.)) TABSPEC _ (CONS NIL NIL)) (DATATYPE PENDINGTAB ((* The data structure for a pending tab, within the line formatter) PTNEWTX (* An updated TX, being passed back to the line formatter. This results from the resolution of an old RIGHT, CENTERED, or DECIMAL tab, which changed the width of a prior tab.) PTOLDTAB (* The pending tab) PTTYPE (* Its tab type) PTTABX (* Its nominal X position) (PTWBASE FULLXPOINTER) (* The WBASE for its width, for updating when we've figured out how wide the tab really is) PTOLDTX (* The TX as of when the tab was encountered.))) (/DECLAREDATATYPE (QUOTE CHARLOOKS) (QUOTE (POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG FLAG FLAG POINTER POINTER POINTER POINTER FLAG)) (QUOTE ((CHARLOOKS 0 POINTER) ( CHARLOOKS 2 POINTER) (CHARLOOKS 4 POINTER) (CHARLOOKS 4 (FLAGBITS . 0)) (CHARLOOKS 4 (FLAGBITS . 16)) (CHARLOOKS 4 (FLAGBITS . 32)) (CHARLOOKS 4 (FLAGBITS . 48)) (CHARLOOKS 4 (FLAGBITS . 64)) (CHARLOOKS 6 POINTER) (CHARLOOKS 6 (FLAGBITS . 0)) (CHARLOOKS 6 (FLAGBITS . 16)) (CHARLOOKS 6 (FLAGBITS . 32)) ( CHARLOOKS 6 (FLAGBITS . 48)) (CHARLOOKS 6 (FLAGBITS . 64)) (CHARLOOKS 6 (FLAGBITS . 80)) (CHARLOOKS 8 POINTER) (CHARLOOKS 10 POINTER) (CHARLOOKS 12 POINTER) (CHARLOOKS 14 POINTER) (CHARLOOKS 14 (FLAGBITS . 0)))) (QUOTE 16)) (/DECLAREDATATYPE (QUOTE FMTSPEC) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG)) (QUOTE ((FMTSPEC 0 POINTER) (FMTSPEC 2 POINTER) (FMTSPEC 4 POINTER) ( FMTSPEC 6 POINTER) (FMTSPEC 8 POINTER) (FMTSPEC 10 POINTER) (FMTSPEC 12 POINTER) (FMTSPEC 14 POINTER) (FMTSPEC 16 POINTER) (FMTSPEC 18 POINTER) (FMTSPEC 20 POINTER) (FMTSPEC 22 POINTER) (FMTSPEC 24 POINTER) (FMTSPEC 26 POINTER) (FMTSPEC 26 (FLAGBITS . 0)) (FMTSPEC 28 POINTER) (FMTSPEC 30 POINTER) ( FMTSPEC 32 POINTER) (FMTSPEC 34 POINTER) (FMTSPEC 36 POINTER) (FMTSPEC 38 POINTER) (FMTSPEC 40 POINTER ) (FMTSPEC 40 (FLAGBITS . 0)) (FMTSPEC 40 (FLAGBITS . 16)))) (QUOTE 42)) (/DECLAREDATATYPE (QUOTE PENDINGTAB) (QUOTE (POINTER POINTER POINTER POINTER FULLXPOINTER POINTER)) ( QUOTE ((PENDINGTAB 0 POINTER) (PENDINGTAB 2 POINTER) (PENDINGTAB 4 POINTER) (PENDINGTAB 6 POINTER) ( PENDINGTAB 8 FULLXPOINTER) (PENDINGTAB 10 POINTER))) (QUOTE 12)) (TYPERECORD MB.3STATE (MBLABEL MBFONT MBCHANGESTATEFN MBINITSTATE) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.BUTTON (MBLABEL MBBUTTONEVENTFN MBFONT) MBBUTTONEVENTFN _ (QUOTE MB.DEFAULTBUTTON.FN) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.INSERT (MBINITENTRY)) (TYPERECORD MB.MARGINBAR (ignoredfield)) (TYPERECORD MB.NWAY (MBBUTTONS MBFONT MBCHANGESTATEFN MBINITSTATE MBMAXITEMSPERLINE) MBFONT _ ( FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (TYPERECORD MB.TEXT (MBSTRING MBFONT)) (TYPERECORD MB.TOGGLE (MBTEXT MBFONT MBCHANGESTATEFN MBINITSTATE) MBFONT _ (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE BOLD))) (RECORD TEDITHISTORYEVENT (THACTION (* A LITATOM, specifying what the event was) THPOINT (* Was the selection to the left or right?) THLEN (* The # of chars involved) THCH# (* The starting ch#) THFIRSTPIECE (* First piece involved) THOLDINFO (* Old info, for undo) THAUXINFO (* Auxiliary info about the event, primarily for redo) THTEXTOBJ (* Place to remember a second textobj, for those like MOVE who need to remember both a source and a destination.)) THPOINT _ (QUOTE LEFT)) (DATATYPE THISLINE ((* Cache for line-related character location info, for selection code to use) ( DESC FULLXPOINTER) (* Line descriptor for the line this describes now) LEN (* Length of the line in characters) CHARS (* Array of character codes (or objects) on the line (charcode of 400 => dummy entry for looks change--go get next entry in LOOKS)) WIDTHS (* Array of each character's width in points) LOOKS (* Array of any looks changes within the line. LOOKS (0) = starting character looks for the line ) TLSPACEFACTOR (* The SPACEFACTOR to be used in printing this line)) LEN _ 0 CHARS _ (ARRAY 256 ( QUOTE POINTER) 0 0) WIDTHS _ (ARRAY 256 (QUOTE SMALLP) 0 0) LOOKS _ (ARRAY 256 (QUOTE POINTER) NIL 0)) (DATATYPE LINEDESCRIPTOR (YBOT (* Y value for the bottom of the line (below the descent)) YBASE (* Yvalue for the base line the characters sit on) LEFTMARGIN (* Left margin, in screen points) RIGHTMARGIN (* Right margin, in screen points) LXLIM (* X value of right edge of rightmost character on the line (may exceed right margin, if char is a space.)) SPACELEFT (* Space left on the line, ignoring trailing blanks & CRs.) LHEIGHT (* Total height of hte line, Ascent+Descent.) ASCENT (* Ascent of the line above YBASE) DESCENT (* How far line descends below YBASE) LTRUEDESCENT (* The TRUE DESCENT for this line, unadjusted for line leading.) LTRUEASCENT (* The TRUE ASCENT for this line, unadjusted for pre-paragraph leading.) CHAR1 (* CH# of the first character on the line.) CHARLIM (* CH# of the last character on the line) CHARTOP (* CH# of the character which forced the line break ( may exceed CHARLIM)) NEXTLINE (* Next line chain pointer) (PREVLINE FULLXPOINTER) (* Previous line chain pointer) LMARK (* One of SOLID, GREY, NIL. Tells what kind of special-line marker should be put in the left margin for this paragraph. (For hardcopy, can also be an indicator for special processing? )) LTEXTOBJ (* A cached TEXTOBJ that this line took its text from. Used in hardcopy to disambiguate when chno's should be updated...) CACHE (* A cached THISLINE, for keeping hardcopy info around while we crunch with the line descriptors to make things fit.) LDOBJ (* The object which lies behind this line of text, for updating, etc.) LFMTSPEC (* The format spec for this line's paragraph (eventually)) (DIRTY FLAG) (* T if this line has changed since it was last formatted.) (CR\END FLAG) (* T if this line ends with a CR.) (DELETED FLAG) (* T if this line has been completely deleted since it was last formatted or displayed. (Used by deletion routines to detect garbage lines)) (LHASPROT FLAG) (* This line contains protected text.) (LHASTABS FLAG) (* If this line has a tab in it, this is the line-relative ch# of the final tab. This is to let us punt properly with tabs in a line.) (1STLN FLAG) (* This line is the first line in a paragraph) (LSTLN FLAG) (* This is the last line in a paragraph)) CHARLIM _ 1000000 NEXTLINE _ NIL PREVLINE _ NIL DIRTY _ NIL YBOT _ 0 YBASE _ 0 LEFTMARGIN _ 0 DELETED _ NIL) (DATATYPE LINECACHE (LCBITMAP (* The bitmap that will be used by this instance of the cache) ( LCNEXTCACHE FULLXPOINTER) (* The next cache in the chain, for screen updates.))) (/DECLAREDATATYPE (QUOTE THISLINE) (QUOTE (FULLXPOINTER POINTER POINTER POINTER POINTER POINTER)) ( QUOTE ((THISLINE 0 FULLXPOINTER) (THISLINE 2 POINTER) (THISLINE 4 POINTER) (THISLINE 6 POINTER) ( THISLINE 8 POINTER) (THISLINE 10 POINTER))) (QUOTE 12)) (/DECLAREDATATYPE (QUOTE LINEDESCRIPTOR) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FULLXPOINTER POINTER POINTER POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG)) (QUOTE ((LINEDESCRIPTOR 0 POINTER) ( LINEDESCRIPTOR 2 POINTER) (LINEDESCRIPTOR 4 POINTER) (LINEDESCRIPTOR 6 POINTER) (LINEDESCRIPTOR 8 POINTER) (LINEDESCRIPTOR 10 POINTER) (LINEDESCRIPTOR 12 POINTER) (LINEDESCRIPTOR 14 POINTER) ( LINEDESCRIPTOR 16 POINTER) (LINEDESCRIPTOR 18 POINTER) (LINEDESCRIPTOR 20 POINTER) (LINEDESCRIPTOR 22 POINTER) (LINEDESCRIPTOR 24 POINTER) (LINEDESCRIPTOR 26 POINTER) (LINEDESCRIPTOR 28 POINTER) ( LINEDESCRIPTOR 30 FULLXPOINTER) (LINEDESCRIPTOR 32 POINTER) (LINEDESCRIPTOR 34 POINTER) ( LINEDESCRIPTOR 36 POINTER) (LINEDESCRIPTOR 38 POINTER) (LINEDESCRIPTOR 40 POINTER) (LINEDESCRIPTOR 40 (FLAGBITS . 0)) (LINEDESCRIPTOR 40 (FLAGBITS . 16)) (LINEDESCRIPTOR 40 (FLAGBITS . 32)) ( LINEDESCRIPTOR 40 (FLAGBITS . 48)) (LINEDESCRIPTOR 40 (FLAGBITS . 64)) (LINEDESCRIPTOR 40 (FLAGBITS . 80)) (LINEDESCRIPTOR 40 (FLAGBITS . 96)))) (QUOTE 42)) (/DECLAREDATATYPE (QUOTE LINECACHE) (QUOTE (POINTER FULLXPOINTER)) (QUOTE ((LINECACHE 0 POINTER) ( LINECACHE 2 FULLXPOINTER))) (QUOTE 4)) (/DECLAREDATATYPE (QUOTE TEDITCARET) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER)) (QUOTE ((TEDITCARET 0 POINTER) (TEDITCARET 2 POINTER) (TEDITCARET 4 POINTER) (TEDITCARET 6 POINTER) (TEDITCARET 8 POINTER) (TEDITCARET 10 POINTER) (TEDITCARET 12 POINTER) (TEDITCARET 14 POINTER) (TEDITCARET 16 POINTER) (TEDITCARET 18 POINTER) (TEDITCARET 20 POINTER))) ( QUOTE 22)) (DATATYPE SELECTION (Y0 (* Y value of topmost line of selection) X0 (* X value of left edge of selection) DX (* Width of the selection, if it's on one line.) CH# (* CH# of the first selected character) XLIM (* X value of right edge of last selected character) CHLIM (* CH# of the last character in the selection) DCH (* # of characters selected (can be zero, for point selection.)) L1 (* -> line descriptor for the line where the first selected character is) LN (* -> line descriptor for the line which contains the end of the selection) YLIM (* Y value of the bottom of the line that ends the selection) POINT (* Which end should the caret appear at? (LEFT or RIGHT)) (SET FLAG) (* T if this selection is real; NIL if not) (\TEXTOBJ FULLXPOINTER) (* TEXTOBJ that describes the selected text) SELKIND (* What kind of selection? CHAR or WORD or LINE or PARA) HOW (* SHADE used to highlight this selection) HOWHEIGHT (* Height of the highlight (1 usually, full line for delete selection...)) ( HASCARET FLAG) (* T if there should be a caret for this selection) SELOBJ (* If this selection is inside an object, which object?) (ONFLG FLAG) (* T if the selection is highlighted on the screen, else NIL) SELOBJINFO (* A Place for the selected object to put info about selection inside itself.)) SET _ NIL HOW _ BLACKSHADE HOWHEIGHT _ 1 HASCARET _ T Y0 _ 0 X0 _ 0 POINT _ (QUOTE LEFT) L1 _ (LIST NIL) LN _ (LIST NIL)) (/DECLAREDATATYPE (QUOTE SELECTION) (QUOTE (POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER FLAG FULLXPOINTER POINTER POINTER POINTER FLAG POINTER FLAG POINTER)) (QUOTE ((SELECTION 0 POINTER) (SELECTION 2 POINTER) (SELECTION 4 POINTER) (SELECTION 6 POINTER) ( SELECTION 8 POINTER) (SELECTION 10 POINTER) (SELECTION 12 POINTER) (SELECTION 14 POINTER) (SELECTION 16 POINTER) (SELECTION 18 POINTER) (SELECTION 20 POINTER) (SELECTION 20 (FLAGBITS . 0)) (SELECTION 22 FULLXPOINTER) (SELECTION 24 POINTER) (SELECTION 26 POINTER) (SELECTION 28 POINTER) (SELECTION 28 ( FLAGBITS . 0)) (SELECTION 30 POINTER) (SELECTION 30 (FLAGBITS . 0)) (SELECTION 32 POINTER))) (QUOTE 34 )) (RPAQQ COPYSELSHADE 30583) (RPAQQ COPYLOOKSSELSHADE 30583) (RPAQQ EDITMOVESHADE -1) (RPAQQ EDITGRAY 32800) (CONSTANTS (COPYSELSHADE 30583) (COPYLOOKSSELSHADE 30583) (EDITMOVESHADE -1) (EDITGRAY 32800)) (RPAQQ TEDITDECLSCOMS ((* ;;; "This file is the collected record declarations and compile-time necessities for TEDIT.") (* ;; "FROM TEDIT") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (\SCRATCHLEN 64))) (* ;; "FROM TEXTOFD") ( RECORDS EDITMARK) (RECORDS PIECE TEXTOBJ TEXTIMAGEDATA TEXTSTREAM) (MACROS TEXTPROP) (COMS (* Private data structures and constants FROM TEXTOFD) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS ( \PCTBFreePieces 0) (\PCTBLastPieceOffset 1) (\FirstPieceOffset 2) (\SecondPieceOffset 4) ( \EltsPerPiece 2)) (MACROS \EDITELT \GETCH \GETCHB \EDITSETA \WORDSETA) (GLOBALVARS \TEXTIMAGEOPS \TEXTOFD \TEXTFDEV))) (* ;;; "FROM TEDITPAGE") (RECORDS PAGEFORMATTINGSTATE PAGEREGION) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITPAPERSIZE)) (* ;; "FROM TEDITFIND") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (\AlphaNumericFlag 256) (\AlphaFlag 512) (\OneCharPattern 1024) (\AnyStringPattern 1025) (\OneAlphaPattern 1026) (\AnyAlphaPattern 1027) (\OneNonAlphaPattern 1028) (\AnyNonAlphaPattern 1029) (\LeftBracketPattern 1030) (\RightBracketPattern 1031) (\SpecialPattern 1024))) (* ;; " FROM TEDITLOOKS") (RECORDS CHARLOOKS FMTSPEC PENDINGTAB) (DECLARE: EVAL@COMPILE DONTCOPY (MACROS \SMALLPIN \SMALLPOUT ONOFF)) (* ;; "FROM TEDITMENU") (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS MBUTTON) ) (INITRECORDS MBUTTON) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS NWAYBUTTON)) (INITRECORDS NWAYBUTTON) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS MARGINBAR)) (INITRECORDS MARGINBAR) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TAB)) (RECORDS MB.3STATE MB.BUTTON MB.INSERT MB.MARGINBAR MB.NWAY MB.TEXT MB.TOGGLE) (* ;; "FROM TEDITHISTORY") (RECORDS TEDITHISTORYEVENT) (* ;; "FROM TEDITSCREEN") (RECORDS THISLINE LINEDESCRIPTOR LINECACHE) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (LMInvisibleRun 401) ( LMLooksChange 400))) (* ;; "FROM TEDITFILE") (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS ( \PieceDescriptorLOOKS 0) (\PieceDescriptorOBJECT 1) (\PieceDescriptorPARA 2) ( \PieceDescriptorPAGEFRAME 3) (\PieceDescriptorCHARLOOKSLIST 4) (\PieceDescriptorPARALOOKSLIST 5) ( \PieceDescriptorSAFEOBJECT 6))) (* ;; "FROM TEDITCOMMAND") (DECLARE: EVAL@COMPILE DONTCOPY (MACROS \INSERT\TTY\BUFFER \TEDIT.MOUSESTATE \TEDIT.CHECK)) (DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITTERMCODE)) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (NONE.TTC 0) (CHARDELETE.TTC 1) ( WORDDELETE.TTC 2) (DELETE.TTC 3) (FUNCTIONCALL.TTC 4) (REDO.TTC 5) (UNDO.TTC 6) (CMD.TTC 7) (NEXT.TTC 8) (EXPAND.TTC 9) (PUNCT.TTC 20) (TEXT.TTC 21) (WHITESPACE.TTC 22))) (DECLARE: EVAL@COMPILE DONTCOPY ( CONSTANTS (MSPACE 153) (NSPACE 152) (THINSPACE 159) (FIGSPACE 154))) (* ;; "FROM TEDITWINDOW") ( DECLARE: EVAL@COMPILE DONTCOPY (RECORDS TEDITCARET)) (INITRECORDS TEDITCARET) (* ;; "FROM TEDITSELECTION") (RECORDS SELECTION) (CONSTANTS (COPYSELSHADE 30583) (COPYLOOKSSELSHADE 30583) ( EDITMOVESHADE -1) (EDITGRAY 32800)) (* ;;; "THE END") (VARS TEDITDECLSCOMS))) (PUTPROPS TEDITDECLS COPYRIGHT ("Xerox Corporation" 1986)) NIL