Skip to content

Commit 49cb172

Browse files
authored
Start of a DEMO facility to run demos from inside Medley (#1118)
* Start of a DEMO facility to run demos and part of automatied testing from inside Medley Originally done for the BALISP 2023 talk. Possibly of use for building tests as well as demos.
1 parent cedc8d1 commit 49cb172

File tree

6 files changed

+156
-0
lines changed

6 files changed

+156
-0
lines changed

lispusers/DEMO

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
2+
3+
(FILECREATED "24-Mar-2023 11:59:58" {DSK}<home>larry>il>medley>lispusers>DEMO.;3 5662
4+
5+
:EDIT-BY "lmm"
6+
7+
:CHANGES-TO (VARS DEMOCOMS)
8+
9+
:PREVIOUS-DATE "24-Mar-2023 07:29:15" {DSK}<home>larry>il>medley>lispusers>DEMO.;2)
10+
11+
12+
(PRETTYCOMPRINT DEMOCOMS)
13+
14+
(RPAQQ DEMOCOMS ((VARS (HELPTIME 1)
15+
(AUTOBACKTRACEFLG 'ALWAYS))
16+
(COMS * BKSYSOBJCOMS)
17+
(FNS MEDLEY-CONTRIB OPEN-URL)))
18+
19+
(RPAQQ HELPTIME 1)
20+
21+
(RPAQQ AUTOBACKTRACEFLG ALWAYS)
22+
23+
(RPAQQ BKSYSOBJCOMS [(FNS BKSYSOBJ BKSYSOBJ.BUTTONEVENTINFN BKSYSOBJ.COPYBUTTONEVENTINFN
24+
BKSYSOBJ.DISPLAYFN BKSYSOBJ.FINDEXEC BKSYSOBJ.IMAGEBOXFN)
25+
(INITVARS (BKSYSOBJFNS (IMAGEFNSCREATE 'BKSYSOBJ.DISPLAYFN 'BKSYSOBJ.IMAGEBOXFN
26+
NIL NIL NIL 'BKSYSOBJ.BUTTONEVENTINFN
27+
'BKSYSOBJ.COPYBUTTONEVENTINFN])
28+
(DEFINEQ
29+
30+
(BKSYSOBJ
31+
[LAMBDA (STRING) (* ; "Edited 18-Mar-2023 12:52 by rmk")
32+
(IMAGEOBJCREATE STRING BKSYSOBJFNS])
33+
34+
(BKSYSOBJ.BUTTONEVENTINFN
35+
[LAMBDA (OBJ WINDOW) (* ; "Edited 18-Mar-2023 13:51 by rmk")
36+
(LET [(EXECW (BKSYSOBJ.FINDEXEC))
37+
(STR (IMAGEOBJPROP OBJ 'OBJECTDATUM]
38+
(CL:WHEN (MEMB (NTHCHARCODE STR -1)
39+
(CHARCODE (%) %])))
40+
(SETQ STR (SUBSTRING STR 1 -2)))
41+
(CL:WHEN EXECW
42+
(GIVE.TTY.PROCESS EXECW)
43+
(BKSYSBUF STR))])
44+
45+
(BKSYSOBJ.COPYBUTTONEVENTINFN
46+
[LAMBDA (OBJ WINDOW REGION) (* ; "Edited 3-Jan-2022 08:36 by rmk")
47+
(CL:WHEN (CAR (IMAGEOBJPROP OBJ 'COMPAREDATA))
48+
[COPYINSERT (CAR (IMAGEOBJPROP OBJ 'COMPAREDATA])])
49+
50+
(BKSYSOBJ.DISPLAYFN
51+
[LAMBDA (OBJ WINDOW) (* ; "Edited 18-Mar-2023 13:04 by rmk")
52+
(DSPFONT DEFAULTFONT WINDOW)
53+
(FOR I C (FONTARRAY _ (FONTMAPARRAY))
54+
(STRING _ (IMAGEOBJPROP OBJ 'OBJECTDATUM)) FROM 1
55+
DO (SELCHARQ (SETQ C (NTHCHARCODE STRING I))
56+
(EOL (TERPRI WINDOW))
57+
(NIL (RETURN))
58+
(IF (EQ C (CONSTANT (CHARCODE.DECODE FONTESCAPECHAR)))
59+
THEN (DSPFONT (ELT FONTARRAY (NTHCHARCODE STRING (ADD I 1)))
60+
WINDOW)
61+
ELSE (PRINTCCODE C WINDOW])
62+
63+
(BKSYSOBJ.FINDEXEC
64+
[LAMBDA NIL (* ; "Edited 18-Mar-2023 13:45 by rmk")
65+
66+
(* ;; "Finds the first exec with an Interlisp read table.")
67+
68+
(find W P in (OPENWINDOWS) suchthat (SETQ P (WINDOWPROP W 'PROCESS))
69+
(AND (STRPOS "EXEC" (PROCESSPROP P 'NAME)
70+
1 NIL T)
71+
(STREQUAL "INTERLISP" (READTABLEPROP
72+
(LISTGET (PROCESSPROP P 'PROFILE)
73+
'*READTABLE*)
74+
'NAME])
75+
76+
(BKSYSOBJ.IMAGEBOXFN
77+
[LAMBDA (OBJ IMAGESTREAM CURRENTX RIGHTMARGIN) (* ; "Edited 18-Mar-2023 13:04 by rmk")
78+
79+
(* ;; "Calculate the height of each line, and the width of the widest line.")
80+
81+
(* ;;
82+
 "Probably ought to compute the max height per line, at every font change, add it at each EOL.")
83+
84+
(SETQ IMAGESTREAM (GETSTREAM IMAGESTREAM 'OUTPUT))
85+
(FOR I C (STRING _ (IMAGEOBJPROP OBJ 'OBJECTDATUM))
86+
(FONT _ (FONTCREATE DEFAULTFONT NIL NIL NIL IMAGESTREAM))
87+
(HEIGHT _ 0)
88+
(LINELENGTH _ 0)
89+
(MAXLINELENGTH _ 0)
90+
(FONTARRAY _ (FONTMAPARRAY)) FROM 1
91+
DO (SELCHARQ (SETQ C (NTHCHARCODE STRING I))
92+
(EOL (ADD HEIGHT (FONTPROP FONT 'HEIGHT))
93+
(CL:WHEN (IGREATERP LINELENGTH MAXLINELENGTH)
94+
(SETQ MAXLINELENGTH LINELENGTH))
95+
(SETQ LINELENGTH 0))
96+
(NIL (* ; "end of string")
97+
(CL:WHEN (IGREATERP LINELENGTH MAXLINELENGTH)
98+
(SETQ MAXLINELENGTH LINELENGTH))
99+
(RETURN (CREATE IMAGEBOX
100+
XSIZE _ MAXLINELENGTH
101+
YSIZE _ HEIGHT
102+
YDESC _ (DIFFERENCE HEIGHT (FONTPROP FONT 'HEIGHT))
103+
XKERN _ 0)))
104+
(IF (EQ C (CONSTANT (CHARCODE.DECODE FONTESCAPECHAR)))
105+
THEN (SETQ FONT (FONTCREATE (ELT FONTARRAY (NTHCHARCODE STRING (ADD I 1)))
106+
NIL NIL NIL IMAGESTREAM))
107+
ELSE (ADD LINELENGTH (CHARWIDTH C FONT])
108+
)
109+
110+
(RPAQ? BKSYSOBJFNS (IMAGEFNSCREATE 'BKSYSOBJ.DISPLAYFN 'BKSYSOBJ.IMAGEBOXFN NIL NIL NIL
111+
'BKSYSOBJ.BUTTONEVENTINFN 'BKSYSOBJ.COPYBUTTONEVENTINFN))
112+
(DEFINEQ
113+
114+
(MEDLEY-CONTRIB
115+
[LAMBDA (REPO) (* ; "Edited 15-Mar-2023 08:05 by lmm")
116+
(OPEN-URL (CONCAT "https://github.com/Interlisp/" REPO "/graphs/contributors"])
117+
118+
(OPEN-URL
119+
[LAMBDA (URL) (* ; "Edited 24-Mar-2023 06:31 by lmm")
120+
(ShellBrowse URL])
121+
)
122+
(DECLARE%: DONTCOPY
123+
(FILEMAP (NIL (1038 5085 (BKSYSOBJ 1048 . 1211) (BKSYSOBJ.BUTTONEVENTINFN 1213 . 1668) (
124+
BKSYSOBJ.COPYBUTTONEVENTINFN 1670 . 1923) (BKSYSOBJ.DISPLAYFN 1925 . 2572) (BKSYSOBJ.FINDEXEC 2574 .
125+
3334) (BKSYSOBJ.IMAGEBOXFN 3336 . 5083)) (5264 5639 (MEDLEY-CONTRIB 5274 . 5490) (OPEN-URL 5492 . 5637
126+
)))))
127+
STOP

lispusers/DEMO-FEATURES.TEDIT

7.14 KB
Binary file not shown.

lispusers/DEMO-OVERVIEW.TEDIT

2.41 KB
Binary file not shown.

lispusers/DEMO-PROJECT.TEDIT

5.36 KB
Binary file not shown.

lispusers/DEMO.LCOM

3.08 KB
Binary file not shown.

lispusers/DEMO.TEDIT

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
DEMO -- utilities for running demos / tutorials in Medley
3+
4+
includes
5+
OPEN-URL (URL)
6+
(rename of ShellBrowse)
7+
MEDLEY-CONTRIB(REPO)
8+
shows GitHub contributors to given repo
9+
uses ShellBrowse
10+
BKSYSOBJ(string)
11+
12+
13+
DEMO-*.TEDIT
14+
contains scripts / TEDIT file talks
15+
add your own
16+
17+
18+
19+
BKSYSOBJ is the start of a facility
20+
21+
(TEDIT.INSERT.OBJ (BKSYSOBJ �(CONS NIL�) (TEXTSTREAM(WHICHW)]
22+
23+
24+
25+
You should see (CONS NIL) in the TEDIT stream, clicking should shove (CONS NIL into an Interlisp exec, waiting for ) or ]. (probably the image objectg should be shaded, may also have to set the RDTBL flag on BKSYSBUF for strings, but this is a start).
26+
27+
28+
29+

0 commit comments

Comments
 (0)