P [0+8+FQ(+4)[1 0FO10F"G+Q1' +FQ()+4U1 FQ1"L0' ,Q1:M(Q1+4(]1]0)) 5 ( 2>}J)}b{ ? - f?)aA+N]8lE -/tEo2v@f!pwF& Macro on whole buffer& Page Directory& Set PAGE Mode Line& Setup PAGE LibraryInsert Page DirectoryView Page Directory^R Goto Next Page^R Goto Page^R Goto Previous Page^R Insert Pagemark^R Join Next Page^R PAGE Search^R Widen Bounds~DIRECTORY~~DOC~ & Macro on whole buffer~DOC~ & Page Directory~DOC~ & Set PAGE Mode Line~DOC~ & Setup PAGE Library~DOC~ Insert Page Directory~DOC~ View Page Directory~DOC~ ^R Goto Next Page~DOC~ ^R Goto Page~DOC~ ^R Goto Previous Page~DOC~ ^R Insert Pagemark~DOC~ ^R Join Next Page~DOC~ ^R PAGE Search~DOC~ ^R Widen Bounds~DOC~ ~Filename~~Filename~~INVERT~0M.CPAGE Flush CRLF* Nonzero => initial blank line expected and ignored on each page. 0FO..QPAGE Setup Hook[0 fq0"GM0' "# M.M^R Goto PageU:.X() M.M^R Insert Pagemarku:.X(P) M.M^R Goto Next Pageu:.X(]) M.M^R Goto Previous Pageu:.X([) M.M^R Join Next Pageu:.X(J) M.M^R Widen Boundsu:.X(W) ' M.M^R Incremental Search[0 M.M^R String Search[1 M.M^R Character Search[3 M.M^R PAGE Search[2 [4 (q.S-q0)*(q.S-Q1)"E q.SU4 q2u.S' "#(q..S-q0)*(q..S-q1)"E q..SU4 Q2u..S' "#Q.S-q3"e q1u4' "#FTCannot find Search!!! Ask a wizard for help.''' Q4F"NM.VReal Search Macro' Q4-q0"eQ2M.VMM ^R Incremental Search' Q4-q1"eQ2M.VMM ^R String Search' 0M.CCurrent Page!!1fsmodech qSet Mode Line Hook[1 :i*1M(M.M& Set PAGE Mode Line)uSet Mode Line Hook 0fo..qTECO mode hookF"E M.VTECO mode hook :i*'u1 :i*1 1M.LPAGE Flush Crlf uTECO mode hook 0qCurrent Page"e' q:.B(qBuffer Index+4)[..O fsVZ+b"E 0f[varmac 0uCurrent Page ' ]..O i Page qCurrent Page\ .-z(j:fb Narrow"lfkd')+zj 0@f"n13i10i' .-B"E13i10i' gPage Delimiter.[1 0f:fb"lr.,q1k' qPAGE Flush CRLF"n13i10i' fsvz+b"e0uCurrent Page' qCurrent Page"N %Current Page 0:M(M.M^R Goto Next Page)'[0.[1[2 fsvz+b"e0uCurrent Page' 0,fsZfsBoundw-1fsWindoww qCurrent Page"e 0m.lCurrent Page ff"e0u0' j1u2qPage Delimiter[3 <.,q1+3:fb3; 0@f+fk"n!' .-z"E%2;' qPAGE Flush Crlf"n :@f"n!'' %2> q1j q2uCurrent Page' qCurrent Page+q0u2 q2:"G :1M(M.M^R Goto Page)' q0M(M.M^R Mark Page) z-."E .u1 j1u2qPage Delimiteru3 <.,z:fb3; 0@f+fk"n.-z;!' .-z"E%2;' qPAGE Flush Crlf"n :@f"n!'' %2> q1j 0M(M.M^R Mark Page)' q2uCurrent Page ."'N&qPAGE flush Crlf"N2:c' .(w):w z-."N:@0L' :,.ffsBoundw q1:j"ej' F"L[0' "#WFF"N -1[0 0,fsZfsBoundw-1fsWindoww 1m.lCurrent Page 0j' "#fsvz+b"e0[0' "#1[0''' Q0M(M.M^R Goto Next Page) 0QReal Search Macro,@:M(M.M& Macro on Whole Buffer)fsvz+b"e0uCurrent Page' FF&2"E@FEWNAFSErr' qCurrent Page"E 0M.LCurrent Page FF&8"N@:M()'"#:M()'' 0,fsZfsBoundw-1fsWindoww FF&8"N@M()'"#M()' 0uCurrent Page @M(M.M^R Goto Next Page) 0qPage Delimiter[7 0f[vb0f[vz.[1fnq1j q..o[A F[BBIND[..OQ..O[B QAU..O0J 0[4[5[6 <.U5 @f  L0@L.-Q5"LQ5J' 3,%4:\u5 S7 fk"e1@FX6'"#fkc:I6 ' qBu..o I5 6 qAu..O <:S7; 0@F+FK"N!' QPAGE Flush Crlf"N :@F"N!'' 1;>.-Z; > :GB-1f[truncate M(M.M& Page Directory)[0 FTPage First Non-blank Line 0 ]00M(M.M& Page Directory)[0 BJ I0  FF"N .[1BJ QComment Start[2 QComment End[3 ]3]2]1' ]0b,.0uCurrent Page :M(M.M^R Set Bounds Full)FF"E-1'"#-':M(M.M^R Goto Next Page)"L B"E@FENIBFSErr' BJ0,fsZfsBoundw-1fsWindoww QCurrent Page-1uCurrent Page 0@F"E-L'0L' "#FSVZ"E@FENIBFSErr' zjm(m.m^R Set Bounds Full)fl' QPage Delimiter[1 -2D.,(S1).K QPAGE Flush CRLF"NK' .,.FSBOUND 0M(M.M^R Goto Next Page) 0PAGECommands for handling pages intelligently.S Put macros on appropriate characters.S Add Page onto the mode line, maybe. Insert "Page" and the page number.n^R Insert a page mark, leaving new second page current. Inserts a CRLF before the page mark if necessary.^R Make the next page current. Set the virtual buffer boundaries to the next page. If given a negative argument, goes to previous page.^R Go to a specific page, arg is page number. If no arg then go to next page. Negative arg means move back n pages. If entire buffer is visible, no arg means select current page.^R Search that crosses virtual buffer boundaries. Uses ^R Incremental Search or ^R String Search, whichever you had on C-S or M-S when you loaded the PAGE library. See the documentation of whichever search you use for details. You can change the search used by doing, for instance, M.M^R String Search$ u$Real Search Macro$.S Macros its precomma arg on the whole buffer. The post-comma argument and @ flag are passed on to the macro. If Current Page is non-zero, then the bounds are widened, the argument is macroed, and the bounds are narrowed again to the current page. Thus, the way to do, say, a search is: M.M^R Incremental Search$, @M(M.M& Macro on Whole Buffer$)S Returns a string pointer to the page directoryvC Prints a directory of the file. Prints out the first non-blank line on each page, preceded by its page number.Inserts a directory of the page at the beginning Prints out the first non-blank line on each page, preceded by its page number. If given an argument, puts Comment Start at the start of each line and Comment End at the end^R Widen the virtual buffer bounds to include the whole file. Calls ^R Set Bounds Full and clears the page number from the mode line.^R Make the previous page current. Set the virtual buffer boundaries to the previous page. If given a negative argument, goes to the next page.^R Combine two pages together. Combines this page with next. If given negative arg, combines previous page with this one.& Setup PAGE Library & Set PAGE Mode Line ^R Insert Pagemark ^R Goto Next Page ^R Goto Page ^R PAGE Search & Macro on whole buffer & Page Directory View Page Directory Insert Page Directory ^R Widen Bounds ^R Goto Previous Page ^R Join Next Page +8+fq(+4)[20[3 <%3,-q2f2u3q3&1@;q3"l0'> f[BBindq3-1*5,q3*5g2q:..o(0)+q2