From 49dd3a2583e39eb1b1489ea996f09887cf9a5ef1 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Wed, 12 Nov 2025 23:16:52 -0800 Subject: [PATCH] Compatibility--keyword action names --- lispusers/TEDIT-PF-SEE | 227 ++++++++++++++++++++---------------- lispusers/TEDIT-PF-SEE.LCOM | Bin 5498 -> 6127 bytes 2 files changed, 125 insertions(+), 102 deletions(-) diff --git a/lispusers/TEDIT-PF-SEE b/lispusers/TEDIT-PF-SEE index fef23770..89637de6 100644 --- a/lispusers/TEDIT-PF-SEE +++ b/lispusers/TEDIT-PF-SEE @@ -1,25 +1,23 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "29-Jul-2025 22:01:56"  -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>TEDIT-PF-SEE.;150 11962 +(FILECREATED "12-Nov-2025 15:49:07" {WMEDLEY}TEDIT-PF-SEE.;156 13422 :EDIT-BY rmk - :CHANGES-TO (FNS PF-TEDIT) + :CHANGES-TO (VARS TEDIT-PF-SEECOMS) - :PREVIOUS-DATE "29-Jul-2025 18:07:48" -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>TEDIT-PF-SEE.;149) + :PREVIOUS-DATE "26-Sep-2025 22:53:59" {WMEDLEY}TEDIT-PF-SEE.;155) (PRETTYCOMPRINT TEDIT-PF-SEECOMS) (RPAQQ TEDIT-PF-SEECOMS [(FNS PF-TEDIT PF-TEDIT-FROM-TEXT) - (COMMANDS ts tf) + (COMMANDS ts tf tc tv tr) (FILES (SYSLOAD) REGIONMANAGER VERSIONDEFS) - (ALISTS (TEDIT.CHARACTIONS TEDIT-PF) - (TEDIT.CHARBINDINGS TEDIT-PF)) + (ALISTS (TEDIT.CHARACTIONS :TEDIT-PF) + (TEDIT.CHARBINDINGS :TEDIT-PF)) (P (MOVD? 'PFCOPYBYTES 'PFI.MAYBE.PP.DEFINITION) (MOVD? 'NILL (FUNCTION TEDIT.SETFUNCTION)) (TEDIT.INSTALL.CHARBINDINGS)) @@ -29,7 +27,9 @@ (DEFINEQ (PF-TEDIT - [LAMBDA (FN IFILES VERSION REPRINT) (* ; "Edited 29-Jul-2025 22:01 by rmk") + [LAMBDA (ITEM IFILES VERSION REPRINT TYPE) (* ; "Edited 23-Sep-2025 11:24 by rmk") + (* ; "Edited 20-Sep-2025 08:56 by rmk") + (* ; "Edited 29-Jul-2025 22:01 by rmk") (* ; "Edited 29-Jun-2025 16:18 by rmk") (* ; "Edited 14-Apr-2025 22:00 by rmk") (* ; "Edited 26-Mar-2025 10:08 by rmk") @@ -46,24 +46,24 @@ (* ; "Edited 12-Jan-2022 13:15 by rmk") (* ; "Edited 30-Dec-2021 23:17 by rmk") - (* ;; "PF* to a read-only TEDIT window. First argument is the function name, second if given is the input file.") + (* ;; "Shows ITEM of type TYPE in a scrollable read-only TEDIT window. First argument is the item name, second if given is the input file.") - (* ;; "This uses PFCOPYBYTES so we see what it looks like on the file. But some functions were not prettyprinted, so they appear as useless garbage.") - - (* ;; "In that case, calling again with REPRINT=T will read and reprint. And, invoking tf again with no arguments at all will also reprint the last function in the same window") + (* ;; "Calling again with REPRINT=T (or ITEM=T) will read and reprint the same item. And, calling again with no arguments at all will also reprint the last item in the same window") (SETQ IFILES (MKLIST IFILES)) - (CL:WHEN (LISTP FN) - (SETQ FN (CAR FN))) - (SELECTQ FN + (CL:WHEN (INTERSECTION TYPE '(FNS FUNCTIONS)) + (SETQ TYPE NIL)) + (CL:WHEN (INTERSECTION TYPE '(FNS FUNCTIONS)) + (SETQ TYPE NIL)) + (SELECTQ ITEM ((t T NIL) (SETQ REPRINT T) - (SETQ FN LASTWORD)) - (if (VERSIONP FN) - then (SETQ IFILES (CONS FN)) - (SETQ FN LASTWORD) - else (SETQ LASTWORD FN))) - (CL:UNLESS FN (ERROR "No function to print")) + (SETQ ITEM LASTWORD)) + (if (VERSIONP ITEM) + then (SETQ IFILES (CONS ITEM)) + (SETQ ITEM LASTWORD) + else (SETQ LASTWORD ITEM))) + (CL:UNLESS ITEM (ERROR "No function to print")) (CL:WHEN (AND (VERSIONP IFILES) (NULL VERSION)) (SETQ VERSION IFILES) @@ -73,91 +73,107 @@ (SETQ REPRINT T) [SETQ IFILES (LDIFFERENCE IFILES '(t T]) (CL:UNLESS IFILES - (SETQ IFILES (WHEREIS FN '(FNS FUNCTIONS) - T))) + [SETQ IFILES (OR (WHEREIS ITEM TYPE T) + (AND (NULL TYPE) + (WHEREIS ITEM 'MACROS T]) (if IFILES - then (* ; "skip compiled files") + then (for IFILE TSTREAM DEF TFPROP WINDOW inside IFILES + eachtime (SETQ IFILE (if (CL:IF (VERSIONP IFILE) + (FINDFILEVERSION (CAR (WHEREIS ITEM TYPE T)) + IFILE) + (FINDFILE IFILE T)) + else (printout T "file " IFILE " not found." T) + (GO $$ITERATE))) unless (MEMB (FILENAMEFIELD IFILE + 'EXTENSION) + *COMPILED-EXTENSIONS*) + do (CL:UNLESS [SETQ DEF (CL:IF TYPE + (GETDEF ITEM TYPE IFILE 'NOERROR) + (OR (GETDEF ITEM 'FNS IFILE 'NOERROR) + (GETDEF ITEM 'FUNCTIONS IFILE 'NOERROR) + (GETDEF ITEM 'MACROS IFILE 'NOERROR)))] + (printout T ITEM " not found on " IFILE "." T) + (GO $$ITERATE)) - (* ;; "Since we are creating readonly Tedits, try to keep the TTY where it is.") + (* ;; "We found ITEM of TYPE on IFILE") - (for IFILE LOC TSTREAM ENV EXPR TFPROP WINDOW inside IFILES - eachtime (CL:IF (VERSIONP IFILE) - (SETQ IFILE (FINDFILEVERSION (CAR (WHEREIS FN NIL T)) - IFILE))) unless (MEMB (FILENAMEFIELD IFILE 'EXTENSION) - *COMPILED-EXTENSIONS*) - do - (SETQ LOC (FINDFNDEF FN IFILE)) - (if (LISTP LOC) - then (SETQ TFPROP (LIST FN (CAR LOC))) - [SETQ WINDOW (find W in (OPENWINDOWS) - suchthat (AND (EQUAL TFPROP (WINDOWPROP W 'TF)) - (TEXTSTREAM W T] - [if (AND WINDOW (NOT REPRINT)) - then - (* ;; - "If already an open PF window on this function in this file, just raise it to the top") + (SETQ TFPROP (LIST ITEM TYPE IFILE)) + [SETQ WINDOW (find W in (OPENWINDOWS) + suchthat (AND (EQUAL TFPROP (WINDOWPROP W 'TF)) + (TEXTSTREAM W T] + (CL:WHEN (AND WINDOW (NOT REPRINT)) - (TOTOPW WINDOW) - (RETURN) - else (CL:WITH-OPEN-FILE - (ISTREAM (POP LOC) - :DIRECTION :INPUT) - (SETQ ENV (LISPSOURCEFILEP ISTREAM)) - (SETFILEINFO ISTREAM 'FORMAT ENV) - [SETQ TSTREAM (OPENTEXTSTREAM - NIL NIL `(PARABREAKCHARS NIL OPENWIDTH - ,(TIMES TEDIT.SOURCE.LINELENGTH - (CHARWIDTH (CHARCODE SPACE) - DEFAULTFONT] - (DSPFONT DEFAULTFONT TSTREAM) - (PRINTOUT TSTREAM 5 "[From " (FULLNAME ISTREAM) - "]" T) - (PRINT-READER-ENVIRONMENT ENV TSTREAM) - (if REPRINT - then (SETFILEPTR ISTREAM (POP LOC)) - (SETQ EXPR (WITH-READER-ENVIRONMENT ENV (READ ISTREAM))) - (WITH-READER-ENVIRONMENT ENV - (if (EQ FN (CAR EXPR)) - then (DSPFONT BOLDFONT TSTREAM) - (PRINT FN TSTREAM) - (DSPFONT DEFAULTFONT TSTREAM) - (SETQ EXPR (CADR EXPR)) - (PRINTDEF EXPR 3 T NIL NIL TSTREAM) - elseif (EQ FN (CADR EXPR)) - then - (* ;; - "Presumably a DEFUN. Print the CAR, boldface the cadr") + (* ;; + "If already an open window on this item in this file, just raise it to the top") - (PRINTOUT TSTREAM "(" .P2 (CAR EXPR) - " " .FONT BOLDFONT .P2 (CADR EXPR) - .FONT DEFAULTFONT " " .P2 (CADDR EXPR) - T 3) - (PRINTDEF (CDDDR EXPR) - 3 T T NIL TSTREAM) - (PRIN3 ")" TSTREAM) - else (PRINTDEF EXPR 3 NIL NIL NIL TSTREAM))) - else (PFI.MAYBE.PP.DEFINITION ISTREAM TSTREAM (POP LOC) - (POP LOC))) - (TERPRI TSTREAM) - [TEDIT TSTREAM (OR WINDOW 'TF) - NIL - `(READONLY T TITLE ,(CONCAT FN " from " (FULLNAME ISTREAM)) - ITEM-NAME - ,FN BOUNDTABLE ,(TEDIT.ATOMBOUND.READTABLE *READTABLE*] + (TOTOPW WINDOW) + (RETURN)) + [SETQ TSTREAM (OPENTEXTSTREAM NIL NIL + `(PARABREAKCHARS NIL OPENWIDTH + ,(TIMES TEDIT.SOURCE.LINELENGTH (CHARWIDTH + (CHARCODE SPACE) + DEFAULTFONT] + (CL:WITH-OPEN-FILE (ISTREAM IFILE :DIRECTION :INPUT) + (* ; "Print the reader environment") + (PRINTOUT TSTREAM .FONT DEFAULTFONT 5) + (PRINT-READER-ENVIRONMENT (LISPSOURCEFILEP ISTREAM) + TSTREAM)) + (DSPFONT DEFAULTFONT TSTREAM) + [if (FNTYP DEF) + then (PRINTOUT TSTREAM "(" .FONT BOLDFONT .P2 ITEM " " .FONT DEFAULTFONT) + (PRINTDEF DEF 3 T NIL NIL TSTREAM) + (PRIN3 ")" TSTREAM) + elseif (SELECTQ (CAR DEF) + ((CL:DEFUN DEFMACRO) (* ; "Could look at :DEFINITION-NAME for definers in general, but we still have to pick out the arguments here (CADDR).") + (PRINTOUT TSTREAM "(" .P2 (CAR DEF) + " " .FONT BOLDFONT .P2 (CADR DEF) + .FONT DEFAULTFONT " " .P2 (CADDR DEF)) + (PRINTDEF (CDDDR DEF) + 3 T T NIL TSTREAM) + (PRIN3 ")" TSTREAM)) + (if (EQ ITEM (CAR DEF)) + then (PRINTOUT TSTREAM "(" .FONT BOLDFONT .P2 ITEM .FONT + DEFAULTFONT) + (PRINTDEF (CADR DEF) + 3 + (NOT TYPE) + NIL NIL TSTREAM) + (PRIN3 ")" TSTREAM) + elseif (EQ ITEM (CADR DEF)) + then (PRINTOUT TSTREAM "(" .P2 (CAR DEF) + " " .FONT BOLDFONT .P2 ITEM .FONT DEFAULTFONT) + (PRINTDEF (CDDR DEF) + 3 + (NEQ TYPE 'VARS) + T NIL TSTREAM) + (PRIN3 ")" TSTREAM) + else (PRINTOUT TSTREAM .FONT BOLDFONT .P2 ITEM ":" .FONT + DEFAULTFONT) + (PRINTDEF DEF 3 (NOT TYPE) + NIL NIL TSTREAM] + (TERPRI TSTREAM) - (* ;; "The windowprop allows for reprinting as a window action, or reprinting from a command that can find and reuse the previous (presumably unprettied) window.") + (* ;; "Since we are creating readonly Tedits, try to keep the TTY where it is.") - (WINDOWPROP (WFROMDS TSTREAM) - 'TF TFPROP) - (TOTOPW (WFROMDS TSTREAM] - elseif (EQ LOC 'FILE.NOT.FOUND) - then (printout T "file " IFILE " not found." T) - else (printout T FN " not found on " LOC "." T))) - (SETQ *LAST-DF* FN) - else (PRINTOUT T FN " has no function definition" T]) + [TEDIT TSTREAM (OR WINDOW 'TF) + NIL + `(READONLY T TITLE ,(CONCAT ITEM " from " IFILE) + ITEM-NAME + ,ITEM BOUNDTABLE ,(TEDIT.ATOMBOUND.READTABLE *READTABLE*] + + (* ;; "The windowprop allows for reprinting as a window action, or reprinting from a command that can find and reuse the previous (presumably unprettied) window.") + + (WINDOWPROP (WFROMDS TSTREAM) + 'TF TFPROP) + (TOTOPW (WFROMDS TSTREAM))) + (SETQ *LAST-DF* ITEM) + else (PRINTOUT T ITEM " has no " (CL:IF TYPE + (L-CASE TYPE) + "function") + " definition" T]) (PF-TEDIT-FROM-TEXT - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 14-Apr-2025 21:59 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 23-Sep-2025 23:28 by rmk") + (* ; "Edited 14-Apr-2025 21:59 by rmk") (* ; "Edited 7-Apr-2025 23:03 by rmk") (* ; "Edited 5-Dec-2024 22:20 by rmk") (* ; "Edited 26-Aug-2024 23:13 by rmk") @@ -175,7 +191,7 @@ ALLFILES) (if (EQ 0 (NCHARS FN)) then (TEDIT.PROMPTPRINT TSTREAM "Please select a function to display" T) - elseif (SETQ ALLFILES (WHEREIS FN '(FNS FUNCTIONS) + elseif (SETQ ALLFILES (WHEREIS FN '(FNS FUNCTIONS MACROS) T)) then (PF-TEDIT FN (CAR (OR (MEMB (FILENAMEFIELD THISFILE) ALLFILES) @@ -197,12 +213,19 @@ (DEFCOMMAND tf (FN FILE VERSION) (PF-TEDIT FN FILE VERSION)) +(DEFCOMMAND tc (ITEM FILE VERSION) (PF-TEDIT (FILECOMS ITEM) + FILE VERSION T 'VARS)) + +(DEFCOMMAND tv (ITEM FILE VERSION) (PF-TEDIT ITEM FILE VERSION T 'VARS)) + +(DEFCOMMAND tr (ITEM FILE VERSION) (PF-TEDIT ITEM FILE VERSION T 'RECORDS)) + (FILESLOAD (SYSLOAD) REGIONMANAGER VERSIONDEFS) -(ADDTOVAR TEDIT.CHARACTIONS (TEDIT-PF PF-TEDIT-FROM-TEXT)) +(ADDTOVAR TEDIT.CHARACTIONS (:TEDIT-PF PF-TEDIT-FROM-TEXT)) -(ADDTOVAR TEDIT.CHARBINDINGS (TEDIT-PF "Meta,t" "Meta,T")) +(ADDTOVAR TEDIT.CHARBINDINGS (:TEDIT-PF "Meta,t" "Meta,T")) (MOVD? 'PFCOPYBYTES 'PFI.MAYBE.PP.DEFINITION) @@ -218,5 +241,5 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1080 10900 (PF-TEDIT 1090 . 9166) (PF-TEDIT-FROM-TEXT 9168 . 10898))))) + (FILEMAP (NIL (1018 12068 (PF-TEDIT 1028 . 10218) (PF-TEDIT-FROM-TEXT 10220 . 12066))))) STOP diff --git a/lispusers/TEDIT-PF-SEE.LCOM b/lispusers/TEDIT-PF-SEE.LCOM index e8009bfcf989b770d3473188de808724114d460f..71170a2ae87a7796392a71b7fb1763ef69877fa1 100644 GIT binary patch literal 6127 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 literal 5498 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 ir9lkB3`fhk2>-vb