1
0
mirror of synced 2026-03-10 21:03:22 +00:00

WIP. Saving so I can merge in latest TEdit.

This commit is contained in:
Frank Halasz
2026-02-11 15:10:48 -08:00
parent 5a79b56a4f
commit 3fcb7e0819
4 changed files with 325 additions and 153 deletions

Binary file not shown.

View File

@@ -1,12 +1,15 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "24-Mar-2025 10:31:37" {WMEDLEY}<doctools>IMINDEX.;10 37350
(FILECREATED " 5-Feb-2026 21:20:12" {DSK}<home>frank>il>medley>doctools>IMINDEX.;8 40990
:EDIT-BY rmk
:EDIT-BY "FGH"
:CHANGES-TO (FNS IM.INDEX.EDIT)
:CHANGES-TO (FNS IM.INDEX.DISPLAYFN IM.CHAP.DISPLAYFN IM.CHAP.CREATEOBJ IM.INDEX.BUTTONEVENTFN
IM.CHAP.GETFN)
(VARS IMINDEXCOMS)
(RECORDS IM.INDEX.DATA)
:PREVIOUS-DATE "17-Mar-2025 12:07:55" {WMEDLEY}<doctools>IMINDEX.;9)
:PREVIOUS-DATE "24-Mar-2025 10:31:37" {DSK}<home>frank>il>medley>doctools>IMINDEX.;1)
(PRETTYCOMPRINT IMINDEXCOMS)
@@ -24,6 +27,7 @@
(INITVARS (IM.INDEX.OBJECT.IMAGEFNS NIL)
(IM.CHAP.OBJECT.IMAGEFNS NIL)
(IM.INDEX.BUTTONEVENTFN.MENU NIL)
(IM.TOC.BUTTONEVENTFN.MENU NIL)
[IM.INDEX.OBJECT.DISPLAY.FONT (FONTCREATE '(MODERN 8 MRR 0 DISPLAY]
(IM.INDEX.DEFAULT.SUBSEC))
(RECORDS IM.INDEX.DATA)
@@ -87,7 +91,9 @@
'|...|])
(IM.INDEX.DISPLAYFN
[LAMBDA (OBJ STREAM STREAMTYPE HOSTSTREAM) (* ; "Edited 4-Apr-2024 23:17 by rmk")
[LAMBDA (OBJ STREAM STREAMTYPE HOSTSTREAM) (* ; "Edited 5-Feb-2026 21:08 by FGH")
(* ; "Edited 4-Feb-2026 00:03 by FGH")
(* ; "Edited 4-Apr-2024 23:17 by rmk")
(* ; "Edited 8-Dec-91 15:12 by jds")
(* ;; "only print index if you are going to display")
@@ -156,8 +162,9 @@
(* ;; "for now, always set the chapter/subsection from the document:")
[REPLACE (IM.INDEX.DATA SUBSEC) OF (IMAGEOBJPROP OBJ 'OBJECTDATUM)
WITH (LIST (TEXTPROP HOSTSTREAM 'INDEXING-CHAPTER]
(CL:UNLESS [EQ 'TOC (CAR (fetch (IM.INDEX.DATA TYPE) of (IMAGEOBJPROP OBJ 'OBJECTDATUM]
[replace (IM.INDEX.DATA SUBSEC) of (IMAGEOBJPROP OBJ 'OBJECTDATUM)
with (LIST (TEXTPROP HOSTSTREAM 'INDEXING-CHAPTER])
(PRIN4 (IMAGEOBJPROP OBJ 'OBJECTDATUM)
PTRFILE)
(TERPRI PTRFILE])
@@ -271,16 +278,41 @@
(IM.INDEX.BUTTONEVENTFN
[LAMBDA (OBJ WINDOWSTREAM SEL RELX RELY WIN HOSTSTREAM BUTTON)
(* ; "Edited 4-Feb-2026 23:16 by FGH")
(* mjs " 8-Aug-86 15:23")
(COND
([MENU (COND
(IM.INDEX.BUTTONEVENTFN.MENU)
(T (SETQ IM.INDEX.BUTTONEVENTFN.MENU (create MENU
ITEMS _ '((Edit% Index 'Edit% Index
(IF [EQ 'TOC (CAR (fetch (IM.INDEX.DATA TYPE) of (IMAGEOBJPROP OBJ 'OBJECTDATUM]
then (SELECTQ [MENU (COND
(IM.TOC.BUTTONEVENTFN.MENU)
(T (SETQ IM.TOC.BUTTONEVENTFN.MENU (create
MENU
ITEMS _
'((Set% Level 'SetLevel
"Set the level for this TOC object."
)
(Update% TOC 'Update
"Update the TOC Numbering for all documents"
))
MENUOFFSET _ (CREATEPOSITION
-5 -5]
(SetLevel (LET [(LVL (MENU (create MENU
ITEMS _ (LIST 1 2 3 4 5]
(if (NUMBERP LVL)
then (replace (IM.INDEX.DATA LEVEL) of (IMAGEOBJPROP OBJ
'OBJECTDATUM)
withÿ<02>ÿ LVL))))
(Update (IM.INDEX.UPDATE.TOC.NUMBERING HOSTSTREAM 3))
NIL)
else (COND
([MENU (COND
(IM.INDEX.BUTTONEVENTFN.MENU)
(T (SETQ IM.INDEX.BUTTONEVENTN.MENU (create MENU
ITEMS _
'((Edit% Index 'Edit% Index
"Selecting this item will create a window editing the contents of this index image object."
))
MENUOFFSET _ (CREATEPOSITION -5 -5]
(IM.INDEX.EDIT OBJ HOSTSTREAM])
))
MENUOFFSET _ (CREATEPOSITION
-5 -5]
(IM.INDEX.EDIT OBJ HOSTSTREAM])
)
(DEFINEQ
@@ -490,6 +522,8 @@
(RPAQ? IM.INDEX.BUTTONEVENTFN.MENU NIL)
(RPAQ? IM.TOC.BUTTONEVENTFN.MENU NIL)
(RPAQ? IM.INDEX.OBJECT.DISPLAY.FONT (FONTCREATE '(MODERN 8 MRR 0 DISPLAY)))
(RPAQ? IM.INDEX.DEFAULT.SUBSEC )
@@ -498,7 +532,15 @@
(RECORD IM.INDEX.DATA (NAME TYPE SAV INFO SUBSEC PAGE# . PROPLIST)
SUBSEC _ IM.INDEX.DEFAULT.SUBSEC (TYPE? (AND (LISTP DATUM)
(IGEQ (LENGTH DATUM)
6))))
6)))
(SYNONYM SAV (TEXT))
[ACCESSFNS IM.INDEX.DATA
((CHAPTER (CAR (LAST (fetch (IM.INDEX.DATA SUBSEC) of DATUM)))
(RPLACA (LAST (fetch (IM.INDEX.DATA SUBSEC) of DATUM))
NEWVALUE))
(LEVEL (LENGTH (fetch (IM.INDEX.DATA SUBSEC) of DATUM))
(replace (IM.INDEX.DATA SUBSEC) of DATUM
with (for i from 1 to NEWVALUE collect 0])
)
(RPAQQ IM.INDEX.OBJ.FREEMENU.SPECS
@@ -545,26 +587,29 @@
(IM.INDEX.CREATEOBJ (COPYALL (IMAGEOBJPROP OBJ 'OBJECTDATUM])
(IM.CHAP.CREATEOBJ
[LAMBDA (DATA) (* ; "Edited 8-Dec-91 14:40 by jds")
[LAMBDA (DATA) (* ; "Edited 5-Feb-2026 16:33 by FGH")
(* ; "Edited 8-Dec-91 14:40 by jds")
(IMAGEOBJCREATE DATA (if IM.CHAP.OBJECT.IMAGEFNS
else (SETQ IM.CHAP.OBJECT.IMAGEFNS (IMAGEFNSCREATE
(FUNCTION IM.CHAP.DISPLAYFN)
(FUNCTION IM.CHAP.SIZEFN)
(FUNCTION IM.CHAP.PUTFN)
(FUNCTION IM.CHAP.GETFN)
(FUNCTION IM.CHAP.COPYFN)
(FUNCTION IM.CHAP.BUTTONEVENTFN)
'NILL
'NILL
'NILL
'NILL
'NILL
'NILL
'NILL
'IM.CHAP.OBJECT])
else (SETQ IM.CHAP.OBJECT.IMAGEFNS (IMAGEFNSCREATE (FUNCTION
IM.CHAP.DISPLAYFN)
(FUNCTION IM.CHAP.SIZEFN)
(FUNCTION IM.CHAP.PUTFN)
(FUNCTION IM.CHAP.GETFN)
(FUNCTION IM.CHAP.COPYFN)
(FUNCTION IM.CHAP.BUTTONEVENTFN)
'NILL
'NILL
(FUNCTION IM.CHAP.WHENINSERTEDFN
)
'NILL
'NILL
'NILL
'NILL
'IM.CHAP.OBJECT])
(IM.CHAP.DISPLAYFN
[LAMBDA (OBJ STREAM STREAMTYPE HOSTSTREAM) (* ; "Edited 12-Feb-92 12:28 by jds")
[LAMBDA (OBJ STREAM STREAMTYPE HOSTSTREAM) (* ; "Edited 5-Feb-2026 20:51 by FGH")
(* ; "Edited 12-Feb-92 12:28 by jds")
(* ;; "only print CHAPTER MARKER if you are going to display")
@@ -600,11 +645,9 @@
BOTTOM 1 'INVERT STREAM)
(IMAGEOBJPROP OBJ 'REGION REGION)))
(T
(* ;; "HARDCOPYING; DO NOTHING BUT SET ")
(* ;; "HARDCOPYING; DO NOTHING")
(TEXTPROP (TEXTOBJ (OR HOSTSTREAM TEXTOBJ))
'INDEXING-CHAPTER
(IMAGEOBJPROP OBJ 'OBJECTDATUM])
NIL])
(IM.CHAP.SIZEFN
[LAMBDA (OBJ STREAM CURX RIGHTMARGIN) (* ; "Edited 8-Dec-91 14:38 by jds")
@@ -631,7 +674,8 @@
STREAM])
(IM.CHAP.GETFN
[LAMBDA (FILE TEXTSTREAM) (* ; "Edited 8-Dec-91 14:40 by jds")
[LAMBDA (FILE TEXTSTREAM) (* ; "Edited 18-Jan-2026 17:54 by FGH")
(* ; "Edited 8-Dec-91 14:40 by jds")
(IM.CHAP.CREATEOBJ (READ FILE])
(IM.CHAP.BUTTONEVENTFN
@@ -642,13 +686,13 @@
(IM.INDEX.INIT)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1677 15659 (IM.INDEX.CLOSEF 1687 . 2378) (IM.INDEX.COPYFN 2380 . 2565) (
IM.INDEX.CREATEOBJ 2567 . 3913) (IM.INDEX.DISPLAY.STRING 3915 . 4336) (IM.INDEX.DISPLAYFN 4338 . 8435)
(IM.INDEX.EDIT 8437 . 12206) (IM.INDEX.LIST.FROM.STRING 12208 . 13242) (IM.INDEX.SIZEFN 13244 . 14004
) (IM.INDEX.STRING.FROM.LIST 14006 . 14251) (IM.INDEX.PUTFN 14253 . 14599) (IM.INDEX.GETFN 14601 .
14898) (IM.INDEX.BUTTONEVENTFN 14900 . 15657)) (15660 17730 (IM.INDEX.INIT 15670 . 17728)) (17731
29647 (IM.INDEX.MENU 17741 . 19429) (IM.INDEX.MENU.WHENSELECTEDFN 19431 . 26186) (
IM.INDEX.OBJ.FREEMENU.SELECTEDFN 26188 . 29645)) (32163 37306 (IM.CHAP.COPYFN 32173 . 32353) (
IM.CHAP.CREATEOBJ 32355 . 33781) (IM.CHAP.DISPLAYFN 33783 . 35743) (IM.CHAP.SIZEFN 35745 . 36747) (
IM.CHAP.PUTFN 36749 . 36933) (IM.CHAP.GETFN 36935 . 37096) (IM.CHAP.BUTTONEVENTFN 37098 . 37304)))))
(FILEMAP (NIL (1939 18284 (IM.INDEX.CLOSEF 1949 . 2640) (IM.INDEX.COPYFN 2642 . 2827) (
IM.INDEX.CREATEOBJ 2829 . 4175) (IM.INDEX.DISPLAY.STRING 4177 . 4598) (IM.INDEX.DISPLAYFN 4600 . 9034)
(IM.INDEX.EDIT 9036 . 12805) (IM.INDEX.LIST.FROM.STRING 12807 . 13841) (IM.INDEX.SIZEFN 13843 . 14603
) (IM.INDEX.STRING.FROM.LIST 14605 . 14850) (IM.INDEX.PUTFN 14852 . 15198) (IM.INDEX.GETFN 15200 .
15497) (IM.INDEX.BUTTONEVENTFN 15499 . 18282)) (18285 20355 (IM.INDEX.INIT 18295 . 20353)) (20356
32272 (IM.INDEX.MENU 20366 . 22054) (IM.INDEX.MENU.WHENSELECTEDFN 22056 . 28811) (
IM.INDEX.OBJ.FREEMENU.SELECTEDFN 28813 . 32270)) (35458 40946 (IM.CHAP.COPYFN 35468 . 35648) (
IM.CHAP.CREATEOBJ 35650 . 37327) (IM.CHAP.DISPLAYFN 37329 . 39270) (IM.CHAP.SIZEFN 39272 . 40274) (
IM.CHAP.PUTFN 40276 . 40460) (IM.CHAP.GETFN 40462 . 40736) (IM.CHAP.BUTTONEVENTFN 40738 . 40944)))))
STOP

View File

@@ -1,21 +1,19 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 8-Dec-91 15:13:17" {DSK}<users>sybalsky>PUBS>IMTOOLS.;2 65965
changes to%: (VARS IMTOOLSCOMS)
(FNS GRAB.IMPTR PRINT.INDEX.OBJECT REF.TO.PAGE)
(FILECREATED " 3-Feb-2026 23:54:33" {DSK}<home>frank>il>medley>doctools>IMTOOLS.;2 65434
previous date%: " 4-Sep-91 18:04:53" {DSK}<users>sybalsky>PUBS>IMTOOLS.;1)
:EDIT-BY "FGH"
:CHANGES-TO (FNS MAKE.IM.TOC)
:PREVIOUS-DATE " 8-Dec-91 15:13:17" {DSK}<home>frank>il>medley>doctools>IMTOOLS.;1)
(* ; "
Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT IMTOOLSCOMS)
(RPAQQ IMTOOLSCOMS
(RPAQQ IMTOOLSCOMS
( (* ;
 "Maintainance Functions: generating indexes, etc")
 "Maintainance Functions: generating indexes, etc")
(FNS ADD.IM.MENU COLLECT.MODIFIED.IM.CHAPTERS DO.INDEX DO.MANUAL GRAB.IM.MANUAL.PTRS
GRAB.IMPTR IM.COMMAND.MENU IM.TEDIT.SELECTION INIT.INDEX.VARS INSERT.CHARS.AROUND.SEL
INTERPRET.IM.MENU.COMMAND MAKE.IM.TITLE MAKE.IM.TOC NEWTO PRINT.INDEX.OBJECT
@@ -313,26 +311,26 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
OUTFILE.FLG NIL "Hardcopy of Title Page"])
(MAKE.IM.TOC
[LAMBDA (OUTFILE.FLG CHAPTER.NUMBERS IMPTR.FILES) (* mjs "12-Aug-86 09:54")
[LAMBDA (OUTFILE.FLG CHAPTER.NUMBERS IMPTR.FILES) (* ; "Edited 18-Jan-2026 23:26 by FGH")
(* mjs "12-Aug-86 09:54")
(* * CHAPTER.NUMBERS is either%: NIL, meaning to generate TOC of ALL data
 available; a single number, meaning to generate a chapter TOC for that chapter;
 or a list of numbers, meaning to generate a TOC for those chapters)
 available; a single number, meaning to generate a chapter TOC for that chapter;
 or a list of numbers, meaning to generate a TOC for those chapters)
(PROG* ([IMPTR.DATA (if IMPTR.FILES
then (PROG ((IMPTR.HASH (HASHARRAY 50))
(IMPTR.TOC.LIST NIL)
(IMPTR.NAME.LIST NIL))
(DECLARE (SPECVARS IMPTR.HASH IMPTR.TOC.LIST
IMPTR.NAME.LIST))
[for X in (MKLIST IMPTR.FILES)
do (printout T "Grabbing IMPTR file: " X T)
(IMPTR.TOC.LIST NIL)
(IMPTR.NAME.LIST NIL))
(DECLARE (SPECVARS IMPTR.HASH IMPTR.TOC.LIST IMPTR.NAME.LIST))
[for X in (MKLIST IMPTR.FILES)
do (printout T "Grabbing IMPTR file: " X T)
(* * the IMPTR.TYPES arg to GRAB.IMPTR is a list containing no possible types,
 so that no index entries will be saved.)
(* * the IMPTR.TYPES arg to GRAB.IMPTR is a list containing no possible types, so
 that no index entries will be saved.)
(GRAB.IMPTR X NIL '(XXXXXXXXX]
(RETURN (LIST IMPTR.HASH IMPTR.TOC.LIST IMPTR.NAME.LIST]
(GRAB.IMPTR X NIL '(XXXXXXXXX]
(RETURN (LIST IMPTR.HASH IMPTR.TOC.LIST IMPTR.NAME.LIST]
(IMPTR.HASH (if IMPTR.FILES
then (CAR IMPTR.DATA)
else IMPTR.HASH))
@@ -349,15 +347,14 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
else "TABLE OF CONTENTS"))
MAKE.IM.TOC.LIST)
(DECLARE (SPECVARS SINGLE.CHAP.TOC.FLG SUBSEC.COUNT.LIST MAKE.IM.TOC.TITLE
MAKE.IM.TOC.LIST IMPTR.HASH IMPTR.TOC.LIST IMPTR.NAME.LIST))
MAKE.IM.TOC.LIST IMPTR.HASH IMPTR.TOC.LIST IMPTR.NAME.LIST))
(SETQ MAKE.IM.TOC.LIST (if (NULL CHAPTER.NUMBERS)
then (APPEND IMPTR.TOC.LIST)
else (for X in IMPTR.TOC.LIST
bind (CHLST _ (MKLIST CHAPTER.NUMBERS))
when (MEMB (CAR (LAST (fetch (IM.INDEX.DATA
SUBSEC)
of X)))
CHLST) collect X)))
else (for X in IMPTR.TOC.LIST bind (CHLST _ (MKLIST
CHAPTER.NUMBERS
))
when (MEMB (fetch (IM.INDEX.DATA CHAPTER) of X)
CHLST) collect X)))
[SORT MAKE.IM.TOC.LIST (FUNCTION (LAMBDA (A B)
(LIST.ORDER (REVERSE (fetch (IM.INDEX.DATA SUBSEC)
of A))
@@ -379,16 +376,15 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
do
(SETQ TOC.LINE (CAR TOC.PTR))
(PROG ((SECTION.STRING "")
(SEC.LIST (REVERSE (fetch (IM.INDEX.DATA SUBSEC) of
TOC.LINE)))
(SEC.LIST (REVERSE (fetch (IM.INDEX.DATA SUBSEC) of TOC.LINE)))
(PAGE.LIST (REF.TO.PAGE TOC.LINE))
MAJOR.SECTION.FLG LINE.PARA LINE.INDENT)
(SETQ MAJOR.SECTION.FLG (EQLENGTH SEC.LIST 1))
[for X on SEC.LIST
do (SETQ SECTION.STRING (CONCAT SECTION.STRING (CAR X)
(if (CDR X)
then "."
else ""]
(if (CDR X)
then "."
else ""]
(SETQ LINE.INDENT (if MAJOR.SECTION.FLG
then 0
elseif (EQLENGTH SEC.LIST 2)
@@ -406,8 +402,7 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
then IM.SUBSEC.ONE.TITLE.FONT
else IM.SUBSEC.THREE.TITLE.FONT)
DUMP.CHARS SECTION.STRING DUMP.CHARS ". " DUMP.CHARS
[PROG ((SAV (fetch (IM.INDEX.DATA SAV) of TOC.LINE)
))
[PROG ((SAV (fetch (IM.INDEX.DATA SAV) of TOC.LINE)))
(if (NLISTP SAV)
then (SETQ SAV (CHCON SAV)))
(RETURN (CONS SAV (LAST SAV]
@@ -419,14 +414,13 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
1 NIL
(APPEND
(if [AND MAJOR.SECTION.FLG
(EQP (CAR SEC.LIST)
(CAR (REVERSE (fetch (IM.INDEX.DATA SUBSEC
)
of (CADR TOC.PTR]
then (* if this is a major heading, and
 there are subheadings, prevent a
 pagebreak here)
'(HEADINGKEEP ON)
(EQP (CAR SEC.LIST)
(CAR (REVERSE (fetch (IM.INDEX.DATA SUBSEC)
of (CADR TOC.PTR]
then (* if this is a major heading, and
 there are subheadings, prevent a
 pagebreak here)
'(HEADINGKEEP ON)
else NIL)
LINE.PARA]
OUTFILE.FLG NIL "Hardcopy of Table of Contents"])
@@ -985,7 +979,7 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
IM.INDEX.LEFTMARGIN POSTPARALEADING 0 PARALEADING 0 LINELEADING 0])
)
(RPAQQ IM.MANUAL.CHAPTERS
(RPAQQ IM.MANUAL.CHAPTERS
(((NIL iii iv v vi vii viii ix x xi xii xiii xiv xv)
ChapAck)
(1 ChapIntro)
@@ -1022,20 +1016,20 @@ Copyright (c) 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights res
(31 ChapEther ETHEROVERVIEW ETHERPUP ETHERNS ETHERINTROLEVELONE ETHERPUPLEVELONE
ETHERNSLEVELONE ETHEROTHERLEVELONE)))
(RPAQQ IM.MANUAL.VOLUMES ((I 1 2 3 4 5 6 7 8 9 10 11 12)
(II 13 14 15 16 17 18 19 20 21 22 23)
(III 24 25 26 27 28 29 30 31)))
(RPAQQ IM.MANUAL.VOLUMES
((I 1 2 3 4 5 6 7 8 9 10 11 12)
(II 13 14 15 16 17 18 19 20 21 22 23)
(III 24 25 26 27 28 29 30 31)))
(RPAQQ IM.MANUAL.DIRECTORY "{PELE:}<DOC>IRM>")
(FILESLOAD IMTEDIT FREEMENU)
(PUTPROPS IMTOOLS COPYRIGHT ("Xerox Corporation" 1985 1986 1987 1988 1991))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1285 53259 (ADD.IM.MENU 1295 . 1667) (COLLECT.MODIFIED.IM.CHAPTERS 1669 . 4256) (
DO.INDEX 4258 . 6023) (DO.MANUAL 6025 . 6709) (GRAB.IM.MANUAL.PTRS 6711 . 7127) (GRAB.IMPTR 7129 .
10872) (IM.COMMAND.MENU 10874 . 11304) (IM.TEDIT.SELECTION 11306 . 13009) (INIT.INDEX.VARS 13011 .
13223) (INSERT.CHARS.AROUND.SEL 13225 . 13634) (INTERPRET.IM.MENU.COMMAND 13636 . 14734) (
MAKE.IM.TITLE 14736 . 18929) (MAKE.IM.TOC 18931 . 27165) (NEWTO 27167 . 27736) (PRINT.INDEX.OBJECT
27738 . 45522) (PRINT.INDEX.SUBREFS 45524 . 49994) (PROCESS.IM.CHAPTERS 49996 . 52611) (REF.TO.PAGE
52613 . 52963) (REFS.TO.PAGES 52965 . 53257)) (53260 63626 (MAKE.IM.INDEX 53270 . 63624)))))
(FILEMAP (NIL (1161 52842 (ADD.IM.MENU 1171 . 1543) (COLLECT.MODIFIED.IM.CHAPTERS 1545 . 4132) (
DO.INDEX 4134 . 5899) (DO.MANUAL 5901 . 6585) (GRAB.IM.MANUAL.PTRS 6587 . 7003) (GRAB.IMPTR 7005 .
10748) (IM.COMMAND.MENU 10750 . 11180) (IM.TEDIT.SELECTION 11182 . 12885) (INIT.INDEX.VARS 12887 .
13099) (INSERT.CHARS.AROUND.SEL 13101 . 13510) (INTERPRET.IM.MENU.COMMAND 13512 . 14610) (
MAKE.IM.TITLE 14612 . 18805) (MAKE.IM.TOC 18807 . 26748) (NEWTO 26750 . 27319) (PRINT.INDEX.OBJECT
27321 . 45105) (PRINT.INDEX.SUBREFS 45107 . 49577) (PROCESS.IM.CHAPTERS 49579 . 52194) (REF.TO.PAGE
52196 . 52546) (REFS.TO.PAGES 52548 . 52840)) (52843 63209 (MAKE.IM.INDEX 52853 . 63207)))))
STOP

View File

@@ -1,22 +1,34 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "24-Jun-2025 00:36:10" {DSK}<home>frank>il>medley>doctools>NEWIRM.;13 4225
(FILECREATED " 5-Feb-2026 21:19:57" {DSK}<home>frank>il>medley>doctools>NEWIRM.;25 12193
:EDIT-BY "FGH"
:CHANGES-TO (VARS NEWIRMCOMS)
:CHANGES-TO (FNS IM.CHAP.CHAPTER IM.CHAP.BEFOREHARDCOPYFN IM.INDEX.UPDATE.TOC.NUMBERING
IM.CHAP.WHENINSERTEDFN TEDIT.SET.FOLIO.TEXT IM.INDEX.TOC.TEXT IRM-IMPTR
IRMANALYZE IRMHC IRMTOC)
(VARS NEWIRMCOMS IRMFILES)
:PREVIOUS-DATE "24-Jun-2025 00:28:20" {DSK}<home>frank>il>medley>doctools>NEWIRM.;11)
:PREVIOUS-DATE "24-Jun-2025 00:36:10" {DSK}<home>frank>il>medley>doctools>NEWIRM.;14)
(PRETTYCOMPRINT NEWIRMCOMS)
(RPAQQ NEWIRMCOMS ((INITVARS (DOCTOOLSDIR (CONCAT (MEDLEYDIR)
"doctools>")))
(FILES (FROM VALUEOF DOCTOOLSDIR)
IMTOOLS)
(FNS IRMTOC IRM-IMPTR IRMANALYZE IRMHC)
(VARS IRMFILES)))
(RPAQQ NEWIRMCOMS
((FILES PSEUDOHOSTS)
(P (PSEUDOHOST 'IRM (CONCAT MEDLEYDIR "docs/medley-irm")))
(INITVARS (DOCTOOLSDIR (CONCAT (MEDLEYDIR)
"doctools>")))
(FILES (FROM VALUEOF DOCTOOLSDIR)
IMTOOLS)
(FNS IM.CHAP.CHAPTER IRMTOC IRM-IMPTR IRMANALYZE IRMHC)
(FNS IM.INDEX.UPDATE.TOC.NUMBERING IM.INDEX.TOC.TEXT IM.CHAP.BEFOREHARDCOPYFN
IM.CHAP.WHENINSERTEDFN TEDIT.SET.FOLIO.TEXT)
(VARS IRMFILES)))
(FILESLOAD PSEUDOHOSTS)
(PSEUDOHOST 'IRM (CONCAT MEDLEYDIR "docs/medley-irm"))
(RPAQ? DOCTOOLSDIR (CONCAT (MEDLEYDIR)
"doctools>"))
@@ -25,60 +37,182 @@
IMTOOLS)
(DEFINEQ
(IM.CHAP.CHAPTER
[LAMBDA (TEXTSTREAM NEWVALUE) (* ; "Edited 5-Feb-2026 21:11 by FGH")
(* ;; "Find the IM.CHAP object in this TextStream and return the chapter value.")
(* ;; " If NEWVALUE is given then set the chapter value of the IM.CHAP object accordingly")
(SETQ TEXTSTREAM (TEXTSTREAM TEXTSTREAM))
(LET* [[CHAPOBJ (CAR (TEDIT.MAP.OBJECTS TEXTSTREAM [FUNCTION (LAMBDA (CH# OBJ FNARG)
(EQ 'IM.CHAP.OBJECT
(IMAGEOBJPROP OBJ
'IMAGECLASSNAME]
NIL
'OBJECT]
(CHAPTER (AND CHAPOBJ (NUMBERP (MKATOM (IMAGEOBJPROP CHAPOBJ 'OBJECTDATUM]
(AND (NUMBERP NEWVALUE)
(IMAGEOBJPROP CHAPOBJ 'OBJECTDATUM NEWVALUE))
CHAPTER])
(IRMTOC
[LAMBDA NIL
(TEDIT (MAKE.IM.TOC T NIL (DIRECTORY "*.IMPTR;"])
[LAMBDA NIL (* ; "Edited 18-Jan-2026 22:40 by FGH")
(TEDIT (MAKE.IM.TOC T NIL (for F in IRMFILES collect (CONCAT F ".IMPTR"])
(IRM-IMPTR
[LAMBDA NIL
[LAMBDA NIL (* ; "Edited 18-Jan-2026 22:57 by FGH")
(SETQ IMPTR.TOC.LIST NIL)
(for F in (DIRECTORY "*.IMPTR;") collect (GRAB.IMPTR F))
(bind FF for F in IRMFILES collect (SETQ FF (CONCAT F ".IMPTR"))
(GRAB.IMPTR FF))
IMPTR.TOC.LIST])
(IRMANALYZE
[LAMBDA NIL
[LAMBDA NIL (* ; "Edited 18-Jan-2026 23:01 by FGH")
(LET* ((TS (TEXTOBJ (WHICHW)))
(OBJS (TEDIT.MAP.OBJECTS TS (FUNCTION TRUE)
NIL T)))
(for OBJ in OBJS collect (fetch DISPLAYFN of (fetch IMAGEOBJFNS of (CADR OBJ])
(for OBJ in OBJS collect (fetch IMAGECLASSNAME of (fetch IMAGEOBJFNS of (CADR OBJ])
(IRMHC
[LAMBDA NIL
(for F in (DIRECTORY "*.TEDIT;") do (TEDIT.FORMAT.HARDCOPY F (PACKFILENAME.STRING 'VERSION NIL
'EXTENSION NIL 'BODY F)
T NIL NIL NIL 'PDF])
[LAMBDA NIL (* ; "Edited 18-Jan-2026 23:00 by FGH")
(bind FF for F in IRMFILES do (SETQ FF (CONCAT F ".TEDIT"))
(TEDIT.FORMAT.HARDCOPY FF (PACKFILENAME.STRING 'VERSION NIL
'EXTENSION NIL 'BODY FF)
T NIL NIL NIL 'PDF])
)
(DEFINEQ
(IM.INDEX.UPDATE.TOC.NUMBERING
[LAMBDA (TEXTSTREAM CHAPTER) (* ; "Edited 5-Feb-2026 19:46 by FGH")
(* ; "Edited 3-Feb-2026 23:48 by FGH")
(* ; "Edited 3-Feb-2026 21:24 by FGH")
(* ; "Edited 1-Feb-2026 22:49 by FGH")
(SETQ TEXTSTREAM (TEXTSTREAM TEXTSTREAM))
(OR (NUMBERP CHAPTER)
(SETQ CHAPTER (OR (IM.CHAP.CHAPTER TEXTSTREAM)
1)))
(LET ((IM.TOC.OBJECTS (TEDIT.MAP.OBJECTS
TEXTSTREAM
[FUNCTION (LAMBDA (CH# OBJ)
(if [AND (EQ 'IM.INDEX.OBJECT (IMAGEOBJPROP OBJ
'IMAGECLASSNAME))
(EQ 'TOC (CAR (fetch (IM.INDEX.DATA TYPE)
of (fetch (IMAGEOBJ OBJECTDATUM)
of OBJ]
then OBJ
else NIL]
NIL T))
(LEVEL.CTRS (LIST 0)))
[for OBJ.DESC in IM.TOC.OBJECTS
do (LET* ((OBJ (CADR OBJ.DESC))
(OBJ.CH# (CAR OBJ.DESC))
(OBJ.DATA (fetch (IMAGEOBJ OBJECTDATUM) of OBJ))
(OBJ.LEVEL (fetch (IM.INDEX.DATA LEVEL) of OBJ.DATA)))
(if (IGREATERP OBJ.LEVEL (LENGTH LEVEL.CTRS))
then (for I from (ADD1 (LENGTH LEVEL.CTRS)) to OBJ.LEVEL
do (NCONC1 LEVEL.CTRS 0)))
[for CTRS on LEVEL.CTRS as LVL from 1
do (if (EQ LVL 1)
then (RPLACA CTRS CHAPTER)
elseif (IGREATERP LVL OBJ.LEVEL)
then (RPLACA CTRS 0)
elseif (EQ LVL OBJ.LEVEL)
then (RPLACA CTRS (ADD1 (CAR CTRS]
(replace (IM.INDEX.DATA SUBSEC) of OBJ.DATA
with (for CTR in LEVEL.CTRS as I from 1 to OBJ.LEVEL
do (PUSH $$VAL CTR)))
[replace (IM.INDEX.DATA NAME) of OBJ.DATA
with (CONCATLIST (for CTR in LEVEL.CTRS as LVL from 1 to OBJ.LEVEL
do (PUSH $$VAL CTR)
(if (ILESSP LVL OBJ.LEVEL)
then (PUSH $$VAL "."))
finally (RETURN (DREVERSE $$VAL]
(replace (IM.INDEX.DATA TEXT) of OBJ.DATA with (IM.INDEX.GET.LINE TEXTSTREAM
OBJ.CH#]
(for OBJ.DESC in IM.TOC.OBJECTS collect (CADR OBJ.DESC])
(IM.INDEX.TOC.TEXT
[LAMBDA (TEXTSTREAM CH#) (* ; "Edited 3-Feb-2026 21:29 by FGH")
(LET ((CTR CH#))
(SETFILEPTR TEXTSTREAM CTR)
(CONCATLIST (bind CHX for I from 1 to 1000 collect (SETQ CHX (BIN TEXTSTREAM))
(if (AND (NUMBERP CHX)
(ILEQ CHX 13))
then (GO $$OUT)
elseif (NOT (NUMBERP CHX))
then 'X
else (CHARACTER CHX])
(IM.CHAP.BEFOREHARDCOPYFN
[LAMBDA (TEXTSTREAM) (* ; "Edited 5-Feb-2026 19:46 by FGH")
(* ;; "To be called as the BEFOREHARDCOPYFN on an IRM Textstream")
(* ;; "Does a couple of things:")
(* ;; " 1. Find the IM.CHAP imageobject; extract the chapter number from it; set the chapter number as the page number pre-text on")
(* ;; " all page types. There should be only one IM.CHAP object per document. It there are more, it will use the first.")
(* ;; " 2. Hang the chapter number on the TEXTSTREAM's INDEXING-CHAPTER textprop")
(* ;; " 3. Update the %"numbering%" on all of the IM.TOC image objects in the document")
(SETQ TEXTSTREAM (TEXTSTREAM TEXTSTREAM))
(LET ((CHAPTER (IM.CHAP.CHAPTER TEXTSTREAM)))
(if CHAPTER
then (TEDIT.SET.FOLIO.TEXT TEXTSTREAM (CONCAT CHAPTER "-")
"")
(TEXTPROP TEXTSTREAM 'INDEXING-CHAPTER CHAPTER)
(IM.INDEX.UPDATE.TOC.NUMBERING TEXTSTREAM CHAPTER])
(IM.CHAP.WHENINSERTEDFN
[LAMBDA (OBJ FROM.TEXTSTREAM TO.TEXTSTREAM) (* ; "Edited 5-Feb-2026 18:50 by FGH")
(\TEDIT.TEXTPROP (TEXTOBJ TO.TEXTSTREAM)
'BEFOREHARDCOPYFN T (FUNCTION IM.CHAP.BEFOREHARDCOPYFN])
(TEDIT.SET.FOLIO.TEXT
[LAMBDA (TEXTSTREAM PRETEXT POSTTEXT) (* ; "Edited 5-Feb-2026 14:41 by FGH")
(if (NOT POSTTEXT)
then (SETQ POSTTEXT ""))
(SETQ TEXTSTREAM (TEXTSTREAM TEXTSTREAM))
(LET [(TOP.PAGEREGION (TEXTPROP TEXTSTREAM 'PAGEFORMAT))
(PROCESS.PAGEREGION (FUNCTION (LAMBDA (PAGEREGION PROCESS.PAGEREGION)
(LET* ((REGIONLOCALINFO (fetch (PAGEREGION REGIONLOCALINFO)
of PAGEREGION))
(FOLIOINFO (LISTGET REGIONLOCALINFO 'FOLIOINFO))
(FORMATINFO (LISTGET REGIONLOCALINFO 'FORMATINFO))
(REGIONSUBBOXES (fetch (PAGEREGION REGIONSUBBOXES)
of PAGEREGION)))
(BLOCK)
(if FOLIOINFO
then (RPLACA (CDR FOLIOINFO)
PRETEXT)
(RPLACA (CDDR FOLIOINFO)
POSTTEXT))
(if FORMATINFO
then (RPLACA (CDR FORMATINFO)
PRETEXT)
(RPLACA (CDDR FORMATINFO)
POSTTEXT))
(for SUB.PAGEREGION in REGIONSUBBOXES
do (APPLY* PROCESS.PAGEREGION SUB.PAGEREGION
PROCESS.PAGEREGION]
(APPLY* PROCESS.PAGEREGION TOP.PAGEREGION PROCESS.PAGEREGION])
)
(RPAQQ IRMFILES ("{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>01-INTRO.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>02-LITATOM.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>03-LISTS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>04-STRINGS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>05-ARRAY.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>06-HASHARRAYS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>07-NUMBERS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>08-RECORDPACKAGE.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>09-CONDITIONALS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>10-FUNC-DEF.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>11-VAR-BINDINGS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>12-MISC.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>13-EXECUTIVE.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>14-ERRORS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>15-BREAKING.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>16-SEDIT.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>17-FILEPACKAGE.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>18-COMPILER.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>19-DWIM.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>20-CLISP.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>21-PERFORMANCE.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>22-PROCESSES.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>23-STREAMS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>24-IO.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>25-USERIO-PACKAGES.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>26-GRAPHICS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>27-WINDOWS.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>28-HARDCOPY.TEDIT;1"
"{DSK}<HOME>FRANK>IL>MEDLEY>DOCS>MEDLEY-IRM>29-TERMINAL.TEDIT;1"))
(RPAQQ IRMFILES ("{IRM}01-INTRO" "{IRM}02-LITATOM" "{IRM}03-LISTS" "{IRM}04-STRINGS" "{IRM}05-ARRAY"
"{IRM}06-HASHARRAYS" "{IRM}07-NUMBERS" "{IRM}08-RECORDPACKAGE"
"{IRM}09-CONDITIONALS" "{IRM}10-FUNC-DEF" "{IRM}11-VAR-BINDINGS"
"{IRM}12-MISC" "{IRM}13-EXECUTIVE" "{IRM}14-ERRORS" "{IRM}15-BREAKING"
"{IRM}16-SEDIT" "{IRM}17-FILEPACKAGE" "{IRM}18-COMPILER" "{IRM}19-DWIM"
"{IRM}20-CLISP" "{IRM}21-PERFORMANCE" "{IRM}22-PROCESSES" "{IRM}23-STREAMS"
"{IRM}24-IO" "{IRM}25-USERIO-PACKAGES" "{IRM}26-GRAPHICS" "{IRM}27-WINDOWS"
"{IRM}28-HARDCOPY" "{IRM}29-TERMINAL"))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (810 1627 (IRMTOC 820 . 899) (IRM-IMPTR 901 . 1053) (IRMANALYZE 1055 . 1324) (IRMHC 1326
. 1625)))))
(FILEMAP (NIL (1347 3713 (IM.CHAP.CHAPTER 1357 . 2364) (IRMTOC 2366 . 2576) (IRM-IMPTR 2578 . 2891) (
IRMANALYZE 2893 . 3262) (IRMHC 3264 . 3711)) (3714 11434 (IM.INDEX.UPDATE.TOC.NUMBERING 3724 . 7129) (
IM.INDEX.TOC.TEXT 7131 . 7928) (IM.CHAP.BEFOREHARDCOPYFN 7930 . 9039) (IM.CHAP.WHENINSERTEDFN 9041 .
9290) (TEDIT.SET.FOLIO.TEXT 9292 . 11432)))))
STOP