1
0
mirror of synced 2026-03-15 06:44:17 +00:00

Compare commits

..

15 Commits

Author SHA1 Message Date
Larry Masinter
322b2e0fbe DFV gets FNS and/or FUNCTIONS, depending on what definitions exist (#2530)
If both exist, it brings up 2 Sedit windows.

The relative version numbers are currently mapped to Medley absolute
version numbers. It would be nice to extend VERSIONDEFS with a function
(say GEDV) that maps the relative version numbers into the definitions
on git-file versions, by looking at the history. So (GEDV 'FOO 'RECORD
-3) would find the file for FOO's record declaration from WHEREIS, and
get the definition from the version 3 commits back. But GITFNS doesn't
currently have a primitive for fetching and interpreting history.
2026-03-09 23:07:30 -07:00
rmkaplan
a24a4dffc2 READ-READER-ENVIRONMENT can take a file name in addition to an open stream (#2531) 2026-03-09 12:31:01 -07:00
rmkaplan
95e08680b8 \CORE.DIRECTORYNAMEP returns T for the {CORE} (no directory) case (#2522) 2026-03-09 12:15:33 -07:00
rmkaplan
7a7fca0bcf Add lispusers/CONVERT-TO-UTF8 (#2518)
* Add lispusers/CONVERT-TO-UTF8
* FILETYPE with no DFASL defaults to :FAKE-COMPILE-FILE
2026-03-09 12:15:14 -07:00
Matt Heffron
9e4d37efd7 Most of the --option uses were incorrectly converted when making loadup.1 from loadup.md. (#2528)
Most of the --option uses were incorrectly converted to an en-dash instead of two hyphens when making loadup.1 from loadup.md.
The en-dash didn't display correctly in the shell, typically as u with ^.
Edited loadup.md, and regenerated the other changed files using publish.sh
2026-03-09 12:14:19 -07:00
rmkaplan
b8c0c594a9 DFV gets FNS and/or FNS, depending on what definitions exist 2026-03-08 09:26:18 -07:00
rmkaplan
d9f1a78f47 GITFNS remembers user's last branch number in a {LI} file (#2526) 2026-03-07 12:56:21 -08:00
rmkaplan
ab4eb3d52d Remove UNICODE file reference from Tedit (#2527) 2026-03-04 08:11:52 -08:00
rmkaplan
0f470b9753 Rmk161 loadup works with utf 8 source files (#2512)
* New starter.sysout contains the UTF-8 external format
* Init.sysout is created with the UTF-8 external format
* Files with non-ascii characters and some other files converted to UTF-8, for basic testing
* Environment arg of WITH-READER-ENVIRONMENT can be a stream
* Compiler functions now respect the external format as copied from the source file
* Colon is the package delimiter in DEFINE-FILE-INFO expressions
* UNICODE file is deprecated in favor of UNICODE-FORMATS and UNICODE-TABLES
2026-03-02 11:56:11 -08:00
Larry Masinter
b1bdd90338 remove 'obsolete' folder from repo -- move to separate repo (#2503) 2026-03-02 11:49:31 -08:00
rmkaplan
1569a27209 \FONT.CHECKARGS extracts the right component if the font of a stream family is a fontclass (#2509) 2026-02-24 10:06:24 -08:00
rmkaplan
1ff475a42c Clarify 0-origin indexing for piece NTHCHARCODE operations (#2499)
* Clarify 0-origin indexing for piece NTHCHARCODE operations
* Change the name of the Tedit externalformat from :TEXTSTREAM to :TEDIT
2026-02-23 12:05:59 -08:00
rmkaplan
7904f9dd86 Better initial window size for OUTPUT TEDIT masterscope queries (#2501)
* Better initial window size for OUTPUT TEDIT masterscope queries: Creates the output stream, then measures the lines
2026-02-23 12:05:04 -08:00
rmkaplan
93a04227d8 Rmk158 Remake files to convert the 247Q package-delimiter in DEFINE-FILE-INFO to 30Q (#2506)
* Remake files to convert the 247Q package-delimiter in DEFINE-FILE-INFO expressions to 30Q

* Remake TRANSOR after removing HIST command

* Remake TRANSOR-LOADTRAN after changing the filecoms variable
2026-02-23 12:04:11 -08:00
rmkaplan
cc0a819cd5 MCCS coding for UNIX-GETENV, fix MTOUTF8STRING (#2474)
* MCCS translations for strings passed to/from UNIX-GETENV and other system interfaces.
* INTERPRET.REM.CM assumes system external format is UTF-8.  ISO8859/1 external format is defined in MCCS as a dummy for UTF-8 until UNICODE is loaded
* Add string translation interface to EXTERNALFORMAT datatype, 
* Set the external format of the default reader environment to *DEFAULT-EXTERNALFORMAT* = :MCCS
* Add external format :THROUGH16 for 16 bit codes, used by linebuffer
2026-02-16 12:06:09 -08:00
1034 changed files with 13061 additions and 105713 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "26-Nov-2025 12:30:08" {DSK}<Users>larry>il>MEDLEY>GREETFILES>APPS-INIT.;2 23361
(FILECREATED " 1-Feb-2026 13:41:02" {WMEDLEY}<greetfiles>APPS-INIT.;11 22926
:EDIT-BY "lmm"
:EDIT-BY rmk
:CHANGES-TO (FNS Apps.CreateButtons)
:CHANGES-TO (FNS XCL-USER::EXEC¬INTERLISP)
:PREVIOUS-DATE "25-Feb-2024 13:56:23" {DSK}<Users>larry>il>MEDLEY>GREETFILES>APPS-INIT.;1)
:PREVIOUS-DATE " 1-Feb-2026 07:58:14" {WMEDLEY}<greetfiles>APPS-INIT.;9)
(PRETTYCOMPRINT APPS-INITCOMS)
@@ -19,7 +19,7 @@
(Apps.RoomsActivated NIL))
(FNS Apps.InitNotecards Apps.SetUpNOTECARDSDIRECTORIES Apps.DoInit Apps.CreateButtons
Apps.CreateLabel Apps.ActivateCLOS Apps.ActivateRooms Apps.ShowDoc
XCL-USER::EXEC_INTERLISP Apps.AroundExitFn)
XCL-USER::EXEC¬INTERLISP Apps.AroundExitFn)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (Apps.DoInit)))
(DECLARE%: FIRST DONTEVAL@LOAD DOCOPY (P (BKSYSBUF " "])
@@ -35,52 +35,53 @@
(RPAQ? Apps.RoomsActivated NIL)
(DEFINEQ
(Apps.InitNotecards
(Apps.InitNotecards
[LAMBDA (DoNotRefreshButtons)
(DECLARE (GLOBALVARS BackgroundMenuCommands BackgroundMenu))
(* ; "Edited 19-Jan-2023 11:57 by FGH")
(* ; "Edited 7-Dec-2022 11:14 by FGH")
(* ; "Edited 12-Nov-2022 14:41 by FGH")
(* ; "Edited 11-Sep-2022 01:09 by fgh")
(* ; "Edited 7-Feb-2022 20:22 by tp7")
(DECLARE (GLOBALVARS BackgroundMenuCommands BackgroundMenu))
(* ; "Edited 1-Feb-2026 00:00 by rmk")
(* ; "Edited 19-Jan-2023 11:57 by FGH")
(* ; "Edited 7-Dec-2022 11:14 by FGH")
(* ; "Edited 12-Nov-2022 14:41 by FGH")
(* ; "Edited 11-Sep-2022 01:09 by fgh")
(* ; "Edited 7-Feb-2022 20:22 by tp7")
(LET* [[SRCDIR (OR (UNIX-GETENV 'NOTEFILESSRC)
(AND (UNIX-GETENV 'NC_INSTALLDIR)
(CONCAT (UNIX-GETENV 'NC_INSTALLDIR)
(AND (UNIX-GETENV 'NC¬INSTALLDIR)
(CONCAT (UNIX-GETENV 'NC¬INSTALLDIR)
"/notefiles"))
(LET ((SUBDIR "notecards/notefiles"))
(for DIR in (LIST (CONCAT (MEDLEYDIR)
(for DIR in (LIST (CONCAT (MEDLEYDIR)
SUBDIR)
(CONCAT (MEDLEYDIR)
"../" SUBDIR)
(CONCAT (MEDLEYDIR)
"../../" SUBDIR)) thereis (DIRECTORYNAME DIR]
"../../" SUBDIR)) thereis (DIRECTORYNAME DIR]
(DESTDIR (OR (UNIX-GETENV 'NOTEFILESDIR)
(AND (UNIX-GETENV 'MEDLEY_USERDIR)
(CONCAT (UNIX-GETENV 'MEDLEY_USERDIR)
(AND (UNIX-GETENV 'MEDLEY¬USERDIR)
(CONCAT (UNIX-GETENV 'MEDLEY¬USERDIR)
"/notefiles"))
(CONCAT LOGINDIR "notefiles"]
[if (AND (NOT (DIRECTORYNAME DESTDIR))
[if (AND (NOT (DIRECTORYNAME DESTDIR))
(DIRECTORYNAME SRCDIR))
then (for NF in (DIRECTORY (CONCAT SRCDIR "/*"))
do (COPYFILE NF (PACKFILENAME 'HOST "DSK" 'DIRECTORY DESTDIR 'NAME
then (for NF in (DIRECTORY (CONCAT SRCDIR "/*"))
do (COPYFILE NF (PACKFILENAME 'HOST "DSK" 'DIRECTORY DESTDIR 'NAME
(FILENAMEFIELD NF 'NAME)
'EXTENSION
(FILENAMEFIELD NF 'EXTENSION)
'VERSION
(FILENAMEFIELD NF 'VERSION]
(LET* ((PW-REGION (WINDOWPROP PROMPTWINDOW 'REGION))
(LEFT (IPLUS (fetch (REGION RIGHT) of PW-REGION)
(LEFT (IPLUS (fetch (REGION RIGHT) of PW-REGION)
20))
(BOTTOM (fetch (REGION BOTTOM) of PW-REGION)))
(NC.BringUpNoteCardsIcon (create POSITION
(BOTTOM (fetch (REGION BOTTOM) of PW-REGION)))
(NC.BringUpNoteCardsIcon (create POSITION
XCOORD _ LEFT
YCOORD _ BOTTOM)))
(NC.FileBrowserMenu NC.NoteCardsIconWindow (PACKFILENAME 'HOST "DSK" 'DIRECTORY DESTDIR
'NAME "*" 'EXTENSION "notefile")
(CREATEREGION 50 (IDIFFERENCE SCREENHEIGHT 700)
550 220))
(if (NULL (SASSOC 'NoteCards BackgroundMenuCommands))
then (PROGN [SETQ BackgroundMenuCommands (APPEND BackgroundMenuCommands
(if (NULL (SASSOC 'NoteCards BackgroundMenuCommands))
then (PROGN [SETQ BackgroundMenuCommands (APPEND BackgroundMenuCommands
(LIST '(NoteCards (
NC.BringUpNoteCardsIcon
)
@@ -89,59 +90,61 @@
]
(SETQ BackgroundMenu NIL)))
(SETQ Apps.NotecardsActivated T)
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(Apps.SetUpNOTECARDSDIRECTORIES
(Apps.SetUpNOTECARDSDIRECTORIES
[LAMBDA NIL
(* ;; "Find the location of the Notecards directory and call NC.SetUpNOTECARDSDIRECTORIES.")
(* ;; "Find the location of the Notecards directory and call NC.SetUpNOTECARDSDIRECTORIES.")
(* ;; " This is needed to make sure that lazy loading of Notecard types works.")
(* ;; " This is needed to make sure that lazy loading of Notecard types works.")
(LET* [(LOC1 (CONCAT MEDLEYDIR "notecards>"))
(LOC2 (CONCAT MEDLEYDIR "..>notecards>"))
(LOC3 (CONCAT MEDLEYDIR "..>..>notecards>"))
(NCDIR (for LOC in (LIST LOC1 LOC2 LOC3) thereis (OR (INFILEP (CONCAT LOC
(NCDIR (for LOC in (LIST LOC1 LOC2 LOC3) thereis (OR (INFILEP (CONCAT LOC
"system>NOTECARDS"))
(INFILEP (CONCAT LOC
"system>NOTECARDS.LCOM"
]
(if NCDIR
then [SETQ NCDIR (OR (INFILEP (CONCAT NCDIR "system>NOTECARDS"))
(if NCDIR
then [SETQ NCDIR (OR (INFILEP (CONCAT NCDIR "system>NOTECARDS"))
(INFILEP (CONCAT NCDIR "system>NOTECARDS.LCOM"]
(SETQ NCDIR (SUBSTRING NCDIR 1 (IDIFFERENCE (STRPOS "system>NOTECARDS" NCDIR)
1)))
(NC.SetUpNOTECARDSDIRECTORIES NCDIR)
T
else (PRIN1 "Warning: Notecards directory could not be found." T)
else (PRIN1 "Warning: Notecards directory could not be found." T)
(PRIN1 "Hence, NOTECARDSDIRECTORIES is probably not set correctly" T)
(PRIN1 "and Notecards will not work properly." T)
NIL])
(Apps.DoInit
(Apps.DoInit
[LAMBDA NIL
(* ;; "Edited 19-Jan-2023 12:43 by FGH")
(* ;; "Edited 31-Jan-2026 23:57 by rmk")
(* ;; "Edited 17-Jan-2023 23:23 by FGH")
(* ;; "Edited 19-Jan-2023 12:43 by FGH")
(* ;; "Edited 7-Dec-2022 11:14 by FGH")
(* ;; "Edited 17-Jan-2023 23:23 by FGH")
(* ;; "Edited 12-Nov-2022 13:57 by FGH")
(* ;; "Edited 7-Dec-2022 11:14 by FGH")
(* ;; "Edited 12-Oct-2022 20:23 by fgh")
(* ;; "Edited 12-Nov-2022 13:57 by FGH")
(* ;; "Edited 6-Sep-2022 17:22 by fgh")
(* ;; "Edited 12-Oct-2022 20:23 by fgh")
(* ;; "Edited 4-Sep-2022 16:44 by larry")
(* ;; "Edited 6-Sep-2022 17:22 by fgh")
(* ;; "Edited 18-Mar-2022 18:53 by fgh")
(* ;; "Edited 4-Sep-2022 16:44 by larry")
(* ;; "Edited 17-Dec-2021 22:05 by fgh")
(* ;; "Edited 18-Mar-2022 18:53 by fgh")
(* ;; "Edited 17-Dec-2021 22:05 by fgh")
(PROGN
(* ;; " Adjust windows so that the exec window and the prompt window don't overlap")
(* ;; " Adjust windows so that the exec window and the prompt window don't overlap")
[MAPC (OPENWINDOWS)
(FUNCTION (LAMBDA (W)
@@ -152,90 +155,92 @@
(IDIFFERENCE SCREENHEIGHT 18)))
((STREQUAL (WINDOWPROP W 'TITLE)
"Prompt Window")
(PROGN (MOVEW W (create POSITION
(PROGN (MOVEW W (create POSITION
XCOORD _ 50
YCOORD _ (IDIFFERENCE SCREENHEIGHT 120)))
(CLEARW W)))
((STREQUAL (WINDOWPROP W 'TITLE)
"Exec (XCL)")
(PROGN (WINDOWPROP W 'TITLE "Exec (INTERLISP)")
(MOVEW W (create POSITION
(MOVEW W (create POSITION
XCOORD _ 50
YCOORD _ (IDIFFERENCE SCREENHEIGHT 460]
(* ;; " Set up INITIALSLST based on information passed in from the Linux environment")
(* ;; " Set up INITIALSLST based on information passed in from the Linux environment")
[SETQ INITIALSLST (LIST (LIST USERNAME (UNIX-GETENV 'MEDLEY_FIRSTNAME)
(UNIX-GETENV 'MEDLEY_INITIALS]
[SETQ INITIALSLST (LIST (LIST USERNAME (UNIX-GETENV 'MEDLEY¬FIRSTNAME)
(UNIX-GETENV 'MEDLEY¬INITIALS]
(LOAD '{DSK}/usr/local/interlisp/medley/lispusers/HELPSYS.LCOM T)
(* ;; "change to interlisp exec if required")
(* ;; "change to interlisp exec if required")
(COND
((OR (STRING-EQUAL (UNIX-GETENV 'MEDLEY_EXEC)
((OR (STRING-EQUAL (UNIX-GETENV 'MEDLEY¬EXEC)
"inter")
(STRING-EQUAL (UNIX-GETENV 'NCO)
"true"))
(BKSYSBUF "(EXEC_INTERLISP)")))
(BKSYSBUF "(EXEC¬INTERLISP)")))
(* ;; "Always Activate CLOS")
(* ;; "Always Activate CLOS")
(Apps.ActivateCLOS)
(Apps.ActivateCLOS)
(* ;; " activate Notecards if requested")
(* ;; " activate Notecards if requested")
(COND
((STRING-EQUAL (UNIX-GETENV 'RUN_NOTECARDS)
((STRING-EQUAL (UNIX-GETENV 'RUN¬NOTECARDS)
"true")
(Apps.InitNotecards T)))
(Apps.InitNotecards T)))
(* ;; " activate Rooms if requested")
(* ;; " activate Rooms if requested")
(COND
((STRING-EQUAL (UNIX-GETENV 'RUN_ROOMS)
((STRING-EQUAL (UNIX-GETENV 'RUN¬ROOMS)
"true")
(Apps.ActivateRooms T)))
(Apps.ActivateRooms T)))
(* ;; " create the Documentation and ROOMS, Notecards Activation Buttons, if needed")
(* ;; " create the Documentation and ROOMS, Notecards Activation Buttons, if needed")
(Apps.CreateButtons T)
(Apps.CreateButtons T)
(* ;; " Make sure Notecards doesn't try to load its HASH file in NC.PostGreet")
(* ;; " Make sure Notecards doesn't try to load its HASH file in NC.PostGreet")
(SETTOPVAL '\NC.SourceAccessFlg NIL)
(* ;; "Setup NOTECARDSDIRECTORIES.")
(* ;; "Setup NOTECARDSDIRECTORIES.")
(Apps.SetUpNOTECARDSDIRECTORIES)
(Apps.SetUpNOTECARDSDIRECTORIES)
(* ;; "Add AROUNDEXITFN to ensure NOTECARDSDIRECTORIES get reset after LOGOUT, etc.")
(* ;; "Add AROUNDEXITFN to ensure NOTECARDSDIRECTORIES get reset after LOGOUT, etc.")
(SETQ AROUNDEXITFNS (LSUBST '(MEDLEY-INIT-VARS Apps.AroundExitFn)
'MEDLEY-INIT-VARS AROUNDEXITFNS])
(Apps.CreateButtons
[LAMBDA (DoDocsToo) (* ; "Edited 26-Nov-2025 12:29 by lmm")
(* ; "Edited 13-Dec-2022 12:51 by frank")
(* ; "Edited 7-Dec-2022 11:28 by FGH")
(* ; "Edited 5-Dec-2022 17:31 by FGH")
(* ; "Edited 12-Nov-2022 14:52 by FGH")
(Apps.CreateButtons
[LAMBDA (DoDocsToo) (* ; "Edited 31-Jan-2026 23:59 by rmk")
(* ; "Edited 26-Nov-2025 12:29 by lmm")
(* ; "Edited 13-Dec-2022 12:51 by frank")
(* ; "Edited 7-Dec-2022 11:28 by FGH")
(* ; "Edited 5-Dec-2022 17:31 by FGH")
(* ; "Edited 12-Nov-2022 14:52 by FGH")
(* ;; " Create buttons for Documentation and to activate Rooms, Notecards ")
(* ;; " Create buttons for Documentation and to activate Rooms, Notecards ")
(* ;; "Note: due to bug in DELETE-BUTTON need to create Doc buttons last. This will make sure that the NoteCards/Rooms buttons get properl deleted when they are activated. But the Doc buttons will not necessariy get deleted properly (but then there is never a need for them to be deleted).")
(* ;; "Note: due to bug in DELETE-BUTTON need to create Doc buttons last. This will make sure that the NoteCards/Rooms buttons get properl deleted when they are activated. But the Doc buttons will not necessariy get deleted properly (but then there is never a need for them to be deleted).")
(LET* ((FEATURES (LIST (LIST Apps.NotecardsActivated '(Apps.InitNotecards)
(LET* ((FEATURES (LIST (LIST Apps.NotecardsActivated '(Apps.InitNotecards)
"NOTECARDS")
(LIST Apps.RoomsActivated '(Apps.ActivateRooms)
(LIST Apps.RoomsActivated '(Apps.ActivateRooms)
"ROOMS")))
(FEATURES-LABELS (for FEATURE in FEATURES collect (CADDR FEATURE)))
(FEATURES-LABELS (for FEATURE in FEATURES collect (CADDR FEATURE)))
(DOCS (LIST (LIST "https://interlisp.org/docs/medley/orientation/" "BASICS")
(LIST "https://primer.interlisp.org/" "PRIMER")
(LIST "https://interlisp.org/documentation/IRM.pdf" "MANUAL")
(LIST "https://interlisp.org/documentation/notecards_user_guide_v1.2.pdf"
(LIST "https://interlisp.org/documentation/notecards¬user-guide¬v1.2.pdf"
"NOTECARDS")
(LIST "https://interlisp.org/documentation/ROOMSTECHDESC.pdf" "ROOMS")))
(DOCS-LABELS (for DOC in DOCS collect (CADR DOC)))
(DOCS-LABELS (for DOC in DOCS collect (CADR DOC)))
(RIGHTMARGINISH 140)
(SECTION1YPOS 225)
(YPOSDELTA 55)
@@ -249,31 +254,31 @@
(IWS NIL)
(BUTTONS NIL))
(* ;; "First remove/re-create feature buttons")
(* ;; "First remove/re-create feature buttons")
(for W in (OPENWINDOWS) when (MEMBER (WINDOWPROP W 'ICONLABEL)
(LIST "ACTIVATE" "FEATURES")) do (CLOSEW W))
(for B in *ALL-BUTTONS* when (AND (EQ (WINDOWPROP B 'Apps.BUTTON)
(for W in (OPENWINDOWS) when (MEMBER (WINDOWPROP W 'ICONLABEL)
(LIST "ACTIVATE" "FEATURES")) do (CLOSEW W))
(for B in *ALL-BUTTONS* when (AND (EQ (WINDOWPROP B 'Apps.BUTTON)
'FEATURE)
(MEMBER (BUTTON-LABEL B)
FEATURES-LABELS)) do (DELETE-BUTTON B))
[if FEATURES-REQUIREDP
then [SETQ IWS (LIST (Apps.CreateLabel "ACTIVATE" (IDIFFERENCE SCREENWIDTH
FEATURES-LABELS)) do (DELETE-BUTTON B))
[if FEATURES-REQUIREDP
then [SETQ IWS (LIST (Apps.CreateLabel "ACTIVATE" (IDIFFERENCE SCREENWIDTH
(IDIFFERENCE RIGHTMARGINISH 50
))
(IDIFFERENCE SCREENHEIGHT (IDIFFERENCE SECTION2YPOS 20)))
(Apps.CreateLabel "FEATURES" (IDIFFERENCE SCREENWIDTH
(Apps.CreateLabel "FEATURES" (IDIFFERENCE SCREENWIDTH
(IDIFFERENCE RIGHTMARGINISH 50
))
(IDIFFERENCE SCREENHEIGHT SECTION2YPOS]
(SETQ BUTTONS (for FEATURE in FEATURES
collect (OR (CAR FEATURE)
(SETQ BUTTONS (for FEATURE in FEATURES
collect (OR (CAR FEATURE)
(LET (B)
(SETQ BUTTONY-FEATURES (IPLUS BUTTONY-FEATURES
YPOSDELTA))
[SETQ B (CREATE-BUTTON (CADR FEATURE)
(CADDR FEATURE)
(create POSITION
(create POSITION
XCOORD _ (IDIFFERENCE
SCREENWIDTH
RIGHTMARGINISH)
@@ -284,30 +289,30 @@
(WINDOWPROP B 'Apps.BUTTON 'FEATURE)
B]
(* ;; "Then if needed, remove/recreate documentation buttons")
(* ;; "Then if needed, remove/recreate documentation buttons")
(if DoDocsToo
then (for W in (OPENWINDOWS) when (MEMBER (WINDOWPROP W 'ICONLABEL)
(if DoDocsToo
then (for W in (OPENWINDOWS) when (MEMBER (WINDOWPROP W 'ICONLABEL)
(LIST "DOCUMENTATION"))
do (CLOSEW W))
(for B in *ALL-BUTTONS* when (AND (EQ (WINDOWPROP B 'Apps.BUTTON)
do (CLOSEW W))
(for B in *ALL-BUTTONS* when (AND (EQ (WINDOWPROP B 'Apps.BUTTON)
'DOC)
(MEMBER (BUTTON-LABEL B)
DOCS-LABELS)) do (DELETE-BUTTON B))
(SETQ IWS (CONS (Apps.CreateLabel "DOCUMENTATION" (IDIFFERENCE SCREENWIDTH
DOCS-LABELS)) do (DELETE-BUTTON B))
(SETQ IWS (CONS (Apps.CreateLabel "DOCUMENTATION" (IDIFFERENCE SCREENWIDTH
(IDIFFERENCE
RIGHTMARGINISH 50)
)
(IDIFFERENCE SCREENHEIGHT SECTION1YPOS))
IWS))
(SETQ BUTTONS (APPEND (for DOC in DOCS
collect (LET (B)
(SETQ BUTTONS (APPEND (for DOC in DOCS
collect (LET (B)
(SETQ BUTTONY-DOCS (IPLUS BUTTONY-DOCS
YPOSDELTA))
[SETQ B (CREATE-BUTTON (LIST 'Apps.ShowDoc
(CAR DOC))
(CADR DOC)
(create POSITION
(create POSITION
XCOORD _
(IDIFFERENCE
SCREENWIDTH
@@ -319,30 +324,30 @@
(WINDOWPROP B 'Apps.BUTTON 'DOC)
B))
BUTTONS)))
[for B in BUTTONS do (COND
[for B in BUTTONS do (COND
((WINDOWP B)
(WINDOWPROP B 'RIGHTBUTTONFN 'NILL)
(WINDOWPROP B 'BUTTONEVENTFN (FUNCTION (LAMBDA (BUTTON)
(if (LASTMOUSESTATE
(if (LASTMOUSESTATE
(ONLY LEFT))
then (EXECUTE-BUTTON
then (EXECUTE-BUTTON
BUTTON]
[for IW in IWS do (COND
[for IW in IWS do (COND
((WINDOWP IW)
(WINDOWPROP IW 'RIGHTBUTTONFN 'NILL]
(for B in BUTTONS when (WINDOWP B) collect B])
(for B in BUTTONS when (WINDOWP B) collect B])
(Apps.CreateLabel
[LAMBDA (Text CenterX BottomY) (* ; "Edited 5-Dec-2022 16:49 by FGH")
(Apps.CreateLabel
[LAMBDA (Text CenterX BottomY) (* ; "Edited 5-Dec-2022 16:49 by FGH")
(LET* ((DS (DSPCREATE))
(FONT (DSPFONT '(HELVETICA 18 BOLD)
DS))
(SR (STRINGREGION Text DS))
(BMW (fetch (REGION WIDTH) of SR))
(BMH (IPLUS (fetch (REGION HEIGHT) of SR)
(fetch (REGION BOTTOM) of SR)))
(BMW (fetch (REGION WIDTH) of SR))
(BMH (IPLUS (fetch (REGION HEIGHT) of SR)
(fetch (REGION BOTTOM) of SR)))
(BM (BITMAPCREATE BMW BMH))
(POS (create POSITION
(POS (create POSITION
XCOORD _ (IDIFFERENCE CenterX (IQUOTIENT BMW 2))
YCOORD _ BottomY))
IW)
@@ -352,12 +357,12 @@
(WINDOWPROP IW 'ICONLABEL Text)
IW])
(Apps.ActivateCLOS
(Apps.ActivateCLOS
[LAMBDA NIL
(DECLARE (GLOBALVARS BackgroundMenuCommands BackgroundMenu))
(* ; "Edited 12-Nov-2022 14:41 by FGH")
(if (NULL (SASSOC "CLOS Browse Class" BackgroundMenuCommands))
then (PROGN [SETQ BackgroundMenuCommands
(DECLARE (GLOBALVARS BackgroundMenuCommands BackgroundMenu))
(* ; "Edited 12-Nov-2022 14:41 by FGH")
(if (NULL (SASSOC "CLOS Browse Class" BackgroundMenuCommands))
then (PROGN [SETQ BackgroundMenuCommands
(APPEND BackgroundMenuCommands
(LIST '("CLOS Browse Class" (CLOS-BROWSER::BROWSE-CLASS)
"Bring up a class browser."
@@ -372,27 +377,27 @@
]
(SETQ BackgroundMenu NIL])
(Apps.ActivateRooms
(Apps.ActivateRooms
[LAMBDA (DoNotRefreshButtons)
(DECLARE (GLOBALVARS BackgroundMenuCommands ROOMS:*SUITE-DIRECTORIES*))
(* ; "Edited 7-Dec-2022 11:13 by FGH")
(* ; "Edited 12-Nov-2022 14:56 by FGH")
(if (NULL (SASSOC "Rooms" BackgroundMenuCommands))
then (ROOMS:RESET))
(SETQ ROOMS:*SUITE-DIRECTORIES* (CONS (CONCAT (UNIX-GETENV 'MEDLE_USERDIR)
(DECLARE (GLOBALVARS BackgroundMenuCommands ROOMS:*SUITE-DIRECTORIES*))
(* ; "Edited 7-Dec-2022 11:13 by FGH")
(* ; "Edited 12-Nov-2022 14:56 by FGH")
(if (NULL (SASSOC "Rooms" BackgroundMenuCommands))
then (ROOMS:RESET))
(SETQ ROOMS:*SUITE-DIRECTORIES* (CONS (CONCAT (UNIX-GETENV 'MEDLEUSERDIR)
"/suites")
ROOMS:*SUITE-DIRECTORIES*))
(SETQ Apps.RoomsActivated T)
(PROMPTPRINT "
ROOMS functionality is now available via the Background Menu")
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(Apps.ShowDoc
[LAMBDA (URL) (* ; "Edited 18-Jan-2023 20:26 by FGH")
(Apps.ShowDoc
[LAMBDA (URL) (* ; "Edited 18-Jan-2023 20:26 by FGH")
(ShellBrowse URL])
(XCL-USER::EXEC_INTERLISP
(XCL-USER::EXEC¬INTERLISP
[LAMBDA NIL (* ; "Edited 18-Mar-2022 18:53 by fgh")
(PROGN [MAPC (OPENWINDOWS)
(FUNCTION (LAMBDA (W)
@@ -406,10 +411,10 @@
(XCL:SET-DEFAULT-EXEC-TYPE 'INTERLISP)
(XCL:SET-EXEC-TYPE 'INTERLISP])
(Apps.AroundExitFn
(Apps.AroundExitFn
[LAMBDA (EVENT)
(if (MEMB EVENT '(AFTERLOGOUT AFTERSYSOUT AFTERSAVEVM))
then (Apps.SetUpNOTECARDSDIRECTORIES])
(if (MEMB EVENT '(AFTERLOGOUT AFTERSYSOUT AFTERSAVEVM))
then (Apps.SetUpNOTECARDSDIRECTORIES])
)
(DECLARE%: DONTEVAL@LOAD DOCOPY
@@ -420,8 +425,8 @@
(BKSYSBUF " ")
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1184 23227 (Apps.InitNotecards 1194 . 5056) (Apps.SetUpNOTECARDSDIRECTORIES 5058 . 6613
) (Apps.DoInit 6615 . 10212) (Apps.CreateButtons 10214 . 19123) (Apps.CreateLabel 19125 . 19935) (
Apps.ActivateCLOS 19937 . 21286) (Apps.ActivateRooms 21288 . 22139) (Apps.ShowDoc 22141 . 22290) (
XCL-USER::EXEC_INTERLISP 22292 . 23064) (Apps.AroundExitFn 23066 . 23225)))))
(FILEMAP (NIL (1153 22792 (Apps.InitNotecards 1163 . 5006) (Apps.SetUpNOTECARDSDIRECTORIES 5008 . 6527
) (Apps.DoInit 6529 . 10067) (Apps.CreateButtons 10069 . 18820) (Apps.CreateLabel 18822 . 19592) (
Apps.ActivateCLOS 19594 . 20919) (Apps.ActivateRooms 20921 . 21730) (Apps.ShowDoc 21732 . 21871) (
XCL-USER::EXEC¬INTERLISP 21873 . 22645) (Apps.AroundExitFn 22647 . 22790)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 9-Mar-2025 20:03:27" {DSK}<home>frank>il>medley>internal>loadups>LOADUP-APPS.;10 3274
(FILECREATED " 1-Feb-2026 13:45:36" {WMEDLEY}<internal>loadups>LOADUP-APPS.;3 3343
:EDIT-BY "frank"
:EDIT-BY rmk
:CHANGES-TO (FNS LOADUP-APPS)
:PREVIOUS-DATE " 9-Mar-2025 19:42:36" {DSK}<home>frank>il>medley>internal>loadups>LOADUP-APPS.;8
)
:PREVIOUS-DATE " 9-Mar-2025 20:03:27" {WMEDLEY}<internal>loadups>LOADUP-APPS.;2)
(PRETTYCOMPRINT LOADUP-APPSCOMS)
@@ -21,7 +20,8 @@
(DEFINEQ
(LOADUP-APPS
[LAMBDA NIL (* ; "Edited 9-Mar-2025 20:02 by frank")
[LAMBDA NIL (* ; "Edited 1-Feb-2026 13:45 by rmk")
(* ; "Edited 9-Mar-2025 20:02 by frank")
(* ; "Edited 2-Jan-2025 20:38 by lmm")
(* ; "Edited 2-Jan-2025 06:30 by larry")
@@ -46,7 +46,7 @@
"/system"))
NOTECARDS))
(Apps.RemoveBackgroundMenuItem 'NoteCards) (* ; "")
(PUTASSOC 'NOTECARDS (LIST (UNIX-GETENV 'NOTECARDS_COMMIT_ID))
(PUTASSOC 'NOTECARDS (LIST (UNIX-GETENV 'NOTECARDS¬COMMIT¬ID))
SYSOUTCOMMITS)
(* ;; "======================")
@@ -78,7 +78,7 @@
(* ;; "")
(PUTASSOC 'MEDLEY (LIST (UNIX-GETENV 'LOADUP_COMMIT_ID))
(PUTASSOC 'MEDLEY (LIST (UNIX-GETENV 'LOADUP¬COMMIT¬ID))
SYSOUTCOMMITS)
(PRINTOUT T "commits-- " SYSOUTCOMMITS T])
@@ -95,5 +95,5 @@
Apps.SBG])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (656 3251 (LOADUP-APPS 666 . 2579) (Apps.RemoveBackgroundMenuItem 2581 . 3249)))))
(FILEMAP (NIL (616 3320 (LOADUP-APPS 626 . 2648) (Apps.RemoveBackgroundMenuItem 2650 . 3318)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "28-Dec-2025 12:06:12" {WMEDLEY}<internal>loadups>LOADUP-FULL.;35 5759
(FILECREATED "14-Feb-2026 00:42:39" {WMEDLEY}<internal>loadups>LOADUP-FULL.;38 5967
:EDIT-BY rmk
:CHANGES-TO (FNS LOADUP-FULL)
:PREVIOUS-DATE "20-Sep-2025 14:18:19" {WMEDLEY}<internal>loadups>LOADUP-FULL.;34)
:PREVIOUS-DATE "13-Feb-2026 00:47:52" {WMEDLEY}<internal>loadups>LOADUP-FULL.;37)
(PRETTYCOMPRINT LOADUP-FULLCOMS)
@@ -47,7 +47,9 @@
(PRINTOUT T "FULL fonts loaded" T])
(LOADUP-FULL
[LAMBDA (DRIBBLEFILE) (* ; "Edited 28-Dec-2025 12:06 by rmk")
[LAMBDA (DRIBBLEFILE) (* ; "Edited 14-Feb-2026 00:42 by rmk")
(* ; "Edited 5-Feb-2026 10:26 by rmk")
(* ; "Edited 28-Dec-2025 12:06 by rmk")
(* ; "Edited 1-Sep-2025 11:59 by rmk")
(* ; "Edited 18-Aug-2025 12:09 by rmk")
(* ; "Edited 21-Jun-2025 23:33 by rmk")
@@ -77,16 +79,16 @@
(DIRECTORYNAME T)
T T) (* ; "For FONTSAVAILABLE lookup")
(LOADUP '(POSTSCRIPTSTREAM)) (* ; " to get PSCFONT.READFONT")
(LOADFULLFONTS)
(LISTPUT IDLE.PROFILE 'TIMEOUT 0)
(SETQQ *DEFAULT-CLEANUP-COMPILER* BCOMPL)
(* ;; "RMK: 2025: PRESS was after CHAT")
(LOADUP '(CHAT INTERPRESS TEDIT HRULE TEDIT-CHAT READNUMBER EDITBITMAP FILEBROWSER THINFILES
GRAPHER SPY WHERE-IS COPYFILES MSANALYZE MSPARSE MASTERSCOPE UNIXPRINT ISO8859IO
HELPSYS DINFO CLIPBOARD MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE UNIXCOMM
UNIXCHAT UNIXYCD))
GRAPHER SPY WHERE-IS COPYFILES MSANALYZE MSPARSE MASTERSCOPE UNIXPRINT HELPSYS
DINFO CLIPBOARD MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE UNIXCOMM UNIXCHAT
UNIXYCD))
(LOADFULLFONTS)
(COND
((WINDOWP *WHO-LINE*)
(CLOSEW *WHO-LINE*)))
@@ -101,5 +103,5 @@
(FIXMETA)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (456 5721 (LOADFULLFONTS 466 . 2601) (LOADUP-FULL 2603 . 5471) (FIXMETA 5473 . 5719)))))
(FILEMAP (NIL (456 5929 (LOADFULLFONTS 466 . 2601) (LOADUP-FULL 2603 . 5679) (FIXMETA 5681 . 5927)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED "28-Jan-2026 14:30:48" |{DSK}<Users>larry>IL>medley>internal>loadups>LOADUP-LISP.;2| 7369
(FILECREATED "22-Feb-2026 14:15:31" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;27| 7420
:EDIT-BY "lmm"
:EDIT-BY |rmk|
:CHANGES-TO (FNS LOADUP-LISP)
:PREVIOUS-DATE "27-Dec-2025 15:02:04"
|{DSK}<Users>larry>IL>medley>internal>loadups>LOADUP-LISP.;1|)
:PREVIOUS-DATE "22-Feb-2026 09:49:23" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;26|)
(PRETTYCOMPRINT LOADUP-LISPCOMS)
@@ -20,7 +19,8 @@
(DEFINEQ
(LOADUP-LISP
(LAMBDA (DRIBBLEFILE) (* \; "Edited 28-Jan-2026 14:30 by lmm")
(LAMBDA (DRIBBLEFILE) (* \; "Edited 22-Feb-2026 14:15 by rmk")
(* \; "Edited 28-Jan-2026 14:30 by lmm")
(* \; "Edited 27-Dec-2025 15:02 by rmk")
(* \; "Edited 16-Oct-2025 16:55 by rmk")
(* \; "Edited 18-Aug-2025 12:08 by rmk")
@@ -95,9 +95,9 @@
(* |;;| "Also, UNICODE is split into UNICODE-TABLES and UNICODE, so the tables are loaded before their MCCS/Uncode client functions are installed. Functions in UFS now depend on those translations so that filenames can have characters outside of Ascii. ")
(LOADUP '(UNICODE-TABLES UNICODE CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU
WINDOWOBJ WINDOWSCROLL WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL
DEXEC INSPECT DESCRIBE CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
(LOADUP '(CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU WINDOWOBJ WINDOWSCROLL
WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL DEXEC INSPECT DESCRIBE
CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
(LOADUP '(BREAK-AND-TRACE))
(LOADUP '(FASDUMP XCL-COMPILER ADVISE))
@@ -147,5 +147,5 @@
(GLOBALVARS MAKESYSFILENAME MEDLEY-INIT-VARS MEDLEYDIR SYSTEMINITVARS USERRECLST)
)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (675 7163 (LOADUP-LISP 685 . 7161)))))
(FILEMAP (NIL (640 7214 (LOADUP-LISP 650 . 7212)))))
STOP

Binary file not shown.

View File

@@ -114,8 +114,8 @@ loadup is run.
Only one instance (per <MEDLEIDIR>) of loadup can be run at a time.
There is lock file to prevent simultaneous loadups in the work directory
(named \f[B]\f[BI]lock\f[B]\f[R]) that can be manually removed.
The lock can also be automatically overridden (see the \[en]override
flag below).
The lock can also be automatically overridden (see the --override flag
below).
Alternatively, if a lock is encountered at run time, the user will be
asked to choose whether to override or simply exit the loadup.
.PP
@@ -130,7 +130,7 @@ But Medley can be installed in multiple places on any given machine and
hence MEDLEYDIR is computed on each invocation of loadup.
.SH OPTIONS
.TP
\f[B]-z [+], --man [+], -man [+], -h [+], \[en]help [+]\f[R]
\f[B]-z [+], --man [+], -man [+], -h [+], --help [+]\f[R]
Print this manual page on the screen.
If the \f[B]+\f[R] parameter is specified, then no pager is used when
displaying the man page.
@@ -138,7 +138,7 @@ displaying the man page.
\f[B]-t STAGE, --target STAGE, -target STAGE\f[R]
Run the sequential loadup procedure until the STAGE is complete,
starting from the files created by the previously run STAGE specified in
the \[en]start option.
the --start option.
.RS
.PP
STAGE can be one of the following:
@@ -175,7 +175,7 @@ Full.sysout is copied into the loadups directory.
.RS
.PP
a, apps, 5: Run the loadup sequence through Stage 5 (apps.sysout).
Also run the Aux stage as if \[en]aux option had been specified.
Also run the Aux stage as if --aux option had been specified.
Apps.sysout and the Aux files are copied into the loadups directory.
.RE
.RE
@@ -185,7 +185,7 @@ Apps.sysout and the Aux files are copied into the loadups directory.
a-, apps-, 5-: Run the loadup sequence through Stage 5 (apps.sysout).
The Aux stage is not run unless otherwise specified.
Apps.sysout is copied into the loadups directory.
Also run the Aux stage as if \[en]aux option had been specified.
Also run the Aux stage as if --aux option had been specified.
.RE
.RE
.TP
@@ -245,22 +245,22 @@ If this stage complete successfully, these files are copied into
loadups.
.TP
\f[B]-i, --init, -init, -1\f[R]
Synonym for \[lq]\[en]target init\[rq]
Synonym for \[lq]--target init\[rq]
.TP
\f[B]-m, --mid, -mid, -2\f[R]
Synonym for \[lq]\[en]target mid\[rq]
Synonym for \[lq]--target mid\[rq]
.TP
\f[B]-l, --lisp, -lisp, -3\f[R]
Synonym for \[lq]\[en]target lisp\[rq]
Synonym for \[lq]--target lisp\[rq]
.TP
\f[B]-f, --full. -full, -4\f[R]
Synonym for \[lq]\[en]target full\[rq]
Synonym for \[lq]--target full\[rq]
.TP
\f[B]-a, --apps, -apps, -5\f[R]
Synonym for \[lq]\[en]target apps\[rq]
Synonym for \[lq]--target apps\[rq]
.TP
\f[B]-a-, --apps-, -apps-, -5-\f[R]
Synonym for \[lq]\[en]target apps\[rq]
Synonym for \[lq]--target apps\[rq]
.TP
\f[B]-ov, --override, -override\f[R]
Automatically override the lock that prevents two loadups from running
@@ -300,14 +300,14 @@ contained in the working directory.
If the \f[B]+\f[R] parameter is used, then instead of deleting just the
versioned files, all files and subdirectories are deleted except for
those contained in the working directory.
If \f[B]+\f[R] is used and there is no working directory and
\f[I]\[en]tag TAG\f[R] is also specified, then the tagged loadups
directory (<MEDLEYDIR>/loadups/tagged/TAG) is also deleted.
If \f[B]+\f[R] is used and there is no working directory and \f[I]--tag
TAG\f[R] is also specified, then the tagged loadups directory
(<MEDLEYDIR>/loadups/tagged/TAG) is also deleted.
.TP
\f[B]-th [+], --thin [+], -thin [+]\f[R]
Equivalent to specifying both -tw [+] and -tl [+].
If \f[I]\[en]tag TAG\f[R] is also specified and the \f[B]+\f[R]
parameter is used here, then the tagged loadups directory
If \f[I]--tag TAG\f[R] is also specified and the \f[B]+\f[R] parameter
is used here, then the tagged loadups directory
(<MEDLEYDIR>/loadups/tagged/TAG) is removed.
.TP
\f[B]-d DIR, --maikodir DIR, -maikodir DIR\f[R]
@@ -328,38 +328,36 @@ commonly used in running Medley in the absence of an Xwindows server.
.PP
The defaults for the Options context-dependent and somewhat complicated
due to the goal of maintaining compatibility with legacy loadup scripts.
All of the following defaults rules hold independent of the
\[en]maikodir (-d) option.
All of the following defaults rules hold independent of the --maikodir
(-d) option.
.IP "1." 3
If none of \[en]target, \[en]start, \[en]aux, and \[en]db are specified,
then:
If none of --target, --start, --aux, and --db are specified, then:
.RS
.PP
1A.
If neither \[en]thinw nor \[en]thinl are specified, the options default
to:
If neither --thinw nor --thinl are specified, the options default to:
.RE
.RS
.RS
.PP
\f[B]\[en]target full \[en]start 0 \[en]aux\f[R]
\f[B]--target full --start 0 --aux\f[R]
.RE
.RE
.RS
.PP
1B.
If either \[en]thinw or \[en]thinl are specified, no loadups are run.
If either --thinw or --thinl are specified, no loadups are run.
.RE
.IP "2." 3
If neither \[en]start nor \[en]target are specified but either -aux or
-db or both are, then \[en]start defaults to \f[I]full\f[R] and
\[en]target is irrelevant.
If neither --start nor --target are specified but either -aux or -db or
both are, then --start defaults to \f[I]full\f[R] and --target is
irrelevant.
.IP "3." 3
If \[en]start is specified and \[en]target is not, then \[en]target
defaults to \f[I]full\f[R]
If --start is specified and --target is not, then --target defaults to
\f[I]full\f[R]
.IP "4." 3
If \[en]target is specified and \[en]start is not, then \[en]start
defaults to \f[I]0\f[R]
If --target is specified and --start is not, then --start defaults to
\f[I]0\f[R]
.SH EXAMPLES
.PP
\f[B]./loadup -full -s lisp\f[R] : run loadup thru Stage 4 (full.sysout)
@@ -368,14 +366,14 @@ starting from existing Stage 3 outputs (lisp.sysout).
\f[B]./loadup --target full --start lisp\f[R] : run loadup thru Stage 4
(full.sysout) starting from existing Stage 3 outputs (lisp.sysout).
.PP
\f[B]./loadup -5 \[en]aux\f[R] : run loadup from the beginning thru
Stage 5 (apps.sysout) then run the Aux \[lq]stage\[rq] to create
\f[B]./loadup -5 --aux\f[R] : run loadup from the beginning thru Stage 5
(apps.sysout) then run the Aux \[lq]stage\[rq] to create
\f[I]whereis.hash\f[R] and \f[I]exports.all\f[R]
.PP
\f[B]./loadup -db\f[R] : just run the DB \[lq]stage\[rq] starting from
an existing full.sysout; do not run any of the sequential stages.
.PP
\f[B]./loadup \[en]maikodir \[ti]/il/newmaiko\f[R] : run loadup sequence
\f[B]./loadup --maikodir \[ti]/il/newmaiko\f[R] : run loadup sequence
from beginning to full plus the loadup Aux stage, while using
\f[I]\[ti]/il/newmaiko\f[R] as the location for the lde executables when
running Medley.

View File

@@ -52,7 +52,7 @@ Loadup does all of its work in a work directory (\<MEDLEYDIR>/loadups/build). T
If \<MEDLEYDIR> is a git directory, then a file is created in the loadups output directory called *gitinfo* which contains the git commit, git branch and git status information for the directory at the time the loadup is run.
Only one instance (per \<MEDLEIDIR>) of loadup can be run at a time. There is lock file to prevent simultaneous loadups in the work directory (named ***lock***) that can be manually removed. The lock can also be automatically overridden (see the --override flag below). Alternatively, if a lock is encountered at run time, the user will be asked to choose whether to override or simply exit the loadup.
Only one instance (per \<MEDLEIDIR>) of loadup can be run at a time. There is lock file to prevent simultaneous loadups in the work directory (named ***lock***) that can be manually removed. The lock can also be automatically overridden (see the \-\-override flag below). Alternatively, if a lock is encountered at run time, the user will be asked to choose whether to override or simply exit the loadup.
Note: **MEDLEYDIR** is an environment variable set by the loadup script. It is set to the top level directory of the Medley installation that contains the specific loadup script that
is invoked after all symbolic links are resolved. In the standard global installation this will
@@ -61,12 +61,12 @@ hence MEDLEYDIR is computed on each invocation of loadup.
OPTIONS
=======
**-z [+], \-\-man [+], \-man [+], -h [+], --help [+]**
**-z [+], \-\-man [+], \-man [+], -h [+], \-\-help [+]**
: Print this manual page on the screen. If the **+** parameter is specified, then no pager is used when
displaying the man page.
**-t STAGE, \-\-target STAGE, -target STAGE**
: Run the sequential loadup procedure until the STAGE is complete, starting from the files created by the previously run STAGE specified in the --start option.
: Run the sequential loadup procedure until the STAGE is complete, starting from the files created by the previously run STAGE specified in the \-\-start option.
>STAGE can be one of the following:
@@ -78,9 +78,9 @@ displaying the man page.
>>f, full, 4: Run the loadup sequence through Stage 4 (full.sysout). Full.sysout is copied into the loadups directory.
>>a, apps, 5: Run the loadup sequence through Stage 5 (apps.sysout). Also run the Aux stage as if --aux option had been specified. Apps.sysout and the Aux files are copied into the loadups directory.
>>a, apps, 5: Run the loadup sequence through Stage 5 (apps.sysout). Also run the Aux stage as if \-\-aux option had been specified. Apps.sysout and the Aux files are copied into the loadups directory.
>>a-, apps-, 5-: Run the loadup sequence through Stage 5 (apps.sysout). The Aux stage is not run unless otherwise specified. Apps.sysout is copied into the loadups directory. Also run the Aux stage as if --aux option had been specified.
>>a-, apps-, 5-: Run the loadup sequence through Stage 5 (apps.sysout). The Aux stage is not run unless otherwise specified. Apps.sysout is copied into the loadups directory. Also run the Aux stage as if \-\-aux option had been specified.
**-s STAGE \-\-start STAGE, -start STAGE**
@@ -105,22 +105,22 @@ displaying the man page.
: Run the DB loadup stage, creating the *fuller.database* file. If this stage complete successfully, these files are copied into loadups.
**-i, \-\-init, -init, -1**
: Synonym for "--target init"
: Synonym for "\-\-target init"
**-m, \-\-mid, -mid, -2**
: Synonym for "--target mid"
: Synonym for "\-\-target mid"
**-l, \-\-lisp, -lisp, -3**
: Synonym for "--target lisp"
: Synonym for "\-\-target lisp"
**-f, \-\-full. -full, -4**
: Synonym for "--target full"
: Synonym for "\-\-target full"
**-a, \-\-apps, -apps, -5**
: Synonym for "--target apps"
: Synonym for "\-\-target apps"
**-a-, \-\-apps-, -apps-, -5-**
: Synonym for "--target apps"
: Synonym for "\-\-target apps"
**-ov, \-\-override, -override**
: Automatically override the lock that prevents two loadups from running simultaneously. If this flag is not set and an active lock is encountered, the user will be asked to choose whether to override or exit.
@@ -149,11 +149,11 @@ working directory (and all files and subdirectories it contains) is deleted.
files except for those contained in the working directory.
If the **+** parameter is used, then instead of deleting just the versioned files, all files and
subdirectories are deleted except for those contained in the working directory. If **+** is used and
there is no working directory and *--tag TAG* is also specified,
there is no working directory and *\-\-tag TAG* is also specified,
then the tagged loadups directory (\<MEDLEYDIR>/loadups/tagged/TAG) is also deleted.
**-th [+], \-\-thin [+], -thin [+]**
: Equivalent to specifying both -tw [+] and -tl [+]. If *--tag TAG* is also specified and
: Equivalent to specifying both -tw [+] and -tl [+]. If *\-\-tag TAG* is also specified and
the **+** parameter is used here, then the tagged loadups directory (\<MEDLEYDIR>/loadups/tagged/TAG)
is removed.
@@ -168,21 +168,21 @@ running Medley in the absence of an Xwindows server.
DEFAULTS
====
The defaults for the Options context-dependent and somewhat complicated due to the goal of maintaining compatibility with legacy loadup scripts. All of the following defaults rules hold independent of the --maikodir (-d) option.
The defaults for the Options context-dependent and somewhat complicated due to the goal of maintaining compatibility with legacy loadup scripts. All of the following defaults rules hold independent of the \-\-maikodir (-d) option.
1. If none of --target, --start, --aux, and --db are specified, then:
1. If none of \-\-target, \-\-start, \-\-aux, and \-\-db are specified, then:
>1A. If neither --thinw nor --thinl are specified, the options default to:
>1A. If neither \-\-thinw nor \-\-thinl are specified, the options default to:
>> **--target full --start 0 --aux**
>> **\-\-target full \-\-start 0 \-\-aux**
>1B. If either --thinw or --thinl are specified, no loadups are run.
>1B. If either \-\-thinw or \-\-thinl are specified, no loadups are run.
2. If neither --start nor --target are specified but either -aux or -db or both are, then --start defaults to *full* and --target is irrelevant.
2. If neither \-\-start nor \-\-target are specified but either -aux or -db or both are, then \-\-start defaults to *full* and \-\-target is irrelevant.
3. If --start is specified and --target is not, then --target defaults to *full*
3. If \-\-start is specified and \-\-target is not, then \-\-target defaults to *full*
4. If --target is specified and --start is not, then --start defaults to *0*
4. If \-\-target is specified and \-\-start is not, then \-\-start defaults to *0*
EXAMPLES
====
@@ -190,11 +190,11 @@ EXAMPLES
**./loadup \-\-target full \-\-start lisp** : run loadup thru Stage 4 (full.sysout) starting from existing Stage 3 outputs (lisp.sysout).
**./loadup -5 --aux** : run loadup from the beginning thru Stage 5 (apps.sysout) then run the Aux "stage" to create *whereis.hash* and *exports.all*
**./loadup -5 \-\-aux** : run loadup from the beginning thru Stage 5 (apps.sysout) then run the Aux "stage" to create *whereis.hash* and *exports.all*
**./loadup -db** : just run the DB "stage" starting from an existing full.sysout; do not run any of the sequential stages.
**./loadup --maikodir ~/il/newmaiko** : run loadup sequence from beginning to full plus the loadup Aux stage, while using *~/il/newmaiko* as the location for the lde executables when running Medley.
**./loadup \-\-maikodir ~/il/newmaiko** : run loadup sequence from beginning to full plus the loadup Aux stage, while using *~/il/newmaiko* as the location for the lde executables when running Medley.
**./loadup -full** : run loadup sequence from beginning thru full

View File

@@ -87,7 +87,7 @@ the time the loadup is run.</p>
time. There is lock file to prevent simultaneous loadups in the work
directory (named <strong><em>lock</em></strong>) that can be manually
removed. The lock can also be automatically overridden (see the
override flag below). Alternatively, if a lock is encountered at run
--override flag below). Alternatively, if a lock is encountered at run
time, the user will be asked to choose whether to override or simply
exit the loadup.</p>
<p>Note: <strong>MEDLEYDIR</strong> is an environment variable set by
@@ -99,7 +99,8 @@ installed in multiple places on any given machine and hence MEDLEYDIR is
computed on each invocation of loadup.</p>
<h1>OPTIONS</h1>
<dl>
<dt><strong>-z [+], --man [+], -man [+], -h [+], help [+]</strong></dt>
<dt><strong>-z [+], --man [+], -man [+], -h [+], --help
[+]</strong></dt>
<dd>
<p>Print this manual page on the screen. If the <strong>+</strong>
parameter is specified, then no pager is used when displaying the man
@@ -109,7 +110,7 @@ page.</p>
<dd>
<p>Run the sequential loadup procedure until the STAGE is complete,
starting from the files created by the previously run STAGE specified in
the start option.</p>
the --start option.</p>
<p>STAGE can be one of the following:</p>
<blockquote>
<p>i, init, 1: Run the loadup sequence through Stage 1 (init.dlinit).
@@ -129,13 +130,13 @@ Full.sysout is copied into the loadups directory.</p>
</blockquote>
<blockquote>
<p>a, apps, 5: Run the loadup sequence through Stage 5 (apps.sysout).
Also run the Aux stage as if aux option had been specified. Apps.sysout
and the Aux files are copied into the loadups directory.</p>
Also run the Aux stage as if --aux option had been specified.
Apps.sysout and the Aux files are copied into the loadups directory.</p>
</blockquote>
<blockquote>
<p>a-, apps-, 5-: Run the loadup sequence through Stage 5 (apps.sysout).
The Aux stage is not run unless otherwise specified. Apps.sysout is
copied into the loadups directory. Also run the Aux stage as if aux
copied into the loadups directory. Also run the Aux stage as if --aux
option had been specified.</p>
</blockquote>
</dd>
@@ -181,27 +182,27 @@ loadups.</p>
</dd>
<dt><strong>-i, --init, -init, -1</strong></dt>
<dd>
<p>Synonym for “target init”</p>
<p>Synonym for “--target init”</p>
</dd>
<dt><strong>-m, --mid, -mid, -2</strong></dt>
<dd>
<p>Synonym for “target mid”</p>
<p>Synonym for “--target mid”</p>
</dd>
<dt><strong>-l, --lisp, -lisp, -3</strong></dt>
<dd>
<p>Synonym for “target lisp”</p>
<p>Synonym for “--target lisp”</p>
</dd>
<dt><strong>-f, --full. -full, -4</strong></dt>
<dd>
<p>Synonym for “target full”</p>
<p>Synonym for “--target full”</p>
</dd>
<dt><strong>-a, --apps, -apps, -5</strong></dt>
<dd>
<p>Synonym for “target apps”</p>
<p>Synonym for “--target apps”</p>
</dd>
<dt><strong>-a-, --apps-, -apps-, -5-</strong></dt>
<dd>
<p>Synonym for “target apps”</p>
<p>Synonym for “--target apps”</p>
</dd>
<dt><strong>-ov, --override, -override</strong></dt>
<dd>
@@ -245,13 +246,13 @@ contained in the working directory. If the <strong>+</strong> parameter
is used, then instead of deleting just the versioned files, all files
and subdirectories are deleted except for those contained in the working
directory. If <strong>+</strong> is used and there is no working
directory and <em>tag TAG</em> is also specified, then the tagged
directory and <em>--tag</em> TAG is also specified, then the tagged
loadups directory (&lt;MEDLEYDIR&gt;/loadups/tagged/TAG) is also
deleted.</p>
</dd>
<dt><strong>-th [+], --thin [+], -thin [+]</strong></dt>
<dd>
<p>Equivalent to specifying both -tw [+] and -tl [+]. If <em>tag
<p>Equivalent to specifying both -tw [+] and -tl [+]. If <em>--tag
TAG</em> is also specified and the <strong>+</strong> parameter is used
here, then the tagged loadups directory
(&lt;MEDLEYDIR&gt;/loadups/tagged/TAG) is removed.</p>
@@ -277,24 +278,24 @@ absence of an Xwindows server.</p>
<p>The defaults for the Options context-dependent and somewhat
complicated due to the goal of maintaining compatibility with legacy
loadup scripts. All of the following defaults rules hold independent of
the maikodir (-d) option.</p>
the --maikodir (-d) option.</p>
<ol type="1">
<li><p>If none of target, start, aux, and db are specified,
<li><p>If none of --target, --start, --aux, and --db are specified,
then:</p>
<p>1A. If neither thinw nor thinl are specified, the options default
<p>1A. If neither --thinw nor --thinl are specified, the options default
to:</p>
<blockquote>
<p><strong>target full start 0 aux</strong></p>
<p><strong>--target full --start 0 --aux</strong></p>
</blockquote>
<p>1B. If either thinw or thinl are specified, no loadups are
<p>1B. If either --thinw or --thinl are specified, no loadups are
run.</p></li>
<li><p>If neither start nor target are specified but either -aux or
-db or both are, then start defaults to <em>full</em> and target is
<li><p>If neither --start nor --target are specified but either -aux or
-db or both are, then --start defaults to <em>full</em> and --target is
irrelevant.</p></li>
<li><p>If start is specified and target is not, then target defaults
to <em>full</em></p></li>
<li><p>If target is specified and start is not, then start defaults
to <em>0</em></p></li>
<li><p>If --start is specified and --target is not, then --target
defaults to <em>full</em></p></li>
<li><p>If --target is specified and --start is not, then --start
defaults to <em>0</em></p></li>
</ol>
<h1>EXAMPLES</h1>
<p><strong>./loadup -full -s lisp</strong> : run loadup thru Stage 4
@@ -302,12 +303,12 @@ to <em>0</em></p></li>
<p><strong>./loadup --target full --start lisp</strong> : run loadup
thru Stage 4 (full.sysout) starting from existing Stage 3 outputs
(lisp.sysout).</p>
<p><strong>./loadup -5 aux</strong> : run loadup from the beginning
<p><strong>./loadup -5 --aux</strong> : run loadup from the beginning
thru Stage 5 (apps.sysout) then run the Aux “stage” to create
<em>whereis.hash</em> and <em>exports.all</em></p>
<p><strong>./loadup -db</strong> : just run the DB “stage” starting from
an existing full.sysout; do not run any of the sequential stages.</p>
<p><strong>./loadup maikodir ~/il/newmaiko</strong> : run loadup
<p><strong>./loadup --maikodir ~/il/newmaiko</strong> : run loadup
sequence from beginning to full plus the loadup Aux stage, while using
<em>~/il/newmaiko</em> as the location for the lde executables when
running Medley.</p>

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Sep-2025 15:00:01" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>CLIPBOARD.;28 8305
(FILECREATED "23-Feb-2026 12:35:55" {WMEDLEY}<library>CLIPBOARD.;29 8228
:EDIT-BY rmk
:CHANGES-TO (FNS PUTCLIPBOARD CLIPBOARD-COPY-STREAM)
:CHANGES-TO (VARS CLIPBOARDCOMS)
:PREVIOUS-DATE "21-Apr-2024 09:12:04" {WMEDLEY}<library>CLIPBOARD.;18)
:PREVIOUS-DATE "25-Sep-2025 15:00:01" {WMEDLEY}<library>CLIPBOARD.;28)
(PRETTYCOMPRINT CLIPBOARDCOMS)
@@ -18,7 +17,7 @@
CLIPBOARD-PASTE-STREAM)
(FNS SEDIT.COPYTOCLIPBOARD)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DOCOPY (FILES (SYSLOAD)
UNIXCOMM UNICODE)
UNIXCOMM)
(P (INSTALL-CLIPBOARD)))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML)
@@ -148,7 +147,7 @@
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DOCOPY
(FILESLOAD (SYSLOAD)
UNIXCOMM UNICODE)
UNIXCOMM)
(INSTALL-CLIPBOARD)
@@ -162,7 +161,7 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1167 6486 (INSTALL-CLIPBOARD 1177 . 2504) (GETCLIPBOARD 2506 . 2880) (PUTCLIPBOARD 2882
. 4306) (PASTEFROMCLIPBOARD 4308 . 5226) (CLIPBOARD-COPY-STREAM 5228 . 5762) (CLIPBOARD-PASTE-STREAM
5764 . 6484)) (6487 8026 (SEDIT.COPYTOCLIPBOARD 6497 . 8024)))))
(FILEMAP (NIL (1098 6417 (INSTALL-CLIPBOARD 1108 . 2435) (GETCLIPBOARD 2437 . 2811) (PUTCLIPBOARD 2813
. 4237) (PASTEFROMCLIPBOARD 4239 . 5157) (CLIPBOARD-COPY-STREAM 5159 . 5693) (CLIPBOARD-PASTE-STREAM
5695 . 6415)) (6418 7957 (SEDIT.COPYTOCLIPBOARD 6428 . 7955)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 8-Feb-2026 19:27:31" {DSK}<Users>larry>il>MEDLEY>LIBRARY>MASTERSCOPE.;3 197425
(FILECREATED "16-Feb-2026 13:34:31" {WMEDLEY}<library>MASTERSCOPE.;41 197959
:EDIT-BY "lmm"
:EDIT-BY rmk
:CHANGES-TO (FNS BUILDGETRELQ)
:CHANGES-TO (FNS MSOUTPUT)
:PREVIOUS-DATE " 8-Feb-2026 18:47:30" {DSK}<Users>larry>il>MEDLEY>LIBRARY>MASTERSCOPE.;2)
:PREVIOUS-DATE " 8-Feb-2026 22:38:50" {WMEDLEY}<library>MASTERSCOPE.;40)
(PRETTYCOMPRINT MASTERSCOPECOMS)
@@ -2566,7 +2566,7 @@
(* ; "interactive routines")
(RPAQ MASTERSCOPEDATE " 8-Feb-2026")
(RPAQ MASTERSCOPEDATE "16-Feb-2026")
(ADDTOVAR HISTORYCOMS %.)
(DEFINEQ
@@ -3498,13 +3498,17 @@
(ERROR!])
(MSOUTPUT
[LAMBDA (FILE) (* ; "Edited 5-Apr-2025 11:48 by rmk")
[LAMBDA (FILE) (* ; "Edited 16-Feb-2026 13:34 by rmk")
(* ; "Edited 5-Feb-2026 01:01 by rmk")
(* ; "Edited 18-Nov-2025 14:01 by rmk")
(* ; "Edited 8-Nov-2025 23:21 by rmk")
(* ; "Edited 5-Apr-2025 11:48 by rmk")
(* ; "Edited 14-Jul-2024 08:41 by rmk")
(* ; "Edited 5-Jul-2024 11:54 by rmk")
(* ; "Edited 12-Jun-90 20:43 by teruuchi")
(LET ((LLENGTH FILELINELENGTH))
[COND
((AND (LITATOM FILE)
[(AND (LITATOM FILE)
(MEMB (U-CASE FILE)
'(TEDIT :TEDIT))
(GETD (FUNCTION TEDIT)))
@@ -3512,12 +3516,14 @@
(* ;;
 "If no TEDIT, leave the current OUTPUT. The readtable for seprs etc is the current readtable.")
[SETQ FILE (TEXTSTREAM (TEDIT NIL 'Masterscope NIL `(LEAVETTY T TITLE Masterscope FONT
,DEFAULTFONT BOUNDTABLE
,(TEDIT.ATOMBOUND.READTABLE]
[SETQ FILE (OPENTEXTSTREAM NIL NIL `(FONT ,DEFAULTFONT BOUNDTABLE ,(
TEDIT.ATOMBOUND.READTABLE
]
(SETQ LLENGTH T)
(TEDIT.DEFER.UPDATES FILE '(READONLY QUIET))
(RESETSAVE NIL (LIST 'CLOSEF FILE)))
(RESETSAVE NIL `(PROGN (CL:UNLESS RESETSTATE
(TEDIT ,FILE 'Masterscope NIL
'(TITLE Masterscope READONLY QUIET LEAVETTY T)))
(CLOSEF? ,FILE]
((OPENP FILE 'OUTPUT))
(T (SETQ FILE (OPENSTREAM FILE 'OUTPUT))
(RESETSAVE NIL (LIST 'CLOSEF FILE]
@@ -3724,36 +3730,36 @@
(ADDTOVAR LAMA MSEDITE MSEDITF)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3300 19547 (UPDATEFN 3310 . 4927) (MSGETDEF 4929 . 6335) (MSNOTICEFILE 6337 . 8730) (
MSSHOWUSE 8732 . 14713) (MSUPDATEFN1 14715 . 15403) (MSUPDATE 15405 . 17831) (MSNLAMBDACHECK 17833 .
18715) (MSCOLLECTDATA 18717 . 19545)) (19548 20447 (UPDATECHANGED 19558 . 19921) (UPDATECHANGED1 19923
. 20445)) (21021 21444 (MSCLOSEFILES 21031 . 21442)) (22125 26557 (MSDESCRIBE 22135 . 24923) (
MSDESCRIBE1 24925 . 25988) (FMAPRINT 25990 . 26555)) (26650 27090 (MSPRINTHELPFILE 26660 . 27088)) (
27140 30278 (TEMPLATE 27150 . 28571) (GETTEMPLATE 28573 . 28708) (SETTEMPLATE 28710 . 30276)) (31148
36072 (ADDTEMPLATEWORD 31158 . 31830) (MSADDANALYZE 31832 . 33330) (MSADDMODIFIER 33332 . 34413) (
MSADDRELATION 34415 . 35162) (MSADDTYPE 35164 . 36070)) (37573 42669 (MSMARKCHANGE1 37583 . 38377) (
MSINIT 38379 . 39560) (GETVERBTABLES 39562 . 40115) (MSSTOREDATA 40117 . 41671) (STORETABLE 41673 .
42667)) (44071 49141 (PARSERELATION 44081 . 44681) (PARSERELATION1 44683 . 46138) (GETRELATION 46140
. 47169) (MAPRELATION 47171 . 48305) (TESTRELATION 48307 . 49139)) (49142 50782 (ADDHASH 49152 .
49630) (SUBHASH 49632 . 49860) (MAKEHASH 49862 . 50006) (MSREHASH 50008 . 50461) (EQMEMBHASH 50463 .
50780)) (51121 57437 (MSVBTABLES 51131 . 57011) (MSUSERVBTABLES 57013 . 57435)) (57520 59823 (
BUILDGETRELQ 57530 . 58728) (BUILDTESTRELQ 58730 . 59821)) (59994 60382 (MSERASE 60004 . 60380)) (
60383 64843 (DUMPDATABASE 60393 . 62958) (DUMPDATABASE1 62960 . 63305) (READATABASE 63307 . 64841)) (
65925 94984 (MSCHECKBLOCKS 65935 . 69755) (MSCHECKBLOCK 69757 . 78377) (MSCHECKFNINBLOCK 78379 . 81379
) (MSCHECKBLOCKBASIC 81381 . 83801) (MSCHECKBOUNDFREE 83803 . 85702) (GLOBALVARP 85704 . 85871) (
PRINTERROR 85873 . 89089) (MSCHECKVARS1 89091 . 92044) (UNECCSPEC 92046 . 92324) (NECCSPEC 92326 .
92673) (SPECVARP 92675 . 93202) (SHORTLST 93204 . 93660) (DOERROR 93662 . 94372) (MSMSGPRINT 94374 .
94982)) (96128 110956 (MSPATHS 96138 . 99540) (MSPATHS1 99542 . 103777) (MSPATHS2 103779 . 107189) (
MSONPATH 107191 . 108419) (MSPATHS4 108421 . 109503) (DASHES 109505 . 110031) (DOTABS 110033 . 110274)
(BELOWMARKER 110276 . 110739) (MSPATHSPRINTFN 110741 . 110954)) (111342 114766 (MSFIND 111352 .
111627) (MSEDITF 111629 . 112629) (MSEDITE 112631 . 113668) (EDITGETDEF 113670 . 114764)) (115708
124309 (MSMARKCHANGED 115718 . 117442) (CHANGEMACRO 117444 . 118149) (CHANGEVAR 118151 . 118467) (
CHANGEI.S. 118469 . 119802) (CHANGERECORD 119804 . 120675) (MSNEEDUNSAVE 120677 . 121669) (UNSAVEFNS
121671 . 124307)) (124742 128352 (%. 124752 . 124892) (MASTERSCOPE 124894 . 125420) (MASTERSCOPE1
125422 . 126290) (MASTERSCOPEXEC 126292 . 128350)) (128391 168041 (MSINTERPRETSET 128401 . 156935) (
MSINTERPA 156937 . 157471) (MSGETBLOCKDEC 157473 . 159986) (LISTHARD 159988 . 161206) (MSMEMBSET
161208 . 161353) (MSLISTSET 161355 . 161720) (MSHASHLIST 161722 . 161889) (MSHASHLIST1 161891 . 162217
) (CHECKPATHS 162219 . 162859) (ONFILE 162861 . 168039)) (168042 191603 (MSINTERPRET 168052 . 184107)
(VERBNOTICELIST 184109 . 185219) (MSOUTPUT 185221 . 186731) (MSCHECKEMPTY 186733 . 187937) (
CHECKFORCHANGED 187939 . 188459) (MSSOLVE 188461 . 191601)))))
(FILEMAP (NIL (3260 19507 (UPDATEFN 3270 . 4887) (MSGETDEF 4889 . 6295) (MSNOTICEFILE 6297 . 8690) (
MSSHOWUSE 8692 . 14673) (MSUPDATEFN1 14675 . 15363) (MSUPDATE 15365 . 17791) (MSNLAMBDACHECK 17793 .
18675) (MSCOLLECTDATA 18677 . 19505)) (19508 20407 (UPDATECHANGED 19518 . 19881) (UPDATECHANGED1 19883
. 20405)) (20981 21404 (MSCLOSEFILES 20991 . 21402)) (22085 26517 (MSDESCRIBE 22095 . 24883) (
MSDESCRIBE1 24885 . 25948) (FMAPRINT 25950 . 26515)) (26610 27050 (MSPRINTHELPFILE 26620 . 27048)) (
27100 30238 (TEMPLATE 27110 . 28531) (GETTEMPLATE 28533 . 28668) (SETTEMPLATE 28670 . 30236)) (31108
36032 (ADDTEMPLATEWORD 31118 . 31790) (MSADDANALYZE 31792 . 33290) (MSADDMODIFIER 33292 . 34373) (
MSADDRELATION 34375 . 35122) (MSADDTYPE 35124 . 36030)) (37533 42629 (MSMARKCHANGE1 37543 . 38337) (
MSINIT 38339 . 39520) (GETVERBTABLES 39522 . 40075) (MSSTOREDATA 40077 . 41631) (STORETABLE 41633 .
42627)) (44031 49101 (PARSERELATION 44041 . 44641) (PARSERELATION1 44643 . 46098) (GETRELATION 46100
. 47129) (MAPRELATION 47131 . 48265) (TESTRELATION 48267 . 49099)) (49102 50742 (ADDHASH 49112 .
49590) (SUBHASH 49592 . 49820) (MAKEHASH 49822 . 49966) (MSREHASH 49968 . 50421) (EQMEMBHASH 50423 .
50740)) (51081 57397 (MSVBTABLES 51091 . 56971) (MSUSERVBTABLES 56973 . 57395)) (57480 59783 (
BUILDGETRELQ 57490 . 58688) (BUILDTESTRELQ 58690 . 59781)) (59954 60342 (MSERASE 59964 . 60340)) (
60343 64803 (DUMPDATABASE 60353 . 62918) (DUMPDATABASE1 62920 . 63265) (READATABASE 63267 . 64801)) (
65885 94944 (MSCHECKBLOCKS 65895 . 69715) (MSCHECKBLOCK 69717 . 78337) (MSCHECKFNINBLOCK 78339 . 81339
) (MSCHECKBLOCKBASIC 81341 . 83761) (MSCHECKBOUNDFREE 83763 . 85662) (GLOBALVARP 85664 . 85831) (
PRINTERROR 85833 . 89049) (MSCHECKVARS1 89051 . 92004) (UNECCSPEC 92006 . 92284) (NECCSPEC 92286 .
92633) (SPECVARP 92635 . 93162) (SHORTLST 93164 . 93620) (DOERROR 93622 . 94332) (MSMSGPRINT 94334 .
94942)) (96088 110916 (MSPATHS 96098 . 99500) (MSPATHS1 99502 . 103737) (MSPATHS2 103739 . 107149) (
MSONPATH 107151 . 108379) (MSPATHS4 108381 . 109463) (DASHES 109465 . 109991) (DOTABS 109993 . 110234)
(BELOWMARKER 110236 . 110699) (MSPATHSPRINTFN 110701 . 110914)) (111302 114726 (MSFIND 111312 .
111587) (MSEDITF 111589 . 112589) (MSEDITE 112591 . 113628) (EDITGETDEF 113630 . 114724)) (115668
124269 (MSMARKCHANGED 115678 . 117402) (CHANGEMACRO 117404 . 118109) (CHANGEVAR 118111 . 118427) (
CHANGEI.S. 118429 . 119762) (CHANGERECORD 119764 . 120635) (MSNEEDUNSAVE 120637 . 121629) (UNSAVEFNS
121631 . 124267)) (124702 128312 (%. 124712 . 124852) (MASTERSCOPE 124854 . 125380) (MASTERSCOPE1
125382 . 126250) (MASTERSCOPEXEC 126252 . 128310)) (128351 168001 (MSINTERPRETSET 128361 . 156895) (
MSINTERPA 156897 . 157431) (MSGETBLOCKDEC 157433 . 159946) (LISTHARD 159948 . 161166) (MSMEMBSET
161168 . 161313) (MSLISTSET 161315 . 161680) (MSHASHLIST 161682 . 161849) (MSHASHLIST1 161851 . 162177
) (CHECKPATHS 162179 . 162819) (ONFILE 162821 . 167999)) (168002 192137 (MSINTERPRET 168012 . 184067)
(VERBNOTICELIST 184069 . 185179) (MSOUTPUT 185181 . 187265) (MSCHECKEMPTY 187267 . 188471) (
CHECKFORCHANGED 188473 . 188993) (MSSOLVE 188995 . 192135)))))
STOP

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,22 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
(FILECREATED "22-Oct-2025 23:28:42" {WMEDLEY}<library>UNICODE-TABLES.;4 34028
(FILECREATED "22-Feb-2026 10:44:33" {WMEDLEY}<library>UNICODE-TABLES.;20 44960
:EDIT-BY rmk
:CHANGES-TO (VARS UNICODE-TABLESCOMS)
:CHANGES-TO (FNS ALL-UNICODE-MAPPINGS GET-MCCS-UNICODE-MAPPING INVERT-UNICODE-MAPPING
MAKE-UNICODE-TRANSLATION-TABLES MERGE-UNICODE-TRANSLATION-TABLES
READ-UNICODE-MAPPING-FILENAMES)
(VARS UNICODE-TABLESCOMS)
:PREVIOUS-DATE "16-Oct-2025 16:47:54" {WMEDLEY}<library>UNICODE-TABLES.;3)
:PREVIOUS-DATE "22-Feb-2026 09:15:20" {WMEDLEY}<library>UNICODE-TABLES.;16)
(PRETTYCOMPRINT UNICODE-TABLESCOMS)
(RPAQQ UNICODE-TABLESCOMS
[
(* ;; "Read Unicode mapping tables. A separate file before UNICODE in the loadup, because the tables must be loaded while UTF8TOMCODE and MCODETOUTF8 are still equivalenced to EVQ. This file has to come before UNICODE in the loadup sequence.")
(* ;; "This is code for reading/writing the XCCS-to-UNICODE mapping tables. It runs offline, when UNICODE-UTF8 is modified. ")
(COMS (* ; "Read Unicode mapping files")
(INITVARS (UNICODEDIRECTORIES NIL))
@@ -22,22 +25,32 @@
(FNS READ-UNICODE-MAPPING-FILENAMES READ-UNICODE-MAPPING))
(COMS (* ;
 "Make translation tables for UTF external formats")
(FNS MAKE-UNICODE-TRANSLATION-TABLES XCCSTOMCCS-MAPPING
MERGE-UNICODE-TRANSLATION-TABLES UNICODE.UNMAPPED UNICODE-EXTEND-TRANSLATION?)
(FNS MAKE-UNICODE-TRANSLATION-TABLES GET-MCCS-UNICODE-MAPPING INVERT-UNICODE-MAPPING
XCCSTOMCCS-MAPPING)
(FNS ALL-UNICODE-MAPPINGS XCCSJAPANESECHARSETS)
(INITVARS (*MCCSTOUNICODE*)
(*UNICODETOMCCS*)
(*MCCS-LOADED-CHARSETS*)
(*UNICODE-LOADED-CHARSETS*)
(*LARGEUNICODES*))
[DECLARE%: DONTEVAL@LOAD DOCOPY (P (MAKE-UNICODE-TRANSLATION-TABLES 'ALL]
(COMS (* ; "Write Unicode mapping files")
(FNS WRITE-UNICODE-MAPPING WRITE-UNICODE-INCLUDED WRITE-UNICODE-MAPPING-HEADER
WRITE-UNICODE-MAPPING-FILENAME)
(FNS XCCS-UTF8-AFTER-OPEN)
(* ;; "Automate dumping of a documentation prefix")
[DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE"
:RADIX 16))
(UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF"
:RADIX 16]
(VARS UNICODE-MAPPING-HEADER))
(FNS UTF8HEXSTRING)
(COMS (* ; "debugging")
(FNS SHOWCHARS)
(DECLARE%: DOEVAL@LOAD DONTCOPY (MACROS HEXCHAR OCTALCHAR)))
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
UNICODE-EXPORTS])
(* ;;
"Read Unicode mapping tables. A separate file before UNICODE in the loadup, because the tables must be loaded while UTF8TOMCODE and MCODETOUTF8 are still equivalenced to EVQ. This file has to come before UNICODE in the loadup sequence."
"This is code for reading/writing the XCCS-to-UNICODE mapping tables. It runs offline, when UNICODE-UTF8 is modified. "
)
@@ -94,7 +107,8 @@
(DEFINEQ
(READ-UNICODE-MAPPING-FILENAMES
[LAMBDA (FILESPEC) (* ; "Edited 16-Oct-2025 16:43 by rmk")
[LAMBDA (FILESPEC) (* ; "Edited 21-Feb-2026 18:14 by rmk")
(* ; "Edited 16-Oct-2025 16:43 by rmk")
(* ; "Edited 4-Sep-2025 00:11 by rmk")
(* ; "Edited 27-Jan-2025 16:46 by rmk")
(* ; "Edited 21-Jan-2025 22:51 by rmk")
@@ -107,51 +121,47 @@
(* ;; "FILESPEC can be a file name, character-set name, the name of a collection of character sets, an XCCS character code, or a list of those. Maps those into the names of files that contain the indicated Unicode mappings.")
(CL:REMOVE-DUPLICATES [for F X CSI inside (if (EQ FILESPEC 'ALL)
then
(* ;;
(for F X CSI inside (if (EQ FILESPEC 'ALL)
then
(* ;;
 "Perhaps should figure out which files in the directories and subdirectories are relevant?")
(for N in XCCS-CHARSETS
collect (CAR N))
else FILESPEC)
join
(* ;; "Last case hopes to pick up all the tables that are grouped together in a subdirectory (e.g. if F is JIS)")
(for N in XCCS-CHARSETS collect (CAR N))
else FILESPEC)
join
(* ;; "Last case hopes to pick up all the tables that are grouped together in a subdirectory (e.g. if F is JIS)")
(OR (CL:WHEN (CHARCODEP F) (* ;
[OR (CL:WHEN (CHARCODEP F) (* ;
 "An XCCS code can retrieve its character set")
(for D FN (FOCTAL _ (OCTALSTRING (LRSH F 8))) inside
UNICODEDIRECTORIES
when (SETQ FN (FILDIR (PACKFILENAME 'DIRECTORY D
'BODY
(CONCAT 'XCCS- FOCTAL
'=*)
'EXTENSION
'TXT
'VERSION "")))
do (RETURN FN)))
(MKLIST (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION 'TXT
'VERSION "")
T UNICODEDIRECTORIES))
(for D inside UNICODEDIRECTORIES
when [SETQ $$VAL (OR (FILDIR (PACKFILENAME 'NAME
(CONCAT "XCCS-*=" F)
'EXTENSION
'TXT
'VERSION "" 'BODY D))
(FILDIR (PACKFILENAME 'NAME
(CONCAT "XCCS-" F "=*")
'EXTENSION
'TXT
'VERSION "" 'BODY D]
do (RETURN $$VAL))
(AND (SETQ CSI (ASSOC F XCCS-CHARSETS))
(READ-UNICODE-MAPPING-FILENAMES (CDR CSI)))
(for D inside UNICODEDIRECTORIES
when (DIRECTORYNAMEP (SETQ D (CONCAT D ">" F ">")))
join (FILDIR (CONCAT D ">*.TXT;"]
:TEST
(FUNCTION STRING.EQUAL])
(for D FN (FOCTAL (OCTALSTRING (LRSH F 8))) inside UNICODEDIRECTORIES
when (SETQ FN (DIRECTORY (PACKFILENAME 'DIRECTORY D 'BODY (CONCAT 'XCCS-
FOCTAL
'=*)
'EXTENSION
'TXT
'VERSION ""))) do (RETURN FN)))
(MKLIST (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION 'TXT 'VERSION "")
T UNICODEDIRECTORIES))
(for D inside UNICODEDIRECTORIES
when [SETQ $$VAL (OR (DIRECTORY (PACKFILENAME 'NAME (CONCAT "XCCS-*=" F)
'EXTENSION
'TXT
'VERSION "" 'BODY D))
(DIRECTORY (PACKFILENAME 'NAME (CONCAT "XCCS-" F "=*")
'EXTENSION
'TXT
'VERSION "" 'BODY D]
do (RETURN $$VAL))
(AND (SETQ CSI (ASSOC F XCCS-CHARSETS))
(READ-UNICODE-MAPPING-FILENAMES (CDR CSI)))
(for D inside UNICODEDIRECTORIES when (DIRECTORYNAMEP (SETQ D
(CONCAT D ">" F ">")))
join (DIRECTORY (CONCAT D ">*.TXT;"]
finally (* ;
 "CL:REMOVE-DUPLICATES doesn't exist in MAKEINIT")
(RETURN (for FTAIL on $$VAL unless (thereis FF in (CDR FTAIL)
suchthat (STRING-EQUAL (CAR FTAIL)
FF)) collect (CAR FTAIL])
(READ-UNICODE-MAPPING
[LAMBDA (FILESPEC PRINT NOERROR) (* ; "Edited 16-Oct-2025 11:25 by rmk")
@@ -179,7 +189,7 @@
(* ;; "")
(RESETLST
(for FILE STREAM [SEPBITTABLE _ (MAKEBITTABLE (CHARCODE (TAB SPACE] in (
(for FILE STREAM [SEPBITTABLE (MAKEBITTABLE (CHARCODE (TAB SPACE] in (
 READ-UNICODE-MAPPING-FILENAMES
FILESPEC)
join
@@ -221,7 +231,8 @@
(DEFINEQ
(MAKE-UNICODE-TRANSLATION-TABLES
[LAMBDA (MAPPING REINSTALL) (* ; "Edited 11-Oct-2025 11:54 by rmk")
[LAMBDA (MAPPING REINSTALL) (* ; "Edited 21-Feb-2026 22:42 by rmk")
(* ; "Edited 11-Oct-2025 11:54 by rmk")
(* ; "Edited 4-Sep-2025 00:30 by rmk")
(* ; "Edited 24-Apr-2025 15:47 by rmk")
(* ; "Edited 31-Jan-2025 17:46 by rmk")
@@ -232,26 +243,13 @@
(* ; "Edited 3-Feb-2024 00:24 by rmk")
(* ; "Edited 30-Jan-2024 09:54 by rmk")
(* ; "Edited 21-Aug-2021 13:12 by rmk:")
(SETQ MAPPING (GET-MCCS-UNICODE-MAPPING MAPPING))
(* ;; "MAPPING is the list of numeric code correspondence pairs constructed by applying READ-UNICODE-MAPPING to XCCS-to-Unicode mapping files. This applies the XCCS-to-MCCS translations, and then updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. MCCS or ISO8859-1 to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. MCCS).")
 (* ; "Edited 17-Aug-2020 08:46 by rmk:")
(CL:UNLESS [AND (LISTP MAPPING)
(FOR PAIR R IN MAPPING AS I TO 10
ALWAYS (AND (LISTP PAIR)
(CHARCODEP (CAR PAIR))
[FIXP (SETQ R (CAR (MKLIST (CADR PAIR]
(CHARCODEP (IABS R]
(* ;; "Seems like the argument is not already a list of mapping pairs (perhaps with a combiner), presumably a list of charsets to be read.")
(SETQ MAPPING (READ-UNICODE-MAPPING MAPPING)))
(SETQ MAPPING (XCCSTOMCCS-MAPPING MAPPING))
(* ;; "This updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. XCCS or ISO8859-1 to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. XCCS).")
(* ;; "This updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. MCCS to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. MCCS).")
(* ;; "")
(* ;; "If REINSTALL is T, the new mapping vectors replace the current maps in the *XCCSTOUNICODE* and *UNICODETOXCCS* global variables. Otherwise we create new tables (mostly for comparison and debugging).")
(* ;; "If REINSTALL is T, the new mapping vectors replace the current maps in the *MCCSTOUNICODE* and *UNICODETOMCCS* global variables. Otherwise we create new tables (mostly for comparison and debugging).")
(* ;; "")
@@ -270,6 +268,55 @@
(SETQ *NEXT-PRIVATE-UNICODE* FIRST-PRIVATE-UNICODE))
(MERGE-UNICODE-TRANSLATION-TABLES NIL MAPPING])
(GET-MCCS-UNICODE-MAPPING
[LAMBDA (MAPPING) (* ; "Edited 22-Feb-2026 00:29 by rmk")
(* ;; "MAPPING is the list of numeric code correspondence pairs mapping MCCS-to-Unicode, or a specification of XCCS-to-Unicode files to be read and converted to MCCS-to-UNICODE.")
(SORT (if [AND (LISTP MAPPING)
(for PAIR R in MAPPING as I to 10
always (AND (LISTP PAIR)
(CHARCODEP (CAR PAIR))
[FIXP (SETQ R (CAR (MKLIST (CADR PAIR]
(CHARCODEP (IABS R]
then
(* ;; "The argument is already a list of MCCS-to-UNICODE mapping pairs")
MAPPING
else
(* ;; "Mapping files are is read as XCCS-UNICODE, make it MCCS")
(XCCSTOMCCS-MAPPING (READ-UNICODE-MAPPING MAPPING)))
T])
(INVERT-UNICODE-MAPPING
[LAMBDA (MAPPING) (* ; "Edited 22-Feb-2026 00:39 by rmk")
(* ;; "MAPPING is a list of pairs that map domain codes to range codes (presumably MCCS to UNICODE). This produces an inverted list of pairs that map the range into the domain (Unicode to MCCS) ")
(LET (INVERTED)
(SETQ INVERTED (SORT (for P D R OLDR in MAPPING eachtime (SETQ D (CAR P))
(SETQ R (CADR P))
(* ;;
 "We don't do combiners, but we are allowing non-SMALLP's")
unless (OR (LISTP D)
(LISTP R)) collect (LIST R D))
T))
(* ;; "If MAPPING contains two pairs that map to the same U (e.g. (M1 U) and (M2 U)), we want the inverse table to collect them into a single pair (U M1 M2) instead of two pairs (U M1) (U M2), with the lowest M code first. Those pairs represent alternative inverse mappings. There are no duplicates/alternative table entries in the M-to-U direction.")
(* ;; "The SORT above means that multiple inverted pairs for the same U will be next to each other in the list.")
[for PTAIL PTAIL2 U MS on INVERTED eachtime (SETQ U (CAAR PTAIL))
when (SETQ MS (for old PTAIL2 P2 on PTAIL eachtime (SETQ P2 (CADR PTAIL2))
while (EQ U (CAR P2)) collect (CADR P2)))
do (RPLACD PTAIL (CDR PTAIL2))
(RPLACD (CAR PTAIL)
(SORT (CONS (CADR (CAR PTAIL))
MS]
INVERTED])
(XCCSTOMCCS-MAPPING
[LAMBDA (XTOUMAPPING) (* ; "Edited 11-Oct-2025 12:57 by rmk")
@@ -292,152 +339,12 @@
XTOMCODES)))
finally (push XTOUMAPPING (CHARCODE (DEL DEL)))
(RETURN XTOUMAPPING])
(MERGE-UNICODE-TRANSLATION-TABLES
[LAMBDA (INVERSE MAPPING TABLE INVERSETABLE) (* ; "Edited 11-Oct-2025 10:24 by rmk")
(* ; "Edited 24-Apr-2025 15:28 by rmk")
(* ; "Edited 1-Feb-2025 21:42 by rmk")
(* ; "Edited 26-Jan-2025 12:58 by rmk")
(* ; "Edited 22-Jan-2025 08:20 by rmk")
(* ; "Edited 19-Jan-2025 15:58 by rmk")
(* ; "Edited 18-Jan-2025 11:49 by rmk")
(* ; "Edited 27-Mar-2024 12:10 by rmk")
(* ; "Edited 3-Feb-2024 12:46 by rmk")
(* ; "Edited 31-Jan-2024 10:06 by rmk")
(* ;; "MAPPINGS is a list of pairs that map domain codes to range codes. TABLE and INVERSETABLE default to *MCCSTOUNICODE* *UNICODETOMCCS* respectively. ")
(CL:UNLESS TABLE
[SETQ TABLE (OR *MCCSTOUNICODE* (SETQ *MCCSTOUNICODE* (HASHARRAY (LENGTH MAPPING])
(CL:UNLESS INVERSETABLE
[SETQ INVERSETABLE (OR *UNICODETOMCCS* (SETQ *UNICODETOMCCS* (HASHARRAY (LENGTH MAPPING])
(for M D R OLDR in MAPPING first (CL:IF INVERSE (swap TABLE INVERSETABLE))
eachtime (SETQ D (CAR M))
(SETQ R (CADR M))
(* ;; "We don't do combiners, but we are allowing non-SMALLP's")
unless (OR (LISTP D)
(LISTP R)) do
(* ;; "The (CONS R OLDR) deals with alternatives: (U X1) (U X2) => (U (X1 X2)), lowest code first. Those are only possible in the U-to-X direction when the tables contain (X1 U) and (X2 U). There are no duplicates/alternative table entries in the X-to-U direction.")
(SETQ OLDR (GETHASH D TABLE))
(CL:UNLESS (MEMB R OLDR)
(PUTHASH D (SORT (CONS R OLDR))
TABLE))
(swap D R)
(SETQ OLDR (GETHASH D INVERSETABLE))
(CL:UNLESS (MEMB R OLDR)
(PUTHASH D (SORT (CONS R OLDR))
INVERSETABLE)))
(LIST TABLE INVERSETABLE])
(UNICODE.UNMAPPED
[LAMBDA (CODE TABLE DONTFAKE) (* ; "Edited 24-Apr-2025 15:48 by rmk")
(* ; "Edited 22-Jan-2025 08:19 by rmk")
(* ; "Edited 19-Jan-2025 22:02 by rmk")
(* ; "Edited 18-Jan-2025 12:02 by rmk")
(* ; "Edited 2-Feb-2024 23:52 by rmk")
(* ; "Edited 31-Jan-2024 10:07 by rmk")
(* ; "Edited 11-Aug-2020 20:23 by rmk:")
(* ;; "This is the slow fall-out when UNICODE.TRANSLATE determines that CODE has no fast mapping in TRANSLATION-TABLE.")
(* ;; "")
(* ;; "If we have not already installed the mapping segment for that code, we try to retrieve it from the numberic file. If that segment mapping doesn't exist or doesn't have an entry for CODE, we fake up a mapping with a negative range in both directions. One way or the other, there will be an entry for that segment in both mapping vectors.")
(* ;; "")
(PROG ((INVERSE (EQ TABLE *UNICODETOMCCS*))
RANGE HASH)
(* ;; "If we already looked up CODE's character set in a file, then we have already filled in its information in the translation table. If it didn't have a code for a particular character, then we fake it here. Faked codes are negative, so we can detect them easily, and interpret them with IABS.")
(CL:WHEN (AND (UNICODE-EXTEND-TRANSLATION? CODE TABLE)
(SETQ RANGE (GETHASH CODE TABLE)))
(* ;; "We might have gotten the segment that didn't have an entry for CODE.")
(RETURN RANGE))
(* ;; "")
(CL:UNLESS DONTFAKE
(* ;; "Our attempt at extending the known tables did not provide a mapping for CODE. So we fake it up with the next unused private code in the code space. ")
(* ;; "The number of possible faked mappings is determined by the number of private-use Unicodes, since the MCCS character space is pretty sparse. The codes don't have to come from the same part of the code space, and the NEXTCODEs are saved in global variables. The last available codes are constants.")
(CL:WHEN (IEQP *NEXT-PRIVATE-MCCSCODE* LAST-PRIVATE-MCCSCODE)
(* ;
 "Same number of available codes both ways")
(ERROR "EXHAUSTED RANGE FOR UNMAPPED CODES"))
(if INVERSE
then (SETQ RANGE *NEXT-PRIVATE-MCCSCODE*)
(add *NEXT-PRIVATE-MCCSCODE* 1)
else (SETQ RANGE *NEXT-PRIVATE-UNICODE*)
(add *NEXT-PRIVATE-UNICODE* 1))
(MERGE-UNICODE-TRANSLATION-TABLES INVERSE (CONS (LIST CODE RANGE)))
(* ;; "CONS because of LIST convention so we can eventually distinguish combiners.")
(RETURN (CONS RANGE)))])
(UNICODE-EXTEND-TRANSLATION?
[LAMBDA (CODE TABLE) (* ; "Edited 11-Oct-2025 09:49 by rmk")
(* ; "Edited 4-Sep-2025 00:34 by rmk")
(* ; "Edited 29-Jun-2025 16:44 by rmk")
(* ; "Edited 24-Apr-2025 15:49 by rmk")
(* ; "Edited 26-Jan-2025 11:26 by rmk")
(* ; "Edited 21-Jan-2025 22:31 by rmk")
(* ; "Edited 18-Jan-2025 12:40 by rmk")
(* ; "Edited 13-Jan-2025 23:50 by rmk")
(* ; "Edited 26-Aug-2024 16:49 by rmk")
(* ; "Edited 27-Mar-2024 23:02 by rmk")
(* ; "Edited 5-Feb-2024 13:48 by rmk")
(* ; "Edited 3-Feb-2024 12:40 by rmk")
(* ;; "There is currently no mapping for CODE in TABLE, hopefully just because the relevant character-set mapping has not been installed. We infer from TABLE whether CODE is an MCCS or UNICODE code and look for the proper mapping table (forward or inverted) for its character set. ")
(* ;; "We record which character sets we have already expanded so we don't do them again.")
(LET ((CHARSET (\CHARSET CODE))
(INVERSE (EQ TABLE *UNICODETOMCCS*))
MAPPING FILE)
(* ;; "If we already looked for CHARSET in the file and found anything, it has already been merged. Otherwise, it would just fail again")
(CL:UNLESS (MEMB CHARSET (CL:IF INVERSE
*UNICODE-LOADED-CHARSETS*
*MCCS-LOADED-CHARSETS*))
(* ;; "Don't try this charset again.")
(CL:IF INVERSE
(push *UNICODE-LOADED-CHARSETS* CHARSET)
(push *MCCS-LOADED-CHARSETS* CHARSET))
(SETQ FILE (FINDFILE (CL:IF INVERSE
'UNICODE-TO-MCCS-MAPPINGS
'MCCS-TO-UNICODE-MAPPINGS)
T UNICODEDIRECTORIES))
(* ;; "The mappings files are indexed by CHARSET.")
(CL:WHEN [AND FILE (SETQ MAPPING (CL:WITH-OPEN-FILE (STREAM FILE :INPUT)
(CL:WHEN (FILEPOS (CONCAT "[" CHARSET " ")
STREAM NIL NIL NIL T)
(READ STREAM]
(* ;;
 "Merge MAPPING into both tables, respecting the direction indicated by TABLE. ")
(MERGE-UNICODE-TRANSLATION-TABLES INVERSE MAPPING)
T))])
)
(DEFINEQ
(ALL-UNICODE-MAPPINGS
[LAMBDA (INVERTED FILE) (* ; "Edited 24-Apr-2025 15:51 by rmk")
[LAMBDA (INVERTED FILE) (* ; "Edited 22-Feb-2026 10:42 by rmk")
(* ; "Edited 24-Apr-2025 15:51 by rmk")
(* ; "Edited 31-Jan-2025 17:46 by rmk")
(* ; "Edited 26-Jan-2025 13:40 by rmk")
(* ; "Edited 22-Jan-2025 14:07 by rmk")
@@ -453,38 +360,32 @@
(* ;; "The first index level segments all the domain codes according to their character sets. The segments are sorted by character set, the pairs within each segment are sorted by their domain codes. ")
(* ;;
 "E.g. if INVERTED=NIL and given a XCCS code, the lookup for the corresponding Unicode(s) is")
 "E.g. if INVERTED=NIL and given a MCCS code, the lookup for the corresponding Unicode(s) is")
(* ;; " (CADR (ASSOC MCCSCODE (\CHARSET MCCSCODE) INDEX)))).")
(* ;; " (CAR (GETMULTI INDEX (\CHARSET MCCSCODE) MCCSCODE).")
(* ;; "If FILE is not NIL, the result is written to a file. If FILE is T, the file is either MCCS-TO-UNICODE-MAPPINGS.TXT or UNICODE-TO-MCCS-MAPPINGS.TXT, depending on INVERTED.")
(LET (INDEX)
(for PAIR DOMAIN RANGE CHARSET in (READ-UNICODE-MAPPING 'ALL) eachtime (SETQ DOMAIN
(CAR PAIR))
(SETQ RANGE (CADR PAIR))
(* ;;
 "(LISTP RANGE) is a combiner, ignored for now.")
unless (LISTP RANGE) do (CL:WHEN INVERTED (SWAP DOMAIN RANGE))
(LET [INDEX (MAPPING (GET-MCCS-UNICODE-MAPPING 'ALL]
(for PAIR in (CL:IF INVERTED
(INVERT-UNICODE-MAPPING MAPPING)
MAPPING) unless (LISTP (CADR PAIR)) do
(* ;;
 "(LISTP (CADR PAIR) is a combiner, ignored for now.")
(* ;;
(* ;;
 "One segment for each high-byte character set. This aligns with UNICODE-EXTEND.TRANSLATION?")
[SETQ CHARSET (OR (ASSOC (\CHARSET DOMAIN)
INDEX)
(CAR (push INDEX (CONS (\CHARSET DOMAIN]
(* ;; "For alternative mappings (in the U-to-M direction) we end up with (D R1 R2 ...). (CAR (GETMULTI)) is the first (and almost always) the only one.")
(* ;; "For alternative mappings (in the U-to-M direction) we end up with (D R1 R2 ...). (CADR is the first (and almost always) the only one.")
(pushnew [CDR (OR (ASSOC DOMAIN (CDR CHARSET))
(CAR (push (CDR CHARSET)
(CONS DOMAIN]
RANGE))
(PUSHMULTI-NEW INDEX
(\CHARSET (CAR PAIR))
(CAR PAIR)
(CADR PAIR)))
(* ;; "Push the charset mappings down an extra CONS, so that a subsequent READ will get them all after a FILEPOS search for super-paren [")
[for CS in INDEX do (for M in (CDR CS) when (CDDR M) do
(for CS in INDEX do (for M in (CDR CS) when (CDDR M) do
(* ;;
 "Sort the range alternatives, if any")
@@ -494,7 +395,7 @@
(* ;; "Sort by domain codes and push down a level")
(change (CDR CS)
(CONS (SORT DATUM T]
(SORT DATUM T)))
(SETQ INDEX (SORT INDEX T)) (* ; "Sort character sets")
(if FILE
then (SETQ FILE (PACKFILENAME 'BODY (if (NEQ FILE T)
@@ -544,18 +445,347 @@
(FULLNAME STREAM))))])
)
(RPAQ? *MCCSTOUNICODE* )
(RPAQ? *UNICODETOMCCS* )
(RPAQ? *MCCS-LOADED-CHARSETS* )
(* ; "Write Unicode mapping files")
(RPAQ? *UNICODE-LOADED-CHARSETS* )
(DEFINEQ
(RPAQ? *LARGEUNICODES* )
(DECLARE%: DONTEVAL@LOAD DOCOPY
(WRITE-UNICODE-MAPPING
[LAMBDA (MAPPING INCLUDECHARSETS FILE EMPTYOK) (* ; "Edited 4-Jan-2024 22:44 by rmk")
(* ; "Edited 16-Aug-2020 16:56 by rmk:")
(MAKE-UNICODE-TRANSLATION-TABLES 'ALL)
(* ;; "Writes a symbol unicode mapping file. Mapping is a list of (XCCS-code Unicode) pairs, which may contain codes in multiple character sets.")
(* ;; "If FILE is NIL, it defaults to a name XCCS- followed by the octal character sets in the mapping, in the unicode/XEROX directory.")
(* ;; "The output lines are of the form x0XXX<tab>x0UUUU<tab># Unicode-char")
(* ;;
 "If INCLUDECHARSETS=T then the mappings are split up into separate per-character set files.")
(* ;; "Otherwise, all and only mappings included in thos charsets are included in a single output file--an implicit subset.")
(IF (AND (EQ INCLUDECHARSETS T)
(NULL FILE))
THEN (IF MAPPING
THEN (FOR CSI F IN XCCS-SET-NAMES WHEN (SETQ F (WRITE-UNICODE-MAPPING MAPPING
(CAR CSI)
NIL T)) COLLECT F)
ELSE (PRINTOUT T "THERE ARE NO MAPPINGS" T)
NIL)
ELSE
(LET
(IMAPPING CSETINFO RANGES)
(CL:MULTIPLE-VALUE-SETQ (IMAPPING CSETINFO RANGES)
(WRITE-UNICODE-INCLUDED MAPPING INCLUDECHARSETS))
(IF IMAPPING
THEN (CL:WITH-OPEN-FILE
(STREAM (WRITE-UNICODE-MAPPING-FILENAME FILE CSETINFO RANGES)
:DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :EXTERNAL-FORMAT :UTF-8-RAW)
(WRITE-UNICODE-MAPPING-HEADER STREAM CSETINFO RANGES)
(SORT IMAPPING T)
(FOR M CSET LEFTC FIRSTRIGHTC CSI IN IMAPPING
DO (SETQ LEFTC (CAR M))
(SETQ FIRSTRIGHTC (CADR M))
(CL:UNLESS (EQ CSET (LRSH LEFTC 8))
(SETQ CSET (LRSH LEFTC 8))
(SETQ CSI (ASSOC CSET CSETINFO))
(PRINTOUT STREAM T "# " .P2 (CADR CSI)
" "
(CADDR CSI)
T))
(PRINTOUT STREAM "0x" (HEXSTRING LEFTC 4)
%#
(FOR RIGHTC IN (CDR M) DO (PRINTOUT NIL " " "0x" (HEXSTRING RIGHTC 4)))
" # "
(SELECTC FIRSTRIGHTC
(UNDEFINEDCODE
(* ;; "FFFF")
"UNDEFINED")
(MISSINGCODE
(* ;; "FFFE")
"MISSING")
(IF (ILESSP FIRSTRIGHTC 32)
THEN (* ; "Control chars")
[CONCAT "↑" (CHARACTER (IPLUS FIRSTRIGHTC (CHARCODE @]
ELSE (CHARACTER FIRSTRIGHTC)))
T))
(FULLNAME STREAM))
ELSEIF (NOT EMPTYOK)
THEN (PRINTOUT T "THERE ARE NO MAPPINGS")
(CL:WHEN INCLUDECHARSETS
(PRINTOUT T " FOR " .PPVTL (MKLIST INCLUDECHARSETS)
T))
NIL])
(WRITE-UNICODE-INCLUDED
[LAMBDA (MAPPING INCLUDECHARSETS) (* ; "Edited 4-Aug-2020 17:47 by rmk:")
(* ;; "CSETINFO is a list of (num string name) for each included character set.")
(LET (CHARSETS CSETINFO RANGES ICSETS IMAPPING)
(* ;; "Normalize the INCLUDECHARSETS, then reduce MAPPING to the included mappings")
[SETQ ICSETS (FOR C POS KNOWN INSIDE (OR INCLUDECHARSETS (FOR CSI IN XCCS-SET-NAMES
COLLECT (CAR CSI)))
JOIN [SETQ KNOWN (OR (SASSOC C XCCS-SET-NAMES)
(FIND N IN XCCS-SET-NAMES
SUCHTHAT (EQ C (CADR N)))
(HELP "UNKNOWN CHARACTER SET" (OCTALSTRING C]
(IF (SETQ POS (STRPOS "-" (CAR KNOWN)))
THEN (FOR I FROM (CL:PARSE-INTEGER (SUBSTRING (CAR KNOWN)
1
(SUB1 POS))
:RADIX 8)
TO (CL:PARSE-INTEGER (SUBSTRING (CAR KNOWN)
(ADD1 POS))
:RADIX 8) COLLECT (LIST I (OCTALSTRING I)
(CADR KNOWN)))
ELSE (CONS (CONS (CL:PARSE-INTEGER (CAR KNOWN)
:RADIX 8)
KNOWN]
(SETQ IMAPPING (FOR M CSI IN MAPPING WHEN (SETQ CSI (ASSOC (LRSH (CAR M)
8)
ICSETS))
COLLECT
(* ;; "The attested subset of INCLUDED")
(CL:UNLESS (MEMB CSI CSETINFO)
(PUSH CSETINFO CSI))
M))
(* ;; "Sort as numbers, not octal strings, then group into consecutive ranges")
(SETQ CSETINFO (SORT CSETINFO T))
[SETQ RANGES (FOR CTAIL C START END ON (FOR CSI IN CSETINFO COLLECT (CAR CSI)) WHILE CTAIL
COLLECT (SETQ START (CAR CTAIL))
(SETQ END START)
(CONS START (WHILE [AND (CDR CTAIL)
(EQ END (SUB1 (CADR CTAIL]
COLLECT (SETQ CTAIL (CDR CTAIL))
(SETQ END (CAR CTAIL]
(* ;; "Split out groups of less than 3. But if a range exhaustively covers a known subset (like JIS), replace by the name")
[SETQ RANGES (FOR R STR KNOWN LAST IN RANGES
JOIN (SETQ LAST (CAR (LAST R)))
(IF (EQ (CAR R)
LAST)
THEN (CONS (OCTALSTRING (CAR R)))
ELSEIF (SETQ KNOWN (SASSOC (SETQ STR (CONCAT (OCTALSTRING
(CAR R))
"-"
(OCTALSTRING LAST)))
XCCS-SET-NAMES))
THEN (CONS (CADR KNOWN))
ELSEIF (CDDR R)
THEN (CONS STR)
ELSE (LIST (OCTALSTRING (CAR R))
(OCTALSTRING LAST]
(CL:VALUES IMAPPING CSETINFO RANGES])
(WRITE-UNICODE-MAPPING-HEADER
[LAMBDA (STREAM CSETINFO RANGES) (* ; "Edited 5-Jan-2024 13:24 by rmk")
(* ; "Edited 4-Aug-2020 17:38 by rmk:")
(* ;; "Writes the standard per-file header information")
(FOR LINE IN UNICODE-MAPPING-HEADER
DO (PRINTOUT STREAM "#" 2)
(SELECTQ LINE
(XCCSCHARACTERSETS
(PRINTOUT STREAM " XCCS charset")
(IF (CDR CSETINFO)
THEN (PRINTOUT STREAM "s:" -4)
(FOR R IN RANGES DO (PRINTOUT STREAM R " "))
ELSE (* ; "Singleton")
(PRINTOUT STREAM ": " -4 (CADAR CSETINFO)
" "
(CADDAR CSETINFO)))
(TERPRI STREAM))
(DATE (PRINTOUT STREAM " Date:" -13 (DATE (DATEFORMAT NO.TIME NO.LEADING.SPACES)
)
T))
(PRINTOUT STREAM LINE T)))
(TERPRI STREAM])
(WRITE-UNICODE-MAPPING-FILENAME
[LAMBDA (FILE CSETINFO RANGES) (* ; "Edited 4-Aug-2020 19:34 by rmk:")
(PACKFILENAME 'BODY [OR FILE (CONCATLIST
(CONS 'XCCS- (IF (CDR CSETINFO)
THEN (FOR RTAIL R ON RANGES
JOIN (SETQ R (CAR RTAIL))
(SETQ R (CL:IF (LISTP R)
(LIST (CAR R)
"-"
(CDR R))
(CONS R)))
(CL:IF (CDR RTAIL)
(NCONC1 R ","))
R)
ELSE (LIST (CADAR CSETINFO)
"="
(CADDAR CSETINFO]
'DIRECTORY
(CAR UNICODEDIRECTORIES)
'EXTENSION
'TXT])
)
(DEFINEQ
(XCCS-UTF8-AFTER-OPEN
[LAMBDA (STREAM ACCESS PARAMETERS) (* ; "Edited 3-Jan-2024 10:27 by rmk")
(* ; "Edited 13-Aug-2020 11:54 by rmk:")
(* ;;
 "If added to STREAM-AFTER-OPEN-FNS, causes mapping files to be opened as UTF-8. For development")
(CL:WHEN (AND (STRPOS "XCCS-" (U-CASE (FULLNAME STREAM)))
[EQ 'TXT (U-CASE (FILENAMEFIELD (FULLNAME STREAM)
'EXTENSION]
(NOT (ASSOC 'EXTERNALFORMAT PARAMETERS)))
(STREAMPROP STREAM 'EXTERNALFORMAT :UTF-8))])
)
(* ;; "Automate dumping of a documentation prefix")
(DECLARE%: EVAL@COMPILE DONTCOPY
(DECLARE%: EVAL@COMPILE
(RPAQ MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
(RPAQ UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16))
(CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
(UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16)))
)
)
(RPAQQ UNICODE-MAPPING-HEADER
("" " Name: XCCS (Version 2.0) to Unicode" " Unicode version: 3.0"
XCCSCHARACTERSETS " Table version: 0.1" " Table format: Format A"
DATE " Author: Ron Kaplan <Ron.Kaplan@post.harvard.edu>" ""
"This file contains mappings from the Xerox Character Code Standard (version"
"2.0, 1990) into Unicode 3.0. standard codes. That is an extension of the"
"version of XCCS corresponding to the fonts in the Medley system." ""
"The format of this file conforms to the format of the other Unicode-supplied"
"mapping files:" " Three white-space (tab or spaces) separated columns:"
" Column 1 is the XCCS code (as hex 0xXXXX)"
" Column 2 is the corresponding Unicode (as hex 0xXXXX)"
" Column 3 (after #) is a comment column. For convenience, it contains the"
" Unicode character itself and the Unicode character names when available."
"Unicode FFFF is used for undefined XCCS codes (Column 3 = UNDEFINED"
"Unicode FFFE is used for XCCS codes that have not yet been filled in."
"(Column 3 = MISSING)" "" "This file is encoded in UTF-8, so that the Unicode characters"
"are properly displayed in Column 3 and can be edited by standard"
"Unicode-enabled editors (e.g. Mac Textedit)." ""
"This file can also be read by the function"
"READ-UNICODE-MAPPING in the UNICODE Medley library package." ""
"The entries are in XCCS order and grouped by character sets. In front of"
"the mappings, for convenience, there is a line with the octal XCCS"
"character set, after #." ""
"Note that a given XCCS code might map to codes in several different Unicode"
"positions, since there are repetitions in the Unicode standard." ""
"For more details, see the associated README.TXT file." ""
"Any comments or problems, contact <ron.kaplan@post.harvard.edu>"))
(DEFINEQ
(UTF8HEXSTRING
[LAMBDA (CHARCODE) (* ; "Edited 10-Aug-2020 08:33 by rmk:")
(* ;; "Utility to produces the UTF8 hexstring representing CODE")
(HEXSTRING (IF (ILESSP CHARCODE 128)
THEN CHARCODE
ELSEIF (ILESSP CHARCODE 2048)
THEN (* ; "x800")
(LOGOR (LLSH (LOGOR (LLSH 3 6)
(LRSH CHARCODE 6))
8)
(LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 0 6)))
ELSEIF (ILESSP CHARCODE 65536)
THEN (* ; "x10000")
(LOGOR (LLSH (LOGOR (LLSH 7 5)
(LRSH CHARCODE 12))
16)
(LLSH (LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 6 6))
8)
(LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 0 6)))
ELSEIF (ILESSP CHARCODE 2097152)
THEN (* ; "x200000")
(LOGOR (LLSH (LOGOR (LLSH 15 4)
(LRSH CHARCODE 18))
24)
(LLSH (LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 12 6))
16)
(LLSH (LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 6 6))
8)
(LOGOR (LLSH 2 6)
(LOADBYTE CHARCODE 0 6)))
ELSE (ERROR "CHARCODE too big for UTF8" CHARCODE])
)
(* ; "debugging")
(DEFINEQ
(SHOWCHARS
[LAMBDA (FONT FROMCHAR TOCHAR ONELINE) (* ; "Edited 5-Oct-2025 17:41 by rmk")
(* ; "Edited 7-Sep-2025 20:29 by rmk")
(* ; "Edited 2-Sep-2025 10:26 by rmk")
(* ; "Edited 24-Jul-2025 11:30 by rmk")
(* ; "Edited 8-Jun-2025 20:05 by rmk")
(* ; "Edited 26-Jan-2024 14:18 by mth")
(* ; "Edited 1-Aug-2020 09:27 by rmk:")
[SETQ FONT (FONTCREATE (OR FONT '(CLASSIC 12]
(RESETLST
[LET ((OLDFONT (DSPFONT NIL T))
CHARS)
(CL:UNLESS (CHARCODEP FROMCHAR)
(SETQ FROMCHAR (OR (CHARCODE.DECODE FROMCHAR T)
FROMCHAR)))
(SETQ CHARS (if (LISTP FROMCHAR)
elseif (CHARCODEP FROMCHAR)
then (CL:UNLESS (CHARCODEP TOCHAR)
(SETQ TOCHAR (OR (CHARCODE.DECODE TOCHAR)
FROMCHAR)))
(for C from FROMCHAR to TOCHAR collect C)
else (CHCON FROMCHAR)))
[RESETSAVE OLDFONT '(PROGN (DSPFONT OLDVALUE]
(TERPRI)
(for C in CHARS do (PRINTOUT T .FONT OLDFONT (CONCAT (OCTALSTRING (\CHARSET C))
","
(OCTALSTRING (\CHAR8CODE C)))
10 .FONT FONT (CHARACTER C))
(CL:UNLESS ONELINE (PRINTOUT T T])
(TERPRI])
)
(DECLARE%: DOEVAL@LOAD DONTCOPY
(DECLARE%: EVAL@COMPILE
(PUTPROPS HEXCHAR MACRO ((CODE)
(HEXSTRING CODE)))
(PUTPROPS OCTALCHAR MACRO [(CODE)
(CONCAT (OCTALSTRING (\CHARSET CODE))
","
(OCTALSTRING (LOGAND CODE 255])
)
)
(DECLARE%: EVAL@COMPILE DONTCOPY
@@ -563,9 +793,12 @@
UNICODE-EXPORTS)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3341 12542 (READ-UNICODE-MAPPING-FILENAMES 3351 . 8301) (READ-UNICODE-MAPPING 8303 .
12540)) (12609 26839 (MAKE-UNICODE-TRANSLATION-TABLES 12619 . 16379) (XCCSTOMCCS-MAPPING 16381 . 17598
) (MERGE-UNICODE-TRANSLATION-TABLES 17600 . 20253) (UNICODE.UNMAPPED 20255 . 23579) (
UNICODE-EXTEND-TRANSLATION? 23581 . 26837)) (26840 33676 (ALL-UNICODE-MAPPINGS 26850 . 32339) (
XCCSJAPANESECHARSETS 32341 . 33674)))))
(FILEMAP (NIL (4107 12829 (READ-UNICODE-MAPPING-FILENAMES 4117 . 8586) (READ-UNICODE-MAPPING 8588 .
12827)) (12896 19704 (MAKE-UNICODE-TRANSLATION-TABLES 12906 . 15666) (GET-MCCS-UNICODE-MAPPING 15668
. 16688) (INVERT-UNICODE-MAPPING 16690 . 18483) (XCCSTOMCCS-MAPPING 18485 . 19702)) (19705 26328 (
ALL-UNICODE-MAPPINGS 19715 . 24991) (XCCSJAPANESECHARSETS 24993 . 26326)) (26373 37135 (
WRITE-UNICODE-MAPPING 26383 . 30127) (WRITE-UNICODE-INCLUDED 30129 . 34441) (
WRITE-UNICODE-MAPPING-HEADER 34443 . 35691) (WRITE-UNICODE-MAPPING-FILENAME 35693 . 37133)) (37136
37812 (XCCS-UTF8-AFTER-OPEN 37146 . 37810)) (40337 42426 (UTF8HEXSTRING 40347 . 42424)) (42453 44495 (
SHOWCHARS 42463 . 44493)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,14 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 2-Sep-2025 12:06:52" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>UNIXCOMM.;14 14825
(FILECREATED " 5-Feb-2026 18:38:23" {WMEDLEY}<library>UNIXCOMM.;15 14717
:EDIT-BY rmk
:CHANGES-TO (FNS FORK-UNIX)
:PREVIOUS-DATE "29-Apr-2025 22:45:47"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>UNIXCOMM.;13)
:PREVIOUS-DATE " 2-Sep-2025 12:06:52" {WMEDLEY}<library>UNIXCOMM.;14)
(PRETTYCOMPRINT UNIXCOMMCOMS)
@@ -74,13 +72,11 @@
else (SUBRCALL UNIX-HANDLECOMM 4])
(FORK-UNIX
[LAMBDA (STR) (* ; "Edited 2-Sep-2025 12:03 by rmk")
[LAMBDA (STR) (* ; "Edited 5-Feb-2026 18:38 by rmk")
(* ; "Edited 2-Sep-2025 12:03 by rmk")
(* ; "Edited 29-Apr-2025 22:45 by rmk")
(* ; "Edited 25-May-88 15:47 by drc:")
(* ;; "MTOUBYTES converts MCCS codes to Unicodes, and then lays out the bytes of the UTF-8 encoding of those characters. ")
(SUBRCALL UNIX-HANDLECOMM 0 (MTOUTF8STRING (\DTEST STR 'ONED-ARRAY])
(SUBRCALL UNIX-HANDLECOMM 0 (MTOSYSSTRING (\DTEST STR 'ONED-ARRAY])
(UNIX-KILL
[LAMBDA (CONN) (* ; "Edited 25-May-88 16:04 by drc:")
@@ -321,10 +317,10 @@
(PUTPROPS UNIXCOMM FILETYPE COMPILE-FILE)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1903 7339 (FORK-SHELL 1913 . 3110) (FORK-UNIX 3112 . 3659) (UNIX-KILL 3661 . 3850) (
UNIX-WRITE 3852 . 4563) (CREATE-SHELL-STREAM 4565 . 5449) (CREATE-PROCESS-STREAM 5451 . 6290) (
UNIXCOMM-AROUNDEXITFN 6292 . 7337)) (7387 12578 (INITIALIZE-SHELL-DEVICE 7397 . 8825) (
UNIX-GET-NEXT-BUFFER 8827 . 11027) (UNIX-BACKFILEPTR 11029 . 11441) (UNIX-STREAM-EOFP 11443 . 11924) (
UNIX-STREAM-OUT 11926 . 12182) (UNIX-STREAM-CLOSE 12184 . 12576)) (12826 14532 (
CREATE-UNIX-SOCKET-STREAM 12836 . 13642) (ACCEPT-UNIX-SOCKET-STREAM 13644 . 14530)))))
(FILEMAP (NIL (1821 7231 (FORK-SHELL 1831 . 3028) (FORK-UNIX 3030 . 3551) (UNIX-KILL 3553 . 3742) (
UNIX-WRITE 3744 . 4455) (CREATE-SHELL-STREAM 4457 . 5341) (CREATE-PROCESS-STREAM 5343 . 6182) (
UNIXCOMM-AROUNDEXITFN 6184 . 7229)) (7279 12470 (INITIALIZE-SHELL-DEVICE 7289 . 8717) (
UNIX-GET-NEXT-BUFFER 8719 . 10919) (UNIX-BACKFILEPTR 10921 . 11333) (UNIX-STREAM-EOFP 11335 . 11816) (
UNIX-STREAM-OUT 11818 . 12074) (UNIX-STREAM-CLOSE 12076 . 12468)) (12718 14424 (
CREATE-UNIX-SOCKET-STREAM 12728 . 13534) (ACCEPT-UNIX-SOCKET-STREAM 13536 . 14422)))))
STOP

BIN
library/UNIXCOMM.DFASL Normal file

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Jan-2026 11:09:09" {WMEDLEY}<library>UNIXPRINT.;15 11553
(FILECREATED " 5-Feb-2026 18:37:09" {WMEDLEY}<library>UNIXPRINT.;17 11663
:EDIT-BY rmk
:CHANGES-TO (FNS UnixPrint)
:CHANGES-TO (FNS UnixShellQuote)
:PREVIOUS-DATE "18-Jan-2026 08:44:40" {WMEDLEY}<library>UNIXPRINT.;14)
:PREVIOUS-DATE "25-Jan-2026 11:09:09" {WMEDLEY}<library>UNIXPRINT.;15)
(PRETTYCOMPRINT UNIXPRINTCOMS)
@@ -130,7 +130,8 @@
(UnixShellQuote
[LAMBDA (STRING)
(DECLARE (LOCALVARS . T)) (* ; "Edited 18-Jan-2026 08:34 by rmk")
(DECLARE (LOCALVARS . T)) (* ; "Edited 5-Feb-2026 18:37 by rmk")
(* ; "Edited 18-Jan-2026 08:34 by rmk")
(* ; "Edited 19-Apr-89 21:14 by TAL")
(LET* ((X (CHCON STRING))
(CT X)
@@ -155,9 +156,9 @@
(CHARCODE SPACE))
(T C))
(SETQ CT (CDR CT]
(MTOUTF8STRING (COND
(FLG (CONCATCODES X))
(T STRING])
(MTOSYSSTRING (CL:IF FLG
(CONCATCODES X)
STRING)])
(UnixTempFile
[LAMBDA (Prefix DontOpen) (* ; "Edited 28-Apr-93 13:49 by rmk:")
@@ -251,6 +252,6 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1046 10887 (UnixPrint 1056 . 6392) (UnixShellQuote 6394 . 7977) (UnixTempFile 7979 .
9202) (UnixPrintCommand 9204 . 10885)))))
(FILEMAP (NIL (1051 10997 (UnixPrint 1061 . 6397) (UnixShellQuote 6399 . 8087) (UnixTempFile 8089 .
9312) (UnixPrintCommand 9314 . 10995)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,10 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "15-Feb-2025 14:11:54" {WMEDLEY}<library>lafite>LAFITE-INDENT.;4 26926
(FILECREATED "18-Feb-2026 15:47:08" {WMEDLEY}<library>LAFITE>LAFITE-INDENT.;2 26210
:EDIT-BY rmk
:CHANGES-TO (FNS TEDIT-INDENT-BREAK-LONG-LINES TEDIT-INDENT-SELECTION TEDIT-OPEN-LINE
TEDIT-MAKE-LINES-EXPLICIT TEDIT-INDENT-SET-INDENT)
:PREVIOUS-DATE "15-Feb-2025 09:21:58" {WMEDLEY}<library>lafite>LAFITE-INDENT.;3)
:PREVIOUS-DATE "22-Jan-87 01:34:36" {WMEDLEY}<library>LAFITE>LAFITE-INDENT.;1)
(PRETTYCOMPRINT LAFITE-INDENTCOMS)
@@ -133,10 +130,14 @@
max-length max-length])
(TEDIT-INDENT-BREAK-LONG-LINES
[LAMBDA (text-stream explicit-paragraph-breaks?) (* ; "Edited 15-Feb-2025 14:07 by rmk")
(* smL "21-Jan-87 16:03")
(* ;;; "Break the current selection into explicit lines, each having no more than *TEDIT-INDENT-LINE-LENGTH* characters. --- If the flag *TEDIT-INDENT-KEEP-LINE-BREAKS* is false, existing line breaks in the current selection are removed. --- This is intended to be used in Lafite, where one wants to indent a piece of a forwarded document, but can be used in any TEdit document")
[LAMBDA (text-stream explicit-paragraph-breaks?) (* smL "21-Jan-87 16:03")
(* * Break the current selection into explicit lines, each having no more than
 *TEDIT-INDENT-LINE-LENGTH* characters. -
 If the flag *TEDIT-INDENT-KEEP-LINE-BREAKS* is false, existing line breaks in
 the current selection are removed. -
 This is intended to be used in Lafite, where one wants to indent a piece of a
 forwarded document, but can be used in any TEdit document)
(LET ((selection (TEDIT.GETSEL text-stream)))
(TEDIT-INDENT-REPLACE-SELECTION
@@ -144,13 +145,11 @@
(CONCATLIST (for string on (TEDIT-INDENT-SEPERATE-PARAGRAPHS (TEDIT.SEL.AS.STRING
text-stream selection)
explicit-paragraph-breaks?)
bind [hanging-indent _ (AND [NOT (EQP (GETLD (CAR (GETSEL selection L1))
LCHAR1)
(TEDIT.SELPROP selection 'CH#]
(DIFFERENCE (TEDIT.SELPROP selection
'CH#)
(GETLD (CAR (GETSEL selection L1))
LCHAR1]
bind [hanging-indent _
(AND (NOT (EQP (fetch CHAR1 of (CAR (fetch L1 of selection)))
(fetch CH# of selection)))
(DIFFERENCE (fetch CH# of selection)
(fetch CHAR1 of (CAR (fetch L1 of selection]
join (PROG1 (LIST (TEDIT-INDENT-ADD-INDENTATION (CAR string)
"" *TEDIT-INDENT-LINE-LENGTH* hanging-indent)
*eol-string*)
@@ -185,10 +184,15 @@
'RIGHT])
(TEDIT-INDENT-SELECTION
[LAMBDA (text-stream explicit-paragraph-breaks?) (* ; "Edited 15-Feb-2025 14:07 by rmk")
(* smL "21-Jan-87 16:00")
(* ;;; "Indent the current selection by prefacing each line with the value of *TEDIT-INDENT-STRING*, and inserting line breaks after each *TEDIT-INDENT-LINE-LENGTH* characters. --- If the flag *TEDIT-INDENT-KEEP-LINE-BREAKS* is false, existing line breaks in the current selection are removed. --- This is intended to be used in Lafite, where one wants to indent a piece of a forwarded document, but can be used in any TEdit document")
[LAMBDA (text-stream explicit-paragraph-breaks?) (* smL "21-Jan-87 16:00")
(* * Indent the current selection by prefacing each line with the value of
 *TEDIT-INDENT-STRING*, and inserting line breaks after each
 *TEDIT-INDENT-LINE-LENGTH* characters. -
 If the flag *TEDIT-INDENT-KEEP-LINE-BREAKS* is false, existing line breaks in
 the current selection are removed. -
 This is intended to be used in Lafite, where one wants to indent a piece of a
 forwarded document, but can be used in any TEdit document)
(LET ((selection (TEDIT.GETSEL text-stream)))
(TEDIT-INDENT-REPLACE-SELECTION
@@ -196,13 +200,11 @@
(CONCATLIST (for string on (TEDIT-INDENT-SEPERATE-PARAGRAPHS (TEDIT.SEL.AS.STRING
text-stream selection)
explicit-paragraph-breaks?)
bind [hanging-indent _ (AND [NOT (EQP (GETLD (CAR (GETSEL selection L1))
LCHAR1)
(TEDIT.SELPROP selection 'CH#]
(DIFFERENCE (TEDIT.SELPROP selection
'CH#)
(GETLD (CAR (GETSEL selection L1))
LCHAR1]
bind [hanging-indent _
(AND (NOT (EQP (fetch CHAR1 of (CAR (fetch L1 of selection)))
(fetch CH# of selection)))
(DIFFERENCE (fetch CH# of selection)
(fetch CHAR1 of (CAR (fetch L1 of selection]
join (PROG1 (LIST (TEDIT-INDENT-ADD-INDENTATION (CAR string)
*TEDIT-INDENT-STRING* *TEDIT-INDENT-LINE-LENGTH*
hanging-indent)
@@ -232,19 +234,18 @@
else (\TEDIT-INDENT-SEPERATE-PARAGRAPHS string NIL])
(TEDIT-INDENT-SET-INDENT
[LAMBDA (text-stream) (* ; "Edited 15-Feb-2025 09:21 by rmk")
(* smL "12-Sep-86 17:09")
[LAMBDA (text-stream) (* smL "12-Sep-86 17:09")
(* * Prompt the user for a new indentation string)
(* ;;; "Prompt the user for a new indentation string")
(LET* ((window (\TEDIT.PRIMARYPANE text-stream))
(LET* ((window (fetch \WINDOW of (TEXTOBJ text-stream)))
(pwindow (if window
then (GETPROMPTWINDOW (if (LISTP window)
then (CAR window)
else window))
else PROMPTWINDOW)))
(CLEARW pwindow)
(SETQ *TEDIT-INDENT-STRING* (PROMPTFORWORD "New indent string: " *TEDIT-INDENT-STRING* NIL
(SETQ *TEDIT-INDENT-STRING* (PROMPTFORWORD "New indent string: " *TEDIT-INDENT-STRING* NIL
pwindow NIL NIL (LIST (CHARCODE EOL])
(TEDIT-INDENT-STRIP-INDENTATION
@@ -269,34 +270,36 @@
else string])
(TEDIT-MAKE-LINES-EXPLICIT
[LAMBDA (text-stream) (* ; "Edited 15-Feb-2025 09:20 by rmk")
(* smL " 8-Sep-86 18:20")
(* ;;; "Take the current selection and replace all TEdit end-of-lines with explicit line breaks. --- This is intended to be used in Lafite, where it is sometimes nice to know that anyone receiving the msg will see the same line breaks that you see. see, but can be used in any TEdit document")
[LAMBDA (text-stream) (* smL " 8-Sep-86 18:20")
(* * Take the current selection and replace all TEdit end-of-lines with
 explicit line breaks. -
 This is intended to be used in Lafite, where it is sometimes nice to know that
 anyone receiving the msg will see the same line breaks that you see.
 see, but can be used in any TEdit document)
(LET ((selection (TEDIT.GETSEL text-stream)))
[for i in (bind (this-line _ (CAR (GETSEL selection L1)))
[last-line _ (CAR (LAST (GETSEL selection LN]
repeatuntil (PROGN (SETQ this-line (GETLD this-line NEXTLINE))
(EQ this-line last-line)) collect (GETLD this-line LCHARLIM)
) do (TEDIT.SETSEL text-stream i 1 'LEFT T)
(TEDIT.INSERT text-stream (CONSTANT (CHARACTER (CHARCODE EOL]
[for i in (bind (this-line _ (CAR (fetch L1 of selection)))
[last-line _ (CAR (LAST (fetch LN of selection]
repeatuntil (PROGN (SETQ this-line (fetch NEXTLINE of this-line))
(EQ this-line last-line)) collect (fetch CHARLIM
of this-line))
do (TEDIT.SETSEL text-stream i 1 'LEFT T)
(TEDIT.INSERT text-stream (CONSTANT (CHARACTER (CHARCODE EOL]
(TEDIT.SETSEL text-stream selection NIL 'RIGHT])
(TEDIT-OPEN-LINE
[LAMBDA (text-stream) (* ; "Edited 15-Feb-2025 14:09 by rmk")
(* smL "17-Sep-86 11:13")
(* ;;; "Open a new line at the current position.")
[LAMBDA (text-stream) (* smL "17-Sep-86 11:13")
(* * Open a new line at the current position.)
(LET ((selection (TEDIT.GETSEL text-stream)))
(TEDIT.INSERT text-stream (CONCAT *eol-string* (ALLOCSTRING
(DIFFERENCE (TEDIT.SELPROP selection
'CH#)
(GETLD (CAR (GETSEL selection L1))
LCHAR1))
" ")))
(if (ZEROP (TEDIT.SELPROP selection 'LENGTH))
(TEDIT.INSERT text-stream (CONCAT *eol-string*
(ALLOCSTRING [DIFFERENCE (fetch CH# of selection)
(fetch CHAR1
of (CAR (fetch L1 of selection]
" ")))
(if (ZEROP (fetch DCH of selection))
then (TEDIT.SETSEL text-stream selection])
(TEDIT-REMOVE-INDENT
@@ -433,12 +436,12 @@
"Break long lines by inserting explicit <RETURN>'s"
]
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4363 24314 (TEDIT-INDENT-ADD-INDENTATION 4373 . 6941) (TEDIT-INDENT-BREAK-LINE 6943 .
8876) (TEDIT-INDENT-BREAK-LONG-LINES 8878 . 10828) (TEDIT-INDENT-FIND-BREAKPOINT 10830 . 11653) (
TEDIT-INDENT-REPLACE-SELECTION 11655 . 12212) (TEDIT-INDENT-SELECTION 12214 . 14283) (
TEDIT-INDENT-SELECTION-KEEPING-LINEBREAKS 14285 . 14564) (TEDIT-INDENT-SEPERATE-PARAGRAPHS 14566 .
15295) (TEDIT-INDENT-SET-INDENT 15297 . 16143) (TEDIT-INDENT-STRIP-INDENTATION 16145 . 17365) (
TEDIT-MAKE-LINES-EXPLICIT 17367 . 18517) (TEDIT-OPEN-LINE 18519 . 19453) (TEDIT-REMOVE-INDENT 19455 .
20225) (\TEDIT-INDENT-COUNT-SPACES 20227 . 20828) (\TEDIT-INDENT-FIND-PARAGRAPH-END 20830 . 21801) (
\TEDIT-INDENT-SEPERATE-LINES 21803 . 22601) (\TEDIT-INDENT-SEPERATE-PARAGRAPHS 22603 . 24312)))))
(FILEMAP (NIL (4193 23598 (TEDIT-INDENT-ADD-INDENTATION 4203 . 6771) (TEDIT-INDENT-BREAK-LINE 6773 .
8706) (TEDIT-INDENT-BREAK-LONG-LINES 8708 . 10475) (TEDIT-INDENT-FIND-BREAKPOINT 10477 . 11300) (
TEDIT-INDENT-REPLACE-SELECTION 11302 . 11859) (TEDIT-INDENT-SELECTION 11861 . 13762) (
TEDIT-INDENT-SELECTION-KEEPING-LINEBREAKS 13764 . 14043) (TEDIT-INDENT-SEPERATE-PARAGRAPHS 14045 .
14774) (TEDIT-INDENT-SET-INDENT 14776 . 15550) (TEDIT-INDENT-STRIP-INDENTATION 15552 . 16772) (
TEDIT-MAKE-LINES-EXPLICIT 16774 . 17979) (TEDIT-OPEN-LINE 17981 . 18737) (TEDIT-REMOVE-INDENT 18739 .
19509) (\TEDIT-INDENT-COUNT-SPACES 19511 . 20112) (\TEDIT-INDENT-FIND-PARAGRAPH-END 20114 . 21085) (
\TEDIT-INDENT-SEPERATE-LINES 21087 . 21885) (\TEDIT-INDENT-SEPERATE-PARAGRAPHS 21887 . 23596)))))
STOP

Binary file not shown.

View File

@@ -1,30 +1,28 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED "19-Jan-87 23:56:51" {ERIS}<LISPUSERS>LISPCORE>LAFITEPRIVATEDL.;1 10080
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
previous date%: "19-Jan-87 23:47:54" {PHYLUM}<LISPUSERS>KOTO>LAFITEPRIVATEDL.;2)
(FILECREATED "18-Feb-2026 15:50:14" {WMEDLEY}<library>lafite>LAFITE-PRIVATEDL.;2 9719
:EDIT-BY rmk
:CHANGES-TO (FNS \GV.PARSERECIPIENTS1 \GV.PARSE.PRIVATE.DISTRIBUTION.LIST))
(* "
Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT LAFITE-PRIVATEDLCOMS)
(PRETTYCOMPRINT LAFITEPRIVATEDLCOMS)
(RPAQQ LAFITEPRIVATEDLCOMS ((* * LAFITEDL.EXT is the default extension for dl files when no extension
is specified)
(* * LAFITEDLDIRECTORIES is a list of directories to be searched after
the connected directory and the LAFITEDEFAULTHOST&DIR in order to
locate a dl file when no host or directory is specified)
(INITVARS (LAFITEDL.EXT 'DL)
(LAFITEDLDIRECTORIES NIL))
(* * no functions are user callable)
(FNS \GV.PARSERECIPIENTS1 \GV.PARSE.PRIVATE.DISTRIBUTION.LIST)
(* Lafite's readtable for parsing addresses needs to have CR as a
SEPRCHAR so that lines from a text file can all be parsed at once.
This has no effect on normal operation since before private dls no CR
was ever passed to the parser)
(P (SETSYNTAX (CHARCODE CR)
'SEPRCHAR ADDRESSPARSERRDTBL))))
(RPAQQ LAFITE-PRIVATEDLCOMS
((* * LAFITEDL.EXT is the default extension for dl files when no extension is specified)
(* * LAFITEDLDIRECTORIES is a list of directories to be searched after the connected
directory and the LAFITEDEFAULTHOST&DIR in order to locate a dl file when no host or
directory is specified)
(INITVARS (LAFITEDL.EXT 'DL)
(LAFITEDLDIRECTORIES NIL))
(* * no functions are user callable)
(FNS \GV.PARSERECIPIENTS1 \GV.PARSE.PRIVATE.DISTRIBUTION.LIST)
(* Lafite's readtable for parsing addresses needs to have CR as a SEPRCHAR so that lines from
a text file can all be parsed at once. This has no effect on normal operation since before
private dls no CR was ever passed to the parser)
(P (SETSYNTAX (CHARCODE CR)
'SEPRCHAR ADDRESSPARSERRDTBL))))
(* * LAFITEDL.EXT is the default extension for dl files when no extension is specified)
(* * LAFITEDLDIRECTORIES is a list of directories to be searched after the connected directory and the
@@ -39,7 +37,7 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(DEFINEQ
(\GV.PARSERECIPIENTS1
[LAMBDA (FIELD REGISTRY INTERNALFLG EDITWINDOW) (* N.H.Briggs "19-Jan-87 23:44")
[LAMBDA (FIELD REGISTRY INTERNALFLG EDITWINDOW) (* N.H.Briggs "19-Jan-87 23:44")
(* ;;; "INTERNALFLG = T means produce addresses to give Grapevine; NIL means give human-readable addresses")
@@ -73,8 +71,8 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(CHARCODE %"))
(HELP]
(OR REGISTRY (SETQ REGISTRY DEFAULTREGISTRY))
(* ;; "first just collect all the atoms using a special readtable ")
(* ;; "first just collect all the atoms using a special readtable ")
(SETQ ADDRESSES (when (SETQ ADDR (until (OR (EOFP FIELDSTREAM)
(EQ (SETQ TOKEN (READ FIELDSTREAM
@@ -107,14 +105,13 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(EQ (CADDR ADDRESS)
';))
then
(* ;; "it's a private dl --- foo:;")
(* ;; "it's a private dl --- foo:;")
(\GV.PARSE.PRIVATE.DISTRIBUTION.LIST ADDRESS REGISTRY INTERNALFLG
(\GV.PARSE.PRIVATE.DISTRIBUTION.LIST ADDRESS REGISTRY INTERNALFLG
EDITWINDOW)
else
(* ;; "ADDRESS will only get rebound if there is an address with <>'s in it ")
(* ;;
 "ADDRESS will only get rebound if there is an address with <>'s in it ")
(SETQ VALIDRECIPIENT (\GV.PARSE.SINGLE.ADDRESS
(COND
@@ -128,8 +125,8 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
((OR T INTERNALFLG (NULL REALADDRESS))
VALIDRECIPIENT)
(T
(* ;; "Need to figure out how to make GETREGISTRY of this work, and remove duplicates in MAKEANSWERFORM before we can enable this")
(* ;; "Need to figure out how to make GETREGISTRY of this work, and remove duplicates in MAKEANSWERFORM before we can enable this")
(\GV.REPACKADDRESS (APPEND (LDIFF ADDRESS OPEN)
(LIST '< VALIDRECIPIENT
@@ -137,7 +134,7 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(CDR CLOSE])
(\GV.PARSE.PRIVATE.DISTRIBUTION.LIST
[LAMBDA (DL REGISTRY INTERNALFLG EDITWINDOW) (* N.H.Briggs "19-Jan-87 23:45")
[LAMBDA (DL REGISTRY INTERNALFLG EDITWINDOW) (* N.H.Briggs "19-Jan-87 23:45")
(LET* [(FILENAME (FINDFILE (PACKFILENAME.STRING 'BODY (CAR DL)
'EXTENSION LAFITEDL.EXT)
T
@@ -162,10 +159,10 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
file can all be parsed at once. This has no effect on normal operation since before private dls no CR
was ever passed to the parser)
(SETSYNTAX (CHARCODE CR)
'SEPRCHAR ADDRESSPARSERRDTBL)
(PUTPROPS LAFITEPRIVATEDL COPYRIGHT ("Xerox Corporation" 1986 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1965 9682 (\GV.PARSERECIPIENTS1 1975 . 8562) (\GV.PARSE.PRIVATE.DISTRIBUTION.LIST 8564
. 9680)))))
(FILEMAP (NIL (1617 9389 (\GV.PARSERECIPIENTS1 1627 . 8273) (\GV.PARSE.PRIVATE.DISTRIBUTION.LIST 8275
. 9387)))))
STOP

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
(FILECREATED " 4-Feb-2026 16:02:02" {WMEDLEY}<library>TEDIT>TEDIT.;852 146779
(FILECREATED " 2-Mar-2026 18:32:06" {WMEDLEY}<library>tedit>TEDIT.;853 146506
:EDIT-BY rmk
:CHANGES-TO (FNS TEDIT.MAP.OBJECTS TEDIT.PARAGRAPH.BOUNDARIES)
(VARS TEDITCOMS)
:CHANGES-TO (VARS TEDITCOMS)
:PREVIOUS-DATE "31-Jan-2026 11:49:19" {WMEDLEY}<library>TEDIT>TEDIT.;849)
:PREVIOUS-DATE " 4-Feb-2026 16:02:02" {WMEDLEY}<library>tedit>TEDIT.;852)
(PRETTYCOMPRINT TEDITCOMS)
@@ -29,9 +28,7 @@
(EXPORT (FILES (FROM LOADUPS)
EXPORTS.ALL)))
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES TEDIT-EXPORTS.ALL))
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
UNICODE)))
(DECLARE%: EVAL@COMPILE DONTCOPY (FILES TEDIT-EXPORTS.ALL)))
[DECLARE%: EVAL@COMPILE DONTCOPY
(* ;; "Assertions go to comments if not being checked, so we see value-warnings")
@@ -158,11 +155,6 @@
(FILESLOAD TEDIT-EXPORTS.ALL)
)
(DECLARE%: EVAL@COMPILE DONTCOPY
(FILESLOAD (LOADCOMP)
UNICODE)
)
(DECLARE%: EVAL@COMPILE DONTCOPY
(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
(PUTPROPS TEDIT-ASSERT MACRO [ARGS (COND
@@ -2353,27 +2345,27 @@
(DEFAULT.IMAGETYPE.CONVERSIONS '(TEDIT TEDIT.TO.IMAGEFILE))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4936 7330 (MAKE-TEDIT-EXPORTS.ALL 4946 . 5492) (UPDATE-TEDIT 5494 . 6423) (EDIT-TEDIT
6425 . 7328)) (8760 37759 (TEDIT 8770 . 11384) (TEXTSTREAM 11386 . 13275) (TEXTSTREAMP 13277 . 13661)
(COERCETEXTSTREAM 13663 . 17874) (TEDIT.CONCAT 17876 . 21178) (TEDITSTRING 21180 . 22094) (TEDIT-SEE
22096 . 22780) (TEDIT.COPY 22782 . 24927) (TEDIT.DELETE 24929 . 26290) (TEDIT.INSERT 26292 . 29261) (
TEDIT.TERPRI 29263 . 30377) (TEDIT.KILL 30379 . 31361) (TEDIT.QUIT 31363 . 32729) (TEDIT.MOVE 32731 .
33619) (TEDIT.STRINGWIDTH 33621 . 34292) (TEDIT.CHARWIDTH 34294 . 36536) (TEDIT.PARAGRAPH.BOUNDARIES
36538 . 37757)) (37760 39701 (TEXTOBJ 37770 . 38235) (COERCETEXTOBJ 38237 . 39699)) (41101 42751 (
TDRIBBLE 41111 . 42749)) (42792 54772 (TEDIT.INSERT.OBJECT 42802 . 46509) (TEDIT.EDIT.OBJECT 46511 .
49451) (TEDIT.OBJECT.CHANGED 49453 . 52643) (TEDIT.MAP.OBJECTS 52645 . 54300) (\TEDIT.FIRST.OBJPIECE
54302 . 54535) (\TEDIT.NEXT.OBJPIECE 54537 . 54770)) (54795 62238 (\TEDIT.CONCAT.PAGEFRAMES 54805 .
59872) (\TEDIT.GET.PAGE.HEADINGS 59874 . 60903) (\TEDIT.CONCAT.INSTALL.HEADINGS 60905 . 62236)) (62239
65846 (\TEDIT.MOVE.MSG 62249 . 64330) (\TEDIT.READONLY 64332 . 65844)) (65847 71738 (TEDIT.NCHARS
65857 . 66230) (TEDIT.RPLCHARCODE 66232 . 69222) (TEDIT.NTHCHARCODE 69224 . 71267) (TEDIT.NTHCHAR
71269 . 71736)) (71784 128828 (\TEDIT1 71794 . 73871) (\TEDIT.INSERT 73873 . 79986) (\TEDIT.MOVE 79988
. 88086) (\TEDIT.COPY 88088 . 92694) (\TEDIT.REPLACE.SELPIECES 92696 . 97232) (
\TEDIT.INSERT.SELPIECES 97234 . 100231) (\TEDIT.RESTARTFN 100233 . 102738) (\TEDIT.CHARDELETE 102740
. 105669) (\TEDIT.COPYPIECE 105671 . 110833) (\TEDIT.APPLY.OBJFN 110835 . 113921) (\TEDIT.DELETE
113923 . 118291) (\TEDIT.DIFFUSE.PARALOOKS 118293 . 120564) (\TEDIT.WORDDELETE 120566 . 122181) (
\TEDIT.WORDDELETE.FORWARD 122183 . 123972) (\TEDIT.FINISHEDIT? 123974 . 128826)) (128829 129488 (
\TEDIT.THELP 128839 . 129486)) (129522 138653 (\TEDIT.PARAPIECES 129532 . 131506) (\TEDIT.PARACHNOS
131508 . 132400) (\TEDIT.PARA.FIRST 132402 . 135503) (\TEDIT.PARA.LAST 135505 . 138651)) (138654
145749 (\TEDIT.WORD.FIRST 138664 . 142668) (\TEDIT.WORD.LAST 142670 . 145747)) (145950 146227 (
TEDITSYSTEMDATE 145960 . 146225)) (146363 146570 (TEDIT.IMAGESOURCEP 146373 . 146568)))))
(FILEMAP (NIL (4738 7132 (MAKE-TEDIT-EXPORTS.ALL 4748 . 5294) (UPDATE-TEDIT 5296 . 6225) (EDIT-TEDIT
6227 . 7130)) (8487 37486 (TEDIT 8497 . 11111) (TEXTSTREAM 11113 . 13002) (TEXTSTREAMP 13004 . 13388)
(COERCETEXTSTREAM 13390 . 17601) (TEDIT.CONCAT 17603 . 20905) (TEDITSTRING 20907 . 21821) (TEDIT-SEE
21823 . 22507) (TEDIT.COPY 22509 . 24654) (TEDIT.DELETE 24656 . 26017) (TEDIT.INSERT 26019 . 28988) (
TEDIT.TERPRI 28990 . 30104) (TEDIT.KILL 30106 . 31088) (TEDIT.QUIT 31090 . 32456) (TEDIT.MOVE 32458 .
33346) (TEDIT.STRINGWIDTH 33348 . 34019) (TEDIT.CHARWIDTH 34021 . 36263) (TEDIT.PARAGRAPH.BOUNDARIES
36265 . 37484)) (37487 39428 (TEXTOBJ 37497 . 37962) (COERCETEXTOBJ 37964 . 39426)) (40828 42478 (
TDRIBBLE 40838 . 42476)) (42519 54499 (TEDIT.INSERT.OBJECT 42529 . 46236) (TEDIT.EDIT.OBJECT 46238 .
49178) (TEDIT.OBJECT.CHANGED 49180 . 52370) (TEDIT.MAP.OBJECTS 52372 . 54027) (\TEDIT.FIRST.OBJPIECE
54029 . 54262) (\TEDIT.NEXT.OBJPIECE 54264 . 54497)) (54522 61965 (\TEDIT.CONCAT.PAGEFRAMES 54532 .
59599) (\TEDIT.GET.PAGE.HEADINGS 59601 . 60630) (\TEDIT.CONCAT.INSTALL.HEADINGS 60632 . 61963)) (61966
65573 (\TEDIT.MOVE.MSG 61976 . 64057) (\TEDIT.READONLY 64059 . 65571)) (65574 71465 (TEDIT.NCHARS
65584 . 65957) (TEDIT.RPLCHARCODE 65959 . 68949) (TEDIT.NTHCHARCODE 68951 . 70994) (TEDIT.NTHCHAR
70996 . 71463)) (71511 128555 (\TEDIT1 71521 . 73598) (\TEDIT.INSERT 73600 . 79713) (\TEDIT.MOVE 79715
. 87813) (\TEDIT.COPY 87815 . 92421) (\TEDIT.REPLACE.SELPIECES 92423 . 96959) (
\TEDIT.INSERT.SELPIECES 96961 . 99958) (\TEDIT.RESTARTFN 99960 . 102465) (\TEDIT.CHARDELETE 102467 .
105396) (\TEDIT.COPYPIECE 105398 . 110560) (\TEDIT.APPLY.OBJFN 110562 . 113648) (\TEDIT.DELETE 113650
. 118018) (\TEDIT.DIFFUSE.PARALOOKS 118020 . 120291) (\TEDIT.WORDDELETE 120293 . 121908) (
\TEDIT.WORDDELETE.FORWARD 121910 . 123699) (\TEDIT.FINISHEDIT? 123701 . 128553)) (128556 129215 (
\TEDIT.THELP 128566 . 129213)) (129249 138380 (\TEDIT.PARAPIECES 129259 . 131233) (\TEDIT.PARACHNOS
131235 . 132127) (\TEDIT.PARA.FIRST 132129 . 135230) (\TEDIT.PARA.LAST 135232 . 138378)) (138381
145476 (\TEDIT.WORD.FIRST 138391 . 142395) (\TEDIT.WORD.LAST 142397 . 145474)) (145677 145954 (
TEDITSYSTEMDATE 145687 . 145952)) (146090 146297 (TEDIT.IMAGESOURCEP 146100 . 146295)))))
STOP

View File

@@ -1,12 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 7-Feb-2026 17:02:37" {WMEDLEY}<library>tedit>TEDIT-FILE.;657 173103
(FILECREATED "15-Feb-2026 23:45:51" {WMEDLEY}<library>tedit>TEDIT-FILE.;666 175062
:EDIT-BY rmk
:CHANGES-TO (FNS TEDITFROMLISPSOURCE)
:CHANGES-TO (FNS \TEDIT.PUT.MCCS.SPLITPIECES \TEDIT.PUT.PCTB.NEXTNEW)
(VARS TEDIT-FILECOMS)
:PREVIOUS-DATE "23-Oct-2025 08:49:06" {WMEDLEY}<library>tedit>TEDIT-FILE.;656)
:PREVIOUS-DATE "14-Feb-2026 10:32:44" {WMEDLEY}<library>tedit>TEDIT-FILE.;659)
(PRETTYCOMPRINT TEDIT-FILECOMS)
@@ -50,8 +51,9 @@
(* ;; "Putting pageframe functions are on TEDIT-PAGE)")
(FNS \TEDIT.PUT.PCTB \TEDIT.PUT.PCTB.PIECEDATA \TEDIT.PUT.TRAILER
\TEDIT.PUT.PCTB.MERGEABLE \TEDIT.PUT.UTF8.SPLITPIECES \TEDIT.PUT.PCTB.NEXTNEW
\TEDIT.INSERT.NEWPIECES \TEDIT.PUTRESET \ARBOUT \ATMOUT \DWOUT \STRINGOUT)
\TEDIT.PUT.PCTB.MERGEABLE \TEDIT.PUT.UTF8.SPLITPIECES \TEDIT.PUT.MCCS.SPLITPIECES
\TEDIT.PUT.PCTB.NEXTNEW \TEDIT.INSERT.NEWPIECES \TEDIT.PUTRESET \ARBOUT \ATMOUT
\DWOUT \STRINGOUT)
(FNS \TEDIT.PUT.CHARLOOKS.LIST \TEDIT.PUT.SINGLE.CHARLOOKS \TEDIT.PUT.CHARLOOKS
\TEDIT.PUT.CHARLOOKS1 \TEDIT.PUT.OBJECT)
(FNS \TEDIT.PUT.PARALOOKS.LIST \TEDIT.PUT.SINGLE.PARALOOKS \TEDIT.PUT.PARALOOKS))
@@ -1830,6 +1832,7 @@
(\TEDIT.PUT.PCTB
[LAMBDA (TEXTOBJ CHARSTREAM FORMATSTREAM CONTINUE KEEPSEPARATE)
(* ; "Edited 14-Feb-2026 10:32 by rmk")
(* ; "Edited 9-Sep-2025 21:32 by rmk")
(* ; "Edited 26-Apr-2025 00:11 by rmk")
(* ; "Edited 21-Oct-2024 00:33 by rmk")
@@ -1922,10 +1925,10 @@
(* ;; "For MCCS, CHARSET will put out the char-shifting prefix bytes as needed. In format-version 3 all the file bytes belong to a piece, no skipping in the file. TEDIT.GET calls \TEDIT.INTERPRET.XCCS.SHIFTS to shave those bytes. NSHIFTBYTES is used here if the edit will continue.")
(CHARSET CHARSTREAM (CL:IF (MEMB (PTYPE PC)
FAT.PTYPES)
T
0))
(CHARSET CHARSTREAM (OR (AND (EQ EXTFORMAT :XCCS)
(MEMB (PTYPE PC)
FAT.PTYPES))
(PCHARSET PC)))
(SETQ NSHIFTBYTES (IDIFFERENCE (\GETFILEPTR CHARSTREAM)
OLDBYTE#)))
(do (\TEDIT.PUT.PCTB.PIECEDATA PC CHARSTREAM TEXTOBJ FORMATSTREAM OLDBYTE#)
@@ -2152,8 +2155,35 @@
(RETURN))))
NIL])
(\TEDIT.PUT.MCCS.SPLITPIECES
[LAMBDA (TEXTOBJ) (* ; "Edited 15-Feb-2026 23:45 by rmk")
(* ;; "We are putting to a :MCCS format file, and MCCS doesn't support single-byte runs of non-charset 0 characters. This function splits fat pieces into subpieces with only charset-0 characters or no charset-0 characters. The former will be put out as THINFILE pieces, the latter as FATFILE2.")
(for PC FIRST0 FIRSTNON0 inpieces (\TEDIT.FIRSTPIECE TEXTOBJ)
when [AND (MEMB (PTYPE PC)
(CONSTANT (LIST FATSTRING.PTYPE FATFILE2.PTYPE UTF8.PTYPE)))
(SETQ FIRST0 (find I from 0 to (PLAST PC)
suchthat (EQ 0 (\CHARSET (\TEDIT.PIECE.NTHCHARCODE PC I]
do (if [SETQ FIRSTNON0 (find I from (ADD1 FIRST0) to (PLAST PC)
suchthat (NEQ 0 (\CHARSET (\TEDIT.PIECE.NTHCHARCODE PC I]
then
(* ;; "xxx000yyy --> xxx 000yyy or 000yyy --> 000 yyy")
(\TEDIT.SPLITPIECE PC (CL:IF (EQ FIRST0 0)
FIRSTNON0
FIRST0)
TEXTOBJ) (* ; "Iterate to the residual piece")
(SETQ PC (PREVPIECE PC))
elseif (NEQ 0 FIRST0)
then
(* ;; "xxx000")
(\TEDIT.SPLITPIECE PC FIRST0 TEXTOBJ])
(\TEDIT.PUT.PCTB.NEXTNEW
[LAMBDA (NEXTNEW PC OLDBYTE# RUNLEN EXTFORMAT TEXTOBJ EOLC NSHIFTBYTES)
(* ; "Edited 15-Feb-2026 15:09 by rmk")
(* ; "Edited 25-Apr-2025 08:48 by rmk")
(* ; "Edited 26-Mar-2025 09:27 by rmk")
(* ; "Edited 21-Oct-2024 00:26 by rmk")
@@ -2202,7 +2232,7 @@
 "The file may have LF, but we want to restore EOL internally")
(CL:WHEN [AND (EQ THINFILE.PTYPE (PTYPE NEXTNEW))
(EQ (CHARCODE EOL)
(\TEDIT.PIECE.NTHCHARCODE PC (PLEN PC]
(\TEDIT.PIECE.NTHCHARCODE PC (PLAST PC]
(if (EQ 1 (PLEN NEXTNEW))
then (FSETPC NEXTNEW PTYPE THINSTRING.PTYPE)
(FSETPC NEXTNEW PCONTENTS (ALLOCSTRING 1 (CHARCODE EOL)))
@@ -2691,28 +2721,29 @@
(RPAQ? *TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (5304 35563 (TEDIT.GET 5314 . 11724) (TEDIT.FORMATTEDFILEP 11726 . 13042) (
TEDIT.FILEDATE 13044 . 14353) (TEDIT.INCLUDE 14355 . 22384) (TEDIT.RAW.INCLUDE 22386 . 23194) (
TEDIT.PUT 23196 . 31552) (TEDIT.PUT.STREAM 31554 . 35561)) (35564 56838 (\TEDIT.GET.FOREIGN.FILE 35574
. 38999) (\TEDIT.GET.UNFORMATTED.FILE 39001 . 43307) (\TEDIT.GET.FORMATTED.FILE 43309 . 46952) (
\TEDIT.FORMATTEDSTREAMP 46954 . 50085) (\ARBIN 50087 . 50807) (\ATMIN 50809 . 51346) (\DWIN 51348 .
51727) (\STRINGIN 51729 . 52437) (\TEDIT.GET.TRAILER 52439 . 55307) (\TEDIT.CACHEFILE 55309 . 56836))
(57004 73042 (\TEDIT.GET.PIECES3 57014 . 67977) (\TEDIT.GET.PROPS3 67979 . 71201) (
\TEDIT.MAKE.STRINGPIECE 71203 . 73040)) (73043 86469 (\TEDIT.GET.UNFORMATTED.FILE.MCCS 73053 . 79286)
(\TEDIT.INTERPRET.MCCS.SHIFTS 79288 . 85533) (\TEDIT.CONVERT.XCCSTOMCCS 85535 . 86467)) (86491 92736 (
\TEDIT.GET.UNFORMATTED.FILE.UTF8 86501 . 92734)) (92759 104101 (\TEDIT.GET.CHARLOOKS.LIST 92769 .
93500) (\TEDIT.GET.SINGLE.CHARLOOKS 93502 . 100574) (\TEDIT.GET.CHARLOOKS 100576 . 102132) (
\TEDIT.GET.PARALOOKS.INDEX 102134 . 102678) (\TEDIT.GET.CHARLOOKS.INDEX 102680 . 104099)) (104102
111759 (\TEDIT.GET.PARALOOKS.LIST 104112 . 104734) (\TEDIT.GET.SINGLE.PARALOOKS 104736 . 111757)) (
111760 115593 (\TEDIT.GET.OBJECT 111770 . 115591)) (115658 148921 (\TEDIT.PUT.PCTB 115668 . 125575) (
\TEDIT.PUT.PCTB.PIECEDATA 125577 . 128775) (\TEDIT.PUT.TRAILER 128777 . 130105) (
\TEDIT.PUT.PCTB.MERGEABLE 130107 . 133880) (\TEDIT.PUT.UTF8.SPLITPIECES 133882 . 138584) (
\TEDIT.PUT.PCTB.NEXTNEW 138586 . 143082) (\TEDIT.INSERT.NEWPIECES 143084 . 146519) (\TEDIT.PUTRESET
146521 . 146763) (\ARBOUT 146765 . 147489) (\ATMOUT 147491 . 148096) (\DWOUT 148098 . 148377) (
\STRINGOUT 148379 . 148919)) (148922 161656 (\TEDIT.PUT.CHARLOOKS.LIST 148932 . 150604) (
\TEDIT.PUT.SINGLE.CHARLOOKS 150606 . 156886) (\TEDIT.PUT.CHARLOOKS 156888 . 158227) (
\TEDIT.PUT.CHARLOOKS1 158229 . 159280) (\TEDIT.PUT.OBJECT 159282 . 161654)) (161657 169296 (
\TEDIT.PUT.PARALOOKS.LIST 161667 . 162569) (\TEDIT.PUT.SINGLE.PARALOOKS 162571 . 168155) (
\TEDIT.PUT.PARALOOKS 168157 . 169294)) (169391 172796 (TEDITFROMLISPSOURCE 169401 . 172045) (
SHELLSCRIPTP 172047 . 172276) (TEDITFROMSHELLSCRIPT 172278 . 172794)))))
(FILEMAP (NIL (5423 35682 (TEDIT.GET 5433 . 11843) (TEDIT.FORMATTEDFILEP 11845 . 13161) (
TEDIT.FILEDATE 13163 . 14472) (TEDIT.INCLUDE 14474 . 22503) (TEDIT.RAW.INCLUDE 22505 . 23313) (
TEDIT.PUT 23315 . 31671) (TEDIT.PUT.STREAM 31673 . 35680)) (35683 56957 (\TEDIT.GET.FOREIGN.FILE 35693
. 39118) (\TEDIT.GET.UNFORMATTED.FILE 39120 . 43426) (\TEDIT.GET.FORMATTED.FILE 43428 . 47071) (
\TEDIT.FORMATTEDSTREAMP 47073 . 50204) (\ARBIN 50206 . 50926) (\ATMIN 50928 . 51465) (\DWIN 51467 .
51846) (\STRINGIN 51848 . 52556) (\TEDIT.GET.TRAILER 52558 . 55426) (\TEDIT.CACHEFILE 55428 . 56955))
(57123 73161 (\TEDIT.GET.PIECES3 57133 . 68096) (\TEDIT.GET.PROPS3 68098 . 71320) (
\TEDIT.MAKE.STRINGPIECE 71322 . 73159)) (73162 86588 (\TEDIT.GET.UNFORMATTED.FILE.MCCS 73172 . 79405)
(\TEDIT.INTERPRET.MCCS.SHIFTS 79407 . 85652) (\TEDIT.CONVERT.XCCSTOMCCS 85654 . 86586)) (86610 92855 (
\TEDIT.GET.UNFORMATTED.FILE.UTF8 86620 . 92853)) (92878 104220 (\TEDIT.GET.CHARLOOKS.LIST 92888 .
93619) (\TEDIT.GET.SINGLE.CHARLOOKS 93621 . 100693) (\TEDIT.GET.CHARLOOKS 100695 . 102251) (
\TEDIT.GET.PARALOOKS.INDEX 102253 . 102797) (\TEDIT.GET.CHARLOOKS.INDEX 102799 . 104218)) (104221
111878 (\TEDIT.GET.PARALOOKS.LIST 104231 . 104853) (\TEDIT.GET.SINGLE.PARALOOKS 104855 . 111876)) (
111879 115712 (\TEDIT.GET.OBJECT 111889 . 115710)) (115777 150880 (\TEDIT.PUT.PCTB 115787 . 125844) (
\TEDIT.PUT.PCTB.PIECEDATA 125846 . 129044) (\TEDIT.PUT.TRAILER 129046 . 130374) (
\TEDIT.PUT.PCTB.MERGEABLE 130376 . 134149) (\TEDIT.PUT.UTF8.SPLITPIECES 134151 . 138853) (
\TEDIT.PUT.MCCS.SPLITPIECES 138855 . 140433) (\TEDIT.PUT.PCTB.NEXTNEW 140435 . 145041) (
\TEDIT.INSERT.NEWPIECES 145043 . 148478) (\TEDIT.PUTRESET 148480 . 148722) (\ARBOUT 148724 . 149448) (
\ATMOUT 149450 . 150055) (\DWOUT 150057 . 150336) (\STRINGOUT 150338 . 150878)) (150881 163615 (
\TEDIT.PUT.CHARLOOKS.LIST 150891 . 152563) (\TEDIT.PUT.SINGLE.CHARLOOKS 152565 . 158845) (
\TEDIT.PUT.CHARLOOKS 158847 . 160186) (\TEDIT.PUT.CHARLOOKS1 160188 . 161239) (\TEDIT.PUT.OBJECT
161241 . 163613)) (163616 171255 (\TEDIT.PUT.PARALOOKS.LIST 163626 . 164528) (
\TEDIT.PUT.SINGLE.PARALOOKS 164530 . 170114) (\TEDIT.PUT.PARALOOKS 170116 . 171253)) (171350 174755 (
TEDITFROMLISPSOURCE 171360 . 174004) (SHELLSCRIPTP 174006 . 174235) (TEDITFROMSHELLSCRIPT 174237 .
174753)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "10-Feb-2026 11:07:12" {WMEDLEY}<library>TEDIT>TEDIT-LOOKS.;465 155591
(FILECREATED "16-Feb-2026 00:36:00" {WMEDLEY}<library>TEDIT>TEDIT-LOOKS.;467 155443
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.CHANGE.CHARLOOKS \TEDIT.CHANGE.PARALOOKS)
:CHANGES-TO (FNS \TEDIT.MCCS.TRANSLATE)
:PREVIOUS-DATE " 7-Dec-2025 16:32:32" {WMEDLEY}<library>tedit>TEDIT-LOOKS.;460)
:PREVIOUS-DATE "10-Feb-2026 11:07:12" {WMEDLEY}<library>tedit>TEDIT-LOOKS.;465)
(PRETTYCOMPRINT TEDIT-LOOKSCOMS)
@@ -924,7 +924,8 @@
(DEFINEQ
(\TEDIT.MCCS.TRANSLATE
[LAMBDA (TSTREAM) (* ; "Edited 6-Oct-2025 20:50 by rmk")
[LAMBDA (TSTREAM) (* ; "Edited 16-Feb-2026 00:35 by rmk")
(* ; "Edited 6-Oct-2025 20:50 by rmk")
(* ; "Edited 5-Oct-2025 10:57 by rmk")
(* ; "Edited 25-Sep-2025 21:30 by rmk")
(* ; "Edited 9-Sep-2025 21:48 by rmk")
@@ -954,19 +955,17 @@
(SETQ CLOOKS
(PCHARLOOKS PC))
CLFONT]
do (for OFFSET OLDCODE STRING FAT from 1 to (PLEN PC) eachtime (SETQ OLDCODE
(
\TEDIT.PIECE.NTHCHARCODE
PC OFFSET))
do (for OFFSET OLDCODE STRING FAT from 0 to (PLAST PC)
eachtime (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE PC OFFSET))
unless (EQ OLDCODE (APPLY* TOMCCSFN OLDCODE))
do
(* ;; "This piece has recoded character. Start over to convert it to a string piece with necessary code conversions. (The logic to split the original piece at just the changes while still preserving the iteration would be very complicated).")
(SETQ STRING (ALLOCSTRING (PLEN PC)))
[for OFFSET from 1 to (PLEN PC) do (RPLCHARCODE STRING OFFSET
(APPLY* TOMCCSFN (
[for I from 0 to (PLAST PC) do (RPLCHARCODE STRING (ADD1 I)
(APPLY* TOMCCSFN (
\TEDIT.PIECE.NTHCHARCODE
PC OFFSET]
PC I]
(SETQ FAT (ffetch (STRINGP FATSTRINGP) of STRING))
(FSETPC PC PTYPE (CL:IF FAT
FATSTRING.PTYPE
@@ -2465,26 +2464,26 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (22045 23987 (\TEDIT.CHARLOOKS.DEFPRINT 22055 . 23191) (\TEDIT.PARALOOKS.DEFPRINT 23193
. 23985)) (24091 24477 (\TEDIT.CREATE.FACE.MENU 24101 . 24273) (\TEDIT.CREATE.SIZE.MENU 24275 . 24475
)) (25481 27370 (\TEDIT.CHARLOOKS.FEATURE.CHECK 25491 . 27368)) (27642 52899 (
\TEDIT.CHARLOOKS.FROM.FONT 27652 . 29936) (\TEDIT.EQCLOOKS 29938 . 32969) (\TEDIT.SAMECLOOKS 32971 .
36142) (TEDIT.CARETLOOKS 36144 . 37690) (TEDIT.COPY.LOOKS 37692 . 40975) (
\TEDIT.UNPARSE.CHARLOOKS.LIST 40977 . 44471) (\TEDIT.MODIFYLOOKS 44473 . 46633) (TEDIT.NEW.FONT 46635
. 47082) (\TEDIT.CARETLOOKS.VERIFY 47084 . 47921) (\TEDIT.CARETPIECE 47923 . 48228) (
\TEDIT.GET.INSERT.CHARLOOKS 48230 . 51277) (\TEDIT.GET.TERMSA.WIDTHS 51279 . 51695) (
\TEDIT.PARSE.CHARLOOKS.LIST 51697 . 52897)) (52900 65027 (\TEDIT.MCCS.TRANSLATE 52910 . 58763) (
\TEDIT.CONVERT.TO.FORMATTED 58765 . 65025)) (65899 73236 (\TEDIT.UNIQUIFY.CHARLOOKS 65909 . 67569) (
\TEDIT.UNIQUIFY.PARALOOKS 67571 . 68838) (\TEDIT.UNIQUIFY.ALL 68840 . 70928) (
\TEDIT.FLUSH.UNUSED.LOOKS 70930 . 73234)) (73269 85227 (TEDIT.LOOKS 73279 . 75668) (TEDIT.GET.LOOKS
75670 . 78005) (TEDIT.SUBLOOKS 78007 . 82387) (TEDIT.FINDLOOKS 82389 . 85225)) (85228 115001 (
\TEDIT.CHANGE.CHARLOOKS 85238 . 94139) (\TEDIT.CHANGE.CHARLOOKS.NEW 94141 . 97956) (
\TEDIT.CHARLOOKS.CHANGE.FONT 97958 . 106265) (\TEDIT.FONT.NEXTSIZE 106267 . 107888) (\TEDIT.LOOKS
107890 . 111219) (\TEDIT.FONTCOPY 111221 . 112722) (\TEDIT.COERCE.FONTCLASS 112724 . 113875) (
\TEDIT.FONTCLASS.TO.FONT 113877 . 114999)) (115044 146933 (\TEDIT.EQFMTSPEC 115054 . 118269) (
TEDIT.GET.PARALOOKS 118271 . 122318) (\TEDIT.PARSE.PARALOOKS.LIST 122320 . 130353) (TEDIT.PARALOOKS
130355 . 131395) (\TEDIT.CHANGE.PARALOOKS 131397 . 138606) (\TEDIT.CHANGE.PARALOOKS.NEW 138608 .
142591) (TEDIT.COPY.PARALOOKS 142593 . 145267) (\TEDIT.PARABOUNDS 145269 . 146931)) (146993 154709 (
TEDIT.SUBPARALOOKS 147003 . 151105) (SAMEPARALOOKS 151107 . 154707)) (154710 155397 (
\TEDIT.MARK.REVISION 154720 . 155395)))))
(FILEMAP (NIL (22019 23961 (\TEDIT.CHARLOOKS.DEFPRINT 22029 . 23165) (\TEDIT.PARALOOKS.DEFPRINT 23167
. 23959)) (24065 24451 (\TEDIT.CREATE.FACE.MENU 24075 . 24247) (\TEDIT.CREATE.SIZE.MENU 24249 . 24449
)) (25455 27344 (\TEDIT.CHARLOOKS.FEATURE.CHECK 25465 . 27342)) (27616 52873 (
\TEDIT.CHARLOOKS.FROM.FONT 27626 . 29910) (\TEDIT.EQCLOOKS 29912 . 32943) (\TEDIT.SAMECLOOKS 32945 .
36116) (TEDIT.CARETLOOKS 36118 . 37664) (TEDIT.COPY.LOOKS 37666 . 40949) (
\TEDIT.UNPARSE.CHARLOOKS.LIST 40951 . 44445) (\TEDIT.MODIFYLOOKS 44447 . 46607) (TEDIT.NEW.FONT 46609
. 47056) (\TEDIT.CARETLOOKS.VERIFY 47058 . 47895) (\TEDIT.CARETPIECE 47897 . 48202) (
\TEDIT.GET.INSERT.CHARLOOKS 48204 . 51251) (\TEDIT.GET.TERMSA.WIDTHS 51253 . 51669) (
\TEDIT.PARSE.CHARLOOKS.LIST 51671 . 52871)) (52874 64879 (\TEDIT.MCCS.TRANSLATE 52884 . 58615) (
\TEDIT.CONVERT.TO.FORMATTED 58617 . 64877)) (65751 73088 (\TEDIT.UNIQUIFY.CHARLOOKS 65761 . 67421) (
\TEDIT.UNIQUIFY.PARALOOKS 67423 . 68690) (\TEDIT.UNIQUIFY.ALL 68692 . 70780) (
\TEDIT.FLUSH.UNUSED.LOOKS 70782 . 73086)) (73121 85079 (TEDIT.LOOKS 73131 . 75520) (TEDIT.GET.LOOKS
75522 . 77857) (TEDIT.SUBLOOKS 77859 . 82239) (TEDIT.FINDLOOKS 82241 . 85077)) (85080 114853 (
\TEDIT.CHANGE.CHARLOOKS 85090 . 93991) (\TEDIT.CHANGE.CHARLOOKS.NEW 93993 . 97808) (
\TEDIT.CHARLOOKS.CHANGE.FONT 97810 . 106117) (\TEDIT.FONT.NEXTSIZE 106119 . 107740) (\TEDIT.LOOKS
107742 . 111071) (\TEDIT.FONTCOPY 111073 . 112574) (\TEDIT.COERCE.FONTCLASS 112576 . 113727) (
\TEDIT.FONTCLASS.TO.FONT 113729 . 114851)) (114896 146785 (\TEDIT.EQFMTSPEC 114906 . 118121) (
TEDIT.GET.PARALOOKS 118123 . 122170) (\TEDIT.PARSE.PARALOOKS.LIST 122172 . 130205) (TEDIT.PARALOOKS
130207 . 131247) (\TEDIT.CHANGE.PARALOOKS 131249 . 138458) (\TEDIT.CHANGE.PARALOOKS.NEW 138460 .
142443) (TEDIT.COPY.PARALOOKS 142445 . 145119) (\TEDIT.PARABOUNDS 145121 . 146783)) (146845 154561 (
TEDIT.SUBPARALOOKS 146855 . 150957) (SAMEPARALOOKS 150959 . 154559)) (154562 155249 (
\TEDIT.MARK.REVISION 154572 . 155247)))))
STOP

Binary file not shown.

View File

@@ -1,14 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "28-Jul-2025 23:25:19" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-PCTREE.;249 69193
(FILECREATED "14-Feb-2026 13:22:06" {WMEDLEY}<library>TEDIT>TEDIT-PCTREE.;251 68691
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.MAKEPCTB)
:CHANGES-TO (VARS TEDIT-PCTREECOMS)
(FNS \TEDIT.UNLINKPIECE \TEDIT.DELETEPIECES)
:PREVIOUS-DATE " 8-Feb-2025 20:56:54"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-PCTREE.;248)
:PREVIOUS-DATE "28-Jul-2025 23:25:19" {WMEDLEY}<library>TEDIT>TEDIT-PCTREE.;249)
(PRETTYCOMPRINT TEDIT-PCTREECOMS)
@@ -37,8 +36,8 @@
(GLOBALVARS MULTIPLE-PIECE-TABLES)
(FNS \TEDIT.MAKEPCTB \TEDIT.UPDATEPCNODES \TEDIT.FIRSTPIECE \TEDIT.DELETETREE
\TEDIT.INSERTTREE \TEDIT.LASTPIECE \TEDIT.PCTOCH \TEDIT.CHTOPC \TEDIT.SET-TOTLEN
\TEDIT.MAKE.VACANT.BTREESLOT \TEDIT.LINKNEWPIECE \TEDIT.UNLINKPIECE \TEDIT.SPLITPIECE
\TEDIT.INSERTPIECE \TEDIT.INSERTPIECES \TEDIT.DELETEPIECES \TEDIT.ALIGNEDPIECE)
\TEDIT.MAKE.VACANT.BTREESLOT \TEDIT.LINKNEWPIECE \TEDIT.SPLITPIECE \TEDIT.INSERTPIECE
\TEDIT.INSERTPIECES \TEDIT.DELETEPIECES \TEDIT.ALIGNEDPIECE)
(COMS (* ; "Debugging ")
(FNS \TEDIT.BTVALIDATE \TEDIT.BTVALIDATE.PRINT \TEDIT.CHECK-BTREE \TEDIT.CHECK-BTREE1
\TEDIT.BTFAIL \TEDIT.MATCHPCS)
@@ -658,20 +657,6 @@
(freplace (PIECE PREVPIECE) of NEXT with NEW))
NEW])
(\TEDIT.UNLINKPIECE
[LAMBDA (PREV PC TEXTOBJ) (* ; "Edited 7-Feb-2025 08:04 by rmk")
(* ; "Edited 21-Oct-2024 00:26 by rmk")
(* ; "Edited 21-Oct-2023 17:24 by rmk")
(* ; "Edited 30-May-2023 00:31 by rmk")
(* ;; "Takes PC out of the piece chain, linking prev and next around it.")
(\TEDIT.THELP 'NOTCALLED?)
(CL:WHEN PREV
(freplace (PIECE NEXTPIECE) of PREV with (NEXTPIECE PC)))
(freplace (PIECE PREVPIECE) of (OR (NEXTPIECE PC)
(FGETTOBJ TEXTOBJ SUFFIXPIECE)) with PREV])
(\TEDIT.SPLITPIECE
[LAMBDA (PC CHOFFSET TEXTOBJ) (* ; "Edited 21-Oct-2024 00:33 by rmk")
(* ; "Edited 17-Mar-2024 00:11 by rmk")
@@ -838,7 +823,8 @@
PIECES])
(\TEDIT.DELETEPIECES
[LAMBDA (SELPIECES TEXTOBJ) (* ; "Edited 7-Feb-2025 08:08 by rmk")
[LAMBDA (SELPIECES TEXTOBJ) (* ; "Edited 14-Feb-2026 13:20 by rmk")
(* ; "Edited 7-Feb-2025 08:08 by rmk")
(* ; "Edited 26-Nov-2024 10:50 by rmk")
(* ; "Edited 16-Mar-2024 10:00 by rmk")
(* ; "Edited 25-Nov-2023 12:12 by rmk")
@@ -859,6 +845,11 @@
(* ;; "This may not be entirely safe against an interrupt, which only matters on the call from \INSERTSELPIECES (otherwise the data isn't yet visible). Although the tree is consistent with the remaining pieces after each deletion, the fact that we keep the SELPIECE links intact means that the remaining pieces point to pieces that are no longer in the tree. We could do a little more work to incrementally chain the deleted pieces together, one by one, as they are deleted--in the end they would all be out of the tree, and the deletion chain would have been reconnected. Alternatively, we can make the whole loop be uninterruptable. ")
(\TEDIT.BTVALIDATE '\TEDIT.DELETEPIECES 'BEFORE TEXTOBJ)
(CL:WHEN (type? PIECE SELPIECES)
(SETQ SELPIECES (create SELPIECES
SPFIRST _ SELPIECES
SPLAST _ SELPIECES
SPLEN _ (PLEN SELPIECES))))
(for PC PREV NEXT first (FSETTOBJ TEXTOBJ HINTPC NIL)
(SETQ PREV (PREVPIECE (GETSPC SELPIECES SPFIRST)))
(* ; "For incremental chain-update")
@@ -1113,13 +1104,13 @@
(GLOBALVARS BTVALIDATETAGS)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (8767 56719 (\TEDIT.MAKEPCTB 8777 . 10670) (\TEDIT.UPDATEPCNODES 10672 . 12966) (
\TEDIT.FIRSTPIECE 12968 . 14375) (\TEDIT.DELETETREE 14377 . 17651) (\TEDIT.INSERTTREE 17653 . 20398) (
\TEDIT.LASTPIECE 20400 . 21207) (\TEDIT.PCTOCH 21209 . 23306) (\TEDIT.CHTOPC 23308 . 29485) (
\TEDIT.SET-TOTLEN 29487 . 30275) (\TEDIT.MAKE.VACANT.BTREESLOT 30277 . 37007) (\TEDIT.LINKNEWPIECE
37009 . 38598) (\TEDIT.UNLINKPIECE 38600 . 39420) (\TEDIT.SPLITPIECE 39422 . 44078) (
\TEDIT.INSERTPIECE 44080 . 47352) (\TEDIT.INSERTPIECES 47354 . 50446) (\TEDIT.DELETEPIECES 50448 .
54602) (\TEDIT.ALIGNEDPIECE 54604 . 56717)) (56747 69070 (\TEDIT.BTVALIDATE 56757 . 58298) (
\TEDIT.BTVALIDATE.PRINT 58300 . 59665) (\TEDIT.CHECK-BTREE 59667 . 61994) (\TEDIT.CHECK-BTREE1 61996
. 67627) (\TEDIT.BTFAIL 67629 . 68051) (\TEDIT.MATCHPCS 68053 . 69068)))))
(FILEMAP (NIL (8731 56217 (\TEDIT.MAKEPCTB 8741 . 10634) (\TEDIT.UPDATEPCNODES 10636 . 12930) (
\TEDIT.FIRSTPIECE 12932 . 14339) (\TEDIT.DELETETREE 14341 . 17615) (\TEDIT.INSERTTREE 17617 . 20362) (
\TEDIT.LASTPIECE 20364 . 21171) (\TEDIT.PCTOCH 21173 . 23270) (\TEDIT.CHTOPC 23272 . 29449) (
\TEDIT.SET-TOTLEN 29451 . 30239) (\TEDIT.MAKE.VACANT.BTREESLOT 30241 . 36971) (\TEDIT.LINKNEWPIECE
36973 . 38562) (\TEDIT.SPLITPIECE 38564 . 43220) (\TEDIT.INSERTPIECE 43222 . 46494) (
\TEDIT.INSERTPIECES 46496 . 49588) (\TEDIT.DELETEPIECES 49590 . 54100) (\TEDIT.ALIGNEDPIECE 54102 .
56215)) (56245 68568 (\TEDIT.BTVALIDATE 56255 . 57796) (\TEDIT.BTVALIDATE.PRINT 57798 . 59163) (
\TEDIT.CHECK-BTREE 59165 . 61492) (\TEDIT.CHECK-BTREE1 61494 . 67125) (\TEDIT.BTFAIL 67127 . 67549) (
\TEDIT.MATCHPCS 67551 . 68566)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "14-Jan-2026 14:32:01" {WMEDLEY}<library>tedit>TEDIT-SELECTION.;736 162073
(FILECREATED "16-Feb-2026 00:38:33" {WMEDLEY}<library>TEDIT>TEDIT-SELECTION.;738 162152
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.COPYSEL TEDIT.SELPROP)
:CHANGES-TO (FNS \TEDIT.SELPIECES.CHARTRANSFORM)
:PREVIOUS-DATE "10-Jan-2026 12:33:26" {WMEDLEY}<library>tedit>TEDIT-SELECTION.;735)
:PREVIOUS-DATE "14-Jan-2026 14:32:01" {WMEDLEY}<library>tedit>TEDIT-SELECTION.;736)
(PRETTYCOMPRINT TEDIT-SELECTIONCOMS)
@@ -2041,7 +2041,8 @@
SPLASTCHAR _ (ffetch (SELPIECES SPLASTCHAR) of SP2])
(\TEDIT.SELPIECES.CHARTRANSFORM
[LAMBDA (SELPIECES CHARFN OBJECTSTOO TSTREAM) (* ; "Edited 24-Apr-2025 16:02 by rmk")
[LAMBDA (SELPIECES CHARFN OBJECTSTOO TSTREAM) (* ; "Edited 16-Feb-2026 00:38 by rmk")
(* ; "Edited 24-Apr-2025 16:02 by rmk")
(* ; "Edited 20-Apr-2025 23:23 by rmk")
(* ; "Edited 16-Mar-2025 10:03 by rmk")
(* ; "Edited 7-Nov-2024 21:50 by rmk")
@@ -2066,10 +2067,10 @@
(* ;; "This assumes that no file piece has a PLEN greater than \MaxArrayLen characters. We rely on the piece-table reader and writer to guarantee this. If not, ALLOCSTRING will cause an error.")
[for I from 1 to (PLEN PC)
do (RPLCHARCODE STR I (APPLY* CHARFN (\TEDIT.PIECE.NTHCHARCODE
PC I)
(add INDEX 1]
[for I from 0 to (PLAST PC)
do (RPLCHARCODE STR (ADD1 I)
(APPLY* CHARFN (\TEDIT.PIECE.NTHCHARCODE PC I)
(add INDEX 1]
(if (fetch (STRINGP FATSTRINGP) of STR)
then (FSETPC PC PTYPE FATSTRING.PTYPE)
(FSETPC PC PBYTESPERCHAR 2)
@@ -2570,26 +2571,26 @@
(ADDTOVAR LAMA TEDIT.SELPROP)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (15886 17707 (\TEDIT.SELECTION.DEFPRINT 15896 . 17705)) (17744 19249 (
\TEDIT.SET.GLOBAL.SELECTIONS 17754 . 19247)) (19250 25471 (\TEDIT.SELECTED.PIECES 19260 . 20899) (
\TEDIT.FIND.PROTECTED.END 20901 . 22695) (\TEDIT.FIND.PROTECTED.START 22697 . 24680) (
\TEDIT.WORD.BOUND 24682 . 25469)) (25605 59712 (\TEDIT.EXTEND.SEL 25615 . 32855) (\TEDIT.SCAN.LINE
32857 . 44530) (\TEDIT.SCAN.LINE.WORD 44532 . 49525) (\TEDIT.XYTOSEL 49527 . 56865) (\TEDIT.REGIONTYPE
56867 . 57886) (\TEDIT.XYTOSEL.INLINEP 57888 . 58343) (\TEDIT.XYTOSEL.LINE 58345 . 59710)) (59713
73258 (\TEDIT.FIXSEL 59723 . 69100) (\TEDIT.CHTOLINEX 69102 . 73256)) (73259 77463 (
\TEDIT.RESET.EXTEND.PENDING.DELETE 73269 . 74547) (\TEDIT.SET.SEL.LOOKS 74549 . 77461)) (78400 99553 (
\TEDIT.SHOWSEL 78410 . 83386) (\TEDIT.NOSEL 83388 . 83689) (\TEDIT.SEL.OFF 83691 . 84102) (
\TEDIT.SEL.ON 84104 . 84520) (\TEDIT.SHOWSEL.HILIGHT 84522 . 89143) (\TEDIT.UPDATE.SEL 89145 . 93747)
(\TEDIT.CARETLINE 93749 . 94463) (\TEDIT.SEL.L1 94465 . 95148) (\TEDIT.SEL.LN 95150 . 95833) (
\TEDIT.SEL.DELETEDCHARS 95835 . 99551)) (99554 104436 (\TEDIT.COPYSEL 99564 . 102206) (
\TEDIT.SEL.CHANGED? 102208 . 104434)) (104467 118126 (\TEDIT.SELECT.OBJECT 104477 . 109430) (
\TEDIT.SHOWSEL.OBJECT 109432 . 111663) (\TEDIT.CLIP.OBJECT 111665 . 113669) (\TEDIT.OPERATE.OBJECT
113671 . 118124)) (118154 137903 (\TEDIT.SELPIECES 118164 . 122445) (\TEDIT.SELPIECES.COPY 122447 .
124936) (\TEDIT.SELPIECES.CONCAT 124938 . 126817) (\TEDIT.SELPIECES.CHARTRANSFORM 126819 . 130278) (
\TEDIT.SELPIECES.FROM.STRING 130280 . 135538) (\TEDIT.SELPIECES.TO.STRING 135540 . 137901)) (137956
161904 (TEDIT.XYTOCH 137966 . 140542) (TEDIT.SELPROP 140544 . 144821) (TEDIT.GETPOINT 144823 . 146743)
(TEDIT.GETSEL 146745 . 147621) (TEDIT.GETSEL.PARA 147623 . 148572) (TEDIT.SCANSEL 148574 . 149522) (
TEDIT.SET.SEL.LOOKS 149524 . 151009) (TEDIT.SETSEL 151011 . 155929) (TEDIT.SHOWSEL 155931 . 157795) (
TEDIT.SEL.AS.STRING 157797 . 160282) (TEDIT.SEL.AS.SEXPR 160284 . 161570) (TEDIT.SELECTALL 161572 .
161902)))))
(FILEMAP (NIL (15888 17709 (\TEDIT.SELECTION.DEFPRINT 15898 . 17707)) (17746 19251 (
\TEDIT.SET.GLOBAL.SELECTIONS 17756 . 19249)) (19252 25473 (\TEDIT.SELECTED.PIECES 19262 . 20901) (
\TEDIT.FIND.PROTECTED.END 20903 . 22697) (\TEDIT.FIND.PROTECTED.START 22699 . 24682) (
\TEDIT.WORD.BOUND 24684 . 25471)) (25607 59714 (\TEDIT.EXTEND.SEL 25617 . 32857) (\TEDIT.SCAN.LINE
32859 . 44532) (\TEDIT.SCAN.LINE.WORD 44534 . 49527) (\TEDIT.XYTOSEL 49529 . 56867) (\TEDIT.REGIONTYPE
56869 . 57888) (\TEDIT.XYTOSEL.INLINEP 57890 . 58345) (\TEDIT.XYTOSEL.LINE 58347 . 59712)) (59715
73260 (\TEDIT.FIXSEL 59725 . 69102) (\TEDIT.CHTOLINEX 69104 . 73258)) (73261 77465 (
\TEDIT.RESET.EXTEND.PENDING.DELETE 73271 . 74549) (\TEDIT.SET.SEL.LOOKS 74551 . 77463)) (78402 99555 (
\TEDIT.SHOWSEL 78412 . 83388) (\TEDIT.NOSEL 83390 . 83691) (\TEDIT.SEL.OFF 83693 . 84104) (
\TEDIT.SEL.ON 84106 . 84522) (\TEDIT.SHOWSEL.HILIGHT 84524 . 89145) (\TEDIT.UPDATE.SEL 89147 . 93749)
(\TEDIT.CARETLINE 93751 . 94465) (\TEDIT.SEL.L1 94467 . 95150) (\TEDIT.SEL.LN 95152 . 95835) (
\TEDIT.SEL.DELETEDCHARS 95837 . 99553)) (99556 104438 (\TEDIT.COPYSEL 99566 . 102208) (
\TEDIT.SEL.CHANGED? 102210 . 104436)) (104469 118128 (\TEDIT.SELECT.OBJECT 104479 . 109432) (
\TEDIT.SHOWSEL.OBJECT 109434 . 111665) (\TEDIT.CLIP.OBJECT 111667 . 113671) (\TEDIT.OPERATE.OBJECT
113673 . 118126)) (118156 137982 (\TEDIT.SELPIECES 118166 . 122447) (\TEDIT.SELPIECES.COPY 122449 .
124938) (\TEDIT.SELPIECES.CONCAT 124940 . 126819) (\TEDIT.SELPIECES.CHARTRANSFORM 126821 . 130357) (
\TEDIT.SELPIECES.FROM.STRING 130359 . 135617) (\TEDIT.SELPIECES.TO.STRING 135619 . 137980)) (138035
161983 (TEDIT.XYTOCH 138045 . 140621) (TEDIT.SELPROP 140623 . 144900) (TEDIT.GETPOINT 144902 . 146822)
(TEDIT.GETSEL 146824 . 147700) (TEDIT.GETSEL.PARA 147702 . 148651) (TEDIT.SCANSEL 148653 . 149601) (
TEDIT.SET.SEL.LOOKS 149603 . 151088) (TEDIT.SETSEL 151090 . 156008) (TEDIT.SHOWSEL 156010 . 157874) (
TEDIT.SEL.AS.STRING 157876 . 160361) (TEDIT.SEL.AS.SEXPR 160363 . 161649) (TEDIT.SELECTALL 161651 .
161981)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "26-Jan-2026 23:58:48" {WMEDLEY}<library>tedit>TEDIT-STREAM.;936 194450
(FILECREATED "16-Feb-2026 12:40:44" {WMEDLEY}<library>tedit>TEDIT-STREAM.;944 193110
:EDIT-BY rmk
:CHANGES-TO (VARS TEDIT-STREAMCOMS)
(FNS TEDIT.IMAGESTREAM.OPEN \TEDIT.STREAMINIT \TEDIT.TEXTINIT)
:CHANGES-TO (FNS \TEDIT.STREAMINIT)
:PREVIOUS-DATE "14-Jan-2026 14:32:01" {WMEDLEY}<library>tedit>TEDIT-STREAM.;933)
:PREVIOUS-DATE "16-Feb-2026 09:39:00" {WMEDLEY}<library>tedit>TEDIT-STREAM.;943)
(PRETTYCOMPRINT TEDIT-STREAMCOMS)
@@ -15,8 +14,8 @@
(RPAQQ TEDIT-STREAMCOMS
[(DECLARE%: EVAL@COMPILE DONTCOPY
(EXPORT (RECORDS PIECE TEXTOBJ TEXTSTREAM)
(MACROS NEXTPIECE PREVPIECE PLEN PTYPE PCONTENTS PCHARLOOKS PCHARSET PPARALOOKS
PPARALAST PFPOS PBYTELEN PNEW PBINABLE PBYTESPERCHAR POBJ)
(MACROS NEXTPIECE PREVPIECE PLEN PLAST PTYPE PCONTENTS PCHARLOOKS PCHARSET
PPARALOOKS PPARALAST PFPOS PBYTELEN PNEW PBINABLE PBYTESPERCHAR POBJ)
(MACROS SETPC FSETPC GETPC FGETPC)
(MACROS THINPIECEP)
(MACROS VISIBLEPIECEP \NEXT.VISIBLE.PIECE \PREV.VISIBLE.PIECE)
@@ -72,10 +71,7 @@
(MACROS \INSERTCH.EXTENDABLE))
(FNS \TEDIT.DELETE.SELPIECES \TEDIT.INSERTCH \TEDIT.INSERTCH.HISTORY \TEDIT.INSERTEOL
\TEDIT.INSERTCH.INSERTION \TEDIT.INSERTCH.EXTEND)
(FNS \TEDIT.NEXTCHANGEABLE.CHNO \TEDIT.LASTCHANGEABLE.CHNO)
(FNS \SETUPGETCH))
(* ;
 "Deprecated, maybe still external callers")
(FNS \TEDIT.NEXTCHANGEABLE.CHNO \TEDIT.LASTCHANGEABLE.CHNO))
(FNS \TEDIT.INSTALL.PIECE)
[COMS (* ; "Support for TEXTPROP")
(FNS TEXTPROP GETTEXTPROP PUTTEXTPROP GETTEXTPROPS PUTTEXTPROPS TEXTPROP.ADD
@@ -397,6 +393,9 @@
(PUTPROPS PLEN MACRO ((PC)
(ffetch (PIECE PLEN) of PC)))
(PUTPROPS PLAST MACRO ((PC)
(SUB1 (PLEN PC))))
(PUTPROPS PTYPE MACRO ((PC)
(ffetch (PIECE PTYPE) of PC)))
@@ -924,7 +923,8 @@
else (STREAMOP 'ENDOFSTREAMOP TSTREAM TSTREAM])
(\TEDIT.TEXTBACKFILEPTR
[LAMBDA (TSTREAM) (* ; "Edited 21-Oct-2024 00:33 by rmk")
[LAMBDA (TSTREAM) (* ; "Edited 16-Feb-2026 08:54 by rmk")
(* ; "Edited 21-Oct-2024 00:33 by rmk")
(* ; "Edited 1-Feb-2024 11:25 by rmk")
(* ; "Edited 5-Jan-2024 17:57 by rmk")
(* ; "Edited 28-Dec-2023 13:34 by rmk")
@@ -956,7 +956,7 @@
then (CL:WHEN (SETQ PPC (\PREV.VISIBLE.PIECE PC))
(* ;
 "Back up to last char of previous piece, if any.")
(\TEDIT.INSTALL.PIECE TSTREAM PPC (SUB1 (PLEN PPC)))
(\TEDIT.INSTALL.PIECE TSTREAM PPC (PLAST PPC))
(SETQ PC PPC))
elseif (AND (MEMB (PTYPE PC)
FILE.PTYPES)
@@ -1760,7 +1760,8 @@
(DEFINEQ
(\TEDIT.STREAMINIT
[LAMBDA NIL (* ; "Edited 26-Jan-2026 16:06 by rmk")
[LAMBDA NIL (* ; "Edited 16-Feb-2026 12:40 by rmk")
(* ; "Edited 26-Jan-2026 16:06 by rmk")
(* ; "Edited 23-Sep-2025 21:03 by rmk")
(* ; "Edited 20-Sep-2025 08:48 by rmk")
(* ; "Edited 18-Sep-2025 14:52 by rmk")
@@ -1817,7 +1818,7 @@
(* ;; "Maybe more functions later. The INCODE and BACK functions possibly need to count. If \TEXTBACKFILEPTR takes a count variable, the extra level wouldn't be needed. But INCCODE wants to go through the BIN opcode")
(MAKE-EXTERNALFORMAT :TEXTSTREAM (FUNCTION \TEDIT.TEXTINCCODEFN)
(MAKE-EXTERNALFORMAT :TEDIT (FUNCTION \TEDIT.TEXTINCCODEFN)
(FUNCTION \TEDIT.TEXTPEEKBIN)
(FUNCTION \TEDIT.TEXTBACKCCODEFN)
(FUNCTION \TEDIT.TEXTOUTCHARFN)
@@ -1860,8 +1861,7 @@
FDEXTENDABLE _ NIL
TRUNCATEFILE _ (FUNCTION NILL)
WRITEPAGES _ (FUNCTION NILL)
DEFAULTEXTERNALFORMAT _ :TEXTSTREAM))
(* ;
DEFAULTEXTERNALFORMAT _ :TEDIT)) (* ;
 "Only load once, not every time TEDIT-STREAM is loaded e.g. in development")
(RPAQ? *TEDIT-OLD-STREAM-ERROR-HANDLER* (CONDITION-HANDLER 'XCL:STREAM-NOT-OPEN))
(CL:SETF (CONDITION-HANDLER 'XCL:STREAM-NOT-OPEN)
@@ -2256,7 +2256,8 @@
(DEFINEQ
(\TEDIT.NTHCHARCODE
[LAMBDA (TSTREAM N) (* ; "Edited 24-Apr-2025 16:03 by rmk")
[LAMBDA (TSTREAM N) (* ; "Edited 15-Feb-2026 14:40 by rmk")
(* ; "Edited 24-Apr-2025 16:03 by rmk")
(* ; "Edited 28-Mar-2025 18:31 by rmk")
(* ; "Edited 7-Jul-2024 11:09 by rmk")
(* ; "Edited 29-Apr-2024 13:06 by rmk")
@@ -2273,11 +2274,11 @@
(CL:WHEN (AND (IGEQ N 1)
(ILEQ N (FGETTOBJ TEXTOBJ TEXTLEN)))
(\TEDIT.PIECE.NTHCHARCODE (\TEDIT.CHTOPC N TEXTOBJ T)
(IDIFFERENCE (ADD1 N)
START-OF-PIECE)))])
(IDIFFERENCE N START-OF-PIECE)))])
(\TEDIT.PIECE.NTHCHARCODE
[LAMBDA (PC OFFSET) (* ; "Edited 24-Apr-2025 16:04 by rmk")
[LAMBDA (PC OFFSET) (* ; "Edited 15-Feb-2026 14:31 by rmk")
(* ; "Edited 24-Apr-2025 16:04 by rmk")
(* ; "Edited 21-Oct-2024 00:26 by rmk")
(* ; "Edited 29-Apr-2024 08:46 by rmk")
(* ; "Edited 22-Mar-2024 00:02 by rmk")
@@ -2289,24 +2290,24 @@
(* ; "Edited 8-Nov-2023 08:43 by rmk")
(* ; "Edited 5-Nov-2023 08:17 by rmk")
(* ;; "Returns the OFFSETth charcode of PC, NIL if OFFSET is out of bounds. For file pieces, ensures that the backing stream is restored to its original position, so that it remains comaptible with the values (buffer, offset) in the textstream.")
(* ;; "Returns the OFFSETth charcode of PC, NIL if OFFSET is out of bounds. For file pieces, ensures that the backing stream is restored to its original position, so that it remains comaptible with the values (buffer, offset) in the textstream. OFFSET ranges from 0 to PLEN-1.")
(CL:WHEN (AND (IGEQ OFFSET 1)
(ILEQ OFFSET (PLEN PC)))
(CL:WHEN (AND (IGEQ OFFSET 0)
(ILESSP OFFSET (PLEN PC)))
[LET ((PCONTENTS (PCONTENTS PC))
FILEPOS)
(SELECTC (PTYPE PC)
(STRING.PTYPES (NTHCHARCODE PCONTENTS OFFSET))
(STRING.PTYPES (NTHCHARCODE PCONTENTS (ADD1 OFFSET)))
(THINFILE.PTYPE
(SETQ FILEPOS (\GETFILEPTR PCONTENTS))
(\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC)
(SUB1 OFFSET)))
OFFSET))
(PROG1 (BIN PCONTENTS)
(\SETFILEPTR PCONTENTS FILEPOS)))
(FATFILE1.PTYPE
(SETQ FILEPOS (\GETFILEPTR PCONTENTS))
(\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC)
(SUB1 OFFSET)))
OFFSET))
(PROG1 (create WORD
HIBYTE _ (PCHARSET PC)
LOBYTE _ (BIN PCONTENTS))
@@ -2314,14 +2315,12 @@
(FATFILE2.PTYPE
(SETQ FILEPOS (\GETFILEPTR PCONTENTS))
(\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC)
(UNFOLD (SUB1 OFFSET)
2)))
(UNFOLD OFFSET 2)))
(PROG1 (\WIN PCONTENTS)
(\SETFILEPTR PCONTENTS FILEPOS)))
(UTF8.PTYPE (SETQ FILEPOS (\GETFILEPTR PCONTENTS))
[\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC)
(ITIMES (SUB1 OFFSET)
(PBYTESPERCHAR PC]
(ITIMES OFFSET (PBYTESPERCHAR PC]
(PROG1 (UTF8.INCCODEFN PCONTENTS)
(\SETFILEPTR PCONTENTS FILEPOS)))
(OBJECT.PTYPE PCONTENTS)
@@ -2334,7 +2333,8 @@
(\TEDIT.THELP '\TEDIT.PIECE.NTHCHARCODE])])
(\TEDIT.RPLCHARCODE
[LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 24-Apr-2025 17:24 by rmk")
[LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 16-Feb-2026 08:37 by rmk")
(* ; "Edited 24-Apr-2025 17:24 by rmk")
(* ; "Edited 20-Apr-2025 13:25 by rmk")
(* ; "Edited 28-Mar-2025 10:04 by rmk")
@@ -2350,16 +2350,17 @@
(DECLARE (SPECVARS START-OF-PIECE))
(replace (STREAM BINABLE) of TSTREAM with NIL)
(SETQ OLDCHAR (\TEDIT.PIECE.RPLCHARCODE TEXTOBJ (\TEDIT.CHTOPC N TEXTOBJ T)
(ADD1 (IDIFFERENCE N START-OF-PIECE))
(IDIFFERENCE N START-OF-PIECE)
NEWCHARCODE NEWCHARLOOKS))
(\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :ReplaceCode N NIL NIL NIL
(\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :ReplaceCode N 1 NIL NIL
OLDCHAR))
(CL:UNLESS (OR DONTDISPLAY (NOT (\TEDIT.PRIMARYPANE TEXTOBJ)))
(\TEDIT.UPDATE.LINES TSTREAM 'CHANGED N 1))
TSTREAM))])
(\TEDIT.PIECE.RPLCHARCODE
[LAMBDA (TEXTOBJ PC OFFSET NEWCHARCODE NEWCHARLOOKS) (* ; "Edited 28-Jul-2025 23:38 by rmk")
[LAMBDA (TEXTOBJ PC OFFSET NEWCHARCODE NEWCHARLOOKS) (* ; "Edited 16-Feb-2026 08:41 by rmk")
(* ; "Edited 28-Jul-2025 23:38 by rmk")
(* ; "Edited 24-Apr-2025 16:30 by rmk")
(* ; "Edited 20-Apr-2025 13:25 by rmk")
(* ; "Edited 28-Mar-2025 10:04 by rmk")
@@ -2384,12 +2385,13 @@
 "Fast case: Smash a new character code into an existing string piece with same looks. ")
(SETQ OLDCHAR (NTHCHARCODE (PCONTENTS PC)
OFFSET))
(ADD1 OFFSET)))
(RPLCHARCODE (PCONTENTS PC)
OFFSET NEWCHARCODE) (* ;
(ADD1 OFFSET)
NEWCHARCODE) (* ;
 "May upgrade string from thin to fat")
(CL:WHEN (AND (EQ THINSTRING.PTYPE (PTYPE PC))
(IGREATERP NEWCHARCODE 255))
(IGREATERP NEWCHARCODE \MAXTHINCHAR))
(FSETPC PC PTYPE FATSTRING.PTYPE)
(FSETPC PC PBINABLE NIL)
(FSETPC PC PBYTESPERCHAR 2)
@@ -2403,24 +2405,25 @@
(FSETPC PC PCONTENTS NEWCHARCODE)
else
(* ;;
 "PC contained character OFFSET now becomes the suffix of characters after offset.")
 "The PC that contained character OFFSET now becomes the suffix of characters after offset.")
(CL:UNLESS (IEQP OFFSET (PLEN PC)) (* ; "No suffix for the last character")
(CL:UNLESS (IEQP OFFSET (PLAST PC)) (* ; "No suffix for the last character")
(* ;;
 "Chop off the suffix (essentially (\TEDIT.ALIGNEDPIECE CHNO ..) but we already have the piece")
(\TEDIT.SPLITPIECE PC OFFSET TEXTOBJ)
(\TEDIT.SPLITPIECE PC (ADD1 OFFSET)
TEXTOBJ)
(SETQ PC (PREVPIECE PC))) (* ;
 "Original PC holds the suffix, new PC ends with change position.")
(CL:UNLESS (EQ OFFSET 1)
(CL:UNLESS (EQ OFFSET 0)
(SETQ PC (\TEDIT.SPLITPIECE PC (SUB1 OFFSET)
TEXTOBJ))) (* ;
 "Chop off the prefix. PC is now the singleton target ")
(* ;; "OFFSET is now isolated into a one-character new piece which we smash. ")
(SETQ OLDCHAR (\TEDIT.PIECE.NTHCHARCODE PC 1))
(SETQ OLDCHAR (\TEDIT.PIECE.NTHCHARCODE PC 0))
(if (IMAGEOBJP NEWCHARCODE)
then (FSETPC PC PBINABLE NIL)
(FSETPC PC PCONTENTS NEWCHARCODE)
@@ -2430,7 +2433,7 @@
else (FSETPC PC PCONTENTS (MKSTRING (CHARACTER NEWCHARCODE)))
(* ;
 "Use the extend-string in INSERTCH for repeated calls?")
(if (IGREATERP NEWCHARCODE 255)
(if (IGREATERP NEWCHARCODE \MAXTHINCHAR)
then (FSETPC PC PTYPE FATSTRING.PTYPE)
(FSETPC PC PBINABLE NIL)
(FSETPC PC PBYTESPERCHAR 2)
@@ -2817,7 +2820,8 @@
else (SUB1 (\TEDIT.PCTOCH PC TEXTOBJ])
(\TEDIT.LASTCHANGEABLE.CHNO
[LAMBDA (CHNO TEXTOBJ) (* ; "Edited 26-Nov-2024 00:00 by rmk")
[LAMBDA (CHNO TEXTOBJ) (* ; "Edited 16-Feb-2026 08:53 by rmk")
(* ; "Edited 26-Nov-2024 00:00 by rmk")
(* ;; "Returns the number of the first visible character at or before CHNO, NIL if the first visible character is protected. Almost always CHNO--PCTOCH is the unusual case.")
@@ -2826,46 +2830,11 @@
CLPROTECTED) when (VISIBLEPIECEP PC)
do (RETURN (if (EQ PC FIRSTPIECE)
then CHNO
else (IPLUS (SUB1 (PLEN PC))
else (IPLUS (PLAST PC)
(\TEDIT.PCTOCH PC TEXTOBJ])
)
(DEFINEQ
(\SETUPGETCH
[LAMBDA (CH# TEXTOBJ) (* ; "Edited 21-Oct-2024 00:26 by rmk")
(* ; "Edited 29-Apr-2024 12:14 by rmk")
(* ; "Edited 17-Mar-2024 00:27 by rmk")
(* ; "Edited 23-Dec-2023 12:14 by rmk")
(* ; "Edited 22-Aug-2022 13:04 by rmk")
(* ; "Edited 10-Aug-2022 17:20 by rmk")
(* ; "Edited 8-Aug-2022 15:07 by rmk")
(* ; "Edited 31-Jul-2022 21:27 by rmk")
(* ; "Edited 14-Apr-93 17:14 by jds")
(* ;;; "Set up TEXTOBJ so that the next \GETCH will retrieve character # CH#")
(* ;; "NB that 1st char in the textobj is #1.")
(* ;; "NOBODY CALLS IT WITH A PIECE. CALLS |INSTALL.PIECE INSTEAD")
(SETQ TEXTOBJ (TEXTOBJ))
(LET ((TSTREAM (TEXTSTREAM TEXTOBJ)))
(COND
((TYPE? PIECE CH#)
(\TEDIT.THELP "\SETUPGETCH CALLED WITH PIECE")
(\TEDIT.INSTALL.PIECE TSTREAM CH# 0))
(T (LET (START-OF-PIECE PC)
(DECLARE (SPECVARS START-OF-PIECE))
(SETQ PC (\TEDIT.CHTOPC CH# TEXTOBJ T))
(\TEDIT.INSTALL.PIECE TSTREAM PC (- CH# START-OF-PIECE])
)
(* ; "Deprecated, maybe still external callers")
(DEFINEQ
(\TEDIT.INSTALL.PIECE
[LAMBDA (TSTREAM PC CHOFFSET) (* ; "Edited 21-Oct-2024 00:26 by rmk")
(* ; "Edited 18-May-2024 22:39 by rmk")
@@ -3158,34 +3127,33 @@
(ADDTOVAR LAMA TEXTPROP)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (36872 67731 (\TEDIT.TEXTBIN 36882 . 47675) (\TEDIT.TEXTPEEKBIN 47677 . 53227) (
\TEDIT.TEXTBACKFILEPTR 53229 . 58902) (\TEDIT.TEXTBOUT 58904 . 63521) (\TEDIT.INSTALL.FILEBUFFER 63523
. 67729)) (68629 72920 (\TEDIT.TEXTOUTCHARFN 68639 . 70195) (\TEDIT.TEXTINCCODEFN 70197 . 70936) (
\TEDIT.TEXTBACKCCODEFN 70938 . 71530) (\TEDIT.TEXTFORMATBYTESTREAM 71532 . 72369) (
\TEDIT.TEXTFORMATBYTESTRING 72371 . 72918)) (72967 85042 (OPENTEXTSTREAM 72977 . 79953) (
COPYTEXTSTREAM 79955 . 84265) (TEDIT.STREAMCHANGEDP 84267 . 84569) (TXTFILE 84571 . 85040)) (85043
108248 (\TEDIT.REOPENTEXTSTREAM 85053 . 86405) (\TEDIT.OPENTEXTSTREAM.PIECES 86407 . 91335) (
\TEDIT.OPENTEXTSTREAM.PROPS 91337 . 92439) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 92441 . 97891) (
\TEDIT.OPENTEXTSTREAM.WINDOW 97893 . 100684) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 100686 . 102625) (
\TEDIT.OPENTEXTFILE 102627 . 104759) (\TEDIT.CREATE.TEXTSTREAM 104761 . 105908) (\TEDIT.REOPEN.STREAM
105910 . 108246)) (108249 116436 (\TEDIT.STREAMINIT 108259 . 116253) (TEDIT.IMAGESTREAM.OPEN 116255 .
116434)) (116624 117812 (\TEDIT.TTYBOUT 116634 . 117810)) (117930 139613 (\TEDIT.TEXTCLOSEF 117940 .
119264) (\TEDIT.TEXTDSPFONT 119266 . 120464) (\TEDIT.TEXTEOFP 120466 . 122221) (\TEDIT.TEXTGETEOFPTR
122223 . 122546) (\TEDIT.TEXTSETEOFPTR 122548 . 123835) (\TEDIT.TEXTGETFILEPTR 123837 . 126672) (
\TEDIT.TEXTSETFILEINFO 126674 . 127182) (\TEDIT.TEXTOPENF 127184 . 128115) (\TEDIT.TEXTSETEOF 128117
. 128733) (\TEDIT.TEXTSETFILEPTR 128735 . 130845) (\TEDIT.TEXTDSPXPOSITION 130847 . 133550) (
\TEDIT.TEXTDSPYPOSITION 133552 . 134293) (\TEDIT.TEXTLEFTMARGIN 134295 . 134886) (\TEDIT.TEXTCOLOR
134888 . 135471) (\TEDIT.TEXTRIGHTMARGIN 135473 . 138762) (\TEDIT.TEXTDSPCHARWIDTH 138764 . 139068) (
\TEDIT.TEXTDSPSTRINGWIDTH 139070 . 139376) (\TEDIT.TEXTDSPLINEFEED 139378 . 139611)) (139651 152264 (
\TEDIT.NTHCHARCODE 139661 . 141112) (\TEDIT.PIECE.NTHCHARCODE 141114 . 145024) (\TEDIT.RPLCHARCODE
145026 . 146484) (\TEDIT.PIECE.RPLCHARCODE 146486 . 151909) (\TEDIT.NTHCHARLOOKS 151911 . 152262)) (
153311 174405 (\TEDIT.DELETE.SELPIECES 153321 . 156946) (\TEDIT.INSERTCH 156948 . 164987) (
\TEDIT.INSERTCH.HISTORY 164989 . 168453) (\TEDIT.INSERTEOL 168455 . 170280) (\TEDIT.INSERTCH.INSERTION
170282 . 173119) (\TEDIT.INSERTCH.EXTEND 173121 . 174403)) (174406 175910 (\TEDIT.NEXTCHANGEABLE.CHNO
174416 . 175131) (\TEDIT.LASTCHANGEABLE.CHNO 175133 . 175908)) (175911 177615 (\SETUPGETCH 175921 .
177613)) (177673 182131 (\TEDIT.INSTALL.PIECE 177683 . 182129)) (182169 191635 (TEXTPROP 182179 .
182526) (GETTEXTPROP 182528 . 182772) (PUTTEXTPROP 182774 . 183031) (GETTEXTPROPS 183033 . 183477) (
PUTTEXTPROPS 183479 . 184383) (TEXTPROP.ADD 184385 . 184648) (\TEDIT.TEXTPROP 184650 . 191633)) (
191636 194013 (\TEDIT.TEXTOBJ.PROPNAMES 191646 . 192905) (\TEDIT.TEXTOBJ.PROPFETCHFN 192907 . 193423)
(\TEDIT.TEXTOBJ.PROPSTOREFN 193425 . 194011)))))
(FILEMAP (NIL (36667 67629 (\TEDIT.TEXTBIN 36677 . 47470) (\TEDIT.TEXTPEEKBIN 47472 . 53022) (
\TEDIT.TEXTBACKFILEPTR 53024 . 58800) (\TEDIT.TEXTBOUT 58802 . 63419) (\TEDIT.INSTALL.FILEBUFFER 63421
. 67627)) (68527 72818 (\TEDIT.TEXTOUTCHARFN 68537 . 70093) (\TEDIT.TEXTINCCODEFN 70095 . 70834) (
\TEDIT.TEXTBACKCCODEFN 70836 . 71428) (\TEDIT.TEXTFORMATBYTESTREAM 71430 . 72267) (
\TEDIT.TEXTFORMATBYTESTRING 72269 . 72816)) (72865 84940 (OPENTEXTSTREAM 72875 . 79851) (
COPYTEXTSTREAM 79853 . 84163) (TEDIT.STREAMCHANGEDP 84165 . 84467) (TXTFILE 84469 . 84938)) (84941
108146 (\TEDIT.REOPENTEXTSTREAM 84951 . 86303) (\TEDIT.OPENTEXTSTREAM.PIECES 86305 . 91233) (
\TEDIT.OPENTEXTSTREAM.PROPS 91235 . 92337) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 92339 . 97789) (
\TEDIT.OPENTEXTSTREAM.WINDOW 97791 . 100582) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 100584 . 102523) (
\TEDIT.OPENTEXTFILE 102525 . 104657) (\TEDIT.CREATE.TEXTSTREAM 104659 . 105806) (\TEDIT.REOPEN.STREAM
105808 . 108144)) (108147 116372 (\TEDIT.STREAMINIT 108157 . 116189) (TEDIT.IMAGESTREAM.OPEN 116191 .
116370)) (116560 117748 (\TEDIT.TTYBOUT 116570 . 117746)) (117866 139549 (\TEDIT.TEXTCLOSEF 117876 .
119200) (\TEDIT.TEXTDSPFONT 119202 . 120400) (\TEDIT.TEXTEOFP 120402 . 122157) (\TEDIT.TEXTGETEOFPTR
122159 . 122482) (\TEDIT.TEXTSETEOFPTR 122484 . 123771) (\TEDIT.TEXTGETFILEPTR 123773 . 126608) (
\TEDIT.TEXTSETFILEINFO 126610 . 127118) (\TEDIT.TEXTOPENF 127120 . 128051) (\TEDIT.TEXTSETEOF 128053
. 128669) (\TEDIT.TEXTSETFILEPTR 128671 . 130781) (\TEDIT.TEXTDSPXPOSITION 130783 . 133486) (
\TEDIT.TEXTDSPYPOSITION 133488 . 134229) (\TEDIT.TEXTLEFTMARGIN 134231 . 134822) (\TEDIT.TEXTCOLOR
134824 . 135407) (\TEDIT.TEXTRIGHTMARGIN 135409 . 138698) (\TEDIT.TEXTDSPCHARWIDTH 138700 . 139004) (
\TEDIT.TEXTDSPSTRINGWIDTH 139006 . 139312) (\TEDIT.TEXTDSPLINEFEED 139314 . 139547)) (139587 152583 (
\TEDIT.NTHCHARCODE 139597 . 141123) (\TEDIT.PIECE.NTHCHARCODE 141125 . 145033) (\TEDIT.RPLCHARCODE
145035 . 146593) (\TEDIT.PIECE.RPLCHARCODE 146595 . 152228) (\TEDIT.NTHCHARLOOKS 152230 . 152581)) (
153630 174724 (\TEDIT.DELETE.SELPIECES 153640 . 157265) (\TEDIT.INSERTCH 157267 . 165306) (
\TEDIT.INSERTCH.HISTORY 165308 . 168772) (\TEDIT.INSERTEOL 168774 . 170599) (\TEDIT.INSERTCH.INSERTION
170601 . 173438) (\TEDIT.INSERTCH.EXTEND 173440 . 174722)) (174725 176332 (\TEDIT.NEXTCHANGEABLE.CHNO
174735 . 175450) (\TEDIT.LASTCHANGEABLE.CHNO 175452 . 176330)) (176333 180791 (\TEDIT.INSTALL.PIECE
176343 . 180789)) (180829 190295 (TEXTPROP 180839 . 181186) (GETTEXTPROP 181188 . 181432) (PUTTEXTPROP
181434 . 181691) (GETTEXTPROPS 181693 . 182137) (PUTTEXTPROPS 182139 . 183043) (TEXTPROP.ADD 183045
. 183308) (\TEDIT.TEXTPROP 183310 . 190293)) (190296 192673 (\TEDIT.TEXTOBJ.PROPNAMES 190306 . 191565
) (\TEDIT.TEXTOBJ.PROPFETCHFN 191567 . 192083) (\TEDIT.TEXTOBJ.PROPSTOREFN 192085 . 192671)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,11 +1,11 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "14-Jan-2026 14:50:53" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;248 52743
(FILECREATED "16-Feb-2026 08:56:58" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;249 52790
:EDIT-BY rmk
:PREVIOUS-DATE "10-Jan-2026 23:04:09" {WMEDLEY}<library>TEDIT>tedit-exports.all;247)
:PREVIOUS-DATE "14-Jan-2026 14:50:53" {WMEDLEY}<library>TEDIT>tedit-exports.all;248)
(PRETTYCOMPRINT ((E (MAPC (MKLIST FROMFILES) (FUNCTION (LAMBDA (F) (MAPC (IMPORTFILE F FLG) (FUNCTION
@@ -17,7 +17,7 @@ PRINT))))))))
(PUTPROPS FTEXTOBJ MACRO ((X) (TEXTOBJ! (CL:IF (type? TEXTOBJ X) X (GETTSTR X TEXTOBJ)))))
(GLOBALVARS CHECK-TEDIT-ASSERTIONS)
(RPAQ? CHECK-TEDIT-ASSERTIONS T)
(PUTPROP (QUOTE TEDIT) (QUOTE IMPORTDATE) (IDATE "10-Jan-2026 01:39:21"))
(PUTPROP (QUOTE TEDIT) (QUOTE IMPORTDATE) (IDATE " 4-Feb-2026 16:02:02"))
(RPAQQ \BTREEWORDSPERSLOT 4)
(RPAQQ \BTREEMAXCOUNT 8)
(CONSTANTS (\BTREEWORDSPERSLOT 4) (\BTREEMAXCOUNT 8))
@@ -51,7 +51,7 @@ DLEN1 DOWN2 DLEN2 DOWN3 DLEN3 DOWN4 DLEN4 DOWN5 DLEN5 DOWN6 DLEN6 DOWN7 DLEN7 DO
(\DTEST (OR (NEXTPIECE I.V.) (GO $$OUT)) (QUOTE PIECE)))))
(I.S.OPR (QUOTE backpieces) NIL (QUOTE (first (SETQ I.V. (\DTEST (OR BODY (GO $$OUT)) (QUOTE PIECE)))
by (\DTEST (OR (PREVPIECE I.V.) (GO $$OUT)) (QUOTE PIECE)))))
(PUTPROP (QUOTE TEDIT-PCTREE) (QUOTE IMPORTDATE) (IDATE "28-Jul-2025 23:25:19"))
(PUTPROP (QUOTE TEDIT-PCTREE) (QUOTE IMPORTDATE) (IDATE "14-Feb-2026 13:22:06"))
(DATATYPE SELECTION ((* ;;
"Description of a piece of selected text for TEdit. Text has to be selected before it can be operated on by the user. The caret is to the left of CH# if POINT is LEFT, to the keft of CHLIM if POINT is RIGHT."
) (* ;; "If DCH > 0, highlighting goes from CH# to (SUB1 CHLIM = (SUB1 (IPLUS CH# DCH)).") (* ;;
@@ -128,7 +128,7 @@ TSTREAM ONLYPANE DONTFIX)))
(PUTPROPS \TEDIT.SEL.OFF MACRO ((TSTREAM SEL ONLYPANE) (* ;
"Takes down SEL in TSTREAM, where SEL defaults to the current selection") (\TEDIT.SHOWSEL SEL NIL
TSTREAM ONLYPANE)))
(PUTPROP (QUOTE TEDIT-SELECTION) (QUOTE IMPORTDATE) (IDATE "14-Jan-2026 14:32:01"))
(PUTPROP (QUOTE TEDIT-SELECTION) (QUOTE IMPORTDATE) (IDATE "16-Feb-2026 00:38:33"))
(RECORD TAB (TABX . TABKIND))
(RECORD TABSPEC (DEFAULTTAB . TABS))
(DATATYPE LINECACHE ((* ;; "Image cache for display lines.") LCBITMAP (* ;
@@ -259,7 +259,7 @@ NEXTAVAILABLECHARSLOT) of THISLINE))) (T $$STARTSLOT))) (SETQ $$CHARSLOTLIMIT (F
) by (PREVCHARSLOT I.V.) eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) (SETQ CHARW (fetch (
CHARSLOT CHARW) of I.V.)) (SETQ CHARCL (fetch (CHARSLOT CHARCL) of I.V.)) repeatuntil (EQ I.V.
$$CHARSLOTLIMIT))))) T)
(PUTPROP (QUOTE TEDIT-SCREEN) (QUOTE IMPORTDATE) (IDATE "31-Dec-2025 23:10:18"))
(PUTPROP (QUOTE TEDIT-SCREEN) (QUOTE IMPORTDATE) (IDATE " 5-Feb-2026 00:39:54"))
(DATATYPE PIECE ((* ;
"The piece describes either a string or part of a file. , or a generalized OBJECT.") PCONTENTS (* ;
"The background source of data for this piece (stream, string, block, object, depending on the PTYPE)."
@@ -372,6 +372,7 @@ IMAGEDATA _ NIL)))
(PUTPROPS NEXTPIECE MACRO ((PC) (ffetch (PIECE NEXTPIECE) of PC)))
(PUTPROPS PREVPIECE MACRO ((PC) (ffetch (PIECE PREVPIECE) of PC)))
(PUTPROPS PLEN MACRO ((PC) (ffetch (PIECE PLEN) of PC)))
(PUTPROPS PLAST MACRO ((PC) (SUB1 (PLEN PC))))
(PUTPROPS PTYPE MACRO ((PC) (ffetch (PIECE PTYPE) of PC)))
(PUTPROPS PCONTENTS MACRO ((PC) (ffetch (PIECE PCONTENTS) of PC)))
(PUTPROPS PCHARLOOKS MACRO ((PC) (ffetch (PIECE PCHARLOOKS) of PC)))
@@ -440,7 +441,7 @@ UTF8.PTYPE UTF16BE.PTYPE UTF16LE.PTYPE)) (STRING.PTYPES (LIST THINSTRING.PTYPE F
BINABLE.PTYPES (LIST THINFILE.PTYPE THINSTRING.PTYPE)) (THIN.PTYPES (LIST THINFILE.PTYPE
THINSTRING.PTYPE)) (FAT.PTYPES (LIST FATFILE2.PTYPE FATSTRING.PTYPE FATFILE1.PTYPE)))
(GLOBALVARS \TEXTIMAGEOPS \TEXTFDEV)
(PUTPROP (QUOTE TEDIT-STREAM) (QUOTE IMPORTDATE) (IDATE "14-Jan-2026 14:32:01"))
(PUTPROP (QUOTE TEDIT-STREAM) (QUOTE IMPORTDATE) (IDATE "16-Feb-2026 08:56:40"))
(PUTPROPS \TEDIT.MOUSESTATE MACRO (BUTTON (* ;;
"Test to see if only the specified mouse button is down. DOES NOT call GETMOUSESTATE, so the mouse-button info is the same as the last time it was called."
) (SELECTQ (CAR BUTTON) (LEFT (QUOTE (EQ LASTMOUSEBUTTONS 4))) (MIDDLE (QUOTE (EQ LASTMOUSEBUTTONS 1))
@@ -454,7 +455,7 @@ I in ARGS as J on ARGS when (NOT (STRINGP I)) collect (LIST (QUOTE OR) I (LIST (
\BIN STREAM)) BITSPERWORD)))
(PUTPROPS \SMALLPOUT MACRO (OPENLAMBDA (STREAM W) (* ; "Signed smallp, unlike \WOUT") (\BOUT STREAM (
LOGAND 255 (LRSH W 8))) (\BOUT STREAM (LOGAND W 255))))
(PUTPROP (QUOTE TEDIT-FILE) (QUOTE IMPORTDATE) (IDATE "23-Oct-2025 08:49:06"))
(PUTPROP (QUOTE TEDIT-FILE) (QUOTE IMPORTDATE) (IDATE "15-Feb-2026 23:45:51"))
(PUTPROP (QUOTE TEDIT-OLDFILE) (QUOTE IMPORTDATE) (IDATE " 8-Sep-2025 22:10:10"))
(DATATYPE CHARLOOKS ((* ;; "Describes the appearance (%"Looks%") of characters in a TEdit document.")
(* ;; "NOTE: If fields change EQCLOOKS should change too.") CLFONT (* ;
@@ -537,7 +538,7 @@ LINELEAD _ 0)
(PUTPROPS FSETPLOOKS MACRO ((PLOOKS FIELD NEWVALUE) (freplace (PARALOOKS FIELD) of PLOOKS with
NEWVALUE)))
(PUTPROPS PARALOOKS! MACRO ((PL) (\DTEST PL (QUOTE PARALOOKS))))
(PUTPROP (QUOTE TEDIT-LOOKS) (QUOTE IMPORTDATE) (IDATE " 7-Dec-2025 16:32:32"))
(PUTPROP (QUOTE TEDIT-LOOKS) (QUOTE IMPORTDATE) (IDATE "16-Feb-2026 00:36:00"))
(PUTPROP (QUOTE TEDIT-STYLES) (QUOTE IMPORTDATE) (IDATE "28-Jul-2025 23:25:43"))
(DATATYPE TEDITCARET (TCNOWTIME (* Used to hold the current time, when checking to see if a transition
is due) TCTHENTIME (* Time when the next transition is to take place) TCFORCEDDOWN (* TCFORCEDOWN = T
@@ -600,9 +601,9 @@ OR (CL:IF (TYPENAMEP $$BODY (QUOTE TEXTOBJ)) (FGETTOBJ $$BODY PRIMARYPANE) $$BOD
GETPANEPROP (PANEPROPS P) NEXTPANE))) (GO $$OUT))) by (OR (GETPANEPROP (PANEPROPS I.V.) PREVPANE) (GO
$$OUT)))))
(PUTPROPS ALLBUTTONSUP MACRO (NIL (ZEROP (LOGAND 7 LASTMOUSEBUTTONS))))
(PUTPROP (QUOTE TEDIT-WINDOW) (QUOTE IMPORTDATE) (IDATE "14-Jan-2026 14:32:01"))
(PUTPROP (QUOTE TEDIT-BUTTONS) (QUOTE IMPORTDATE) (IDATE "19-Oct-2025 10:44:18"))
(PUTPROP (QUOTE TEDIT-MENU) (QUOTE IMPORTDATE) (IDATE "12-Dec-2025 00:01:26"))
(PUTPROP (QUOTE TEDIT-WINDOW) (QUOTE IMPORTDATE) (IDATE " 7-Feb-2026 18:53:22"))
(PUTPROP (QUOTE TEDIT-BUTTONS) (QUOTE IMPORTDATE) (IDATE "25-Jan-2026 09:14:04"))
(PUTPROP (QUOTE TEDIT-MENU) (QUOTE IMPORTDATE) (IDATE " 9-Feb-2026 09:10:43"))
(PUTPROP (QUOTE TEDIT-FIND) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:42:57"))
(RPAQQ \TEDIT.TTCCODES ((NONE . 0) (CHARDELETE . 1) (:CHARDELETE.BACKWARD . 1) (WORDDELETE . 2) (
:WORDDELETE.BACKWORD . 2) (DELETE . 3) (:DELETE . 3) (FN . 4) (REDO . 5) (:REDO . 5) (UNDO . 6) (:UNDO
@@ -610,8 +611,8 @@ $$OUT)))))
(:CHARDELETE.FORWARD . 10) (:WORDDELETE.FORWARD . 11) (PUNCT . 20) (TEXT . 21) (WHITESPACE . 22)))
(CONSTANTS \TEDIT.TTCCODES)
(PUTPROPS \TEDIT.TTC MACRO ((ACTION) (CONSTANT (GETMULTI \TEDIT.TTCCODES (QUOTE ACTION)))))
(PUTPROP (QUOTE TEDIT-FNKEYS) (QUOTE IMPORTDATE) (IDATE "24-Nov-2025 08:40:56"))
(PUTPROP (QUOTE TEDIT-HCPY) (QUOTE IMPORTDATE) (IDATE "24-Dec-2025 11:16:22"))
(PUTPROP (QUOTE TEDIT-FNKEYS) (QUOTE IMPORTDATE) (IDATE " 8-Feb-2026 19:54:41"))
(PUTPROP (QUOTE TEDIT-HCPY) (QUOTE IMPORTDATE) (IDATE "15-Jan-2026 11:08:15"))
(DATATYPE TEDITHISTORYEVENT ((* ;; "Describes one event on the TEdit edit history list.") THACTION (*
; "A keyword specifying what the event was") THPOINT (* ; "Was the selection to the left or right?")
THLEN (* ; "The # of chars involved") THCH# (* ; "The starting ch#") THFIRSTPIECE (* ;
@@ -660,9 +661,9 @@ REGIONPARENT FULLXPOINTER) (* ; "The parent node for this box, for sub-boxes") R
$$VALUES)) (PROG1 (CAR $$VALUES) (\,@ (FOR V IN (CAR ARGS) collect (COND (V (BQUOTE (SETQ (\, V) (POP
$$VALUES)))) (T (BQUOTE (SETQ $$VALUES (CDR $$VALUES))))))))))))
(PUTPROPS TEDIT.VALUES MACRO (ARGS (BQUOTE (LIST (\,@ ARGS)))))
(PUTPROP (QUOTE TEDIT-PAGE) (QUOTE IMPORTDATE) (IDATE "25-Dec-2025 15:07:57"))
(PUTPROP (QUOTE TEDIT-ABBREV) (QUOTE IMPORTDATE) (IDATE "13-Jan-2026 17:51:55"))
(PUTPROP (QUOTE TEDIT-TFBRAVO) (QUOTE IMPORTDATE) (IDATE " 7-Sep-2025 11:11:43"))
(PUTPROP (QUOTE TEDIT-PAGE) (QUOTE IMPORTDATE) (IDATE "27-Jan-2026 10:30:27"))
(PUTPROP (QUOTE TEDIT-ABBREV) (QUOTE IMPORTDATE) (IDATE "23-Jan-2026 15:49:26"))
(PUTPROP (QUOTE TEDIT-TFBRAVO) (QUOTE IMPORTDATE) (IDATE "21-Jan-2026 12:15:57"))
(DECLARE%: DONTCOPY
(FILEMAP (NIL)))
STOP

View File

@@ -1,10 +1,10 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
(FILECREATED "13-Oct-2025 13:44:47" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;5 59521
(FILECREATED "19-Feb-2026 22:32:05" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;6 59604
:EDIT-BY rmk
:PREVIOUS-DATE "13-Oct-2025 12:03:23" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;4)
:PREVIOUS-DATE "13-Oct-2025 13:44:47" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;5)
(PRETTYCOMPRINT KEYBOARDCONFIGSCOMS)
@@ -57,11 +57,11 @@
(F3 (F3 ITALIC))
(F4 (F4 UCASE))
(F5 (F5 STRIKE))
(F6 (F6 "­"))
(F6 (F6 "^"))
(F7 (F7 SUBSCR))
(F8 (F8 SMALL))
(F9 (F9 MARGIN))
(F10 (F10 "¬"))
(F10 (F10 "_"))
(F11 (F11 ""))
(F12 (F12 ""))
(LOCK ("CAPS" "LOCK"))
@@ -115,7 +115,7 @@
(THREE (|3| %# NLS))
(FOUR (|4| $ NLS))
(FIVE (|5| %% NLS))
(SIX (|6| ^ NLS))
(SIX (|6| NLS))
(SEVEN (|7| & NLS))
(EIGHT (|8| * NLS))
(NINE (|9| %( NLS))))
@@ -234,7 +234,7 @@
NIL
((%" (%' %" NLS))
(+ (= + NLS))
(- (- _ NLS))
(- (- NLS))
(%: (; %: NLS))
(< (%, < NLS))
(> (%. > NLS))
@@ -255,13 +255,13 @@
(NUMERIC/ (/ /))
(NUMERIC0 (INS |0| NLS))
(NUMERIC1 (END |1| NLS))
(NUMERIC2 (¯ |2| NLS))
(NUMERIC2 ( |2| NLS))
(NUMERIC3 (PGDN |3| NLS))
(NUMERIC4 (¬ |4| NLS))
(NUMERIC4 (_ |4| NLS))
(NUMERIC5 (|5| |5|))
(NUMERIC6 (® |6| NLS))
(NUMERIC6 ( |6| NLS))
(NUMERIC7 (HOME |7| NLS))
(NUMERIC8 (­ |8| NLS))
(NUMERIC8 (^ |8| NLS))
(NUMERIC9 (PGUP |9| NLS))
(NUMERIC= (= =))
(RETURN (CR CR))
@@ -274,17 +274,17 @@
(F3 (ITALIC NOTITALIC NLS))
(F4 (UCASE LCASE NLS))
(F5 (STRIKEOUT NOTSTRIKEOUT NLS))
(F6 ("­" "­" NLS))
(F6 ("^" "^" NLS))
(F7 (SUBSCRIPT SUPERSCRIPT NLS))
(F8 (SMALLER LARGER NLS))
(F9 (MARGINS NOTMARGINS NLS))
(F10 ("¬" "¬" NLS))
(F10 ("_" "_" NLS))
(F11 (F11 NOTF11 NLS))
(F12 (F12 NOTF12 NLS)))
((%` 45 B)
(~ 45 T)
(|6| 2 B)
(^ 2 T)
( 2 T)
(%% 0 T)
(|5| 0 B)
($ 1 T)
@@ -523,7 +523,7 @@
(> (346 46 29 33))
(%: (362 82 29 33))
(<-%| (426 82 63 33))
(^ (450 118 29 33))
( (450 118 29 33))
(DEL (498 154 29 33))
(R (162 118 29 33))
(T (194 118 29 33))
@@ -556,7 +556,7 @@
(LF (LF LF))
(LOCK LOCKDOWN . LOCKUP)
(\ (\ %| NLS))
(^ (_ ^ NLS))
( (← ↑ NLS))
({ (%[ { NLS))
(} (%] } NLS)))
((BLANK-MIDDLE 30)
@@ -643,8 +643,8 @@
(%: 43)
(CR 44)
(<-%| 44)
(_ 45)
(^ 45)
( 45)
( 45)
(r 48)
(R 48)
(t 49)
@@ -744,7 +744,7 @@
NIL
((%" (%' %" NLS))
(+ (= + NLS))
(- (- _ NLS))
(- (- NLS))
(ESC (ESC %| NLS))
(%: (; %: NLS))
(< (%, < NLS))
@@ -757,7 +757,7 @@
(~ (%` ~ NLS)))
((%` 45)
(~ 45)
(^ 2)
( 2)
(|6| 2)
(w 18)
(W 18)
@@ -951,7 +951,7 @@
NIL
((%" (%' %" NLS))
(+ (= + NLS))
(- (- _ NLS))
(- (- NLS))
(%: (; %: NLS))
(< (%, < NLS))
(<-%| (CR CR))
@@ -962,21 +962,21 @@
(KEYBOARD METADOWN . METAUP)
(LOCK LOCKDOWN . LOCKUP)
(NEXT (2,22 2,62 NLS))
(NUMERIC* (NUMLK ´ NLS))
(NUMERIC* (NUMLK × NLS))
(NUMERIC+ (HELP 2,45 NLS))
(NUMERIC, (\ %, NLS))
(NUMERIC- (SCRL - NLS))
(NUMERIC. (%| 21 NLS))
(NUMERIC/ (BREAK ¸ NLS))
(NUMERIC/ (BREAK ÷ NLS))
(NUMERIC0 (INS |0| NLS))
(NUMERIC1 (END |1| NLS))
(NUMERIC2 (¯ |2| NLS))
(NUMERIC2 ( |2| NLS))
(NUMERIC3 (PGDN |3| NLS))
(NUMERIC4 (¬ |4| NLS))
(NUMERIC4 (_ |4| NLS))
(NUMERIC5 (% |5| NLS))
(NUMERIC6 (® |6| NLS))
(NUMERIC6 ( |6| NLS))
(NUMERIC7 (HOME |7| NLS))
(NUMERIC8 (­ |8| NLS))
(NUMERIC8 (^ |8| NLS))
(NUMERIC9 (PGUP |9| NLS))
(%` (%` ~ NLS))
({ (%[ { NLS))
@@ -987,7 +987,7 @@
(|4| 1)
($ 1)
(|6| 2)
(^ 2)
( 2)
(e 3)
(E 3)
(|7| 4)
@@ -1233,7 +1233,7 @@
(%. (%. > NLS))
(/ (/ ? NLS))
(\ (\ %| NLS))
(- (- _ NLS))
(- (- NLS))
(%` (%` ~ NLS))
(%[ (%[ { NLS))
(%] (%] } NLS))
@@ -1249,13 +1249,13 @@
(NUMERIC/ (/ /))
(NUMERIC0 (INS |0| NLS))
(NUMERIC1 (END |1| NLS))
(NUMERIC2 (¯ |2| NLS))
(NUMERIC2 ( |2| NLS))
(NUMERIC3 (PGDN |3| NLS))
(NUMERIC4 (¬ |4| NLS))
(NUMERIC4 (_ |4| NLS))
(NUMERIC5 (|5| |5|))
(NUMERIC6 (® |6| NLS))
(NUMERIC6 ( |6| NLS))
(NUMERIC7 (HOME |7| NLS))
(NUMERIC8 (­ |8| NLS))
(NUMERIC8 (^ |8| NLS))
(NUMERIC9 (PGUP |9| NLS))
(NUMERICENTER (CR CR))
(RALT METADOWN . METAUP)
@@ -1264,11 +1264,11 @@
(F3 (ITALIC NOTITALIC NLS))
(F4 (UCASE LCASE NLS))
(F5 (STRIKEOUT NOTSTRIKEOUT NLS))
(F6 ("­" "­" NLS))
(F6 ("^" "^" NLS))
(F7 (SUBSCRIPT SUPERSCRIPT NLS))
(F8 (SMALLER LARGER NLS))
(F9 (MARGINS NOTMARGINS NLS))
(F10 ("¬" "¬" NLS))
(F10 ("_" "_" NLS))
(F11 (F11 NOTF11 NLS))
(F12 (F12 NOTF12 NLS)))
((%' 28 B)
@@ -1276,7 +1276,7 @@
(%, 27 B)
(< 27 T)
(- 10 B)
(_ 10 T)
( 10 T)
(> 42 T)
(%. 42 B)
(/ 12 B)
@@ -1286,7 +1286,7 @@
(%# 16 T)
($ 1 T)
(%% 0 T)
(^ 4 T)
( 4 T)
(* 53 T)
(%( 22 T)
(%) 8 T)
@@ -1494,7 +1494,7 @@
(M (370 42 29 29))
(; (402 42 29 29))
(%: (434 42 29 29))
(_ (466 42 29 29))
( (466 42 29 29))
(RSHIFT (498 42 53 29))
(LINEFEED (554 42 29 29))
(CONTROL (106 74 53 29))
@@ -1559,7 +1559,7 @@
(ONE (|1| + NLS))
(TWO (|2| %" NLS))
(THREE (|3| * NLS))
(FOUR (|4| NLS))
(FOUR (|4| NLS))
(SIX (|6| & NLS))
(SEVEN (|7| / NLS))
(EIGHT (|8| %( NLS))
@@ -1567,7 +1567,7 @@
(%: (%. %: NLS))
(; (%, ; NLS))
(? (%' ? NLS))
(AUMLAUT (… „ NLS))
(AUMLAUT (  NLS))
(CAPSLOCK CTRLDOWN . CTRLUP)
(CONTROL LOCKDOWN . LOCKUP)
(CR (CR CR))
@@ -1591,10 +1591,10 @@
(NUMERIC8 (|8| |8|))
(NUMERIC9 (|9| |9|))
(NUMERIC= (= =))
(OUMLAUT ( NLS))
(UUMLAUT (Š <20> NLS))
(OUMLAUT (  NLS))
(UUMLAUT (  NLS))
(%[ (%] %[ NLS))
(_ (- _ NLS))
( (- NLS))
({ (< { NLS))
(} (> } NLS)))
((HELP 0)
@@ -1658,7 +1658,7 @@
(%. 49)
(%: 49)
(- 50)
(_ 50)
( 50)
(RSHIFT 51)
(LINEFEED 52)
(CONTROL 53)

Binary file not shown.

View File

@@ -1,18 +1,17 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED "31-Jan-87 18:09:00" {ERIS}<LISPUSERS>LYRIC>BACKGROUNDMENU.;1 7367
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
previous date%: "31-Jan-86 11:36:13" {ERIS}<LISP>KOTO>LISPUSERS>BACKGROUNDMENU.;1)
(FILECREATED "18-Feb-2026 16:20:10" {WMEDLEY}<lispusers>BACKGROUNDMENU.;2 7230
:EDIT-BY rmk
:PREVIOUS-DATE "31-Jan-87 18:09:00" {WMEDLEY}<lispusers>BACKGROUNDMENU.;1)
(* "
Copyright (c) 1985, 1986, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT BACKGROUNDMENUCOMS)
(RPAQQ BACKGROUNDMENUCOMS ((INITVARS BackgroundMenuFixupMode BackgroundMenuSuperItem
BackgroundMenuTopLevelItems)
(FNS BkgMenu.add.item BkgMenu.fixup BkgMenu.move.item BkgMenu.remove.item
(FNS BkgMenu.add.item BkgMenu.fixup BkgMenu.move.item BkgMenu.remove.item
BkgMenu.rename.item BkgMenu.reorder.items BkgMenu.subitems
\BkgMenu.locate \BkgMenu.locater \BkgMenu.remove.item
\BkgMenu.scan.item.list \BkgMenu.unremove.item)))
@@ -153,11 +152,10 @@ Copyright (c) 1985, 1986, 1987 by Xerox Corporation. All rights reserved.
else (SETQ BackgroundMenuCommands (CONS (CAR item)
BackgroundMenuCommands])
)
(PUTPROPS BACKGROUNDMENU COPYRIGHT ("Xerox Corporation" 1985 1986 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1008 7271 (BkgMenu.add.item 1018 . 1910) (BkgMenu.fixup 1912 . 3131) (BkgMenu.move.item
3133 . 3557) (BkgMenu.remove.item 3559 . 3834) (BkgMenu.rename.item 3836 . 4128) (
BkgMenu.reorder.items 4130 . 4505) (BkgMenu.subitems 4507 . 4907) (\BkgMenu.locate 4909 . 5520) (
\BkgMenu.locater 5522 . 6089) (\BkgMenu.remove.item 6091 . 6378) (\BkgMenu.scan.item.list 6380 . 6877)
(\BkgMenu.unremove.item 6879 . 7269)))))
(FILEMAP (NIL (944 7207 (BkgMenu.add.item 954 . 1846) (BkgMenu.fixup 1848 . 3067) (BkgMenu.move.item
3069 . 3493) (BkgMenu.remove.item 3495 . 3770) (BkgMenu.rename.item 3772 . 4064) (
BkgMenu.reorder.items 4066 . 4441) (BkgMenu.subitems 4443 . 4843) (\BkgMenu.locate 4845 . 5456) (
\BkgMenu.locater 5458 . 6025) (\BkgMenu.remove.item 6027 . 6314) (\BkgMenu.scan.item.list 6316 . 6813)
(\BkgMenu.unremove.item 6815 . 7205)))))
STOP

Binary file not shown.

View File

@@ -1,14 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 7-Sep-88 17:08:57" {ERINYES}<LISPUSERS>MEDLEY>CHATSERVER.;11 47957
changes to%: (FNS CHATSERVEROPENFN)
(FILECREATED " 9-Feb-2026 22:25:32" {WMEDLEY}<lispusers>CHATSERVER.;2 45227
previous date%: "19-May-88 00:37:49" {ERINYES}<LISPUSERS>MEDLEY>CHATSERVER.;10)
:EDIT-BY rmk
:CHANGES-TO (FNS \CREATELINEBUFFER)
:PREVIOUS-DATE " 7-Sep-88 17:08:57" {WMEDLEY}<lispusers>CHATSERVER.;1)
(* "
Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT CHATSERVERCOMS)
@@ -40,8 +39,7 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(COMMANDS "QUIT" "SAY")
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML)
(LAMA \REMOTE.BIN
CHATSERVEROPENFN])
(LAMA CHATSERVEROPENFN])
(DEFINEQ
(CHATSERVER
@@ -450,34 +448,34 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(RETURN CHARBUFFER])
(\CREATELINEBUFFER
[LAMBDA (TERMINAL.STREAM) (* ; "Edited 13-Apr-87 22:57 by bvm:")
(* ;;
 "Create a new stream that buffers the raw input from TERMINAL.STREAM (default is the keyboard).")
[LAMBDA (TERMINAL.STREAM) (* ; "Edited 9-Feb-2026 22:21 by rmk")
(* ; "Edited 13-Apr-87 22:57 by bvm:")
(LET* ([STREAM (\OPENFILE '{LINEBUFFER} 'BOTH 'NEW '((CHARSET T]
(* ;; "This is a copy of \CREATELINEBUFFER on ATERM, except for the source of the EOFMETHOD.")
(* ;;
 "Create a new stream that buffers the raw input from TERMINAL.STREAM (default is the keyboard).")
(LET* ([STREAM (\OPENFILE '{LINEBUFFER} 'BOTH 'NEW '((:EXTERNAL-FORMAT :THROUGH16]
(DEV (fetch (STREAM DEVICE) of STREAM))
EOFMETHOD)
(replace LINEBUFSTATE of STREAM with READING.LBS)
(replace (LINEBUFFER KEYBOARDSTREAM) of STREAM with (OR TERMINAL.STREAM
\KEYBOARD.STREAM))
(replace (LINEBUFFER KEYBOARDSTREAM) of STREAM with (OR TERMINAL.STREAM \KEYBOARD.STREAM))
(replace USERCLOSEABLE of STREAM with NIL)
(replace USERVISIBLE of STREAM with NIL)
(* ;
 "Other linebuffer fields default properly")
(replace USERVISIBLE of STREAM with NIL) (* ;
 "Other linebuffer fields default properly")
[replace ENDOFSTREAMOP of STREAM with (FUNCTION (LAMBDA (STREAM)
(CL:FUNCALL \RefillBufferFn]
(if (AND TERMINAL.STREAM (NEQ (SETQ EOFMETHOD (fetch (FDEV EOFP)
of (fetch (STREAM DEVICE)
TERMINAL.STREAM)))
'NILL))
(CL:FUNCALL \RefillBufferFn]
(if (AND TERMINAL.STREAM (NEQ (SETQ EOFMETHOD (fetch (FDEV EOFP) of (fetch (STREAM DEVICE)
TERMINAL.STREAM)
))
'NILL))
then
(* ;; "Need to install an eof method for the buffered stream that looks at TERMINAL.STREAM when the buffer runs out. This is optimized away for the normal keyboard case, which never runs out.")
(* ;; "Need to install an eof method for the buffered stream that looks at TERMINAL.STREAM when the buffer runs out. This is optimized away for the normal keyboard case, which never runs out.")
(replace (STREAM DEVICE) of STREAM with (SETQ DEV (NCREATE
'FDEV DEV)))
(* ;
 "Copy the basic linebuffer device")
(replace (FDEV EOFP) of DEV with EOFMETHOD))
(replace (STREAM DEVICE) of STREAM with (SETQ DEV (NCREATE 'FDEV DEV)))
(* ; "Copy the basic linebuffer device")
(replace (FDEV EOFP) of DEV with EOFMETHOD))
STREAM])
(\PROMPTFORWORDBIN
@@ -650,7 +648,7 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(SETQ CHATSERVERTTBL (COPYTERMTABLE 'ORIG))
(for I from 1 to 8 do (ECHOCHAR I 'IGNORE CHATSERVERTTBL)
(ECHOCHAR I 'IGNORE ASKUSERTTBL))
(ECHOCHAR I 'IGNORE ASKUSERTTBL))
(ECHOCHAR (CHARCODE CR)
'SIMULATE CHATSERVERTTBL)
@@ -715,29 +713,25 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(DECLARE%: EVAL@COMPILE
[PROGN (PUTPROPS \SYNCODE DMACRO [OPENLAMBDA (TABLE CHAR)
(CHECK (type? CHARTABLE TABLE))
(CHECK (type? CHARTABLE TABLE))
(* ;
 "0 is either NONE.TC, REAL.CCE, or OTHER.RC")
(COND
((IGREATERP CHAR \MAXTHINCHAR)
(OR (AND (fetch (CHARTABLE NSCHARHASH)
of TABLE)
(GETHASH CHAR (fetch (CHARTABLE
NSCHARHASH)
of TABLE)))
0))
(T (\GETBASEBYTE TABLE CHAR])
 "0 is either NONE.TC, REAL.CCE, or OTHER.RC")
(COND
((IGREATERP CHAR \MAXTHINCHAR)
(OR (AND (fetch (CHARTABLE NSCHARHASH) of TABLE)
(GETHASH CHAR (fetch (CHARTABLE NSCHARHASH)
of TABLE)))
0))
(T (\GETBASEBYTE TABLE CHAR])
(PUTPROPS \SYNCODE MACRO [OPENLAMBDA (TABLE CHAR)
(CHECK (type? CHARTABLE TABLE))
(COND
((IGREATERP CHAR \MAXTHINCHAR)
(OR (AND (fetch (CHARTABLE NSCHARHASH)
of TABLE)
(GETHASH CHAR (fetch (CHARTABLE
NSCHARHASH)
of TABLE)))
0))
(T (\GETBASEBYTE TABLE CHAR])]
(CHECK (type? CHARTABLE TABLE))
(COND
((IGREATERP CHAR \MAXTHINCHAR)
(OR (AND (fetch (CHARTABLE NSCHARHASH) of TABLE)
(GETHASH CHAR (fetch (CHARTABLE NSCHARHASH)
of TABLE)))
0))
(T (\GETBASEBYTE TABLE CHAR])]
)
(DECLARE%: DONTEVAL@LOAD DOCOPY
@@ -773,10 +767,9 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(READVISE MENU CHAT RINGBELLS)
)
(DEFCOMMAND "QUIT" ()
(RETFROM 'CHATSERVEROPENFN))
(DEFCOMMAND "QUIT" NIL (RETFROM 'CHATSERVEROPENFN))
(DEFCOMMAND "SAY" (&REST LINE)
(DEFCOMMAND "SAY" (&REST LINE)
[MAPC \PROCESSES (FUNCTION (LAMBDA (PROC)
(CL:WHEN (STRPOS "CHAT.SERVER" (PROCESS.NAME PROC))
(MAPRINT LINE (IF (EQ PROC (THIS.PROCESS))
@@ -795,53 +788,13 @@ Copyright (c) 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights res
(ADDTOVAR NLAML )
(ADDTOVAR LAMA \REMOTE.BIN CHATSERVEROPENFN)
)
(PRETTYCOMPRINT CHATSERVERCOMS)
(RPAQQ CHATSERVERCOMS
[(FNS CHATSERVER CHATSERVERWHENCLOSEDFN CHATSERVEROPENFN DOBE REQUIRED.LOGIN SERVER-EXEC
SWEEP.OFD \CLEARSYSBUF PROMPTFORWORD \CREATELINEBUFFER \PROMPTFORWORDBIN \REMOTE.BIN
\REMOTE.EXEC.OUTCHARFN CHATSERVER.FONT)
(DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (DISPLAYTERMFLG 'DM))
(INITVARS (CHATSERVER.PROFILE)
(\SIMPLEIMAGEOPS))
(P (SETQ CHATSERVERTTBL (COPYTERMTABLE 'ORIG))
(for I from 1 to 8 do (ECHOCHAR I 'IGNORE CHATSERVERTTBL)
(ECHOCHAR I 'IGNORE ASKUSERTTBL))
(ECHOCHAR (CHARCODE CR)
'SIMULATE CHATSERVERTTBL)
(ECHOCHAR (CHARCODE CR)
'SIMULATE ASKUSERTTBL)
(ECHOCHAR 0 'SIMULATE ASKUSERTTBL)
(ECHOCHAR 0 'SIMULATE CHATSERVERTTBL)))
(ADDVARS (\SWEPT.OFDS))
(DECLARE%: EVAL@COMPILE DONTCOPY (P (CHECKIMPORTS '(LLCHAR ATERM IMAGEIO FILEIO ATBL AOFD)
T)))
[COMS (FNS SIMPLECHATSERVER)
(INITVARS (CHATSERVERWINDOW)
(CHATSERVERWINDOWREGION '(11 228 392 190]
(MACROS \SYNCODE)
(DECLARE%: DONTEVAL@LOAD DOCOPY (FILES CL-TTYEDIT SIMPLECHAT)
(ADVISE MENU CHAT RINGBELLS))
(COMMANDS "QUIT" "SAY")
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML)
(LAMA CHATSERVEROPENFN])
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDTOVAR NLAMA )
(ADDTOVAR NLAML )
(ADDTOVAR LAMA CHATSERVEROPENFN)
)
(PUTPROPS CHATSERVER COPYRIGHT ("Xerox Corporation" 1984 1985 1986 1987 1988))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2216 38509 (CHATSERVER 2226 . 3955) (CHATSERVERWHENCLOSEDFN 3957 . 4304) (
CHATSERVEROPENFN 4306 . 8433) (DOBE 8435 . 8481) (REQUIRED.LOGIN 8483 . 11220) (SERVER-EXEC 11222 .
11395) (SWEEP.OFD 11397 . 11933) (\CLEARSYSBUF 11935 . 12184) (PROMPTFORWORD 12186 . 26531) (
\CREATELINEBUFFER 26533 . 28708) (\PROMPTFORWORDBIN 28710 . 31646) (\REMOTE.BIN 31648 . 33890) (
\REMOTE.EXEC.OUTCHARFN 33892 . 38114) (CHATSERVER.FONT 38116 . 38507)) (39151 41493 (SIMPLECHATSERVER
39161 . 41491)))))
(FILEMAP (NIL (2029 38278 (CHATSERVER 2039 . 3768) (CHATSERVERWHENCLOSEDFN 3770 . 4117) (
CHATSERVEROPENFN 4119 . 8246) (DOBE 8248 . 8294) (REQUIRED.LOGIN 8296 . 11033) (SERVER-EXEC 11035 .
11208) (SWEEP.OFD 11210 . 11746) (\CLEARSYSBUF 11748 . 11997) (PROMPTFORWORD 11999 . 26344) (
\CREATELINEBUFFER 26346 . 28477) (\PROMPTFORWORDBIN 28479 . 31415) (\REMOTE.BIN 31417 . 33659) (
\REMOTE.EXEC.OUTCHARFN 33661 . 37883) (CHATSERVER.FONT 37885 . 38276)) (38905 41247 (SIMPLECHATSERVER
38915 . 41245)))))
STOP

Binary file not shown.

View File

@@ -1,95 +1,88 @@
(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10)
(FILECREATED " 2-Apr-87 17:06:05" {ERIS}<LISPUSERS>LYRIC>COMMWINDOW.;3 49786
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS REMOTE-CURSOR COMMWINDOWCOMS)
(COURIERPROGRAMS COMMWINDOW)
(FNS CLOSE-FRAME START-GET-BITS SEND-BITS FRAME-EVENT MAKE-FRAME)
(FUNCTIONS \PILOTBITBLT)
(FILECREATED "18-Feb-2026 16:21:29" {WMEDLEY}<lispusers>COMMWINDOW.;2 48680
previous date%: " 2-Apr-87 16:54:24" {ERIS}<LISPUSERS>LYRIC>COMMWINDOW.;2)
:EDIT-BY rmk
:PREVIOUS-DATE " 2-Apr-87 17:06:05" {WMEDLEY}<lispusers>COMMWINDOW.;1)
(* "
Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT COMMWINDOWCOMS)
(RPAQQ COMMWINDOWCOMS (
(RPAQQ COMMWINDOWCOMS
(
(* ;;; "Viewer end")
(FNS CLOSE-FRAME GET-BITS START-GET-BITS)
(FILES COURIERSERVE)
(FNS CLOSE-FRAME GET-BITS START-GET-BITS)
(FILES COURIERSERVE)
(* ;;; "Sender end")
(FNS SEND-BITS SEND-TILE LISTEN-TO-VIEWER MAPTILES SHUT-DOWN-VIEWER
CHANGE-SENDER-UPDATE-MODE)
(FUNCTIONS INCR \PILOTBITBLT)
(* ;; "Controling update schemes")
(FNS SEND-BITS SEND-TILE LISTEN-TO-VIEWER MAPTILES SHUT-DOWN-VIEWER CHANGE-SENDER-UPDATE-MODE
)
(FUNCTIONS INCR \PILOTBITBLT)
(* ;; "Controling update schemes")
(INITVARS (COMM.DEFAULT.TRANSMIT.TYPE 'SQUARE)
(COMM.SEND.UNCHANGED.TILES T)
(COMM.UPDATE.MOUSE.POSITION 'Sender))
(GLOBALVARS COMM.DEFAULT.TRANSMIT.TYPE COMM.UPDATE.MOUSE.POSITION
COMM.SEND.UNCHANGED.TILES)
(INITVARS (COMM.DEFAULT.TRANSMIT.TYPE 'SQUARE)
(COMM.SEND.UNCHANGED.TILES T)
(COMM.UPDATE.MOUSE.POSITION 'Sender))
(GLOBALVARS COMM.DEFAULT.TRANSMIT.TYPE COMM.UPDATE.MOUSE.POSITION COMM.SEND.UNCHANGED.TILES)
(* ;;; "Pruning out unchanged screen tiles")
(FNS PACKET-EQUAL GET-CACHED-PACKET PUT-CACHED-PACKET)
(FNS PACKET-EQUAL GET-CACHED-PACKET PUT-CACHED-PACKET)
(* ;;; "Low level packet exchange code")
(CONSTANTS COMM.BAND.PACKET.TYPE COMM.CURSOR.PACKET.TYPE
COMM.CURSOR.CLOSE.PACKET.TYPE COMM.SHUT.DOWN.PACKET.TYPE)
(VARIABLES MAX-PACKET-BITS)
(RECORDS COMM.XFER.PACKET)
(CONSTANTS COMM.BAND.PACKET.TYPE COMM.CURSOR.PACKET.TYPE COMM.CURSOR.CLOSE.PACKET.TYPE
COMM.SHUT.DOWN.PACKET.TYPE)
(VARIABLES MAX-PACKET-BITS)
(RECORDS COMM.XFER.PACKET)
(* ;;; "Packing and unpacking bitmaps into etherpackets")
(FNS BMTOPACKET PACKETTOBM)
(FNS BMTOPACKET PACKETTOBM)
(* ;;; "Displaying the viewing machine's cursor")
(VARS REMOTE-CURSOR)
(INITVARS (CURSORICON NIL))
(VARS REMOTE-CURSOR)
(INITVARS (CURSORICON NIL))
(* ;;; "Manipulating the frame that outlines the region being viewed")
(INITVARS (*FRAME-SHADE* GRAYSHADE))
(FNS FRAME-EVENT MAKE-FRAME MOVE-FRAME SHAPE-FRAME SET-FRAME-TITLE)
(INITVARS (*FRAME-SHADE* GRAYSHADE))
(FNS FRAME-EVENT MAKE-FRAME MOVE-FRAME SHAPE-FRAME SET-FRAME-TITLE)
(* ;;; "Changing the system parameters")
(FNS MAKE-MENUS-WINDOW MODE-MENU)
(VARS COMM-MODES)
(FNS MAKE-MENUS-WINDOW MODE-MENU)
(VARS COMM-MODES)
(* ;;; "Initialization")
(P (COURIER.START.SERVER))
(P (COURIER.START.SERVER))
(* ;;; "Unused stuff, as far as I can tell")
(FNS FASTBITBLT)
(FNS FASTBITBLT)
(* ;;; "System file dependencies")
(DECLARE%: DONTCOPY DOEVAL@COMPILE (FILES (LOADCOMP)
LLDISPLAY LLETHER LLNS))
(COURIERPROGRAMS COMMWINDOW)))
(DECLARE%: DONTCOPY DOEVAL@COMPILE (FILES (LOADCOMP)
LLDISPLAY LLETHER LLNS))
(COURIERPROGRAMS COMMWINDOW)))
@@ -236,6 +229,7 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
(LIST 'RETURN (LIST (NSOCKETNUMBER NS)
(USERNAME])
)
(FILESLOAD COURIERSERVE)
@@ -446,19 +440,18 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
(SETQ COMM.DEFAULT.TRANSMIT.TYPE NEW-MODE)))
)
(DEFMACRO INCR (VAR START HEIGHT REPEATS UNTIL &REST FORMS)
(DEFMACRO INCR (VAR START HEIGHT REPEATS UNTIL &REST FORMS)
`(CL:DO ((REPEAT-COUNT 0 (+ REPEAT-COUNT 1)))
((>= REPEAT-COUNT ,REPEATS))
(CL:DO [(,VAR (+ ,START (CL:* REPEAT-COUNT ,HEIGHT))
(+ ,VAR (CL:* ,REPEATS ,HEIGHT]
(,UNTIL)
,@FORMS)))
(DEFMACRO \PILOTBITBLT (XCL-USER::TABLE &OPTIONAL (XCL-USER::N 0)) (CL:ASSERT (EQL XCL-USER::N 0))
`((OPCODES PILOTBITBLT)
,XCL-USER::TABLE 0))
(CL:DO [(,VAR (+ ,START (CL:* REPEAT-COUNT ,HEIGHT))
(+ ,VAR (CL:* ,REPEATS ,HEIGHT]
(,UNTIL)
,@FORMS)))
(DEFMACRO \PILOTBITBLT (XCL-USER::TABLE &OPTIONAL (XCL-USER::N 0))
(CL:ASSERT (EQL XCL-USER::N 0))
`((OPCODES PILOTBITBLT)
,XCL-USER::TABLE 0))
@@ -525,12 +518,12 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
(RPAQQ COMM.SHUT.DOWN.PACKET.TYPE 4246)
(CONSTANTS COMM.BAND.PACKET.TYPE COMM.CURSOR.PACKET.TYPE COMM.CURSOR.CLOSE.PACKET.TYPE
COMM.SHUT.DOWN.PACKET.TYPE)
)
(CL:DEFCONSTANT MAX-PACKET-BITS (CL:* 400 8) )
(CL:DEFCONSTANT MAX-PACKET-BITS (CL:* 400 8))
(DECLARE%: EVAL@COMPILE
(ACCESSFNS COMM.XFER.PACKET ((COMMPACKET (fetch (XIP XIPCONTENTS) of DATUM)))
@@ -807,6 +800,7 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
(* ;;; "Initialization")
(COURIER.START.SERVER)
@@ -862,6 +856,7 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
(* ;;; "System file dependencies")
(DECLARE%: DONTCOPY DOEVAL@COMPILE
(FILESLOAD (LOADCOMP)
LLDISPLAY LLETHER LLNS)
)
@@ -885,14 +880,14 @@ Copyright (c) 1986, 1900, 1987 by Xerox Corporation. All rights reserved.
ERRORS
((ERROR 1 (STRING))
(USE.COURIER 2 NIL)))
(PUTPROPS COMMWINDOW COPYRIGHT ("Xerox Corporation" 1986 1900 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3203 13134 (CLOSE-FRAME 3213 . 3364) (GET-BITS 3366 . 11655) (START-GET-BITS 11657 .
13132)) (13189 26236 (SEND-BITS 13199 . 16020) (SEND-TILE 16022 . 19145) (LISTEN-TO-VIEWER 19147 .
20450) (MAPTILES 20452 . 25175) (SHUT-DOWN-VIEWER 25177 . 26046) (CHANGE-SENDER-UPDATE-MODE 26048 .
26234)) (27219 29090 (PACKET-EQUAL 27229 . 28632) (GET-CACHED-PACKET 28634 . 28949) (PUT-CACHED-PACKET
28951 . 29088)) (30529 34252 (BMTOPACKET 30539 . 32500) (PACKETTOBM 32502 . 34250)) (34556 38865 (
FRAME-EVENT 34566 . 35224) (MAKE-FRAME 35226 . 37008) (MOVE-FRAME 37010 . 37280) (SHAPE-FRAME 37282 .
38672) (SET-FRAME-TITLE 38674 . 38863)) (38915 45792 (MAKE-MENUS-WINDOW 38925 . 41284) (MODE-MENU
41286 . 45790)) (45968 48955 (FASTBITBLT 45978 . 48953)))))
(FILEMAP (NIL (2306 12237 (CLOSE-FRAME 2316 . 2467) (GET-BITS 2469 . 10758) (START-GET-BITS 10760 .
12235)) (12293 25340 (SEND-BITS 12303 . 15124) (SEND-TILE 15126 . 18249) (LISTEN-TO-VIEWER 18251 .
19554) (MAPTILES 19556 . 24279) (SHUT-DOWN-VIEWER 24281 . 25150) (CHANGE-SENDER-UPDATE-MODE 25152 .
25338)) (25342 25656 (INCR 25342 . 25656)) (25658 25816 (\PILOTBITBLT 25658 . 25816)) (26181 28052 (
PACKET-EQUAL 26191 . 27594) (GET-CACHED-PACKET 27596 . 27911) (PUT-CACHED-PACKET 27913 . 28050)) (
29490 33213 (BMTOPACKET 29500 . 31461) (PACKETTOBM 31463 . 33211)) (33517 37826 (FRAME-EVENT 33527 .
34185) (MAKE-FRAME 34187 . 35969) (MOVE-FRAME 35971 . 36241) (SHAPE-FRAME 36243 . 37633) (
SET-FRAME-TITLE 37635 . 37824)) (37876 44753 (MAKE-MENUS-WINDOW 37886 . 40245) (MODE-MENU 40247 .
44751)) (44930 47917 (FASTBITBLT 44940 . 47915)))))
STOP

Binary file not shown.

Binary file not shown.

52
lispusers/CONVERT-TO-UTF8 Normal file
View File

@@ -0,0 +1,52 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Feb-2026 09:09:57" {WMEDLEY}<lispusers>CONVERT-TO-UTF8.;16 2573
:EDIT-BY rmk
:CHANGES-TO (FNS CONVERT-TO-UTF8)
:PREVIOUS-DATE "24-Feb-2026 22:45:57" {WMEDLEY}<lispusers>CONVERT-TO-UTF8.;14)
(PRETTYCOMPRINT CONVERT-TO-UTF8COMS)
(RPAQQ CONVERT-TO-UTF8COMS ((FNS CONVERT-TO-UTF8)))
(DEFINEQ
(CONVERT-TO-UTF8
[LAMBDA (FILENAME FILETYPE) (* ; "Edited 25-Feb-2026 09:09 by rmk")
(* ;; "This produces a new version of the source FILENAME with :UTF-8 external format.")
(* ;; "If we had a list of problematic functions (multiple definitions on multiple files, MOVD's), we could check that against the functions in FILENAME, and at least produce a warning.")
(* ;; "Compiling may be tricky: some files have CL:COMPILE-FILE FILETYPE properties that don't correspond to the fact that they actually have only an LCOM. This tries to revert the filetype back to FAKE-COMPILE-FILE so that we don't get confused when a DFASL mysteriously appears.")
(SETQ FILENAME (PSEUDOFILENAME FILENAME))
(SETQ FILENAME (OR (FINDFILE FILENAME T)
(ERROR "FILE NOT FOUND" FILENAME)))
(if [EQ :UTF-8 (CL:WITH-OPEN-FILE (STREAM FILENAME :DIRECTION :INPUT)
(fetch (READER-ENVIRONMENT REFORMAT) of (GET-ENVIRONMENT-AND-FILEMAP STREAM
T]
then (PRINTOUT T FILENAME " is already " .P2 :UTF-8 T)
NIL
else (LOAD? (MEDLEYDIR "loadups" 'EXPORTS.ALL)) (* ; "Maybe this should load SYSEDIT ?")
(LOAD FILENAME 'PROP)
(LOADCOMP FILENAME)
(SETQ FILENAME (PACKFILENAME 'VERSION NIL 'BODY FILENAME))
(CL:WHEN [AND (EQ 'CL:COMPILE-FILE (GETPROP (ROOTFILENAME FILENAME)
'FILETYPE))
(FINDFILE (PACKFILENAME 'EXTENSION 'LCOM 'BODY FILENAME))
(NOT (FINDFILE (PACKFILENAME 'EXTENSION 'DFASL 'BODY FILENAME]
(CL:UNLESS FILETYPE (SETQ FILETYPE :FAKE-COMPILE-FILE))
(PRINTOUT T "Changing FILETYPE back to " .P2 FILETYPE T)
(PUTPROP (ROOTFILENAME FILENAME)
'FILETYPE FILETYPE))
[SETQ FILENAME (MAKEFILE FILENAME '(NEW :UTF-8]
(MAKEFILE1 FILENAME NIL '(F))
FILENAME])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (406 2550 (CONVERT-TO-UTF8 416 . 2548)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,43 +1,43 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED " 2-Apr-87 00:37:46" {ERIS}<LISPUSERS>LYRIC>CROCK.;2 17791
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
previous date%: "11-Jan-86 19:46:27" {PHYLUM}<LISPUSERS>LYRIC>CROCK.;1)
(FILECREATED "18-Feb-2026 16:26:31" {WMEDLEY}<lispusers>CROCK.;2 17189
:EDIT-BY rmk
:PREVIOUS-DATE " 2-Apr-87 00:37:46" {WMEDLEY}<lispusers>CROCK.;1)
(* "
Copyright (c) 1984, 1985, 1986, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT CROCKCOMS)
(RPAQQ CROCKCOMS ((* CROCK -- By Kelly Roach *)
(FNS CROCK CROCK.BUTTONEVENTFN CROCK.CHANGE.STYLE CROCK.CLOSEFN CROCK.PROCESS
CROCK.RESHAPEFN CROCK.ALARM CROCK.RING.ALARM CROCK.INIT)
(INITVARS (CROCK.DEFAULT.STYLE '(HANDS T TIMES NIL RINGS NIL NUMBERS T))
(CROCK.STYLE.MENU)
(CROCK.ALARMS)
(CROCK.DATEFORMAT '(DATEFORMAT NO.SECONDS))
[CROCK.TUNE '((1000 . 1000)
(800 . 1000)
(600 . 1000)
(500 . 1000)
(400 . 1000)
(NIL . 500)
(440 . 1000)
(484 . 1000)
(540 . 1000)
(600 . 1000)
(2000 . 1000)
(1600 . 1000)
(1200 . 1000)
(1000 . 1000)
(800 . 1000)
(NIL . 500)
(880 . 1000)
(968 . 1000)
(1080 . 1000)
(1188 . 1000]
(CROCKWINDOW))))
(RPAQQ CROCKCOMS
((* CROCK -- By Kelly Roach *)
(FNS CROCK CROCK.BUTTONEVENTFN CROCK.CHANGE.STYLE CROCK.CLOSEFN CROCK.PROCESS CROCK.RESHAPEFN
CROCK.ALARM CROCK.RING.ALARM CROCK.INIT)
(INITVARS (CROCK.DEFAULT.STYLE '(HANDS T TIMES NIL RINGS NIL NUMBERS T))
(CROCK.STYLE.MENU)
(CROCK.ALARMS)
(CROCK.DATEFORMAT '(DATEFORMAT NO.SECONDS))
[CROCK.TUNE '((1000 . 1000)
(800 . 1000)
(600 . 1000)
(500 . 1000)
(400 . 1000)
(NIL . 500)
(440 . 1000)
(484 . 1000)
(540 . 1000)
(600 . 1000)
(2000 . 1000)
(1600 . 1000)
(1200 . 1000)
(1000 . 1000)
(800 . 1000)
(NIL . 500)
(880 . 1000)
(968 . 1000)
(1080 . 1000)
(1188 . 1000]
(CROCKWINDOW))))
@@ -334,31 +334,31 @@ Copyright (c) 1984, 1985, 1986, 1987 by Xerox Corporation. All rights reserved.
(RPAQ? CROCK.DATEFORMAT '(DATEFORMAT NO.SECONDS))
(RPAQ? CROCK.TUNE '((1000 . 1000)
(800 . 1000)
(600 . 1000)
(500 . 1000)
(400 . 1000)
(NIL . 500)
(440 . 1000)
(484 . 1000)
(540 . 1000)
(600 . 1000)
(2000 . 1000)
(1600 . 1000)
(1200 . 1000)
(1000 . 1000)
(800 . 1000)
(NIL . 500)
(880 . 1000)
(968 . 1000)
(1080 . 1000)
(1188 . 1000)))
(RPAQ? CROCK.TUNE
'((1000 . 1000)
(800 . 1000)
(600 . 1000)
(500 . 1000)
(400 . 1000)
(NIL . 500)
(440 . 1000)
(484 . 1000)
(540 . 1000)
(600 . 1000)
(2000 . 1000)
(1600 . 1000)
(1200 . 1000)
(1000 . 1000)
(800 . 1000)
(NIL . 500)
(880 . 1000)
(968 . 1000)
(1080 . 1000)
(1188 . 1000)))
(RPAQ? CROCKWINDOW )
(PUTPROPS CROCK COPYRIGHT ("Xerox Corporation" 1984 1985 1986 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1940 16814 (CROCK 1950 . 2520) (CROCK.BUTTONEVENTFN 2522 . 2811) (CROCK.CHANGE.STYLE
2813 . 5626) (CROCK.CLOSEFN 5628 . 5790) (CROCK.PROCESS 5792 . 14290) (CROCK.RESHAPEFN 14292 . 14451)
(CROCK.ALARM 14453 . 15681) (CROCK.RING.ALARM 15683 . 16424) (CROCK.INIT 16426 . 16812)))))
(FILEMAP (NIL (1609 16483 (CROCK 1619 . 2189) (CROCK.BUTTONEVENTFN 2191 . 2480) (CROCK.CHANGE.STYLE
2482 . 5295) (CROCK.CLOSEFN 5297 . 5459) (CROCK.PROCESS 5461 . 13959) (CROCK.RESHAPEFN 13961 . 14120)
(CROCK.ALARM 14122 . 15350) (CROCK.RING.ALARM 15352 . 16093) (CROCK.INIT 16095 . 16481)))))
STOP

Binary file not shown.

View File

@@ -1,14 +1,11 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED "13-Jan-87 01:23:25" {ERIS}<LISPUSERS>LISPCORE>DEFAULTICON.;1 4586
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS \MAKEICONWINDOW)
(FILECREATED "18-Feb-2026 16:26:48" {WMEDLEY}<lispusers>DEFAULTICON.;2 4702
previous date%: "19-Dec-85 01:24:06" {ERIS}<LISP>KOTO>LISPUSERS>DEFAULTICON.;1)
:EDIT-BY rmk
:PREVIOUS-DATE "13-Jan-87 01:23:25" {WMEDLEY}<lispusers>DEFAULTICON.;1)
(* "
Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT DEFAULTICONCOMS)
@@ -16,137 +13,140 @@ Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved.
(UGLYVARS \DEFAULTICON)
(INITVARS (DEFAULTICON \DEFAULTICON))
(FNS \MAKEICONWINDOW)))
(FILESLOAD ICONW)
(READVARS \DEFAULTICON)
(({(READBITMAP)(64 64
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@AOOOOOOOOOOH@@"
"@@N@@@@@@@@@@G@@"
"@C@@@@@@@@@@@@L@"
"@D@@@@@@@@@@@@B@"
"@H@@@@@@@@@@@@A@"
"A@@@@@@@@@@@@@@H"
"B@@@@@@@@@@@CO@D"
"B@@@@@@@@@@@BDHD"
"D@@@@@@@@@@@ABDB"
"D@@@@@@@@@@@AODB"
"D@@@@@@@@@@@ABLB"
"D@@@@@@@@@@@ABDA"
"H@@@@@@@@@@@ABDA"
"H@@@@@@@@@@@AOHA"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"H@@@@@@@@@@@@@@A"
"D@@@@@@@@@@@@@@B"
"D@@@@@@@@@@@@@@B"
"D@@@@@@@@@@@@@@B"
"B@@@@@@@@@@@@@@D"
"B@@@@@@@@@@@@@@D"
"A@@@@@@@@@@@@@@H"
"@H@@@@@@@@@@@@A@"
"@D@@@@@@@@@@@@B@"
"@C@@@@@@@@@@@@L@"
"@@N@@@@@@@@@@G@@"
"@@AOOOOOOOOOOH@@")} {(READBITMAP)(64 64
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@"
"@@AOOOOOOOOOOH@@"
"@@OOOOOOOOOOOO@@"
"@COOOOOOOOOOOOL@"
"@GOOOOOOOOOOOON@"
"@OOOOOOOOOOOOOO@"
"AOOOOOOOOOOOOOOH"
"COOOOOOOOOOOOOOL"
"COOOOOOOOOOONDOL"
"GOOOOOOOOOOOOBGN"
"GOOOOOOOOOOOOOGN"
"GOOOOOOOOOOOOBON"
"GOOOOOOOOOOOOBGO"
"OOOOOOOOOOOOOBGO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"OOOOOOOOOOOOOOOO"
"GOOOOOOOOOOOOOON"
"GOOOOOOOOOOOOOON"
"GOOOOOOOOOOOOOON"
"COOOOOOOOOOOOOOL"
"COOOOOOOOOOOOOOL"
"AOOOOOOOOOOOOOOH"
"@OOOOOOOOOOOOOO@"
"@GOOOOOOOOOOOON@"
"@COOOOOOOOOOOOL@"
"@@OOOOOOOOOOOO@@"
"@@AOOOOOOOOOOH@@")} (5 6 52 46)))
(READVARS-FROM-STRINGS '(\DEFAULTICON)
"(({(READBITMAP)(64 64
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@AOOOOOOOOOOH@@%"
%"@@N@@@@@@@@@@G@@%"
%"@C@@@@@@@@@@@@L@%"
%"@D@@@@@@@@@@@@B@%"
%"@H@@@@@@@@@@@@A@%"
%"A@@@@@@@@@@@@@@H%"
%"B@@@@@@@@@@@CO@D%"
%"B@@@@@@@@@@@BDHD%"
%"D@@@@@@@@@@@ABDB%"
%"D@@@@@@@@@@@AODB%"
%"D@@@@@@@@@@@ABLB%"
%"D@@@@@@@@@@@ABDA%"
%"H@@@@@@@@@@@ABDA%"
%"H@@@@@@@@@@@AOHA%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"H@@@@@@@@@@@@@@A%"
%"D@@@@@@@@@@@@@@B%"
%"D@@@@@@@@@@@@@@B%"
%"D@@@@@@@@@@@@@@B%"
%"B@@@@@@@@@@@@@@D%"
%"B@@@@@@@@@@@@@@D%"
%"A@@@@@@@@@@@@@@H%"
%"@H@@@@@@@@@@@@A@%"
%"@D@@@@@@@@@@@@B@%"
%"@C@@@@@@@@@@@@L@%"
%"@@N@@@@@@@@@@G@@%"
%"@@AOOOOOOOOOOH@@%")} {(READBITMAP)(64 64
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@@@@@@@@@@@@@@@%"
%"@@AOOOOOOOOOOH@@%"
%"@@OOOOOOOOOOOO@@%"
%"@COOOOOOOOOOOOL@%"
%"@GOOOOOOOOOOOON@%"
%"@OOOOOOOOOOOOOO@%"
%"AOOOOOOOOOOOOOOH%"
%"COOOOOOOOOOOOOOL%"
%"COOOOOOOOOOONDOL%"
%"GOOOOOOOOOOOOBGN%"
%"GOOOOOOOOOOOOOGN%"
%"GOOOOOOOOOOOOBON%"
%"GOOOOOOOOOOOOBGO%"
%"OOOOOOOOOOOOOBGO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"OOOOOOOOOOOOOOOO%"
%"GOOOOOOOOOOOOOON%"
%"GOOOOOOOOOOOOOON%"
%"GOOOOOOOOOOOOOON%"
%"COOOOOOOOOOOOOOL%"
%"COOOOOOOOOOOOOOL%"
%"AOOOOOOOOOOOOOOH%"
%"@OOOOOOOOOOOOOO@%"
%"@GOOOOOOOOOOOON@%"
%"@COOOOOOOOOOOOL@%"
%"@@OOOOOOOOOOOO@@%"
%"@@AOOOOOOOOOOH@@%")} (5 6 52 46)))
")
(RPAQ? DEFAULTICON \DEFAULTICON)
(DEFINEQ
@@ -175,7 +175,6 @@ Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved.
(WINDOWPROP icon 'HEIGHT]
icon])
)
(PUTPROPS DEFAULTICON COPYRIGHT ("Xerox Corporation" 1985 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3170 4498 (\MAKEICONWINDOW 3180 . 4496)))))
(FILEMAP (NIL (3351 4679 (\MAKEICONWINDOW 3361 . 4677)))))
STOP

View File

@@ -1,17 +1,17 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED " 4-Mar-87 15:59:01" {PHYLUM}<LISPUSERS>LYRIC>DEFAULTSUBITEMFN.;1 1299
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
previous date%: "31-Jan-86 17:45:55" {PHYLUM}<LISP>KOTO>LISPUSERS>DEFAULTSUBITEMFN.;1)
(FILECREATED "18-Feb-2026 16:28:38" {WMEDLEY}<lispusers>DEFAULTSUBITEMFN.;2 1229
:EDIT-BY rmk
:PREVIOUS-DATE " 4-Mar-87 15:59:01" {WMEDLEY}<lispusers>DEFAULTSUBITEMFN.;1)
(* "
Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT DEFAULTSUBITEMFNCOMS)
(RPAQQ DEFAULTSUBITEMFNCOMS ((* * redefine the DEFAULTSUBITEMFN to add the EVAL keyword to the subitem menu field) (FNS DEFAULTSUBITEMFN))
)
(RPAQQ DEFAULTSUBITEMFNCOMS ((* * redefine the DEFAULTSUBITEMFN to add the EVAL keyword to the
subitem menu field)
(FNS DEFAULTSUBITEMFN)))
(* * redefine the DEFAULTSUBITEMFN to add the EVAL keyword to the subitem menu field)
(DEFINEQ
@@ -20,7 +20,6 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(LAMBDA (MENU ITEM) (* edited%: "31-Dec-85 16:41") (* rrb "17-Aug-84 17:24") (* default subitemfn for menus. Checks the fourth element of the item for an expression of the form (SUBITEMS a b c) or if the fourth element is (EVAL form) will return the value of form. MENU and ITEM will be available during the evaluation) (PROG (TEMP) (RETURN (if (AND (LISTP ITEM) (LISTP (SETQ TEMP (CDR ITEM))) (LISTP (SETQ TEMP (CDR TEMP))) (LISTP (SETQ TEMP (CDR TEMP)))) then (SELECTQ (CAR (SETQ TEMP (LISTP (CAR TEMP)))) (SUBITEMS (CDR TEMP)) (EVAL (EVAL (CADR TEMP))) NIL)))))
)
)
(PUTPROPS DEFAULTSUBITEMFN COPYRIGHT ("Xerox Corporation" 1986 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (606 1206 (DEFAULTSUBITEMFN 616 . 1204)))))
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 :FORMAT :UTF-8)
(FILECREATED "28-Oct-2025 14:10:06" {WMEDLEY}<lispusers>GITFNS.;569 131593
(FILECREATED " 2-Mar-2026 14:00:13" {WMEDLEY}<lispusers>GITFNS.;576 133513
:EDIT-BY rmk
:CHANGES-TO (FNS GIT-WORKING-COMPARE-DIRECTORIES GIT-BRANCHES-COMPARE-DIRECTORIES)
:CHANGES-TO (FNS GIT-MY-NEXT-BRANCH)
:PREVIOUS-DATE "28-Oct-2025 13:32:16" {WMEDLEY}<lispusers>GITFNS.;568)
:PREVIOUS-DATE "26-Feb-2026 00:39:22" {WMEDLEY}<lispusers>GITFNS.;575)
(PRETTYCOMPRINT GITFNSCOMS)
@@ -74,7 +74,7 @@
(* ;; "Differences")
(FNS GIT-BRANCH-DIFF GIT-COMMIT-DIFFS GIT-BRANCH-RELATIONS)
(FNS GIT-BRANCH-DIFF GIT-COMMIT-DIFFS GIT-BRANCH-RELATIONS GIT-MODIFIED)
(* ;; "")
@@ -169,6 +169,7 @@
(GIT-MAKE-PROJECT
[LAMBDA (PROJECTNAME CLONEPATH WORKINGPATH EXCLUSIONS DEFAULTSUBDIRS)
(* ; "Edited 25-Feb-2026 23:25 by rmk")
(* ; "Edited 25-Oct-2025 16:53 by rmk")
(* ; "Edited 22-Oct-2025 12:45 by rmk")
(* ; "Edited 20-Oct-2025 18:10 by rmk")
@@ -234,9 +235,8 @@
(CL:WHEN (SETQ GITIGNORE (INFILEP (PACKFILENAME.STRING 'NAME ".gitignore" 'BODY
CLONEPATH)))
(SETQ GITIGNORE (CL:WITH-OPEN-FILE (STREAM GITIGNORE :EXTERNAL-FORMAT :UTF-8)
(bind L until (EOFP STREAM)
while (SETQ L (CL:READ-LINE STREAM :EOF-ERROR-P NIL
:EOF-VALUE NIL))
(bind L until (EOFP STREAM) while (SETQ L (CL:READ-LINE
STREAM NIL))
unless (OR (EQ 0 (NCHARS L))
(STRPOS "#" L)) collect L))))
(SETQ EXCLUSIONS (CL:REMOVE-DUPLICATES (APPEND (for E inside EXCLUSIONS
@@ -274,16 +274,16 @@
"")
"for " PROJECTNAME]
(SETQ PROJECT (create GIT-PROJECT
PROJECTNAME _ PROJECTNAME
GITHOST _ (PACK* "{" (PSEUDOHOST PROJECTNAME CLONEPATH)
PROJECTNAME PROJECTNAME
GITHOST (PACK* "{" (PSEUDOHOST PROJECTNAME CLONEPATH)
"}")
WHOST _ (AND WORKINGPATH (PACK* "{" (PSEUDOHOST (CONCAT "W"
WHOST (AND WORKINGPATH (PACK* "{" (PSEUDOHOST (CONCAT "W"
PROJECTNAME)
WORKINGPATH)
"}"))
EXCLUSIONS _ EXCLUSIONS
DEFAULTSUBDIRS _ (MKLIST DEFAULTSUBDIRS)
CLONEPATH _ CLONEPATH))
EXCLUSIONS EXCLUSIONS
DEFAULTSUBDIRS (MKLIST DEFAULTSUBDIRS)
CLONEPATH CLONEPATH))
(/RPLACD [OR (ASSOC PROJECTNAME GIT-PROJECTS)
(CAR (push GIT-PROJECTS (CONS PROJECTNAME]
PROJECT)
@@ -358,7 +358,7 @@
(FIND-ANCESTOR-DIRECTORY
[LAMBDA (STARTDIR PREDFN) (* ; "Edited 8-May-2022 12:17 by rmk")
(BIND POS (A _ STARTDIR) WHILE (SETQ POS (STRPOS "/" A -2 NIL NIL NIL FILEDIRCASEARRAY T))
(BIND POS (A STARTDIR) WHILE (SETQ POS (STRPOS "/" A -2 NIL NIL NIL FILEDIRCASEARRAY T))
DO (SETQ A (SUBSTRING A 1 POS))
(CL:WHEN (APPLY* PREDFN A)
(RETURN A])
@@ -372,7 +372,7 @@
(GIT-CLONEP (GIT-PROJECT-PATH PROJECTNAME PROJECTPATH)
T T)
[FIND-ANCESTOR-DIRECTORY PROJECTPATH (FUNCTION (LAMBDA (A)
(BIND D (GEN _ (\GENERATEFILES A NIL NIL 1))
(BIND D (GEN (\GENERATEFILES A NIL NIL 1))
WHILE (SETQ D (\GENERATENEXTFILE GEN))
WHEN (GIT-CLONEP D T)
DO (RETFROM (FUNCTION
@@ -684,7 +684,7 @@
(GIT-MAINBRANCH? (GIT-WHICH-BRANCH PROJECT)
PROJECT)
(FOR MF GF DEST (MEDLEYSUBDIRS _ (MEDLEYSUBDIRS PROJECT)) INSIDE MFILES
(FOR MF GF DEST (MEDLEYSUBDIRS (MEDLEYSUBDIRS PROJECT)) INSIDE MFILES
COLLECT (SETQ MF (OR (FINDFILE MF NIL MEDLEYSUBDIRS)
(ERROR "FILE NOT FOUND" MF)))
(CL:UNLESS (STRING.EQUAL MF (INFILEP (PACKFILENAME 'VERSION NIL 'BODY MF))
@@ -709,7 +709,7 @@
(* ;; "Does anybody call this?")
(SETQ PROJECT (GIT-GET-PROJECT PROJECT))
(FOR GF MF DEST (GITSUBDIRS _ (GITSUBDIRS PROJECT)) INSIDE GFILES
(FOR GF MF DEST (GITSUBDIRS (GITSUBDIRS PROJECT)) INSIDE GFILES
COLLECT (SETQ GF (OR (FINDFILE GF NIL GITSUBDIRS)
(ERROR "FILE NOT FOUND" GF)))
(SETQ MF (MFILE4GFILE GF))
@@ -742,8 +742,8 @@
"")])
(STRIPDIR
[LAMBDA (FILE DIRECTORY) (* ; "Edited 18-Jan-2022 16:09 by rmk")
(* ; "Edited 8-Nov-2021 11:50 by rmk:")
[LAMBDA (FILE DIRECTORY) (* ; "Edited 18-Jan-2022 16:09 by rmk")
(* ; "Edited 8-Nov-2021 11:50 by rmk:")
(IF (STRPOS DIRECTORY FILE 1 NIL T NIL FILEDIRCASEARRAY)
THEN (SUBSTRING FILE (ADD1 (NCHARS DIRECTORY)))
ELSE FILE])
@@ -1023,7 +1023,7 @@
": ")
(IF (EQ (CAR X)
'Comments)
THEN (FOR CC (POS _ (POSITION T)) IN (CDR X)
THEN (FOR CC (POS (POSITION T)) IN (CDR X)
DO (IF (EQ CC T)
THEN (TERPRI T)
ELSE (PRINTOUT T .TAB0 POS CC)))
@@ -1163,7 +1163,7 @@
(* ;; "Returns the identifiers for commits in BRANCH1 but not in BUTNOTBRANCH2")
(GIT-COMMAND (CONCAT "git log --format=%"%%h%" %"" BRANCH1 "%" %"­" BUTNOTBRANCH2 "%"")
(GIT-COMMAND (CONCAT "git log --format=%"%%h%" %"" BRANCH1 "%" %"^" BUTNOTBRANCH2 "%"")
NIL NIL PROJECT])
(GIT-BRANCH-RELATIONS
@@ -1227,6 +1227,16 @@
then (CONS MAIN (DREMOVE MAIN (SORT DATUM)))
else (SORT DATUM]
(RETURN (LIST SUPERSETS EQUALS])
(GIT-MODIFIED
[LAMBDA (PROJECT) (* ; "Edited 25-Dec-2025 13:39 by rmk")
(* ;;
 "A list of files that have been modified M or introduced but not committed ??. see git help status")
(for X POS in (GIT-COMMAND "git status --porcelain")
when (SETQ POS (OR (STRPOS " M " X NIL NIL NIL T)
(STRPOS "?? " X NIL NIL NIL T))) collect (SUBSTRING X POS])
)
@@ -1353,7 +1363,7 @@
(CL:WHEN (thereis B in BRANCHES suchthat (STRPOS "HEAD detached" B))
(PRINTOUT T "Execute %"git gc%" to eliminate a branch with a detached HEAD" T))
(CL:WHEN EXCLUDEMERGED
(SETQ BRANCHES (for B (MAINBRANCH _ (GIT-MAINBRANCH PROJECT 'LOCAL)) in BRANCHES
(SETQ BRANCHES (for B (MAINBRANCH (GIT-MAINBRANCH PROJECT 'LOCAL)) in BRANCHES
when (EQUAL (GIT-COMMAND (CONCAT "git merge-base %"" B "%" %""
MAINBRANCH "%""))
(GIT-COMMAND (CONCAT "git rev-parse %"" B "%"")))
@@ -1392,11 +1402,11 @@
(CL:WHEN PIN?
[SETQ BRANCHES (APPEND BRANCHES '((" Pin menu" 'PinMenu])
(create MENU
TITLE _ (OR TITLE (CONCAT (LENGTH BRANCHES)
TITLE (OR TITLE (CONCAT (LENGTH BRANCHES)
" branches"))
ITEMS _ BRANCHES
MENUFONT _ DEFAULTFONT
WHENSELECTEDFN _ (FUNCTION GIT-BRANCH-WHENSELECTEDFN)))])
ITEMS BRANCHES
MENUFONT DEFAULTFONT
WHENSELECTEDFN (FUNCTION GIT-BRANCH-WHENSELECTEDFN)))])
(GIT-BRANCH-WHENSELECTEDFN
[LAMBDA (ITEM MENU BUTTON) (* ; "Edited 2-Oct-2025 23:08 by rmk")
@@ -1446,20 +1456,20 @@
eachtime [SETQ DRAFT (EQ 'true (JSON-GET JSOBJ 'isDraft] when (OR INCLUDEDRAFTS
(NOT DRAFT))
collect [SETQ PR (create PULLREQUEST
PRNUMBER _ (JSON-GET JSOBJ 'number)
PRNAME _ (JSON-GET JSOBJ 'headRefName)
PRDESCRIPTION _ (JSON-GET JSOBJ 'title)
PRSTATUS _ (CL:IF DRAFT
PRNUMBER (JSON-GET JSOBJ 'number)
PRNAME (JSON-GET JSOBJ 'headRefName)
PRDESCRIPTION (JSON-GET JSOBJ 'title)
PRSTATUS (CL:IF DRAFT
'D
(SELECTQ (MKATOM (JSON-GET JSOBJ 'reviewDecision))
(CHANGES¬REQUESTED
(CHANGES_REQUESTED
'C)
(REVIEW¬REQUIRED
(REVIEW_REQUIRED
" ")
'A))
PRPROJECT _ PROJECT
PRURL _ (JSON-GET JSOBJ 'url)
PRLOGIN _ (JSON-GET JSOBJ '(headRepositoryOwner login]
PRPROJECT PROJECT
PRURL (JSON-GET JSOBJ 'url)
PRLOGIN (JSON-GET JSOBJ '(headRepositoryOwner login]
(CL:WHEN (STRPOS ":" (fetch (PULLREQUEST PRNAME) of PR))
(* ;; "From Nick: Git commands to bring install and deal with the remotes:")
@@ -1510,8 +1520,8 @@
(LET ((RELATIONS (GIT-BRANCH-RELATIONS (for PR in PRS
collect (GITORIGIN (fetch PRNAME of PR)))
NIL T PROJECT)))
(SORT (for PR REL LABEL PRNAME STATUS (SUPERSETS _ (CAR RELATIONS))
(EQUALS _ (CADR RELATIONS)) in PRS
(SORT (for PR REL LABEL PRNAME STATUS (SUPERSETS (CAR RELATIONS))
(EQUALS (CADR RELATIONS)) in PRS
eachtime (SETQ PRNAME (fetch PRNAME of PR))
(SETQ LABEL (CONCAT "#" (fetch (PULLREQUEST PRNUMBER) of PR)
" "
@@ -1558,15 +1568,33 @@
(GIT-BRANCH-NUM (OR BRANCH (GIT-WHICH-BRANCH PROJECT T])
(GIT-MY-NEXT-BRANCH
[LAMBDA (PROJECT) (* ; "Edited 19-May-2022 14:08 by rmk")
[LAMBDA (PROJECT) (* ; "Edited 2-Mar-2026 14:00 by rmk")
(* ; "Edited 19-May-2022 14:08 by rmk")
(* ; "Edited 8-Jan-2022 09:43 by rmk")
(* ;; "Figures out the number of my next incremental branch would be. ")
(PACK* (GIT-INITIALS)
(ADD1 (OR (GIT-MY-BRANCHP (GIT-MY-CURRENT-BRANCH PROJECT)
PROJECT)
0])
(LET (PROJECTLIST PROJECTENTRY NEXTNUM)
(CL:WITH-OPEN-FILE (STRM "{LI}GIT-MY-CURRENT-BRANCH-NUMS;1" :DIRECTION :IO
:IF-DOES-NOT-EXIST :CREATE :IF-EXISTS :OVERWRITE)
(SETQ PROJECTLIST (CL:UNLESS (EQ 0 (GETEOFPTR STRM))
(READ STRM)))
(SETQ PROJECTENTRY (ASSOC (GIT-GET-PROJECT PROJECT 'PROJECTNAME)
PROJECTLIST))
(CL:UNLESS PROJECTENTRY
(SETQ PROJECTENTRY (LIST (GIT-GET-PROJECT PROJECT 'PROJECTNAME)
(OR (GIT-MY-BRANCHP (GIT-MY-CURRENT-BRANCH
PROJECT)
PROJECT)
0)))
(push PROJECTLIST PROJECTENTRY))
(SETQ NEXTNUM (ADD1 (CADR PROJECTENTRY)))
(RPLACA (CDR PROJECTENTRY)
NEXTNUM)
(SETFILEPTR STRM 0)
(PRINT PROJECTLIST STRM)
NEXTNUM])
(GIT-MY-BRANCHES
[LAMBDA (PROJECT EXCLUDEMERGED INITS) (* ; "Edited 19-May-2022 19:10 by rmk")
@@ -1647,14 +1675,14 @@
(CL:WHEN (STRPOS "fatal: " (CAR LINES)
1 NIL T)
(ERROR "Could not remove worktree for " BRANCH))
(* (DELFILE (CONCAT PATH "/.DS_Store"))
(* (DELFILE (CONCAT PATH "/.DSStore"))
 (GIT-COMMAND (CONCAT "rmdir " DIR) NIL
 NIL PROJECT))
BRANCH])
(GIT-LIST-WORKTREES
[LAMBDA NIL (* ; "Edited 12-Dec-2021 12:13 by rmk")
(* ; "Edited 19-Nov-2021 18:53 by rmk:")
[LAMBDA NIL (* ; "Edited 12-Dec-2021 12:13 by rmk")
(* ; "Edited 19-Nov-2021 18:53 by rmk:")
(* ;; "The git command tells us what the clone thinks about it, but then we look to see what is actually in our worktrees directory, to make sure that the subdirectory wasn't deleted in a wy that the clone didn't know about.")
@@ -1880,14 +1908,14 @@
(replace (CDENTRY INFO2) of CDE
with (create CDINFO
FULLNAME _ (CADR MAP)
DATE _ (CL:IF (EQ 'R (CADDR MAP))
FULLNAME (CADR MAP)
DATE (CL:IF (EQ 'R (CADDR MAP))
" <-"
" ==")
LENGTH _ ""
AUTHOR _ ""
TYPE _ ""
EOL _ ""))
LENGTH ""
AUTHOR ""
TYPE ""
EOL ""))
(replace (CDENTRY DATEREL) of CDE
with (CADDR MAP]
(TERPRI T)
@@ -1957,10 +1985,10 @@
then (SETQ SUBDIRS (ALLSUBDIRS PROJECT))
"ALL subdirectories"
else SUBDIRS)))
(for SUBDIR TITLE CDVAL (WPROJ _ (CONCAT "Working " (L-CASE (fetch PROJECTNAME of PROJECT)
(for SUBDIR TITLE CDVAL (WPROJ (CONCAT "Working " (L-CASE (fetch PROJECTNAME of PROJECT)
T)))
(NENTRIES _ 0)
(BRANCH2 _ (GIT-WHICH-BRANCH PROJECT T))
(NENTRIES 0)
(BRANCH2 (GIT-WHICH-BRANCH PROJECT T))
first (PRINTOUT T "Comparing " SUBDIRSTRING 6 " of " WPROJ " and Git " BRANCH2 T)
(BKSYSBUF " ") inside SUBDIRS
collect (TERPRI T)
@@ -2132,12 +2160,12 @@
NIL]
(CL:WHEN (OR COPYITEM COMPAREITEMS)
(SELECTQ (MENU (CREATE MENU
TITLE _ (CONCAT (WINDOWPROP WINDOW 'SUBDIR)
TITLE (CONCAT (WINDOWPROP WINDOW 'SUBDIR)
"/"
(FETCH MATCHNAME OF CDENTRY))
ITEMS _ (APPEND COPYITEM COMPAREITEMS)
MENUFONT _ FONT
MENUTITLEFONT _ FONT))
ITEMS (APPEND COPYITEM COMPAREITEMS)
MENUFONT FONT
MENUTITLEFONT FONT))
(TOGIT (CL:WHEN (TOGIT (FETCH (CDINFO FULLNAME) OF INFO1)
WINDOW)
(IMAGEOBJPROP OBJ 'COPIED T)
@@ -2162,18 +2190,18 @@
NIL)))])
(GIT-CD-LABELFN
[LAMBDA (FILE1 FILE2 USERDATA) (* ; "Edited 5-Jan-2022 15:10 by rmk")
(* ; "Edited 16-Dec-2021 12:25 by rmk")
[LAMBDA (FILE1 FILE2 USERDATA) (* ; "Edited 5-Jan-2022 15:10 by rmk")
(* ; "Edited 16-Dec-2021 12:25 by rmk")
(* ; "Edited 13-Dec-2021 22:13 by rmk")
(DECLARE (USEDFREE CDVALUE))
(LET (NC B LABEL1 LABEL2)
(CL:WHEN (SETQ NC (FETCH NCDIR OF (FETCH CDMAXNC1 OF CDVALUE)))
(SETQ LABEL1 (SLASHIT (SUBSTRING FILE1 (ADD1 NC))
(SETQ LABEL1 (SLASHIT (SUBSTRING FILE1 (ADD1 NC))
T))
(CL:WHEN (SETQ B (LISTGET USERDATA 'BRANCH1))
(SETQ LABEL1 (CONCAT B "/" LABEL1))))
(CL:WHEN (SETQ NC (FETCH NCDIR OF (FETCH CDMAXNC2 OF CDVALUE)))
(SETQ LABEL2 (SLASHIT (SUBSTRING FILE2 (ADD1 NC))
(SETQ LABEL2 (SLASHIT (SUBSTRING FILE2 (ADD1 NC))
T))
(CL:WHEN (SETQ B (LISTGET USERDATA 'BRANCH2))
(SETQ LABEL2 (CONCAT B "/" LABEL2))))
@@ -2367,15 +2395,15 @@
NIL])
(GIT-RESULT-TO-LINES
[LAMBDA (FILE ALL) (* ; "Edited 31-Mar-2025 15:19 by rmk")
[LAMBDA (FILE ALL) (* ; "Edited 25-Feb-2026 23:24 by rmk")
(* ; "Edited 31-Mar-2025 15:19 by rmk")
(* ; "Edited 16-Jul-2022 22:21 by rmk")
(* ;; "Suppress .git lines unless ALL SYSTEM-EXTERNALFORMAT may make the wrong guess, but at least we ensure here that lines get broken.")
(CL:WITH-OPEN-FILE (STREAM FILE :DIRECTION :INPUT :EXTERNAL-FORMAT (LIST (SYSTEM-EXTERNALFORMAT)
'ANY))
(bind LINE until (EOFP STREAM) when [PROGN (SETQ LINE (CL:READ-LINE STREAM :EOF-ERROR-P
NIL :EOF-VALUE NIL))
(bind LINE until (EOFP STREAM) when [PROGN (SETQ LINE (CL:READ-LINE STREAM NIL))
(OR ALL (NOT (STRPOS ".git" LINE 1]
collect LINE])
@@ -2394,32 +2422,33 @@
(PUTPROPS GITFNS FILETYPE :TCOMPL)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (4196 21002 (GIT-CLONEP 4206 . 5637) (GIT-INIT 5639 . 6269) (GIT-MAKE-PROJECT 6271 .
14060) (GIT-GET-PROJECT 14062 . 15987) (GIT-PUT-PROJECT-FIELD 15989 . 17630) (GIT-PROJECT-PATH 17632
. 18676) (FIND-ANCESTOR-DIRECTORY 18678 . 19027) (GIT-FIND-CLONE 19029 . 20110) (GIT-MAINBRANCH 20112
. 20507) (GIT-MAINBRANCH? 20509 . 21000)) (26465 31394 (PRC-COMMAND 26475 . 31392)) (31450 34238 (
ALLSUBDIRS 31460 . 32746) (MEDLEYSUBDIRS 32748 . 33441) (GITSUBDIRS 33443 . 34236)) (34239 36640 (
TOGIT 34249 . 35655) (FROMGIT 35657 . 36638)) (36641 39644 (MYMEDLEYSUBDIR 36651 . 37107) (GITSUBDIR
37109 . 37552) (STRIPDIR 37554 . 37925) (STRIPHOST 37927 . 38167) (STRIPNAME 38169 . 38922) (
STRIPWHERE 38924 . 39642)) (39645 41880 (GFILE4MFILE 39655 . 40351) (MFILE4GFILE 40353 . 40922) (
GIT-REPO-FILENAME 40924 . 41878)) (41929 52184 (GIT-COMMIT 41939 . 42765) (GIT-PUSH 42767 . 43527) (
GIT-PULL 43529 . 44281) (GIT-APPROVAL 44283 . 44632) (GIT-GET-FILE 44634 . 46549) (GIT-FILE-EXISTS?
46551 . 46825) (GIT-REMOTE-UPDATE 46827 . 47662) (GIT-REMOTE-ADD 47664 . 47971) (GIT-FILE-DATE 47973
. 49020) (GIT-FILE-HISTORY 49022 . 50956) (GIT-PRINT-FILE-HISTORY 50958 . 52008) (GIT-FETCH 52010 .
52182)) (52214 63694 (GIT-BRANCH-DIFF 52224 . 59113) (GIT-COMMIT-DIFFS 59115 . 60006) (
GIT-BRANCH-RELATIONS 60008 . 63692)) (63739 82478 (GIT-BRANCH-NUM 63749 . 64322) (GIT-CHECKOUT 64324
. 65610) (GIT-WHICH-BRANCH 65612 . 66019) (GIT-MAKE-BRANCH 66021 . 68600) (GIT-BRANCHES 68602 . 71197
) (GIT-BRANCH-EXISTS? 71199 . 72070) (GIT-PICK-BRANCH 72072 . 72562) (GIT-BRANCH-MENU 72564 . 73445) (
GIT-BRANCH-WHENSELECTEDFN 73447 . 74986) (GIT-PULL-REQUESTS 74988 . 78859) (GIT-SHORT-BRANCH-NAME
78861 . 79152) (GIT-LONG-NAME 79154 . 79471) (GIT-PRC-BRANCHES 79473 . 82476)) (82508 85956 (
GIT-MY-CURRENT-BRANCH 82518 . 82888) (GIT-MY-BRANCHP 82890 . 83508) (GIT-MY-NEXT-BRANCH 83510 . 84004)
(GIT-MY-BRANCHES 84006 . 85954)) (86002 90077 (GIT-ADD-WORKTREE 86012 . 87619) (GIT-REMOVE-WORKTREE
87621 . 88551) (GIT-LIST-WORKTREES 88553 . 89357) (WORKTREEDIR 89359 . 90075)) (90125 123133 (
GIT-GET-DIFFERENT-FILES 90135 . 97043) (GIT-BRANCHES-COMPARE-DIRECTORIES 97045 . 104672) (
GIT-WORKING-COMPARE-DIRECTORIES 104674 . 110470) (GIT-COMPARE-WORKTREE 110472 . 114450) (
GITCDOBJBUTTONFN 114452 . 118942) (GIT-CD-LABELFN 118944 . 120026) (GIT-CD-MENUFN 120028 . 121114) (
GIT-WORKING-COMPARE-FILES 121116 . 121736) (GIT-BRANCHES-COMPARE-FILES 121738 . 122902) (
GIT-PR-COMPARE 122904 . 123131)) (123203 131526 (CDGITDIR 123213 . 123900) (GIT-COMMAND 123902 .
125460) (GITORIGIN 125462 . 126159) (GIT-INITIALS 126161 . 126465) (GIT-COMMAND-TO-FILE 126467 .
129952) (GIT-RESULT-TO-LINES 129954 . 130859) (STRIPLOCAL 130861 . 131524)))))
(FILEMAP (NIL (4178 21056 (GIT-CLONEP 4188 . 5619) (GIT-INIT 5621 . 6251) (GIT-MAKE-PROJECT 6253 .
14110) (GIT-GET-PROJECT 14112 . 16037) (GIT-PUT-PROJECT-FIELD 16039 . 17680) (GIT-PROJECT-PATH 17682
. 18726) (FIND-ANCESTOR-DIRECTORY 18728 . 19079) (GIT-FIND-CLONE 19081 . 20164) (GIT-MAINBRANCH 20166
. 20561) (GIT-MAINBRANCH? 20563 . 21054)) (26519 31448 (PRC-COMMAND 26529 . 31446)) (31504 34292 (
ALLSUBDIRS 31514 . 32800) (MEDLEYSUBDIRS 32802 . 33495) (GITSUBDIRS 33497 . 34290)) (34293 36698 (
TOGIT 34303 . 35711) (FROMGIT 35713 . 36696)) (36699 39709 (MYMEDLEYSUBDIR 36709 . 37165) (GITSUBDIR
37167 . 37610) (STRIPDIR 37612 . 37990) (STRIPHOST 37992 . 38232) (STRIPNAME 38234 . 38987) (
STRIPWHERE 38989 . 39707)) (39710 41945 (GFILE4MFILE 39720 . 40416) (MFILE4GFILE 40418 . 40987) (
GIT-REPO-FILENAME 40989 . 41943)) (41994 52251 (GIT-COMMIT 42004 . 42830) (GIT-PUSH 42832 . 43592) (
GIT-PULL 43594 . 44346) (GIT-APPROVAL 44348 . 44697) (GIT-GET-FILE 44699 . 46614) (GIT-FILE-EXISTS?
46616 . 46890) (GIT-REMOTE-UPDATE 46892 . 47727) (GIT-REMOTE-ADD 47729 . 48036) (GIT-FILE-DATE 48038
. 49085) (GIT-FILE-HISTORY 49087 . 51021) (GIT-PRINT-FILE-HISTORY 51023 . 52075) (GIT-FETCH 52077 .
52249)) (52281 64233 (GIT-BRANCH-DIFF 52291 . 59180) (GIT-COMMIT-DIFFS 59182 . 60073) (
GIT-BRANCH-RELATIONS 60075 . 63759) (GIT-MODIFIED 63761 . 64231)) (64278 83045 (GIT-BRANCH-NUM 64288
. 64861) (GIT-CHECKOUT 64863 . 66149) (GIT-WHICH-BRANCH 66151 . 66558) (GIT-MAKE-BRANCH 66560 . 69139
) (GIT-BRANCHES 69141 . 71738) (GIT-BRANCH-EXISTS? 71740 . 72611) (GIT-PICK-BRANCH 72613 . 73103) (
GIT-BRANCH-MENU 73105 . 73994) (GIT-BRANCH-WHENSELECTEDFN 73996 . 75535) (GIT-PULL-REQUESTS 75537 .
79422) (GIT-SHORT-BRANCH-NAME 79424 . 79715) (GIT-LONG-NAME 79717 . 80034) (GIT-PRC-BRANCHES 80036 .
83043)) (83075 87829 (GIT-MY-CURRENT-BRANCH 83085 . 83455) (GIT-MY-BRANCHP 83457 . 84075) (
GIT-MY-NEXT-BRANCH 84077 . 85877) (GIT-MY-BRANCHES 85879 . 87827)) (87875 91959 (GIT-ADD-WORKTREE
87885 . 89492) (GIT-REMOVE-WORKTREE 89494 . 90426) (GIT-LIST-WORKTREES 90428 . 91239) (WORKTREEDIR
91241 . 91957)) (92007 125045 (GIT-GET-DIFFERENT-FILES 92017 . 98925) (
GIT-BRANCHES-COMPARE-DIRECTORIES 98927 . 106566) (GIT-WORKING-COMPARE-DIRECTORIES 106568 . 112370) (
GIT-COMPARE-WORKTREE 112372 . 116350) (GITCDOBJBUTTONFN 116352 . 120850) (GIT-CD-LABELFN 120852 .
121938) (GIT-CD-MENUFN 121940 . 123026) (GIT-WORKING-COMPARE-FILES 123028 . 123648) (
GIT-BRANCHES-COMPARE-FILES 123650 . 124814) (GIT-PR-COMPARE 124816 . 125043)) (125115 133446 (CDGITDIR
125125 . 125812) (GIT-COMMAND 125814 . 127372) (GITORIGIN 127374 . 128071) (GIT-INITIALS 128073 .
128377) (GIT-COMMAND-TO-FILE 128379 . 131864) (GIT-RESULT-TO-LINES 131866 . 132779) (STRIPLOCAL 132781
. 133444)))))
STOP

Binary file not shown.

View File

@@ -1,45 +1,44 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT XCCS)
(FILECREATED " 8-Aug-2021 13:22:31" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>ISO8859IO.;18 22218
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS \8859OUTCHARFN \IBMOUTCHARFN \MACOUTCHARFN)
(FILECREATED "22-Feb-2026 12:22:12" {WMEDLEY}<lispusers>ISO8859IO.;22 21861
previous date%: " 6-Aug-2021 16:12:42"
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>ISO8859IO.;17)
:EDIT-BY rmk
:CHANGES-TO (FNS ISO1TOMSTRING MTOISO1STRING)
(VARS ISO8859IOCOMS)
:PREVIOUS-DATE " 2-Feb-2026 23:20:20" {WMEDLEY}<lispusers>ISO8859IO.;20)
(* ; "
Copyright (c) 1995-1997, 1999, 2021 by Xerox Corporation.
")
(PRETTYCOMPRINT ISO8859IOCOMS)
(RPAQQ ISO8859IOCOMS
(
(* ;; "This package defines EXTERNALFORMATS for files that are encoded in either ISO8859/1, the standard IBM extended ascii, or the usual MAC encoding.")
(* ;; "This package defines EXTERNALFORMATS for files that are encoded in ISIO8859/1, the standard IBM extended ascii, or the legacy MAC encoding.")
(COMS (* ; "ISO8859/1")
(FNS \8859OUTCHARFN \8859INCCODEFN \8859PEEKCCODEFN)
(GLOBALVARS *XEROXTOISO8859MAP* *ISO8859TOXEROXMAP*)
(FNS MAKEISOFORMAT)
(P (MAKEISOFORMAT)))
(COMS (* ; "IBM-PC Extended Ascii")
[COMS (* ; "ISO8859/1")
(FNS ISO1TOMCODE MTOISO1CODE \CREATE.ISO1.FORMAT)
(FNS ISO1TOMSTRING MTOISO1STRING)
(VARS ISO1TOMCCS)
(GLOBALVARS ISO1TOMCCS)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (\CREATE.ISO1.FORMAT]
(COMS (* ; "IBM-PC Extended Ascii")
(FNS \IBMOUTCHARFN \IBMINCCODEFN \IBMPEEKCCODEFN)
(GLOBALVARS *XEROXTOIBMMAP* *IBMTOXEROXMAP*)
(FNS MAKEIBMFORMAT)
(P (MAKEIBMFORMAT)))
(COMS (* ; "Macintosh")
(COMS (* ; "Macintosh")
(FNS \MACOUTCHARFN \MACINCCODEFN \MACPEEKCCODEFN)
(GLOBALVARS *XEROXTOMACMAP* *MACTOXEROXMAP*)
(FNS MAKEMACFORMAT)
(P (MAKEMACFORMAT)))
(COMS (* ; "Independent of char encoding")
(COMS (* ; "Independent of char encoding")
(FNS \COMMONBACKCCODEFN \MAKERECODEMAP \RECODECCODE))))
(* ;;
"This package defines EXTERNALFORMATS for files that are encoded in either ISO8859/1, the standard IBM extended ascii, or the usual MAC encoding."
"This package defines EXTERNALFORMATS for files that are encoded in ISIO8859/1, the standard IBM extended ascii, or the legacy MAC encoding."
)
@@ -49,146 +48,150 @@ Copyright (c) 1995-1997, 1999, 2021 by Xerox Corporation.
(DEFINEQ
(\8859OUTCHARFN
[LAMBDA (STREAM CHARCODE)
(DECLARE (GLOBALVARS *XEROXTOISO8859MAP*)) (* ; "Edited 8-Aug-2021 13:21 by rmk:")
(* ; "Edited 7-Dec-95 14:34 by ")
(* ; "Edited 7-Dec-95 14:32 by ")
(ISO1TOMCODE
[LAMBDA (ICODE) (* ; "Edited 5-Feb-2026 12:09 by rmk")
(* ; "Edited 2-Feb-2026 23:14 by rmk")
(* ; "Edited 7-Sep-2025 22:39 by rmk")
(* ; "Edited 3-Sep-2025 10:21 by rmk")
(* ; "Edited 7-Aug-2025 09:37 by rmk")
(* ;; "Converts CHARCODE from internal encoding to ISO8859 before printing.")
(* ;; "ISO codes are 8bit, MCODES maybe not. Caller shouldn't pass a fat code.")
(* ;; "Unconverted codes are left unchanged (no error).")
(OR [CAR (find PAIR in ISO1TOMCCS suchthat (EQ ICODE (CADR PAIR]
ICODE])
(* ;; "If any remaining codes are out of charset 0, the streams external format will be used. ")
(MTOISO1CODE
[LAMBDA (MCODE) (* ; "Edited 5-Feb-2026 12:26 by rmk")
(* ; "Edited 2-Feb-2026 22:58 by rmk")
(OR (CADR (ASSOC MCODE ISO1TOMCCS))
MCODE])
(IF (EQ CHARCODE (CHARCODE EOL))
THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
(\BOUTEOL STREAM)
ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
(IPLUS16 1 DATUM))
(\BOUT STREAM (IF (IGREATERP CHARCODE 127)
THEN
(* ;; "We know that ISO doesn't have floating accents, so only singletons are returned. We also know that it agrees with Xerox on first 128")
(\RECODECCODE CHARCODE *XEROXTOISO8859MAP*)
ELSE CHARCODE])
(\8859INCCODEFN
[LAMBDA (STRM COUNTP) (* ; "Edited 6-Aug-2021 16:10 by rmk:")
(* ; "Edited 7-Dec-95 15:24 by ")
(* ; "Edited 7-Dec-95 15:19 by ")
(DECLARE (USEDFREE *BYTECOUNTER*))
(CL:WHEN COUNTP (SETQ *BYTECOUNTER* 1))
(\RECODECCODE (\BIN STRM)
*ISO8859TOXEROXMAP*])
(\8859PEEKCCODEFN
[LAMBDA (STRM NOERROR) (* ; "Edited 5-May-2021 17:44 by rmk:")
(* ; "Edited 3-Jan-96 14:21 by ")
(* ; "Edited 7-Dec-95 15:51 by ")
(* ; "Edited 7-Dec-95 15:19 by ")
(\RECODECCODE (\PEEKCCODE STRM NOERROR)
*ISO8859TOXEROXMAP*])
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS *XEROXTOISO8859MAP* *ISO8859TOXEROXMAP*)
(\CREATE.ISO1.FORMAT
[LAMBDA NIL (* ; "Edited 5-Feb-2026 10:42 by rmk")
(* ; "Edited 2-Feb-2026 23:37 by rmk")
(* ; "Edited 1-Feb-2026 11:18 by rmk")
(* ; "Edited 5-Aug-2021 22:15 by rmk:")
(* ; "Edited 9-Mar-99 17:19 by rmk:")
(* ; "Edited 7-Dec-95 16:24 by ")
(* ; "Edited 7-Dec-95 16:20 by ")
(MAKE-EXTERNALFORMAT :ISO8859/1 [FUNCTION (LAMBDA (STREAM COUNTP)
(ISO1TOMCODE (\THROUGHIN STREAM COUNTP]
[FUNCTION (LAMBDA (STREAM NOERRORFLG)
(ISO1TOMCODE (\PEEKBIN STREAM NOERRORFLG]
(FUNCTION \THROUGHBACKCCODE)
(FUNCTION NILL)
(FUNCTION NILL)
NIL NIL (FUNCTION MTOISO1STRING)
NIL
(FUNCTION NILL)
(FUNCTION ISO1TOMSTRING])
)
(DEFINEQ
(MAKEISOFORMAT
[LAMBDA NIL (* ; "Edited 5-Aug-2021 22:15 by rmk:")
(* ; "Edited 9-Mar-99 17:19 by rmk:")
(* ; "Edited 7-Dec-95 16:24 by ")
(* ; "Edited 7-Dec-95 16:20 by ")
(LET [(XEROXTOISO '((61217 160)
(61291 166)
(8994 168)
(211 169)
(227 170)
(61290 172)
(61219 173)
(210 174)
(9086 175)
(8999 180)
(203 184)
(209 185)
(235 186)
(61729 192)
(61730 193)
(61731 194)
(61732 195)
(61735 196)
(61736 197)
(225 198)
(61741 199)
(61744 200)
(61745 201)
(61746 202)
(61749 203)
(61758 204)
(61759 205)
(61760 206)
(61764 207)
(226 208)
(61772 209)
(61775 210)
(61776 211)
(61777 212)
(61778 213)
(61780 214)
(180 215)
(233 216)
(61791 217)
(61792 218)
(61793 219)
(61797 220)
(61803 221)
(236 222)
(251 223)
(61857 224)
(61858 225)
(61859 226)
(61860 227)
(61863 228)
(61864 229)
(241 230)
(61869 231)
(61872 232)
(61873 233)
(61874 234)
(61877 235)
(61886 236)
(61887 237)
(61888 238)
(61892 239)
(243 240)
(61900 241)
(61903 242)
(61904 243)
(61905 244)
(61906 245)
(61908 246)
(184 247)
(249 248)
(61919 249)
(61920 250)
(61921 251)
(61925 252)
(61931 253)
(252 254)
(61933 255)
(61805 376]
(SETQ *XEROXTOISO8859MAP* (\MAKERECODEMAP XEROXTOISO))
(SETQ *ISO8859TOXEROXMAP* (\MAKERECODEMAP XEROXTOISO T)))
(MAKE-EXTERNALFORMAT :ISO8859/1 (FUNCTION \8859INCCODEFN)
(FUNCTION \8859PEEKCCODEFN)
(FUNCTION \COMMONBACKCCODEFN)
(FUNCTION \8859OUTCHARFN])
(ISO1TOMSTRING
[LAMBDA (ISTRING DESTRUCTIVE) (* ; "Edited 22-Feb-2026 12:21 by rmk")
(* ; "Edited 5-Feb-2026 11:01 by rmk")
(* ; "Edited 2-Feb-2026 23:46 by rmk")
(* ; "Edited 2-Sep-2025 12:14 by rmk")
(* ; "Edited 29-Apr-2025 13:08 by rmk")
(* ;; "Converts ISO8859/1 codes to MCCS codes in MSTRING.")
(for I ICODE (MSTRING _ (CL:IF DESTRUCTIVE
ISTRING
(CONCAT ISTRING))) from 1 while (SETQ ICODE (NTHCHARCODE ISTRING I))
do (RPLCHARCODE MSTRING I (ISO1TOMCODE ICODE)) finally (RETURN MSTRING])
(MTOISO1STRING
[LAMBDA (MSTRING DESTRUCTIVE) (* ; "Edited 22-Feb-2026 12:22 by rmk")
(* ; "Edited 2-Feb-2026 23:47 by rmk")
(* ; "Edited 2-Sep-2025 12:22 by rmk")
(* ; "Edited 29-Apr-2025 13:08 by rmk")
(* ;; "Converts MCCS to ISO8859/1 codes in MSTRING.")
(for I MCODE (ISTRING _ (CL:IF DESTRUCTIVE
MSTRING
(CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
do (RPLCHARCODE ISTRING I (MTOISO1CODE MCODE)) finally (RETURN ISTRING])
)
(MAKEISOFORMAT)
(RPAQQ ISO1TOMCCS
((94 8593)
(95 8592)
(169 8216)
(170 8220)
(172 95)
(173 94)
(174 8594)
(175 8595)
(180 215)
(184 247)
(185 8217)
(186 8221)
(193 768)
(194 769)
(195 770)
(196 771)
(197 772)
(198 774)
(199 775)
(200 776)
(202 778)
(203 807)
(204 818)
(205 779)
(206 808)
(207 780)
(208 8213)
(209 185)
(210 174)
(211 169)
(212 8482)
(213 9834)
(220 8539)
(221 8540)
(222 8541)
(223 8542)
(224 8486)
(225 198)
(226 208)
(227 170)
(228 294)
(229 567)
(230 306)
(231 319)
(232 321)
(233 216)
(234 338)
(235 186)
(236 222)
(237 358)
(238 330)
(239 329)
(240 312)
(241 230)
(242 273)
(243 240)
(244 295)
(245 305)
(246 307)
(247 320)
(248 322)
(249 248)
(250 339)
(251 223)
(252 254)
(253 359)
(254 331)))
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS ISO1TOMCCS)
)
(DECLARE%: DONTEVAL@LOAD DOCOPY
(\CREATE.ISO1.FORMAT)
)
@@ -515,26 +518,28 @@ Copyright (c) 1995-1997, 1999, 2021 by Xerox Corporation.
(\COMMONBACKCCODEFN
[LAMBDA (STRM COUNTP) (* ; "Edited 6-Aug-2021 16:12 by rmk:")
(* ; "Edited 8-Dec-95 13:26 by ")
(DECLARE (USEDFREE *BYTECOUNTER*))
(DECLARE (USEDFREE *BYTECOUNTER*))
(CL:WHEN (\BACKFILEPTR STRM)
(CL:WHEN COUNTP (SETQ *BYTECOUNTER* -1))
(CL:WHEN COUNTP (SETQ *BYTECOUNTER* -1))
T)])
(\MAKERECODEMAP
[LAMBDA (CODEMAP INVERTED) (* ; "Edited 1-Feb-2026 13:03 by rmk")
(* ; "Edited 9-Mar-99 17:23 by rmk:")
(* ;; "Produces a map array for use by \RECODECCODE. The map array is a 256-array of either NIL or 256-arrays, so that space isn't allocated for widely separated codes.")
(DECLARE (USEDFREE FASTRECODEMAPCACHE))
(CL:WHEN INVERTED
[SETQ CODEMAP (FOR C IN CODEMAP COLLECT (LIST (CADR C)
(CAR C])
(FOR M (MAPARRAY _ (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT NIL))
CSMAP IN CODEMAP UNLESS (EQ (CAR M)
(CADR M))
DO (CL:UNLESS (SETQ CSMAP (CL:SVREF MAPARRAY (LRSH (CAR M)
8)))
(SETQ CSMAP (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT NIL))
(* ;; "Produces a map array for use by \RECODECCODE. The map array is a 256-array of either NIL or 256-arrays, so that space isn't allocated for widely separated codes.")
(DECLARE (USEDFREE FASTRECODEMAPCACHE))
(CL:WHEN INVERTED
[SETQ CODEMAP (FOR C IN CODEMAP COLLECT (LIST (CADR C)
(CAR C])
(FOR M LEFT RIGHT (MAPARRAY ¬ (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT NIL))
CSMAP IN CODEMAP eachtime (SETQ LEFT (CAR M))
(SETQ RIGHT (CADR M))
(CL:UNLESS (CHARCODEP LEFT)
(SETQ LEFT (CHARCODE.DECODE LEFT)))
(CL:UNLESS (CHARCODEP RIGHT)
(SETQ RIGHT (CHARCODE.DECODE RIGHT)))
UNLESS (EQ LEFT RIGHT) DO (CL:UNLESS (SETQ CSMAP (CL:SVREF MAPARRAY (LRSH LEFT 8)))
(SETQ CSMAP (CL:MAKE-ARRAY 256 :INITIAL-ELEMENT NIL))
(CL:SETF (CL:SVREF MAPARRAY (LRSH LEFT 8))
@@ -546,12 +551,11 @@ Copyright (c) 1995-1997, 1999, 2021 by Xerox Corporation.
[LAMBDA (CODE MAPARRAY) (* ; "Edited 9-Mar-99 17:28 by rmk:")
(* ; "Edited 21-Jun-95 10:18 by rmk:")
(* ;; "Recodes a singleton charcode. Leaves everything else unchanged.")
(* ;; "Recodes a singleton charcode. Leaves everything else unchanged.")
(LET [(CSMAP (CL:SVREF MAPARRAY (LRSH CODE 8]
(OR (AND CSMAP (CL:SVREF CSMAP (LOGAND CODE 255)))
CODE])
)
(PUTPROPS ISO8859IO COPYRIGHT ("Xerox Corporation" 1995 1996 1997 1999 2021))
(DECLARE%: DONTCOPY
(LET [(CSMAP (CL:SVREF MAPARRAY (LRSH CODE 8]
(OR (AND CSMAP (CL:SVREF CSMAP (LOGAND CODE 255)))
CODE])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1834 4154 (ISO1TOMCODE 1844 . 2593) (MTOISO1CODE 2595 . 2885) (\CREATE.ISO1.FORMAT 2887

Binary file not shown.

View File

@@ -1,41 +1,38 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED "19-Feb-87 10:40:43" {QV}<LFG>PARSER>NEXT>LAMBDATRAN.;2 9556
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS FNTYP1 LTDWIMUSERFN LTSTKNAME NARGS)
(FILECREATED "18-Feb-2026 16:30:17" {WMEDLEY}<lispusers>LAMBDATRAN.;2 9157
previous date%: "19-Feb-87 09:56:18" {QV}<LFG>PARSER>NEXT>LAMBDATRAN.;1)
:EDIT-BY rmk
:PREVIOUS-DATE "19-Feb-87 10:40:43" {WMEDLEY}<lispusers>LAMBDATRAN.;1)
(* "
Copyright (c) 1984, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT LAMBDATRANCOMS)
(RPAQQ LAMBDATRANCOMS [(* Translation machinery for new LAMBDA words)
(LOCALVARS . T)
[DECLARE%: FIRST (P (VIRGINFN 'ARGLIST T)
(MOVD? 'ARGLIST 'OLDARGLIST)
(VIRGINFN 'NARGS T)
(MOVD? 'NARGS 'OLDNARGS)
(VIRGINFN 'ARGTYPE T)
(MOVD? 'ARGTYPE 'OLDARGTYPE)
(MOVD? 'NILL 'LTDWIMUSERFN]
(FNS ARGLIST ARGTYPE FNTYP1 LTDWIMUSERFN LTSTKNAME NARGS)
(ADDVARS (DWIMUSERFORMS (LTDWIMUSERFN)))
(PROP VARTYPE LAMBDATRANFNS)
(ALISTS (LAMBDATRANFNS))
(PROP MACRO LTSTKNAME)
(P (PUTHASH 'LTSTKNAME '(NIL) MSTEMPLATES))
(P (RELINK 'WORLD))
(DECLARE%: EVAL@COMPILE DONTCOPY (P (RESETSAVE DWIMIFYCOMPFLG T))
(GLOBALVARS CLISPARRAY COMMENTFLG LAMBDASPLST LAMBDATRANFNS BOUNDPDUMMY
))
(DECLARE%: DONTCOPY (RECORDS LAMBDAWORD))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDVARS (NLAMA)
(NLAML LTSTKNAME)
(LAMA])
(RPAQQ LAMBDATRANCOMS
[(* Translation machinery for new LAMBDA words)
(LOCALVARS . T)
[DECLARE%: FIRST (P (VIRGINFN 'ARGLIST T)
(MOVD? 'ARGLIST 'OLDARGLIST)
(VIRGINFN 'NARGS T)
(MOVD? 'NARGS 'OLDNARGS)
(VIRGINFN 'ARGTYPE T)
(MOVD? 'ARGTYPE 'OLDARGTYPE)
(MOVD? 'NILL 'LTDWIMUSERFN]
(FNS ARGLIST ARGTYPE FNTYP1 LTDWIMUSERFN LTSTKNAME NARGS)
(ADDVARS (DWIMUSERFORMS (LTDWIMUSERFN)))
(PROP VARTYPE LAMBDATRANFNS)
(ALISTS (LAMBDATRANFNS))
(PROP MACRO LTSTKNAME)
(P (PUTHASH 'LTSTKNAME '(NIL)
MSTEMPLATES))
(P (RELINK 'WORLD))
(DECLARE%: EVAL@COMPILE DONTCOPY (P (RESETSAVE DWIMIFYCOMPFLG T))
(GLOBALVARS CLISPARRAY COMMENTFLG LAMBDASPLST LAMBDATRANFNS BOUNDPDUMMY))
(DECLARE%: DONTCOPY (RECORDS LAMBDAWORD))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML LTSTKNAME)
(LAMA])
@@ -46,12 +43,19 @@ Copyright (c) 1984, 1987 by Xerox Corporation. All rights reserved.
(LOCALVARS . T)
)
(DECLARE%: FIRST
(VIRGINFN 'ARGLIST T)
(MOVD? 'ARGLIST 'OLDARGLIST)
(VIRGINFN 'NARGS T)
(MOVD? 'NARGS 'OLDNARGS)
(VIRGINFN 'ARGTYPE T)
(MOVD? 'ARGTYPE 'OLDARGTYPE)
(MOVD? 'NILL 'LTDWIMUSERFN)
)
(DEFINEQ
@@ -190,14 +194,18 @@ Copyright (c) 1984, 1987 by Xerox Corporation. All rights reserved.
(ADDTOVAR DWIMUSERFORMS (LTDWIMUSERFN))
(PUTPROPS LAMBDATRANFNS VARTYPE ALIST)
(PUTPROPS LAMBDATRANFNS VARTYPE ALIST)
(ADDTOVAR LAMBDATRANFNS )
(PUTPROPS LTSTKNAME MACRO (X (CONS COMMENTFLG X)))
(PUTHASH 'LTSTKNAME '(NIL) MSTEMPLATES)
(PUTPROPS LTSTKNAME MACRO (X (CONS COMMENTFLG X)))
(PUTHASH 'LTSTKNAME '(NIL)
MSTEMPLATES)
(RELINK 'WORLD)
(DECLARE%: EVAL@COMPILE DONTCOPY
(RESETSAVE DWIMIFYCOMPFLG T)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -219,8 +227,7 @@ Copyright (c) 1984, 1987 by Xerox Corporation. All rights reserved.
(ADDTOVAR LAMA )
)
(PUTPROPS LAMBDATRAN COPYRIGHT ("Xerox Corporation" 1984 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2224 8821 (ARGLIST 2234 . 3188) (ARGTYPE 3190 . 3544) (FNTYP1 3546 . 4455) (
LTDWIMUSERFN 4457 . 7957) (LTSTKNAME 7959 . 8483) (NARGS 8485 . 8819)))))
(FILEMAP (NIL (1871 8468 (ARGLIST 1881 . 2835) (ARGTYPE 2837 . 3191) (FNTYP1 3193 . 4102) (
LTDWIMUSERFN 4104 . 7604) (LTSTKNAME 7606 . 8130) (NARGS 8132 . 8466)))))
STOP

Binary file not shown.

View File

@@ -1,128 +1,127 @@
(DEFINE-FILE-INFO §READTABLE "XCL" §PACKAGE (DEFPACKAGE "LAYOUT-SEDIT" (§NICKNAMES "L-S")))
(il:filecreated " 9-Jan-87 19:55:25" il:{eris}<lispusers>lispcore>layout-sedit.\;2 7190
(DEFINE-FILE-INFO PACKAGE (DEFPACKAGE "LAYOUT-SEDIT" (NICKNAMES "L-S")) READTABLE "XCL" BASE 10)
il:|changes| il:|to:| (il:variables user::*l-s-region-zero* user::*l-s-region-delta*
user::*l-s-reuse-earlier-regions*)
(il:functions get-region save-region user::use-l-s-regions
user::stop-using-l-s-regions)
(il:vars il:layout-seditcoms)
(IL:FILECREATED "18-Feb-2026 16:36:18" IL:|{WMEDLEY}<lispusers>LAYOUT-SEDIT.;2| 5714
il:|previous| il:|date:| "26-Dec-86 19:42:46" il:{eris}<pavel>lisp>layout-sedit.\;2)
:EDIT-BY IL:|rmk|
:CHANGES-TO (IL:VARS IL:LAYOUT-SEDITCOMS)
(IL:VARIABLES *REGION-ALIST* USER::*L-S-REGION-ZERO* USER::*L-S-REGION-DELTA*
USER::*L-S-REUSE-EARLIER-REGIONS*)
(IL:FUNCTIONS USER::USE-L-S-REGIONS USER::STOP-USING-L-S-REGIONS REGION-PLUS
GET-REGION SAVE-REGION)
:PREVIOUS-DATE " 9-Jan-87 19:55:25" IL:|{WMEDLEY}<lispusers>LAYOUT-SEDIT.;1|)
; Copyright (c) 1986, 1987 by Pavel Curtis. All rights reserved.
(IL:PRETTYCOMPRINT IL:LAYOUT-SEDITCOMS)
(il:prettycomprint il:layout-seditcoms)
(IL:RPAQQ IL:LAYOUT-SEDITCOMS
((IL:FUNCTIONS USER::USE-L-S-REGIONS USER::STOP-USING-L-S-REGIONS)
(IL:VARIABLES *REGION-ALIST* USER::*L-S-REGION-ZERO* USER::*L-S-REGION-DELTA*
USER::*L-S-REUSE-EARLIER-REGIONS*)
(IL:FUNCTIONS REGION-PLUS)
(IL:FUNCTIONS GET-REGION SAVE-REGION)
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DONTEVAL@COMPILE IL:DOCOPY (IL:P (USER::USE-L-S-REGIONS)
))
(IL:* IL:|;;| "Arrange to use the proper compiler and makefile environment ")
(il:rpaqq il:layout-seditcoms ((il:functions user::use-l-s-regions user::stop-using-l-s-regions)
(il:variables *region-alist* user::*l-s-region-zero*
user::*l-s-region-delta* user::*l-s-reuse-earlier-regions*)
(il:functions region-plus)
(il:functions get-region save-region)
(il:declare\: il:donteval@load il:donteval@compile il:docopy
(il:p (user::use-l-s-regions)))
(il:* il:|;;|
"Arrange to use the proper compiler and makefile environment ")
(il:prop (il:filetype il:makefile-environment)
il:layout-sedit)))
(IL:PROP (IL:FILETYPE IL:MAKEFILE-ENVIRONMENT)
IL:LAYOUT-SEDIT)))
(defun user::use-l-s-regions nil (assert (null il:|\\\\contexts|)
nil "Close all open SEdit windows")
(il:sedit.reset)
(il:movd 'il:sedit.get.window.region 'old-get-region)
(il:movd 'il:sedit.save.window.region 'old-save-region)
(il:movd 'get-region 'il:sedit.get.window.region)
(il:movd 'save-region 'il:sedit.save.window.region))
(DEFUN USER::USE-L-S-REGIONS ()
(ASSERT (NULL IL:|\\\\contexts|)
NIL "Close all open SEdit windows")
(IL:SEDIT.RESET)
(IL:MOVD 'IL:SEDIT.GET.WINDOW.REGION 'OLD-GET-REGION)
(IL:MOVD 'IL:SEDIT.SAVE.WINDOW.REGION 'OLD-SAVE-REGION)
(IL:MOVD 'GET-REGION 'IL:SEDIT.GET.WINDOW.REGION)
(IL:MOVD 'SAVE-REGION 'IL:SEDIT.SAVE.WINDOW.REGION))
(DEFUN USER::STOP-USING-L-S-REGIONS ()
(ASSERT (NULL IL:|\\\\contexts|)
NIL "Close all open SEdit windows")
(IL:SEDIT.RESET)
(IL:MOVD 'OLD-GET-REGION 'IL:SEDIT.GET.WINDOW.REGION)
(IL:MOVD 'OLD-SAVE-REGION 'IL:SEDIT.SAVE.WINDOW.REGION))
(defun user::stop-using-l-s-regions nil (assert (null il:|\\\\contexts|)
nil "Close all open SEdit windows")
(il:sedit.reset)
(il:movd 'old-get-region 'il:sedit.get.window.region)
(il:movd 'old-save-region 'il:sedit.save.window.region))
(DEFVAR *REGION-ALIST* NIL
(IL:* IL:|;;;| "An AList mapping a region to the SEdit context that currently owns it. The associations of regions no longer in use should have a CDR of NIL. The list is kept in reverse order, with the farthest region from *REGION-ZERO* at the front of the list. So as to allow experimentation by users, we maintain the invariant that the first association on the list never has a CDR of NIL. To reestablish that invariant, we sometimes POP the AList rather than set the CDR to NIL.")
(defvar *region-alist* nil
)
(il:* il:|;;;| "An AList mapping a region to the SEdit context that currently owns it. The associations of regions no longer in use should have a CDR of NIL. The list is kept in reverse order, with the farthest region from *REGION-ZERO* at the front of the list. So as to allow experimentation by users, we maintain the invariant that the first association on the list never has a CDR of NIL. To reestablish that invariant, we sometimes POP the AList rather than set the CDR to NIL.")
)
(defvar user::*l-s-region-zero* (il:createregion 25 (- (truncate il:screenheight 2)
(DEFVAR USER::*L-S-REGION-ZERO* (IL:CREATEREGION 25 (- (TRUNCATE IL:SCREENHEIGHT 2)
19)
(truncate il:screenwidth 2)
(truncate il:screenheight 2))
(TRUNCATE IL:SCREENWIDTH 2)
(TRUNCATE IL:SCREENHEIGHT 2))
(il:* il:|;;;| "The region to be used by the first SEdit window. This works in conjunction with USER::*L-S-REGION-DELTA* to specify the region for each new SEdit window.")
)
(IL:* IL:|;;;| "The region to be used by the first SEdit window. This works in conjunction with USER::*L-S-REGION-DELTA* to specify the region for each new SEdit window.")
)
(defvar user::*l-s-region-delta* (il:createregion 11 -44 0 0) )
(DEFVAR USER::*L-S-REGION-DELTA* (IL:CREATEREGION 11 -44 0 0))
(DEFVAR USER::*L-S-REUSE-EARLIER-REGIONS* NIL
(defvar user::*l-s-reuse-earlier-regions* nil
(IL:* IL:|;;;| "If non-NIL, then earlier regions (i.e., those closer to USER::*L-S-REGION-ZERO* will get reused when free. Otherwise, new regions, farther from USER::*L-S-REGION-ZERO* than any currently in use, will be created.")
(il:* il:|;;;| "If non-NIL, then earlier regions (i.e., those closer to USER::*L-S-REGION-ZERO* will get reused when free. Otherwise, new regions, farther from USER::*L-S-REGION-ZERO* than any currently in use, will be created.")
)
)
(DEFUN REGION-PLUS (ONE TWO)
(IL:CREATEREGION (+ (IL:FETCH (IL:REGION IL:LEFT) IL:OF ONE)
(IL:FETCH (IL:REGION IL:LEFT) IL:OF TWO))
(+ (IL:FETCH (IL:REGION IL:BOTTOM) IL:OF ONE)
(IL:FETCH (IL:REGION IL:BOTTOM) IL:OF TWO))
(+ (IL:FETCH (IL:REGION IL:WIDTH) IL:OF ONE)
(IL:FETCH (IL:REGION IL:WIDTH) IL:OF TWO))
(+ (IL:FETCH (IL:REGION IL:HEIGHT) IL:OF ONE)
(IL:FETCH (IL:REGION IL:HEIGHT) IL:OF TWO))))
(defun region-plus (one two) (il:createregion (+ (il:fetch (il:region il:left) il:of one)
(il:fetch (il:region il:left) il:of two))
(+ (il:fetch (il:region il:bottom) il:of one)
(il:fetch (il:region il:bottom) il:of two))
(+ (il:fetch (il:region il:width) il:of one)
(il:fetch (il:region il:width) il:of two))
(+ (il:fetch (il:region il:height) il:of one)
(il:fetch (il:region il:height) il:of two))))
(DEFUN GET-REGION (CONTEXT)
(LET ((PAIR (AND USER::*L-S-REUSE-EARLIER-REGIONS* (FIND NIL *REGION-ALIST* :KEY 'CDR))))
(COND
((NULL PAIR)
(COND
((NULL *REGION-ALIST*)
(SETQ *REGION-ALIST* (LIST (CONS USER::*L-S-REGION-ZERO* CONTEXT)))
USER::*L-S-REGION-ZERO*)
(T (LET ((NEW-REGION (REGION-PLUS (CAR (FIRST *REGION-ALIST*))
USER::*L-S-REGION-DELTA*)))
(PUSH (CONS NEW-REGION CONTEXT)
*REGION-ALIST*)
NEW-REGION))))
(T (SETF (CDR PAIR)
CONTEXT)
(CAR PAIR)))))
(DEFUN SAVE-REGION (CONTEXT)
(defun get-region (context) (let ((pair (and user::*l-s-reuse-earlier-regions* (find nil
*region-alist*
:key
'cdr))))
(cond
((null pair)
(cond
((null *region-alist*)
(setq *region-alist* (list (cons user::*l-s-region-zero*
context)))
user::*l-s-region-zero*)
(t (let ((new-region (region-plus (car (first *region-alist*)
)
user::*l-s-region-delta*)))
(push (cons new-region context)
*region-alist*)
new-region))))
(t (setf (cdr pair)
context)
(car pair)))))
(IL:* IL:|;;;| "The context is done with its region. Deallocate it.")
(LET ((PAIR (FIND CONTEXT *REGION-ALIST* :KEY 'CDR)))
(IF (NULL PAIR)
(WARN "An SEdit context is trying to give up an unallocated region.")
(SETF (CDR PAIR)
NIL))
(SETQ *REGION-ALIST* (MEMBER-IF-NOT 'NULL *REGION-ALIST* :KEY 'CDR))))
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DONTEVAL@COMPILE IL:DOCOPY
(defun save-region (context)
(il:* il:|;;;| "The context is done with its region. Deallocate it.")
(let ((pair (find context *region-alist* :key 'cdr)))
(if (null pair)
(warn "An SEdit context is trying to give up an unallocated region.")
(setf (cdr pair)
nil))
(setq *region-alist* (member-if-not 'null *region-alist* :key 'cdr))))
(il:declare\: il:donteval@load il:donteval@compile il:docopy
(user::use-l-s-regions)
(USER::USE-L-S-REGIONS)
)
(il:* il:|;;| "Arrange to use the proper compiler and makefile environment ")
(IL:* IL:|;;| "Arrange to use the proper compiler and makefile environment ")
(il:putprops il:layout-sedit il:filetype compile-file)
(IL:PUTPROPS IL:LAYOUT-SEDIT IL:FILETYPE COMPILE-FILE)
(il:putprops il:layout-sedit il:makefile-environment (:readtable "XCL" :package (xcl:defpackage
(IL:PUTPROPS IL:LAYOUT-SEDIT IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE (XCL:DEFPACKAGE
"LAYOUT-SEDIT"
(:nicknames "L-S"))))
(il:putprops il:layout-sedit il:copyright ("Pavel Curtis" 1986 1987))
(il:declare\: il:dontcopy
(il:filemap (nil)))
il:stop
(:NICKNAMES "L-S"))))
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (1426 1788 (USER::USE-L-S-REGIONS 1426 . 1788)) (1790 2051 (USER::STOP-USING-L-S-REGIONS
1790 . 2051)) (3443 4007 (REGION-PLUS 3443 . 4007)) (4009 4732 (GET-REGION 4009 . 4732)) (4734 5138 (
SAVE-REGION 4734 . 5138)))))
IL:STOP

View File

@@ -1 +1,52 @@
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (DEFPACKAGE "LAYOUT-SEDIT" (NICKNAMES "L-S"))) (IL:FILECREATED " 9-Sep-94 13:47:35" ("compiled on " IL:|{DSK}<lispcore>lispusers>LAYOUT-SEDIT.;1|) "28-Jul-94 17:28:46" IL:|bcompl'd| IL:|in| "Medley 25-Aug-94 ..." IL:|dated| "25-Aug-94 10:02:49") (IL:FILECREATED " 9-Jan-87 19:55:25" IL:{ERIS}<LISPUSERS>LISPCORE>LAYOUT-SEDIT.\;2 7190 IL:|changes| IL:|to:| (IL:VARIABLES USER::*L-S-REGION-ZERO* USER::*L-S-REGION-DELTA* USER::*L-S-REUSE-EARLIER-REGIONS* ) (IL:FUNCTIONS GET-REGION SAVE-REGION USER::USE-L-S-REGIONS USER::STOP-USING-L-S-REGIONS) (IL:VARS IL:LAYOUT-SEDITCOMS) IL:|previous| IL:|date:| "26-Dec-86 19:42:46" IL:{ERIS}<PAVEL>LISP>LAYOUT-SEDIT.\;2 ) (IL:PRETTYCOMPRINT IL:LAYOUT-SEDITCOMS) (IL:RPAQQ IL:LAYOUT-SEDITCOMS ((IL:FUNCTIONS USER::USE-L-S-REGIONS USER::STOP-USING-L-S-REGIONS) ( IL:VARIABLES *REGION-ALIST* USER::*L-S-REGION-ZERO* USER::*L-S-REGION-DELTA* USER::*L-S-REUSE-EARLIER-REGIONS*) (IL:FUNCTIONS REGION-PLUS) (IL:FUNCTIONS GET-REGION SAVE-REGION) ( IL:DECLARE\: IL:DONTEVAL@LOAD IL:DONTEVAL@COMPILE IL:DOCOPY (IL:P (USER::USE-L-S-REGIONS))) (IL:* IL:|;;| "Arrange to use the proper compiler and makefile environment ") (IL:PROP (IL:FILETYPE IL:MAKEFILE-ENVIRONMENT) IL:LAYOUT-SEDIT))) (DEFUN USER::USE-L-S-REGIONS NIL (ASSERT (NULL IL:|\\\\contexts|) NIL "Close all open SEdit windows") (IL:SEDIT.RESET) (IL:MOVD (QUOTE IL:SEDIT.GET.WINDOW.REGION) (QUOTE OLD-GET-REGION)) (IL:MOVD (QUOTE IL:SEDIT.SAVE.WINDOW.REGION) (QUOTE OLD-SAVE-REGION)) (IL:MOVD (QUOTE GET-REGION) (QUOTE IL:SEDIT.GET.WINDOW.REGION)) (IL:MOVD (QUOTE SAVE-REGION) (QUOTE IL:SEDIT.SAVE.WINDOW.REGION))) (DEFUN USER::STOP-USING-L-S-REGIONS NIL (ASSERT (NULL IL:|\\\\contexts|) NIL "Close all open SEdit windows") (IL:SEDIT.RESET) (IL:MOVD (QUOTE OLD-GET-REGION) (QUOTE IL:SEDIT.GET.WINDOW.REGION)) (IL:MOVD (QUOTE OLD-SAVE-REGION) (QUOTE IL:SEDIT.SAVE.WINDOW.REGION))) (DEFVAR *REGION-ALIST* NIL (IL:* IL:|;;;| "An AList mapping a region to the SEdit context that currently owns it. The associations of regions no longer in use should have a CDR of NIL. The list is kept in reverse order, with the farthest region from *REGION-ZERO* at the front of the list. So as to allow experimentation by users, we maintain the invariant that the first association on the list never has a CDR of NIL. To reestablish that invariant, we sometimes POP the AList rather than set the CDR to NIL." )) (DEFVAR USER::*L-S-REGION-ZERO* (IL:CREATEREGION 25 (- (TRUNCATE IL:SCREENHEIGHT 2) 19) (TRUNCATE IL:SCREENWIDTH 2) (TRUNCATE IL:SCREENHEIGHT 2)) (IL:* IL:|;;;| "The region to be used by the first SEdit window. This works in conjunction with USER::*L-S-REGION-DELTA* to specify the region for each new SEdit window." )) (DEFVAR USER::*L-S-REGION-DELTA* (IL:CREATEREGION 11 -44 0 0)) (DEFVAR USER::*L-S-REUSE-EARLIER-REGIONS* NIL (IL:* IL:|;;;| "If non-NIL, then earlier regions (i.e., those closer to USER::*L-S-REGION-ZERO* will get reused when free. Otherwise, new regions, farther from USER::*L-S-REGION-ZERO* than any currently in use, will be created." )) (DEFUN REGION-PLUS (ONE TWO) (IL:CREATEREGION (+ (IL:FETCH (IL:REGION IL:LEFT) IL:OF ONE) (IL:FETCH ( IL:REGION IL:LEFT) IL:OF TWO)) (+ (IL:FETCH (IL:REGION IL:BOTTOM) IL:OF ONE) (IL:FETCH (IL:REGION IL:BOTTOM) IL:OF TWO)) (+ (IL:FETCH (IL:REGION IL:WIDTH) IL:OF ONE) (IL:FETCH (IL:REGION IL:WIDTH) IL:OF TWO)) (+ (IL:FETCH (IL:REGION IL:HEIGHT) IL:OF ONE) (IL:FETCH (IL:REGION IL:HEIGHT) IL:OF TWO)))) (DEFUN GET-REGION (CONTEXT) (LET ((PAIR (AND USER::*L-S-REUSE-EARLIER-REGIONS* (FIND NIL *REGION-ALIST* :KEY (QUOTE CDR))))) (COND ((NULL PAIR) (COND ((NULL *REGION-ALIST*) (SETQ *REGION-ALIST* (LIST (CONS USER::*L-S-REGION-ZERO* CONTEXT))) USER::*L-S-REGION-ZERO*) (T (LET (( NEW-REGION (REGION-PLUS (CAR (FIRST *REGION-ALIST*)) USER::*L-S-REGION-DELTA*))) (PUSH (CONS NEW-REGION CONTEXT) *REGION-ALIST*) NEW-REGION)))) (T (SETF (CDR PAIR) CONTEXT) (CAR PAIR))))) (DEFUN SAVE-REGION (CONTEXT) (IL:* IL:|;;;| "The context is done with its region. Deallocate it.") ( LET ((PAIR (FIND CONTEXT *REGION-ALIST* :KEY (QUOTE CDR)))) (IF (NULL PAIR) (WARN "An SEdit context is trying to give up an unallocated region.") (SETF (CDR PAIR) NIL)) (SETQ *REGION-ALIST* (MEMBER-IF-NOT (QUOTE NULL) *REGION-ALIST* :KEY (QUOTE CDR))))) (USER::USE-L-S-REGIONS) (IL:PUTPROPS IL:LAYOUT-SEDIT IL:FILETYPE COMPILE-FILE) (IL:PUTPROPS IL:LAYOUT-SEDIT IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE (XCL:DEFPACKAGE "LAYOUT-SEDIT" (:NICKNAMES "L-S")))) (IL:PUTPROPS IL:LAYOUT-SEDIT IL:COPYRIGHT ("Pavel Curtis" 1986 1987)) NIL
(DEFINE-FILE-INFO PACKAGE (DEFPACKAGE "LAYOUT-SEDIT" (NICKNAMES "L-S")) READTABLE "XCL" BASE 10)
(IL:FILECREATED "18-Feb-2026 16:39:44" ("compiled on " IL:|{WMEDLEY}<lispusers>LAYOUT-SEDIT.;2|)
"18-Feb-2026 16:37:55" IL:|bcompl'd| IL:|in| "FULL 18-Feb-2026 ..." IL:|dated| "18-Feb-2026 16:38:04")
(IL:FILECREATED "18-Feb-2026 16:36:18" IL:|{WMEDLEY}<lispusers>LAYOUT-SEDIT.;2| 5714 :EDIT-BY IL:|rmk|
:CHANGES-TO (IL:VARS IL:LAYOUT-SEDITCOMS) (IL:VARIABLES *REGION-ALIST* USER::*L-S-REGION-ZERO*
USER::*L-S-REGION-DELTA* USER::*L-S-REUSE-EARLIER-REGIONS*) (IL:FUNCTIONS USER::USE-L-S-REGIONS
USER::STOP-USING-L-S-REGIONS REGION-PLUS GET-REGION SAVE-REGION) :PREVIOUS-DATE " 9-Jan-87 19:55:25"
IL:|{WMEDLEY}<lispusers>LAYOUT-SEDIT.;1|)
(IL:PRETTYCOMPRINT IL:LAYOUT-SEDITCOMS)
(IL:RPAQQ IL:LAYOUT-SEDITCOMS ((IL:FUNCTIONS USER::USE-L-S-REGIONS USER::STOP-USING-L-S-REGIONS) (
IL:VARIABLES *REGION-ALIST* USER::*L-S-REGION-ZERO* USER::*L-S-REGION-DELTA*
USER::*L-S-REUSE-EARLIER-REGIONS*) (IL:FUNCTIONS REGION-PLUS) (IL:FUNCTIONS GET-REGION SAVE-REGION) (
IL:DECLARE\: IL:DONTEVAL@LOAD IL:DONTEVAL@COMPILE IL:DOCOPY (IL:P (USER::USE-L-S-REGIONS))) (IL:*
IL:|;;| "Arrange to use the proper compiler and makefile environment ") (IL:PROP (IL:FILETYPE
IL:MAKEFILE-ENVIRONMENT) IL:LAYOUT-SEDIT)))
(DEFUN USER::USE-L-S-REGIONS NIL (ASSERT (NULL IL:|\\\\contexts|) NIL "Close all open SEdit windows")
(IL:SEDIT.RESET) (IL:MOVD (QUOTE IL:SEDIT.GET.WINDOW.REGION) (QUOTE OLD-GET-REGION)) (IL:MOVD (QUOTE
IL:SEDIT.SAVE.WINDOW.REGION) (QUOTE OLD-SAVE-REGION)) (IL:MOVD (QUOTE GET-REGION) (QUOTE
IL:SEDIT.GET.WINDOW.REGION)) (IL:MOVD (QUOTE SAVE-REGION) (QUOTE IL:SEDIT.SAVE.WINDOW.REGION)))
(DEFUN USER::STOP-USING-L-S-REGIONS NIL (ASSERT (NULL IL:|\\\\contexts|) NIL
"Close all open SEdit windows") (IL:SEDIT.RESET) (IL:MOVD (QUOTE OLD-GET-REGION) (QUOTE
IL:SEDIT.GET.WINDOW.REGION)) (IL:MOVD (QUOTE OLD-SAVE-REGION) (QUOTE IL:SEDIT.SAVE.WINDOW.REGION)))
(DEFVAR *REGION-ALIST* NIL (IL:* IL:|;;;|
"An AList mapping a region to the SEdit context that currently owns it. The associations of regions no longer in use should have a CDR of NIL. The list is kept in reverse order, with the farthest region from *REGION-ZERO* at the front of the list. So as to allow experimentation by users, we maintain the invariant that the first association on the list never has a CDR of NIL. To reestablish that invariant, we sometimes POP the AList rather than set the CDR to NIL."
))
(DEFVAR USER::*L-S-REGION-ZERO* (IL:CREATEREGION 25 (- (TRUNCATE IL:SCREENHEIGHT 2) 19) (TRUNCATE
IL:SCREENWIDTH 2) (TRUNCATE IL:SCREENHEIGHT 2)) (IL:* IL:|;;;|
"The region to be used by the first SEdit window. This works in conjunction with USER::*L-S-REGION-DELTA* to specify the region for each new SEdit window."
))
(DEFVAR USER::*L-S-REGION-DELTA* (IL:CREATEREGION 11 -44 0 0))
(DEFVAR USER::*L-S-REUSE-EARLIER-REGIONS* NIL (IL:* IL:|;;;|
"If non-NIL, then earlier regions (i.e., those closer to USER::*L-S-REGION-ZERO* will get reused when free. Otherwise, new regions, farther from USER::*L-S-REGION-ZERO* than any currently in use, will be created."
))
(DEFUN REGION-PLUS (ONE TWO) (IL:CREATEREGION (+ (IL:FETCH (IL:REGION IL:LEFT) IL:OF ONE) (IL:FETCH (
IL:REGION IL:LEFT) IL:OF TWO)) (+ (IL:FETCH (IL:REGION IL:BOTTOM) IL:OF ONE) (IL:FETCH (IL:REGION
IL:BOTTOM) IL:OF TWO)) (+ (IL:FETCH (IL:REGION IL:WIDTH) IL:OF ONE) (IL:FETCH (IL:REGION IL:WIDTH) IL:OF
TWO)) (+ (IL:FETCH (IL:REGION IL:HEIGHT) IL:OF ONE) (IL:FETCH (IL:REGION IL:HEIGHT) IL:OF TWO))))
(DEFUN GET-REGION (CONTEXT) (LET ((PAIR (AND USER::*L-S-REUSE-EARLIER-REGIONS* (FIND NIL
*REGION-ALIST* :KEY (QUOTE CDR))))) (COND ((NULL PAIR) (COND ((NULL *REGION-ALIST*) (SETQ
*REGION-ALIST* (LIST (CONS USER::*L-S-REGION-ZERO* CONTEXT))) USER::*L-S-REGION-ZERO*) (T (LET ((
NEW-REGION (REGION-PLUS (CAR (FIRST *REGION-ALIST*)) USER::*L-S-REGION-DELTA*))) (PUSH (CONS
NEW-REGION CONTEXT) *REGION-ALIST*) NEW-REGION)))) (T (SETF (CDR PAIR) CONTEXT) (CAR PAIR)))))
(DEFUN SAVE-REGION (CONTEXT) (IL:* IL:|;;;| "The context is done with its region. Deallocate it.") (
LET ((PAIR (FIND CONTEXT *REGION-ALIST* :KEY (QUOTE CDR)))) (IF (NULL PAIR) (WARN
"An SEdit context is trying to give up an unallocated region.") (SETF (CDR PAIR) NIL)) (SETQ
*REGION-ALIST* (MEMBER-IF-NOT (QUOTE NULL) *REGION-ALIST* :KEY (QUOTE CDR)))))
(USER::USE-L-S-REGIONS)
(IL:PUTPROPS IL:LAYOUT-SEDIT IL:FILETYPE COMPILE-FILE)
(IL:PUTPROPS IL:LAYOUT-SEDIT IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE (XCL:DEFPACKAGE
"LAYOUT-SEDIT" (:NICKNAMES "L-S"))))
NIL

View File

@@ -1,32 +1,27 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED " 2-Feb-87 10:38:19" {ERIS}<LISPUSERS>LYRIC>PHONE-DIRECTORY.;1 9029
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS PHONE-DIRECTORYCOMS)
(FILECREATED "18-Feb-2026 16:27:33" {WMEDLEY}<lispusers>PHONE-DIRECTORY.;2 8485
previous date%: " 9-Jan-87 19:45:25" {ERIS}<LISPUSERS>KOTO>PHONE-DIRECTORY.;3)
:EDIT-BY rmk
:PREVIOUS-DATE " 2-Feb-87 10:38:19" {WMEDLEY}<lispusers>PHONE-DIRECTORY.;1)
(* "
Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT PHONE-DIRECTORYCOMS)
(RPAQQ PHONE-DIRECTORYCOMS ((FNS Cache-Phone-Directory-Files Let-your-fingers-do-the-walking
Phone-Directory-Kill-Proc Phone-Window-ButtonEventFn Lookup-Person
Phone-Window-WhenOpenedFn)
(VARS fingersIconMask fingersIconBM)
(INITVARS (*Cached-Phone-Directory-Files* NIL)
(*Phone-Directory-Pos* (create POSITION XCOORD _ 15 YCOORD _
(DIFFERENCE SCREENHEIGHT 75)))
(*Phone-Directory-Region* (CREATEREGION 15 (DIFFERENCE
SCREENHEIGHT 258
)
400 250)))
(GLOBALVARS *Cached-Phone-Directory-Files* *Phone-Directory-Pos*
*Phone-Directory-Region* fingersIconMask fingersIconBM)
(FILES GREP)
(P (Let-your-fingers-do-the-walking))))
(RPAQQ PHONE-DIRECTORYCOMS
((FNS Cache-Phone-Directory-Files Let-your-fingers-do-the-walking Phone-Directory-Kill-Proc
Phone-Window-ButtonEventFn Lookup-Person Phone-Window-WhenOpenedFn)
(VARS fingersIconMask fingersIconBM)
(INITVARS (*Cached-Phone-Directory-Files* NIL)
(*Phone-Directory-Pos* (create POSITION XCOORD _ 15 YCOORD _ (DIFFERENCE SCREENHEIGHT
75)))
(*Phone-Directory-Region* (CREATEREGION 15 (DIFFERENCE SCREENHEIGHT 258)
400 250)))
(GLOBALVARS *Cached-Phone-Directory-Files* *Phone-Directory-Pos* *Phone-Directory-Region*
fingersIconMask fingersIconBM)
(FILES GREP)
(P (Let-your-fingers-do-the-walking))))
(DEFINEQ
(Cache-Phone-Directory-Files
@@ -139,11 +134,12 @@ Copyright (c) 1986, 1987 by Xerox Corporation. All rights reserved.
(GLOBALVARS *Cached-Phone-Directory-Files* *Phone-Directory-Pos* *Phone-Directory-Region*
fingersIconMask fingersIconBM)
)
(FILESLOAD GREP)
(Let-your-fingers-do-the-walking)
(PUTPROPS PHONE-DIRECTORY COPYRIGHT ("Xerox Corporation" 1986 1987))
(Let-your-fingers-do-the-walking)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1649 6373 (Cache-Phone-Directory-Files 1659 . 2954) (Let-your-fingers-do-the-walking
2956 . 4251) (Phone-Directory-Kill-Proc 4253 . 4684) (Phone-Window-ButtonEventFn 4686 . 5362) (
Lookup-Person 5364 . 5976) (Phone-Window-WhenOpenedFn 5978 . 6371)))))
(FILEMAP (NIL (1168 5892 (Cache-Phone-Directory-Files 1178 . 2473) (Let-your-fingers-do-the-walking
2475 . 3770) (Phone-Directory-Kill-Proc 3772 . 4203) (Phone-Window-ButtonEventFn 4205 . 4881) (
Lookup-Person 4883 . 5495) (Phone-Window-WhenOpenedFn 5497 . 5890)))))
STOP

View File

@@ -1,16 +1,18 @@
(DEFINE-FILE-INFO PACKAGE (DEFPACKAGE "BDF" (USE "XCL" "LISP") (EXPORT "READ-BDF" "BUILD-COMPOSITE"
"WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE") (IMPORT-FROM "IL" "BITBLT" "BITMAPBIT" "BITMAPCREATE"
"BITMAPHEIGHT" "BITMAPWIDTH" "BLACKSHADE" "BLTSHADE" "BOLD" "COMPRESSED" "CHARSETINFO" "DISPLAY"
"FONTDESCRIPTOR" "FONTP" "FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH" "MCCS" "MEDIUM" "REGULAR" "TCONC"
"UTOMCODE?" "MEDLEYFONT.FILENAME" "MEDLEYFONT.WRITE.FONT")) READTABLE "XCL" BASE 10)
"BITMAPHEIGHT" "BITMAPWIDTH" "BLACKSHADE" "BLTSHADE" "BOLD" "COMPRESSED" "CHARSETINFO" "CHARSETPROP"
"DISPLAY" "FONTDESCRIPTOR" "FONTP" "FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH" "MCCS" "MEDIUM"
"REGULAR" "TCONC" "UTOMCODE?" "MEDLEYFONT.FILENAME" "MEDLEYFONT.WRITE.FONT")) READTABLE "XCL" BASE
10)
(IL:FILECREATED "23-Feb-2026 20:11:48" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;20| 54795
(IL:FILECREATED " 8-Dec-2025 12:13:40" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;9| 51309
:EDIT-BY "mth"
:CHANGES-TO (IL:FUNCTIONS READ-GLYPH)
:CHANGES-TO (IL:FUNCTIONS BDF-TO-CHARSETINFO BDF-TO-FONTDESCRIPTOR)
(FILE-ENVIRONMENTS "READ-BDF")
:PREVIOUS-DATE "23-Feb-2026 17:38:07" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;19|
:PREVIOUS-DATE " 8-Dec-2025 12:12:47" IL:|{DSK}<home>matt>Interlisp>medley>lispusers>READ-BDF.;8|
)
@@ -18,7 +20,7 @@
(IL:RPAQQ IL:READ-BDFCOMS
((IL:STRUCTURES BDF-FONT GLYPH XLFD)
(IL:VARIABLES GLYPH-PROCESSING-HOOK MAXCHARSET MAXTHINCHAR NOMAPPINGCHARSET)
(IL:VARIABLES MAXCHARSET MAXTHINCHAR NOMAPPINGCHARSET)
(IL:FUNCTIONS BDF-TO-CHARSETINFO BDF-TO-FONTDESCRIPTOR BUILD-COMPOSITE CHAR-PRESENT-BIT
COUNT-MCHARS GLYPHS-BY-CHARSET PACKFILENAME.STRING READ-BDF
READ-DELIMITED-LIST-FROM-STRING READ-GLYPH WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE
@@ -69,8 +71,6 @@
(CHARSET昱EGISTRY NIL :TYPE STRING)
(CHARSET挂NCODING NIL :TYPE STRING))
(DEFVAR GLYPH-PROCESSING-HOOK NIL)
(DEFCONSTANT MAXCHARSET 255)
(DEFCONSTANT MAXTHINCHAR 255)
@@ -126,7 +126,7 @@
(IMAGEWIDTHS (IL:\\CREATECSINFOELEMENT))
(DLEFT 0)
GLYPHS-LIMITS BMAP OFFSETS HEIGHT WIDTHS)
(IL:CHARSETPROP CSINFO 'IL:CSCHARENCODING 'MCCS)
(CHARSETPROP CSINFO 'IL:CSCHARENCODING 'MCCS)
(LOOP :FOR XGL :IN CSGLYPHS :DO (LET* ((MCODE (CAR XGL))
(GL (CDR XGL))
(GWIDTH (GLYPH-WIDTH GL))
@@ -309,9 +309,7 @@
(LIST CSET)))))
(LIST FONTDESC CHARSETS))))
(DEFUN BUILD-COMPOSITE (FONTS &KEY VERBOSE (BLOCKING T))
(IL:* IL:\; "Edited 19-Feb-2026 21:45 by mth")
(IL:* IL:\; "Edited 1-Dec-2025 23:07 by mth")
(DEFUN BUILD-COMPOSITE (FONTS &KEY VERBOSE) (IL:* IL:\; "Edited 1-Dec-2025 23:07 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 12:32 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 21:23 by mth")
(IL:* IL:\; "Edited 18-Nov-2025 21:22 by mth")
@@ -329,61 +327,53 @@
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Loading initial font file: ~A~%" (NAMESTRING BASE-FONT)
))
(SETQ BASE-FONT (READ-BDF BASE-FONT :MCCS-ONLY T :VERBOSE VERBOSE))
(WHEN BLOCKING (IL:BLOCK)))
(SETQ BASE-FONT (READ-BDF BASE-FONT :MCCS-ONLY T :VERBOSE VERBOSE)))
((NOT (BDF-FONT-P BASE-FONT))
(ERROR "Initial font (~S) is not a BDF-FONT, nor string, nor pathname." BASE-FONT)))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Initial font contains ~D MCCS characters.~%"
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))))
(SETQ MCHAR-PRESENT (BF-MCHAR-PRESENT BASE-FONT))
(LOOP :FOR FILL-FONT :IN FILL-FROM :WITH PREV-CC :WITH FF-NAME :WHEN FILL-FONT :DO
(FLET ((MERGE-GLYPH (GL &AUX V)
(SETQ V (GLYPH-ENCODING GL))
(WHEN (AND (LISTP V)
(EQ (FIRST V)
-1))
(SETQ V (OR (SECOND V)
-1)))
(LOOP :FOR FILL-FONT :IN FILL-FROM :WITH PREV-CC :WHEN FILL-FONT :DO
(COND
((OR (STRINGP FILL-FONT)
(PATHNAMEP FILL-FONT))
(UNLESS (IL:INFILEP FILL-FONT)
(ERROR "Subsequent font ~S doesn't exist or is unreadable." (NAMESTRING
FILL-FONT)))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Loading subsequent font file: ~A~%" (NAMESTRING
FILL-FONT)))
(SETQ FILL-FONT (READ-BDF FILL-FONT :MCCS-ONLY T :VERBOSE VERBOSE)))
((NOT (BDF-FONT-P FILL-FONT))
(ERROR "Subsequent font (~S) is not a BDF-FONT, nor string, nor pathname."
FILL-FONT)))
(SETQ PREV-CC CHAR-COUNT)
(LOOP :FOR GL :IN (BF-GLYPHS FILL-FONT)
:WITH V :DO (SETQ V (GLYPH-ENCODING GL))
(WHEN (AND (LISTP V)
(EQ (FIRST V)
-1))
(SETQ V (OR (SECOND V)
-1)))
(IL:* IL:|;;|
(IL:* IL:|;;|
 "Need to change this use of UTOMCODE? based on the CHARSET昱EGISTRY of the XLFD of FILL-FONT")
(WHEN (AND (UTOMCODE? V)
(ZEROP (CHAR-PRESENT-BIT MCHAR-PRESENT V)))
(CHAR-PRESENT-BIT MCHAR-PRESENT V 1)
(WHEN (AND (UTOMCODE? V)
(ZEROP (CHAR-PRESENT-BIT MCHAR-PRESENT V)))
(CHAR-PRESENT-BIT MCHAR-PRESENT V 1)
(IL:* IL:|;;|
(IL:* IL:|;;|
 "What other bookkeping of BASE-FONT needs to be done when adding a glyph? Any?")
(PUSH GL (BF-GLYPHS BASE-FONT)))
NIL))
(COND
((OR (STRINGP FILL-FONT)
(PATHNAMEP FILL-FONT))
(SETQ FF-NAME (NAMESTRING FILL-FONT))
(UNLESS (IL:INFILEP FILL-FONT)
(ERROR "Subsequent font ~S doesn't exist or is unreadable." FF-NAME))
(WHEN VERBOSE (FORMAT *STANDARD-OUTPUT*
"~&Loading subsequent font file: ~A~%" FF-NAME))
(LET ((GLYPH-PROCESSING-HOOK #'MERGE-GLYPH))
(READ-BDF FILL-FONT :MCCS-ONLY T :VERBOSE VERBOSE)
(SETQ FILL-FONT NIL))
(WHEN BLOCKING (IL:BLOCK)))
((NOT (BDF-FONT-P FILL-FONT))
(ERROR "Subsequent font (~S) is not a BDF-FONT, nor string, nor pathname."
FF-NAME)))
(SETQ PREV-CC CHAR-COUNT)
(WHEN FILL-FONT
(LOOP :FOR GL :IN (BF-GLYPHS FILL-FONT)
:DO
(MERGE-GLYPH GL)))
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT*
"~&Font ~A supplied ~D additional MCCS characters.~%" FF-NAME
(- (SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
PREV-CC)))))
(PUSH GL (BF-GLYPHS BASE-FONT))))
(SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
(WHEN VERBOSE
(FORMAT *STANDARD-OUTPUT* "~&Font ~A supplied ~D additional MCCS characters.~%"
(NAMESTRING FILL-FONT)
(- (SETQ CHAR-COUNT (COUNT-MCHARS BASE-FONT))
PREV-CC))))
BASE-FONT))
(DEFUN CHAR-PRESENT-BIT (BM MCODE &OPTIONAL (NEWBIT -1 SBIT)
@@ -482,7 +472,6 @@
Y))))
(DEFUN READ-BDF (PATH &KEY VERBOSE MCCS-ONLY (EXTERNAL-FORMAT :ISO8859/1))
(IL:* IL:\; "Edited 19-Feb-2026 21:42 by mth")
(IL:* IL:\; "Edited 1-Dec-2025 22:40 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 11:59 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 17:39 by mth")
@@ -597,12 +586,13 @@
(PLUSP NGLYPHS))
(ERROR "Invalid BDF file - CHARS count (~A) is invalid or missing."
NGLYPHS))
(LOOP :REPEAT NGLYPHS :WITH ENC :WITH MC :DO
(SETQ GL (READ-GLYPH FILE-STREAM FONT :MCCS-ONLY MCCS-ONLY))
(LOOP :REPEAT NGLYPHS :WITH ENC :WITH MC :DO (SETQ GL (READ-GLYPH
FILE-STREAM
FONT))
(SETQ ENC (GLYPH-ENCODING GL))
(WHEN (AND (LISTP ENC)
(EQL (FIRST ENC)
-1))
(EQ (FIRST ENC)
-1))
(SETQ ENC (OR (SECOND ENC)
-1)))
(COND
@@ -625,195 +615,143 @@
(IL:* IL:|;;| "It ought to be safe to share the bitmap")
(WHEN (AND GLYPH-PROCESSING-HOOK (FUNCTIONP
GLYPH-PROCESSING-HOOK
))
(SETQ CGL (FUNCALL GLYPH-PROCESSING-HOOK CGL)))
(WHEN CGL (TCONC MAPPED-GLYPHS CGL))
(TCONC MAPPED-GLYPHS CGL)
(CHAR-PRESENT-BIT MCHAR-PRESENT CC 1)))
((NOT MCCS-ONLY)
(WHEN (AND GLYPH-PROCESSING-HOOK (FUNCTIONP GLYPH-PROCESSING-HOOK)
)
(SETQ GL (FUNCALL GLYPH-PROCESSING-HOOK GL)))
(WHEN GL (TCONC UNMAPPED-GLYPHS GL)))))
(T (TCONC UNMAPPED-GLYPHS GL))))
(SETF (BF-GLYPHS FONT)
(CAR MAPPED-GLYPHS))
(SETF (BF-UNMAPPED故LYPHS FONT)
(CAR UNMAPPED-GLYPHS)))
(ENDFONT (SETQ FONT-COMPLETE T)))))))))
(WHEN VERBOSE
(ENDFONT (SETQ FONT-COMPLETE T))))))))
(WHEN VERBOSE
(IL:* IL:|;;| "The SIZE reported needs clarification:")
(IL:* IL:|;;| "The SIZE reported needs clarification:")
(FORMAT *STANDARD-OUTPUT* "Name: ~A~%Family: ~A~%Sizes: Font: ~A Pixel: ~A Point: ~A (decipoints)~%Weight: ~A~%Slant: ~A~%Expansion: ~A~%Glyphs: ~D~%Unmapped glyphs: ~D~%"
(BF-NAME FONT)
(XLFD-FAMILY XLFD)
(FIRST (BF-SIZE FONT))
(XLFD-PIXEL昤IZE XLFD)
(XLFD-POINT昤IZE XLFD)
(XLFD-WEIGHT XLFD)
(XLFD-SLANT XLFD)
(XLFD-SETWIDTH昧AME XLFD)
(LENGTH (BF-GLYPHS FONT))
(LENGTH (BF-UNMAPPED故LYPHS FONT))))
FONT))
(FORMAT *STANDARD-OUTPUT* "Name: ~A~%Family: ~A~%Sizes: Font: ~A Pixel: ~A Point: ~A (decipoints)~%Weight: ~A~%Slant: ~A~%Expansion: ~A~%"
(BF-NAME FONT)
(XLFD-FAMILY XLFD)
(FIRST (BF-SIZE FONT))
(XLFD-PIXEL昤IZE XLFD)
(XLFD-POINT昤IZE XLFD)
(XLFD-WEIGHT XLFD)
(XLFD-SLANT XLFD)
(XLFD-SETWIDTH昧AME XLFD)))
FONT)))
(DEFUN READ-DELIMITED-LIST-FROM-STRING (INPUT-STRING &OPTIONAL (DELIMIT #\]))
(IL:* IL:\; "Edited 20-Aug-2024 16:46 by mth")
(WITH-INPUT-FROM-STRING (SI (CONCATENATE 'STRING INPUT-STRING " " (STRING DELIMIT)))
(READ-DELIMITED-LIST DELIMIT SI)))
(DEFUN READ-GLYPH (FILE-STREAM FONT &KEY MCCS-ONLY) (IL:* IL:\; "Edited 23-Feb-2026 20:11 by mth")
(IL:* IL:\; "Edited 19-Feb-2026 15:46 by mth")
(IL:* IL:\; "Edited 26-Nov-2025 23:32 by mth")
(DEFUN READ-GLYPH (FILE-STREAM FONT) (IL:* IL:\; "Edited 26-Nov-2025 23:32 by mth")
(IL:* IL:\; "Edited 17-Nov-2025 20:03 by mth")
(IL:* IL:\; "Edited 23-Apr-2025 17:53 by mth")
(IL:* IL:\; "Edited 21-Apr-2025 13:37 by mth")
(IL:* IL:\; "Edited 19-Apr-2025 09:32 by mth")
(IL:* IL:\; "Edited 17-Apr-2025 18:14 by mth")
(IL:* IL:\; "Edited 21-Aug-2024 01:10 by mth")
(LET
((GLYPH (MAKE-GLYPH :SWIDTH (COPY-LIST (BF-SWIDTH FONT))
:DWIDTH
(COPY-LIST (BF-DWIDTH FONT))
:SWIDTH1
(COPY-LIST (BF-SWIDTH1 FONT))
:DWIDTH1
(COPY-LIST (BF-DWIDTH1 FONT))
:VVECTOR
(COPY-LIST (BF-VVECTOR FONT))))
CHAR-COMPLETE ENC LINE ITEMS V KEY POS STARTED BBW BBH)
(LOOP
:UNTIL CHAR-COMPLETE :DO (SETQ LINE (READ-LINE FILE-STREAM))
(WHEN LINE (IL:* IL:\; "Ignore blank lines")
(MULTIPLE-VALUE-SETQ (KEY POS)
(READ-FROM-STRING LINE))
(WHEN (<= POS (LENGTH LINE))
(SETQ LINE (SUBSEQ LINE POS)))
(COND
((EQ KEY 'COMMENT) (IL:* IL:\; "Ignore COMMENT lines")
(LET ((GLYPH (MAKE-GLYPH :SWIDTH (COPY-LIST (BF-SWIDTH FONT))
:DWIDTH
(COPY-LIST (BF-DWIDTH FONT))
:SWIDTH1
(COPY-LIST (BF-SWIDTH1 FONT))
:DWIDTH1
(COPY-LIST (BF-DWIDTH1 FONT))
:VVECTOR
(COPY-LIST (BF-VVECTOR FONT))))
CHAR-COMPLETE LINE ITEMS V KEY POS STARTED BBW BBH)
(LOOP :UNTIL CHAR-COMPLETE :DO (SETQ LINE (READ-LINE FILE-STREAM))
(WHEN LINE (IL:* IL:\; "Ignore blank lines")
(MULTIPLE-VALUE-SETQ (KEY POS)
(READ-FROM-STRING LINE))
(WHEN (<= POS (LENGTH LINE))
(SETQ LINE (SUBSEQ LINE POS)))
(COND
((EQ KEY 'COMMENT) (IL:* IL:\; "Ignore COMMENT lines")
(IL:* IL:\;
 "Probably aren't \"legal\" here, anyway.")
)
((EQ KEY 'STARTCHAR)
(WHEN STARTED (ERROR "Invalid BDF file - STARTCHAR inside glyph."))
(SETF STARTED T)
(SETF (GLYPH-NAME GLYPH)
(STRING LINE)))
(T
(UNLESS STARTED (ERROR
)
((EQ KEY 'STARTCHAR)
(WHEN STARTED (ERROR "Invalid BDF file - STARTCHAR inside glyph."))
(SETF STARTED T)
(SETF (GLYPH-NAME GLYPH)
(STRING LINE)))
(T (UNLESS STARTED (ERROR
"Invalid BDF file - glyph has not been started. STARTCHAR missing."
))
(SETQ ITEMS (READ-DELIMITED-LIST-FROM-STRING LINE))
(CASE KEY
(ENCODING (SETF (GLYPH-ENCODING GLYPH)
(SETQ ENC (IF (EQL -1 (FIRST ITEMS))
ITEMS
(FIRST ITEMS)))))
(SWIDTH (SETF (GLYPH-SWIDTH GLYPH)
ITEMS))
(DWIDTH (SETF (GLYPH-DWIDTH GLYPH)
ITEMS))
(SWIDTH1 (SETF (GLYPH-SWIDTH1 GLYPH)
ITEMS))
(DWIDTH1 (SETF (GLYPH-DWIDTH1 GLYPH)
ITEMS))
(VVECTOR (SETF (GLYPH-VVECTOR GLYPH)
ITEMS))
(BBX (SETF (GLYPH-BBW GLYPH)
(SETQ BBW (FIRST ITEMS))
(GLYPH-BBH GLYPH)
(SETQ BBH (SECOND ITEMS))
(GLYPH-BBXOFF0 GLYPH)
(THIRD ITEMS)
(GLYPH-BBYOFF0 GLYPH)
(FOURTH ITEMS)))
(BITMAP
(UNLESS (ZEROP (* BBW BBH)) (IL:* IL:\;
 "Don't bother creating a BITMAP with no area")
(IF (AND MCCS-ONLY (NOT (UTOMCODE? ENC)))
(PROGN
(IL:* IL:|;;|
 "This is the case of skipping over non-MCCS encoded glyph when MCCS-ONLY")
))
(SETQ ITEMS (READ-DELIMITED-LIST-FROM-STRING LINE))
(CASE KEY
(ENCODING (SETF (GLYPH-ENCODING GLYPH)
(IF (EQL -1 (FIRST ITEMS))
ITEMS
(FIRST ITEMS))))
(SWIDTH (SETF (GLYPH-SWIDTH GLYPH)
ITEMS))
(DWIDTH (SETF (GLYPH-DWIDTH GLYPH)
ITEMS))
(SWIDTH1 (SETF (GLYPH-SWIDTH1 GLYPH)
ITEMS))
(DWIDTH1 (SETF (GLYPH-DWIDTH1 GLYPH)
ITEMS))
(VVECTOR (SETF (GLYPH-VVECTOR GLYPH)
ITEMS))
(BBX (SETF (GLYPH-BBW GLYPH)
(SETQ BBW (FIRST ITEMS))
(GLYPH-BBH GLYPH)
(SETQ BBH (SECOND ITEMS))
(GLYPH-BBXOFF0 GLYPH)
(THIRD ITEMS)
(GLYPH-BBYOFF0 GLYPH)
(FOURTH ITEMS)))
(BITMAP (UNLESS (ZEROP (* BBW BBH))
(LOOP :REPEAT BBH :DO (READ-LINE FILE-STREAM)))
(LET*
((BM (BITMAPCREATE BBW BBH 1))
(BM.BASE (IL:|fetch| IL:BITMAPBASE IL:|of| BM))
(BM.RASTERWIDTH (IL:|fetch| IL:BITMAPRASTERWIDTH IL:|of| BM))
(NBYTES (CEILING BBW 8))
(NCHARS (* 2 NBYTES))
(NWORDS (CEILING BBW 16))
BITS WORDINDEX)
(LABELS ((CHAR-HEX-VALUE (C)
(IF (CHARACTERP C)
(COND
((CHAR<= #\0 C #\9)
(- (CHAR-CODE C)
(IL:CONSTANT (CHAR-CODE #\0))))
((CHAR<= #\A C #\F)
(IL:* IL:|;;| "Don't bother creating a BITMAP with no area")
(IL:* IL:|;;|
 "The (- (CHAR-CODE #\\A) 10) accomplishes adding 10 after the outer subtraction")
(- (CHAR-CODE C)
(IL:CONSTANT (- (CHAR-CODE #\A)
10))))
((CHAR<= #\a C #\f)
(IL:* IL:|;;|
 "The (- (CHAR-CODE #\\a) 10) accomplishes adding 10 after the outer subtraction")
(- (CHAR-CODE C)
(IL:CONSTANT (- (CHAR-CODE #\a)
10))))
(T 0))
0))
(PARSE-WORDS
NIL
(LOOP :FOR I :FROM 0 :TO (1- NCHARS)
:BY 4 :WITH C3LIMIT = (- NCHARS 3)
:WITH C4LIMIT = (- NCHARS 4)
:COLLECT
(+ (ASH (CHAR-HEX-VALUE (CHAR LINE I))
12)
(ASH (CHAR-HEX-VALUE (CHAR LINE (+ 1 I)))
8)
(ASH (CHAR-HEX-VALUE (AND (<= I C3LIMIT)
(CHAR LINE (+ 2 I))))
4)
(CHAR-HEX-VALUE (AND (<= I C4LIMIT)
(CHAR LINE (+ 3 I))))))))
(LOOP :WITH BITROW = 0 :REPEAT BBH :DO
(SETQ LINE (STRING-TRIM '(#\Space #\Tab)
(READ-LINE FILE-STREAM)))
(UNLESS (EQUAL NCHARS (LENGTH LINE))
(ERROR "Invalid BDF file - bad line in BITMAP: ~A"
LINE))
(SETQ BITS (PARSE-WORDS))
(SETQ WORDINDEX (* BITROW BM.RASTERWIDTH))
(LOOP :REPEAT NWORDS :DO (IL:\\PUTBASE BM.BASE WORDINDEX
(POP BITS))
(INCF WORDINDEX))
(INCF BITROW)))
(SETF (GLYPH-BITMAP GLYPH)
BM)))))
(ENDCHAR (SETQ CHAR-COMPLETE T)))))))
(SETF (GLYPH-ASCENT GLYPH)
(+ (GLYPH-BBH GLYPH)
(GLYPH-BBYOFF0 GLYPH)))
(SETF (GLYPH-DESCENT GLYPH)
(ABS (MIN 0 (GLYPH-BBYOFF0 GLYPH))))
(SETF (GLYPH-WIDTH GLYPH)
(MAX (+ (MAX 0 (GLYPH-BBXOFF0 GLYPH))
(GLYPH-BBW GLYPH))
(FIRST (GLYPH-DWIDTH GLYPH))))
GLYPH))
(LET* ((BM (BITMAPCREATE BBW BBH 1))
(BM.BASE (IL:|fetch| IL:BITMAPBASE IL:|of| BM))
(BM.RASTERWIDTH (IL:|fetch| IL:BITMAPRASTERWIDTH
IL:|of| BM))
(NBYTES (CEILING BBW 8))
(NCHARS (* 2 NBYTES))
(NWORDS (CEILING BBW 16))
BITS BYTEPOS WORDINDEX)
(LOOP :WITH BITROW = 0 :REPEAT BBH :DO
(SETQ LINE (STRING-TRIM '(#\Space #\Tab)
(READ-LINE FILE-STREAM)))
(UNLESS (AND (EQUAL NCHARS (LENGTH LINE))
(SETQ BITS
(PARSE-INTEGER LINE :RADIX 16
:JUNK-ALLOWED T)))
(ERROR
"Invalid BDF file - bad line in BITMAP: ~A"
LINE))
(WHEN (ODDP NBYTES)
(SETQ BITS (ASH BITS 8)))
(SETQ WORDINDEX (* BITROW BM.RASTERWIDTH))
(SETQ BYTEPOS (* 16 (1- NWORDS)))
(LOOP :REPEAT NWORDS :DO
(IL:\\PUTBASE BM.BASE WORDINDEX
(LDB (BYTE 16 BYTEPOS)
BITS))
(INCF WORDINDEX)
(DECF BYTEPOS 16))
(INCF BITROW))
(SETF (GLYPH-BITMAP GLYPH)
BM))))
(ENDCHAR (SETQ CHAR-COMPLETE T)))))))
(SETF (GLYPH-ASCENT GLYPH)
(+ (GLYPH-BBH GLYPH)
(GLYPH-BBYOFF0 GLYPH)))
(SETF (GLYPH-DESCENT GLYPH)
(ABS (MIN 0 (GLYPH-BBYOFF0 GLYPH))))
(SETF (GLYPH-WIDTH GLYPH)
(MAX (+ (MAX 0 (GLYPH-BBXOFF0 GLYPH))
(GLYPH-BBW GLYPH))
(FIRST (GLYPH-DWIDTH GLYPH))))
GLYPH))
(DEFUN WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE (BDFONT DEST-DIR &KEY FAMILY SIZE FACE ROTATION DEVICE
TEST &AUX FULLFILENAME)
(IL:* IL:\; "Edited 23-Feb-2026 15:57 by mth")
(IL:* IL:\; "Edited 17-Feb-2026 14:17 by mth")
&AUX FULLFILENAME)
(IL:* IL:\; "Edited 2-Dec-2025 14:47 by mth")
(IL:* IL:\; "Edited 30-Nov-2025 16:03 by mth")
(IL:* IL:\; "Edited 28-Nov-2025 17:56 by mth")
@@ -831,10 +769,8 @@
(IL:* IL:|;;| "CSETS correspond to the charsets actually present in the FONTDESC.")
(SETQ FULLFILENAME (IF TEST
"WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE TEST"
(MEDLEYFONT.WRITE.FONT FONTDESC (MEDLEYFONT.FILENAME NIL FONTDESC
NIL NIL DEST-DIR))))
(SETQ FULLFILENAME (MEDLEYFONT.WRITE.FONT FONTDESC (MEDLEYFONT.FILENAME FONTDESC NIL NIL
DEST-DIR)))
(LIST FULLFILENAME FONTDESC CSETS)))
(DEFUN XLFD-SPLIT-FONT-NAME (NAME) (IL:* IL:\; "Edited 26-Nov-2025 09:43 by mth")
@@ -944,21 +880,21 @@
"BITMAPCREATE" "BITMAPHEIGHT"
"BITMAPWIDTH" "BLACKSHADE" "BLTSHADE"
"BOLD" "COMPRESSED" "CHARSETINFO"
"DISPLAY" "FONTDESCRIPTOR" "FONTP"
"FONTPROP" "INPUT" "ITALIC" "LIGHT" "LRSH"
"MCCS" "MEDIUM" "REGULAR" "TCONC"
"UTOMCODE?" "MEDLEYFONT.FILENAME"
"CHARSETPROP" "DISPLAY" "FONTDESCRIPTOR"
"FONTP" "FONTPROP" "INPUT" "ITALIC"
"LIGHT" "LRSH" "MCCS" "MEDIUM" "REGULAR"
"TCONC" "UTOMCODE?" "MEDLEYFONT.FILENAME"
"MEDLEYFONT.WRITE.FONT"))
:READTABLE "XCL"
:COMPILER :COMPILE-FILE)
(IL:PUTPROPS IL:READ-BDF IL:DATABASE IL:NO)
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (3086 10199 (BDF-TO-CHARSETINFO 3086 . 10199)) (10201 16820 (BDF-TO-FONTDESCRIPTOR
10201 . 16820)) (16822 21401 (BUILD-COMPOSITE 16822 . 21401)) (21403 22152 (CHAR-PRESENT-BIT 21403 .
22152)) (22154 22438 (COUNT-MCHARS 22154 . 22438)) (22440 25475 (GLYPHS-BY-CHARSET 22440 . 25475)) (
25477 26902 (PACKFILENAME.STRING 25477 . 26902)) (26904 37150 (READ-BDF 26904 . 37150)) (37152 37475 (
READ-DELIMITED-LIST-FROM-STRING 37152 . 37475)) (37477 46234 (READ-GLYPH 37477 . 46234)) (46236 47972
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 46236 . 47972)) (47974 50391 (XLFD-SPLIT-FONT-NAME 47974 . 50391)
) (50393 53405 (XLFD-TO-FACE 50393 . 53405)))))
(IL:FILEMAP (NIL (3116 10226 (BDF-TO-CHARSETINFO 3116 . 10226)) (10228 16847 (BDF-TO-FONTDESCRIPTOR
10228 . 16847)) (16849 20782 (BUILD-COMPOSITE 16849 . 20782)) (20784 21533 (CHAR-PRESENT-BIT 20784 .
21533)) (21535 21819 (COUNT-MCHARS 21535 . 21819)) (21821 24856 (GLYPHS-BY-CHARSET 21821 . 24856)) (
24858 26283 (PACKFILENAME.STRING 24858 . 26283)) (26285 35760 (READ-BDF 26285 . 35760)) (35762 36085 (
READ-DELIMITED-LIST-FROM-STRING 35762 . 36085)) (36087 43085 (READ-GLYPH 36087 . 43085)) (43087 44472
(WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE 43087 . 44472)) (44474 46891 (XLFD-SPLIT-FONT-NAME 44474 . 46891)
) (46893 49905 (XLFD-TO-FACE 46893 . 49905)))))
IL:STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,15 +1,11 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED " 9-Jan-87 16:47:16" {ERIS}<LISPCORE>LIBRARY>SKETCHCOLOR.;2 4779
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS BLACKSHADE16 DARKGRAY16 MEDIUMGRAY16 LIGHTGRAY16 WHITESHADE16 REDTEXTURE
GREENTEXTURE BLUETEXTURE SKETCHCOLORCOMS)
(FILECREATED "18-Feb-2026 16:28:03" {WMEDLEY}<lispusers>SKETCHCOLOR.;2 4732
previous date%: "29-Oct-85 14:44:30" {ERIS}<LISPCORE>LIBRARY>SKETCHCOLOR.;1)
:EDIT-BY rmk
:PREVIOUS-DATE " 9-Jan-87 16:47:16" {WMEDLEY}<lispusers>SKETCHCOLOR.;1)
(* "
Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT SKETCHCOLORCOMS)
@@ -75,25 +71,30 @@ Copyright (c) 1985, 1987 by Xerox Corporation. All rights reserved.
)
(RPAQQ SKETCHINCOLORFLG T)
(FILESLOAD COLOR STYLESHEET)
(PUTPROPS \FILLCIRCLE.DISPLAY READVICE [NIL (BEFORE NIL (COND ((LISTP TEXTURE)
(COND ((TEXTUREP (CAR TEXTURE))
(SETQ TEXTURE (CAR TEXTURE)))
(T (SETQ TEXTURE
(TEXTUREOFCOLOR
(CADR TEXTURE])
[XCL:REINSTALL-ADVICE '\FILLCIRCLE.DISPLAY :BEFORE '((:LAST (COND
((LISTP TEXTURE)
(COND
((TEXTUREP (CAR TEXTURE))
(SETQ TEXTURE (CAR TEXTURE)))
(T (SETQ TEXTURE
(TEXTUREOFCOLOR (CADR TEXTURE]
[XCL:REINSTALL-ADVICE '\POLYSHADE.DISPLAY :BEFORE '((:LAST (COND
((LISTP FILL.SHADE)
(COND
((TEXTUREP (CAR FILL.SHADE))
(SETQ FILL.SHADE (CAR FILL.SHADE))
)
(T (SETQ FILL.SHADE
(TEXTUREOFCOLOR (CADR
FILL.SHADE
]
(PUTPROPS \POLYSHADE.DISPLAY READVICE [NIL (BEFORE NIL (COND ((LISTP FILL.SHADE)
(COND ((TEXTUREP (CAR FILL.SHADE))
(SETQ FILL.SHADE (CAR FILL.SHADE
)))
(T (SETQ FILL.SHADE
(TEXTUREOFCOLOR
(CADR FILL.SHADE])
(READVISE \FILLCIRCLE.DISPLAY \POLYSHADE.DISPLAY)
(PUTPROPS SKETCHCOLOR COPYRIGHT ("Xerox Corporation" 1985 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (771 3368 (COLORTEXTURETEST 781 . 2128) (LEVELTEXTURE 2130 . 2662) (PRIMARYTEXTURE 2664
. 3366)))))
(FILEMAP (NIL (547 3144 (COLORTEXTURETEST 557 . 1904) (LEVELTEXTURE 1906 . 2438) (PRIMARYTEXTURE 2440
. 3142)))))
STOP

View File

@@ -1,16 +1,18 @@
(DEFINE-FILE-INFO §READTABLE "INTERLISP" §PACKAGE "INTERLISP")
(FILECREATED "17-Mar-87 17:03:54" {DSK}<XAVIER>TRANSOR.;16 44778
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS TRANSORCOMS)
(FNS PRECH1 TRANSOUT)
(FILECREATED "18-Feb-2026 21:57:19" {WMEDLEY}<lispusers>TRANSOR.;2 43458
previous date%: "17-Mar-87 17:00:04" {DSK}<XAVIER>TRANSOR.;15)
:EDIT-BY rmk
:CHANGES-TO (VARS TRANSORCOMS)
:PREVIOUS-DATE "17-Mar-87 17:03:54" {WMEDLEY}<lispusers>TRANSOR.;1)
(PRETTYCOMPRINT TRANSORCOMS)
(RPAQQ TRANSORCOMS
((FNS TRANSOR TRANSOR-PROCEED TRANSORFORM TRANSORFNS TRANSFORM TRANSIT TRANXT TRANSEXIT
(RPAQQ TRANSORCOMS
[(FNS TRANSOR TRANSOR-PROCEED TRANSORFORM TRANSORFNS TRANSFORM TRANSIT TRANXT TRANSEXIT
KEEPLIST TRANSERR TRANSOUT PPASS1 TRANSLIST TRANSLIST1 PREMTEXT WACHADOON PRECH PRECH1
PRECH2 RETAIL LNC PRESCAN)
TRANSORMACROS TRANSOREMARKS TRANSORGLOBALS
@@ -18,8 +20,10 @@
(TESTRAN)
(USERMACROS (APPEND TRANSORMACROS USERMACROS))
(GLOBALVARS (APPEND TRANSORGLOBALS GLOBALVARS))
(EDITCOMSA (UNION '(NLAM NLAMIT DOTHESE DOTHIS XFORMER CONTINUE) EDITCOMSA))
(EDITCOMSL (UNION '(REMARK) EDITCOMSL))
(EDITCOMSA (UNION '(NLAM NLAMIT DOTHESE DOTHIS XFORMER CONTINUE)
EDITCOMSA))
(EDITCOMSL (UNION '(REMARK)
EDITCOMSL))
(TRANSITCONSES '(ORR NIL XFORMER))
(PRESCARRAY (ARRAY 127 127)))
(INITVARS (NLISTPCOMS)
@@ -36,10 +40,9 @@
(BLKLIBRARY TAILP MEMB LAST LENGTH ASSOC GETP))
(NIL PRESCAN (GLOBALVARS PRESCARRAY)))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
(NLAML TRANSERR KEEPLIST
(NLAML TRANSERR KEEPLIST
TRANSOR-PROCEED)
(LAMA)))
(EDITHIST TRANSOR)))
(LAMA])
(DEFINEQ
(TRANSOR
@@ -861,52 +864,49 @@ TRANSOR made a translation error: " T)
(RETURN (CLOSEF OUTF)))))
)
(RPAQQ TRANSORMACROS ((REMARK (TXT)
(E (KEEPLIST TXT)
T))
(NLAM NIL (E (SETQQ WHERETOGONEXT NLAMIT)
T))
[NLAMIT NIL (ORR NX !NX ((E (TRANSEXIT]
(DOTHESE NIL (E (TRANSOR-PROCEED DOTHESE)
T)
NLAM)
(DOTHIS NIL (E (TRANSOR-PROCEED DOTHIS)
T)
NLAM)
(XFORMER NIL (E (TRANSERR TRANSFORMATIONERROR "FAULTY TRANSFORMATION"
(CURRENTFORM CURRENTCOMS))
T))))
(RPAQQ TRANSORMACROS
((REMARK (TXT)
(E (KEEPLIST TXT)
T))
(NLAM NIL (E (SETQQ WHERETOGONEXT NLAMIT)
T))
[NLAMIT NIL (ORR NX !NX ((E (TRANSEXIT]
(DOTHESE NIL (E (TRANSOR-PROCEED DOTHESE)
T)
NLAM)
(DOTHIS NIL (E (TRANSOR-PROCEED DOTHIS)
T)
NLAM)
(XFORMER NIL (E (TRANSERR TRANSFORMATIONERROR "FAULTY TRANSFORMATION" (CURRENTFORM
CURRENTCOMS))
T))))
(RPAQQ TRANSOREMARKS ((TRANSFORMATIONERROR (* The TRANSFORMATIONS specified for this form failed to
work properly. The TTY message %'FAULTY TRANSFORMATION'
was printed, any commands remaining in the
transformation after the erroneous one were skipped,
and translation continued as if the transformation had
been normally completed. The user should treat the
translated form with caution and amend his
transformation to avoid future problems.))
(TRANSERROR (* TRANSOR got confused at this point. The TTY message %'SHOW JIM
GOODWIN' was printed and translation continued with the next
form, but the user should treat the compromised area of code
with caution.))
(BLAMBDA1 (* Non-atomic CAR of form, but not an open lambda. Either a
parenthesis error or computed CAR of form. Computed CAR of form is
no longer legal in BBN-LISP; APPLY* is used instead. If computed
CAR of form was intended, the translation to APPLY* will run ok.
See manual for discussion of APPLY*.))
(BLAMBDA2 (* Open LAMBDA with wrong number of args. What can it mean?))
(BLAMBDA3 (* Lambda-expression without forms. What can it mean?))
(ILLCAR (* Illegal data-type encountered as CAR of form Expression treated as
list of forms.))
(TAILP/DOTHIS (* When the transormacro DOTHIS is executed at a TAILP position,
TRANSOR does a 1 command first, assuming that the current
position is a list of forms and CAR of it is the form
intended. The user should make sure that this is what was
intended by the TRANSFORMATIONS which called DOTHIS, i.e. the
TRANSFORMATIONS for the form containing this one.))))
(RPAQQ TRANSOREMARKS
((TRANSFORMATIONERROR (* The TRANSFORMATIONS specified for this form failed to work properly.
The TTY message %'FAULTY TRANSFORMATION' was printed, any commands
remaining in the transformation after the erroneous one were skipped,
and translation continued as if the transformation had been normally
completed. The user should treat the translated form with caution and
amend his transformation to avoid future problems.))
(TRANSERROR (* TRANSOR got confused at this point. The TTY message %'SHOW JIM GOODWIN' was
printed and translation continued with the next form, but the user should
treat the compromised area of code with caution.))
(BLAMBDA1 (* Non-atomic CAR of form, but not an open lambda. Either a parenthesis error or
computed CAR of form. Computed CAR of form is no longer legal in BBN-LISP;
APPLY* is used instead. If computed CAR of form was intended, the translation to
APPLY* will run ok. See manual for discussion of APPLY*.))
(BLAMBDA2 (* Open LAMBDA with wrong number of args. What can it mean?))
(BLAMBDA3 (* Lambda-expression without forms. What can it mean?))
(ILLCAR (* Illegal data-type encountered as CAR of form Expression treated as list of forms.)
)
(TAILP/DOTHIS (* When the transormacro DOTHIS is executed at a TAILP position, TRANSOR does a
1 command first, assuming that the current position is a list of forms and
CAR of it is the form intended. The user should make sure that this is what
was intended by the TRANSFORMATIONS which called DOTHIS, i.e. the
TRANSFORMATIONS for the form containing this one.))))
(RPAQQ TRANSORGLOBALS (USERNOTES USERNOTES TESTFORM TESTFORM TRANSFORMATIONS TRANSFORMATIONS
XFORMSFNS XFORMSVARS XFORMSVARS DUMPFILE TRANSFORMATIONS TRANSFORMATIONS
XFORMSFNS XFORMSVARS XFORMSVARS DUMPFILE TRANSFORMATIONS TRANSFORMATIONS
TRANSFORMATIONS TRANSFORMATIONS))
(RPAQQ MAXLOOP 1530)
@@ -917,9 +917,11 @@ TRANSOR made a translation error: " T)
(RPAQ GLOBALVARS (APPEND TRANSORGLOBALS GLOBALVARS))
(RPAQ EDITCOMSA (UNION '(NLAM NLAMIT DOTHESE DOTHIS XFORMER CONTINUE) EDITCOMSA))
(RPAQ EDITCOMSA (UNION '(NLAM NLAMIT DOTHESE DOTHIS XFORMER CONTINUE)
EDITCOMSA))
(RPAQ EDITCOMSL (UNION '(REMARK) EDITCOMSL))
(RPAQ EDITCOMSL (UNION '(REMARK)
EDITCOMSL))
(RPAQQ TRANSITCONSES (ORR NIL XFORMER))
@@ -932,7 +934,7 @@ TRANSOR made a translation error: " T)
(RPAQ? TRANSOUTREADTABLE FILERDTBL)
(DECLARE%: DOEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(PUTPROPS TAILP BLKLIBRARYDEF [LAMBDA (.BLKVAR.X .BLKVAR.Y)
(PUTPROPS TAILP BLKLIBRARYDEF [LAMBDA (.BLKVAR.X .BLKVAR.Y)
(* True if .BLKVAR.X is A tail of .BLKVAR.Y .BLKVAR.X and
.BLKVAR.Y non-null.)
(* Included with editor for block compilation purposes.)
@@ -944,15 +946,19 @@ TRANSOR made a translation error: " T)
(GO LP])
)
(PUTPROPS TRANSOR FILEGROUP (TRANSOR TSET))
(PUTPROPS TRANSOR FILEGROUP (TRANSOR TSET))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(BLOCK%: PRECHBLOCK PRECH PRECH1 PRECH2 RETAIL LNC (ENTRIES PRECH)
(BLKLIBRARY TAILP MEMB LAST LENGTH ASSOC GETP))
(BLOCK%: TRANSITBLOCK TRANSIT WACHADOON (ENTRIES TRANSIT WACHADOON)
(GLOBALVARS WACHADID WHENTODOIT TRANSITCONSES LAMBDACOMS NLISTPCOMS)
(BLKLIBRARY TAILP MEMB LAST LENGTH ASSOC GETP))
(BLOCK%: TRANXTBLOCK TRANXT (ENTRIES TRANXT)
(BLKLIBRARY TAILP MEMB LAST LENGTH ASSOC GETP))
(BLOCK%: NIL PRESCAN (GLOBALVARS PRESCARRAY))
)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
@@ -963,23 +969,11 @@ TRANSOR made a translation error: " T)
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(ADDTOVAR EDITHISTALIST (TRANSOR (" 5-Feb-87 16:18:06" DJVB {DSK}<XAVIER>TRANSOR.;11 (TRANSOR)
(FIXED TO WORK WITH NEW FILE RULES IN LYRIC))
(" 6-Feb-87 15:24:20" DJVB {DSK}<XAVIER>TRANSOR.;12 (TRANSOR))
(" 6-Mar-87 14:41:26" DJVB {DSK}<XAVIER>TRANSOR.;13
(TRANSOR TRANSOR-PROCEED TRANSORFORM TRANSORFNS TRANSFORM
RETAIL))
("17-Mar-87 17:01:53" DJVB {DSK}<XAVIER>TRANSOR.;15 (PRECH1 TRANSOUT)
(ADDED SPLIT READ/WRITE READTABLES AND PP FOR DEFUN))))
)
(PUTPROPS TRANSOR COPYRIGHT (NONE))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2231 38324 (TRANSOR 2241 . 6284) (TRANSOR-PROCEED 6286 . 9093) (TRANSORFORM 9095 . 9527
) (TRANSORFNS 9529 . 10225) (TRANSFORM 10227 . 11965) (TRANSIT 11967 . 14735) (TRANXT 14737 . 17950) (
TRANSEXIT 17952 . 18262) (KEEPLIST 18264 . 19224) (TRANSERR 19226 . 19990) (TRANSOUT 19992 . 22436) (
PPASS1 22438 . 22679) (TRANSLIST 22681 . 23700) (TRANSLIST1 23702 . 23934) (PREMTEXT 23936 . 24641) (
WACHADOON 24643 . 25114) (PRECH 25116 . 25609) (PRECH1 25611 . 27779) (PRECH2 27781 . 28727) (RETAIL
28729 . 29976) (LNC 29978 . 30841) (PRESCAN 30843 . 38322)))))
(FILEMAP (NIL (2262 38355 (TRANSOR 2272 . 6315) (TRANSOR-PROCEED 6317 . 9124) (TRANSORFORM 9126 . 9558
) (TRANSORFNS 9560 . 10256) (TRANSFORM 10258 . 11996) (TRANSIT 11998 . 14766) (TRANXT 14768 . 17981) (
TRANSEXIT 17983 . 18293) (KEEPLIST 18295 . 19255) (TRANSERR 19257 . 20021) (TRANSOUT 20023 . 22467) (
PPASS1 22469 . 22710) (TRANSLIST 22712 . 23731) (TRANSLIST1 23733 . 23965) (PREMTEXT 23967 . 24672) (
WACHADOON 24674 . 25145) (PRECH 25147 . 25640) (PRECH1 25642 . 27810) (PRECH2 27812 . 28758) (RETAIL
28760 . 30007) (LNC 30009 . 30872) (PRESCAN 30874 . 38353)))))
STOP

View File

@@ -1,25 +1,19 @@
(DEFINE-FILE-INFO §PACKAGE "XCL-USER" §READTABLE "XCL")
(IL:FILECREATED "13-Apr-87 17:38:17" IL:{DSK}<XAVIER>LOADTRAN.\;9 2045
(DEFINE-FILE-INFO PACKAGE "XCL-USER" READTABLE "XCL" BASE 10)
IL:|changes| IL:|to:| (IL:VARS IL:LOADTRANCOMS STOP)
(IL:FUNCTIONS MYLOAD I.S.OPR PRETTYCOMPRINT SETTEMPLATE DEFINE-FILE-INFO
)
(IL:FNS PRETTYCOMPRINT SETTEMPLATE)
(IL:FILECREATED "18-Feb-2026 22:58:35" IL:|{WMEDLEY}<lispusers>TRANSOR-LOADTRAN.;2| 1561
IL:|previous| IL:|date:| " 6-Apr-87 16:57:48" IL:{DSK}<XAVIER>LOADTRAN.\;1)
:EDIT-BY IL:|rmk|)
; Copyright (c) 1987 by System Development Corp.. All rights reserved.
(IL:PRETTYCOMPRINT IL:TRANSOR-LOADTRANCOMS)
(IL:PRETTYCOMPRINT IL:LOADTRANCOMS)
(IL:RPAQQ IL:LOADTRANCOMS ((IL:VARS STOP)
(IL:FNS PRETTYCOMPRINT SETTEMPLATE)
(IL:FUNCTIONS DEFINE-FILE-INFO I.S.OPR MYLOAD)
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY
IL:COMPILERVARS (IL:ADDVARS (IL:NLAMA PRETTYCOMPRINT)
(IL:NLAML)
(IL:LAMA SETTEMPLATE)))))
(IL:RPAQQ IL:TRANSOR-LOADTRANCOMS ((IL:VARS STOP)
(IL:FNS PRETTYCOMPRINT SETTEMPLATE)
(IL:FUNCTIONS DEFINE-FILE-INFO I.S.OPR MYLOAD)
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY
IL:COMPILERVARS (IL:ADDVARS (IL:NLAMA PRETTYCOMPRINT)
(IL:NLAML)
(IL:LAMA SETTEMPLATE)))))
(IL:RPAQQ STOP STOP)
(IL:DEFINEQ
@@ -33,17 +27,17 @@
(BLOCK SETTEMPLATE (NILL))))
)
(DEFUN DEFINE-FILE-INFO (&REST ARGS) (NILL))
(DEFUN DEFINE-FILE-INFO (&REST ARGS)
(NILL))
(DEFUN I.S.OPR (X)
(NILL))
(DEFUN I.S.OPR (X) (NILL))
(DEFUN MYLOAD (FILE) (LET ((FILE (OPEN FILE :DIRECTION :INPUT)))
(UNWIND-PROTECT (IL:\\CML-LOAD FILE T *TERMINAL-IO* (FIND-PACKAGE
"XCL-USER"))
(CLOSE FILE))))
(DEFUN MYLOAD (FILE)
(LET ((FILE (OPEN FILE :DIRECTION :INPUT)))
(UNWIND-PROTECT
(IL:\\CML-LOAD FILE T *TERMINAL-IO* (FIND-PACKAGE "XCL-USER"))
(CLOSE FILE))))
(IL:DECLARE\: IL:DONTEVAL@LOAD IL:DOEVAL@COMPILE IL:DONTCOPY IL:COMPILERVARS
(IL:ADDTOVAR IL:NLAMA PRETTYCOMPRINT)
@@ -52,7 +46,7 @@
(IL:ADDTOVAR IL:LAMA SETTEMPLATE)
)
(IL:PUTPROPS IL:LOADTRAN IL:COPYRIGHT ("System Development Corp." 1987))
(IL:DECLARE\: IL:DONTCOPY
(IL:FILEMAP (NIL (1134 1357 (PRETTYCOMPRINT 1147 . 1283) (SETTEMPLATE 1285 . 1355)))))
(IL:FILEMAP (NIL (830 1053 (PRETTYCOMPRINT 843 . 979) (SETTEMPLATE 981 . 1051)) (1055 1106 (
DEFINE-FILE-INFO 1055 . 1106)) (1108 1141 (I.S.OPR 1108 . 1141)) (1143 1341 (MYLOAD 1143 . 1341)))))
IL:STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,20 +1,15 @@
(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10)
(FILECREATED " 7-Dec-86 17:26:23" {ERIS}<LISPUSERS>LISPCORE>UNBOXEDOPS.;7 12906
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (OPTIMIZERS UFREMAINDER2 UFREMAINDER)
(FNS UFREMAINDER)
(VARS UNBOXEDOPSCOMS)
(FILECREATED "18-Feb-2026 16:17:02" {WMEDLEY}<lispusers>UNBOXEDOPS.;2 10856
previous date%: " 3-Nov-86 20:30:24" {ERIS}<LISPUSERS>LISPCORE>UNBOXEDOPS.;6)
:EDIT-BY rmk
:PREVIOUS-DATE " 7-Dec-86 17:26:23" {WMEDLEY}<lispusers>UNBOXEDOPS.;1)
(* "
Copyright (c) 1986 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT UNBOXEDOPSCOMS)
(RPAQQ UNBOXEDOPSCOMS
(RPAQQ UNBOXEDOPSCOMS
[(FNS UFABS UFEQP UFGEQ UFGREATERP UFIX UFLEQ UFLESSP UFMAX UFMIN UFMINUS UFREMAINDER)
(OPTIMIZERS UFABS UFABS1 UFEQP UFEQP2 UFGEQ UFGEQ2 UFGREATERP UFGREATERP2 UFIX UFIX1 UFLEQ
UFLEQ2 UFLESSP UFLESSP2 UFMAX UFMAX2 UFMIN UFMIN2 UFMINUS UFMINUS1 UFREMAINDER)
@@ -81,178 +76,168 @@ Copyright (c) 1986 by Xerox Corporation. All rights reserved.
FY])
)
(DEFOPTIMIZER UFABS (&OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS &WHOLE ORIGINAL) (if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T
"Illegal args to UFABS" %,
%, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFABS1 ARG1))
(DEFOPTIMIZER UFABS (&OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS &WHOLE ORIGINAL)
(if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFABS" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFABS1 ARG1))
(DEFOPTIMIZER UFABS1 (X)
`[\FLOATBOX ((OPCODES UBFLOAT1 2)
(\FLOATUNBOX ,X])
(DEFOPTIMIZER UFABS1 (X) `[\FLOATBOX ((OPCODES UBFLOAT1 2)
(\FLOATUNBOX ,X])
(DEFOPTIMIZER UFEQP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(DEFOPTIMIZER UFEQP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFEQP" %, %,
ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFEQP2 ARG1 ARG2))
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFEQP" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFEQP2 ARG1 ARG2))
(DEFOPTIMIZER UFEQP2 (X Y)
`(EQ (\FLOATUNBOX (FDIFFERENCE ,X ,Y))
NIL))
(DEFOPTIMIZER UFEQP2 (X Y) `(EQ (\FLOATUNBOX (FDIFFERENCE ,X ,Y))
NIL))
(DEFOPTIMIZER UFGEQ (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(DEFOPTIMIZER UFGEQ (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFGEQ" %, %,
ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFGEQ2 ARG1 ARG2))
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFGEQ" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFGEQ2 ARG1 ARG2))
(DEFOPTIMIZER UFGEQ2 (X Y)
`[NOT ((OPCODES SWAP UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFGEQ2 (X Y) `[NOT ((OPCODES SWAP UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFGREATERP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(DEFOPTIMIZER UFGREATERP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFGREATERP" %,
%, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFGREATERP2 ARG1 ARG2))
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFGREATERP" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFGREATERP2 ARG1 ARG2))
(DEFOPTIMIZER UFGREATERP2 (X Y)
`((OPCODES UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y)))
(DEFOPTIMIZER UFGREATERP2 (X Y) `((OPCODES UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y)))
(DEFOPTIMIZER UFIX (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFIX" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFIX1 ARG1))
(DEFOPTIMIZER UFIX1 (X)
`((OPCODES UBFLOAT1 4)
(\FLOATUNBOX ,X)))
(DEFOPTIMIZER UFIX (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFIX" %, %, ORIGINAL
T)
(PRINTOUT T "************" T))
(LIST 'UFIX1 ARG1))
(DEFOPTIMIZER UFIX1 (X) `((OPCODES UBFLOAT1 4)
(\FLOATUNBOX ,X)))
(DEFOPTIMIZER UFLEQ (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(DEFOPTIMIZER UFLEQ (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFLEQ" %, %,
ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFLEQ2 ARG1 ARG2))
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFLEQ" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFLEQ2 ARG1 ARG2))
(DEFOPTIMIZER UFLEQ2 (X Y)
`[NOT ((OPCODES UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFLEQ2 (X Y) `[NOT ((OPCODES UBFLOAT2 5)
(DEFOPTIMIZER UFLESSP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFLESSP" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFLESSP2 ARG1 ARG2))
(DEFOPTIMIZER UFLESSP2 (X Y)
`((OPCODES SWAP UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y)))
(DEFOPTIMIZER UFMAX (&OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS)
(if (NOT ARG1GIVEN)
then 'MIN.FLOAT
elseif (NOT ARG2GIVEN)
then `(FLOAT %, ARG1)
elseif RESTARGS
then `(UFMAX (UFMAX2 %, ARG1 %, ARG2)
., RESTARGS)
else (LIST 'UFMAX2 ARG1 ARG2)))
(DEFOPTIMIZER UFMAX2 (X Y)
`[\FLOATBOX ((OPCODES UBFLOAT2 6)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFLESSP (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
(NOT ARG2GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFLESSP" %, %,
ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFLESSP2 ARG1 ARG2))
(DEFOPTIMIZER UFLESSP2 (X Y) `((OPCODES SWAP UBFLOAT2 5)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y)))
(DEFOPTIMIZER UFMAX (&OPTIONAL (ARG1 NIL ARG1GIVEN)
(DEFOPTIMIZER UFMIN (&OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (NOT ARG1GIVEN)
then 'MIN.FLOAT
elseif (NOT ARG2GIVEN)
then `(FLOAT %, ARG1)
elseif RESTARGS
then `(UFMAX (UFMAX2 %, ARG1 %, ARG2)
., RESTARGS)
else (LIST 'UFMAX2 ARG1 ARG2)))
&REST RESTARGS)
(if (NOT ARG1GIVEN)
then 'MAX.FLOAT
elseif (NOT ARG2GIVEN)
then `(FLOAT %, ARG1)
elseif RESTARGS
then `(UFMIN (UFMIN2 %, ARG1 %, ARG2)
., RESTARGS)
else (LIST 'UFMIN2 ARG1 ARG2)))
(DEFOPTIMIZER UFMIN2 (X Y)
`[\FLOATBOX ((OPCODES UBFLOAT2 7)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFMAX2 (X Y) `[\FLOATBOX ((OPCODES UBFLOAT2 6)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFMINUS (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS)
(if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFMINUS" %, %, ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFMINUS1 ARG1))
(DEFOPTIMIZER UFMINUS1 (X)
`[\FLOATBOX ((OPCODES UBFLOAT1 3)
(\FLOATUNBOX ,X])
(DEFOPTIMIZER UFMIN (&OPTIONAL (ARG1 NIL ARG1GIVEN)
(ARG2 NIL ARG2GIVEN)
&REST RESTARGS) (if (NOT ARG1GIVEN)
then 'MAX.FLOAT
elseif (NOT ARG2GIVEN)
then `(FLOAT %, ARG1)
elseif RESTARGS
then `(UFMIN (UFMIN2 %, ARG1 %, ARG2)
., RESTARGS)
else (LIST 'UFMIN2 ARG1 ARG2)))
(DEFOPTIMIZER UFREMAINDER (X Y)
(CL:IF (AND (OR (CL:CONSTANTP X)
(CL:SYMBOLP X))
(OR (CL:CONSTANTP Y)
(CL:SYMBOLP Y)))
`(FDIFFERENCE ,X (FTIMES [FLOAT (UFIX (FQUOTIENT ,X ,Y]
,Y))
'COMPILER:PASS))
(DEFOPTIMIZER UFMIN2 (X Y) `[\FLOATBOX ((OPCODES UBFLOAT2 7)
(\FLOATUNBOX ,X)
(\FLOATUNBOX ,Y])
(DEFOPTIMIZER UFMINUS (&WHOLE ORIGINAL &OPTIONAL (ARG1 NIL ARG1GIVEN)
&REST RESTARGS) (if (OR (NOT ARG1GIVEN)
RESTARGS)
then (PRINTOUT T "************" T)
(PRINTOUT T "Illegal args to UFMINUS" %, %,
ORIGINAL T)
(PRINTOUT T "************" T))
(LIST 'UFMINUS1 ARG1))
(DEFOPTIMIZER UFMINUS1 (X) `[\FLOATBOX ((OPCODES UBFLOAT1 3)
(\FLOATUNBOX ,X])
(DEFOPTIMIZER UFREMAINDER (X Y) (CL:IF (AND (OR (CL:CONSTANTP X)
(CL:SYMBOLP X))
(OR (CL:CONSTANTP Y)
(CL:SYMBOLP Y)))
`(FDIFFERENCE ,X (FTIMES [FLOAT (UFIX (FQUOTIENT ,X
,Y]
,Y))
'COMPILER:PASS))
(PUTPROPS UNBOXEDOPS FILETYPE CL:COMPILE-FILE)
(PUTPROPS UNBOXEDOPS FILETYPE CL:COMPILE-FILE)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
(DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -267,9 +252,8 @@ Copyright (c) 1986 by Xerox Corporation. All rights reserved.
(ADDTOVAR LAMA UFMIN UFMAX)
)
(PUTPROPS UNBOXEDOPS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1185 3385 (UFABS 1195 . 1316) (UFEQP 1318 . 1441) (UFGEQ 1443 . 1565) (UFGREATERP 1567
. 1700) (UFIX 1702 . 1821) (UFLEQ 1823 . 1945) (UFLESSP 1947 . 2074) (UFMAX 2076 . 2478) (UFMIN 2480
. 2879) (UFMINUS 2881 . 3006) (UFREMAINDER 3008 . 3383)))))
(FILEMAP (NIL (983 3183 (UFABS 993 . 1114) (UFEQP 1116 . 1239) (UFGEQ 1241 . 1363) (UFGREATERP 1365 .
1498) (UFIX 1500 . 1619) (UFLEQ 1621 . 1743) (UFLESSP 1745 . 1872) (UFMAX 1874 . 2276) (UFMIN 2278 .
2677) (UFMINUS 2679 . 2804) (UFREMAINDER 2806 . 3181)))))
STOP

BIN
lispusers/UNBOXEDOPS.DFASL Normal file

Binary file not shown.

View File

@@ -1,22 +1,21 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 :FORMAT :UTF-8)
(FILECREATED "27-Jan-2025 08:49:34" {WMEDLEY}<lispusers>VERSIONDEFS.;12 5880
(FILECREATED " 7-Mar-2026 22:55:43" {WMEDLEY}<lispusers>VERSIONDEFS.;18 6534
:EDIT-BY rmk
:CHANGES-TO (FNS GETVINFO)
:PREVIOUS-DATE "12-Dec-2024 15:07:45" {WMEDLEY}<lispusers>VERSIONDEFS.;11)
:PREVIOUS-DATE " 6-Mar-2026 22:47:25" {WMEDLEY}<lispusers>VERSIONDEFS.;17)
(PRETTYCOMPRINT VERSIONDEFSCOMS)
(RPAQQ VERSIONDEFSCOMS [(FNS FINDFILEVERSION GETVINFO VERSIONP)
(FNS EDV DFV)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDVARS (NLAMA DFV EDV)
(NLAML)
(LAMA])
(RPAQQ VERSIONDEFSCOMS
[(FNS FINDFILEVERSION GETVINFO VERSIONP)
(FNS EDV DFV)
(PROP ARGNAMES EDV DFV)
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA DFV EDV)
(NLAML)
(LAMA])
(DEFINEQ
(FINDFILEVERSION
@@ -119,16 +118,26 @@
(CAR VINFO])
(DFV
[NLAMBDA ARGS (* ; "Edited 6-Dec-2024 21:29 by rmk")
[NLAMBDA ARGS (* ; "Edited 6-Mar-2026 22:42 by rmk")
(* ; "Edited 6-Dec-2024 21:29 by rmk")
(* ; "Edited 2-Dec-2024 00:08 by rmk")
(SETQ ARGS (MKLIST ARGS))
(APPLY (FUNCTION EDV)
(LIST (POP ARGS)
NIL
(POP ARGS)
(POP ARGS)
(POP ARGS])
(LET ((NAME (POP ARGS))) (* ; "If FNS and FUNCTIONS, show both")
(CL:WHEN (HASDEF NAME 'FUNCTIONS '?)
(APPLY (FUNCTION EDV)
(LIST NAME 'FUNCTIONS (POP ARGS)
(POP ARGS)
(POP ARGS))))
(CL:WHEN (HASDEF NAME 'FNS '?)
(APPLY (FUNCTION EDV)
(LIST NAME 'FNS (POP ARGS)
(POP ARGS)
(POP ARGS))))])
)
(PUTPROPS EDV ARGNAMES (NAME TYPE FILE VERSION DIRLST . VINFO))
(PUTPROPS DFV ARGNAMES (NAME FILE VERSION DIRLST . VINFO))
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDTOVAR NLAMA DFV EDV)
@@ -138,6 +147,6 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (671 4570 (FINDFILEVERSION 681 . 2128) (GETVINFO 2130 . 4253) (VERSIONP 4255 . 4568)) (
4571 5717 (EDV 4581 . 5281) (DFV 5283 . 5715)))))
(FILEMAP (NIL (706 4605 (FINDFILEVERSION 716 . 2163) (GETVINFO 2165 . 4288) (VERSIONP 4290 . 4603)) (
4606 6230 (EDV 4616 . 5316) (DFV 5318 . 6228)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,19 +1,17 @@
(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "XCL" §BASE 10)
(filecreated "18-Dec-86 19:03:25" {eris}<lispcore>internal>library>whocalls.\;2 4500
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|changes| |to:| (fns distribute.callinfo distribute-call-info-for-symbol)
(vars whocallscoms)
(FILECREATED "18-Feb-2026 16:08:45" |{WMEDLEY}<lispusers>WHOCALLS.;2| 4272
|previous| |date:| " 7-Nov-86 02:47:11" {eris}<lispusers>lispcore>whocalls.\;2)
:EDIT-BY |rmk|
:PREVIOUS-DATE "18-Dec-86 19:03:25" |{WMEDLEY}<lispusers>WHOCALLS.;1|)
; Copyright (c) 1986 by Xerox Corporation. All rights reserved.
(PRETTYCOMPRINT WHOCALLSCOMS)
(prettycomprint whocallscoms)
(rpaqq whocallscoms ((fns whocalls whocalls1 distribute.callinfo distribute-call-info-for-symbol)
(prop proptype calledby usedfreeby usedglobalby boundby)))
(defineq
(RPAQQ WHOCALLSCOMS ((FNS WHOCALLS WHOCALLS1 DISTRIBUTE.CALLINFO DISTRIBUTE-CALL-INFO-FOR-SYMBOL)
(PROP PROPTYPE CALLEDBY USEDFREEBY USEDGLOBALBY BOUNDBY)))
(DEFINEQ
(WHOCALLS
(LAMBDA (CALLEE USAGE)
@@ -78,15 +76,14 @@
x))))))
)
(putprops calledby proptype ignore)
(PUTPROPS CALLEDBY PROPTYPE IGNORE)
(putprops usedfreeby proptype ignore)
(PUTPROPS USEDFREEBY PROPTYPE IGNORE)
(putprops usedglobalby proptype ignore)
(PUTPROPS USEDGLOBALBY PROPTYPE IGNORE)
(putprops boundby proptype ignore)
(putprops whocalls copyright ("Xerox Corporation" 1986))
(declare\: dontcopy
(filemap (nil (653 4251 (whocalls 663 . 2057) (whocalls1 2059 . 3191) (distribute.callinfo 3193 . 3419
) (distribute-call-info-for-symbol 3421 . 4249)))))
stop
(PUTPROPS BOUNDBY PROPTYPE IGNORE)
(DECLARE\: DONTCOPY
(FILEMAP (NIL (466 4064 (WHOCALLS 476 . 1870) (WHOCALLS1 1872 . 3004) (DISTRIBUTE.CALLINFO 3006 . 3232
) (DISTRIBUTE-CALL-INFO-FOR-SYMBOL 3234 . 4062)))))
STOP

Binary file not shown.

View File

@@ -1,14 +1,11 @@
(DEFINE-FILE-INFO §PACKAGE "INTERLISP" §READTABLE "INTERLISP" §BASE 10)
(FILECREATED "22-Dec-86 18:42:34" {ERIS}<LISPUSERS>LISPCORE>COMPILEBANG.;3 3465
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS COMPILE!)
(FILECREATED "18-Feb-2026 16:23:37" {WMEDLEY}<lispusers>compilebang.;2 3232
previous date%: "18-Nov-86 22:23:43" {ERIS}<LISPUSERS>LISPCORE>COMPILEBANG.;2)
:EDIT-BY rmk
:PREVIOUS-DATE "22-Dec-86 18:42:34" {WMEDLEY}<lispusers>compilebang.;1)
(* "
Copyright (c) 1982, 1983, 1984, 1986 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT COMPILEBANGCOMS)
@@ -63,23 +60,22 @@ Copyright (c) 1982, 1983, 1984, 1986 by Xerox Corporation. All rights reserved.
NIL NIL T))
(T C))))
(ADDTOVAR USERMACROS [C NIL (ORR (UP 1)
NIL)
(ORR ((E (COMPILE! (OR (LISTP (%##))
(%## !0))
T T T)))
((E 'C?])
(ADDTOVAR USERMACROS
[C NIL (ORR (UP 1)
NIL)
(ORR ((E (COMPILE! (OR (LISTP (%##))
(%## !0))
T T T)))
((E 'C?])
(ADDTOVAR EDITCOMSA C)
(DEFCOMMAND (C :EVAL) (&REST LISPXLINE) (COND
(LISPXLINE (COMPILE! (CAR LISPXLINE)
(DEFCOMMAND (C :EVAL) (&REST LISPXLINE) (COND
(LISPXLINE (COMPILE! (CAR LISPXLINE)
NIL NIL T))
(T C)))
(PUTPROPS COMPILEBANG FILETYPE CL:COMPILE-FILE)
(PUTPROPS COMPILEBANG COPYRIGHT ("Xerox Corporation" 1982 1983 1984 1986))
(PUTPROPS COMPILEBANG FILETYPE CL:COMPILE-FILE)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (622 2567 (COMPILE! 632 . 2565)))))
(FILEMAP (NIL (506 2451 (COMPILE! 516 . 2449)))))
STOP

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,503 +0,0 @@
;;;-*-Mode:LISP; Package:(CLOS (LISP WALKER)); Base:10; Syntax:Common-lisp -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1991 Venue
;;; All rights reserved.
;;; *************************************************************************
;;;
;;; Bootstrapping the meta-braid.
;;;
;;; The code in this file takes the early definitions that have been saved
;;; up and actually builds those class objects. This work is largely driven
;;; off of those class definitions, but the fact that STANDARD-CLASS is the
;;; class of all metaclasses in the braid is built into this code pretty
;;; deeply.
;;;
;;;
(in-package 'clos)
(defun early-class-definition (class-name)
(or (find class-name *early-class-definitions* :key #'ecd-class-name)
(error "~S is not a class in *early-class-definitions*." class-name)))
(defun canonical-slot-name (canonical-slot)
(getf canonical-slot :name))
(defun early-collect-inheritance (class-name)
(declare (values slots cpl default-initargs direct-subclasses))
(let ((cpl (early-collect-cpl class-name)))
(values (early-collect-slots cpl)
cpl
(early-collect-default-initargs cpl)
(gathering1 (collecting)
(dolist (definition *early-class-definitions*)
(when (memq class-name (ecd-superclass-names definition))
(gather1 (ecd-class-name definition))))))))
(defun early-collect-cpl (class-name)
(labels ((walk (c)
(let* ((definition (early-class-definition c))
(supers (ecd-superclass-names definition)))
(cons c
(apply #'append (mapcar #'early-collect-cpl supers))))))
(remove-duplicates (walk class-name) :from-end nil :test #'eq)))
(defun early-collect-slots (cpl)
(let* ((definitions (mapcar #'early-class-definition cpl))
(super-slots (mapcar #'ecd-canonical-slots definitions))
(slots (apply #'append (reverse super-slots))))
(dolist (s1 slots)
(let ((name1 (canonical-slot-name s1)))
(dolist (s2 (cdr (memq s1 slots)))
(when (eq name1 (canonical-slot-name s2))
(error "More than one early class defines a slot with the~%~
name ~S. This can't work because the bootstrap~%~
object system doesn't know how to compute effective~%~
slots."
name1)))))
slots))
(defun early-collect-default-initargs (cpl)
(let ((default-initargs ()))
(dolist (class-name cpl)
(let ((definition (early-class-definition class-name)))
(dolist (option (ecd-other-initargs definition))
(unless (eq (car option) :default-initargs)
(error "The defclass option ~S is not supported by the bootstrap~%~
object system."
(car option)))
(setq default-initargs
(nconc default-initargs (reverse (cdr option)))))))
(reverse default-initargs)))
;;;
;;; bootstrap-get-slot and bootstrap-set-slot are used to access and change
;;; the values of slots during bootstrapping. During bootstrapping, there
;;; are only two kinds of objects whose slots we need to access, CLASSes
;;; and SLOTDs. The first argument to these functions tells whether the
;;; object is a CLASS or a SLOTD.
;;;
;;; Note that the way this works it stores the slot in the same place in
;;; memory that the full object system will expect to find it later. This
;;; is critical to the bootstrapping process, the whole changeover to the
;;; full object system is predicated on this.
;;;
;;; One important point is that the layout of standard classes and standard
;;; slots must be computed the same way in this file as it is by the full
;;; object system later.
;;;
(defun bootstrap-get-slot (type object slot-name)
(let ((index (bootstrap-slot-index type slot-name)))
(svref (std-instance-slots object) index)))
(defun bootstrap-set-slot (type object slot-name new-value)
(let ((index (bootstrap-slot-index type slot-name)))
(setf (svref (std-instance-slots object) index) new-value)))
(defvar *std-class-slots*
(mapcar #'canonical-slot-name
(early-collect-inheritance 'standard-class)))
(defvar *bin-class-slots*
(mapcar #'canonical-slot-name
(early-collect-inheritance 'built-in-class)))
(defvar *std-slotd-slots*
(mapcar #'canonical-slot-name
(early-collect-inheritance 'standard-slot-definition)))
(defun bootstrap-slot-index (type slot-name)
(or (position slot-name (ecase type
(std-class *std-class-slots*)
(bin-class *bin-class-slots*)
(std-slotd *std-slotd-slots*)))
(error "~S not found" slot-name)))
;;;
;;; bootstrap-meta-braid
;;;
;;; This function builds the base metabraid from the early class definitions.
;;;
(defun bootstrap-meta-braid ()
(let* ((std-class-size (length *std-class-slots*))
(std-class (%allocate-instance--class std-class-size))
(std-class-wrapper (make-wrapper std-class))
(built-in-class (%allocate-instance--class std-class-size))
(built-in-class-wrapper (make-wrapper built-in-class))
(direct-slotd (%allocate-instance--class std-class-size))
(effective-slotd (%allocate-instance--class std-class-size))
(direct-slotd-wrapper (make-wrapper direct-slotd))
(effective-slotd-wrapper (make-wrapper effective-slotd)))
;;
;; First, make a class metaobject for each of the early classes. For
;; each metaobject we also set its wrapper. Except for the class T,
;; the wrapper is always that of STANDARD-CLASS.
;;
(dolist (definition *early-class-definitions*)
(let* ((name (ecd-class-name definition))
(meta (ecd-metaclass definition))
(class (case name
(standard-class std-class)
(standard-direct-slot-definition direct-slotd)
(standard-effective-slot-definition effective-slotd)
(built-in-class built-in-class)
(otherwise
(%allocate-instance--class std-class-size)))))
(unless (eq name t)
(inform-type-system-about-class class name))
(setf (std-instance-wrapper class)
(ecase meta
(standard-class std-class-wrapper)
(built-in-class built-in-class-wrapper)))
(setf (find-class name) class)))
;;
;;
;;
(dolist (definition *early-class-definitions*)
(let ((name (ecd-class-name definition))
(source (ecd-source definition))
(direct-supers (ecd-superclass-names definition))
(direct-slots (ecd-canonical-slots definition))
(other-initargs (ecd-other-initargs definition)))
(let ((direct-default-initargs
(getf other-initargs :default-initargs)))
(multiple-value-bind (slots cpl default-initargs direct-subclasses)
(early-collect-inheritance name)
(let* ((class (find-class name))
(wrapper
(cond
((eq class std-class) std-class-wrapper)
((eq class direct-slotd) direct-slotd-wrapper)
((eq class effective-slotd) effective-slotd-wrapper)
((eq class built-in-class) built-in-class-wrapper)
(t (make-wrapper class))))
(proto nil))
(cond ((eq name 't)
(setq *the-wrapper-of-t* wrapper
*the-class-t* class))
((memq name '(standard-object
standard-class
standard-effective-slot-definition))
(set (intern (format nil "*THE-CLASS-~A*" (symbol-name name))
*the-clos-package*)
class)))
(dolist (slot slots)
(unless (eq (getf slot :allocation :instance) :instance)
(error "Slot allocation ~S not supported in bootstrap.")))
(setf (wrapper-instance-slots-layout wrapper)
(mapcar #'canonical-slot-name slots))
(setf (wrapper-class-slots wrapper)
())
(setq proto (%allocate-instance--class (length slots)))
(setf (std-instance-wrapper proto) wrapper)
(setq direct-slots
(bootstrap-make-slot-definitions name direct-slots
direct-slotd-wrapper nil))
(setq slots
(bootstrap-make-slot-definitions name slots
effective-slotd-wrapper t))
(bootstrap-initialize-std-class
class name source
direct-supers direct-subclasses cpl wrapper
direct-slots slots direct-default-initargs default-initargs
proto)
(dolist (slotd direct-slots)
(bootstrap-accessor-definitions
name
(bootstrap-get-slot 'std-slotd slotd 'name)
(bootstrap-get-slot 'std-slotd slotd 'readers)
(bootstrap-get-slot 'std-slotd slotd 'writers))))))))))
(defun bootstrap-accessor-definitions (class-name slot-name readers writers)
(flet ((do-reader-definition (reader)
(add-method
(ensure-generic-function reader)
(make-a-method
'standard-reader-method
()
(list class-name)
(list class-name)
(make-std-reader-method-function slot-name)
"automatically generated reader method"
slot-name)))
(do-writer-definition (writer)
(add-method
(ensure-generic-function writer)
(make-a-method
'standard-writer-method
()
(list 'new-value class-name)
(list 't class-name)
(make-std-writer-method-function slot-name)
"automatically generated writer method"
slot-name))))
(dolist (reader readers) (do-reader-definition reader))
(dolist (writer writers) (do-writer-definition writer))))
;;;
;;; Initialize a standard class metaobject.
;;;
(defun bootstrap-initialize-std-class
(class
name definition-source direct-supers direct-subclasses cpl wrapper
direct-slots slots direct-default-initargs default-initargs proto)
(flet ((classes (names) (mapcar #'find-class names))
(set-slot (slot-name value)
(bootstrap-set-slot 'std-class class slot-name value)))
(set-slot 'name name)
(set-slot 'source definition-source)
(set-slot 'class-precedence-list (classes cpl))
(set-slot 'direct-superclasses (classes direct-supers))
(set-slot 'direct-slots direct-slots)
(set-slot 'direct-subclasses (classes direct-subclasses))
(set-slot 'direct-methods (cons nil nil))
(set-slot 'no-of-instance-slots (length slots))
(set-slot 'slots slots)
(set-slot 'wrapper wrapper)
(set-slot 'prototype proto)
(set-slot 'plist
`(,@(and direct-default-initargs
`(direct-default-initargs ,direct-default-initargs))
,@(and default-initargs
`(default-initargs ,default-initargs))))
))
;;;
;;; Initialize a built-in-class metaobject.
;;;
(defun bootstrap-initialize-bin-class
(class
name definition-source direct-supers direct-subclasses cpl wrapper)
(flet ((classes (names) (mapcar #'find-class names))
(set-slot (slot-name value)
(bootstrap-set-slot 'bin-class class slot-name value)))
(set-slot 'name name)
(set-slot 'source definition-source)
(set-slot 'direct-superclasses (classes direct-supers))
(set-slot 'direct-subclasses (classes direct-subclasses))
(set-slot 'direct-methods (cons nil nil))
(set-slot 'class-precedence-list (classes cpl))
(set-slot 'wrapper wrapper)))
(defun bootstrap-make-slot-definitions (name slots wrapper e-p)
(mapcar #'(lambda (slot) (bootstrap-make-slot-definition name slot wrapper e-p))
slots))
(defun bootstrap-make-slot-definition (name slot wrapper e-p)
(let ((slotd (%allocate-instance--class (length *std-slotd-slots*))))
(setf (std-instance-wrapper slotd) wrapper)
(flet ((get-val (name) (getf slot name))
(set-val (name val) (bootstrap-set-slot 'std-slotd slotd name val)))
(set-val 'name (get-val :name))
(set-val 'initform (get-val :initform))
(set-val 'initfunction (get-val :initfunction))
(set-val 'initargs (get-val :initargs))
(set-val 'readers (get-val :readers))
(set-val 'writers (get-val :writers))
(set-val 'allocation :instance)
(set-val 'type (get-val :type))
(set-val 'class nil)
(set-val 'instance-index nil)
(when (and (eq name 'standard-class) (eq (get-val :name) 'slots) e-p)
(setq *the-eslotd-standard-class-slots* slotd))
slotd)))
(defun bootstrap-built-in-classes ()
;;
;; First make sure that all the supers listed in *built-in-class-lattice*
;; are themselves defined by *built-in-class-lattice*. This is just to
;; check for typos and other sorts of brainos.
;;
(dolist (e *built-in-classes*)
(dolist (super (cadr e))
(unless (or (eq super 't)
(assq super *built-in-classes*))
(error "In *built-in-classes*: ~S has ~S as a super,~%~
but ~S is not itself a class in *built-in-classes*."
(car e) super super))))
;;
;; In the first pass, we create a skeletal object to be bound to the
;; class name.
;;
(let* ((built-in-class (find-class 'built-in-class))
(built-in-class-wrapper (class-wrapper built-in-class))
(bin-class-size (length *bin-class-slots*)))
(dolist (e *built-in-classes*)
(let ((class (%allocate-instance--class bin-class-size)))
(setf (std-instance-wrapper class) built-in-class-wrapper)
(setf (find-class (car e)) class))))
;;
;; In the second pass, we initialize the class objects.
;;
(dolist (e *built-in-classes*)
(destructuring-bind (name supers subs cpl) e
(let* ((class (find-class name))
(wrapper (make-wrapper class)))
(set (get-built-in-class-symbol name) class)
(set (get-built-in-wrapper-symbol name) wrapper)
(setf (wrapper-instance-slots-layout wrapper) ()
(wrapper-class-slots wrapper) ())
(bootstrap-initialize-bin-class class
name nil
supers subs
(cons name cpl) wrapper)
))))
;;;
;;;
;;;
(defun class-of (x) (wrapper-class (wrapper-of x)))
(defun wrapper-of (x)
(or (and (std-instance-p x)
(std-instance-wrapper x))
(and (fsc-instance-p x)
(fsc-instance-wrapper x))
(built-in-wrapper-of x)
(error "Can't determine wrapper of ~S" x)))
(eval-when (compile eval)
(defun make-built-in-class-subs ()
(mapcar #'(lambda (e)
(let ((class (car e))
(class-subs ()))
(dolist (s *built-in-classes*)
(when (memq class (cadr s)) (pushnew (car s) class-subs)))
(cons class class-subs)))
(cons '(t) *built-in-classes*)))
(defun make-built-in-class-tree ()
(let ((subs (make-built-in-class-subs)))
(labels ((descend (class)
(cons class (mapcar #'descend (cdr (assq class subs))))))
(descend 't))))
(defun make-built-in-wrapper-of-body ()
(make-built-in-wrapper-of-body-1 (make-built-in-class-tree)
'x
#'get-built-in-wrapper-symbol))
(defun make-built-in-wrapper-of-body-1 (tree var get-symbol)
(let ((*specials* ()))
(declare (special *specials*))
(let ((inner (make-built-in-wrapper-of-body-2 tree var get-symbol)))
`(locally (declare (special .,*specials*)) ,inner))))
(defun make-built-in-wrapper-of-body-2 (tree var get-symbol)
(declare (special *specials*))
(let ((symbol (funcall get-symbol (car tree))))
(push symbol *specials*)
(let ((sub-tests
(mapcar #'(lambda (x)
(make-built-in-wrapper-of-body-2 x var get-symbol))
(cdr tree))))
`(and (typep ,var ',(car tree))
,(if sub-tests
`(or ,.sub-tests ,symbol)
symbol)))))
)
(defun built-in-wrapper-of (x)
#.(make-built-in-wrapper-of-body))
(eval-when (load eval)
(clrhash *find-class*)
(bootstrap-meta-braid)
(bootstrap-built-in-classes)
(setq *boot-state* 'braid)
(setf (symbol-function 'load-defclass) #'real-load-defclass)
)
;;;
;;; All of these method definitions must appear here because the bootstrap
;;; only allows one method per generic function until the braid is fully
;;; built.
;;;
(defmethod print-object (instance stream)
(printing-random-thing (instance stream)
(let ((name (class-name (class-of instance))))
(if name
(format stream "~S" name)
(format stream "Instance")))))
(defmethod print-object ((class class) stream)
(named-object-print-function class stream))
(defmethod print-object ((slotd standard-slot-definition) stream)
(named-object-print-function slotd stream))
(defun named-object-print-function (instance stream
&optional (extra nil extra-p))
(printing-random-thing (instance stream)
(if extra-p
(format stream "~A ~S ~:S"
(capitalize-words (class-name (class-of instance)))
(slot-value-or-default instance 'name)
extra)
(format stream "~A ~S"
(capitalize-words (class-name (class-of instance)))
(slot-value-or-default instance 'name)))))
;;;
;;;
;;;
;(defmethod shared-initialize :after ((class class) slot-names &key name)
; (declare (ignore slot-names))
; (setf (slot-value class 'name) name))
;
;
;(defmethod shared-initialize :after ((class std-class)
; slot-names
; &key direct-superclasses
; direct-slots)
; (declare (ignore slot-names))
; (setf (slot-value class 'direct-superclasses) direct-superclasses
; (slot-value class 'direct-slots) direct-slots))
;;;
;;;
;;;
(defmethod shared-initialize :after ((slotd standard-slot-definition)
slot-names
&key class
name
initform
initfunction
initargs
(allocation :instance)
(type t)
readers
writers)
(declare (ignore slot-names))
(setf (slot-value slotd 'name) name
(slot-value slotd 'initform) initform
(slot-value slotd 'initfunction) initfunction
(slot-value slotd 'initargs) initargs
(slot-value slotd 'allocation) (if (eq allocation :class) class allocation)
(slot-value slotd 'type) type
(slot-value slotd 'readers) readers
(slot-value slotd 'writers) writers))

File diff suppressed because it is too large Load Diff

View File

@@ -1,260 +0,0 @@
(DEFINE-FILE-INFO PACKAGE "XCL" READTABLE "XCL")
(il:filecreated "28-Aug-87 18:42:36" il:{phylum}<clos>clos-env-internal.\;1 8356
il:|changes| il:|to:| (il:vars il:clos-env-internalcoms)
(il:props (il:clos-env-internal il:makefile-environment))
(il:functions stack-eql stack-pointer-frame stack-frame-valid-p
stack-frame-fn-header stack-frame-pc fnheader-debugging-info
stack-frame-name compiled-closure-fnheader compiled-closure-env)
)
; Copyright (c) 1987 by Xerox Corporation. All rights reserved.
(il:prettycomprint il:clos-env-internalcoms)
(il:rpaqq il:clos-env-internalcoms (
(il:* il:|;;;| "***************************************")
(il:* il:|;;;| " Copyright (c) 1987 Xerox Corporation. All rights reserved.")
(il:* il:|;;;| "")
(il:* il:|;;;| "Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws.")
(il:* il:|;;;| " ")
(il:* il:|;;;| "This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification.")
(il:* il:|;;;| " ")
(il:* il:|;;;| "Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to:")
(il:* il:|;;;| " CommonLoops Coordinator")
(il:* il:|;;;| " Xerox Artifical Intelligence Systems")
(il:* il:|;;;| " 2400 Hanover St.")
(il:* il:|;;;| " Palo Alto, CA 94303")
(il:* il:|;;;| "(or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa)")
(il:* il:|;;;| "")
(il:* il:|;;;| " Suggestions, comments and requests for improvements are also welcome.")
(il:* il:|;;;| " *************************************************************************")
(il:* il:|;;;| "")
(il:declare\: il:dontcopy (il:prop il:makefile-environment
il:clos-env-internal))
(il:* il:\;
"We're off to hack the system...")
(il:declare\: il:eval@compile il:dontcopy (il:files clos::abc)
(il:* il:|;;| "The Deltas and The East and The Freeze")
)
(il:functions stack-eql stack-pointer-frame stack-frame-valid-p
stack-frame-fn-header stack-frame-pc
fnheader-debugging-info stack-frame-name
compiled-closure-fnheader compiled-closure-env)))
(il:* il:|;;;| "***************************************")
(il:* il:|;;;| " Copyright (c) 1987 Xerox Corporation. All rights reserved.")
(il:* il:|;;;| "")
(il:* il:|;;;|
"Use and copying of this software and preparation of derivative works based upon this software are permitted. Any distribution of this software or derivative works must comply with all applicable United States export control laws."
)
(il:* il:|;;;| " ")
(il:* il:|;;;|
"This software is made available AS IS, and Xerox Corporation makes no warranty about the software, its performance or its conformity to any specification."
)
(il:* il:|;;;| " ")
(il:* il:|;;;|
"Any person obtaining a copy of this software is requested to send their name and post office or electronic mail address to:"
)
(il:* il:|;;;| " CommonLoops Coordinator")
(il:* il:|;;;| " Xerox Artifical Intelligence Systems")
(il:* il:|;;;| " 2400 Hanover St.")
(il:* il:|;;;| " Palo Alto, CA 94303")
(il:* il:|;;;| "(or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa)")
(il:* il:|;;;| "")
(il:* il:|;;;| " Suggestions, comments and requests for improvements are also welcome.")
(il:* il:|;;;| " *************************************************************************")
(il:* il:|;;;| "")
(il:declare\: il:dontcopy
(il:putprops il:clos-env-internal il:makefile-environment (:package "XCL" :readtable "XCL"))
)
(il:* il:\; "We're off to hack the system...")
(il:declare\: il:eval@compile il:dontcopy
(il:filesload clos::abc)
)
(defun stack-eql (x y) "Test two stack pointers for equality" (and (il:stackp x)
(il:stackp y)
(eql (il:fetch (il:stackp il:edfxp
)
il:of x)
(il:fetch (il:stackp il:edfxp
)
il:of y))))
(defun stack-pointer-frame (stack-pointer) (il:|fetch| (il:stackp il:edfxp) il:|of| stack-pointer))
(defun stack-frame-valid-p (frame) (not (il:|fetch| (il:fx il:invalidp) il:|of| frame)))
(defun stack-frame-fn-header (frame) (il:|fetch| (il:fx il:fnheader) il:|of| frame))
(defun stack-frame-pc (frame) (il:|fetch| (il:fx il:pc) il:|of| frame))
(defun fnheader-debugging-info (fnheader) (let* ((start-pc (il:fetch (il:fnheader il:startpc)
il:of fnheader))
(name-table-words
(let ((size (il:fetch (il:fnheader il:ntsize)
il:of fnheader)))
(if (zerop size)
il:wordsperquad
(* size 2))))
(past-name-table-in-words (+ (il:fetch (il:fnheader
il:overheadwords
)
il:of fnheader)
name-table-words)))
(and (= (- start-pc (* il:bytesperword
past-name-table-in-words))
il:bytespercell)
(il:* il:|;;| "It's got a debugging-info list.")
(il:\\getbaseptr fnheader
past-name-table-in-words))))
(defun stack-frame-name (frame) (il:|fetch| (il:fx il:framename) il:|of| frame))
(defun compiled-closure-fnheader (closure) (il:|fetch| (il:compiled-closure il:fnheader) il:|of|
closure))
(defun compiled-closure-env (closure) (il:fetch (il:compiled-closure il:environment) il:of closure))
(il:putprops il:clos-env-internal il:copyright ("Xerox Corporation" 1987))
(il:declare\: il:dontcopy
(il:filemap (nil)))
il:stop

File diff suppressed because it is too large Load Diff

View File

@@ -1,254 +0,0 @@
;;;-*-Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1991 Venue
;;; All rights reserved.
;;; *************************************************************************
;;;
(in-package 'clos)
(defun make-effective-method-function (generic-function form)
(flet ((name-function (fn) (set-function-name fn 'a-combined-method) fn))
(if (and (listp form)
(eq (car form) 'call-method)
(method-p (cadr form))
(every #'method-p (caddr form)))
;;
;; The effective method is just a call to call-method. This opens up
;; the possibility of just using the method function of the method as
;; as the effective method function.
;;
;; But we have to be careful. If that method function will ask for
;; the next methods we have to provide them. We do not look to see
;; if there are next methods, we look at whether the method function
;; asks about them. If it does, we must tell it whether there are
;; or aren't to prevent the leaky next methods bug.
;;
(let* ((method-function (method-function (cadr form)))
(arg-info (gf-arg-info generic-function))
(metatypes (arg-info-metatypes arg-info))
(applyp (arg-info-applyp arg-info)))
(if (not (method-function-needs-next-methods-p method-function))
method-function
(let ((next-method-functions (mapcar #'method-function (caddr form))))
(name-function
(get-function `(lambda ,(make-dfun-lambda-list metatypes applyp)
(let ((*next-methods* .next-method-functions.))
,(make-dfun-call metatypes applyp '.method-function.)))
#'default-test-converter ;This could be optimized by making
;the interface from here to the
;walker more clear so that the
;form wouldn't get walked at all.
#'(lambda (form)
(if (memq form '(.next-method-functions. .method-function.))
(values form (list form))
form))
#'(lambda (form)
(cond ((eq form '.next-method-functions.)
(list next-method-functions))
((eq form '.method-function.)
(list method-function)))))))))
;;
;; We have some sort of `real' effective method. Go off and get a
;; compiled function for it. Most of the real hair here is done by
;; the GET-FUNCTION mechanism.
;;
(name-function (make-effective-method-function-internal generic-function form)))))
(defvar *global-effective-method-gensyms* ())
(defvar *rebound-effective-method-gensyms*)
(defun get-effective-method-gensym ()
(or (pop *rebound-effective-method-gensyms*)
(let ((new (make-symbol "EFFECTIVE-METHOD-GENSYM-")))
(push new *global-effective-method-gensyms*)
new)))
(eval-when (load)
(let ((*rebound-effective-method-gensyms* ()))
(dotimes (i 10) (get-effective-method-gensym))))
(defun make-effective-method-function-internal (generic-function effective-method)
(let* ((*rebound-effective-method-gensyms* *global-effective-method-gensyms*)
(arg-info (gf-arg-info generic-function))
(metatypes (arg-info-metatypes arg-info))
(applyp (arg-info-applyp arg-info)))
(labels ((test-converter (form)
(if (and (consp form) (eq (car form) 'call-method))
'.call-method.
(default-test-converter form)))
(code-converter (form)
(if (and (consp form) (eq (car form) 'call-method))
;;
;; We have a `call' to CALL-METHOD. There may or may not be next methods
;; and the two cases are a little different. It controls how many gensyms
;; we will generate.
;;
(let ((gensyms
(if (cddr form)
(list (get-effective-method-gensym)
(get-effective-method-gensym))
(list (get-effective-method-gensym)
()))))
(values `(let ((*next-methods* ,(cadr gensyms)))
,(make-dfun-call metatypes applyp (car gensyms)))
gensyms))
(default-code-converter form)))
(constant-converter (form)
(if (and (consp form) (eq (car form) 'call-method))
(if (cddr form)
(list (check-for-make-method (cadr form))
(mapcar #'check-for-make-method (caddr form)))
(list (check-for-make-method (cadr form))
()))
(default-constant-converter form)))
(check-for-make-method (effective-method)
(cond ((method-p effective-method)
(method-function effective-method))
((and (listp effective-method)
(eq (car effective-method) 'make-method))
(make-effective-method-function generic-function
(make-progn (cadr effective-method))))
(t
(error "Effective-method form is malformed.")))))
(get-function `(lambda ,(make-dfun-lambda-list metatypes applyp) ,effective-method)
#'test-converter
#'code-converter
#'constant-converter))))
(defvar *invalid-method-error*
#'(lambda (&rest args)
(declare (ignore args))
(error
"INVALID-METHOD-ERROR was called outside the dynamic scope~%~
of a method combination function (inside the body of~%~
DEFINE-METHOD-COMBINATION or a method on the generic~%~
function COMPUTE-EFFECTIVE-METHOD).")))
(defvar *method-combination-error*
#'(lambda (&rest args)
(declare (ignore args))
(error
"METHOD-COMBINATION-ERROR was called outside the dynamic scope~%~
of a method combination function (inside the body of~%~
DEFINE-METHOD-COMBINATION or a method on the generic~%~
function COMPUTE-EFFECTIVE-METHOD).")))
;(defmethod compute-effective-method :around ;issue with magic
; ((generic-function generic-function) ;generic functions
; (method-combination method-combination)
; applicable-methods)
; (declare (ignore applicable-methods))
; (flet ((real-invalid-method-error (method format-string &rest args)
; (declare (ignore method))
; (apply #'error format-string args))
; (real-method-combination-error (format-string &rest args)
; (apply #'error format-string args)))
; (let ((*invalid-method-error* #'real-invalid-method-error)
; (*method-combination-error* #'real-method-combination-error))
; (call-next-method))))
(defun invalid-method-error (&rest args)
(declare (arglist method format-string &rest format-arguments))
(apply *invalid-method-error* args))
(defun method-combination-error (&rest args)
(declare (arglist format-string &rest format-arguments))
(apply *method-combination-error* args))
;;;
;;; The STANDARD method combination type. This is coded by hand (rather than
;;; with define-method-combination) for bootstrapping and efficiency reasons.
;;; Note that the definition of the find-method-combination-method appears in
;;; the file defcombin.lisp, this is because EQL methods can't appear in the
;;; bootstrap.
;;;
;;; The defclass for the METHOD-COMBINATION and STANDARD-METHOD-COMBINATION
;;; classes has to appear here for this reason. This code must conform to
;;; the code in the file defcombin, look there for more details.
;;;
(defclass method-combination () ())
(define-gf-predicate method-combination-p method-combination)
(defclass standard-method-combination
(definition-source-mixin method-combination)
((type :reader method-combination-type
:initarg :type)
(documentation :reader method-combination-documentation
:initarg :documentation)
(options :reader method-combination-options
:initarg :options)))
(defmethod print-object ((mc method-combination) stream)
(printing-random-thing (mc stream)
(format stream
"Method-Combination ~S ~S"
(method-combination-type mc)
(method-combination-options mc))))
(eval-when (load eval)
(setq *standard-method-combination*
(make-instance 'standard-method-combination
:type 'standard
:documentation "The standard method combination."
:options ())))
;This definition appears in defcombin.lisp.
;
;(defmethod find-method-combination ((generic-function generic-function)
; (type (eql 'standard))
; options)
; (when options
; (method-combination-error
; "The method combination type STANDARD accepts no options."))
; *standard-method-combination*)
(defun make-call-methods (methods)
(mapcar #'(lambda (method) `(call-method ,method ())) methods))
(defmethod compute-effective-method ((generic-function generic-function)
(combin standard-method-combination)
applicable-methods)
(let ((before ())
(primary ())
(after ())
(around ()))
(dolist (m applicable-methods)
(let ((qualifiers (method-qualifiers m)))
(cond ((member ':before qualifiers) (push m before))
((member ':after qualifiers) (push m after))
((member ':around qualifiers) (push m around))
(t
(push m primary)))))
(setq before (reverse before)
after (reverse after)
primary (reverse primary)
around (reverse around))
(cond ((null primary)
`(error "No primary method for the generic function ~S." ',generic-function))
((and (null before) (null after) (null around))
;;
;; By returning a single call-method `form' here we enable an important
;; implementation-specific optimization.
;;
`(call-method ,(first primary) ,(rest primary)))
(t
(let ((main-effective-method
(if (or before after (rest primary))
`(multiple-value-prog1
(progn ,@(make-call-methods before)
(call-method ,(first primary) ,(rest primary)))
,@(make-call-methods (reverse after)))
`(call-method ,(first primary) ()))))
(if around
`(call-method ,(first around)
(,@(rest around) (make-method ,main-effective-method)))
main-effective-method))))))

View File

@@ -1,11 +0,0 @@
;;;-*-Mode:LISP; Package: CLOS; Base:10; Syntax:Common-lisp; -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1991 Venue
;;; All rights reserved.
;;; *************************************************************************
;;;
(in-package 'clos)
()

File diff suppressed because it is too large Load Diff

View File

@@ -1,271 +0,0 @@
;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*-
;;;. Copyright (c) 1991 by Venue
(in-package "CLOS")
;;; compute-class-precedence-list Knuth section 2.2.3 has some interesting notes on this. What
;;; appears here is basically the algorithm presented there. The key idea is that we use
;;; class-precedence-description (CPD) structures to store the precedence information as we proceed.
;;; The CPD structure for a class stores two critical pieces of information: - a count of the number
;;; of "reasons" why the class can't go into the class precedence list yet. - a list of the
;;; "reasons" this class prevents others from going in until after it
;;
;;; A "reason" is essentially a single local precedence constraint. If a constraint between two
;;; classes arises more than once it generates more than one reason. This makes things simpler,
;;; linear, and isn't a problem as long as we make sure to keep track of each instance of a
;;; "reason". This code is divided into three phases. - the first phase simply generates the CPD's
;;; for each of the class and its superclasses. The remainder of the code will manipulate these
;;; CPDs rather than the class objects themselves. At the end of this pass, the CPD-SUPERS field of
;;; a CPD is a list of the CPDs of the direct superclasses of the class. - the second phase folds
;;; all the local constraints into the CPD structure. The CPD-COUNT of each CPD is built up, and
;;; the CPD-AFTER fields are augmented to include precedence constraints from the CPD-SUPERS field
;;; and from the order of classes in other CPD-SUPERS fields. After this phase, the CPD-AFTER field
;;; of a class includes all the direct superclasses of the class plus any class that immediately
;;; follows the class in the direct superclasses of another. There can be duplicates in this list.
;;; The CPD-COUNT field is equal to the number of times this class appears in the CPD-AFTER field of
;;; all the other CPDs. - In the third phase, classes are put into the precedence list one at a
;;; time, with only those classes with a CPD-COUNT of 0 being candidates for insertion. When a
;;; class is inserted , every CPD in its CPD-AFTER field has its count decremented. In the usual
;;; case, there is only one candidate for insertion at any point. If there is more than one, the
;;; specified tiebreaker rule is used to choose among them.
(defmethod compute-class-precedence-list ((root std-class)
direct-superclasses)
(compute-std-cpl root direct-superclasses))
(defstruct (class-precedence-description (:conc-name nil)
(:print-function (lambda (obj str depth)
(declare (ignore depth))
(format str "#<CPD ~S ~D>" (class-name (cpd-class obj))
(cpd-count obj))))
(:constructor make-cpd nil))
(cpd-class nil)
(cpd-supers nil)
(cpd-after nil)
(cpd-count 0))
(defun compute-std-cpl (class supers)
(cond ((null supers)
; First two branches of COND
(list class))
; are implementing the single
((null (cdr supers))
; inheritance optimization.
(cons class (compute-std-cpl (car supers)
(class-direct-superclasses (car supers)))))
(t (multiple-value-bind (all-cpds nclasses)
(compute-std-cpl-phase-1 class supers)
(compute-std-cpl-phase-2 all-cpds)
(compute-std-cpl-phase-3 class all-cpds nclasses)))))
(defvar *compute-std-cpl-class->entry-table-size* 60)
(defun compute-std-cpl-phase-1 (class supers)
(let ((nclasses 0)
(all-cpds nil)
(table (make-hash-table :size *compute-std-cpl-class->entry-table-size* :test
#'eq)))
(labels ((get-cpd (c)
(or (gethash c table)
(setf (gethash c table)
(make-cpd))))
(walk (c supers)
(if (forward-referenced-class-p c)
(cpl-forward-referenced-class-error class c)
(let ((cpd (get-cpd c)))
(unless (cpd-class cpd)
; If we have already done this class
; before, we can quit.
(setf (cpd-class cpd)
c)
(incf nclasses)
(push cpd all-cpds)
(setf (cpd-supers cpd)
(mapcar #'get-cpd supers))
(dolist (super supers)
(walk super (class-direct-superclasses super))))))))
(walk class supers)
(values all-cpds nclasses))))
(defun compute-std-cpl-phase-2 (all-cpds)
(dolist (cpd all-cpds)
(let ((supers (cpd-supers cpd)))
(when supers
(setf (cpd-after cpd)
(nconc (cpd-after cpd)
supers))
(incf (cpd-count (car supers))
1)
(do* ((t1 supers t2)
(t2 (cdr t1)
(cdr t1)))
((null t2))
(incf (cpd-count (car t2))
2)
(push (car t2)
(cpd-after (car t1))))))))
(defun
compute-std-cpl-phase-3
(class all-cpds nclasses)
(let ((candidates nil)
(next-cpd nil)
(rcpl nil))
;; We have to bootstrap the collection of those CPD's that have a zero count. Once we get
;; going, we will maintain this list incrementally.
(dolist (cpd all-cpds)
(when (zerop (cpd-count cpd))
(push cpd candidates)))
(loop (when (null candidates)
;; If there are no candidates, and enough classes have been put into the precedence
;; list, then we are all done. Otherwise it means there is a consistency problem.
(if (zerop nclasses)
(return (reverse rcpl))
(cpl-inconsistent-error class all-cpds)))
;; Try to find the next class to put in from among the candidates. If there is only one,
;; its easy, otherwise we have to use the famous RPG tiebreaker rule. There is some
;; hair here to avoid having to call DELETE on the list of candidates. I dunno if its
;; worth it but what the hell.
(setq next-cpd
(if (null (cdr candidates))
(prog1 (car candidates)
(setq candidates nil))
(block tie-breaker
(dolist (c rcpl)
(let ((supers (class-direct-superclasses c)))
(if (memq (cpd-class (car candidates))
supers)
(return-from tie-breaker (pop candidates))
(do ((loc candidates (cdr loc)))
((null (cdr loc)))
(let ((cpd (cadr loc)))
(when (memq (cpd-class cpd)
supers)
(setf (cdr loc)
(cddr loc))
(return-from tie-breaker cpd))))))))))
(decf nclasses)
(push (cpd-class next-cpd)
rcpl)
(dolist (after (cpd-after next-cpd))
(when (zerop (decf (cpd-count after)))
(push after candidates))))))
;;; Support code for signalling nice error messages.
(defun cpl-error (class format-string &rest format-args)
(error "While computing the class precedence list of the class ~A.~%~A"
(if (class-name class)
(format nil "named ~S" (class-name class))
class)
(apply #'format nil format-string format-args)))
(defun cpl-forward-referenced-class-error (class forward-class)
(flet ((class-or-name (class)
(if (class-name class)
(format nil "named ~S" (class-name class))
class)))
(let ((names (mapcar #'class-or-name (cdr (find-superclass-chain class forward-class))))
)
(cpl-error class
"The class ~A is a forward referenced class.~@
The class ~A is ~A." (class-or-name forward-class)
(class-or-name forward-class)
(if (null (cdr names))
(format nil "a direct superclass of the class ~A" (class-or-name class))
(format nil "reached from the class ~A by following~@
the direct superclass chain through: ~A~
~% ending at the class ~A" (class-or-name class)
(format nil "~{~% the class ~A,~}" (butlast names))
(car (last names))))))))
(defun find-superclass-chain (bottom top)
(labels ((walk (c chain)
(if (eq c top)
(return-from find-superclass-chain (nreverse chain))
(dolist (super (class-direct-superclasses c))
(walk super (cons super chain))))))
(walk bottom (list bottom))))
(defun cpl-inconsistent-error (class all-cpds)
(let ((reasons (find-cycle-reasons all-cpds)))
(cpl-error class "It is not possible to compute the class precedence list because~@
there ~A in the local precedence relations.~@
~A because:~{~% ~A~}." (if (cdr reasons)
"are circularities"
"is a circularity")
(if (cdr reasons)
"These arise"
"This arises")
(format-cycle-reasons (apply #'append reasons)))))
(defun format-cycle-reasons (reasons)
(flet ((class-or-name (cpd)
(let ((class (cpd-class cpd)))
(if (class-name class)
(format nil "named ~S" (class-name class))
class))))
(mapcar #'(lambda (reason)
(ecase (caddr reason)
(:super (format nil
"the class ~A appears in the supers of the class ~A"
(class-or-name (cadr reason))
(class-or-name (car reason))))
(:in-supers (format nil
"the class ~A follows the class ~A in the supers of the class ~A"
(class-or-name (cadr reason))
(class-or-name (car reason))
(class-or-name (cadddr reason))))))
reasons)))
(defun find-cycle-reasons (all-cpds)
(let ((been-here nil)
; List of classes we have visited.
(cycle-reasons nil))
(labels ((chase (path)
(if (memq (car path)
(cdr path))
(record-cycle (memq (car path)
(nreverse path)))
(unless (memq (car path)
been-here)
(push (car path)
been-here)
(dolist (after (cpd-after (car path)))
(chase (cons after path))))))
(record-cycle
(cycle)
(let ((reasons nil))
(do* ((t1 cycle t2)
(t2 (cdr t1)
(cdr t1)))
((null t2))
(let ((c1 (car t1))
(c2 (car t2)))
(if (memq c2 (cpd-supers c1))
(push (list c1 c2 :super)
reasons)
(dolist (cpd all-cpds)
(when (memq c2 (memq c1 (cpd-supers cpd)))
(return (push (list c1 c2 :in-supers cpd)
reasons)))))))
(push (nreverse reasons)
cycle-reasons))))
(dolist (cpd all-cpds)
(unless (zerop (cpd-count cpd))
(chase (list cpd))))
cycle-reasons)))

View File

@@ -1,25 +0,0 @@
;;;-*-Mode:LISP; Package: PCL; Base:10; Syntax:Common-lisp -*-
;;;
;;; *************************************************************************
;;; Copyright (c) 1991 Venue
;;; All rights reserved.
;;; *************************************************************************
;;;
(in-package 'clos)
;;;
;;; The built-in method combination types as taken from page 1-31 of 88-002R.
;;; Note that the STANDARD method combination type is defined by hand in the
;;; file combin.lisp.
;;;
(define-method-combination + :identity-with-one-argument t)
(define-method-combination and :identity-with-one-argument t)
(define-method-combination append :identity-with-one-argument nil)
(define-method-combination list :identity-with-one-argument nil)
(define-method-combination max :identity-with-one-argument t)
(define-method-combination min :identity-with-one-argument t)
(define-method-combination nconc :identity-with-one-argument t)
(define-method-combination or :identity-with-one-argument t)
(define-method-combination progn :identity-with-one-argument t)

View File

@@ -1,230 +0,0 @@
;;;-*- Package: CLOS; Syntax: Common-Lisp; Base: 10 -*-
;;;. Copyright (c) 1991 by Venue
(in-package "CLOS")
;;; *************************************************************************
;;; MAKE-TOP-LEVEL-FORM is used by all PCL macros that appear `at top-level'. The original
;;; motiviation for this function was to deal with the bug in the Genera compiler that prevents
;;; lambda expressions in top-level forms other than DEFUN from being compiled. Now this function is
;;; used to grab other functionality as well. This includes: - Preventing the grouping of top-level
;;; forms. For example, a DEFCLASS followed by a DEFMETHOD may not want to be grouped into the same
;;; top-level form. - Telling the programming environment what the pretty version of the name of
;;; this form is. This is used by WARN.
(defun make-top-level-form (name times form)
(flet ((definition-name nil (if (and (listp name)
(memq (car name)
'(defmethod defclass class method
method-combination)))
(format nil "~A~{ ~S~}" (capitalize-words (car name)
nil)
(cdr name))
(format nil "~S" name))))
(definition-name)
(make-progn `',name `(eval-when ,times ,form))))
(defun make-progn (&rest forms)
(let ((progn-form nil))
(labels ((collect-forms (forms)
(unless (null forms)
(collect-forms (cdr forms))
(if (and (listp (car forms))
(eq (caar forms)
'progn))
(collect-forms (cdar forms))
(push (car forms)
progn-form)))))
(collect-forms forms)
(cons 'progn progn-form))))
;;; Like the DEFMETHOD macro, the expansion of the DEFCLASS macro is fixed. DEFCLASS always expands
;;; into a call to LOAD-DEFCLASS. Until the meta- braid is set up, LOAD-DEFCLASS has a special
;;; definition which simply collects all class definitions up, when the metabraid is initialized it
;;; is done from those class definitions. After the metabraid has been setup, and the protocol for
;;; defining classes has been defined, the real definition of LOAD-DEFCLASS is installed by the file
;;; defclass.lisp
(defmacro defclass (name direct-superclasses direct-slots &rest options)
(declare (indentation 2 4 3 1))
(expand-defclass name direct-superclasses direct-slots options))
(defun expand-defclass (name supers slots options)
(setq supers (copy-tree supers)
slots
(copy-tree slots)
options
(copy-tree options))
(let ((metaclass 'standard-class))
(dolist (option options)
(if (not (listp option))
(error "~S is not a legal defclass option." option)
(when (eq (car option)
':metaclass)
(unless (legal-class-name-p (cadr option))
(error
"The value of the :metaclass option (~S) is not a~%~
legal class name." (cadr option)))
(setq metaclass (cadr option))
(setf options (remove option options))
(return t))))
(let ((*initfunctions* nil)
(*accessors* nil))
; Truly a crock, but we got to have it
; to live nicely.
(declare (special *initfunctions* *accessors*))
(let ((canonical-slots (mapcar #'(lambda (spec)
(canonicalize-slot-specification name spec))
slots))
(other-initargs (mapcar #'(lambda (option)
(canonicalize-defclass-option name option))
options)))
(do-standard-defsetfs-for-defclass *accessors*)
; (load-defclass name metaclass supers
; canonical-slots (apply #'append
; other-initargs) *accessors*)))))
(make-top-level-form `(defclass ,name nil nil)
*defclass-times*
`(let ,(mapcar #'cdr *initfunctions*)
(load-defclass ',name ',metaclass ',supers (list
,@canonical-slots
)
(list ,@(apply #'append other-initargs))
',*accessors*)))))))
(defun make-initfunction (initform)
(declare (special *initfunctions*))
(cond ((or (eq initform 't)
(equal initform ''t))
'#'true)
((or (eq initform 'nil)
(equal initform ''nil))
'#'false)
((or (eql initform '0)
(equal initform ''0))
'#'zero)
(t (let ((entry (assoc initform *initfunctions* :test #'equal)))
(unless entry
(setq entry (list initform (gensym)
`#'(lambda nil ,initform)))
(push entry *initfunctions*))
(cadr entry)))))
(defun canonicalize-slot-specification (class-name spec)
(declare (special *accessors*))
(cond ((and (symbolp spec)
(not (keywordp spec))
(not (memq spec '(t nil))))
`'(:name ,spec))
((not (consp spec))
(error "~S is not a legal slot specification." spec))
((null (cdr spec))
`'(:name ,(car spec)))
((null (cddr spec))
(error
"In DEFCLASS ~S, the slot specification ~S is obsolete.~%~
Convert it to ~S" class-name spec (list (car spec)
:initform
(cadr spec))))
(t (let* ((name (pop spec))
(readers nil)
(writers nil)
(initargs nil)
(unsupplied (list nil))
(initform (getf spec :initform unsupplied)))
(doplist (key val)
spec
(case key
(:accessor
(push val *accessors*)
(push val readers)
(push `(setf ,val)
writers))
(:reader (push val readers))
(:writer (push val writers))
(:initarg (push val initargs))))
(loop (unless (remf spec :accessor)
(return)))
(loop (unless (remf spec :reader)
(return)))
(loop (unless (remf spec :writer)
(return)))
(loop (unless (remf spec :initarg)
(return)))
(setq spec `(:name ',name :readers ',readers
:writers ',writers :initargs
',initargs
',spec))
(if (eq initform unsupplied)
`(list* ,@spec)
`(list* :initfunction ,(make-initfunction initform)
,@spec))))))
(defun canonicalize-defclass-option (class-name option)
(declare (ignore class-name))
(case (car option)
(:default-initargs (let ((canonical nil))
(let (key val (tail (cdr option)))
(loop (when (null tail)
(return nil))
(setq key (pop tail)
val
(pop tail))
(push ``(,',key ,,(make-initfunction val)
,',val)
canonical))
`(':direct-default-initargs (list ,@(nreverse canonical))))))
(otherwise `(',(car option)
',(cdr option)))))
;;; This is the early definition of load-defclass. It just collects up all the class definitions in
;;; a list. Later, in the file braid1.lisp, these are actually defined. Each entry in
;;; *early-class-definitions* is an early-class-definition.
(defparameter *early-class-definitions* nil)
(defun make-early-class-definition (name source metaclass superclass-names canonical-slots
other-initargs)
(list 'early-class-definition name source metaclass superclass-names canonical-slots
other-initargs))
(defun ecd-class-name (ecd)
(nth 1 ecd))
(defun ecd-source (ecd)
(nth 2 ecd))
(defun ecd-metaclass (ecd)
(nth 3 ecd))
(defun ecd-superclass-names (ecd)
(nth 4 ecd))
(defun ecd-canonical-slots (ecd)
(nth 5 ecd))
(defun ecd-other-initargs (ecd)
(nth 6 ecd))
(proclaim '(notinline load-defclass))
(defun load-defclass (name metaclass supers canonical-slots canonical-options accessor-names)
(setq supers (copy-tree supers)
canonical-slots
(copy-tree canonical-slots)
canonical-options
(copy-tree canonical-options))
(do-standard-defsetfs-for-defclass accessor-names)
(let ((ecd (make-early-class-definition name (load-truename)
metaclass supers canonical-slots (apply #'append canonical-options)))
(existing (find name *early-class-definitions* :key #'ecd-class-name)))
(setq *early-class-definitions* (cons ecd (remove existing *early-class-definitions*)))
ecd))

Some files were not shown because too many files have changed in this diff Show More