Skip to content

Commit b038a6b

Browse files
authored
Rmk112 fix tedit hardcopy smash (#1580)
* Hardcopy wasn't binding the internally created textstreams, only the textobjs * Putting the stream instead of the textobj in hardcopy lines * TEDIT-SCREEN: Fixed \FORMATLINE to deal with a last-line ending in white space * Added TEDIT-STRESS Not part of the loadup, a collection of offline routines to stress various Tedit interfaces
1 parent 5e5fea9 commit b038a6b

File tree

6 files changed

+372
-80
lines changed

6 files changed

+372
-80
lines changed

library/tedit/TEDIT-PAGE

Lines changed: 68 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
22

3-
(FILECREATED " 7-Mar-2024 09:55:14" {WMEDLEY}<library>TEDIT>TEDIT-PAGE.;154 111276
3+
(FILECREATED "13-Mar-2024 17:12:34" {WMEDLEY}<library>TEDIT>TEDIT-PAGE.;163 112427
44

55
:EDIT-BY rmk
66

7-
:CHANGES-TO (FNS TEDIT.FORMAT.HARDCOPY)
7+
:CHANGES-TO (FNS TEDIT.FORMATBOX \TEDIT.FORMAT.FOOTNOTE)
8+
(RECORDS PAGEFORMATTINGSTATE PAGEREGION)
9+
(MACROS GETPFS SETPFS)
810

9-
:PREVIOUS-DATE " 7-Mar-2024 00:14:19" {WMEDLEY}<library>TEDIT>TEDIT-PAGE.;152)
11+
:PREVIOUS-DATE "13-Mar-2024 10:28:14" {WMEDLEY}<library>tedit>TEDIT-PAGE.;157)
1012

1113

1214
(PRETTYCOMPRINT TEDIT-PAGECOMS)
@@ -559,7 +561,7 @@
559561

560562
(TEDIT.FORMAT.HARDCOPY
561563
[LAMBDA (TEXTSTREAM FILE DONTSEND BREAKPAGETITLE SERVER PRINTOPTIONS IMAGETYPE FIRSTPG# STARTPG
562-
ENDPG) (* ; "Edited 7-Mar-2024 09:55 by rmk")
564+
ENDPG) (* ; "Edited 7-Mar-2024 12:34 by rmk")
563565
(* ; "Edited 19-Jan-2024 23:39 by rmk")
564566
(* ; "Edited 24-Dec-2023 14:10 by rmk")
565567
(* ; "Edited 15-Nov-2023 23:56 by rmk")
@@ -577,9 +579,9 @@
577579
(SETQ TEXTSTREAM (if (TEXTSTREAM TEXTSTREAM T)
578580
elseif (TEDIT.FORMATTEDFILEP TEXTSTREAM)
579581
then (CL:UNLESS (\GETSTREAM TEXTSTREAM 'INPUT T)
580-
[RESETSAVE (SETQ TEXTSTREAM (OPENSTREAM TEXTSTREAM 'INPUT))
582+
[RESETSAVE (SETQ TEXTSTREAM (OPENTEXTSTREAM TEXTSTREAM))
581583
`(PROGN (CLOSEF? OLDVALUE])
582-
(OPENTEXTSTREAM TEXTSTREAM)
584+
TEXTSTREAM
583585
else (ERROR TEXTSTREAM "is not a Tedit stream")))
584586
(PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXTSTREAM))
585587
[FORMATTINGSTATE (create PAGEFORMATTINGSTATE
@@ -705,6 +707,7 @@
705707

706708
(TEDIT.FORMATBOX
707709
[LAMBDA (TEXTOBJ PRSTREAM STARTINGCHNO PAGEREGION FORMATTINGSTATE)
710+
(* ; "Edited 13-Mar-2024 17:09 by rmk")
708711
(* ; "Edited 20-Jan-2024 12:16 by rmk")
709712
(* ; "Edited 28-Jun-2023 15:54 by rmk")
710713
(* ; "Edited 22-Jun-2023 21:50 by rmk")
@@ -820,32 +823,36 @@
820823
 "For now, draw a box around it, too.")
821824
)
822825
NIL)
823-
(for LINE in LINES when LINE do (* ;
826+
(for LINE LTEXTOBJ in LINES when LINE do (* ;
824827
 "Run thru the lines displaying them all.")
825-
(BLOCK)
826-
(CL:WHEN (OR (NOT (GETPFS FORMATTINGSTATE MINPAGE#))
827-
(IGEQ (GETPFS FORMATTINGSTATE PAGE#)
828-
(GETPFS FORMATTINGSTATE MINPAGE#)))
828+
(BLOCK)
829+
(SETQ LTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ)
830+
of (FGETLD LINE LTEXTSTREAM)))
831+
(CL:WHEN (OR (NOT (GETPFS FORMATTINGSTATE MINPAGE#)
832+
)
833+
(IGEQ (GETPFS FORMATTINGSTATE PAGE#)
834+
(GETPFS FORMATTINGSTATE MINPAGE#
835+
)))
829836
(* ;
830837
 "We're beyond the min page number -- go ahead and print the line")
831-
(\TEDIT.HARDCOPY.DISPLAYLINE (GETLD LINE LTEXTOBJ)
832-
LINE
833-
(SCALEREGION (DSPSCALE NIL PRSTREAM)
834-
REGION)
835-
PRSTREAM FORMATTINGSTATE))
836-
(CL:WHEN (EQ TEXTOBJ (GETLD LINE LTEXTOBJ))
837-
838-
(* ;;
838+
(\TEDIT.HARDCOPY.DISPLAYLINE
839+
LTEXTOBJ LINE (SCALEREGION (DSPSCALE NIL
840+
PRSTREAM)
841+
REGION)
842+
PRSTREAM FORMATTINGSTATE))
843+
(CL:WHEN (EQ TEXTOBJ LTEXTOBJ)
844+
845+
(* ;;
839846
 "This line refers back to the main text, so update the current-char pointer.")
840847

841-
(* ;;
848+
(* ;;
842849
 "[NB that footnotes could cause the count to be non-monotonic; hence the IMAX.]")
843850

844-
[SETQ CHNO (IMAX (OR CHNO 0)
845-
(ADD1 (GETLD LINE LCHARLIM])
846-
(push (GETPFS FORMATTINGSTATE PAGELINECACHE)
847-
LINE)
848-
(SETLD LINE LTEXTOBJ NIL))
851+
[SETQ CHNO (IMAX (OR CHNO 0)
852+
(ADD1 (FGETLD LINE LCHARLIM])
853+
(push (GETPFS FORMATTINGSTATE PAGELINECACHE)
854+
LINE)
855+
(FSETLD LINE LTEXTSTREAM NIL))
849856
(COND
850857
(LAST-CHNO (* ;
851858
 "We got a definite last chno from FORMATTEXTBOX.")
@@ -855,7 +862,8 @@
855862
(SETPFS FORMATTINGSTATE CHNO CHNO])
856863

857864
(TEDIT.FORMATHEADING
858-
[LAMBDA (TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) (* ; "Edited 6-Mar-2024 13:09 by rmk")
865+
[LAMBDA (TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) (* ; "Edited 13-Mar-2024 09:00 by rmk")
866+
(* ; "Edited 6-Mar-2024 13:09 by rmk")
859867
(* ; "Edited 15-Feb-2024 22:02 by rmk")
860868
(* ; "Edited 19-Jan-2024 23:20 by rmk")
861869
(* ; "Edited 9-Sep-2023 22:17 by rmk")
@@ -868,15 +876,17 @@
868876
(LET ((REGION (SCALEREGION (DSPSCALE NIL PRSTREAM)
869877
(fetch (PAGEREGION REGIONSPEC) of PAGEREGION)))
870878
(LOCALINFO (fetch (PAGEREGION REGIONLOCALINFO) of PAGEREGION))
871-
HEADINGTEXTOBJ FORCENEXTPAGE HEADING)
879+
HEADINGTEXTOBJ HEADINGSTREAM FORCENEXTPAGE HEADING)
872880
(CL:WHEN [AND (for FORM inside (LISTGET LOCALINFO 'PRECONDITIONS) always (EVAL FORM))
873881
(SETQ HEADING (LISTGET (GETPFS FORMATTINGSTATE PAGEHEADINGS)
874882
(LISTGET LOCALINFO 'HEADINGTYPE]
875-
[SETQ HEADINGTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ)
876-
of (OPENTEXTSTREAM
877-
NIL NIL NIL NIL
878-
`(PARALOOKS ,(PPARALOOKS (fetch (SELPIECES SPFIRST)
879-
of HEADING]
883+
884+
(* ;; "Bind the stream to make sure it isn't collected.")
885+
886+
[SETQ HEADINGSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL
887+
`(PARALOOKS ,(PPARALOOKS (fetch (SELPIECES SPFIRST)
888+
of HEADING]
889+
(SETQ HEADINGTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of HEADINGSTREAM))
880890

881891
(* ;; "Insert the heading pieces into HEADINGTEXTOBJ")
882892

@@ -912,7 +922,8 @@
912922
LINE))])
913923

914924
(TEDIT.FORMATPAGE
915-
[LAMBDA (TEXTOBJ PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 19-Jan-2024 23:10 by rmk")
925+
[LAMBDA (TEXTOBJ PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 13-Mar-2024 10:28 by rmk")
926+
(* ; "Edited 19-Jan-2024 23:10 by rmk")
916927
(* ; "Edited 11-Dec-2023 22:02 by rmk")
917928
(* ; "Edited 13-Nov-2023 00:15 by rmk")
918929
(* ; "Edited 22-Sep-2023 20:37 by rmk")
@@ -997,7 +1008,7 @@
9971008

9981009
(* ;; "We now fill up the next complete page. Afterwards, we either continue to the next page (DPSNEWPAGE) or finish up. TEDIT.FORMATBOX is responsible for setting up NEWPAGEBEFORFE and NEWPAGEAFTER")
9991010

1000-
(SETPFS FORMATTINGSTATE CHNO CHNO with CHNO)
1011+
(SETPFS FORMATTINGSTATE CHNO CHNO)
10011012
(for SUBREGION in (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION)
10021013
while (ILEQ (GETPFS FORMATTINGSTATE CHNO)
10031014
TEXTLEN) do
@@ -1269,7 +1280,8 @@
12691280
FORMATTINGSTATE FINAL-CHNO)))])
12701281

12711282
(TEDIT.FORMATFOLIO
1272-
[LAMBDA (TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) (* ; "Edited 19-Jan-2024 23:28 by rmk")
1283+
[LAMBDA (TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) (* ; "Edited 13-Mar-2024 09:00 by rmk")
1284+
(* ; "Edited 19-Jan-2024 23:28 by rmk")
12731285
(* ; "Edited 18-Jan-2024 17:04 by rmk")
12741286
(* ; "Edited 13-Nov-2023 00:24 by rmk")
12751287
(* ; "Edited 1-Jun-2023 00:12 by rmk")
@@ -1281,7 +1293,7 @@
12811293
(LET ((REGION (SCALEREGION (DSPSCALE NIL PRSTREAM)
12821294
(fetch (PAGEREGION REGIONSPEC) of PAGEREGION)))
12831295
(FOLIOINFO (fetch (PAGEREGION REGIONLOCALINFO) of PAGEREGION))
1284-
FOLIOTEXTOBJ PAGE# FOLIOFORMAT PRETEXT POSTTEXT INFOLIST)
1296+
FOLIOSTREAM FOLIOTEXTOBJ PAGE# FOLIOFORMAT PRETEXT POSTTEXT INFOLIST)
12851297
(CL:UNLESS (AND (GETPFS FORMATTINGSTATE FIRSTPAGE)
12861298
(LISTGET FOLIOINFO 'NOFIRSTPAGE)) (* ;
12871299
 "If this isn't the first page, OR we want a page # on the first page, go ahead and format it.")
@@ -1300,10 +1312,14 @@
13001312
(UPPERROMAN (ROMANNUMERALS (GETPFS FORMATTINGSTATE PAGE#)
13011313
T))
13021314
(MKSTRING (GETPFS FORMATTINGSTATE PAGE#]
1303-
[SETQ FOLIOTEXTOBJ (TEXTOBJ (OPENTEXTSTREAM NIL NIL NIL NIL
1304-
`(PARALOOKS ,(LISTGET FOLIOINFO 'PARALOOKS)
1305-
LOOKS
1306-
,(LISTGET FOLIOINFO 'CHARLOOKS]
1315+
1316+
(* ;; "Bind the stream to make sure it isn't collected.")
1317+
1318+
[SETQ FOLIOSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL
1319+
`(PARALOOKS ,(LISTGET FOLIOINFO 'PARALOOKS)
1320+
LOOKS
1321+
,(LISTGET FOLIOINFO 'CHARLOOKS]
1322+
(SETQ FOLIOTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of FOLIOSTREAM))
13071323
(TEDIT.INSERT FOLIOTEXTOBJ (CONCAT PRETEXT PAGE# POSTTEXT)
13081324
1 NIL T)
13091325
(bind LINE YBOT FORCENEXTPAGE (TEXTLEN _ (TEXTLEN FOLIOTEXTOBJ))
@@ -1745,7 +1761,8 @@
17451761
(DEFINEQ
17461762

17471763
(\TEDIT.FORMAT.FOOTNOTE
1748-
[LAMBDA (TEXTOBJ PRSTREAM LINE REGION FORMATTINGSTATE) (* ; "Edited 19-Jan-2024 23:30 by rmk")
1764+
[LAMBDA (TEXTOBJ PRSTREAM LINE REGION FORMATTINGSTATE) (* ; "Edited 13-Mar-2024 17:00 by rmk")
1765+
(* ; "Edited 19-Jan-2024 23:30 by rmk")
17491766
(* ; "Edited 6-May-2023 20:38 by rmk")
17501767
(* ; "Edited 7-Mar-2023 13:11 by rmk")
17511768
(* ; "Edited 30-May-91 12:52 by jds")
@@ -1766,8 +1783,6 @@
17661783
REGION PRSTREAM FORMATTINGSTATE))
17671784
(* ;
17681785
 "Format the line, noting any form-feeds")
1769-
(SETLD LINE LTEXTOBJ TEXTOBJ) (* ;
1770-
 "And remember the document it came from.")
17711786
(add (FGETLD LINE LEFTMARGIN)
17721787
LEFT)
17731788
(add (FGETLD LINE RIGHTMARGIN)
@@ -1780,14 +1795,14 @@
17801795
(RETURN (DREMOVE NIL $$VAL])
17811796
)
17821797
(DECLARE%: DONTCOPY
1783-
(FILEMAP (NIL (11921 15254 (\TEDIT.PARSE.PAGEFRAMES 11931 . 13431) (\TEDIT.PUT.PAGEFRAMES 13433 .
1784-
14257) (\TEDIT.UNPARSE.PAGEFRAMES 14259 . 15252)) (15317 31779 (TEDIT.SINGLE.PAGEFORMAT 15327 . 25545)
1785-
(TEDIT.COMPOUND.PAGEFORMAT 25547 . 26526) (TEDIT.PAGEFORMAT 26528 . 31777)) (31866 90148 (
1786-
TEDIT.FORMAT.HARDCOPY 31876 . 42886) (TEDIT.FORMATBOX 42888 . 55048) (TEDIT.FORMATHEADING 55050 .
1787-
58664) (TEDIT.FORMATPAGE 58666 . 66869) (TEDIT.FORMATTEXTBOX 66871 . 81654) (TEDIT.FORMATFOLIO 81656
1788-
. 86040) (\TEDIT.FORMAT.FOUNDBOX? 86042 . 88081) (TEDIT.SKIP.SPECIALCOND 88083 . 90146)) (90228 92509
1789-
(TEDIT.HARDCOPY.PAGEHEADINGS 90238 . 92507)) (92618 99801 (TEDIT.HARDCOPY-COLUMN-END 92628 . 99799))
1790-
(99846 104787 (SCALEPAGEUNITS 99856 . 100997) (SCALEPAGEXUNITS 100999 . 101769) (SCALEPAGEYUNITS
1791-
101771 . 102542) (\TEDIT.PAPERHEIGHT 102544 . 103479) (\TEDIT.PAPERWIDTH 103481 . 104785)) (105203
1792-
108771 (ROMANNUMERALS 105213 . 108769)) (108807 111253 (\TEDIT.FORMAT.FOOTNOTE 108817 . 111251)))))
1798+
(FILEMAP (NIL (12038 15371 (\TEDIT.PARSE.PAGEFRAMES 12048 . 13548) (\TEDIT.PUT.PAGEFRAMES 13550 .
1799+
14374) (\TEDIT.UNPARSE.PAGEFRAMES 14376 . 15369)) (15434 31896 (TEDIT.SINGLE.PAGEFORMAT 15444 . 25662)
1800+
(TEDIT.COMPOUND.PAGEFORMAT 25664 . 26643) (TEDIT.PAGEFORMAT 26645 . 31894)) (31983 91368 (
1801+
TEDIT.FORMAT.HARDCOPY 31993 . 42983) (TEDIT.FORMATBOX 42985 . 55757) (TEDIT.FORMATHEADING 55759 .
1802+
59542) (TEDIT.FORMATPAGE 59544 . 67846) (TEDIT.FORMATTEXTBOX 67848 . 82631) (TEDIT.FORMATFOLIO 82633
1803+
. 87260) (\TEDIT.FORMAT.FOUNDBOX? 87262 . 89301) (TEDIT.SKIP.SPECIALCOND 89303 . 91366)) (91448 93729
1804+
(TEDIT.HARDCOPY.PAGEHEADINGS 91458 . 93727)) (93838 101021 (TEDIT.HARDCOPY-COLUMN-END 93848 . 101019)
1805+
) (101066 106007 (SCALEPAGEUNITS 101076 . 102217) (SCALEPAGEXUNITS 102219 . 102989) (SCALEPAGEYUNITS
1806+
102991 . 103762) (\TEDIT.PAPERHEIGHT 103764 . 104699) (\TEDIT.PAPERWIDTH 104701 . 106005)) (106423
1807+
109991 (ROMANNUMERALS 106433 . 109989)) (110027 112404 (\TEDIT.FORMAT.FOOTNOTE 110037 . 112402)))))
17931808
STOP

library/tedit/TEDIT-PAGE.LCOM

-2 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)