Skip to content

Commit cffbf7d

Browse files
committed
Add HCFILES for printing readable versions of Lisp source
1 parent e1f9ab9 commit cffbf7d

File tree

2 files changed

+96
-27
lines changed

2 files changed

+96
-27
lines changed

Diff for: new/printing/HCFILES

+96-27
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,62 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
22

3-
(FILECREATED " 9-Aug-2022 20:44:48" {DSK}<home>larry>medley>test>new>printing>HCFILES.;3 4231
3+
(FILECREATED "20-Oct-2022 16:13:17" {DSK}<home>larry>ilisp>test>new>printing>HCFILES.;5 7943
44

5-
:CHANGES-TO (FNS HCFILES)
5+
:CHANGES-TO (FNS PRETTYFILES HCFILES BADFILE)
6+
(VARS HCFILESCOMS)
67

7-
:PREVIOUS-DATE " 7-Aug-2022 22:40:13" {DSK}<home>larry>medley>test>new>printing>HCFILES.;2)
8+
:PREVIOUS-DATE " 9-Aug-2022 20:44:48" {DSK}<home>larry>ilisp>test>new>printing>HCFILES.;1)
89

910

1011
(PRETTYCOMPRINT HCFILESCOMS)
1112

12-
(RPAQQ HCFILESCOMS ((FNS BADFILE HCFILES)
13+
(RPAQQ HCFILESCOMS ((FNS BADFILE HCFILES PRETTYFILES)
1314
(INITVARS (HCFILES)
1415
(BADFILES))))
1516
(DEFINEQ
1617

1718
(BADFILE
18-
[LAMBDA NIL (* ; "Edited 22-Jun-2022 09:40 by larry")
19-
(pushnew BADFILES TFILE)
19+
[LAMBDA NIL (* ; "Edited 20-Oct-2022 15:40 by lmm")
20+
(* ; "Edited 22-Jun-2022 09:40 by larry")
21+
(pushnew BADFILES *FILE*)
2022
(LET [(STR (OPENSTREAM "BADFILES.TXT" 'APPEND]
2123
(SETFILEPTR STR -1)
22-
(PRINT TFILE STR)
24+
(PRINT *FILE* STR)
2325
(CLOSEF STR))
24-
(RETFROM 'HCFILES])
26+
(RETFROM (OR (STKPOS 'PRETTYFILES)
27+
'HCFILES])
2528

2629
(HCFILES
27-
[LAMBDA (TFILE DEST REDOFLG TOPDIRLEN)
28-
(DECLARE (SPECVARS TFILE)) (* ; "Edited 9-Aug-2022 20:44 by lmm")
29-
(if (NULL TFILE)
30-
then (SETQ TFILE MEDLEYDIR))
30+
[LAMBDA (*FILE* DEST REDOFLG TOPDIRLEN)
31+
(DECLARE (SPECVARS *FILE*)
32+
(GLOBALVARS BADFILE)) (* ; "Edited 20-Oct-2022 16:11 by lmm")
33+
(* ; "Edited 9-Aug-2022 20:44 by lmm")
34+
(if (NULL *FILE*)
35+
then (SETQ *FILE* MEDLEYDIR))
3136
(COND
32-
((DIRECTORYNAMEP TFILE)
37+
((DIRECTORYNAMEP *FILE*)
3338

3439
(* ;; "canonicalize")
3540

36-
(SETQ TFILE (DIRECTORYNAME TFILE))
37-
[OR TOPDIRLEN (SETQ TOPDIRLEN (CL:LENGTH (FILENAMEFIELD.STRING TFILE 'DIRECTORY]
41+
(SETQ *FILE* (DIRECTORYNAME *FILE*))
42+
[OR TOPDIRLEN (SETQ TOPDIRLEN (CL:LENGTH (FILENAMEFIELD.STRING *FILE* 'DIRECTORY]
3843
(CL:UNLESS DEST
3944
(ShellCommand (CONCAT "mkdir -p " (UNIX-GETENV "MEDLEYDIR")
4045
"/tmp/psfiles/"))
4146
(SETQ DEST (MEDLEYDIR "tmp/psfiles" NIL T T)))
4247

4348
(* ;; "first deal with files in this directory")
4449

45-
(for EXT in '("TED*" "SKETCH") do (for X in (DIRECTORY (CONCAT TFILE "*." EXT ";*"))
50+
(for EXT in '("TED*" "SKETCH") do (for X in (DIRECTORY (CONCAT *FILE* "*." EXT ";*"))
4651
do (HCFILES X DEST REDOFLG TOPDIRLEN)))
4752

4853
(* ;; " then deal with subdirs ")
4954

50-
(for X in (DIRECTORY (CONCAT TFILE "*")) when [for SKIP in '(">." ">dinfo>")
51-
always (NOT (STRPOS SKIP (L-CASE X]
55+
(for X in (DIRECTORY (CONCAT *FILE* "*"))
56+
when [for SKIP in '(">." ">dinfo>") always (NOT (STRPOS SKIP (L-CASE X]
5257
when (DIRECTORYNAMEP X) do (HCFILES X DEST REDOFLG TOPDIRLEN)))
53-
[(SETQ TFILE (INFILEP TFILE))
54-
(LET* ((TF (UNPACKFILENAME.STRING TFILE))
58+
[(SETQ *FILE* (INFILEP *FILE*))
59+
(LET* ((TF (UNPACKFILENAME.STRING *FILE*))
5560
(NAME (LISTGET TF 'NAME))
5661
(DIR (LISTGET TF 'DIRECTORY))
5762
(PSFILE (PACKFILENAME.STRING
@@ -78,23 +83,87 @@
7883
then (* ; " do nothing")
7984
(PRINTOUT T PSFILE " already there" T)
8085
elseif (EQ REDOFLG 'TEST)
81-
then (PRINTOUT T TFILE "-> " PSFILE T)
82-
(CLOSEF (OPENTEXTSTREAM TFILE))
83-
elseif (MEMBER TFILE BADFILES)
84-
then (PRINTOUT T "Skipping " TFILE " on BADFILES")
85-
else (PRINTOUT T "Converting " TFILE " to " PSFILE "...")
86-
(TEDIT.FORMAT.HARDCOPY (SETQ TEXTSTREAM (OPENTEXTSTREAM TFILE))
86+
then (PRINTOUT T *FILE* "-> " PSFILE T)
87+
(CLOSEF (OPENTEXTSTREAM *FILE*))
88+
elseif (MEMBER *FILE* BADFILES)
89+
then (PRINTOUT T "Skipping " *FILE* " on BADFILES")
90+
else (PRINTOUT T "Converting " *FILE* " to " PSFILE "...")
91+
(TEDIT.FORMAT.HARDCOPY (SETQ TEXTSTREAM (OPENTEXTSTREAM *FILE*))
8792
PSFILE T NIL NIL NIL (if (EQ REDOFLG 'IP)
8893
then 'INTERPRESS
8994
else 'POSTSCRIPT))
9095
(printout T " DONE" T)
9196
(CLOSEF? TEXTSTREAM]
9297
(T (PRINTOUT T "no such file " T])
98+
99+
(PRETTYFILES
100+
[LAMBDA (*FILE* DEST REDOFLG TOPDIRLEN)
101+
(DECLARE (SPECVARS *FILE*)
102+
(GLOBALVARS BADFILES)) (* ; "Edited 20-Oct-2022 16:12 by lmm")
103+
(* ; "Edited 9-Aug-2022 20:44 by lmm")
104+
(if (NULL *FILE*)
105+
then (SETQ *FILE* MEDLEYDIR))
106+
(COND
107+
((DIRECTORYNAMEP *FILE*)
108+
109+
(* ;; "canonicalize")
110+
111+
(SETQ *FILE* (DIRECTORYNAME *FILE*))
112+
[OR TOPDIRLEN (SETQ TOPDIRLEN (CL:LENGTH (FILENAMEFIELD.STRING *FILE* 'DIRECTORY]
113+
(CL:UNLESS DEST
114+
(ShellCommand (CONCAT "mkdir -p " (UNIX-GETENV "MEDLEYDIR")
115+
"/tmp/psfiles/"))
116+
(SETQ DEST (MEDLEYDIR "tmp/psfiles" NIL T T)))
117+
118+
(* ;; "first deal with files in this directory; ignore files with extensions for now%"*.LISP%" %"*.ILISP%"")
119+
120+
(for PAT in '("*.;") do (for X in (DIRECTORY (CONCAT *FILE* PAT))
121+
WHEN (NOT (DIRECTORYNAMEP X)) WHEN (INFILEP X)
122+
WHEN (CAR (OR (NLSETQ (LISPSOURCEFILEP X))
123+
(PROGN (PRINTOUT T "LISPSOURCEFILEP error" X)
124+
NIL)))
125+
do (PRETTYFILES X DEST REDOFLG TOPDIRLEN)))
126+
127+
(* ;; " then deal with subdirs ")
128+
129+
(for X in (DIRECTORY (CONCAT *FILE* "*"))
130+
when [for SKIP IN '("clos" "cltl2" "rooms>" ".>") always (NOT (STRPOS SKIP (L-CASE X]
131+
when (DIRECTORYNAMEP X) do (PRETTYFILES X DEST REDOFLG TOPDIRLEN)))
132+
[(AND (SETQ *FILE* (INFILEP *FILE*))
133+
(LISPSOURCEFILEP *FILE*))
134+
(LET* [(TF (UNPACKFILENAME.STRING *FILE*))
135+
(NAME (LISTGET TF 'NAME))
136+
(DIR (LISTGET TF 'DIRECTORY))
137+
(PSFILE (PACKFILENAME.STRING
138+
'EXTENSION "ps" 'NAME
139+
(if (EQ DEST T)
140+
then (* ; "with the source file")
141+
(CONCAT NAME ".pfi")
142+
else (CONCAT [PACK (SUBST '- '> (UNPACK (SUBSTRING DIR (IPLUS 2 TOPDIRLEN)
143+
-1]
144+
"-" NAME))
145+
'HOST
146+
(LISTGET TF 'HOST)
147+
'DIRECTORY
148+
(if (EQ DEST T)
149+
then DIR
150+
else DEST]
151+
(if (AND (NOT REDOFLG)
152+
(INFILEP PSFILE))
153+
then (* ; " do nothing")
154+
(PRINTOUT T PSFILE " already there" T)
155+
elseif (MEMBER *FILE* BADFILES)
156+
then (PRINTOUT T "Skipping " *FILE* " on BADFILES")
157+
else (PRINTOUT T "Converting " *FILE* " to " PSFILE "...")
158+
(CL:WITH-OPEN-STREAM (STR (OPENPOSTSCRIPTSTREAM PSFILE))
159+
(PRETTYFILEINDEX *FILE* NIL STR))
160+
(printout T " DONE" T]
161+
(T (PRINTOUT T "no such file " T])
93162
)
94163

95164
(RPAQ? HCFILES )
96165

97166
(RPAQ? BADFILES )
98167
(DECLARE%: DONTCOPY
99-
(FILEMAP (NIL (467 4163 (BADFILE 477 . 785) (HCFILES 787 . 4161)))))
168+
(FILEMAP (NIL (534 7875 (BADFILE 544 . 1006) (HCFILES 1008 . 4494) (PRETTYFILES 4496 . 7873)))))
100169
STOP

Diff for: new/printing/HCFILES.LCOM

2.76 KB
Binary file not shown.

0 commit comments

Comments
 (0)