1
0
mirror of synced 2026-03-17 23:52:35 +00:00

Compare commits

...

315 Commits

Author SHA1 Message Date
Frank Halasz
e4c4bb9f8d Remove extra scheduled Medley builds that were added for testing purposes last weeek. (#1615) 2024-03-25 11:57:34 -07:00
Frank Halasz
43374862e5 Merge pull request #1604 from Interlisp/rmk114--Add-TEDIT.XYTOCH-for-Notecards
Add TEDIT.XYTOCH for Notecards
2024-03-25 11:28:54 -07:00
Frank Halasz
6cbacf754b Merge branch 'master' into rmk114--Add-TEDIT.XYTOCH-for-Notecards 2024-03-25 11:26:53 -07:00
Frank Halasz
ef6d2d5b03 Merge pull request #1606 from Interlisp/rmk115--TEDIT.NORMALIZECARET-all-visible-caret-to-top
TEDIT.NORMALIZECARET moves line with left-most selection to the top
2024-03-25 11:22:53 -07:00
rmkaplan
121a166047 TEDIT.NORMALIZECARET moves line with left-most selection to the top 2024-03-21 21:51:55 -07:00
rmkaplan
1a550ce499 Add TEDIT.XYTOCH for Notecards
Provide a simple public interface function
2024-03-21 10:34:43 -07:00
Larry Masinter
9232a0db90 add more info on setting up directories (#1600) 2024-03-21 05:57:22 -07:00
rmkaplan
0a37520014 Fix for TTYINPROMPTFORWORD's bad behavior on CR termination (#1565)
Brute-force addition of parameter to TTYIN that BKSYS/DELETE function (TTYINUNREADBUF) can access freely.  Seems to work.
2024-03-20 20:34:47 -07:00
rmkaplan
6155bcb430 Off-by-one in the interpretation of the event length (#1585) 2024-03-20 20:31:42 -07:00
Larry Masinter
8ca35635e5 first cut at better build explanation (#1507)
* first cut at better build explanation for how medley sysouts are made.
2024-03-20 15:49:04 -07:00
Matt Heffron
2f7972e78d The BUTTONS lispusers package will edit the button content in the TTY process. So, for example, a copy-paste to the EXEC that had the TTY is not possible. Changed to invoke EDITE as a new process, instead of in the TTY process. (#1594)
(Lots of changes in file because change from FAST-formatted to PRETTY-formatted file. Actually only 1 line of code changed.)
Second, cleaned up, attempt.
2024-03-19 21:28:33 -07:00
Frank Halasz
2a88ad712e Further cleanup on cpv script; (#1506)
* Further cleanup on cpv script; add back a ln_or_cp function and use it to cp only when ln fails for all instances of linking/copying in the script;  better handling of case where the unversioned dest file does not exist but version versions of the file DO exst.

* cpv: remove local declarations to be Posix-compliant
2024-03-19 21:24:35 -07:00
Frank Halasz
51cb65cf37 Fix issue with release workflow whereby not pushing docker image to docker hub / update versions on all actions (#1589)
* Update all workflows to use latest versions of actions to accomodate deprecation of Node 16; Change how inputs are handled due to changes in the inputs context in guthiub actions.

* Add more schedule kickoffs for buildRelease... for testing purposes
2024-03-18 22:02:43 -07:00
Frank Halasz
220c995cda Minor Tedit tweaks to help Notecards get rid of TEXTOBJs (#1586) 2024-03-18 17:22:37 -07:00
Matt Heffron
fcd0206611 Merge pull request #1582 from Interlisp/fix-wholine-package
Fix bug in setting package with wholine
2024-03-18 17:05:43 -07:00
Matt Heffron
d0edc69cd7 Merge branch 'master' into fix-wholine-package 2024-03-18 17:04:40 -07:00
rmkaplan
5ad5083c6d GREP: avoids tedit-file formatting, font change chars in Lisp source files, adds TGREP (#1513)
* GREP: avoids tedit-file formatting, font change chars in Lisp source files, adds TGREP

* Oops, TAB is not a fontchange character

* Updated documentation GREP.TEDIT

* Avoids EXPORTS.ALL by doing SYSREC1

* Don't change the outcharfn

* Make it work on Tedit files

* Print out the filename instead of the stream for Tedit files
2024-03-18 16:21:06 -07:00
Larry Masinter
8e07e25b9a import an LOOP macro (#1579)
* import an LOOP macro
* add to loadup

* change CML-LOOP to XCL-LOOP finish
* Change package to LOOP, no nickname; 'loop' and 'loop-finish' are in LISP package
 Install copyright/acknowledgement
2024-03-16 19:57:20 -07:00
rmkaplan
c66583e7b0 Rmk110 fix unpackfilename.string (#1573)
* ADIR:  prevent segmentation fault on Intel macs

* Move the coercion of STRUCTURE and GENERATION down into UNPACKFILENAME.STRING

It was just in FILENAMEFIELD and FILENAMEFIELD.STRING, I think the coercion should be uniform
2024-03-16 19:47:53 -07:00
Larry Masinter
a86c5ad145 start with makefile new 2024-03-16 12:11:19 -07:00
rmkaplan
dd60b85658 IMTEDIT and IMINDEX (#1571)
Backquote commas were escaped in IMTEDIT.  Also put the AFTERHARDCOPYFN on the text proplist, removed the advice in IMINDEX.
2024-03-15 15:55:24 -07:00
rmkaplan
b038a6b16e Rmk112 fix tedit hardcopy smash (#1580)
* Hardcopy wasn't binding the internally created textstreams, only the textobjs

* Putting the stream instead of the textobj in hardcopy lines

* TEDIT-SCREEN:  Fixed \FORMATLINE to deal with a last-line ending in white space

* Added TEDIT-STRESS

Not part of the loadup, a collection of offline routines to stress various Tedit interfaces
2024-03-15 12:31:19 -07:00
rmkaplan
5e5fea9ceb Rmk107 rename lafite files take2 (#1566)
* First commit:  git mv of all XXX.* to LAFITE-XXX.*

* Update all internal references to renamed Lafite files.

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Larry Masinter <LMM@acm.org>
2024-03-13 11:49:16 -07:00
rmkaplan
44e42940a9 Tedit 4th round (#1352)
* INSPECT:  Sort datatype fields alphabetically, fixed a small bug

* INSPECT:  Sort only DATATYPE records

* VIRTUALKEYBOARD:  fix loadup

* Reorganizing VIRTUALKEYBOARDS as described in #1267

* KEYBOARDEDITOR:  fixed one bug, still is out of step

* MEDLEYDIR: Pack DSK as the default HOST on the value of (UNIX-GETENV "MEDLEYDIR")

* Move KEYBOARDCONFIGS KEYBOARDEDIT to library/virtualkeyboards

This collects all files relevant to VIRTUALKEYBOARDS into the same subdirectory

* NEARESTCORNER must be onscreen  (addresses #1294

Mouse jumps to the nearest onscreen corner of the ghost region

* EQUALALL tests equivalence of bitmaps and big bitmaps

* Oops, off by one

* INSPECT:  had wrong test in deciding whether to sort or not

* Improve check for closed stream in \UFSCloseFile.

Check if the (STREAM ACCESS) bits are NIL, indicating a closed stream, and
if so do not attempt to close the file again

* COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS

Relatively minor cleanups, little or no functionality improvements

* Remove calls to OPENFILE

OPENFILE is a residual Interlisp function that returns a litatom instead of a stream.  In almost all cases, this immediate causes an error that litatom files are no longer supported.  I have found (FINDCALLERS) all the examples in lispusers/sources/library/ and replaced OPENFILE with OPENSTREAM (except for the calls from \PEEKPUP and \PEEKNS, that I didn't track down).  There was a trivai call in COMPILE.FILECHECK in COMPILE, but that function is not called anywhere.  So I removed it.

* ADIR:  remove OPENFILE calls, also another stab at \COPYSYS

With respect to \COPYSYS, this replaces the draft PR #1263.  This applies TRUEFILENAME at the start, but remembers whether it was in fact a pseudohost and restores that for the return value.  So if you start in a pseudo world you end up there.

* Next version of TEDIT core files

* Update

* Update

* UPDATE

* UPDATE

* UPDATE:  FORCE-END fix

* FILEIO:  OPENSTREAM parameters default to STREAMPROP

also add LINELENGTH

* Expose useful subfunctions

* TEDITDORADOKEYS - compatibility with new declarations

* Update tedit-exports.all

* * removed from title when all changes are undone

* Delete old tedit fiels

* Add TEDIT.FILEDATE

* REGISTER-TYPED-REGION creates a new TYPED-REGIONS entry

If a window is closed whose region is of an as-yet-unknown type, a new entry will be added implicitly to TYPED-REGIONS to that that region and future regions of that type can be recycled.

* COMPAREDIRECTORIES:  Get AUTHOR only if selected

This may provide a little speed up.  But of more importance, almost all the array crashes I am seeing are underneath (GETFILEINFO xxx 'AUTHOR).  The UFS implementation may be smashing array space, or maybe it is just detecting the corruption.  For now, I'm eliminating this potential source of bad behavior.

* Hilighting and caret flashing in split windows

* A little more on window splitting caret/hilights

* Rename caret functions

* REGIONMANAGER:  Compatibility with REGIONMANAGER PR

* EXAMINEDEFS: Better interpretation of TYPE NIL = (FNS FUNCTIONS) with better formatting

* Refining caret behavior, importing separate changes also in other PRs for compatibility

* Mostly dealing with highlighting and caret flashing in split windows

* FONTPROFILE: specvars declaration for cleanliness

* Prep for UTF8, a little performance tuning

* Meta EOL = non-paragraph linebreak

* Back-scrolling based on linebreak characters, not paragraph breaks, also eliminate obsolete code

* FIddling around with window titles (getting *'s when changed), dealing with titles  not computed by Tedit

* Recompile DOC-OBJECTS because \DIRTY bit has changed

* COMPARETEXT: fixed to avoid EOF error if EOL gets confused

* CLIPBOARD (bug fix also a separate PR)

* \TEXTBOUT of EOL doesn't create a paragraph, though typing does

Otherwise, every line in a plaintext or lisp sourcefile is a separate paragraph, which adds unnecessary overhead.

* TEDIT-PCTREE:  Move some straggling piece and btree functions to their proper home

* Change \TEDIT2 to \TEDIT1 as a way of recognizing a Tedit process

* Prepping for more speed up in SEEing of large source files

* Miscellaneous stability/maintenance/performance changes

Fixes the TEDIT.TITLEMENUFN problem, adds TEDIT.COLLECT.OBJECTS

* TEDIT-FILE :  fix readers for obsolete Tedit file formats

* Cleanout misplaced pane/ files

* Fix for most of the lispusers/ hardcopy failures

They all had to do with the diacritic overbar in Env-os.

* Another diacritic glitch

* MODERNIZE:  Fixed off by one bug in NEARESTCORNER

* Update tedit-exports.all

* The "HELP PURGE" problem, plus a little cleanup

* hide initial caret in menus

* TEDIT-LOOKS, TEDIT-PCTREE:  prep for reducing FIXP's

* LLSYMBOL's FILEMAP was also incomplete

This update hopefully won't reveal any other problems

* Introduce NOTSPLITTABLE TEXTPROPERTY

If T, window-splitting cannot happen for this text stream.  Hopefully removes need for Notecards advice on \TEDIT.SPLITW.

* PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documentation

Documentation addresses #1303 .  Using TRUEFILENAME makes sure it always goes to a ground instance in e.g.  (PSEUDOHOST 'MEDLEY '{MEDLEY}).

* Don't allow Put of readonly file

* Inverted selection (black) hilights in readonly texts

More visible than a little underline when there is no blinking cursor

* Remove redundant type-tests

The I.S.OPRs test the I.V. type for lines and pieces, so that field accesses can safely be fast inside the loops

* MULTIPLE-HARDCOPY: at least fix obvious issues with new Tedit

Also avoided FILELST as a bound variable.  This needs work and maybe a little support from Tedit--it shouldn't be advising and unadvising a Tedit function.

* TEDIT-SELECTION:  Fix hilighting glitch with READONLY texts

(Shift select should have its usual highlighting)

* TEDIT menus are not splittable

* TEDIT-FILE fixes imageobj bug in old Tedit formats

Revealed by running HCFILES

* Improve conversion of unformatted to formatted

Also cache HINTPC inside \CHTOPC

* Fix to pageregion problem in old versions

Also adds TEDIT.NCHARS

* Code cleanup after testing faster scrolling

* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention

* Recompile callers of \CHECKEOLC macro

* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention

* Recompile callers of \CHECKEOLC macro

* Mostly work on scrolling and  HCFILE issues

* Trying to fix PSEUDHOSTS conficts

* PDFSTREAM

Backing up to fix merge problems

* update EXTERNALFORMAT to avoid conflicdt

* Mostly diacritic display and hardcopy

* Change DIRTY field to LDIRTY

* Added new user function TEDIT.FINDLOOKS

* WINDOWOBJ:  READIMAGEOBJ doesn't ask for permission

If the image object is on a hyphenated file and it can find a nonhyphenated sister, it loads that.  If that doesn't provide the getfn, it tries the original file.

* If ANY and no CR after LF, return EOL instead of CR

* Move charset management to externalformat (addresses #1454)

Removed IMCHARSET from IMAGEOPS declaration, added FORMATCHARSETFN to EXTERNALFORMAT, put XCCS charset handling in the XCCS externalformat.

* XCCS, fixed a glitch

* Fix EXTERNALFORMAT clash

* Mostly CHARENCODING

* TEDIT-PF-SEE:  Use TEDIT.ATOMBOUND.READTABLE

Tedit word-selection → atom selection in source files

* For merging with new charset arrangement

* Mostly work on hardcopy-display

Also asks before it saves a plaintext file as a formatted file

* Changing to hardcopy display doesn't mark "dirty"

* Mostly Put and Get, reorganizing for UTF8, plus odds and ends

* Straggler: TMAX-XREF.LCOM

* Meta-EOL

* Fix and extend page-format updates

Original TEDIT.PAGEFORMAT was unsafe and less useful.  Also did not update history for undoing.

* Use window's screen's height/width to test offscreen

* Write and read unbreakable character property

* Don't suggest put-name if TEMPLATE

* 2 point hilight if readonly

* Mostly proper treatment of invisible pieces and forward char-delete

* Forward word delete, better paragraph selection, cleanup, lisp source atom selection

* fix conflicts for merge

* fix incompatible merge

* Updates including UTF-8 plaintext files

Other continuing cleanups

* Continue edit after writing out UTF-8 plaintext

* TEDIT-FILE   EOL stays EOL after putting to a different EOL convention

for continued editing.

* Update EXTERNALFORMAT from master

* Get rid of needless file change

* EOL processing

* Fix Lafite glitches

Including relaxing constraints on the order of pieces in Tedit files.

* Unsplit any existing panes before main window is reused

* TEDIT-FILE glitch

* Better TEDIT.FORMATTEDFILEP, more TEDIT.CONCAT

* Headings with concatenated Tedit files

* Adjust page headers and numbers

* Reshaping reestablishes the YBOT of PLINES

* Tighten up on binable, better error when binning on empty textstream

* TEDIT.PUT.STREAM, left click gives point selection

* TEDIT.PUT.STREAM

* Unhighlighting of menu buttons

related to point vs. single-character selection

* Better behavior when moving to foreign target

also some cleanup of the file-putting code

* More improvements to cursor tracking

* Single-char shift-selection (lost an edit)

* Try it again

* Suppress EOF error

* BIN instead of GETBASEBYTE, more cleanup of buttonevent and TEDIT.PUT

* Mostly work on process and menu configuration

* A little more careful in choosing the current selection (as opposed to prior search target) for find and substitutes

Use the selection if it is greater than a single character, otherwise the prior target.  meta,G is available for clearly just repeating the prior target.

* Make the names of the Tedit menu process more distinctive

E.g. TEDIT-Charlooks instead of TEDIT#2.  TEDIT and TEDIT#n stand out as the document processes.

* Logically correct undo of Move between different documents

The destination document keeps the delete event in the source, if it is still the most recent source event when the move is undone, the deletion is undone in the source.  Otherwise, the deletion is ignored.

* Line spacing reflects offsets

* TEXTPROP returns length

* TEDIT-HISTORY:  Redo of a move just does a new-location insert

* remove unwanted cpv from PR

* Removed the unecessary SPTEXTOBJ field in SELPIECES, move work on move-undo

* Fix hardcopy bug

* More work on the hardcopy interface

* TEDIT-FILE addresses put of empty stream (issue #1577)

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Larry Masinter <lmm@acm.org>
2024-03-11 23:12:46 -07:00
rmkaplan
35b7195ed5 DINFO was expecting to use a closed textstream without reopening (#1576)
* DINFO was expecting to use a closed textstream without reopening

Not sure why it got closed.  Also fixed some escaped backquote commas (not sure that was necessary, but...)

* Oops, dropped out the PROG1
2024-03-10 21:59:59 -07:00
rmkaplan
10d83c5f5d Extended EQUALALL with BLOCKEQUALP test for equivalent arrayblocks (#1480)
HPRINT:  Better BLOCKEQUALP, still heuristic on true blocks
2024-03-04 21:30:04 -08:00
Larry Masinter
a80788201f Fix \MAPMDS, compile STORAGE lispusers, fixes HARDRESET problem too (#1159)
* Fix \MAPMDS, compile STORAGE lispusers, fixes HARDRESET problem too

* don't use BCOMPL on LLDATATYPE, needs FAKE-COMPILE-FILE
2024-03-04 16:26:24 -08:00
rmkaplan
3c237c1937 INSPECT: Sort datatype fields alphabetically, fixed a small bug (#1247)
* INSPECT:  Sort datatype fields alphabetically, fixed a small bug

* INSPECT:  Sort only DATATYPE records

* INSPECT:  had wrong test in deciding whether to sort or not

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2024-03-04 15:00:41 -08:00
Larry Masinter
174bbe8e14 Fix problems due to FX record incompatibly on SPY, miscompiled (#1561)
* Fix problems due to FX record incompatibly on SPY, miscompiled

* PROC recompile for safe measure

* Add ASTACK.LCOM, also needed recompile!
2024-02-28 18:33:28 -08:00
Paolo Amoroso
d48bd9f77a Update documentation link (#1559)
Replace the documentation link to the Wiki with the link to the Using Medley page of the project site.

Signed-off-by: Paolo Amoroso <info@paoloamoroso.com>
2024-02-27 11:09:37 -08:00
Frank Halasz
76a6e26faa Update APPS-INIT to update NOTECARDSDIRECTORIES appropriately (#1555)
* Add to APPS-INIT code to always update NOTECARDSDIRECTORIES since automatic builds do not set this correctly

* Add AROUNDEXITFN to reset NOTECARDSDIRS after returning from logout, etc.
2024-02-25 19:59:10 -08:00
Matt Heffron
f8521c612e The setting to NEVER wasn't suppressing asking. (#1550)
The issue was incorrectly getting the ROOTFILENAME as where to attach the COPYRIGHT property.
2024-02-24 19:14:31 -08:00
Larry Masinter
de7a1e1deb Add (FILES LAFITE) to UNIXMAIL -- must load lafite before loading UNIXMAIL (#1553) 2024-02-24 19:03:29 -08:00
Larry Masinter
49cb172e3d 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.
2024-02-23 17:55:20 -08:00
Matt Heffron
cedc8d1e11 Merge pull request #1532 from Interlisp/mth4--Add-default-to-suppress-DUMPDB-asking-copyright-owner
DUMPDB annoyingly always asked COPYRIGHT owner when dumping DB
2024-02-20 17:24:19 -08:00
Larry Masinter
496fa408c2 Make macros that expand to fetch or replace note the record fields used. (#1548) 2024-02-20 15:16:55 -08:00
Matt Heffron
60e390789c Change the default value for DEFAULTDATABASECOPYRIGHTOWNER to 'NEVER.
This is so dumping the database never asks about copyright. Copyright on these database files is pretty nonsensical.
2024-02-19 16:34:26 -08:00
Matt Heffron
4dec18527e Made this "smarter":
If COPYRIGHTFLG is NEVER
   or DEFAULTDATABASECOPYRIGHTOWNER is NIL
   or the .DATABASE file already has a COPYRIGHT property
Then
   No need to do anything special (it already shouldn't ask)
Else If DEFAULTDATABASECOPYRIGHTOWNER
   is NONE or NEVER Then Set the COPYRIGHT to NONE (I.e., never mention it again.)
   is SAME Then Same as the source file. If it doesn't have one, then just normal handling
   is DEFAULT Then Use the general default for copyright: DEFAULTCOPYRIGHTOWNER
   Otherwise: Enable the general copyright defaulting.
              Hopefully, DEFAULTDATABASECOPYRIGHTOWNER is one of the COPYRIGHTOWNERS keys.
2024-02-07 18:47:37 -08:00
Matt Heffron
3ca4495c76 Added NONE in addition to NEVER as DEFAULTDATABASECOPYRIGHTOWNER to preset to (NONE).
The change from USEDFREE to SPECVARS may be irrelevant.
I thought that was the issue when using NONE as DEFAULTDATABASECOPYRIGHTOWNER didn't do as expected.
The DEFAULTCOPYRIGHTOWNER must be one of the "real" entry keys on COPYRIGHTOWNERS.
2024-02-06 21:31:30 -08:00
Matt Heffron
6eeccb40cb DUMPDB annoyingly always asked COPYRIGHT owner when dumping DB (unless COPYRIGHTFLG suppressed).
I added DEFAULTDATABASECOPYRIGHTOWNER (INITVARS to NIL; to preserve current behavior).
If it is EQ to NEVER, then the COPYRIGHT property on the file.DATABASE is set to (NONE) to forever suppress asking about copyright.
If any other non-NIL value, then COPYRIGHTFLG is bound to 'DEFAULT, and DEFAULTCOPYRIGHTOWNER is bound to the value of DEFAULTDATABASECOPYRIGHTOWNER.
2024-02-06 20:49:51 -08:00
Frank Halasz
2647d98f8f Merge pull request #1519 from Interlisp/fgh_modernize-for-nc
In MODERNIZE, fixed \MODERNIZED.TEDIT.BUTTONEVENTFN so it can work with Notecards
2024-02-05 15:12:13 -08:00
Frank Halasz
b52015e71d \MODERNIZED.TEDIT.BUTTONEVENTFN passes down a hardwired value for TITLEPROPORTION of NIL. This prevents the Notecards left button title bar menu from ever being shown. Replaced this hardwired NIL value with (WINDOWPROP W 'MODERNIZE.TITLEPROPORTION) so that Notecards can set this Windowprop and hence get its left title bar menu. 2024-01-27 14:06:45 -08:00
Matt Heffron
39ee2ecb5d Merge pull request #1518 from Interlisp/mth1--a-few-UNICODE-cleanups
A few fixes to UNICODE that I stumbled across.
2024-01-26 16:12:25 -08:00
Matt Heffron
a90b7ed73d A few fixes to UNICODE that I stumbled across.
READ-UNICODE-MAPPING-FILENAMES returned a bare string if FILESPEC matched 1 file (first clause of the (OR...) in join), this caused READ-UNICODE-MAPPING to fail.
SHOWCHARS referenced variable CODE that should have been C
Added FILETYPE property to UNICODE to specify TCOMPL compiler.
(Other changes are formatting by pretty printer, not mine.)
2024-01-26 14:38:04 -08:00
rmkaplan
54b2607070 Removed STORAGE.LCOM (#1511) 2024-01-19 23:53:12 -08:00
rmkaplan
971e8936b6 Replace \TEDIT.FORMATTED1 with TEDIT.FORMATTEDFILEP (#1508)
Internal \TEDIT.FORMATTED1 is being decommissioned
2024-01-19 21:49:45 -08:00
rmkaplan
e276460836 HRULE: More informative error messages (#1501) 2024-01-14 17:46:24 -08:00
Frank Halasz
ab818ff335 Merge pull request #1500 from Interlisp/repair-cpv
oops missing edit cpv
2024-01-12 17:23:16 -08:00
Larry Masinter
47d77542be oops missing edit cpv 2024-01-12 11:59:32 -08:00
rmkaplan
934d0fb7a4 Move charset management to externalformat (addresses #1454) (#1455)
* Move charset management to externalformat (addresses #1454)

Removed IMCHARSET from IMAGEOPS declaration, added FORMATCHARSETFN to EXTERNALFORMAT, put XCCS charset handling in the XCCS externalformat.

* XCCS, fixed a glitch

* UNICODE: Remove merge conflict

* Fix typo CLFUNCALL, MAKEFILE NEW and BCOMPL (versions didn't match)

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2024-01-12 11:42:22 -08:00
Frank Halasz
6420bdcf27 Fix for Issue #1472 (loadup failure on btrfs): update how cpv scripts handles hardlink versus copy (#1497) 2024-01-12 05:34:57 -08:00
rmkaplan
1d6e43e1ea Minor fixups (typos, formatting) to a few existing documentation files (#1470)
* Mostly minor fixups (typos, formatting) to a few existing documentation files

Plus converting the Unicode documentation from TXT to formatted

* Update UNICODE.TEDIT

Previous version did not have page-looks (heading location etc.)

* UNICODE.TEDIT:  write unbreakable charlook property

* Delete UNICODE.TEDIT

Master has a newer version, trying to eliminate conflict
2024-01-10 12:31:28 -08:00
rmkaplan
8837c61f85 SKETCHOPS (unhyphenated) should have been included (#1464) 2024-01-10 10:49:04 -08:00
rmkaplan
18aae01362 Suppresses size coercion for Titan 12 (#1476)
* Suppresses size coercion for Titan 12

* Typo
2024-01-10 10:48:03 -08:00
rmkaplan
a84242561a Rmk100 unicode utf 8 update (#1489)
* UNICODE:  a few additional Tedit helpers, revised documentation

* New JIS files (courtesy of Peter)

* Updated mapping files (courtesy of Peter Craven)

* UNICODE:  changed SHOULDNT to ERROR
2024-01-10 10:47:16 -08:00
Matt Heffron
70885c5a19 Merge pull request #1487 from Interlisp/mth-LockXorShift-issue-1486
change for CapsLock & Shift to be XOR vs OR.
2024-01-10 10:02:50 -08:00
Matt Heffron
57de705f39 Fix error in flag testing logic.
(No more midnight coding!)
2024-01-03 16:12:23 -08:00
Matt Heffron
7c3fa261c7 Rename KEYBOARD.SHIFTXORLOCK to SHIFTXORLOCKFLG.
(More inline with Medley/Interlisp convention.)
2024-01-03 12:37:30 -08:00
Matt Heffron
7fe4d2dcca Merge branch 'mth-LockXorShift-issue-1486' of https://github.com/Interlisp/medley into mth-LockXorShift-issue-1486
# Includes changes to make Shift XOR Lock behavior be conditional on GLOBALVAR KEYBOARD.SHIFTXORLOCK:
#	sources/LLKEY
#	sources/LLKEY.LCOM
The changes were made before the merge, and then Stashed.
2024-01-03 00:41:28 -08:00
Matt Heffron
30a4697d75 On Branch_medley-231217-3727653e: LLKEY 2024-01-03 00:22:14 -08:00
Matt Heffron
60a766574d index on Branch_medley-231217-3727653e: 3727653e Rmk96 move sketch files to library/sketch (#1446) 2024-01-03 00:22:14 -08:00
Matt Heffron
25a18f6bc0 Merge branch 'master' into mth-LockXorShift-issue-1486 2024-01-02 22:59:03 -08:00
Matt Heffron
6558a49adb change for CapsLock & Shift to be XOR vs OR. 2024-01-02 19:46:15 -08:00
Larry Masinter
4b30aa1640 update medley README to match new build instructions (#1458)
* update medley README to match new build instructions

* Remove NUL character

* Fix grammatical and typographic errors reported by Matt

* Fixed a few typos, some punctuation, a bit of wording, and removed the Docker references (Docker related files aren't in the repo anymore).

* A few more fixes

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Matt Heffron <heffron@alumni.caltech.edu>
2024-01-01 21:35:58 -08:00
rmkaplan
3727653e23 Rmk96 move sketch files to library/sketch (#1446)
* Move all SKETCH files from library/ to library/sketch/

and rename subsidiary files SKETCHXXX to SKETCH-XXX, according to our hyphen convention.  This will allow SKETCH and all its subsidiary files to be loaded automatically when the sketch GETFN is required to display an image object.

* New files again

Somehow GITFNS produced smashed copies on the first attempt.  May have to do with the fact that Medley doesn't always report that it couldn't create a new directory, or otherwise behaves badly in that situation.
2023-12-17 16:42:59 -08:00
rmkaplan
b1294ea5e9 Rmk94 fix checkeolc macro (#1435)
* EXTERNALFORMAT: \CHECKECOLC macro confusedf ANY vs CR EOL convention

* Recompile callers of \CHECKEOLC macro

* If ANY and no CR after LF, return EOL instead of CR
2023-12-09 22:50:39 -08:00
Matt Heffron
2a9076bede Change files DEFINE-FILE-INFO (i.e., the IL:MAKEFILE-ENVIRONMENT) to fix issue #1447 (#1448) 2023-12-09 22:42:28 -08:00
rmkaplan
72456ce4ec WINDOWOBJ: READIMAGEOBJ doesn't ask for permission (#1449)
If the image object is on a hyphenated file and it can find a nonhyphenated sister, it loads that.  If that doesn't provide the getfn, it tries the original file.
2023-12-09 22:41:43 -08:00
rmkaplan
c8c4768315 WINDOWOBJ: Better handling of unknown image objects (#1436)
* WINDOWOBJ: Better handling of unknown image objects

2 changes:   If WHEREIS says that an unknown getfn is on FOO-FIE and FOO>FOO exists, then offer FOO in the mouseconfirm.  This should get all the support code (e.g. TMAX is offered instead of TMAX-NUMBER).  Issue #748.  Separately, if the getfn is not found when the file is opened (so the image object is encapsulated), the encapsulated imagebox fn will upgrade the image if the getfn exists when the object is redisplayed.

* Glitch
2023-12-02 15:51:20 -08:00
Larry Masinter
735108ecb7 Pull in newer or missing library/*.tedit files (#1398) 2023-11-29 14:05:09 -08:00
rmkaplan
f735fca83e POSTSCRIPTSTREAM: POSTSCRIPTFILEP applies also to closed files (#1434) 2023-11-29 07:14:00 -08:00
rmkaplan
560def37bc PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documenta… (#1385)
* PSEUDHOSTS and .TEDIT: Apply TRUEFILENAME on PREFIX, update documentation

Documentation addresses #1303 .  Using TRUEFILENAME makes sure it always goes to a ground instance in e.g.  (PSEUDOHOST 'MEDLEY '{MEDLEY}).

* PSEUDOHOSTS.LCOM and .TEDIT

Appear to have gotten out of step
2023-11-29 07:11:37 -08:00
rmkaplan
41f32b7db5 INTERPRESS fixes some of the Asciifont-to-NS character mappings, MATHTONS is obsolete (#1413)
* Fixes some of the character mappings from Ascii fonts into NS, moves Math mappings into Interpress

The separate lispusers/MATHTONS is now obsolete.

* INTERPRESS:  Add back empty ASCIITONSTRANSLATIONS

Turns out they were intended, not a mistake.  But that was just a shorthand for saying MODERN, as a fall back.  I made that explicit.
2023-11-29 07:09:38 -08:00
rmkaplan
ab831a46ba Add a hook to extend FILEBROWSER SEE, PDFSTREAM uses it (#1414)
So SEE of a PDF file should open up a desktop window in a pdf viewer.  (This uses PDFILEP, which looks inside the file, not at the extension.  So it might try to open a file with a wrong extension, and the viewer might fail.)
2023-11-29 07:04:58 -08:00
rmkaplan
f1cf759098 LLSYMBOL's FILEMAP was also incomplete (#1381)
This update hopefully won't reveal any other problems
2023-11-29 06:58:58 -08:00
rmkaplan
017bf88a3a FILEIO: OPENSTREAM parameters default to STREAMPROP (#1335)
also add LINELENGTH
2023-11-29 06:47:14 -08:00
Nick Briggs
b2f750e549 Restore NSPROTECTION files to lispusers (#1430) 2023-11-22 22:05:26 -08:00
Frank Halasz
8cf17ce950 Fix loadup-apps-from-full.sh so that it fails gracefully when a notecards directory cannot be found (#1428) 2023-11-21 21:40:19 -08:00
Larry Masinter
008aff1d25 EDITBMPATCHES already in EDITBM; NEW-SKETCH-COLOR saved but in Obsolete (#1379) 2023-11-20 22:58:06 -08:00
Larry Masinter
214cfb8674 Add some files to set analyzed in fuller.database (#1425) 2023-11-20 22:56:11 -08:00
Larry Masinter
2e7b88d0cc Recompile files that seemed to have \IS.NO.RANDACCESSP in compiled code (#1417) 2023-11-20 22:48:37 -08:00
Frank Halasz
14fbff63cf Merge pull request #1419 from Interlisp/fgh_LDEKBDTYPE
Set LDEKBDTYPE to X in run-medley - if not already set.  Works around issue with loading VIRTUALKEYBOARDS
2023-11-17 23:20:26 -08:00
Frank Halasz
bec32f475a Merge pull request #1420 from Interlisp/fgh_ShellBrowserGit
Fix minor issue in ShellBrowser - when using the git path was missing the web--browse subcommand.
2023-11-17 23:19:31 -08:00
rmkaplan
6e845d747f ADIR fix UNPACKFILENAME.STRING address #1416 (#1421)
The early . was seen as starting an extension, the ! then was seen as starting a version.  When the other marks caused those hypotheses to be revised, the extension's end wasn't being revised
2023-11-14 07:11:58 -08:00
Frank Halasz
459aeef74a Merge branch 'master' into fgh_LDEKBDTYPE 2023-11-13 13:07:55 -08:00
Frank Halasz
19ceac6515 Fix the git case in ShellBrowser. Was missing the web--browse argument. 2023-11-13 13:04:16 -08:00
Frank Halasz
914604a6eb Set LDEKBDTYPE to X in run-medley - if not already set. Fixes issue with loading VIRTUALKEYBOARDS 2023-11-13 12:42:34 -08:00
Larry Masinter
05f3ad19eb Update CLHS reference to use Interlisp CHLS instead; use UNIXUTILS ShellBrowser (#1412) 2023-11-13 12:12:56 -08:00
Frank Halasz
c62c183ae4 Update ShellOpen to handle versioned files; add ShellOpen into SEE-PDF in place of MacOS-specific open. (#1410)
* Update PDFSTREAM: integrate ShellOpen into PDF-SEE in place of MacOS specific calls; update how PDFCONVERTER is set to fix bug whereby it was always ps2pdf

* Fix ShellOpen so that if a file to open is versioned then that file is copied to tmp and its filename is changed from foo.pdf;25 to foo~25~.pdf and this tmp is passed to the opener instead of the original file.  This is so that the extension is preserved as the last thing when there are versions.  The extension as the last thing is used by most openers to determine the file type.

* Oops. Checked in the wriong versions of UNIXUTILS(.DFASL) last commit.  Correcting that here.
2023-11-11 11:05:24 -08:00
rmkaplan
328d3f53cd NEARESTCORNER must be onscreen (addresses #1294 (#1295)
* NEARESTCORNER must be onscreen  (addresses #1294

Mouse jumps to the nearest onscreen corner of the ghost region

* MODERNIZE:  Fixed off by one bug in NEARESTCORNER
2023-11-03 17:45:49 -07:00
rmkaplan
5b90251210 Patch to REGIONMANAGER and ADISPLAY for SCREENREGIONS (#1387)
For ADISPLAY, just added SCREENREGIONP.  Fixed typos in REGIONMANAGER.TEDIT
2023-11-03 17:39:33 -07:00
rmkaplan
713f2388c7 COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS (#1329)
* COMPAREDIRECTORIES, COMPARESOURCES, COMPARETEXT, EXAMINEDEFS

Relatively minor cleanups, little or no functionality improvements

* COMPAREDIRECTORIES:  Get AUTHOR only if selected

This may provide a little speed up.  But of more importance, almost all the array crashes I am seeing are underneath (GETFILEINFO xxx 'AUTHOR).  The UFS implementation may be smashing array space, or maybe it is just detecting the corruption.  For now, I'm eliminating this potential source of bad behavior.

* EXAMINEDEFS: Better interpretation of TYPE NIL = (FNS FUNCTIONS) with better formatting

* COMPARETEXT: fixed to avoid EOF error if EOL gets confused
2023-11-02 19:23:38 -07:00
rmkaplan
f49729cbd3 COLOROBJ never worked, move to obsolete (#1374) 2023-10-30 21:37:59 -07:00
Matt Heffron
bdf03e08a1 Modify CL:CHAR-NAME always to return string from lookup in IL:CHARACTERNAMES. (#1377)
This *seems* to fix the issue with printing "control characters" in #\Name format.
2023-10-30 19:43:13 -07:00
Frank Halasz
b19cfd5bbb Revert "Merge pull request #1331 from Interlisp/Remake-CMLARITH-filemap" (#1376)
This reverts commit e2d8c9e5ad, reversing
changes made to 9054814ef7.
2023-10-30 13:21:24 -07:00
Matt Heffron
e2d8c9e5ad Merge pull request #1331 from Interlisp/Remake-CMLARITH-filemap
CMLARAITH:  Makefile new to get fns/functions in filemap
2023-10-29 22:51:41 -07:00
Matt Heffron
2ea1321d81 Merge branch 'master' into Remake-CMLARITH-filemap
Signed-off-by: Matt Heffron <mattheffron475@gmail.com>
2023-10-29 22:38:03 -07:00
Frank Halasz
9054814ef7 Add dribble file to app-from-full loadup (#1371) 2023-10-29 10:00:59 -07:00
rmkaplan
84dead86af Patch TEDIT.DEACTIVATE.WINDOW in old Tedit (#1361) 2023-10-28 14:34:25 -07:00
rmkaplan
5e83d63567 VIRTUALKEYBOARD: fix loadup (#1262)
* VIRTUALKEYBOARD:  fix loadup

* Reorganizing VIRTUALKEYBOARDS as described in #1267

* KEYBOARDEDITOR:  fixed one bug, still is out of step

* Move KEYBOARDCONFIGS KEYBOARDEDIT to library/virtualkeyboards

This collects all files relevant to VIRTUALKEYBOARDS into the same subdirectory
2023-10-28 14:21:32 -07:00
rmkaplan
bcfeda62e1 EQUALALL tests equivalence of bitmaps and big bitmaps (#1302)
* EQUALALL tests equivalence of bitmaps and big bitmaps

* Oops, off by one

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-23 21:18:57 -07:00
Frank Halasz
45513f563b Extend changes made in PR#1356 to medley/sh et al to handle -title arguments with space; extend to handle vnc case and well as without vnc case. (#1358) 2023-10-19 17:04:40 -07:00
Frank Halasz
db084c6281 Add copy-full.sh to loadup-full.sh script to copy loadup products from the tmp directory into MEDLEYDIR/loadups - make loadup-full akin to loadup-all (#1359) 2023-10-18 20:53:24 -07:00
Matt Heffron
6c53acaca8 Merge pull request #1356 from Interlisp/EnableMedleyWindowTitleWithSpaces
Modify launcher to enable --title STRING option to work when STRING has embedded spaces (multiple words).
2023-10-18 14:01:19 -07:00
rmkaplan
fbb5a8f6f5 Expose useful subfunctions in REGIONMANAGER (#1336)
* Expose useful subfunctions

* REGISTER-TYPED-REGION creates a new TYPED-REGIONS entry

If a window is closed whose region is of an as-yet-unknown type, a new entry will be added implicitly to TYPED-REGIONS to that that region and future regions of that type can be recycled.

* If a window with a typed-region is reshaped and then closed, the typed-region is also reshaped for reuse

Also, the typed-region of a window is pushed on the front of the TYPED-REGIONS list when the window is closed, so the most recent region of that type will be used the next time.  Recency seems more intuitive than primacy
2023-10-18 07:38:27 -07:00
Matt Heffron
cb8eab788a Modify launcher to enable --title STRING option to work when STRING has embedded spaces (multiple words). 2023-10-17 23:40:26 -07:00
rmkaplan
50dc0a9269 Remove calls to openfile (#1333)
* Remove calls to OPENFILE

OPENFILE is a residual Interlisp function that returns a litatom instead of a stream.  In almost all cases, this immediate causes an error that litatom files are no longer supported.  I have found (FINDCALLERS) all the examples in lispusers/sources/library/ and replaced OPENFILE with OPENSTREAM (except for the calls from \PEEKPUP and \PEEKNS, that I didn't track down).  There was a trivai call in COMPILE.FILECHECK in COMPILE, but that function is not called anywhere.  So I removed it.

* ADIR:  remove OPENFILE calls, also another stab at \COPYSYS

With respect to \COPYSYS, this replaces the draft PR #1263.  This applies TRUEFILENAME at the start, but remembers whether it was in fact a pseudohost and restores that for the return value.  So if you start in a pseudo world you end up there.

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-17 21:54:17 -07:00
Larry Masinter
9273cffce2 pull (non-working) TCP files to obsolete (#1283) 2023-10-17 21:34:17 -07:00
rmkaplan
df8c5a52f1 Also remade filemap for CMLCHARACTER (and changed from LCOM to DFASL)
CLEANUP is confused about how to compile.  This had FILETYPE = CL-COMPILE-TYPE, with an existing LCOM.  It produced a new DFASL, but the LCOM was still hanging around.  I'm deleting the LCOM here, pushing the new DFASL.
2023-10-17 13:33:18 -07:00
rmkaplan
a219ea03e5 Improve check for closed stream in \UFSCloseFile. (#1334)
Check if the (STREAM ACCESS) bits are NIL, indicating a closed stream, and
if so do not attempt to close the file again

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-16 15:54:34 -07:00
rmkaplan
2072deb6ae GITFNS: preserves casing of pseudohost prefix-paths of medley projects (#1344)
Also, minor edit to GITFNS.TEDIT, but now also includes a Tedit timestamp.
2023-10-16 15:37:09 -07:00
rmkaplan
f6c91ee11c FONTPROFILE: specvars declaration for cleanliness (#1351) 2023-10-16 15:35:17 -07:00
rmkaplan
adc27d9684 MEDLEYDIR: Pack DSK as the default HOST on the value of (UNIX-GETENV "MEDLEYDIR") (#1282)
Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-16 14:45:29 -07:00
Matt Heffron
d92aa6395a Manager (Lispusers) grow anchor, icon, and fix typo. (#1346)
* File See operations use full path to loaded file.
Add Manager.WINDOW-ANCHOR to fix corner from which MANAGER-MAIN-WINDOW grows, and (attempt) to keep it on-screen.

* Improved handling of the ICONW for MANAGER-MAIN-WINDOW.

* Fix typo in MasterScope functions (multiple occurrences: LOADBFLG should be LOADDBFLG).
Changed to CL compiler by default (not need to go to submenu). This is my preference, so I should remove it before setting pull request.

* Manual cleanup of multiple "Edited" comments in 4 FNS.
Reverted: Changed to CL compiler by default (not need to go to submenu). (From commit f60c6362)

* Update MANAGER.TEDIT documentation file.
Fix error in previous commit. (Changes that I thought were there, were not.)
Cleanup COMMON-MAKE COMS so it can be handled by the file package, and add .LCOM file to the repo.
2023-10-14 06:39:13 -07:00
Matt Heffron
f1833861cc Merge pull request #1348 from Interlisp/medley-issue-1347
Fix for typo; issue #1347
2023-10-13 10:41:05 -07:00
Matt Heffron
270fee89e3 Fix for typo; issue #1347 2023-10-12 13:19:59 -07:00
Frank Halasz
cba04e168c Merge pull request #1342 from Interlisp/PDFSTREAM
Pdfstream
2023-10-08 23:30:02 -07:00
Frank Halasz
1e847ec274 Add ShellOpen (and ShellOpener) to UNIXUTILS; fix small bug in UNIX-FILE-NAME (#1341)
* Add ShellOpener and ShellOpen to UNIXUTILS - used to open a file using the generic opener on this machine.  Adapted ShellBrowse and ShellBrowser accordingly; fixed bug in UNIX-FILE-NAME where it fails if file does not exist and COPY is non-NIL and access is INPUT

* Add return of error strings to ShellOpen
2023-10-08 19:34:43 -07:00
rmkaplan
f765676ec4 UNIXUTILS: Add UNIX-FILE-NAME etc on top of previous ShellWhich update--should resynch 2023-10-02 12:56:57 -07:00
rmkaplan
17c72a1f2f Merge branch 'master' into PDFSTREAM 2023-10-02 12:47:02 -07:00
rmkaplan
995c6de04e PDFSTREAM: First implementation (#1260)
* PDFSTREAM:  first implementation

Makes PS file, then applies separate utility (if available) to convert PS to PDF

* POSTSCRIPTSTREAM:  Adds extra field to postscript data for PDFSTREAM filename

* HARDCOPY:  fixes printer menu

* PDFSTREAM: define PDF fonts as POSTSCRIPT fonts

* PDFSTREAM: fix convert template

* PDFSTREAM:  Fix logic around closing the postscript sub-stream

* PDF Stream:  slight generalization

* PDFSTREAM uses AFTERCLOSE streamprop so doesn't require change to POSTSCRIPTSTREAM

* UNIXUTILS: moved PROCESS-COMMAND and SLASHIT from GITFNS and PSEUDOHOST resp.

PROCESS-COMMAND executes a command in process-stream, like ShellCommand, but returns a completion code and not what happens in the shell.  SLASHIT is an approximation (doesn't deal with versions) of converting a Medley file name to its Unix equivalent, to use in commands

* GITFNS:  PROCESS-COMMAND moved to UNIXUTILS, cleanups from previous (unexamined) PR

The other PR will be cleaned out

* PSEUDOHOSTS: Moved SLASHIT to UNIXUTILS, also includes minor change in previous (unexamined) PR, to be removed

* PDFSTREAM:  wrapped FULLNAME around TRUEFILENAME

* Restore POSTSCRIPTSTREAM

* UNIXUTILS:  Added UNIX-FILE-NAME

Produces a Unix filename corresponding to a Medley file name (slashes, version number).  For use in ShellCommand an PROCESS-COMMAND.

* PDF-STREAM:  added SEE-PDF

A little stub that (on a mac) does a shell command to open Preview on the Unix-named file corresponding to a medley name

(Also added back some key functions that got lost in a bad edit)

* Pick up master changes

---------

Co-authored-by: Larry Masinter <lmm@acm.org>
2023-10-02 12:39:25 -07:00
Larry Masinter
877c6fbf17 Pick up master changes 2023-10-02 12:36:39 -07:00
rmkaplan
97b19f1b96 PDF-STREAM: added SEE-PDF
A little stub that (on a mac) does a shell command to open Preview on the Unix-named file corresponding to a medley name

(Also added back some key functions that got lost in a bad edit)
2023-10-01 23:54:23 -07:00
rmkaplan
948b0e09d1 UNIXUTILS: Added UNIX-FILE-NAME
Produces a Unix filename corresponding to a Medley file name (slashes, version number).  For use in ShellCommand an PROCESS-COMMAND.
2023-10-01 23:52:40 -07:00
Frank Halasz
de4e5f5ca4 Add cygwin build & install script to buildRealease action; remove old Windows docker build / install (#1337)
* Add cygwin-sdl build to buildLoadup workflow; add installer for cygwin-sdl on windows

* Change how buildLoadup computes latest maiko release to accomodate draft releases

* Fix call to gh release list for maiko

* Debugging call to gh release list for maiko

* Debugging call to gh release list for maiko #2

* Debugging call to gh release list for maiko #3

* Debugging call to gh release list for maiko #4

* Debugging call to gh release list for maiko #5

* Debugging call to gh release list for maiko #6

* Change maiko downloads to accoiunt for draft releases

* Change maiko downloads to account for draft releases #2

* Specify shell (powershell) for Download cygwin installler

* Few cleanup items on cygwin-install

* Update ShellWhich to use command -v instead of which because which returns to much crap on cygwin and command -v is more portable overall

* Switch from using medley-loadup & -runtime tars to medley-full-*.tgz so we get full release incl notecards; delete maiko on install and replace with cygwin maiko

* Make sure Notecards doesn't try to load its HASH fileon PostGreet - for apps.sysout

* Add xdg-utils to cygwin install to support ShellBrowser

* Odds and ends on cygwin build

* Redo medley.iss install script to use tar from Windows rather than cygwin tar because cygwin tar was messing up ACLs in windows.  Needed to change creation of medley.bat accordingly.

* Remove junk lines from buildLoadup.yml

* Restore accidently deleted line to buildLoadup.yml

* Fix multiple issues with cygwin_installer filename; arrange to remove placeholder.txt from the release assets at the end of cygwin installer

* Change name of job from windows_installer to cygwin_installer

* Fix missing GH_TOKEN is removal of placeholder.txt; fix naming of output file in medley.iss

* Fiddling with getting cygwin-installer name right

* Redoing merge of medley.sh/medley.command to handle the Darwin plus Cygwin cases; is medley.iss recreate symbolic links surrounding the medley.sh script

* Fix typos/syntrax errors in medley.sh/medley.command
2023-09-27 10:41:01 -07:00
rmkaplan
af912247b3 Restore POSTSCRIPTSTREAM 2023-09-25 20:32:17 -07:00
Frank Halasz
ebb5c739ea Fix latest issues with docker build (and Release+Docker builds) for Medley (#1326)
* fix buildRealeaseInclDocker.yml to pass secrets via inherits rather than explicitly.  Attempt to fix issue with GITHUB_TOEN not being passed to buildRelease.yml

* In buildDocker.yml, fix up calculation of medley and maiko release to accomodate new naming scheme for medley deb files

* Update Dockerfile_medley with new deb file naming convention
2023-09-25 11:34:51 -07:00
rmkaplan
1bed018db8 CMLARITH: The compiled file was bad in the previous commit
This has a FILESLOAD for lispusers/UNBOXEDOPS that somehow didn't get executed by the previous cleanup.  (That may be a separate issue with the compiler interface, not clear that it always makes the right choices even when the FILETYPE property is set.)

But this also begs the question, why is UNBOXEDOPS on lispusers?
2023-09-24 16:41:52 -07:00
rmkaplan
8a8e6fa4dc CMLARAITH: Makefile new to get fns/functions in filemap 2023-09-23 23:30:25 -07:00
rmkaplan
bf2e34841b PDFSTREAM: wrapped FULLNAME around TRUEFILENAME 2023-09-23 22:56:54 -07:00
rmkaplan
9ed6448591 PSEUDOHOSTS: Moved SLASHIT to UNIXUTILS, also includes minor change in previous (unexamined) PR, to be removed 2023-09-23 16:32:03 -07:00
rmkaplan
445de6745d GITFNS: PROCESS-COMMAND moved to UNIXUTILS, cleanups from previous (unexamined) PR
The other PR will be cleaned out
2023-09-23 16:30:47 -07:00
rmkaplan
68ed78a9f9 UNIXUTILS: moved PROCESS-COMMAND and SLASHIT from GITFNS and PSEUDOHOST resp.
PROCESS-COMMAND executes a command in process-stream, like ShellCommand, but returns a completion code and not what happens in the shell.  SLASHIT is an approximation (doesn't deal with versions) of converting a Medley file name to its Unix equivalent, to use in commands
2023-09-23 16:23:46 -07:00
rmkaplan
1ae08139c9 PDFSTREAM uses AFTERCLOSE streamprop so doesn't require change to POSTSCRIPTSTREAM 2023-09-23 16:20:30 -07:00
rmkaplan
bb4e230df4 Merge branch 'master' into PDFSTREAM 2023-09-23 15:57:53 -07:00
Frank Halasz
02665ca91b Change github workflows to provide MacOs full release zip file (#1290) 2023-09-17 23:03:18 -07:00
Frank Halasz
b819e18c64 Fix Issue#1323: buildDocker.yml Github Action is failing due to Ubuntu 22.10 being deprecated (#1324)
* Remove trailing whitespaces in buildDocker.yml; move Dockerfile_medley base back to 20.04 since 22.10 deprecated.

* In Dockerfile_medley load tzdata early so as to avaoid problems later on.

* In Dockerfile_medley do an apt update before tzdata

* Changing dockerfile_medley to be based on 22.04 to take care on glibc problems in online_medley docker
2023-09-16 18:09:34 -07:00
rmkaplan
781709e4e1 PDF Stream: slight generalization 2023-09-12 13:49:56 -07:00
Frank Halasz
b772b8383c Moving vncviewer to online.interlisp.org/downloads to bypass issues with sourceforge in buildLoadup.yml (#1319) 2023-09-04 10:39:52 -07:00
Frank Halasz
701a642fb4 Merge pull request #1308 from Interlisp/fgh_loadups3
Fix issue with tmp/logindir remaining after loadup-all and loadup-db scripts
2023-08-15 15:31:33 -07:00
Frank Halasz
7f99792afe In loadup- scripts, at end remove the tmp and tmp/logindir directories if they don't exist before the script runs 2023-08-14 23:29:38 -07:00
Frank Halasz
6a147af97f Merge pull request #1304 from Interlisp/fgh_loadups2
Revamp loadup scripts and release-medley script; sync with github workflow buildLoadup.yml
2023-08-14 10:56:57 -07:00
Frank Halasz
41b5870164 Switch comparison of timestamp tocraeted file to ensure that when the times are equal it is counted as success and not failure. Remove two second wait from loadup-mid-from-init, which was a previous attempt to solve same issue. 2023-08-13 21:13:48 -07:00
Frank Halasz
3ed4d52f53 Remove junk accidently added to loadup-db.sh. Fix CM file in loadup-db-from-full.sh to add internal/loadups to DIRECTORIES so files in this subdir can be analyzed. Add delay into loadup-mid-from-init.sh to make sure timestamp race conditions are avoided. 2023-08-07 22:30:12 -07:00
Frank Halasz
3aa01c7a38 Making @nbrigg's check for existance of LOADUP_OUTDIR and LOADUP_WORKDIR a bit fancier 2023-08-07 18:00:53 -07:00
Nick Briggs
3cefaf338c Ensure that the LOADUP_OUTDIR directory exists as part of the loadup-setup.sh 2023-08-07 17:24:38 -07:00
Frank Halasz
204605268e Remove venuesysouts from release tars 2023-08-07 14:53:33 -07:00
Frank Halasz
62422cd4ce Add changes from PR#1307 (@masinter). Can't easily merge PR#1307 in directly because MAKEINIT has moved. These changes set OK.TO.MODIFYFNS to T for all loadups to prevent loadups asking if its OK to modify system functions 2023-08-07 13:35:25 -07:00
Frank Halasz
ed6a6e4e04 move all loadups-related source files into internal/loadups; adjust scripts accordingly; move venuesysouts from loadups into internal/venuesysouts; fix issues in .CM files to allow starting loadups-all from any lisp/full.sysout 2023-08-07 12:34:11 -07:00
Frank Halasz
dbf6808bcb Merge remote-tracking branch 'origin/fgh_loadups2' into fgh_loadups2 2023-08-04 15:19:56 -07:00
Frank Halasz
126a8cfb37 Remove references to LOADUP_WORKDIR from all lisp code and instead pass the file references down from the callinf .CM files (which are now embedded in the loadup- scripts; also add /unicode subdir to the release tars. 2023-08-04 15:07:43 -07:00
Frank Halasz
1ff71ea15d update buildLOadup.yml to use new scripts/release-make-tars.sh instead of its almost but not quite equivalent make tars code 2023-08-04 12:29:40 -07:00
Frank Halasz
dfce541a18 Fix scripts/README.md 2023-08-04 12:29:40 -07:00
Frank Halasz
84391b367b First pass a complete new make-release.sh 2023-08-04 12:29:40 -07:00
Frank Halasz
346c11b0ad WIP fixing up scripts/release_medley.sh and syncing with buildLoadup.yml 2023-08-04 12:29:40 -07:00
Frank Halasz
ae2633591e Remove now obsolete sources/*.CM files; update README a bit 2023-08-04 12:29:40 -07:00
Frank Halasz
b0ec2476d5 Handle case where files already exist in LOADUP_WORKDIR - show only the newly created files - not the old ones 2023-08-04 12:29:40 -07:00
Frank Halasz
1c077d1b3d First full pass at loadups revamp. 2023-08-04 12:29:40 -07:00
Frank Halasz
ca3280f894 WIP updating loadups scripts 2023-08-04 12:29:40 -07:00
Frank Halasz
5b3cf9b7d5 Add new files left out from last commit; add RDSYS to library as part of loadups-all 2023-08-04 12:29:40 -07:00
Frank Halasz
e4c3a16ce4 Remake loadup scripts to not use MEDLEYDIR/tmp as a working dir AND cleanly separate loadup-all from loadup-db; adjust buildLoadup.yml accordingly 2023-08-04 12:29:40 -07:00
rmkaplan
41f4489e9f LLREAD uses \INCCODE.EOLC instead of \INCCODE to coerce LF and CRLF to EOL(=CR) (#1300) 2023-08-03 14:15:16 -07:00
Frank Halasz
51ef95d30f update buildLOadup.yml to use new scripts/release-make-tars.sh instead of its almost but not quite equivalent make tars code 2023-08-02 22:03:38 -07:00
Frank Halasz
0c9744455c Fix scripts/README.md 2023-08-02 16:47:04 -07:00
Frank Halasz
41608a1b27 First pass a complete new make-release.sh 2023-08-02 16:43:35 -07:00
Frank Halasz
9d26047d8c WIP fixing up scripts/release_medley.sh and syncing with buildLoadup.yml 2023-08-02 13:41:36 -07:00
Frank Halasz
48c9a82a1c Remove now obsolete sources/*.CM files; update README a bit 2023-08-02 01:02:12 -07:00
Frank Halasz
f9838ac631 Handle case where files already exist in LOADUP_WORKDIR - show only the newly created files - not the old ones 2023-08-01 23:41:39 -07:00
Frank Halasz
f514dd04c2 First full pass at loadups revamp. 2023-08-01 22:59:01 -07:00
Frank Halasz
656bb53ef6 WIP updating loadups scripts 2023-08-01 12:08:55 -07:00
Frank Halasz
c105799096 Merge pull request #1298 from Interlisp/fgh_medley.sh-sysout
Fix bug in medley.sh wherein it was ignoring sysout argument
2023-07-31 12:11:14 -07:00
Frank Halasz
d2102bfe9b Add new files left out from last commit; add RDSYS to library as part of loadups-all 2023-07-31 01:07:39 -07:00
Frank Halasz
b59e37b703 Remake loadup scripts to not use MEDLEYDIR/tmp as a working dir AND cleanly separate loadup-all from loadup-db; adjust buildLoadup.yml accordingly 2023-07-31 00:42:23 -07:00
Frank Halasz
71a2d7aac7 Fix bug in medley.sh wherein it was ignoring sysout argument 2023-07-30 13:01:17 -07:00
Larry Masinter
94269303d0 SPY.POINTERS is always T (no 2-byte atoms) (#1293)
* SPY.POINTERS is always T (no 2-byte atoms)

* Set SPY to not record entries when in \BACKGROUND-YIELD or (conditionally) backgroudn process

* Use \IGNORE.BACKGROUND as global variable, initially T; clean up declarations

* changes used DECLARE%%: incorrectly, now fixed
2023-07-30 11:35:23 -07:00
Frank Halasz
91305cc2c9 Fix whitespace typo in buildLoadup.yml (#1287) 2023-07-22 18:21:52 -07:00
rmkaplan
9b4c4a3bf7 Merge branch 'PDFSTREAM' of https://github.com/interlisp/medley into PDFSTREAM 2023-07-20 22:26:48 -07:00
rmkaplan
51d554c67e Merge branch 'master' into PDFSTREAM 2023-07-20 22:26:41 -07:00
rmkaplan
b513bb44a3 Simplify EXPORTS.ALL loading commands (#1281)
Standard FILES commands now do the right thing, no need for extra junk
2023-07-20 22:24:18 -07:00
Larry Masinter
652a9dc320 release dribbles and msfuller (#1280)
* ignore loadups/exports.all (moved)

* add fuller.database and dribble files to release
2023-07-20 21:39:15 -07:00
Larry Masinter
a678515a35 ignore loadups/exports.all (moved) (#1279) 2023-07-20 21:38:20 -07:00
rmkaplan
ca39ccf27b Merge branch 'master' into PDFSTREAM 2023-07-20 21:01:13 -07:00
Arun Welch
11ac5b7ec7 add rooms manual (scanned, no tedit found) (#1100)
* Lafite and Rooms Manuals

Add Lafite and Rooms Manuals

* Only rooms-manual, Lafite has .tedit files

---------

Co-authored-by: Larry Masinter <LMM@acm.org>
2023-07-20 20:19:23 -07:00
rmkaplan
e1cd9260b4 Merge branch 'master' into PDFSTREAM 2023-07-19 20:29:48 -07:00
Larry Masinter
9e433314d8 don't declare most interpress constants (#1193)
* rewrite INTERPRESS to not pollute pool of CL:CONSTANTP variables in common use

* update some functions that are (inappropriately) tied to INTERPRESS

* no change to SKETCHOPS needed

* still need one \IPC 'constant' from INTERPRESS

* changes to WINDOW GLOBALVARS another time

* recompile XXFILL

* fix a few other messes exposed
2023-07-19 19:11:17 -07:00
rmkaplan
b0aa518a41 Merge branch 'master' into PDFSTREAM 2023-07-19 14:57:50 -07:00
rmkaplan
9e0bfabc52 Merge branch 'master' into PDFSTREAM 2023-07-19 12:58:02 -07:00
rmkaplan
feff0cefc0 SEDIT-WINDOW: Shift-title selection conforms to standard mouse conventions (#1272)
In previous commit/PR #1256 the bksysbuf wasn't waiting for the copy/shift key to come up.
2023-07-19 12:53:46 -07:00
rmkaplan
a258a5e9f0 FILEWATCH: Shift select names, plus show PSEUDOFILENAMES (#1276)
* FILEWATCH: Shift select names, plus show PSEUDOFILENAMES

* FILEWATCH:  Copied file is a string, not an atom

Modern systems tend to allow spaces and other funky characters in filenames.  COPYINSERT doesn't automatically escape.  But generally we are moving towards strings.  (Shift-select from FILEBROWSER has the same problem)
2023-07-19 12:53:04 -07:00
rmkaplan
9529c35631 FILEBROWSER: FB.COPYFN uses COPYINSERT instead of BKSYSBUF (#1277)
So shift-selecting produces strings for file names with funky characters
2023-07-19 12:52:43 -07:00
rmkaplan
a111907bf4 GATHEREXPORTS uses standard MAKEFILE machinery (#1278)
* GATHEREXPORTS uses standard MAKEFILE machinery

So that it gets all the normal file properties (FILE, FILEDATES) when it is LOADed.  Also nothing special about setting up its reader environment

* GATHEREXPORTS again:  PRETTYDEF likes only litatom filenames

(which probably should be fixed)
2023-07-19 12:01:38 -07:00
Larry Masinter
c797d919f1 Merge pull request #1274 from Interlisp/fgh_loadups
Move exports.all to the loadups directory; add a LOADUPSDIRECTORIES to MEDLEY-INIT-VARS
2023-07-19 05:37:48 -07:00
Frank Halasz
03e59d15c8 Adding (FROM LOADUPS) whereever EXPORTS.ALL is loaded - changing from LOAD to FILESLOAD where necessary. 2023-07-18 13:39:49 -07:00
rmkaplan
ebff4f7268 PDFSTREAM: Fix logic around closing the postscript sub-stream 2023-07-17 23:04:38 -07:00
Frank Halasz
08880d550e Move exports.all to the loadups directory; add a LOADUPSDIRECTORIES to MEDLEY-INIT-VARS 2023-07-17 16:38:10 -07:00
Frank Halasz
e4b6f69e8e Merge pull request #1269 from Interlisp/fgh_ipfonts
Add ipfonts to release tars
2023-07-10 10:42:07 -07:00
Frank Halasz
52499052e8 Add ipfonts to release tars 2023-07-08 22:29:49 -07:00
Larry Masinter
b5f71670cb Merge branch 'add-bigbitmaps' 2023-07-08 13:17:18 -07:00
Larry Masinter
d21dfe1061 Merge pull request #1256 from Interlisp/Minor-updates-to-LLREAD-and-SEDIT
Minor updates to llread and sedit
2023-07-07 12:30:52 -07:00
Bill Stumbo
efae6d2911 Template for capturing 'What People are Saying' suggestions. (#1261) 2023-07-07 12:27:42 -07:00
Larry Masinter
2aae0e7bb6 put back in IRM.SMART.LOOKUP needed for helpsys from menu (#1251) 2023-07-07 12:27:06 -07:00
rmkaplan
02a6d7ad1b Updated Tedit files for a few Lispusers packages--formatting and typos (#1246)
* Updated Tedit files for a few Lispusers packages--formatting and typos

* Format OBJECTWINDOW.TEDIT, delete WHEELSCROLL.TXT

* Create CLIPBOARD.TEDIT

Small (formatted) documentation file
2023-07-07 12:25:18 -07:00
rmkaplan
4826035054 CALENDAR, AOFD: Calendar had a Y2K problem, AOFD did not allow string-streams to reopen (#1204)
* CALENDAR, AOFD:  Calendar had a Y2K problem, AOFD did not allow string-streams to reopen

There still may be some Y2K issues, I fixed the obvious ones, including how it interacted with Tedit

* try recompiling

---------

Co-authored-by: Larry Masinter <LMM@acm.org>
2023-07-07 12:18:46 -07:00
Larry Masinter
6c6856efb9 (PATHNAME NIL) now errors; don't try to add it to whereis list (#1188) 2023-07-07 11:41:56 -07:00
Larry Masinter
871bbb735f Add a few inits to SYSEDIT, obsoleting ABC (#1184) 2023-07-07 11:30:42 -07:00
Larry Masinter
08852f7b55 Add TEDIT files for many Library packages (#1181)
* WHERE-IS library doc

* Gather keyboard files, add VIRTUAL.TEDIT

* add UNIXCOMM.TEDIT

* rest of TEdit library files

* save table of contents index for reworking

* Don't move around VIRTUALKEYBOARDS files; will move in separate commit

* Add MATMULT from Envos/Medley
2023-07-07 11:25:17 -07:00
Bill Stumbo
4362618ea0 Add documentation template (#1257)
Copied from Interlisp .github repo.
2023-07-06 08:27:05 -07:00
Larry Masinter
1659c452b5 remove POSTLOADUP from fileset... was removed (#1218) 2023-07-03 16:37:59 -07:00
Larry Masinter
f5a8888aff Add .tedit files which correspond to Medley release notes (#1124) 2023-07-03 12:43:19 -07:00
rmkaplan
c281728c65 PDFSTREAM: fix convert template 2023-07-02 18:25:41 -07:00
Larry Masinter
4fed40bb85 Add BROWSERMAX to limit depth of paths graph (#1158)
* Add BROWSERMAX to limit depth of paths graph

* Update Browser to use left-button menu popup to select action
2023-06-30 16:56:54 -07:00
Larry Masinter
3cca8c4940 Fix places where rename of record LINE to XXLINE was incomplete (#1212) 2023-06-30 16:42:07 -07:00
rmkaplan
c4554894b3 PDFSTREAM: define PDF fonts as POSTSCRIPT fonts 2023-06-25 17:16:27 -07:00
rmkaplan
58196b4011 HARDCOPY: fixes printer menu 2023-06-24 15:49:31 -07:00
rmkaplan
f6a9b88b34 POSTSCRIPTSTREAM: Adds extra field to postscript data for PDFSTREAM filename 2023-06-24 15:49:18 -07:00
rmkaplan
bad19ab45f PDFSTREAM: first implementation
Makes PS file, then applies separate utility (if available) to convert PS to PDF
2023-06-24 15:48:21 -07:00
rmkaplan
d6a4b3bf88 SEDIT-WINDOW: use COPYINSERT instead of BKSYSBUF for shift-selection from titlebar
Gets the package
2023-06-20 21:12:13 -07:00
Larry Masinter
b493d98aeb fix GATHER-INFO for compiled code -- globalvars vs.bounc (#1219) 2023-06-18 21:24:23 -07:00
Larry Masinter
beb4a77195 Recompile PRETTY (#1220) 2023-06-17 21:40:34 -07:00
rmkaplan
d43846b4f4 SEDIT: SELECTC formatted like SELECTQ, copy-select from the titlebar
Fixes long-standing irritants (for me at least).  SELECTC is highlighted and format like SELECTQ and SELCHARQ.  And left-button in the title bar with the copy (shift) key down does a bksysbuf of the thing being edited.  The menu is available under the middle button, moving and reshaping still provided by modernize with the shift not down.
2023-06-17 20:18:17 -07:00
rmkaplan
28c673f296 LLREAD: CHARACTERNAMES saved with ALISTS instead of VARS commands
Also CHARACTERSETNAMES.  So that initial values don't smash or pick up the values that might otherwise be active in a development environment.
2023-06-17 20:14:00 -07:00
Frank Halasz
e067e02dde Add on:schedule to buildRelease workflow so that Medley builds happen automatically on Mondays at 1am (#1225)
* Add an On:schedule to the build release and docker workflow to build a new release every Monday at 1am

* Add an On:schedule to the build release and docker workflow to build a new release every Monday at 9am UTC (1am or 2am Pacfic time, depending on daylight savings
2023-06-11 13:40:38 -07:00
Larry Masinter
1af56ddaa2 Add .tedit files for Lafite manual and release notes -- PDFs on Google Drive (#1209)
* Add .tedit files for Lafite manual and release notes -- PDFs on Google Drive

* use 'docs' for subfolder name; wliminate dup

* Remove duplicate LAFITEMANUAL-GLOSSARY-CUSTOMER.TEDIT

---------

Co-authored-by: Nick Briggs <nicholas.h.briggs@gmail.com>
2023-05-16 19:30:15 -07:00
Nick Briggs
16dd66a016 Pass --display/-d argument as -display not by setting DISPLAY env variable. (#1213) 2023-05-16 19:28:21 -07:00
Larry Masinter
81b74be043 Another pass on CLOSEALL simplify by calling (OPENP) (#1182)
* Another pass on CLOSEALL simplify by calling (OPENP)

* Put back in checks for CLOSEALL IOMODE USERVISIBLE

* \TERM.OFD and \LINEBUF.OFD are bound, no global

* getting rid of \OPENFILES everywhere

* one more \OPENFILES
2023-05-16 19:02:43 -07:00
Larry Masinter
f8a5d0fbe5 Rewrite code for deciding 'Good morning', 'Good evening' 'You're working late' Y2K (#1208) 2023-05-16 19:00:49 -07:00
Larry Masinter
3e0ec62d27 Prettyfileindex knows about :EDIT-BY (#1205) 2023-05-16 10:06:03 -07:00
Larry Masinter
654675661f Do not set keyboard type without knowing better (#1211) 2023-05-16 10:05:31 -07:00
Larry Masinter
3cb051ea7b Allow (CLOSALL) to work after all (#1164) 2023-04-19 19:47:11 -07:00
Frank Halasz
8bb283e0c4 Merge pull request #1154 from Interlisp/tweak-init2
Tweak INIT: HELPTIME 1 for more break windows; extend font profile
2023-04-19 18:03:08 -07:00
Frank Halasz
6fae5c14e9 Merge branch 'master' into tweak-init2 2023-04-19 17:54:43 -07:00
Frank Halasz
c58ef4ee56 Merge pull request #1161 from Interlisp/minor-usage-tweaks
minor usage tweaks
2023-04-19 17:53:57 -07:00
Frank Halasz
730fc5b678 Merge pull request #1153 from Interlisp/who-line-only
tweak WHO-LINE
2023-04-19 17:46:25 -07:00
Frank Halasz
8d54603329 Merge branch 'master' into who-line-only 2023-04-19 17:45:29 -07:00
Larry Masinter
21ceff5ad9 add internal/MAINTAIN.TXT to explain what MAINTAIN is 2023-04-18 15:21:35 -07:00
Larry Masinter
5a07e6c266 SYSEDIT also sets copyright flag 2023-04-18 15:16:07 -07:00
Larry Masinter
4a09d3a027 Init file set HELPTIME to 1 more break windows; copyright NEVER 2023-04-18 15:15:00 -07:00
Larry Masinter
691563024b Yet another Logo with parameters for substrings. WINDOW.BITMAP move to Window (#1151)
* Yet another Logo with parameters for substrings. WINDOW.BITMAP move to Window

* Added LOGOW.DFASL, so rm LOGOW.LCOM

* LOGOW: Add local variables for most of the hard-coded constants to make it easier to experiment with adjusting said constants.  Adding kerning for substring1.

* LOGOW: Add more kerning options.  Cretaed separate kerned.prin3 function.

* Set default params to Option 8.  Added some top and right margins when placing LOGOW in screen so it doesn't look so squished into the corner.

---------

Co-authored-by: Frank Halasz <frank@halasz.org>
2023-04-18 14:57:41 -07:00
Larry Masinter
0f49e248d3 Tweak INIT: HELPTIME 1 for more break windows; extend font profile 2023-04-13 09:56:16 -07:00
Larry Masinter
54782f5b21 tweak to WHO-LINE: hostname (don't use pup), change dir (don't offer directories that don't exist), package (sort so likely choices are at top) 2023-04-12 22:26:23 -07:00
rmkaplan
d34522d769 GITNFS: Doesn't error if clonepath defaults but is not required (#1123)
If CLONEPATH is NIL, no error if the clone can't be found, just prints a note.  If CLONEPATH is T, will error.
2023-03-30 09:59:27 -07:00
Larry Masinter
c501dc82fb add :EDIT-BY initials to FILECREATED (#1074) 2023-03-24 21:52:44 -07:00
Bill Stumbo
c256a8f411 Merge pull request #1110 from neauoire/patch-1
Changed wiki link to new docs url
2023-03-19 20:44:31 -04:00
Devine Lu Linvega
69dbe43d87 Update README.md 2023-03-19 16:45:17 -07:00
Devine Lu Linvega
989ec5b0b5 Changed wiki link to new docs url 2023-03-19 09:40:25 -07:00
Larry Masinter
fb1d14dfeb once more 2023-03-01 07:53:44 -08:00
Larry Masinter
6d86932d35 remake ADISPLY 2023-02-28 06:50:17 -08:00
Larry Masinter
9ada6de6b9 Revert changes in \DRAWLINE.DISPLAY and add BIGBITMAPS to loadup & exports 2023-02-28 05:48:41 -08:00
rmkaplan
12b5e90727 GITFNS: Better default directory-finding, better pseudohosts (#1064) (#1065)
* GITFNS:  Better default directory-finding, better pseudohosts  (addresses #1064)

Also updated documentation

* GITFNS:  better error message in GIT-MAKE-PROJECT
2023-02-18 17:19:29 -08:00
Frank Halasz
4b95a8b5d3 Windows installer and medley script for running Medley in Docker on Windows (#1077)
* Update docker file build to use new deb linux installers;  move Dockefile to .github/workflows since its really only useable from the buildDocker.yml workflow

* Fix typo in dockerfile location

* remove extraneous " in >>GITHUB_ENV statements

* Fix handling of TARGETPLATFORM in Dockerfile

* Trying with just one platform

* Fix issues with missing man-db in docker build workflow; added man-db to depends in deb builds for linux

* Sicthed docker from tightvnc to tigervnc to match oio.  This getting the apt package name right.

* Going back to single platform to debug this thing

* Trying with just arm64

* Removing arm/v7 from docker images.  Takes too long to build and just wastes our github actions minutes.  This is assuming its a never used feature since docker is not big on raspberry pis and their ilk.

* Fix typo in control-linux; update build_deb so that files in /usr/local installed by deb are owned by root; add ubuntu user and nano in docker file for dbebugging;  when in draft only create for x86_64 platform

* Fix typo in buildDocker.yml

* Add sudo to docker image; in docker image ensure that all /usr/local/interlisp files are owned by root

* Add securityTypes none to docker entrypoint

* Updated docker base to Ubuntu 22.10 to get fixed xrdp; add xrdp to the docker image; updated user permission in docker image;

* In Dockerfile make xrdp install noninteractive

* Update medley.sh scripts to handle docker case

* Fix a couple of typos

* BuildDcoker: added pulling latest draft release (if any) when this is a draft docker build; removed checkout of medley code cause its not used

* BuildDocker: added medley checkout backin - turns pout its needed by a bunch of actions even though I dont really think they use it

* BuildDocker: moved download assets to use gh instaed of a marketplace action becauase that action could not handle draft releases.

* Tweaking medley.sh and associated tweaks to work Windows via wsl medley and docker

* adding first pass at powershell script for windows docker and wsl

* Tuning how Xvnc, medley, and vncviewer handle the various ways of exiting - eg logout vs closing viewer window.

* Tuning vncviewer launch to make sure that tty works as expected when medley.sh runs in background

* Minor typo fixes and added extra check to use of /run/shm in medley_vnc.sh

* Added SSH_KEY secret to buildReleaseIncDocker workflow

* Gertting the add SSH_KEY secret into orkflows right this time, hopefully

* Adding TERM env variable and setting USER to medley in docker image

* Debugging medley.ps1 and adding a couple of arguments

* Typo in Dockerfile medley

* Synchronizing flag processing and usage for medley.ps1 and medley.sh; refactored medley_args.sh and medley_usage.sh code.

* Adding first pass at windows installer

* Adding first pass an inno setup script for Windows installation

* Update buildLoadup workflow and downloads page for windows installer

* Fix typo in buildLoadup

* BuildLoadup make sure windows runner uses powershell

* Another typo in buildLoadup

* Another typo in buildLoadup; damn those double quotes

* Updating handling of windows installer in buildLoadup, added vncviewer to medley.iss install

* Unknown syntax error in buildLoadup

* Another damn typo from double quotes

* buildLoadup: fixed loadup job outputs

* buidLoadup: fixed bug with COMBINED_RELEASE_TAG; fixed Upload script in windows job to be compatible with actions.script v6.

* buidLoadup: upload win installer adapted to find draft releases as well as full releases

* BuildLoadup: fixing up javascript in actions in windows job to use / instead of \ in pathname

* BuildLoadup: changing win installer update to same action used for other release assets

* Fix windows installer file name; in BuildLoadup move update downl;oad page to the Windows runner because uploading the window-installer changes the release download url, so updating the downloads page must be done after the windows installer upload.; General buildLoadup cleanup

* Run md2html to update downloads page

* Fix typo in build_deb.sh

* Removing some leftover crud in medley_usage.sh

* Fixing up windows installer a bit, mostly cosmetic

* Adding support for WSL1; mostly forcing --vnc and changing how to find open ports and displays since WSL1 networking is different tha WSL2

* Update manual page for new Windows Medley script

* First pass done for man page that incorporates new Windows medley script.  Add Xvnc wait before calling run-medley in case of docker to prevent occasonal missing X windows server error.

* Change buildLoadup to update man page to a draft if this is a draft run.
2023-02-18 06:19:57 -08:00
Frank Halasz
3fa571f798 Fix buildLoadup.yml to craete TARBALL directory if it doesn't exist (#1060) 2023-01-31 00:37:23 -08:00
Frank Halasz
10a598865f Create UNIXUTILS in library to go along with UNIXPRINTER, et al (#1051)
* Create UNIXUTILS file in library with ShellWhich function - linux which command equivalent.  Also move ShellCommand from UNIXPRINT to UNIXUTILS.

* Adding UNIXUTILS to LOADUP-FULL so it gets included in full.sysout

* Change of names from open(er) to browse(r). Refine the browse(r) functions a bit

* Minor bug fixes

* Add (FILES UNIXUTILS) to UNIXPRINTCOMS so that ShellCommand is loaded in case only UNIXPRINT is loaded.  For backward compatibility.
2023-01-30 23:43:10 -08:00
Frank Halasz
f2ef7cc8f6 Installers for Linux: workflow changes and more to support standard Linux installations (#1058)
* Adding LANG environment variable to docker image; adding MAIKO_ and MEDLEY_INSTALLDIR environment variables; Changing /usr/local/bin/run-medley to a symbolic link instead of a shell script

* Added draft input to all workflows, so that can create draft releases as well as regular releases

* Update buildDocker.yml to handle deprecation of set-output and to update versions of actions to handle node 12 to node 16 transition.

* Added scripts and updated github workflows to support creation of deb installers for Linux and WSL

* Fix minor bug in buildLoadup.yml

* First pass implementation of deb installer

* Fixing wget of vncviewer in build_deb.sh

* Fix typo in buildLoadup.yml in call to build_deb.sh

* Multiple small fixes to medley.sh from debugging.  Change postinst script and how its created in build_deb.  Add postrm script in build_deb.

* Reworking vnc portion of Medley.sh - including removing dependency on startx and xinit

* Misc fixes to medley_vnc.sh script; fix creation of postinst and postrm in build_deb.sh

* Cleaning up window geometry amd screen size in medley.sh

* Created apps.sysout loadup with rooms, notecards, clos on top of full.sysout; added plumbing for -apps flag to run-medley to run this syout; created a new init file for this sysout that calls MEDLEYDIR-INIT;  all of this is based on online.sysout

* Create UNIXUTILS file in library with ShellWhich function - linux which command equivalent.  Also move ShellCommand from UNIXPRINT to UNIXUTILS.

* Adding UNIXUTILS to LOADUP-FULL so it gets included in full.sysout

* Change of names from open(er) to browse(r). Refine the browse(r) functions a bit

* Minor bug fixes

* Update Apps.ShowDoc to new ShellBrowsefunction

* Adding apps support into the .github builds;  adding xdg-utils as dependecy in debs

* fixing bug as to where notecards is checked out in BuildLoadup.  Needs to be before loadups so app.sysout can be built

* Added defaulting to Interlisp exec tomedley.sh and APPS-INIT.  Works only in apps.sysout.  Added wlsu package to wsl debs since wlsview is not always installed by defailt.  Fixed Notefiles directories issues in Apps.Init.   Made medley.sh compute medleydir based on where the script is located. Can now work for /usr/lcal/interlisp as well as local directories.

* Added -id - feature to medley.sh so id can be directory mae.  Removed extraneous set -x commands in medley.sh from debugging.  In build_deb.sh changed compression to xz for deb files since debian does not support the zstd compression that ubuntu uses.

* For wsl deb files, make sure wslu package is not 4.0 - which is bad.  Change how we choose an open port and open display in medley_vnc.sh.  Add notecards download to build_deb.sh.  Fix type in medley.sh

* Add (FILES UNIXUTILS) to UNIXPRINTCOMS so that ShellCommand is loaded in case only UNIXPRINT is loaded.  For backward compatibility.

* Moved medley.sh and associates to script/medley dir; fixed up args to medley.sh;  added usage and --help to medley.sh

* Add comprehensive tar files to releases to match deb files for local installs; add --id -- arg to medley.sh

* Remove remaining reference to usr/local/interlisp to ensure local install works

* Fix bug in buildLoadup - couldn't file install tars

* Add medley symbolic linkto loadups, so it comes thru to local install tars

* Fix up error messaging in medley.sh scripts

* Created man page for medley and added it throughout build up, installers, etc.

* Add support for a downloads page on OIO, including creating said page while building a release

* Fix full_release_tag in downloads section of buildLoadup.yml

* Misc fixups on downloads page

* Adding online man page stored on oio static server.

* Fix minor bug in man installation in deb file
2023-01-30 22:19:07 -08:00
Larry Masinter
0c9b539bc4 masterscope extensions doc (internal) + tweak helpsys (#1048) 2023-01-17 22:23:06 -08:00
rmkaplan
b53b6c4ba7 Rmk74 run with pseudohosts (#1017)
* FILEPKG: EDITCALLERS now notices possible new stream after getting filemap

* GITFNS: cdw and cdg commands preserve pseudohost

* SAMEDIR:  match all combinations of truefilename and pseudofilename

* PSEUDOHOSTS:  Bug fix--openstream failure goes thru normal error machinery

* ADIR: Put in stubs for TRUEFILENAME, PSEUDOFILENAME, PSEUDOHOSTP

Also, fix \COPYSYS so it works with pseudhosts
2023-01-16 00:36:39 -08:00
Larry Masinter
e5593ba0dc notify \IDLING.OVER in \IDLE.OUT (#973)
\IDLE.OUT is a backgrround function. For reasons not well understood, sometimes after returning from LOGOUT, the RESETSAVED notify to \IDLING.OVER doesn't happen.
This change insures that it does.
(found during testing of LOGOUT/return from LOGOUT with changing ethernet enalbing)
2022-12-31 08:44:22 -08:00
Larry Masinter
5fea4e6666 loadup-db.sh fix -- don't rely on loadups (#1035) 2022-12-29 19:11:19 -08:00
Larry Masinter
306af20e91 The macroexpansion of UNDOABLY shouldn't depend on runtime rebinding of LISPXHIST (#1023)
The history and undo code was written before the record package; but someone introduced a DEFMACRO UNDOABLY macro to do the work. But cached macroexpansions shouldn't depend on load/run/compile time values.
2022-12-29 18:48:12 -08:00
rmkaplan
bb637c5b73 UNIXCOMM: Eliminated the new shell device in favor of a single shell device (#1034)
Also removed unused functions labeled as "obsolete" after Medley 2
2022-12-23 11:37:23 -08:00
Larry Masinter
7eb12ee68b Revert "Lmm cleanup new shell device (#1006)" (#1033)
This reverts commit 97cb04be46.
2022-12-17 17:22:41 -08:00
Larry Masinter
97cb04be46 Lmm cleanup new shell device (#1006)
* reset defaultexternalformat when returning

* Replace so *SHELL-DEVICE* is default
2022-12-02 20:48:48 -08:00
Frank Halasz
62754015b0 Update Medley build workflow to add clos to release tars and to update various actions to latest versions (#1025)
* Add clos to release tars for Medley.  To ease adding clos to Medley Online.

* Fix buildLoadup.yml to account for the fact that scripts/loadup-all.sh now automatically includes scripts/copy-all.sh.  Was failing due to redundant copying of loadup files.

* Get rid of ::set-output:: in buildLoadup.yml and replace with echo >> .  This is due to that fact that ::set-output:: has been deprecated by Github and will soon cause an error if used in a workflow.

* Update actions/checkout and robinraju/release-downloader to latest versions because versions currently being used relied on Node 12, which has been deprecated.  Newer versions of these actions use Node 16, which is still supported.

* Fix typo in actions/checkout new version number

* Oops.  Node 16 is supported by actions/checkout@v3 not by ...@v2.5.0

* Update AButler/upload-release-assets fron @v2.0 to @v2.0.2 to take care of Node 12 versus Node16 issues caused by Node 12 actions being deprecated by github.

* Fix quoting bugs on conversions from ::set-output:: to

* Try switching to the ncipollo/release-action acgtion in place of using the api to create the release and then the AButler/upload-release-assets action to upload the assets.  This is to solve the failures when try to update a release using the force input parameter.

* Adding step to delete existing release with given tag, if any.  Needed when force parameter is true.

* Fixing typo?

* Typos again?

* Start changing how RELEASE_TAG environment variable is used throughout build_loadup

* Finish changing how RELEASE_TAG environment variable is used throughout build_loadup

* Update abatilo/release-info-action to v1.3.2 to take care of ::set-output:: deprecation

* Add commit to allow testing of release builds

* Fix to Issue#1022 Error during greet

* More fix to Issue#1022.  Turns out need to reset MEDLEYDIR for AFTERMAKESYS as well as at greet time.  Discovered during loadup-online.sh with no greet file.

* Removing AFTERMAKESYS event action from (MEDLEY-INIT-VARS).  Cleaning up a bit the GREET event action in (MEDLEY-INIT-VARS).  Remove issue with MEDLEY-INIT-VARS being called after the user greet file in the AFTERMAKESYS case.
2022-11-26 15:05:45 -08:00
Frank Halasz
9d09033cc4 Fix to Issue#1022 "Error during greet" (#1027)
* Fix to Issue#1022 Error during greet

* More fix to Issue#1022.  Turns out need to reset MEDLEYDIR for AFTERMAKESYS as well as at greet time.  Discovered during loadup-online.sh with no greet file.

* Removing AFTERMAKESYS event action from (MEDLEY-INIT-VARS).  Cleaning up a bit the GREET event action in (MEDLEY-INIT-VARS).  Remove issue with MEDLEY-INIT-VARS being called after the user greet file in the AFTERMAKESYS case.
2022-11-26 11:46:41 -08:00
Nick Briggs
d9c144d966 Allow user override of -title option (#1026) 2022-11-21 13:04:07 -08:00
Nick Briggs
17dd03a358 Use -title rather than -t to specify window title (#1020) 2022-11-14 09:48:21 -08:00
Larry Masinter
382881a068 fix typos EFECT vs EFFECT in templates for CL:WHEN and CL:UNLESS (#1015) 2022-11-02 11:59:39 -07:00
Larry Masinter
d0d952a10d make SETQ and typed in calls undoable (first steps) (#996)
* First steps to make UNDO to work again

* make sure the right SETQ (CL vs IL) is used

* The change surfaced a irritating warning about the variable presumed to be SPECIAL
2022-10-25 15:40:41 -07:00
Larry Masinter
d5d21397d4 another pass at variable initialization after logout savevm sysout makesys (#1003)
This corrects some errors in the handling of initializing variables across SAVEVM, LOGOUT, SYSOUT and MAKESYS.
This is all now handled by MEDLEY-INIT-VARS (function and variable) which is called as an EVENTFN.
BEFOREMAKESYS (invoked by ENDLOADUP) clears the variables to a default setting (all directories are just {DSK}).
The other "BEFORE" events save away the current values of the variables in MEDLEY-INIT-VARS.

In order to get this to work it was necessary to change a hack for deciding where to find EXPORTS.ALL and WHEREIS.HASH. Now  if you do `./scripts/loadup-all.sh` to make a full, lisp sysouts, exports.all and whereis.hash it will still build the sysouts in tmp/ but will also "link" new versions in loadups (and library for exports.all). This replaces the previous hack scanning the sysout name for "tmp/".
MEDLEY-INIT-VARS had been called both by the AROUNDEXITFN and AFTER*FORMS.
2022-10-25 14:43:57 -07:00
Larry Masinter
7a4470ce8b Rework MEDLEYDIR before/after logout to substitute instead of reset (#998)
* Rework MEDLEYDIR before/after logout to substitute instead of reset

* debugging

* working when changing home directory

* fix bug and removed redundtant declarations
2022-10-24 07:10:45 -07:00
Larry Masinter
32ff7b7649 DEFAULTPRINTINGHOST can have list members as per comments (#999) 2022-10-23 23:35:50 -07:00
Nick Briggs
096d860ac8 Update \SENDMESSAGE.RESTARTABLE usage of OPENSTRINGSTREAM (#997)
\SENDMESSAGE.RESTARTABLE unconditionally used OPENSTRINGSTREAM on its
argument, which is not usually a string. Now, only use OPENSTRINGSTREAM
if the argument is a string, otherwise pass it unchanged to TEDIT.
2022-10-16 17:31:14 -07:00
Larry Masinter
418b1df00d run-medley has a -NF option in caps used by loadup, means no fork (#978) 2022-10-13 20:35:37 -07:00
rmkaplan
ba90344080 MODERNIZE: Fix bug in MODERNWINDOW (Issue #972 ) (#976) 2022-10-13 16:08:28 -07:00
Frank Halasz
0eac6efb61 Fix Issue#985 HELPSYS/CLHS.LOOKUP fails when MEDLEYDIR not writeable. (#994) 2022-10-13 10:48:42 -07:00
Larry Masinter
540aff091c When restarting after logout, don't print warning on closed stream (#990) 2022-10-12 12:00:43 -07:00
Larry Masinter
3f244f6cd3 Change SYSTEM-EXTERNALFORMAT to more accurately guess the external format (#987) 2022-10-10 22:29:21 -07:00
Larry Masinter
58557d383a Fix simple typo in UNIXCOMM (#979) 2022-10-10 18:57:26 -07:00
Larry Masinter
882fbacf59 when constructing a stream, it might not have a FDEV -- allow it to print (#984)
* when constructing a stream, it might not have a FDEV -- alow it to print

* Stream with no FDEV just prints as Stream
2022-10-10 18:56:43 -07:00
Frank Halasz
70ce516e0c Merge pull request #983 from Interlisp/save-clhs-index
the hyperspec is static -- don't need to read the index
2022-10-10 00:03:57 -07:00
Larry Masinter
fdb573c761 the hyperspec is static -- don't need to read the index 2022-10-09 16:43:34 -07:00
Larry Masinter
06368f95eb run-medley should not quote patterns in 'case' command, either useless or broken (#977) 2022-10-08 10:04:46 -07:00
Larry Masinter
654ebc359c Temporary workaround until larger fix is done (see issue #768 (#971) 2022-10-07 15:06:32 -07:00
Frank Halasz
4e38802325 Merge pull request #965 from Interlisp/rmk71--upper-case-file-names
COMPAREDIRECTORIES:  upper-case-file-names
2022-10-04 11:32:01 -07:00
rmkaplan
b43b63b287 COMPAREDIRECTORIES: Oops 2022-10-03 12:06:38 -07:00
rmkaplan
016097e8bf COMPAREDIRECTORIES: upper-case-file-names
Plus typo fixes in the TEDIT file.

Note that the MATCHNAME has always been uppercase, and that the directory matching has been filtered using the FILEDIRCASEARRAY
2022-10-03 12:01:16 -07:00
Matt Heffron
99321e7951 Add .gitattributes so *.TEDIT, *.LCOM, *.DFASL, and *.SKETCH are always treated as binary (and the lowercase versions). (#957) 2022-10-03 08:02:30 -07:00
Frank Halasz
8e4fc4ab74 Fix Issue#961: GITFNS - {GMEDLEY} changed by LOGOUT/return from LOGOUT (#962)
* TEDIT-PF-SEE:  typo

* GITFNS:  Typo and better behavior on gwc delete

Message instead of trying to delete NIL

* GITFNS: Fix merge-base in PRC #958

* Fix Medley Issue #961 - {GMEDLEY} changed by LOGOUT/return

Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
2022-10-03 07:59:22 -07:00
rmkaplan
c005cf86bf Rmk70: minor fixups for GITFNS and TEDIT-PF-SEE (#956)
* TEDIT-PF-SEE:  typo

* GITFNS:  Typo and better behavior on gwc delete

Message instead of trying to delete NIL

* GITFNS: Fix merge-base in PRC #958
2022-10-01 13:54:40 -07:00
Larry Masinter
ecc2b22207 IDLE.PROFILE has LOGOUT and SAVEVM options; add some delays in IDLE hacks (#948)
* IFLE.PROFILE has LOGOUT and SAVEVM options; add some delays in IDLE hacks

* add extra delays so the demos work more like intended

* IDLEDEMO loads lispusers with idle hacks

* make sure NOTIFY.EVENT \IDLING.OVER is called

* clean up resetsave

* slow down KINETIC

* Redo logic to minimize diffs with 1992 version

* minor tweaks to \IDLER for making sure mouse doesn't hang
2022-09-28 22:39:31 -07:00
Larry Masinter
d0945f7a5f Update HELPSYS to find CLHS (Common Lisp HyperSpec) and lispusers/library docs (#917)
* Update HELPSYS to find CLHS (Common Lisp HyperSpec) and lispusers/library docs

* restore lost edits; fix package inclusion for XCL and LISP

* mere with previous commit

* try again
2022-09-22 09:01:40 -07:00
Larry Masinter
add65a9397 MANAGER.DFASL errored when loading -- cl:compile-file(manager) now (#945) 2022-09-21 18:03:08 -07:00
Matt Heffron
0474f924a4 This is the Histmenu+Manager+Clipboard branch WITHOUT the changes to Clipboard (since there were issues with conflicting key bindings) (#944) 2022-09-20 07:49:23 -07:00
rmkaplan
a387094eab Rmk68: Fix GITFNS PRC file lists, plus a few minor fixups (#937)
* INSPECT:  Allow optional user-specified tags in window titles to help keep track of multiple instances of the same datatype

* DWIM:  Remove warning about order of evaluation change that happened in 1980

* BREAK-AND-TRACE:  remake to get functions in filemap

* GITFNS, COMPAREDIRECTORIES:  prc file list correlates with github PR web page

* DWIM, DWIMIFY:  Removed WARNUSER and its calls

* INSPECT:  Value of INSPECT is the inspect window
(as IRM says it should be)
2022-09-18 08:10:15 -07:00
Larry Masinter
541a07e09b XORCursorPatch is 1186 only (#938) 2022-09-15 12:56:39 -07:00
Larry Masinter
5ee5482dd2 GETDEF binds variable when getting for edit -- needed by loops rather than a unreliable STKPOS (#926) 2022-09-13 13:22:06 -07:00
Larry Masinter
095beef454 misc lispusers changes -- UNIXYCD, lsee (#889)
* Move cd, ls, pwd to it's own little lispusers (needs documentation)

* add .TXT documentation, also patch lsee script to translate ^ and _ to up and left arrow

* Add document for CONDITIONGRAPH
2022-09-13 12:04:23 -07:00
Larry Masinter
06a7356b00 add IOCHAR to exportfiles and export \CATRANSLATE (#933) 2022-09-11 21:31:58 -07:00
Larry Masinter
147abac04c CL:ROOM no longer errors (#890)
With 4-byte atoms it no longer makes sense to report atom-space separately.
2022-09-05 20:27:08 -07:00
Larry Masinter
56a52af6b9 Revert "IDLE will LOGOUT instead of SAVEVM if ONLINEP (#904)" (#922)
This reverts commit fad70d4947.
2022-08-29 14:53:15 -07:00
Larry Masinter
fad70d4947 IDLE will LOGOUT instead of SAVEVM if ONLINEP (#904)
* IDLE will LOGOUT instead of SAVEVM if ONLINEP
* patched some idle hacks fora  better show
* idle.random chooses an idle program at random among those loaded
2022-08-26 11:27:48 -07:00
Larry Masinter
f4c91ec419 LispUsers art (#914) 2022-08-25 09:02:04 -07:00
Larry Masinter
f5e48847c9 thie problem only shows when you switch EDITMODE but have some SEDIT windows open (#912) 2022-08-24 07:24:08 -07:00
Larry Masinter
b90bf65be9 Move pick to lispusers (#881)
* Make PICK a Lispusers module

* PICK moved to lispusers, HCFILES moved to test repo (currently new/printing)

* redo PICK documentation

* Update documents and projects choices

* more testing and restore lost edits to TEDIT

* fix some typos
2022-08-14 13:25:17 -07:00
Larry Masinter
d379bcc102 Files have been commited to test repo, remove from medley (#878) 2022-08-14 12:14:54 -07:00
rmkaplan
39a7512458 Rmk66: 2 little glitches, plus GITFNS prc dealing better with forking (#887)
* VTCHAT:  Changed name of CHARSET field to avoid ambiguity

Even though field was never referenced

* INSPECT: WHERE argument was passed incorrectly to datatype subfunction

* GITFNS: Better recognition of funny cases (colon) etc

Reconciled with Larry's previous commit

* COMPAREDIRECTORIES:  Bug fix in separate-panel display
2022-08-12 22:01:04 -07:00
Larry Masinter
431d80fb3c Eliminate duplicate declarations for TABLEBROWSER record, remove TABLEBROWSERDECLS file (#877)
* Eliminate duplicate declarations for TABLEBROWSER record, remove TABLEBROWSERDECLS file

* change packages that used to load TABEBROWSERDECLS SOURCE to just LOADCOMP TABLEBROWSER

* make sure full RECORD is saved

* ARCHIVETOOL update of ARCHIVEBROWSER but no docs and looks like PARC-only
2022-08-12 11:23:40 -07:00
Larry Masinter
78b76f6801 GIT-INIT called after return to LOGOUT or SYSOUT etc; add option of making subdirectory to repo (#883) 2022-08-11 10:56:27 -07:00
Larry Masinter
16517cdfc5 Remove bignum test from \INSERTTREE -- was just a debugging aid (#863) 2022-08-10 21:09:12 -07:00
Nick Briggs
902d542121 IBM EGA fonts renamed (#882)
* Added IBM-EGA fixed pitch font files

* move IBM-EGA fonts to file names that will be recognized

Co-authored-by: Matt Heffron <heffron@alumni.caltech.edu>
2022-08-10 20:22:54 -07:00
Tim Bradshaw
c708f2ac55 make /usr/local/bin/medley run the right medley (#885)
welcome @tfeb
2022-08-10 11:12:28 -07:00
Larry Masinter
43e6801341 copying format info to match the ultimate destination doesn't work for displaystreams (#875) 2022-08-09 12:44:35 -07:00
Larry Masinter
27a6063ce9 \RPLPTR when run interpreted doesn't work with large vmem pointers (#866)
* \RPLPTR when run interpreted doesn't work with large vmem pointers

* oops, misread maiko N_OP_rplptr; this is closer

* Make LLNEW UFNs and functions run renamed match maiko interp wrt high 4 bits
2022-07-30 19:22:37 -07:00
Larry Masinter
cd6b64efa2 unsafe.to.modify only warns if redefining compiled with interpreted (or in original UNSAFE.TO.MODIFY.FNS (#852)
* unsafe.to.modify only warns if redefining compiled with interpreted (or in original UNSAFE.TO.MODIFY.FNS

* Add list of functions you said OK to modify
2022-07-26 23:15:27 -07:00
Larry Masinter
222da55f69 Compile color files to allow color imageobj -- even though color doesn't work yet (#864) 2022-07-26 23:12:42 -07:00
rmkaplan
92f85c5957 Rmk64: mainly separate panels for GITFNS display, FILEPOS speed up (#862)
* HRULE:  Add a PREPRINTFN for horizontal rules

Looks better in plaintext files

* GITFNS, COMPAREDIRECTORIES:  Group earler/later in separate segments

GIT-CDBROWSER-SEPARATE-DIRECTIONS defaults to T

* FILEIO: INITVARS rather than VARS for FILING.TYPES

To avoid contamination with values from other files (like LAFITE)

* FILEPKG: SEPRCASE in EDITCALLERS includes comma and quote even if no DWIMIFYCOMPLFG

Also seprate the caseinsensitive UPPERCASEARRAY from the SEPRCASE array

* IOCHAR: Open code the call to \INCCODE.EOLC

About a 30% speed up in the slow (casearray/skip) case.  Eventually macros should be defined for the externalformat interface functions, for now it is nice to be able to trace/break them.

* EXTERNALFORMAT: a little bit of cleanup

particularly around EOLC
2022-07-25 19:12:52 -07:00
904 changed files with 91330 additions and 66311 deletions

9
.gitattributes vendored Normal file
View File

@@ -0,0 +1,9 @@
# Denote all files that are truly binary and should not be modified.
*.tedit binary
*.lcom binary
*.sketch binary
*.dfasl binary
*.TEDIT binary
*.LCOM binary
*.SKETCH binary
*.DFASL binary

17
.github/ISSUE_TEMPLATE/documentation.md vendored Normal file
View File

@@ -0,0 +1,17 @@
---
name: Documentation problem
about: Problems with this web site?
title: ''
labels: ''
---
**Errors happen. Please tell us the URL**
**What does it say?**
**What should it say?**
**Screen shot**

View File

@@ -0,0 +1,32 @@
name: "New entry for **What People Are Saying**"
description: "Suggest a new entry for the **What People are Saying** page"
title: "What People are Saying suggestion"
body:
- type: dropdown
id: contentType
attributes:
label: "What type of entry?"
options:
- Blog
- Tweet
- Email
- Other
validations:
required: true
- type: input
id: entryLink
attributes:
label: Link to entry
description: "What is the link to the item we should add to the **What People are Saying** page?"
validations:
required: true
- type: textarea
id: additionalInformation
attributes:
label: Additional information
description: "Use this space to supply any addiitonal information on the suggested item."
validations:
required: false
- type: markdown
attributes:
value: "## Thank you for your suggestion!"

84
.github/workflows/Dockerfile_medley vendored Normal file
View File

@@ -0,0 +1,84 @@
#*******************************************************************************
#
# Dockerfile to build Medley image from latest Maiko image
# plus latest release tars from github
#
# Copyright 2022-2023 by Interlisp.org
#
# ******************************************************************************
FROM ubuntu:22.04
ARG TARGETPLATFORM
# Handle ARGs, ENV variables, and LABELs
ARG BUILD_DATE=unknown
ARG MEDLEY_RELEASE=unknown
ARG MAIKO_RELEASE=unknown
ARG REPO_OWNER=Interlisp
LABEL name="Medley"
LABEL description="The Medley Interlisp environment"
LABEL url="https://github.com/${REPO_OWNER}/medley"
LABEL build-date=$BUILD_DATE
LABEL medley_release=$MEDLEY_RELEASE
LABEL maiko_release=$MAIKO_RELEASE
ENV MEDLEY_DOCKER_BUILD_DATE=$BUILD_DATE
ENV MEDLEY_RELEASE=$MEDLEY_RELEASE
ENV MAIKO_RELEASE=$MAIKO_RELEASE
ENV LANG=C.UTF-8
# Copy over the release deb files
ADD ./*.deb /tmp
# Get tzdata setup ahead of time
RUN apt-get update; \
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime; \
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata; \
dpkg-reconfigure --frontend noninteractive tzdata
# Install Medley/Maiko and add tightvnc server and xclip to the image
RUN apt-get update \
&& apt-get install -y apt-utils \
&& apt-get install -y tigervnc-standalone-server \
&& apt-get install -y xclip \
&& apt-get install -y man-db \
&& apt-get install -y nano \
&& apt-get install -y sudo \
&& p=$(echo "${TARGETPLATFORM}" | sed -e "s#linux/##") \
&& p=$( \
if [ "$p" = "amd64" ]; \
then echo "x86_64"; \
elif [ "$p" = "arm64" ]; \
then echo "aarch64"; \
elif [ "$p" = "arm/v7" ]; \
then echo "armv7l"; \
else \
echo "x86_64"; \
fi \
) \
&& deb="medley-full-linux-${p}-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}.deb \
&& apt-get install -y /tmp/${deb} \
&& chown --recursive root:root /usr/local/interlisp \
&& (if [ -n "$(which unminimize)" ]; then (yes | unminimize); fi)
# "Finalize" image
EXPOSE 5900
RUN adduser --gecos "" medley \
&& adduser --gecos "" ubuntu \
&& adduser medley sudo \
&& adduser ubuntu sudo \
&& (echo 'medley:yeldem' | chpasswd ) \
&& (echo 'ubuntu:utnubu' | chpasswd ) \
&& echo "medley ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers \
&& echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers \
&& mkdir -p /home/medley/il \
&& chown medley:medley /home/medley/il
ENV TERM=xterm
USER medley
WORKDIR /home/medley
#ENTRYPOINT USER=medley Xvnc -SecurityTypes none -geometry 1280x720 :0 & DISPLAY=:0 medley --full -g 1280x720
ENTRYPOINT /bin/bash

View File

@@ -20,20 +20,31 @@ name: 'Build/Push Docker Image'
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
description: "'True' if medley docker build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
@@ -48,28 +59,10 @@ on:
defaults:
run:
shell: bash
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
force: ${{ steps.force.outputs.force }}
steps:
- id: force
run: >
if [ '${{ toJSON(inputs) }}' = 'null' ];
then echo ::set-output name=force::'${{ github.event.inputs.force }}'; echo "workflow_dispatch";
else echo ::set-output name=force::'${{ inputs.force }}'; echo "workflow_call";
fi
######################################################################################
@@ -77,22 +70,21 @@ jobs:
# based on the latest commit to the repo
sentry:
needs: inputs
runs-on: ubuntu-latest
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
@@ -109,81 +101,86 @@ jobs:
runs-on: ubuntu-latest
needs: [inputs, sentry]
needs: [sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
|| inputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v2
uses: actions/checkout@v4
# Find latest release (draft or normal)
# and download its assets
- name: Download linux debs from latest (draft) release
run: |
tag=""
if [ "${{ inputs.draft }}" = "true" ];
then
tag=$(gh release list | grep Draft | head -n 1 | awk '{ print $3 }')
fi
if [ -z "${tag}" ];
then
tag=$(gh release list | grep Latest | head -n 1 | awk '{ print $3 }')
fi
mkdir -p release_debs
gh release download ${tag} -D release_debs -p '*-linux-*.deb'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Get Maiko and Medley release information from name of deb files
# just downloaded from the Medley latest release
- name: Get info about Miako and Medley releases
id: release_info
run: |
regex="^medley-full-[^-]*-[^-]*-\([^_]*\)_\(.*\).deb\$"
ls -1 release_debs | head -n 1 > debname.tmp
medley_release="medley-$(sed -e "s/${regex}/\1/" debname.tmp)"
maiko_release="maiko-$(sed -e "s/${regex}/\2/" debname.tmp)"
rm -f debname.tmp
echo "MEDLEY_RELEASE=${medley_release}" >> ${GITHUB_ENV}
echo "MAIKO_RELEASE=${maiko_release}" >> ${GITHUB_ENV}
# regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
# Set repo env variables
- name: Set repo/docker env variables
id: repo_env
run: |
REPO_NAME=${GITHUB_REPOSITORY#*/}
echo "REPO_NAME=${REPO_NAME}" >> ${GITHUB_ENV}
echo ::set-output name=repo_name::${REPO_NAME}
DOCKER_NAMESPACE=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
echo "DOCKER_NAMESPACE=${DOCKER_NAMESPACE}" >> ${GITHUB_ENV}
echo ::set-output name=docker_namespace::${DOCKER_NAMESPACE}
# Get tag of latest Medley release.
- name: Get Medley Release Information
id: release_info
uses: abatilo/release-info-action@v1.3.0
with:
owner: ${{ github.repository_owner }}
repo: medley
# Get asset tars from latest Medley release
- name: Download Release Assets
uses: robinraju/release-downloader@v1.2
with:
repository: ${{ github.repository_owner }}/medley
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
fileName: "*"
out-file-path: "release_tars"
# Get Maiko release information about latest Maiko Docker Image
- name: Get info from latest Maiko image
id: maiko_setup
run: |
docker pull ${DOCKER_NAMESPACE}/maiko:latest
MAIKO_RELEASE=$(docker run --entrypoint /bin/bash ${DOCKER_NAMESPACE}/maiko:latest -c "echo \${MAIKO_RELEASE}")
echo "MAIKO_RELEASE=${MAIKO_RELEASE}" >> ${GITHUB_ENV}
echo ::set-output name=maiko_release::${MAIKO_RELEASE}
# Setup environment variables
- name: Setup Environment Variables
id: setup_env
run: |
RELEASE_TAG=${{ steps.release_info.outputs.latest_tag }}
DOCKER_IMAGE=${DOCKER_NAMESPACE}/${REPO_NAME}
DOCKER_TAGS="${DOCKER_IMAGE}:latest,${DOCKER_IMAGE}:${RELEASE_TAG#*-}_${MAIKO_RELEASE#*-}"
echo ::set-output name=docker_tags::${DOCKER_TAGS}
echo ::set-output name=docker_image::${DOCKER_IMAGE}
echo ::set-output name=build_time::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
echo ::set-output name=release_tag::${RELEASE_TAG}
echo "release_tag=${RELEASE_TAG}" >> ${GITHUB_ENV}
repo_name="${GITHUB_REPOSITORY#*/}"
docker_namespace="$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
docker_image="${docker_namespace}/${repo_name}"
if [ "${{ inputs.draft }}" = "false" ];
then
docker_tags="${docker_image}:latest,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}"
platforms="linux/amd64,linux/arm64"
else
docker_tags="${docker_image}:draft"
platforms="linux/amd64"
fi
echo "REPO_NAME=${repo_name}" >> ${GITHUB_ENV}
echo "DOCKER_NAMESPACE=${docker_namespace}" >> ${GITHUB_ENV}
echo "DOCKER_IMAGE=${docker_image}" >> ${GITHUB_ENV}
echo "DOCKER_TAGS=${docker_tags}" >> ${GITHUB_ENV}
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV}
echo "PLATFORMS=${platforms}" >> ${GITHUB_ENV}
#linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Machine Emulation environment.
- name: Set up QEMU
uses: docker/setup-qemu-action@master
uses: docker/setup-qemu-action@v3
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Buildx funtion
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
uses: docker/setup-buildx-action@v3
# Login into DockerHub - required to store the created image
- name: Login to DockerHub
uses: docker/login-action@v1
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
@@ -192,21 +189,20 @@ jobs:
# checked out and the release tars just downloaded.
# Push the result to Docker Hub
- name: Build Docker Image for Push to Docker Hub
uses: docker/build-push-action@v2
uses: docker/build-push-action@v5
with:
builder: ${{ steps.buildx.outputs.name }}
build-args: |
BUILD_DATE=${{ steps.setup_env.outputs.build_time }}
RELEASE_TAG=${{ steps.setup_env.outputs.release_tag }}
MAIKO_RELEASE=${{ steps.setup_env.outputs.maiko_release }}
DOCKER_NAMESPACE=${{ steps.repo_env.outputs.docker_namespace }}
BUILD_DATE=${{ env.BUILD_DATE }}
MEDLEY_RELEASE=${{ env.MEDLEY_RELEASE }}
MAIKO_RELEASE=${{ env.MAIKO_RELEASE }}
REPO_OWNER=${{ github.repository_owner }}
context: ./release_tars
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/arm/v7
context: ./release_debs
file: ./.github/workflows/Dockerfile_medley
platforms: ${{ env.PLATFORMS }}
# Push the result to DockerHub
push: true
tags: ${{ steps.setup_env.outputs.docker_tags }}
tags: ${{ env.DOCKER_TAGS }}
######################################################################################
@@ -220,12 +216,12 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, build_and-push]
needs: [sentry, build_and-push]
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -237,10 +233,10 @@ jobs:
uses: ./../actions/set-sentry-action
with:
tag: "docker"
- name: Output
id: output
run: |
echo ::set-output name=build_successful::'true'
echo "build_successful='true'" >> ${GITHUB_OUTPUT}
######################################################################################

View File

@@ -1,4 +1,4 @@
#re*******************************************************************************
#*******************************************************************************
# buidLoadup.yml
#
# Interlisp workflow to build Medley release and push it to github. This workflow
@@ -10,7 +10,7 @@
#
# 2022-01-17 Frank Halasz based on an earlier version of buildLoadup for Medley.
#
# Copyright 2022 by Interlisp.org
# Copyright 2022-2023 by Interlisp.org
#
# ******************************************************************************
@@ -20,6 +20,12 @@ name: Build/Push Medley Release
on:
workflow_dispatch:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
@@ -33,84 +39,83 @@ on:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
secrets:
OIO_SSH_KEY:
required: true
defaults:
run:
shell: bash
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
force: ${{ steps.force.outputs.force }}
steps:
- id: force
run: >
if [ '${{ toJSON(inputs) }}' = 'null' ];
then echo ::set-output name=force::'${{ github.event.inputs.force }}'; echo "workflow_dispatch";
else echo ::set-output name=force::'${{ inputs.force }}'; echo "workflow_call";
fi
######################################################################################
# JOB: sentry #######################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
sentry:
needs: inputs
runs-on: ubuntu-latest
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
with:
tag: "loadup"
######################################################################################
# Do the loadup
# JOB: loadup #######################################################################
#
# Do the loadup and push to release on github
#
loadup:
runs-on: ubuntu-latest
needs: [inputs, sentry]
outputs:
combined_release_tag: ${{ steps.job_outputs.outputs.COMBINED_RELEASE_TAG }}
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
maiko_release_tag: ${{ steps.job_outputs.outputs.MAIKO_RELEASE_TAG }}
artifacts_filename_template: ${{ steps.job_outputs.outputs.ARTIFACTS_FILENAME_TEMPLATE }}
release_url: ${{ steps.push.outputs.html_url }}
needs: [sentry]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
|| inputs.force == 'true'
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -118,121 +123,483 @@ jobs:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v2
uses: actions/checkout@v4
# Setup release tag
- name: Setup Release Tag
id: tag
uses: ./../actions/release-tag-action
# Setup environment variables
- name: Setup Environment Variables
id: setup_env
run: |
echo ::set-output name=build_time::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
# Get Maiko release information, retrieves the name of the latest
# Get Maiko release information, retrieves the name of the latest (draft)
# release. Used to download the correct Maiko release
- name: Get Maiko Release Information
id: latest_version
uses: abatilo/release-info-action@v1.3.0
with:
owner: ${{ github.repository_owner }}
repo: maiko
# Download Maiko Release Assets
- name: Download Release Assets
uses: robinraju/release-downloader@v1.2
with:
repository: ${{ github.repository_owner }}/maiko
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
fileName: "${{ steps.latest_version.outputs.latest_tag }}-linux.x86_64.tgz"
- name: Untar Maiko Release
# Find latest release (draft or normal)
- name: Get maiko release information
id: maiko
run: |
tar -xvzf "${{ steps.latest_version.outputs.latest_tag }}-linux.x86_64.tgz"
tag=""
if [ "${{ inputs.draft }}" = "true" ];
then
gh release list --repo ${{ github.repository_owner }}/maiko | grep Draft >/tmp/releases-$$
if [ $? -eq 0 ];
then
tag=$(head -n 1 /tmp/releases-$$ | awk '{ print $3 }')
fi
fi
if [ -z "${tag}" ];
then
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
fi
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
echo "TARBALL_DIR=/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.maiko_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@" >>${GITHUB_ENV}
- name: More Environment Variables
run: |
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
echo "MAIKO_SHORT_RELEASE_TAG=${MAIKO_RELEASE_TAG#maiko-}" >>${GITHUB_ENV}
- name: Even More Environment Variables
run: |
echo "COMBINED_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}_${MAIKO_SHORT_RELEASE_TAG}" >>${GITHUB_ENV}
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MAIKO_RELEASE_TAG=${MAIKO_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "ARTIFACTS_FILENAME_TEMPLATE=${ARTIFACTS_FILENAME_TEMPLATE}" >> ${GITHUB_OUTPUT}
# Setup some needed dirs in workspace
- name: Create work dirs
run: mkdir -p ${TARBALL_DIR}
# Download Maiko Release Assets and untar it
- name: Download Release Assets
run: |
gh release download ${MAIKO_RELEASE_TAG} \
-D ${TARBALL_DIR} \
--repo ${{ github.repository_owner }}/maiko \
-p '*.tgz'
tar -xzf "${TARBALL_DIR}/${MAIKO_RELEASE_TAG}-linux.x86_64.tgz"
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- name: Tar notecards into tarball dir
run: |
mv ./notecards ../notecards
cd ../notecards
git archive --format=tgz --output="${TARBALL_DIR}/notecards.tgz" --prefix=notecards/ main
# Install vnc
- name: Install vnc
run: sudo apt-get update && sudo apt-get install -y tightvncserver
- name: Build Loadout
- name: Build Loadup sysouts and databases
run: |
Xvnc -geometry 1280x720 :0 &
export DISPLAY=":0"
PATH="$PWD/maiko:$PATH"
scripts/loadup-all.sh
scripts/loadup-all.sh -apps
scripts/loadup-db.sh
- name: Build loadups release tar
- name: Build release tars
run: |
cp -p tmp/full.sysout tmp/lisp.sysout tmp/whereis.hash loadups/
cp -p tmp/exports.all library/
cd ..
tar cfz medley/tmp/${release_tag}-loadups.tgz \
medley/loadups/lisp.sysout \
medley/loadups/full.sysout \
medley/loadups/whereis.hash \
medley/library/exports.all
scripts/release-make-tars.sh "${MEDLEY_RELEASE_TAG}"
mv releases/"${MEDLEY_SHORT_RELEASE_TAG}"/*.tgz "${TARBALL_DIR}"
env:
release_tag: ${{ steps.tag.outputs.release_tag }}
- name: Build runtime release tar
# Push the release up to github releases
- name: Delete existing release with same tag (if any)
uses: cb80/delrel@latest
with:
tag: ${{ env.MEDLEY_RELEASE_TAG }}
continue-on-error: true
- name: Push the release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# ${{ env.TARBALL_DIR }}/notecards.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
draft: ${{ inputs.draft }}
prerelease: false
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
# Save the tarball directory for subsequent jobs
- name: Save tarballs
uses: actions/upload-artifact@v4
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
if-no-files-found: error
# JOB: linux_installer ##############################################################
#
# Create the linux installers (.deb and .tgz) and push to release on github
#
linux_installer:
runs-on: ubuntu-latest
needs: [sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
# Environment variables
- name: Environment variables
run: |
cd ..
tar cfz medley/tmp/${release_tag}-runtime.tgz \
--exclude "*~" --exclude "*#*" \
--exclude exports.all \
medley/docs/dinfo \
medley/doctools \
medley/greetfiles \
medley/rooms \
medley/run-medley \
medley/scripts \
medley/fonts/displayfonts \
medley/fonts/altofonts \
medley/fonts/adobe \
medley/fonts/postscriptfonts \
medley/library \
medley/lispusers \
medley/sources \
medley/internal
env:
release_tag: ${{ steps.tag.outputs.release_tag }}
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
>>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create taball dir
- run: mkdir -p ${TARBALL_DIR}
- name: "Create release"
uses: "actions/github-script@v5"
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v4
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
script: |
try {
await github.rest.repos.createRelease({
draft: false,
generate_release_notes: true,
name: process.env.release_tag,
owner: context.repo.owner,
prerelease: false,
repo: context.repo.repo,
tag_name: process.env.release_tag,
});
} catch (error) {
core.setFailed(error.message);
}
env:
release_tag: ${{ steps.tag.outputs.release_tag }}
name: tarballs
path: ${{ env.TARBALL_DIR }}
- name: "Upload release assets"
uses: AButler/upload-release-assets@v2.0
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
./build_deb.sh
# Push the debs and tgz up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
files: 'tmp/${{ env.release_tag }}-loadups.tgz;tmp/${{ env.release_tag }}-runtime.tgz'
repo-token: ${{ secrets.GITHUB_TOKEN }}
release-tag: ${{ env.release_tag }}
allowUpdates: true
artifacts:
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
- name: Rename medley tar for the x86_64 platform
run: |
cd ${{ env.TARS_DIR }}
mv medley-full-linux-x86_64-*.tgz medley.tgz
- name: Save medley tar for use in cygwin installers
uses: actions/upload-artifact@v4
with:
name: medley-tar
path: |
${{ env.TARS_DIR }}/medley.tgz
# JOB: macos_installer ##############################################################
#
# Create the macos installers (.dmg and .zip) and push to release on github
#
macos_installer:
runs-on: macos-12
needs: [sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
# if: false
defaults:
run:
shell: bash
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
# Environment variables
- name: Environment variables
run: |
MACOS_DIR=installers/macos
echo "MACOS_DIR=${MACOS_DIR}" >>${GITHUB_ENV}
echo "ARTIFACTS_DIR=${MACOS_DIR}/artifacts" >>${GITHUB_ENV}
echo "TARBALL_DIR=${MACOS_DIR}/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create tarball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v4
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the .dmg and .zip files
- name: Build .dmg & .zip files
id: dmg-zip
run: |
cd ${MACOS_DIR}
./build_artifacts.sh
# Push the .dmg and .zip up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
${{ env.ARTIFACTS_DIR }}/*.zip
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# JOB: cygwin_installer #############################################################
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
#
cygwin_installer:
runs-on: windows-2022
needs: [sentry, loadup, linux_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
outputs:
cygwin_installer: ${{ steps.compile_iss.outputs.CYGWIN_INSTALLER }}
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
# Store the values output from loadup job as environment variables
- name: Environment Variables
shell: powershell
run: |
$crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=$crt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$aft="${{ needs.loadup.outputs.artifacts_filename_template }}"
echo "ARTIFACTS_FILENAME_TEMPLATE=$aft" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Retrieve medley tars from artifact store
- name: Retrieve medley tar
uses: actions/download-artifact@v4
with:
name: medley-tar
path: installers/cygwin/
# Download maiko cygwin build
- name: Retrieve maiko cygwin build
shell: powershell
env:
release_tag: ${{ steps.tag.outputs.release_tag }}
GH_TOKEN: ${{ secrets.MAIKO_TOKEN }}
run: |
gh release download ${{ needs.loadup.outputs.maiko_release_tag }} --repo interlisp/maiko --pattern ${{ needs.loadup.outputs.maiko_release_tag }}-cygwin.x86_64.tgz --output installers\cygwin\maiko-cygwin.x86_64.tgz
# Download cygwin installer to be included by medley.iss
- name: Download cygwin installer
id: cygwin
shell: powershell
run: |
wget https://cygwin.com/setup-x86_64.exe -OutFile installers\cygwin\setup-x86_64.exe
# Download vnc viewer
#- name: Download vncviewer
# shell: powershell
# run: |
# $url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
# $output = "installers\win\vncviewer64-1.12.0.exe"
# (New-Object System.Net.WebClient).DownloadFile($url, $output)
# Run iscc.exe to compile the installer
#- name: Compile medley.iss
# shell: powershell
# run: |
# iscc installers\win\medley.iss
# $filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
# echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Run iscc.exe to compile the installer
- name: Compile cygwin_medley.iss
id: compile_iss
shell: powershell
run: |
$Env:CYGWIN_INSTALLER_BASE="medley-full-cygwin-x86_64-${env:COMBINED_RELEASE_TAG}"
$CYGWIN_INSTALLER="${Env:CYGWIN_INSTALLER_BASE}.exe"
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
iscc installers\cygwin\medley.iss
# Upload windows installer to release
- name: Upload windows installer to release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: installers/cygwin/${{ env.CYGWIN_INSTALLER }}
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
######################################################################################
# JOB: downloads_page ################################################################
#
# Update the downloads page on OIO
#
downloads_page:
runs-on: ubuntu-latest
needs: [sentry, loadup, linux_installer, macos_installer, cygwin_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| inputs.force == 'true'
steps:
# Environment variables
- name: Environment Varibales (from other jobs)
run: |
crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=${mrt}" >>${GITHUB_ENV}
msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=${msrt}" >>${GITHUB_ENV}
cyginst="${{ needs.cygwin_installer.outputs.cygwin_installer }}"
echo "CYGWIN_INSTALLER=${cyginst}" >>${GITHUB_ENV}
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v4
# Upload a dummy file to release
# Needed since download url of the release changes on every update
# So this will be the final update before creating downloads page
# and we can use its url for the page
- run: echo "placeholder" >placeholder.txt
- name: Upload windows placeholder.txt to release
id: pushph
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: placeholder.txt
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Update the downloads page and the man page on OIO
- name: Update the downloads page and the man page to the OIO static page host
shell: bash
run: |
# Figure out filenames
download_url="${{ steps.pushph.outputs.html_url }}"
download_url="${download_url/\/tag\//\/download\/}"
local_template="installers/downloads_page/medley_downloads.html"
local_filename="medley_downloads.html"
local_manpath="docs/man-page/man_medley.html"
if [ "${{ inputs.draft }}" = "true" ];
then
remote_filename="draft_downloads"
remote_manname="man_draft.html"
else
remote_filename="${local_filename%.html}"
remote_manname="man_medley.html"
fi
remote_filepath="/srv/oio/static/${remote_filename}"
remote_manpath="/srv/oio/static/${remote_manname}"
# Fill in downloads page template
sed \
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
-e "s/@@@COMBINED.RELEASE.TAG@@@/${COMBINED_RELEASE_TAG}/g" \
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
-e "s~@@@CYGWIN.INSTALLER@@@~${CYGWIN_INSTALLER}~g" \
< "${local_template}" > "${local_filename}"
# Create sftp instruction file
echo "-rm ${remote_filepath}.oldold" > batch
echo "-rename ${remote_filepath}.old ${remote_filepath}.oldold" >> batch
echo "-rename ${remote_filepath}.html ${remote_filepath}.old" >> batch
echo "-put ${local_filename} ${remote_filepath}.html" >> batch
echo "-put ${local_manpath} ${remote_manpath}" >> batch
# Do the sftp
eval $(ssh-agent)
ssh-add - <<< "${SSH_KEY}"
sftp -o StrictHostKeyChecking=no -b batch ubuntu@online.interlisp.org
env:
SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
# Remove placeholder.txt
- name: Remove placeholder.txt
run: |
gh release delete-asset ${{ env.MEDLEY_RELEASE_TAG }} placeholder.txt --yes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# JOB: complete #####################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
@@ -244,12 +611,19 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, loadup]
needs: [sentry, loadup, downloads_page]
steps:
# Delete the tarballs artifact
- name: Delete tarballs artifact
uses: geekyeggo/delete-artifact@v5
with:
name: tarballs
failOnError: false
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/.github
path: ./Actions_${{ github.sha }}
@@ -265,6 +639,7 @@ jobs:
- name: Output
id: output
run: |
echo ::set-output name=build_successful::'true'
echo "build_successful='true'" >> $GITHUB_OUTPUT
######################################################################################
######################################################################################

View File

@@ -18,19 +18,96 @@ name: "Build/Push Release & Docker"
# Run this workflow on ...
on:
schedule:
- cron: '0 9 * * 1'
workflow_dispatch:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
options:
- 'false'
- 'true'
force:
description: "Force build even if build already successfully completed for this commit"
type: choice
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
description: "'True' if medley build completed successully"
value: ${{ jobs.complete.outputs.build_successful }}
inputs:
draft:
description: "Mark this as a draft release"
required: false
type: string
default: 'false'
force:
description: "Force build even if build already successfully completed for this commit"
required: false
type: string
default: 'false'
defaults:
run:
shell: bash
# Jobs that compose this workflow
jobs:
######################################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
inputs:
runs-on: ubuntu-latest
outputs:
draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }}
steps:
- id: one
run: >
if [ '${{ toJSON(inputs) }}' != '{}' ];
then
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
else
echo "draft=false" >> $GITHUB_OUTPUT;
echo "force=false" >> $GITHUB_OUTPUT;
fi
######################################################################################
# Build Loadup
do_release:
needs: inputs
uses: ./.github/workflows/buildLoadup.yml
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets: inherit
######################################################################################
# Build Docker Image
do_docker:
needs: do_release
needs: [inputs, do_release]
uses: ./.github/workflows/buildDocker.yml
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets: inherit
######################################################################################

View File

@@ -1,23 +0,0 @@
name: 'Test Docker Login'
# Run this workflow on ...
on:
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
login_test:
runs-on: ubuntu-latest
steps:
- id: only_step
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

14
.gitignore vendored
View File

@@ -2,14 +2,20 @@
tmp/*
# releases directory
releases/*
# all loadup files
library/exports.all
loadups/exports.all
library/RDSYS*
loadups/lisp.sysout
loadups/full.sysout
loadups/*.dribble
loadups/whereis.hash
loadups/apps.sysout
loadups/fuller.database
# manual cross-reference files
@@ -36,3 +42,9 @@ core
# Mac OS detritus
.DS_Store
*.PS
# nano detritus
*.swp
*.save

View File

@@ -1,34 +1,126 @@
# How to build a medley release
# How to Build Medley and make a Release
Originally done only with shell scripts:
```
./scripts/loadup-all.sh
```
to make the loadups
```
./scripts/loadup-and-release.sh
```
to go on to make the tgz files and release them
The files in the Medley repository are used for making "loadups" lisp.sysout, full.sysout, apps.sysout. In order to build the Medley images, you need to have a build of "Maiko" (in flavors 'ldeinit' and 'lde' and either (`ldex` or `ldesdl`). Head over to the `Interlisp/maiko` repository to find out about making those.
# Using github actions
# Using GitHub actions
In the github medley repository (Interlisp/medley) go to the Actions tab.
Note that GitHub actions are used to automate the build process and insure that the system is built using known files, and that the releases are coordinated across platforms. We try to minimize dependencies on GitHub.
It will list the available github actions, select: **Build Medley Release**.
That said, you can manually trigger the automatic making of Medley loadups.
In the GitHub medley repository (Interlisp/medley) go to the Actions tab.
It will list the available GitHub actions.
Select: **Build/Push Release & Docker**.
In the middle of the screen there is a box labeled "Workflow Runs".
In the middle of the screen there's a box labeled workflow runs.
There should be a row in it that states 'This workflow has a workflow_dispatch event trigger' with a drop down menu (it really looks more like a button) on the right side labeled 'Run workflow'. Select that and you'll get a form allowing you to select the branch (I've only used Master) and enter the release name. Enter a name or leave it empty and press the green 'Run workflow' button. The workflow should queue up and run.
# How to create a Docker image for the latest Medley release
In the github medley repository (Interlisp/medley) go to the Actions tab.
It will list the available github actions, select: **Build Medley Docker image**.
A table is presented which lists the previous runs of the workflow. If the workflow has never been run, it will be empty. A the top of the list is a row labeled, 'This workflow has a workflow_dispatch event trigger.' with a drop down menu labeled 'Run workflow'. Select it.
A box will be presented asking, 'Use workflow from' with a drop down menu of all available branches. The default branch is **master**. Leave it selected and push the green 'Run workflow' button.
The workflow will be queued to run and start running.
Build/Push Release & Docker first builds Maiko and Medley, pushes a Medley release to the Interlisp/medley repo Releases, then makes a Docker image.
The files in .github/workflows/ contain the details.
<!--
The workflow pulls the latest Maiko image from Docker Hub and the Release Assets from the latest Medley release, generally defined as medley-YYMMDD. The Medley Docker image adds in Tight VNC Server and retrieves the two tarballs associated with a release, one containing the sysouts and the other the other needed files source, fonts, etc. The contents are uncompressed and loaded into the Medley directory structure.
-->
# Building Medley for yourself
The actual building itself is done with various shell scripts, found in the `scripts` directory in the medley repository. Most of the scripts have a minimal sanity check that they are being run from the medley repository.
Historically, building the medley image (called a "sysout") was called "doing a loadup". Back in the day, a loadup took the better part of a day, and no one would do the whole thing -- there was no automation.
## Prerequisites
In these instructions, there is an assumption that the loadup scripts can find other repositories. All of the loadup scripts have to find `lde` and `ldex` or `ldisdl` and also `ldeinit`.
Loadups use the run-medley script, which looks for Maiko (actually the lde & ldeinit executables) as follows:
1. lde (ldeinit) on PATH
2. In the `<osversion>.<machinetype>` subdirectory of the directory specified by the $MAIKODIR environment variable
3. In the `<osversion>.<machinetype>` subdirectory of the directory specified by $MEDLEYDIR/../maiko/
4. In the `<osversion>.<machinetype>` subdirectory of the directory specified by $MEDLEYDIR/maiko/
where $MEDLEYDIR is the directory from which you called the loadup script.
## Make everything
The shell command:
```
time ./scripts/loadup-all.sh -apps && time ./scripts/loadup-db.sh
```
does everything; on a fast machine it takes 4-6 minutes, most of which is spent in the `loadup-db.sh` step. Without the `loadup-db.sh` step, it runs in 22 seconds on a fast system.
## How loadup-all.sh works
You don't need to know this unless you want to change some of the low-level files involved.
The script "loadup-all.sh" itself involes scripts used for different steps in the loadup -- basically loadup-all calls the scripts in this order:
* `loadup-init.sh`
* `loadup-mid-from-init.sh`
* `loadup-lisp-from-mid.sh`
* `loadup-full-from-lisp.sh`
* `loadup-aux.sh`
* `loadup-apps-from-full.sh`
* `loadup-db.sh`
* `copy-all.sh`
Most of these scripts should only be run from the 'medley' repository top level directory.
```
your-working-area
maiko
medley
notecards
```
These are explained in reverse order:
### `copy-all.sh`: copy files from build directory to loadups
Most of the scripts build things in a temporary directory and, if the entire process succeeds, copies the results to the `loadups` directory. The environment variable `LOADUP-OUTDIR`, if set, is used, otherwise a sub-directory of /tmp.
`copy-db.sh` and `copy-full.sh` are provided if you've only done partial loadups.
`cpv` is a script that copies a file from one place to another while maintaining Medley version numbering.
### `loadup.db`: build `fuller.database`
This step was added to make a Masterscope database of "everything". The result is a file `fuller.database`. This was an artifact of an attempt to build some diagnostic tools to help understand what was going on in Medley. There is a 4 step process in the `GATHER-INFO` function in the file `MEDLEY-UTILS` in the `internal` subdirectory of the medley repository that ends with creating a masterscope database after loading all of the source files for every file that is part of the loadup, plus a few additional LispUsers files listed in variables that are part of `MEDLEY-UTILS`.
There are some problems that `GATHER-INFO` results hint at, but haven't been explored systematically.
Masterscope has some gaps and bugs so `fuller.database` isn't as useful as it could be. For example, Masterscope 'show paths' was written assuming you had only anlayzed the parts you were working on, and so the results of `SHOW PATHS` are too big to be useful.
## `loadup-aux.sh`: rebuild two files used for Medley development
`exports.all` is a collection of external declarations from a set of files in the medley/sources directory that are marked as being exported within those sources. Low level system declarations that aren't needed by most users. The files that need exports.all are generally loaded by loading `SYSEDIT`, which sets up a couple of preferences and then loads `exports.all`.
`whereis.hash` is an index file mapping function, variable, record declarations and other components to the file name containing that definition. It is the result of scanning the directories in the medley repository, including lispusers and library and internal etc. (but not obsolete?).
### `loadup-apps-from-full.sh:`build `apps.sysout`
`apps.sysout` includes some other components that are part of online.interlisp.org experience. In particular, you need `notecards`, which is in a separate repository (currently).
### `loadup-full-from-lisp.sh`: Build a `full.sysout` and
`full.sysout` Includes what we hope is a useful subset of Interlisp library and lispusers components as well as our modernization components.
### Build a `lisp.sysout` in 4 scripts:
### `loadup-lisp-from-mid.sh` build `lisp.sysout`
`lisp.sysout` is what most 1990s customers started with. This step starts with `init-mid.sysout` and runs `sources/LOADUP-LISP`.
### `loadup-mid-from-init.sh` build `mid.sysout`
This step uses a Maiko that has been compiled with the `init` option. It reads the `init.dlinit` and initializes the package system and runs the EXPRESSIONS from the files that were "loaded" by MAKEINIT, and writes out `init-mid.sysout`.
### `loadup-init.sh`: build `mid.sysout`
This step (called `MAKEINIT`) runs a Lisp program (using a `starter` sysout) that reads in Lisp sources for the bootstrap loader, walks through the code renaming the low-level memory management functions to work on a file instead of in memory. These renamed functions are written to a file (called I-NEW), and I-NEW is then compiled and loaded in and run to 'virtually' load the core set of files in an initial memory image (called INIT.SYSOUT). It then does another (theoretically unnecessary) pass of reading in INIT.SYSOUT using a different renaming of variables used originally for remote debugging (called TELERAID) and moving some pages around to make room for Dandelion IO Processor boot code.
While this step requires an Interlisp implementation, it isn't necessarily a Medley implementation. If you want to change the instruction set or modify any data structures that are reflected in both the Lisp code and Maiko, you can run this part in an older Interlisp. Theoretically.

View File

@@ -1,54 +0,0 @@
#*******************************************************************************
#
# Dockerfile to build Medley image from latest Maiko image
# plus latest release tars from github
#
# Copyright 2022 by Interlisp.org
#
# ******************************************************************************
ARG DOCKER_NAMESPACE=interlisp
FROM ${DOCKER_NAMESPACE}/maiko:latest
# Add tightvnc server and xclip to the image
RUN apt-get update && apt-get install -y tightvncserver && apt-get install -y xclip
# Handle ARGs, ENV variables, and LABELs
ARG BUILD_DATE=unknown
ARG RELEASE_TAG=unknown
ARG MAIKO_RELEASE=unknown
ARG REPO_OWNER=Interlisp
LABEL name="Medley"
LABEL description="The Medley Interlisp environment"
LABEL url="https://github.com/${REPO_OWNER}/medley"
LABEL build-time=$BUILD_DATE
LABEL release_tag=$RELEASE_TAG
LABEL maiko_release=$MAIKO_RELEASE
ENV MEDLEY_BUILD_DATE=$BUILD_DATE
ENV MEDLEY_RELEASE=$RELEASE_TAG
ARG INSTALL_LOCATION=/usr/local/interlisp
ENV INSTALL_LOCATION=${INSTALL_LOCATION}
ARG DOCKER_NAMESPACE=interlisp
ENV DOCKER_NAMESPACE=${DOCKER_NAMESPACE}
# Copy over the release tars
RUN mkdir -p ${INSTALL_LOCATION}
ADD ./*.tgz ${INSTALL_LOCATION}
# Create a run_medley script in /usr/local/bin
RUN mkdir -p /usr/local/bin && \
echo "#!/bin/bash" > /usr/local/bin/run-medley && \
echo "cd ${INSTALL_LOCATION}" >> /usr/local/bin/run-medley && \
echo './run-medley "$@"' >> /usr/local/bin/run-medley && \
chmod ugo+x /usr/local/bin/run-medley
# "Finalize" image
EXPOSE 5900
RUN adduser --disabled-password --gecos "" medley
USER medley
WORKDIR /home/medley
ENTRYPOINT USER=medley Xvnc -geometry 1280x720 :0 & DISPLAY=:0 ${INSTALL_LOCATION}/medley/run-medley -full -g 1280x720 -sc 1280x720

View File

@@ -1,45 +1,43 @@
# Medley
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
This repository is for the Lisp environment of [Medley](https://interlisp.org).
See the [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation) for an overview and pointers to documentation.
In particular [Running](https://github.com/Interlisp/medley/wiki/Running) explains other methods of getting Medley Interlisp.
[Install and Run](https://interlisp.org/software/install-and-run) covers ways to install and start up Medley on Linux systems, MacOS, and Windows (with or without WSL).
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
[Using Medley](https://interlisp.org/software/using-medley/) has an overview and pointers to documentation.
## Using releases
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
There currently are separate releases of medley and maiko; get the latest version of each.
## Releases
### Getting releases
While there are installers for popular platforms, this section may be useful in some circumstances.
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor (for Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for M1.)
### Getting releases
Or, build your own maiko (the binaries `lde` `ldex` and `ldeinit`) We can build for other OS arch pairs depending on what is available for GitHub actions.
Get the Maiko release [here](https://github.com/Interlisp/maiko/releases). You'll need the .tgz file corresponding to your operating system and processor. For Windows with WSL or Intel Linux, use `linux.x86_64`; for Macs use `darwin.x86_64` for Intel and `darwin.aarch64` for Mac silicon. Windows without WSL uses `cygwin` instead.
The medley release comes in two parts, found [here](https://github.com/Interlisp/medley/releases)
1. The "loadups" (download `medley-`YYMMDD`-loadups.tgz`)
2. The "runtime" (download `medley-`YYMMDD`-runtime.tgz`)
Or, build your own maiko (the binaries `lde`, `ldex` OR `ldesdl`, and `ldeinit`).
You can also build for other architectures
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
The medley release image and sources come in two parts, found [here](https://github.com/Interlisp/medley/releases)
1. The "loadups" (download `medley-`_YYMMDD-XXXXX_`-loadups.tgz`)
2. The "runtime" (download `medley-`_YYMMDD-XXXXX_`-runtime.tgz`)
If you happen to have the 'gh' GitHub command line installed you can download both using
```
gh release download -R Interlisp/medley -p "*"
```
but otherwise just click on the link(s) below to the parts you need.
where _YYMMDD_ is the date and _XXXXX_ is the GitHub commit ID.
The "runtime" isn't needed if you've cloned the (medley) repo--you have all the files. The "runtime" has extra fonts, unicode tables, and source code that aren't part of the loadups but may be called on.
### Unpacking releases
From a shell/terminal window:
1. Choose where you want to install medley and maiko.
Unpack the medley loadups file
1. Choose a directory _parent_ where you want to install medley and maiko.
2. Unpack the medley loadups file
* `cd ` ~parent~
* `tar xvzf medley-`YYMMDD`-loadups.tgz`
* `cd ` _parent_
* `tar xvzf medley-`_YYMMDD-XXXXX_`-loadups.tgz`
2. Unpack the medley runtime OR clone the Medley repo
3. Unpack the medley runtime OR clone the Medley repo
(the "medley runtime" is just a subset of the whole repo)
* `tar xvzf medley-`YYMMDD`-runtime.tgz`
@@ -49,25 +47,27 @@ Unpack the medley loadups file
git clone https://github.com/Interlisp/medley
```
3. Unpack the maiko file for your operating system and CPU type, e.g.,
4. Unpack the maiko file for your operating system and CPU type, e.g.,
```
tar xvzf maiko-210823.linux.x86_64.tgz
```
3. This should leave you with two directories, `medley` and `maiko`.
5. This should leave you with two directories, `medley` and `maiko`.
### Setting up X
Medley Interlisp currently needs an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
In many configurations, Medley uses an X-Server to manage its display. Most Linux desktops have one. Windows 11 with WSL includes an X-Server. For Windows 10 with WSL2, there are a number of open-source X servers; for example vcxsrv.
Mac users should get [XQuartz from XQuartz.org](https://xquartz.org/releases).
Medley manages the display entirely, doesn't use X fonts and manages it's own window system.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doublilng" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.) It also presumes you have a 3-button mouse; the scroll-wheel on some mice act as one with some difficulty.) XQuartz Preferences/Input has "Emulate three button mouse" option.
If you have a high-resolution display, note that much of the graphics was designed for a low-resolution display, so an X-server that does "pixel doubling" is best. (E.g., Raspberry Pi does pixel doubling on 4K displays.)
### Running Medley Interlisp
Medley presumes you have a 3-button mouse; the scroll-wheel on some mice acts as one, with some difficulty. Go into XQuartz Preferences/Input and check "Emulate three button mouse" option.
### Running Medley Interlisp (obsolete)
The `run-medley` script in this repo sets up some convenient defaults. Running Medley can be done by typing:
```
@@ -105,15 +105,15 @@ dump of your system located in your home directory named
specify a specific image to run, Medley restores that image so that
you can continue right where you left off.
* [Using Medley Interlisp](https://github.com/Interlisp/medley/wiki/Using-Medley-Interlisp)
* [Using Medley Interlisp](https://interlisp.org/doc/info/Using.html)
## Naming conventions and directory structure
File Names and Extensions: Most Interlisp source file names are
UPPERCASE and Interlisp didn't use file extensions for its source
files. A .TEDIT or .TXT file is probably documentation
for the package of same name, at least in the library, lispusers.
for the package of the same name, at least in the library and lispusers
directories.
The current repo has both Lisp sources and compiled .LCOM and .DFASL
files.
@@ -122,9 +122,8 @@ Each directory should have a README.md, but briefly
* BUILDING.md -- instructions on how to make your own loadups
* clos -- early implementation of Common Lisp Object System
* CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSII standard lisp.
* Dockerfile -- used when building Docker containers with Medley
* docs -- Documentation files (in TEdit format PDFs or online help; look [here](https://github.com/Interlisp/medley/Documentation)
* CLTL2 -- files submitted to bring Medley up to the conformance to "Common Lisp, the Language" 2nd edition. Not enough to conform to the ANSI standard lisp.
* docs -- Documentation files (in TEdit format, PDFs, or online help; look [here](https://github.com/Interlisp/medley/Documentation))
* fonts -- raster fonts (or font widths) in various resolutions for display, postscript, interpress, press formats
* greetfiles -- various configuration setups
* internal -- These _were_ internal to Venue
@@ -134,11 +133,6 @@ Each directory should have a README.md, but briefly
* obsolete -- files we should remove from the repo
* rooms -- implementation of ROOMS window/desktop manager
* run-medley -- script to enhance the options of running medley
* scripts -- some scripts for fixing up things
* scripts -- some scripts for fixing up things, building and running medley
* sources -- sources for Interlisp and Common Lisp implementations
* unicode -- data files for support of XCCS to and from Unicode mappings
plus
Dockerfile, and scripts for building and running medley
tmp directory for use during build processes

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -1,5 +1,5 @@
See [Documentation links](https://github.com/Interlisp/medley/wiki/Documentation)
a complete list of available documentation. Much of the documentation still
See [Using Medley](https://interlisp.org/software/using-medley)
for a list of available documentation. Much of the documentation still
needs review and updating.
This directory has source (.TEDIT) for some documents that are found elsewhere.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
docs/ReleaseNote/LOT.tedit Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

BIN
docs/ReleaseNote/TOC.TEDIT Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

2
docs/man-page/man2html.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
pandoc --from man --to html < medley.1 > man_medley.html

View File

@@ -0,0 +1,107 @@
<h1>NAME</h1>
<p><strong>medley</strong> — starts up Medley Interlisp</p>
<h1>SYNOPSIS</h1>
<p><strong>medley</strong> [ flags ... ] [ <em>SYSOUT_FILE</em> ] [ -- <em>PASS_ON_ARGS</em> ]</p>
<h1>DESCRIPTION</h1>
<p>Starts Medley Interlisp in a window.</p>
<h1>OPTIONS</h1>
<p><strong>MEDLEYDIR</strong> is an environment variable set by Medley and used by many of the options described below. MEDLEYDIR is the top level directory of the Medley installation that contains the specific medley script that is invoked after all symbolic links are resolved. In the standard global installation this will be /usr/local/interlisp/medley. But Medley can be installed in multiple places on any given machine and hence MEDLEYDIR is computed on each invocation of medley.</p>
<h2>Flags</h2>
<dl>
<dt><strong>-h, --help</strong></dt>
<dd><p>Prints out a brief summary of the flags and arguments to medley.</p>
</dd>
<dt><strong>-z, --man</strong></dt>
<dd><p>Show the man page for medley</p>
</dd>
<dt><strong>-f, --full</strong></dt>
<dd><p>Start Medley from the standard “full” sysout. full.sysout includes a complete Interlisp and CommonLisp environment with a standard set of development tools. It does not include any of the applications built using Medley. (See <em>SYSOUT_FILE</em> below for more information on starting sysouts.)</p>
</dd>
<dt><strong>-l, --lisp</strong></dt>
<dd><p>Start Medley from the standard “lisp” sysout. lisp.sysout only includes the basic Interlisp and CommonLisp environment. (See <em>SYSOUT_FILE</em> below for more information on starting sysouts.)</p>
</dd>
<dt><strong>-a, --apps</strong></dt>
<dd><p>Start Medley from the standard “apps” sysout. apps.sysout includes everything in full.sysout plus Medley applications including Notecards, Rooms and CLOS. It also includes pre-installed links to key Medley documentation. (See <em>SYSOUT_FILE</em> below for more information on starting sysouts.)</p>
</dd>
<dt><strong>-e, --interlisp (relevent only when --apps is specified)</strong></dt>
<dd><p>Make the initial Exec window within Medley be an Interlisp Exec. Default is to start in an XCL Exec.</p>
</dd>
<dt><strong>-n, --noscroll</strong></dt>
<dd><p>Ordinarily Medley displays scroll bars to enable the user to pan the Medley virtual display within the Medley window. This is true even when the entire virtual display fits within the window. Specifying --noscroll turns off the scroll bars. Note: If --noscroll is specified and the virtual screen is larger than the window, there will be no way to pan to the non-visible parts of the virtual display.</p>
</dd>
<dt><strong>-g <em>WxH</em>, --geometry <em>WxH</em></strong></dt>
<dd><p>Sets the size of the X Window (or VNC window) that Medley runs in to be Width x Height. (Full X Windows geomtery specification with +X+Y is not currently supported). If --geometry is not specified but --screensize is, then the window size will be determined based on the --screensize values and the --noscroll flag. If neither --geometry nor --screensize is provided, then the window size is set to 1440x900 if --noscroll is set and 1462x922 if --noscroll is not set.</p>
</dd>
<dt><strong>-s <em>WxH</em>, --screensize <em>WxH</em></strong></dt>
<dd><p>Sets the size of the virtual display as seen from Medleys point of view. The Medley window is an unscaled viewport onto this virtual display. If --screensize is not specified but --geometry is, then the virtual display size will be set so that the entire virtual display fits into the given window geometry. If neither --screensize nor --geometry is provided, then the screen size is set to 1440x900.</p>
</dd>
<dt><strong>-t <em>STRING</em>, --title <em>STRING</em></strong></dt>
<dd><p>Use STRING as title of Medley window. Ignored when when the --vnc flag is set or when running on Windows (Docker) installations.</p>
</dd>
<dt><strong>-d <em>:N</em>, --display <em>:N</em> ** <strong>Not</strong> applicable to Windows (Docker) installations **</strong></dt>
<dd><p>Use X display :N. Defaults to the value of $DISPLAY. This flag is ignored when the --vnc flag is set as well as on Windows (Docker) installations.</p>
</dd>
<dt><strong>-v, --vnc ** <strong>Applicable</strong> only to WSL installations **</strong></dt>
<dd><p>Use a VNC window running on the Windows side instead of an X window. The VNC window will folllow the Windows desktop scaling setting allowing for much more usable Medley on high resolution displays. On WSL, X windows do not scale well. This flag is always set for WSL1 installations.</p>
</dd>
<dt><strong>-i [<em>ID_STRING</em> | - | --], --id [<em>ID_STRING</em> | - | --]</strong></dt>
<dd><p>Use ID_STRING as the id for this run of Medley, iunless ID_STRING is “-” or “--”. If ID_STRING is “-”, then use the basename of $MEDLEYDIR as the id. If ID_STRING is “--”, then use the basename of the parent directory of $MEDLEYDIR as the id. Only one instance of Medley with a given id can run at a time. The id is used to distinguish the virtual memory stores so that multiple instances of Medley can run simultaneously. Default id is “default”.</p>
</dd>
<dt><strong>-m <em>N</em>, --mem <em>N</em></strong></dt>
<dd><p>Set Medley to run in <em>N</em> MB of virtual memory. Defaults to 256MB.</p>
</dd>
<dt><strong>-p <em>FILE</em>, --vmem <em>FILE</em></strong></dt>
<dd><p>Use FILE as the Medley virtual memory (vmem) store. FILE must be writeable by the current user. Care must be taken not to use the same vmem FILE for two instances of Medley running simultaneously. The --id flag will not protect against vmem collisions when the --vmem flag is used. Default is to store the vmem in LOGINDIR/vmem/lisp_XXX.virtualmem, where XXX is the id of this Medley run (see --id flag above). See --logindir below for setting of LOGINDIR. On Windows (Docker) installations, <em>FILE</em> is specified in the Medley file system, not the host Windows file system.</p>
</dd>
<dt><strong>-r [<em>FILE</em> | -], --greet [<em>FILE</em> | -]</strong></dt>
<dd><p>Use FILE as the Medley greetfile, unless FILE is “-” in which case Medley will start up without using a greetfile. The default Medley greetfile is $MEDLEYDIR/greetfiles/MEDLEYDIR-INIT, except when the --apps flag is used in which case it is $MEDLEYDIR/greetfiles/APPS-INIT. On Windows (Docker) installations, <em>FILE</em> is specified in the Medley file system, not the host Windows file system.</p>
</dd>
<dt><strong>-x [<em>DIR</em> | -], --logindir [<em>DIR</em> | -] ** <strong>On</strong> Linux and WSL installations **</strong></dt>
<dd><p>Use DIR as LOGINDIR in Medley, unless DIR is “-”, in which case use $MEDLEYDIR/logindir. DIR (or $MEDLEYDIR/logindir) must be writeable by the current user. LOGINDIR defaults to $HOME/il. LOGINDIR is used by Medley as the working directory on start-up and where it loads any “personal” initialization file from.</p>
</dd>
<dt><strong>-x [<em>DIR</em> | -], --logindir [<em>DIR</em> | -] ** <strong>On</strong> Windows (Docker) installations **</strong></dt>
<dd><p>Map DIR in the Windows host file system to /home/medley/il in the Medley file system (in the Docker container). LOGINDIR is always /home/medley/il from Medleys standpoint. The “-” value is not valid in this case.</p>
</dd>
<dt><strong>-u, --update ** <strong>Windows</strong> (Docker) installations only **</strong></dt>
<dd><p>Before running Medley, do a pull to retrieve the latest interlisp/medley docker image from Docker Hub.</p>
</dd>
<dt><strong>-b, --background ** <strong>Windows</strong> (Docker) installations only **</strong></dt>
<dd><p>Run Medley in background rather than foreground.</p>
</dd>
<dt><strong>-p <em>PORT</em>, --port <em>PORT</em> ** <strong>Windows</strong> (Docker) installations only **</strong></dt>
<dd><p>Use <em>PORT</em> as the port that VNC viewer uses to contact the VNC server within the Docker container. Default is 5900.</p>
</dd>
<dt><strong>-w [<em>DISTRO</em> | -], --wsl [<em>DISTRO</em> | -] ** <strong>Windows</strong> (Docker) installations only **</strong></dt>
<dd><p>Run Medley in the context of the named WSL <em>DISTRO</em> instead of within Docker. If <em>DISTRO</em> is “-”, used the default WSL distro. Equivalent to typing “wsl -d <em>DISTRO</em> medley ...” into a Command or Powershell window.</p>
</dd>
</dl>
<h2>Other Options</h2>
<dl>
<dt><strong><em>SYSOUT_FILE</em></strong></dt>
<dd><p>The pathname of the file to use as a sysout for Medley to start from. If SYSOUT_FILE is not provided and none of the flags (--apps, --full, --lisp) is used, then Medley will start from the saved virtual memory file from the previous session with the same ID_STRING as this run. If no such virtual memory file exists, then Medley will start from the standard full.sysout (equivalent to specifying the --full flag). On Windows (Docker) installations, <em>SYSOUT_FILE</em> is specified in the Medley file system, not the host Windows file system.</p>
</dd>
<dt><strong><em>PASS_ON_ARGS</em></strong></dt>
<dd><p>All arguments after the “--” flag, are passed unaltered to lde via run-medley.</p>
</dd>
</dl>
<h1>FILES</h1>
<dl>
<dt><strong>$HOME/il</strong></dt>
<dd><p>Default Medley LOGINDIR</p>
</dd>
<dt><strong>$HOME/il/vmem/lisp.virtualmem</strong></dt>
<dd><p>Default virtual memory file</p>
</dd>
<dt><strong>$HOME/il/INIT(.LCOM)</strong></dt>
<dd><p>Default personal init file</p>
</dd>
<dt><strong>$MEDLEYDIR/greetfiles/MEDLEYDIR-INIT(.LCOM)</strong></dt>
<dd><p>Default Medley greetfile</p>
</dd>
</dl>
<h1>BUGS</h1>
<p>See GitHub Issues: &lt;https://github.com/Interlisp/medley/issues&gt;</p>
<h1>COPYRIGHT</h1>
<p>Copyright(c) 2023 by Interlisp.org</p>

3
docs/man-page/md2man.sh Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
pandoc medley.1.md -s -t man -o medley.1
gzip --stdout medley.1 >medley.1.gz

220
docs/man-page/medley.1 Normal file
View File

@@ -0,0 +1,220 @@
.\" Automatically generated by Pandoc 2.5
.\"
.ad l
.TH "MEDLEY" "1" "" "" "Start Medley Interlisp"
.nh \" Turn off hyphenation by default.
.SH NAME
.PP
\f[B]medley\f[R] \[em] starts up Medley Interlisp
.SH SYNOPSIS
.PP
\f[B]medley\f[R] [ flags \&... ] [ \f[I]SYSOUT_FILE\f[R] ] [ \-\-
\f[I]PASS_ON_ARGS\f[R] ]
.SH DESCRIPTION
.PP
Starts Medley Interlisp in a window.
.SH OPTIONS
.PP
\f[B]MEDLEYDIR\f[R] is an environment variable set by Medley and used by
many of the options described below.
MEDLEYDIR is the top level directory of the Medley installation that
contains the specific medley script that is invoked after all symbolic
links are resolved.
In the standard global installation this will be
/usr/local/interlisp/medley.
But Medley can be installed in multiple places on any given machine and
hence MEDLEYDIR is computed on each invocation of medley.
.SS Flags
.PP
\
.TP
.B \-h, \-\-help
Prints out a brief summary of the flags and arguments to medley.
.TP
.B \-z, \-\-man
Show the man page for medley
.TP
.B \-f, \-\-full
Start Medley from the standard \[lq]full\[rq] sysout.
full.sysout includes a complete Interlisp and CommonLisp environment
with a standard set of development tools.
It does not include any of the applications built using Medley.
(See \f[I]SYSOUT_FILE\f[R] below for more information on starting
sysouts.)
.TP
.B \-l, \-\-lisp
Start Medley from the standard \[lq]lisp\[rq] sysout.
lisp.sysout only includes the basic Interlisp and CommonLisp
environment.
(See \f[I]SYSOUT_FILE\f[R] below for more information on starting
sysouts.)
.TP
.B \-a, \-\-apps
Start Medley from the standard \[lq]apps\[rq] sysout.
apps.sysout includes everything in full.sysout plus Medley applications
including Notecards, Rooms and CLOS.
It also includes pre\-installed links to key Medley documentation.
(See \f[I]SYSOUT_FILE\f[R] below for more information on starting
sysouts.)
.TP
.B \-e, \-\-interlisp (relevent only when \-\-apps is specified)
Make the initial Exec window within Medley be an Interlisp Exec.
Default is to start in an XCL Exec.
.TP
.B \-n, \-\-noscroll
Ordinarily Medley displays scroll bars to enable the user to pan the
Medley virtual display within the Medley window.
This is true even when the entire virtual display fits within the
window.
Specifying \-\-noscroll turns off the scroll bars.
Note: If \-\-noscroll is specified and the virtual screen is larger than
the window, there will be no way to pan to the non\-visible parts of the
virtual display.
.TP
.B \-g \f[I]WxH\f[R], \-\-geometry \f[I]WxH\f[R]
Sets the size of the X Window (or VNC window) that Medley runs in to be
Width x Height.
(Full X Windows geomtery specification with +X+Y is not currently
supported).
If \-\-geometry is not specified but \-\-screensize is, then the window
size will be determined based on the \-\-screensize values and the
\-\-noscroll flag.
If neither \-\-geometry nor \-\-screensize is provided, then the window
size is set to 1440x900 if \-\-noscroll is set and 1462x922 if
\-\-noscroll is not set.
.TP
.B \-s \f[I]WxH\f[R], \-\-screensize \f[I]WxH\f[R]
Sets the size of the virtual display as seen from Medley\[cq]s point of
view.
The Medley window is an unscaled viewport onto this virtual display.
If \-\-screensize is not specified but \-\-geometry is, then the virtual
display size will be set so that the entire virtual display fits into
the given window geometry.
If neither \-\-screensize nor \-\-geometry is provided, then the screen
size is set to 1440x900.
.TP
.B \-t \f[I]STRING\f[R], \-\-title \f[I]STRING\f[R]
Use STRING as title of Medley window.
Ignored when when the \-\-vnc flag is set or when running on Windows
(Docker) installations.
.TP
.B \-d \f[I]:N\f[R], \-\-display \f[I]:N\f[R]\ \ \ \ ** \f[B]Not applicable to Windows (Docker) installations\f[R] **
Use X display :N.
Defaults to the value of $DISPLAY.
This flag is ignored when the \-\-vnc flag is set as well as on Windows
(Docker) installations.
.TP
.B \-v, \-\-vnc\ \ \ \ ** \f[B]Applicable only to WSL installations\f[R] **
Use a VNC window running on the Windows side instead of an X window.
The VNC window will folllow the Windows desktop scaling setting allowing
for much more usable Medley on high resolution displays.
On WSL, X windows do not scale well.
This flag is always set for WSL1 installations.
.TP
.B \-i [\f[I]ID_STRING\f[R] | \- | \-\-], \-\-id [\f[I]ID_STRING\f[R] | \- | \-\-]
Use ID_STRING as the id for this run of Medley, iunless ID_STRING is
\[lq]\-\[rq] or \[lq]\-\-\[rq].
If ID_STRING is \[lq]\-\[rq], then use the basename of $MEDLEYDIR as the
id.
If ID_STRING is \[lq]\-\-\[rq], then use the basename of the parent
directory of $MEDLEYDIR as the id.
Only one instance of Medley with a given id can run at a time.
The id is used to distinguish the virtual memory stores so that multiple
instances of Medley can run simultaneously.
Default id is \[lq]default\[rq].
.TP
.B \-m \f[I]N\f[R], \-\-mem \f[I]N\f[R]
Set Medley to run in \f[I]N\f[R] MB of virtual memory.
Defaults to 256MB.
.TP
.B \-p \f[I]FILE\f[R], \-\-vmem \f[I]FILE\f[R]
Use FILE as the Medley virtual memory (vmem) store.
FILE must be writeable by the current user.
Care must be taken not to use the same vmem FILE for two instances of
Medley running simultaneously.
The \-\-id flag will not protect against vmem collisions when the
\-\-vmem flag is used.
Default is to store the vmem in LOGINDIR/vmem/lisp_XXX.virtualmem, where
XXX is the id of this Medley run (see \-\-id flag above).
See \-\-logindir below for setting of LOGINDIR.
On Windows (Docker) installations, \f[I]FILE\f[R] is specified in the
Medley file system, not the host Windows file system.
.TP
.B \-r [\f[I]FILE\f[R] | \-], \-\-greet [\f[I]FILE\f[R] | \-]
Use FILE as the Medley greetfile, unless FILE is \[lq]\-\[rq] in which
case Medley will start up without using a greetfile.
The default Medley greetfile is $MEDLEYDIR/greetfiles/MEDLEYDIR\-INIT,
except when the \-\-apps flag is used in which case it is
$MEDLEYDIR/greetfiles/APPS\-INIT.
On Windows (Docker) installations, \f[I]FILE\f[R] is specified in the
Medley file system, not the host Windows file system.
.TP
.B \-x [\f[I]DIR\f[R] | \-], \-\-logindir [\f[I]DIR\f[R] | \-]\ \ \ \ ** \f[B]On Linux and WSL installations\f[R] **
Use DIR as LOGINDIR in Medley, unless DIR is \[lq]\-\[rq], in which case
use $MEDLEYDIR/logindir.
DIR (or $MEDLEYDIR/logindir) must be writeable by the current user.
LOGINDIR defaults to $HOME/il.
LOGINDIR is used by Medley as the working directory on start\-up and
where it loads any \[lq]personal\[rq] initialization file from.
.TP
.B \-x [\f[I]DIR\f[R] | \-], \-\-logindir [\f[I]DIR\f[R] | \-]\ \ \ \ ** \f[B]On Windows (Docker) installations\f[R] **
Map DIR in the Windows host file system to /home/medley/il in the Medley
file system (in the Docker container).
LOGINDIR is always /home/medley/il from Medley\[cq]s standpoint.
The \[lq]\-\[rq] value is not valid in this case.
.TP
.B \-u, \-\-update\ \ \ \ ** \f[B]Windows (Docker) installations only\f[R] **
Before running Medley, do a pull to retrieve the latest interlisp/medley
docker image from Docker Hub.
.TP
.B \-b, \-\-background\ \ \ \ ** \f[B]Windows (Docker) installations only\f[R] **
Run Medley in background rather than foreground.
.TP
.B \-p \f[I]PORT\f[R], \-\-port \f[I]PORT\f[R]\ \ \ \ ** \f[B]Windows (Docker) installations only\f[R] **
Use \f[I]PORT\f[R] as the port that VNC viewer uses to contact the VNC
server within the Docker container.
Default is 5900.
.TP
.B \-w [\f[I]DISTRO\f[R] | \-], \-\-wsl [\f[I]DISTRO\f[R] | \-]\ \ \ \ ** \f[B]Windows (Docker) installations only\f[R] **
Run Medley in the context of the named WSL \f[I]DISTRO\f[R] instead of
within Docker.
If \f[I]DISTRO\f[R] is \[lq]\-\[rq], used the default WSL distro.
Equivalent to typing \[lq]wsl \-d \f[I]DISTRO\f[R] medley \&...\[rq]
into a Command or Powershell window.
.SS Other Options
.PP
\
.TP
.B \f[I]SYSOUT_FILE\f[R]
The pathname of the file to use as a sysout for Medley to start from.
If SYSOUT_FILE is not provided and none of the flags (\-\-apps,
\-\-full, \-\-lisp) is used, then Medley will start from the saved
virtual memory file from the previous session with the same ID_STRING as
this run.
If no such virtual memory file exists, then Medley will start from the
standard full.sysout (equivalent to specifying the \-\-full flag).
On Windows (Docker) installations, \f[I]SYSOUT_FILE\f[R] is specified in
the Medley file system, not the host Windows file system.
.TP
.B \f[I]PASS_ON_ARGS\f[R]
All arguments after the \[lq]\-\-\[rq] flag, are passed unaltered to lde
via run\-medley.
.SH FILES
.TP
.B $HOME/il
Default Medley LOGINDIR
.TP
.B $HOME/il/vmem/lisp.virtualmem
Default virtual memory file
.TP
.B $HOME/il/INIT(.LCOM)
Default personal init file
.TP
.B $MEDLEYDIR/greetfiles/MEDLEYDIR\-INIT(.LCOM)
Default Medley greetfile
.SH BUGS
.PP
See GitHub Issues: <https://github.com/Interlisp/medley/issues>
.SH COPYRIGHT
.PP
Copyright(c) 2023 by Interlisp.org

BIN
docs/man-page/medley.1.gz Normal file

Binary file not shown.

184
docs/man-page/medley.1.md Normal file
View File

@@ -0,0 +1,184 @@
% MEDLEY(1) | Start Medley Interlisp
---
adjusting: l
hyphenate: false
---
NAME
====
**medley** — starts up Medley Interlisp
SYNOPSIS
========
| **medley** \[ flags ... ] \[ *SYSOUT_FILE* ] \[ \-\- *PASS_ON_ARGS* ]
DESCRIPTION
===========
Starts Medley Interlisp in a window.
OPTIONS
=======
**MEDLEYDIR** is an environment variable set by Medley and used by many of the options described below.
MEDLEYDIR is the top level directory of the Medley installation that contains the specific medley script that
is invoked after all symbolic links are resolved. In the standard global installation this will
be /usr/local/interlisp/medley. But Medley can be installed in multiple places on any given machine and
hence MEDLEYDIR is computed on each invocation of medley.
Flags
-----
&nbsp;
-h, \-\-help
: Prints out a brief summary of the flags and arguments to medley.
-z, \-\-man
: Show the man page for medley
-f, \-\-full
: Start Medley from the standard "full" sysout. full.sysout includes a complete Interlisp and CommonLisp environment
with a standard set of development tools. It does not include any of the applications built using Medley.
(See *SYSOUT_FILE* below for more information on starting sysouts.)
-l, \-\-lisp
: Start Medley from the standard "lisp" sysout. lisp.sysout only includes the basic Interlisp and
CommonLisp environment.
(See *SYSOUT_FILE* below for more information on starting sysouts.)
-a, \-\-apps
: Start Medley from the standard "apps" sysout. apps.sysout includes everything in full.sysout plus Medley
applications including Notecards, Rooms and CLOS. It also includes pre-installed links to key Medley
documentation.
(See *SYSOUT_FILE* below for more information on starting sysouts.)
-e, \-\-interlisp (relevent only when \-\-apps is specified)
: Make the initial Exec window within Medley be an Interlisp Exec. Default is to start in an XCL Exec.
-n, \-\-noscroll
: Ordinarily Medley displays scroll bars to enable the user to pan the Medley virtual display within the
Medley window. This is true even when the entire virtual display fits within the window. Specifying
\-\-noscroll turns off the scroll bars. Note: If \-\-noscroll is specified and the virtual screen is larger
than the window, there will be no way to pan to the non-visible parts of the virtual display.
-g *WxH*, \-\-geometry *WxH*
: Sets the size of the X Window (or VNC window) that Medley runs in to be Width x Height. (Full X Windows
geomtery specification with +X+Y is not currently supported). If \-\-geometry is not specified but \-\-screensize is,
then the window size will be determined based on the \-\-screensize values and the \-\-noscroll flag. If neither
\-\-geometry nor \-\-screensize is provided, then the window size is set to 1440x900 if \-\-noscroll is set and 1462x922
if \-\-noscroll is not set.
-s *WxH*, \-\-screensize *WxH*
: Sets the size of the virtual display as seen from Medley's point of view.
The Medley window is an unscaled viewport onto this virtual display. If \-\-screensize is not specified but
\-\-geometry is, then the virtual display size will be set so that the entire virtual display fits into the given
window geometry. If neither \-\-screensize nor \-\-geometry is provided, then the screen size is set to 1440x900.
-t *STRING*, \-\-title *STRING*
: Use STRING as title of Medley window. Ignored when when the \-\-vnc flag is set or when running on Windows (Docker)
installations.
-d *:N*, \-\-display *:N*&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Not applicable to Windows (Docker) installations** \*\*
~ Use X display :N. Defaults to the value of $DISPLAY. This flag is ignored when the \-\-vnc flag is set as
well as on Windows (Docker) installations.
-v, \-\-vnc&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Applicable only to WSL installations** \*\*
: Use a VNC window running on the Windows side instead of an X window.
The VNC window will folllow the Windows desktop scaling setting allowing
for much more usable Medley on high resolution displays. On WSL, X windows
do not scale well. This flag is always set for WSL1 installations.
-i [*ID_STRING* | - | \-\-], \-\-id [*ID_STRING* | - | \-\-]
: Use ID_STRING as the id for this run of Medley, iunless ID_STRING is "-" or "\-\-".
If ID_STRING is "-", then use the basename of $MEDLEYDIR as the id.
If ID_STRING is "\-\-", then use the basename of the parent directory of $MEDLEYDIR as the id.
Only one instance of Medley with a given id can run at a time.
The id is used to distinguish the virtual memory stores so that multiple
instances of Medley can run simultaneously. Default id is "default".
-m *N*, \-\-mem *N*
: Set Medley to run in *N* MB of virtual memory. Defaults to 256MB.
-p *FILE*, \-\-vmem *FILE*
: Use FILE as the Medley virtual memory (vmem) store. FILE must be writeable by the current user.
Care must be taken not to use the same vmem FILE for two instances of Medley running simultaneously.
The \-\-id flag will not protect against vmem collisions when the \-\-vmem flag is used.
Default is to store the vmem in LOGINDIR/vmem/lisp_XXX.virtualmem, where XXX is the id of this
Medley run (see \-\-id flag above). See \-\-logindir below for setting of LOGINDIR. On Windows (Docker) installations, *FILE* is specified in the Medley file system, not the host Windows file system.
-r \[*FILE* | -], \-\-greet \[*FILE* | -]
: Use FILE as the Medley greetfile, unless FILE is "-" in which case
Medley will start up without using a greetfile. The default Medley greetfile
is $MEDLEYDIR/greetfiles/MEDLEYDIR-INIT, except when the \-\-apps flag is used
in which case it is $MEDLEYDIR/greetfiles/APPS-INIT. On Windows (Docker) installations, *FILE* is
specified in the Medley file system, not the host Windows file system.
-x \[*DIR* | -], \-\-logindir \[*DIR* | -]&nbsp;&nbsp;&nbsp;&nbsp;\*\* **On Linux and WSL installations** \*\*
: Use DIR as LOGINDIR in Medley, unless DIR is "-", in which case use
\$MEDLEYDIR/logindir. DIR (or \$MEDLEYDIR/logindir) must be writeable by the current user.
LOGINDIR defaults to \$HOME/il. LOGINDIR is used by Medley as the working directory on start-up
and where it loads any "personal" initialization file from.
-x \[*DIR* | -], \-\-logindir \[*DIR* | -]&nbsp;&nbsp;&nbsp;&nbsp;\*\* **On Windows (Docker) installations** \*\*
: Map DIR in the Windows host file system to /home/medley/il in the Medley
file system (in the Docker container). LOGINDIR is always /home/medley/il from Medley's standpoint. The "-" value is not valid in this case.
-u, \-\-update&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Windows (Docker) installations only** \*\*
: Before running Medley, do a pull to retrieve the latest interlisp/medley docker image from Docker Hub.
-b, \-\-background&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Windows (Docker) installations only** \*\*
: Run Medley in background rather than foreground.
-p *PORT*, \-\-port *PORT*&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Windows (Docker) installations only** \*\*
: Use *PORT* as the port that VNC viewer uses to contact the VNC server within the Docker container. Default is 5900.
-w \[*DISTRO* | -], \-\-wsl \[*DISTRO* | -]&nbsp;&nbsp;&nbsp;&nbsp;\*\* **Windows (Docker) installations only** \*\*
: Run Medley in the context of the named WSL *DISTRO* instead of within Docker. If *DISTRO* is "-", used the default WSL distro. Equivalent to typing "wsl -d *DISTRO* medley ..." into a Command or Powershell window.
Other Options
-------------
&nbsp;
*SYSOUT_FILE*
: The pathname of the file to use as a sysout for Medley to start from. If SYSOUT_FILE is not
provided and none of the flags (\-\-apps, \-\-full, \-\-lisp) is used, then Medley will start from
the saved virtual memory file from the previous session with the same ID_STRING as this run.
If no such virtual memory file exists, then Medley will start from the standard full.sysout
(equivalent to specifying the \-\-full flag). On Windows (Docker) installations, *SYSOUT_FILE* is
specified in the Medley file system, not the host Windows file system.
*PASS_ON_ARGS*
: All arguments after the "\-\-" flag, are passed unaltered to lde via run-medley.
FILES
=====
\$HOME/il
: Default Medley LOGINDIR
\$HOME/il/vmem/lisp.virtualmem
: Default virtual memory file
\$HOME/il/INIT(.LCOM)
: Default personal init file
\$MEDLEYDIR/greetfiles/MEDLEYDIR-INIT(.LCOM)
: Default Medley greetfile
BUGS
====
See GitHub Issues: <https://github.com/Interlisp/medley/issues>
COPYRIGHT
=========
Copyright(c) 2023 by Interlisp.org

4
docs/man-page/publish.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
./md2man.sh
./man2html.sh

2
docs/man-page/showmd.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/bash
pandoc medley.1.md -s -t man | /usr/bin/man -l -

View File

@@ -1,21 +1,20 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "12-Feb-92 12:28:48" {DSK}<users>sybalsky>PUBS>IMINDEX.;2 37264
changes to%: (FNS IM.CHAP.DISPLAYFN)
(FILECREATED " 6-Mar-2024 21:19:25" {WMEDLEY}<doctools>IMINDEX.;2 36416
previous date%: " 8-Dec-91 15:46:22" {DSK}<users>sybalsky>PUBS>IMINDEX.;1)
:EDIT-BY rmk
:CHANGES-TO (VARS IMINDEXCOMS)
:PREVIOUS-DATE "12-Feb-92 12:28:48" {WMEDLEY}<doctools>IMINDEX.;1)
(* ; "
Copyright (c) 1986, 1987, 1988, 1991, 1992 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT IMINDEXCOMS)
(RPAQQ IMINDEXCOMS
(
(* ;;
 "this file contains the functions used for creating and manipulating index image objects")
 "this file contains the functions used for creating and manipulating index image objects")
(FNS IM.INDEX.CLOSEF IM.INDEX.COPYFN IM.INDEX.CREATEOBJ IM.INDEX.DISPLAY.STRING
IM.INDEX.DISPLAYFN IM.INDEX.EDIT IM.INDEX.LIST.FROM.STRING IM.INDEX.SIZEFN
@@ -32,12 +31,7 @@ Copyright (c) 1986, 1987, 1988, 1991, 1992 by Xerox Corporation. All rights res
(COMS (* ; "An image object to set the chapter number, on the TEXTOBJ's proplist, on the INDEXING-CHAPTER property.")
(FNS IM.CHAP.COPYFN IM.CHAP.CREATEOBJ IM.CHAP.DISPLAYFN IM.CHAP.SIZEFN IM.CHAP.PUTFN
IM.CHAP.GETFN IM.CHAP.BUTTONEVENTFN))
(P (ADVISE 'TEDIT.FORMAT.HARDCOPY 'AROUND '(RESETLST
(RESETSAVE NIL (LIST (FUNCTION IM.INDEX.CLOSEF
)
STREAM))
*))
(IM.INDEX.INIT))))
(P (IM.INDEX.INIT))))
@@ -494,9 +488,9 @@ Copyright (c) 1986, 1987, 1988, 1991, 1992 by Xerox Corporation. All rights res
(DECLARE%: EVAL@COMPILE
(RECORD IM.INDEX.DATA (NAME TYPE SAV INFO SUBSEC PAGE# . PROPLIST)
SUBSEC _ IM.INDEX.DEFAULT.SUBSEC (TYPE? (AND (LISTP DATUM)
(IGEQ (LENGTH DATUM)
6))))
SUBSEC _ IM.INDEX.DEFAULT.SUBSEC (TYPE? (AND (LISTP DATUM)
(IGEQ (LENGTH DATUM)
6))))
)
(RPAQQ IM.INDEX.OBJ.FREEMENU.SPECS
@@ -638,21 +632,15 @@ Copyright (c) 1986, 1987, 1988, 1991, 1992 by Xerox Corporation. All rights res
T])
)
(ADVISE 'TEDIT.FORMAT.HARDCOPY 'AROUND '(RESETLST
(RESETSAVE NIL (LIST (FUNCTION IM.INDEX.CLOSEF)
STREAM))
*))
(IM.INDEX.INIT)
(PUTPROPS IMINDEX COPYRIGHT ("Xerox Corporation" 1986 1987 1988 1991 1992))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2160 15212 (IM.INDEX.CLOSEF 2170 . 2785) (IM.INDEX.COPYFN 2787 . 2972) (
IM.INDEX.CREATEOBJ 2974 . 4320) (IM.INDEX.DISPLAY.STRING 4322 . 4743) (IM.INDEX.DISPLAYFN 4745 . 8588)
(IM.INDEX.EDIT 8590 . 12058) (IM.INDEX.LIST.FROM.STRING 12060 . 13094) (IM.INDEX.SIZEFN 13096 . 13856
) (IM.INDEX.STRING.FROM.LIST 13858 . 14103) (IM.INDEX.PUTFN 14105 . 14294) (IM.INDEX.GETFN 14296 .
14451) (IM.INDEX.BUTTONEVENTFN 14453 . 15210)) (15213 17283 (IM.INDEX.INIT 15223 . 17281)) (17284
29200 (IM.INDEX.MENU 17294 . 18982) (IM.INDEX.MENU.WHENSELECTEDFN 18984 . 25739) (
IM.INDEX.OBJ.FREEMENU.SELECTEDFN 25741 . 29198)) (31736 36879 (IM.CHAP.COPYFN 31746 . 31926) (
IM.CHAP.CREATEOBJ 31928 . 33354) (IM.CHAP.DISPLAYFN 33356 . 35316) (IM.CHAP.SIZEFN 35318 . 36320) (
IM.CHAP.PUTFN 36322 . 36506) (IM.CHAP.GETFN 36508 . 36669) (IM.CHAP.BUTTONEVENTFN 36671 . 36877)))))
(FILEMAP (NIL (1673 14725 (IM.INDEX.CLOSEF 1683 . 2298) (IM.INDEX.COPYFN 2300 . 2485) (
IM.INDEX.CREATEOBJ 2487 . 3833) (IM.INDEX.DISPLAY.STRING 3835 . 4256) (IM.INDEX.DISPLAYFN 4258 . 8101)
(IM.INDEX.EDIT 8103 . 11571) (IM.INDEX.LIST.FROM.STRING 11573 . 12607) (IM.INDEX.SIZEFN 12609 . 13369
) (IM.INDEX.STRING.FROM.LIST 13371 . 13616) (IM.INDEX.PUTFN 13618 . 13807) (IM.INDEX.GETFN 13809 .
13964) (IM.INDEX.BUTTONEVENTFN 13966 . 14723)) (14726 16796 (IM.INDEX.INIT 14736 . 16794)) (16797
28713 (IM.INDEX.MENU 16807 . 18495) (IM.INDEX.MENU.WHENSELECTEDFN 18497 . 25252) (
IM.INDEX.OBJ.FREEMENU.SELECTEDFN 25254 . 28711)) (31229 36372 (IM.CHAP.COPYFN 31239 . 31419) (
IM.CHAP.CREATEOBJ 31421 . 32847) (IM.CHAP.DISPLAYFN 32849 . 34809) (IM.CHAP.SIZEFN 34811 . 35813) (
IM.CHAP.PUTFN 35815 . 35999) (IM.CHAP.GETFN 36001 . 36162) (IM.CHAP.BUTTONEVENTFN 36164 . 36370)))))
STOP

Binary file not shown.

View File

@@ -1,17 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "20-Jul-2022 15:10:53" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>doctools>IMTEDIT.;2 117347
(FILECREATED " 6-Mar-2024 21:18:02" {WMEDLEY}<doctools>IMTEDIT.;4 116622
:CHANGES-TO (FNS MAKE.IM.DOCUMENT)
:EDIT-BY rmk
:PREVIOUS-DATE " 8-Dec-91 15:41:54"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>doctools>IMTEDIT.;1)
:CHANGES-TO (FNS TRANSLATE.DUMPOUT MAKE.IM.DOCUMENT)
:PREVIOUS-DATE "20-Jul-2022 15:10:53" {WMEDLEY}<doctools>IMTEDIT.;2)
(* ; "
Copyright (c) 1983-1986, 1991 by Xerox Corporation.
")
(PRETTYCOMPRINT IMTEDITCOMS)
@@ -493,27 +489,26 @@ Copyright (c) 1983-1986, 1991 by Xerox Corporation.
(DUMPOUT FONT LISP DUMP.CHARS SAV])
(MAKE.IM.DOCUMENT
[LAMBDA (FORM OUTFILE.FLG PAGE.LAYOUT OUTPUT.MESSAGE DEFAULT.PARALOOKS PTRFILENAME)
(* ; "Edited 20-Jul-2022 15:10 by rmk")
[LAMBDA (FORM OUTFILE.FLG PAGE.LAYOUT OUTPUT.MESSAGE DEFAULT.PARALOOKS PTRFILENAME)
(* ;; "Edited 6-Mar-2024 21:17 by rmk: Fixed backquote commas. Also put IM.INDEX.CLOSEF calls in TEXTPROPs so advice in IMINDEX can be eliminated.")
(* ;; "Edited 20-Jul-2022 15:10 by rmk")
(* mjs " 4-Aug-86 10:52")
(* * this function creates an IM output file, in XPS-compatible format.
 If sets up all of the special variables needed by DUMP, evaluates FORM, and sets
 all of the para and font looks)
(* ;;; "this function creates an IM output file, in XPS-compatible format. If sets up all of the special variables needed by DUMP, evaluates FORM, and sets all of the para and font looks")
(* * If OUTFILE.FLG is NIL, the output file is just sent to the default printer.
 If OUTFILE.FLG is T, the outfile textstream is simply returned.
 If OUTFILE.FLG = anything else, it is taken as a file name to put the press file
 which is created <but not printed>.)
(* ;;; "If OUTFILE.FLG is NIL, the output file is just sent to the default printer. If OUTFILE.FLG is T, the outfile textstream is simply returned. If OUTFILE.FLG = anything else, it is taken as a file name to put the press file which is created <but not printed>.")
(* * if PAGE.LAYOUT is non-NIL, it should be the compound page layout to be used.)
(* ;;; "if PAGE.LAYOUT is non-NIL, it should be the compound page layout to be used.")
(* * if OUTPUT.MESSAGE is non-NIL, it is printed on the hardcopy output)
(* ;;; "if OUTPUT.MESSAGE is non-NIL, it is printed on the hardcopy output")
(* * PTRFILENAME is the name to be used if an index pointer file is generated
 during hardcopy <by printing index objects>)
(* ;;; "PTRFILENAME is the name to be used if an index pointer file is generated during hardcopy <by printing index objects>")
(PROG ((IM.OUTFILE (OPENTEXTSTREAM NIL NIL NIL NIL (LIST 'IM.INDEX.PTRFILENAME PTRFILENAME)))
(PROG ([IM.OUTFILE (OPENTEXTSTREAM NIL NIL NIL NIL `(IM.INDEX.PTRFILENAME ,PTRFILENAME
AFTERHARDCOPYFN (FUNCTION
IM.INDEX.INIT]
(FONT.STACK (CONS))
(IM.TEDIT.LAST.PARA.BEGIN 1)
(IM.TEDIT.LAST.FONT.BEGIN 1)
@@ -532,7 +527,7 @@ Copyright (c) 1983-1986, 1991 by Xerox Corporation.
(DUMP.HEADERS.FOOTERS " " " ")
(DUMPOUT CR CR START.PARA PARALOOKS
`(TYPE PAGEHEADING SUBTYPE DRAFTMESSAGE QUAD LEFT 1STLEFTMARGIN 0 LEFTMARGIN 0
RIGHTMARGIN %, IM.TEXT.RIGHTMARGIN)
RIGHTMARGIN ,IM.TEXT.RIGHTMARGIN)
DUMP.CHARS
(COND
(IM.DRAFT.FLG (CONCAT "***DRAFT*** " (DATE)
@@ -543,73 +538,65 @@ Copyright (c) 1983-1986, 1991 by Xerox Corporation.
(COND
(IM.EVEN.FLG
(* if you must quarantee that you have an even number of pages for two-sided
 copying, dump out a blank page no matter what --
 it can always be discarded)
(* ;; "if you must quarantee that you have an even number of pages for two-sided copying, dump out a blank page no matter what -- it can always be discarded")
(DUMPOUT CR CR START.PARA PARALOOKS
`(NEWPAGEBEFORE T QUAD LEFT 1STLEFTMARGIN 0 LEFTMARGIN 0 RIGHTMARGIN %,
IM.TEXT.RIGHTMARGIN SPECIALX %, IM.BLANKPAGE.SPECIALX SPECIALY %,
IM.BLANKPAGE.SPECIALY)
`(NEWPAGEBEFORE T QUAD LEFT 1STLEFTMARGIN 0 LEFTMARGIN 0 RIGHTMARGIN
,IM.TEXT.RIGHTMARGIN SPECIALX ,IM.BLANKPAGE.SPECIALX SPECIALY
,IM.BLANKPAGE.SPECIALY)
DUMP.CHARS "[This page intentionally left blank]" CR CR)))
(* after converting document, make sure that last para is formatted correctly by
 changing font, ending current para, and starting new para)
(* ;; "after converting document, make sure that last para is formatted correctly by changing font, ending current para, and starting new para")
(DUMPOUT CR CR FONT NIL)
(DUMP '(START.PARA))
(* * set page format)
(* ;;; "set page format")
[TEDIT.PAGEFORMAT IM.OUTFILE
(COND
(PAGE.LAYOUT)
(T (TEDIT.COMPOUND.PAGEFORMAT [TEDIT.SINGLE.PAGEFORMAT NIL NIL NIL NIL NIL
IM.PAGE.LEFTMARGIN IM.PAGE.RIGHTMARGIN
IM.PAGE.FIRST.TOPMARGIN IM.PAGE.BOTTOMMARGIN
1 NIL NIL
`((RECTOFOOT %, IM.PAGE.LEFTMARGIN %,
IM.FOOTER.Y)
(RECTOFOOTRULE %, IM.PAGE.LEFTMARGIN %,
IM.FOOTER.RULE.Y)
(DRAFTMESSAGE %, IM.DRAFT.MESSAGE.X %,
IM.DRAFT.MESSAGE.BOTTOM.Y]
(T (TEDIT.COMPOUND.PAGEFORMAT [TEDIT.SINGLE.PAGEFORMAT
NIL NIL NIL NIL NIL IM.PAGE.LEFTMARGIN
IM.PAGE.RIGHTMARGIN IM.PAGE.FIRST.TOPMARGIN
IM.PAGE.BOTTOMMARGIN 1 NIL NIL
`((RECTOFOOT ,IM.PAGE.LEFTMARGIN ,IM.FOOTER.Y)
(RECTOFOOTRULE ,IM.PAGE.LEFTMARGIN
,IM.FOOTER.RULE.Y)
(DRAFTMESSAGE ,IM.DRAFT.MESSAGE.X
,IM.DRAFT.MESSAGE.BOTTOM.Y]
[TEDIT.SINGLE.PAGEFORMAT NIL NIL NIL NIL NIL IM.PAGE.LEFTMARGIN
IM.PAGE.RIGHTMARGIN IM.PAGE.TOPMARGIN IM.PAGE.BOTTOMMARGIN 1 NIL
NIL `((DRAFTMESSAGE %, IM.DRAFT.MESSAGE.X %,
IM.DRAFT.MESSAGE.TOP.Y)
(VERSOHEAD %, IM.PAGE.LEFTMARGIN %, IM.HEADER.Y)
(VERSOHEADRULE %, IM.PAGE.LEFTMARGIN %, IM.HEADER.RULE.Y)
(VERSOFOOT %, IM.PAGE.LEFTMARGIN %, IM.FOOTER.Y)
(VERSOFOOTRULE %, IM.PAGE.LEFTMARGIN %, IM.FOOTER.RULE.Y)
(DRAFTMESSAGE %, IM.DRAFT.MESSAGE.X %,
IM.DRAFT.MESSAGE.BOTTOM.Y]
NIL `((DRAFTMESSAGE ,IM.DRAFT.MESSAGE.X ,IM.DRAFT.MESSAGE.TOP.Y)
(VERSOHEAD ,IM.PAGE.LEFTMARGIN ,IM.HEADER.Y)
(VERSOHEADRULE ,IM.PAGE.LEFTMARGIN ,IM.HEADER.RULE.Y)
(VERSOFOOT ,IM.PAGE.LEFTMARGIN ,IM.FOOTER.Y)
(VERSOFOOTRULE ,IM.PAGE.LEFTMARGIN ,IM.FOOTER.RULE.Y)
(DRAFTMESSAGE ,IM.DRAFT.MESSAGE.X
,IM.DRAFT.MESSAGE.BOTTOM.Y]
(TEDIT.SINGLE.PAGEFORMAT NIL NIL NIL NIL NIL IM.PAGE.LEFTMARGIN
IM.PAGE.RIGHTMARGIN IM.PAGE.TOPMARGIN IM.PAGE.BOTTOMMARGIN 1 NIL
NIL `((DRAFTMESSAGE %, IM.DRAFT.MESSAGE.X %,
IM.DRAFT.MESSAGE.TOP.Y)
(RECTOHEAD %, IM.PAGE.LEFTMARGIN %, IM.HEADER.Y)
(RECTOHEADRULE %, IM.PAGE.LEFTMARGIN %, IM.HEADER.RULE.Y)
(RECTOFOOT %, IM.PAGE.LEFTMARGIN %, IM.FOOTER.Y)
(RECTOFOOTRULE %, IM.PAGE.LEFTMARGIN %, IM.FOOTER.RULE.Y)
(DRAFTMESSAGE %, IM.DRAFT.MESSAGE.X %,
IM.DRAFT.MESSAGE.BOTTOM.Y]
NIL `((DRAFTMESSAGE ,IM.DRAFT.MESSAGE.X ,IM.DRAFT.MESSAGE.TOP.Y)
(RECTOHEAD ,IM.PAGE.LEFTMARGIN ,IM.HEADER.Y)
(RECTOHEADRULE ,IM.PAGE.LEFTMARGIN ,IM.HEADER.RULE.Y)
(RECTOFOOT ,IM.PAGE.LEFTMARGIN ,IM.FOOTER.Y)
(RECTOFOOTRULE ,IM.PAGE.LEFTMARGIN ,IM.FOOTER.RULE.Y)
(DRAFTMESSAGE ,IM.DRAFT.MESSAGE.X
,IM.DRAFT.MESSAGE.BOTTOM.Y]
(* * dump default char and para looks for whole document --
 and looks that should be different should be specified in the fns)
(* ;;; "dump default char and para looks for whole document -- and looks that should be different should be specified in the fns")
(TEDIT.LOOKS IM.OUTFILE IM.TEXT.FONT 1 (GETFILEINFO IM.OUTFILE 'LENGTH))
(TEDIT.PARALOOKS IM.OUTFILE
[COND
(DEFAULT.PARALOOKS)
(T `(QUAD JUSTIFIED 1STLEFTMARGIN %, IM.TEXT.LEFTMARGIN LEFTMARGIN %,
IM.TEXT.LEFTMARGIN RIGHTMARGIN %, IM.TEXT.RIGHTMARGIN LINELEADING 0
PARALEADING 5 POSTPARALEADING 0]
(TEDIT.PARALOOKS IM.OUTFILE [COND
(DEFAULT.PARALOOKS)
(T `(QUAD JUSTIFIED 1STLEFTMARGIN ,IM.TEXT.LEFTMARGIN
LEFTMARGIN ,IM.TEXT.LEFTMARGIN RIGHTMARGIN
,IM.TEXT.RIGHTMARGIN LINELEADING 0 PARALEADING 5
POSTPARALEADING 0]
1
(GETFILEINFO IM.OUTFILE 'LENGTH))
(* must reverse list because the order of some char and paragraph looks is
 significant << earlier looks are overridden by later ones >>)
(* ;; "must reverse list because the order of some char and paragraph looks is significant << earlier looks are overridden by later ones >>")
(SETQ IM.CHARLOOKS (DREVERSE IM.CHARLOOKS))
(SETQ IM.PARALOOKS (DREVERSE IM.PARALOOKS))
@@ -2309,83 +2296,75 @@ page edge.)
(DEFINEQ
(TRANSLATE.DUMPOUT
[LAMBDA (DUMPOUT.ARGS) (* mjs "18-Sep-85 16:17")
[LAMBDA (DUMPOUT.ARGS) (* mjs "18-Sep-85 16:17")
(* * this function translates the DUMPOUT macro form into a PROGN form that
 calls a series of functions, such as DUMP.)
(* * this function translates the DUMPOUT macro form into a PROGN form that calls
 a series of functions, such as DUMP.)
(* * the indentation code has been commented out ---
 will try indenting everything to same, unless specified otherwise with
 PARALOOKS)
 will try indenting everything to same, unless specified otherwise with PARALOOKS)
(PROG ((DUMPOUT.FORMS NIL)
(DUMPOUT.UNDO NIL)
COMM COMM.ARG)
[while DUMPOUT.ARGS do (SELECTQ (SETQ COMM (pop DUMPOUT.ARGS))
(NIL)
((CR TAB START.PARA DUMP.FOOTNOTES START.SUPER START.SUB
END.SUPER END.SUB)
(* just pass these atoms as commands
 to DUMP)
(push DUMPOUT.FORMS (LIST 'DUMP.FORMAT
(KWOTE COMM))))
((FLUSH.ARG TRIVIAL.ARG DUMP.ARG)
(push DUMPOUT.FORMS (LIST COMM)))
(INDENT
(NIL)
((CR TAB START.PARA DUMP.FOOTNOTES START.SUPER START.SUB
END.SUPER END.SUB) (* just pass these atoms as commands
 to DUMP)
(push DUMPOUT.FORMS (LIST 'DUMP.FORMAT (KWOTE COMM))))
((FLUSH.ARG TRIVIAL.ARG DUMP.ARG)
(push DUMPOUT.FORMS (LIST COMM)))
(INDENT
(* * SELECTQ (SETQ COMM.ARG (pop DUMPOUT.ARGS))
 (INIT (push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE INDENT) INITIAL.INDENT))) (push DUMPOUT.FORMS
 (QUOTE (PUT.MY.PROP (QUOTE WIDTH) INITIAL.WIDTH)))
 (push DUMPOUT.FORMS (QUOTE (DUMP.FORMAT
 (QUOTE INDENT) INITIAL.INDENT)))) (NONE
 (push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE INDENT) (QUOTE NONE)))) (push DUMPOUT.FORMS
 (QUOTE (PUT.MY.PROP (QUOTE WIDTH) (ANC.WIDTH))))
 (push DUMPOUT.FORMS (QUOTE (DUMP.FORMAT
 (QUOTE INDENT) (QUOTE NONE))))) (push DUMPOUT.FORMS
 (LIST (QUOTE (LAMBDA (I) (PUT.MY.PROP (QUOTE INDENT)
 (IPLUS (ANC.INDENT) I)) (PUT.MY.PROP (QUOTE WIDTH)
 (IDIFFERENCE (ANC.WIDTH) I)) (DUMP.FORMAT
 (QUOTE INDENT) (IPLUS (ANC.INDENT) I)))) COMM.ARG)))
 (INIT (push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE INDENT) INITIAL.INDENT))) (push DUMPOUT.FORMS
 (QUOTE (PUT.MY.PROP (QUOTE WIDTH) INITIAL.WIDTH)))
 (push DUMPOUT.FORMS (QUOTE (DUMP.FORMAT (QUOTE INDENT) INITIAL.INDENT))))
 (NONE (push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE INDENT) (QUOTE NONE)))) (push DUMPOUT.FORMS
 (QUOTE (PUT.MY.PROP (QUOTE WIDTH) (ANC.WIDTH))))
 (push DUMPOUT.FORMS (QUOTE (DUMP.FORMAT (QUOTE INDENT)
 (QUOTE NONE))))) (push DUMPOUT.FORMS (LIST
 (QUOTE (LAMBDA (I) (PUT.MY.PROP (QUOTE INDENT)
 (IPLUS (ANC.INDENT) I)) (PUT.MY.PROP (QUOTE WIDTH)
 (IDIFFERENCE (ANC.WIDTH) I)) (DUMP.FORMAT
 (QUOTE INDENT) (IPLUS (ANC.INDENT) I)))) COMM.ARG)))
(* * push DUMPOUT.UNDO (QUOTE INDENT))
(SETQ COMM.ARG (pop DUMPOUT.ARGS)))
(WIDTH (push DUMPOUT.FORMS
(LIST 'PUT.MY.PROP (KWOTE 'WIDTH)
(pop DUMPOUT.ARGS))))
(FONT (SETQ COMM.ARG (pop DUMPOUT.ARGS))
[push DUMPOUT.FORMS
(LIST 'DUMP.FORMAT (KWOTE 'FONT)
(COND
((LISTGET IM.TEDIT.FONT.DEFS
COMM.ARG)
(KWOTE COMM.ARG))
(T COMM.ARG]
(push DUMPOUT.UNDO 'FONT))
(PARALOOKS (push DUMPOUT.FORMS
(LIST 'DUMP.FORMAT (KWOTE 'PARALOOKS)
(pop DUMPOUT.ARGS))))
(DUMP.CHARS (push DUMPOUT.FORMS
(LIST (FUNCTION IM.DUMP.CHARS)
(SETQ COMM.ARG (pop DUMPOUT.ARGS)))
(WIDTH (push DUMPOUT.FORMS (LIST 'PUT.MY.PROP
(KWOTE 'WIDTH)
(pop DUMPOUT.ARGS))))
(push DUMPOUT.FORMS (LIST 'DUMP.FORMAT
(KWOTE 'TEXT)
(LIST 'MAKE.SAVE COMM]
[for X in DUMPOUT.UNDO do (push DUMPOUT.FORMS (LIST 'DUMP.FORMAT
(KWOTE 'UNDO)
(KWOTE X]
(FONT (SETQ COMM.ARG (pop DUMPOUT.ARGS))
[push DUMPOUT.FORMS (LIST 'DUMP.FORMAT (KWOTE 'FONT)
(COND
((LISTGET IM.TEDIT.FONT.DEFS
COMM.ARG)
(KWOTE COMM.ARG))
(T COMM.ARG]
(push DUMPOUT.UNDO 'FONT))
(PARALOOKS (push DUMPOUT.FORMS (LIST 'DUMP.FORMAT
(KWOTE 'PARALOOKS)
(pop DUMPOUT.ARGS))))
(DUMP.CHARS (push DUMPOUT.FORMS (LIST (FUNCTION IM.DUMP.CHARS)
(pop DUMPOUT.ARGS))))
(push DUMPOUT.FORMS (LIST 'DUMP.FORMAT (KWOTE 'TEXT)
(LIST 'MAKE.SAVE COMM]
[for X in DUMPOUT.UNDO do (push DUMPOUT.FORMS (LIST 'DUMP.FORMAT (KWOTE 'UNDO)
(KWOTE X]
(* * push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE INDENT) DUMPOUT.SAVE.INDENT)))
 (QUOTE INDENT) DUMPOUT.SAVE.INDENT)))
(* * push DUMPOUT.FORMS (QUOTE (PUT.MY.PROP
 (QUOTE WIDTH) DUMPOUT.SAVE.WIDTH)))
 (QUOTE WIDTH) DUMPOUT.SAVE.WIDTH)))
(* * RETURN (APPEND (QUOTE (PROG ((DUMPOUT.SAVE.INDENT
 (GET.MY.PROP (QUOTE INDENT))) (DUMPOUT.SAVE.WIDTH
 (GET.MY.PROP (QUOTE WIDTH)))))) (DREVERSE DUMPOUT.FORMS)))
 (GET.MY.PROP (QUOTE INDENT))) (DUMPOUT.SAVE.WIDTH
 (GET.MY.PROP (QUOTE WIDTH)))))) (DREVERSE DUMPOUT.FORMS)))
(RETURN (CONS 'PROGN (DREVERSE DUMPOUT.FORMS])
@@ -2408,25 +2387,24 @@ page edge.)
(PUTPROPS SAVE.DUMPOUT MACRO (X (TRANSLATE.SAVE.DUMPOUT X)))
)
(PUTPROPS IMTEDIT COPYRIGHT ("Xerox Corporation" 1983 1984 1985 1986 1991))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (10773 38278 (IM.TEDIT 10783 . 12464) (DUMP 12466 . 14761) (DUMP.HEADERS.FOOTERS 14763
. 17129) (DUMP.HRULE 17131 . 18282) (CHANGE.FONT 18284 . 19478) (IM.BOUT.IMAGEOBJ 19480 . 19803) (
IM.TEDIT.DUMP.COMMANDS 19805 . 23358) (IM.TEDIT.DUMP.FOOTNOTES 23360 . 23801) (IM.TEDIT.DUMP.PARA
23803 . 24577) (INDEXX.PARSE.TYPE 24579 . 25874) (FORMAT.DEF 25876 . 28007) (FORMAT.LISPWORD 28009 .
28160) (MAKE.IM.DOCUMENT 28162 . 37133) (PRINT.NOTE 37135 . 37349) (SEND.INFO 37351 . 38276)) (38387
42405 (IM.VRULE.DISPLAYFN 38397 . 38721) (CREATE.VRULE.OBJECT 38723 . 40503) (PRINT.VRULES.ON.PAGE
40505 . 42403)) (42563 47318 (IM.FOLIO.DISPLAYFN 42573 . 43251) (IM.FOLIO.SIZEFN 43253 . 44102) (
CREATE.FOLIO.OBJECT 44104 . 45650) (GET.FOLIO.STRING 45652 . 47316)) (47450 93690 (ARG#TOPROG 47460 .
47599) (BIGLISPCODE#TOPROG 47601 . 48837) (BRACKET#TOPROG 48839 . 49003) (CHAPTER#TOPROG 49005 . 51686
) (COMMENT#TOPROG 51688 . 52240) (DEF#TOPROG 52242 . 55577) (FIGURE#TOPROG 55579 . 56923) (FN#TOPROG
56925 . 57322) (FNDEF#TOPROG 57324 . 61216) (FOOT#TOPROG 61218 . 61759) (INCLUDE#TOPROG 61761 . 62076)
(INDEX#TOPROG 62078 . 63168) (INDEXX#TOPROG 63170 . 65251) (IT#TOPROG 65253 . 65394) (LBRACKET#TOPROG
65396 . 65550) (LISP#TOPROG 65552 . 65693) (LISPCODE#TOPROG 65695 . 66814) (LISPWORD#TOPROG 66816 .
67556) (LIST#TOPROG 67558 . 71980) (MACDEF#TOPROG 71982 . 73160) (NOTE#TOPROG 73162 . 73842) (
PRINT.SPECIAL.CHARS#TOPROG 73844 . 74821) (PROPDEF#TOPROG 74823 . 75100) (RBRACKET#TOPROG 75102 .
75256) (REF#TOPROG 75258 . 83097) (RM#TOPROG 83099 . 83237) (SUB#TOPROG 83239 . 83387) (SUBSEC#TOPROG
83389 . 87892) (SUPER#TOPROG 87894 . 88048) (TABLE#TOPROG 88050 . 92002) (TAG#TOPROG 92004 . 92271) (
TERM#TOPROG 92273 . 92586) (VAR#TOPROG 92588 . 92991) (VARDEF#TOPROG 92993 . 93688)) (111336 116764 (
TRANSLATE.DUMPOUT 111346 . 116363) (TRANSLATE.SAVE.DUMPOUT 116365 . 116762)))))
(FILEMAP (NIL (10668 38115 (IM.TEDIT 10678 . 12359) (DUMP 12361 . 14656) (DUMP.HEADERS.FOOTERS 14658
. 17024) (DUMP.HRULE 17026 . 18177) (CHANGE.FONT 18179 . 19373) (IM.BOUT.IMAGEOBJ 19375 . 19698) (
IM.TEDIT.DUMP.COMMANDS 19700 . 23253) (IM.TEDIT.DUMP.FOOTNOTES 23255 . 23696) (IM.TEDIT.DUMP.PARA
23698 . 24472) (INDEXX.PARSE.TYPE 24474 . 25769) (FORMAT.DEF 25771 . 27902) (FORMAT.LISPWORD 27904 .
28055) (MAKE.IM.DOCUMENT 28057 . 36970) (PRINT.NOTE 36972 . 37186) (SEND.INFO 37188 . 38113)) (38224
42242 (IM.VRULE.DISPLAYFN 38234 . 38558) (CREATE.VRULE.OBJECT 38560 . 40340) (PRINT.VRULES.ON.PAGE
40342 . 42240)) (42400 47155 (IM.FOLIO.DISPLAYFN 42410 . 43088) (IM.FOLIO.SIZEFN 43090 . 43939) (
CREATE.FOLIO.OBJECT 43941 . 45487) (GET.FOLIO.STRING 45489 . 47153)) (47287 93527 (ARG#TOPROG 47297 .
47436) (BIGLISPCODE#TOPROG 47438 . 48674) (BRACKET#TOPROG 48676 . 48840) (CHAPTER#TOPROG 48842 . 51523
) (COMMENT#TOPROG 51525 . 52077) (DEF#TOPROG 52079 . 55414) (FIGURE#TOPROG 55416 . 56760) (FN#TOPROG
56762 . 57159) (FNDEF#TOPROG 57161 . 61053) (FOOT#TOPROG 61055 . 61596) (INCLUDE#TOPROG 61598 . 61913)
(INDEX#TOPROG 61915 . 63005) (INDEXX#TOPROG 63007 . 65088) (IT#TOPROG 65090 . 65231) (LBRACKET#TOPROG
65233 . 65387) (LISP#TOPROG 65389 . 65530) (LISPCODE#TOPROG 65532 . 66651) (LISPWORD#TOPROG 66653 .
67393) (LIST#TOPROG 67395 . 71817) (MACDEF#TOPROG 71819 . 72997) (NOTE#TOPROG 72999 . 73679) (
PRINT.SPECIAL.CHARS#TOPROG 73681 . 74658) (PROPDEF#TOPROG 74660 . 74937) (RBRACKET#TOPROG 74939 .
75093) (REF#TOPROG 75095 . 82934) (RM#TOPROG 82936 . 83074) (SUB#TOPROG 83076 . 83224) (SUBSEC#TOPROG
83226 . 87729) (SUPER#TOPROG 87731 . 87885) (TABLE#TOPROG 87887 . 91839) (TAG#TOPROG 91841 . 92108) (
TERM#TOPROG 92110 . 92423) (VAR#TOPROG 92425 . 92828) (VARDEF#TOPROG 92830 . 93525)) (111173 116115 (
TRANSLATE.DUMPOUT 111183 . 115714) (TRANSLATE.SAVE.DUMPOUT 115716 . 116113)))))
STOP

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

426
greetfiles/APPS-INIT Normal file
View File

@@ -0,0 +1,426 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Feb-2024 13:56:23" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;17 23321
:CHANGES-TO (VARS APPS-INITCOMS)
(FNS Apps.DoInit Apps.AroundExitFn)
:PREVIOUS-DATE "25-Feb-2024 13:14:02"
{DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;16)
(PRETTYCOMPRINT APPS-INITCOMS)
(RPAQQ APPS-INITCOMS
[(FILES (SYSLOAD)
MEDLEYDIR-INIT)
(GLOBALVARS Apps.NotecardsActivated Apps.RoomsActivated)
(INITVARS (Apps.NotecardsActivated NIL)
(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)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (Apps.DoInit)))
(DECLARE%: FIRST DONTEVAL@LOAD DOCOPY (P (BKSYSBUF " "])
(FILESLOAD (SYSLOAD)
MEDLEYDIR-INIT)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS Apps.NotecardsActivated Apps.RoomsActivated)
)
(RPAQ? Apps.NotecardsActivated NIL)
(RPAQ? Apps.RoomsActivated NIL)
(DEFINEQ
(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")
(LET* [[SRCDIR (OR (UNIX-GETENV 'NOTEFILESSRC)
(AND (UNIX-GETENV 'NC_INSTALLDIR)
(CONCAT (UNIX-GETENV 'NC_INSTALLDIR)
"/notefiles"))
(LET ((SUBDIR "notecards/notefiles"))
(for DIR in (LIST (CONCAT (MEDLEYDIR)
SUBDIR)
(CONCAT (MEDLEYDIR)
"../" SUBDIR)
(CONCAT (MEDLEYDIR)
"../../" SUBDIR)) thereis (DIRECTORYNAME DIR]
(DESTDIR (OR (UNIX-GETENV 'NOTEFILESDIR)
(AND (UNIX-GETENV 'MEDLEY_USERDIR)
(CONCAT (UNIX-GETENV 'MEDLEY_USERDIR)
"/notefiles"))
(CONCAT LOGINDIR "notefiles"]
[if (AND (NOT (DIRECTORYNAME DESTDIR))
(DIRECTORYNAME SRCDIR))
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)
20))
(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
(LIST '(NoteCards (
NC.BringUpNoteCardsIcon
)
"Bring up the NoteCards control icon."
]
(SETQ BackgroundMenu NIL)))
(SETQ Apps.NotecardsActivated T)
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(Apps.SetUpNOTECARDSDIRECTORIES
[LAMBDA NIL
(* ;; "Find the location of the Notecards directory and call NC.SetUpNOTECARDSDIRECTORIES.")
(* ;; " 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
"system>NOTECARDS"))
(INFILEP (CONCAT LOC
"system>NOTECARDS.LCOM"
]
(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)
(PRIN1 "Hence, NOTECARDSDIRECTORIES is probably not set correctly" T)
(PRIN1 "and Notecards will not work properly." T)
NIL])
(Apps.DoInit
[LAMBDA NIL
(* ;; "Edited 19-Jan-2023 12:43 by FGH")
(* ;; "Edited 17-Jan-2023 23:23 by FGH")
(* ;; "Edited 7-Dec-2022 11:14 by FGH")
(* ;; "Edited 12-Nov-2022 13:57 by FGH")
(* ;; "Edited 12-Oct-2022 20:23 by fgh")
(* ;; "Edited 6-Sep-2022 17:22 by fgh")
(* ;; "Edited 4-Sep-2022 16:44 by larry")
(* ;; "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")
[MAPC (OPENWINDOWS)
(FUNCTION (LAMBDA (W)
(COND
((EQ (WINDOWPROP W 'BUTTONEVENTFN)
'WHEN-WHO-LINE-SELECTED-FN)
(MOVEW W (CAR (WINDOWPROP W 'REGION))
(IDIFFERENCE SCREENHEIGHT 18)))
((STREQUAL (WINDOWPROP W 'TITLE)
"Prompt Window")
(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
XCOORD _ 50
YCOORD _ (IDIFFERENCE SCREENHEIGHT 460]
(* ;; " 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]
(LOAD '{DSK}/usr/local/interlisp/medley/lispusers/HELPSYS.LCOM T)
(* ;; "change to interlisp exec if required")
(COND
((OR (STRING-EQUAL (UNIX-GETENV 'MEDLEY_EXEC)
"inter")
(STRING-EQUAL (UNIX-GETENV 'NCO)
"true"))
(BKSYSBUF "(EXEC_INTERLISP)")))
(* ;; "Always Activate CLOS")
(Apps.ActivateCLOS)
(* ;; " activate Notecards if requested")
(COND
((STRING-EQUAL (UNIX-GETENV 'RUN_NOTECARDS)
"true")
(Apps.InitNotecards T)))
(* ;; " activate Rooms if requested")
(COND
((STRING-EQUAL (UNIX-GETENV 'RUN_ROOMS)
"true")
(Apps.ActivateRooms T)))
(* ;; " create the Documentation and ROOMS, Notecards Activation Buttons, if needed")
(Apps.CreateButtons T)
(* ;; " Make sure Notecards doesn't try to load its HASH file in NC.PostGreet")
(SETTOPVAL '\NC.SourceAccessFlg NIL)
(* ;; "Setup NOTECARDSDIRECTORIES.")
(Apps.SetUpNOTECARDSDIRECTORIES)
(* ;; "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 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 ")
(* ;; "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)
"NOTECARDS")
(LIST Apps.RoomsActivated '(Apps.ActivateRooms)
"ROOMS")))
(FEATURES-LABELS (for FEATURE in FEATURES collect (CADDR FEATURE)))
(DOCS (LIST (LIST "https://interlisp.org/docs/medley/orientation/" "BASICS")
(LIST "https://interlisp.org/documentation/Medley-Primer.pdf" "PRIMER")
(LIST "https://interlisp.org/documentation/IRM.pdf" "MANUAL")
(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)))
(RIGHTMARGINISH 140)
(SECTION1YPOS 225)
(YPOSDELTA 55)
(SECTION2YPOS (IPLUS SECTION1YPOS (ITIMES (IPLUS (LENGTH DOCS)
1)
YPOSDELTA)))
(BUTTONY-FEATURES SECTION2YPOS)
(BUTTONY-DOCS SECTION1YPOS)
(FEATURES-REQUIREDP (OR (NOT Apps.RoomsActivated)
(NOT Apps.NotecardsActivated)))
(IWS NIL)
(BUTTONS NIL))
(* ;; "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)
'FEATURE)
(MEMBER (BUTTON-LABEL B)
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
(IDIFFERENCE RIGHTMARGINISH 50
))
(IDIFFERENCE SCREENHEIGHT SECTION2YPOS]
(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
XCOORD _ (IDIFFERENCE
SCREENWIDTH
RIGHTMARGINISH)
YCOORD _ (IDIFFERENCE
SCREENHEIGHT
BUTTONY-FEATURES
]
(WINDOWPROP B 'Apps.BUTTON 'FEATURE)
B]
(* ;; "Then if needed, remove/recreate documentation buttons")
(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)
'DOC)
(MEMBER (BUTTON-LABEL B)
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 BUTTONY-DOCS (IPLUS BUTTONY-DOCS
YPOSDELTA))
[SETQ B (CREATE-BUTTON (LIST 'Apps.ShowDoc
(CAR DOC))
(CADR DOC)
(create POSITION
XCOORD _
(IDIFFERENCE
SCREENWIDTH
RIGHTMARGINISH)
YCOORD _
(IDIFFERENCE
SCREENHEIGHT
BUTTONY-DOCS]
(WINDOWPROP B 'Apps.BUTTON 'DOC)
B))
BUTTONS)))
[for B in BUTTONS do (COND
((WINDOWP B)
(WINDOWPROP B 'RIGHTBUTTONFN 'NILL)
(WINDOWPROP B 'BUTTONEVENTFN (FUNCTION (LAMBDA (BUTTON)
(if (LASTMOUSESTATE
(ONLY LEFT))
then (EXECUTE-BUTTON
BUTTON]
[for IW in IWS do (COND
((WINDOWP IW)
(WINDOWPROP IW 'RIGHTBUTTONFN 'NILL]
(for B in BUTTONS when (WINDOWP B) collect B])
(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)))
(BM (BITMAPCREATE BMW BMH))
(POS (create POSITION
XCOORD _ (IDIFFERENCE CenterX (IQUOTIENT BMW 2))
YCOORD _ BottomY))
IW)
(DSPDESTINATION BM DS)
(PRIN1 Text DS)
(SETQ IW (ICONW BM BM POS))
(WINDOWPROP IW 'ICONLABEL Text)
IW])
(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
(APPEND BackgroundMenuCommands
(LIST '("CLOS Browse Class" (CLOS-BROWSER::BROWSE-CLASS)
"Bring up a class browser."
(SUBITEMS (|all in a package| (CLOS-BROWSER::BROWSE-CLASS
(
CLOS-BROWSER::CLASSES-IN-PACKAGE
(
CLOS-BROWSER::IN-SELECT-PACKAGE
)))
"Select a package and browse all the classes defined in that package."
]
(SETQ BackgroundMenu NIL])
(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)
"/suites")
ROOMS:*SUITE-DIRECTORIES*))
(SETQ Apps.RoomsActivated T)
(PROMPTPRINT "
ROOMS functionality is now available via the Background Menu")
(if (NOT DoNotRefreshButtons)
then (Apps.CreateButtons])
(Apps.ShowDoc
[LAMBDA (URL) (* ; "Edited 18-Jan-2023 20:26 by FGH")
(ShellBrowse URL])
(XCL-USER::EXEC_INTERLISP
[LAMBDA NIL (* ; "Edited 18-Mar-2022 18:53 by fgh")
(PROGN [MAPC (OPENWINDOWS)
(FUNCTION (LAMBDA (W)
(COND
((STREQUAL (WINDOWPROP W 'TITLE)
"Exec (XCL)")
(PROGN (WINDOWPROP W 'TITLE "Exec (INTERLISP)")
(MOVEW W (create POSITION
XCOORD _ 50
YCOORD _ (IDIFFERENCE SCREENHEIGHT 460]
(XCL:SET-DEFAULT-EXEC-TYPE 'INTERLISP)
(XCL:SET-EXEC-TYPE 'INTERLISP])
(Apps.AroundExitFn
[LAMBDA (EVENT)
(if (MEMB EVENT '(AFTERLOGOUT AFTERSYSOUT AFTERSAVEVM))
then (Apps.SetUpNOTECARDSDIRECTORIES])
)
(DECLARE%: DONTEVAL@LOAD DOCOPY
(Apps.DoInit)
)
(DECLARE%: FIRST DONTEVAL@LOAD DOCOPY
(BKSYSBUF " ")
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1229 23187 (Apps.InitNotecards 1239 . 5101) (Apps.SetUpNOTECARDSDIRECTORIES 5103 . 6658
) (Apps.DoInit 6660 . 10257) (Apps.CreateButtons 10259 . 19083) (Apps.CreateLabel 19085 . 19895) (
Apps.ActivateCLOS 19897 . 21246) (Apps.ActivateRooms 21248 . 22099) (Apps.ShowDoc 22101 . 22250) (
XCL-USER::EXEC_INTERLISP 22252 . 23024) (Apps.AroundExitFn 23026 . 23185)))))
STOP

BIN
greetfiles/APPS-INIT.LCOM Normal file

Binary file not shown.

View File

@@ -1,10 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 9-Mar-2022 11:50:44" {DSK}<home>larry>medley>greetfiles>MEDLEYDIR-INIT.;2 4690
(FILECREATED "13-Apr-2023 09:44:06" {DSK}<home>larry>il>medley>greetfiles>MEDLEYDIR-INIT.;6 2925
:EDIT-BY "lmm"
:CHANGES-TO (VARS MEDLEYDIR-INITCOMS)
:PREVIOUS-DATE "28-Feb-2022 21:13:20" {DSK}<home>larry>medley>greetfiles>MEDLEYDIR-INIT.;1)
:PREVIOUS-DATE "10-Apr-2023 11:58:07" {DSK}<home>larry>il>medley>greetfiles>MEDLEYDIR-INIT.;5
)
(PRETTYCOMPRINT MEDLEYDIR-INITCOMS)
@@ -13,7 +16,7 @@
([P (LOAD? (CONCAT (OR (UNIX-GETENV "MEDLEYDIR")
"")
"/sources/MEDLEYDIR.LCOM"))
(MEDLEY-INIT-VARS)
(MEDLEY-INIT-VARS 'GREET)
(KEYACTION 'LOCK '(LOCKTOGGLE . IGNORE]
(FILES BACKGROUND-YIELD)
(VARS
@@ -21,24 +24,25 @@
(DWIMWAIT 180)
(HELPDEPTH 4)
(HELPTIME 10)
(HELPTIME 1)
(FILING.ENUMERATION.DEPTH 1)
[LOGINDIR (DIRECTORYNAME (OR (UNIX-GETENV "LOGINDIR")
(UNIX-GETENV "HOME"]
[USERGREETFILES `((,LOGINDIR "INIT" COM)
(,LOGINDIR "INIT"]
(COPYRIGHTFLG 'NEVER)
(COPYRIGHTSRESERVED NIL)
(AUTOBACKTRACEFLG 'ALWAYS)
(MAXLEVEL 30000)
(MAXLOOP 30000))
(FNS INTERLISPMODE)
(ALISTS (FONTDEFS LARGER))))
(ALISTS (FONTDEFS))))
(LOAD? (CONCAT (OR (UNIX-GETENV "MEDLEYDIR")
"")
"/sources/MEDLEYDIR.LCOM"))
(MEDLEY-INIT-VARS)
(MEDLEY-INIT-VARS 'GREET)
(KEYACTION 'LOCK '(LOCKTOGGLE . IGNORE))
@@ -48,7 +52,7 @@
(RPAQQ HELPDEPTH 4)
(RPAQQ HELPTIME 10)
(RPAQQ HELPTIME 1)
(RPAQQ FILING.ENUMERATION.DEPTH 1)
@@ -58,6 +62,8 @@
(RPAQ USERGREETFILES `((,LOGINDIR "INIT" COM)
(,LOGINDIR "INIT")))
(RPAQQ COPYRIGHTFLG NEVER)
(RPAQQ COPYRIGHTSRESERVED NIL)
(RPAQQ AUTOBACKTRACEFLG ALWAYS)
@@ -81,44 +87,7 @@
:PACKAGE "INTERLISP"])
)
(ADDTOVAR FONTDEFS
[LARGER (FONTCHANGEFLG . ALL)
(FILELINELENGTH . 102)
(FONTPROFILE (DEFAULTFONT 1 (GACHA 12)
(GACHA 10)
(TERMINAL 10)
(POSTSCRIPT (TERMINAL 10)))
(ITALICFONT 1 (HELVETICA 12 MIR)
(GACHA 10 MIR)
(MODERN 10 MIR)
(POSTSCRIPT (MODERN 10 MIR)))
(BOLDFONT 2 (HELVETICA 12 BRR)
(HELVETICA 10 BRR)
(MODERN 10 BRR)
(POSTSCRIPT (HELVETICA 12 BRR)))
(LITTLEFONT 3 (HELVETICA 10)
(HELVETICA 6 MIR)
(MODERN 10 MIR)
(POSTSCRIPT (MODERN 10 MIR)))
(TINYFONT 6 (GACHA 10)
(GACHA 6)
(TERMINAL 6)
(POSTSCRIPT (TERMINAL 6)))
(BIGFONT 4 (HELVETICA 12 BRR)
NIL
(MODERN 12 BRR)
(POSTSCRIPT (MODERN 12 BRR)))
(MENUFONT 5 (HELVETICA 12)
(HELVETICA 12)
(POSTSCRIPT (HELVETICA 12)))
(COMMENTFONT 6 (HELVETICA 12)
(HELVETICA 10)
(MODERN 10)
(POSTSCRIPT (MODERN 10)))
(TEXTFONT 7 (TIMESROMAN 12)
NIL
(CLASSIC 12)
(POSTSCRIPT (CLASSIC 12])
(ADDTOVAR FONTDEFS )
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1949 2774 (INTERLISPMODE 1959 . 2772)))))
(FILEMAP (NIL (2051 2876 (INTERLISPMODE 2061 . 2874)))))
STOP

Binary file not shown.

6
installers/cygwin/.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
medley*.exe
medley*.tgz
maiko*.tgz
setup-x86_64.exe
medley.bat

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -0,0 +1,165 @@
; Copyright (C) 2021-2023 by Bill Stewart (bstewart at iname.com)
;
; This program is free software; you can redistribute it and/or modify it under
; the terms of the GNU Lesser General Public License as published by the Free
; Software Foundation; either version 3 of the License, or (at your option) any
; later version.
;
; This program is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
; FOR A PARTICULAR PURPOSE. See the GNU General Lesser Public License for more
; details.
;
; You should have received a copy of the GNU Lesser General Public License
; along with this program. If not, see https://www.gnu.org/licenses/.
; Sample Inno Setup (https://www.jrsoftware.org/isinfo.php) script
; demonstrating use of PathMgr.dll.
;
; This script uses PathMgr.dll in the following ways:
; * Copies PathMgr.dll to the target machine (required for uninstall)
; * Defines a task in [Tasks] that should modify the Path
; * Imports the AddDirToPath() DLL function at setup time
; * Imports the RemoveDirFromPath() DLL function at uninstall time
; * Stores task state as custom setting using RegisterPreviousData()
; * Retrieves task state custom setting during setup and uninstall initialize
; * At post install, adds app dir to Path if task selected
; * At uninstall, removes dir from Path if custom setting present
; * Unloads and deletes DLL and removes app dir at uninstall deinitialize
#if Ver < EncodeVer(6,0,0,0)
#error This script requires Inno Setup 6 or later
#endif
[Setup]
AppId={{A17D2D05-C729-4F2A-9CC7-E04906C5A842}
AppName=EditPath
AppVersion=4.0.4.0
UsePreviousAppDir=false
DefaultDirName={autopf}\EditPath
Uninstallable=true
OutputDir=.
OutputBaseFilename=EditPath_Setup
ArchitecturesInstallIn64BitMode=x64
PrivilegesRequired=none
PrivilegesRequiredOverridesAllowed=dialog
[Files]
; Install PathMgr.dll for use with both setup and uninstall; use
; uninsneveruninstall flag because DeinitializeSetup() will delete after
; unloading the DLL; install the 32-bit version of PathMgr.dll because both
; setup and uninstall executables are 32-bit
Source: "i386\PathMgr.dll"; DestDir: "{app}"; Flags: uninsneveruninstall
; Other files to install on target system
Source: "i386\EditPath.exe"; DestDir: "{app}"; Check: not Is64BitInstallMode()
Source: "x86_64\EditPath.exe"; DestDir: "{app}"; Check: Is64BitInstallMode()
Source: "EditPath.md"; DestDir: "{app}"
[Tasks]
Name: modifypath; Description: "&Add to Path"
[Code]
const
MODIFY_PATH_TASK_NAME = 'modifypath'; // Specify name of task
var
PathIsModified: Boolean; // Cache task selection from previous installs
ApplicationUninstalled: Boolean; // Has application been uninstalled?
// Import AddDirToPath() at setup time ('files:' prefix)
function DLLAddDirToPath(DirName: string; PathType, AddType: DWORD): DWORD;
external 'AddDirToPath@files:PathMgr.dll stdcall setuponly';
// Import RemoveDirFromPath() at uninstall time ('{app}\' prefix)
function DLLRemoveDirFromPath(DirName: string; PathType: DWORD): DWORD;
external 'RemoveDirFromPath@{app}\PathMgr.dll stdcall uninstallonly';
// Wrapper for AddDirToPath() DLL function
function AddDirToPath(const DirName: string): DWORD;
var
PathType, AddType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
// AddType = 0 - add to end of Path
// AddType = 1 - add to beginning of Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
AddType := 0;
result := DLLAddDirToPath(DirName, PathType, AddType);
end;
// Wrapper for RemoveDirFromPath() DLL function
function RemoveDirFromPath(const DirName: string): DWORD;
var
PathType: DWORD;
begin
// PathType = 0 - use system Path
// PathType = 1 - use user Path
if IsAdminInstallMode() then
PathType := 0
else
PathType := 1;
result := DLLRemoveDirFromPath(DirName, PathType);
end;
procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
// Store previous or current task selection as custom user setting
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
SetPreviousData(PreviousDataKey, MODIFY_PATH_TASK_NAME, 'true');
end;
function InitializeSetup(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
end;
function InitializeUninstall(): Boolean;
begin
result := true;
// Was task selected during a previous install?
PathIsModified := GetPreviousData(MODIFY_PATH_TASK_NAME, '') = 'true';
ApplicationUninstalled := false;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
// Add app directory to Path at post-install step if task selected
if PathIsModified or WizardIsTaskSelected(MODIFY_PATH_TASK_NAME) then
AddDirToPath(ExpandConstant('{app}'));
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
// Remove app directory from path during uninstall if task was selected;
// use variable because we can't use WizardIsTaskSelected() at uninstall
if PathIsModified then
RemoveDirFromPath(ExpandConstant('{app}'));
end
else if CurUninstallStep = usPostUninstall then
begin
ApplicationUninstalled := true;
end;
end;
procedure DeinitializeUninstall();
begin
if ApplicationUninstalled then
begin
// Unload and delete PathMgr.dll and remove app dir when uninstalling
UnloadDLL(ExpandConstant('{app}\PathMgr.dll'));
DeleteFile(ExpandConstant('{app}\PathMgr.dll'));
RemoveDir(ExpandConstant('{app}'));
end;
end;

View File

@@ -0,0 +1,118 @@
# EditPath
EditPath is a Windows console (text-based, command-line) program for managing the system Path and user Path.
# Author
Bill Stewart - bstewart at iname dot com
# License
EditPath.exe is covered by the GNU Lesser Public License (LPGL). See the file `LICENSE` for details.
# Download
https://github.com/Bill-Stewart/PathMgr/releases/
# Background
The system Path is found in the following location in the Windows registry:
Root: `HKEY_LOCAL_MACHINE`
Subkey: `SYSTEM\CurrentControlSet\Control\Session Manager\Environment`
Value name: `Path`
The current user Path is found in the following location in the registry:
Root: `HKEY_CURRENT_USER`
Subkey: `Environment`
Value name: `Path`
In both cases, the `Path` value is (or should be) the registry type `REG_EXPAND_SZ`, which means that it is a string that can contain values surrounded by `%` characters that Windows will automatically expand to environment variable values. (For example, `%SystemRoot%` will be expanded to `C:\Windows` on most systems.)
The `Path` value contains a `;`-delimited list of directory names that the system should search for executables, library files, scripts, etc. Windows appends the content of the current user Path to the system Path and expands the environment variable references. The resulting string is set as the `Path` environment variable for processes.
EditPath provides a command-line interface for managing the `Path` value in the system location (in `HKEY_LOCAL_MACHINE`) and the current user location (in `HKEY_CURRENT_USER`).
# Usage
The following describes the command-line usage for the program. Parameters are case-sensitive.
**EditPath** [_options_] _type_ _action_
You must specify only one of the following _type_ parameters:
| _type_ | Abbreviation | Description
| ------- | ------------ | -----------
| **--system** | **-s** | Specifies the system Path
| **--user** | **-u** | Specifies the user Path
You must specify only one of the following _action_ parameters:
| _action_ | Abbreviation | Description
| -------- | ------------ | -----------
| **--list** | **-l** | Lists directories in Path
| **--test "**_dirname_**"** | **-t "**_dirname_**"** | Tests if directory exists in Path
| **--add "**_dirname_**"** | **-a "**_dirname_**"** | Adds directory to Path
| **--remove "**_dirname_**"** | **-r "**_dirname_**"** | Removes directory from Path
The following parameters are optional:
| _options_ | Abbreviation | Description
| --------- | ------------ | -----------
| **--quiet** | **-q** | Suppresses result messages
| **--expand** | **-x** | Expands environment variables (**--list** only)
| **--beginning** | **-b** | Adds to beginning of Path (**--add** only)
# Exit Codes
The following table lists typical exit codes when not using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 0 | No errors
| 2 | The Path value is not present in the registry
| 3 | The specified directory does not exist in the Path
| 5 | Access is denied
| 87 | Incorrect parameter(s)
| 183 | The specified directory already exists in the Path
The following table lists typical exit codes when using **--test** (**-t**).
| Exit Code | Description
| --------- | -----------
| 1 | The specified directory exists in the unexpanded Path
| 2 | The specified directory exists in the expanded Path
| 3 | The specified directory does not exist in the Path
# Remarks
* Anything on the command line after **--test**, **--add**, or **--remove** is considered to be the argument for the parameter. To avoid ambiguity, specify the _action_ parameter last on the command line.
* Uexpanded vs. expanded refers to whether the environment variable references (i.e., names between `%` characters) are expanded after retrieving the Path value from the registry. For example, `%SystemRoot%` is unexpanded but `C:\Windows` is expanded.
* The **--add** (**-a**) parameter checks whether the specified directory exists in both the unexpanded and expanded copies of the Path before adding the directory. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--add C:\TestApp` will return exit code 183 (i.e., the directory already exists in the Path) because `%TESTAPP%` expands to `C:\TestApp`.
* The **--remove** (**-r**) parameter does not expand environment variable references. For example, if the environment variable `TESTAPP` is set to `C:\TestApp` and `%TESTAPP%` is in the Path, specifying `--remove "C:\TestApp"` will return exit code 3 (i.e., the directory does not exist in the Path) because **--remove** does not expand `%TESTAPP%` to `C:\TestApp`. For the command to succeed, you would have to specify `--remove "%TESTAPP%"` instead.
* The program will exit with error code 87 if a parameter (or an argument to a parameter) is missing or not valid, if mutually exclusive parameters are specified, etc.
* The program will exit with error code 5 if the current user does not have permission to update the Path value in the registry (for example, if you try to update the system Path using a standard user account or an unelevated administrator account).
# Examples
1. `EditPath --expand --system --list`
This command outputs the directories in the system Path, with environment variables expanded. You can also write this command as `EditPath -x -s -l`.
2. `EditPath --user --add "%LOCALAPPDATA%\Programs\MyApp"`
Adds the specified directory name to the user Path.
3. `EditPath -s -r "C:\Program Files\MyApp\bin"`
Removes the specified directory from the system Path.
4. `EditPath -s --test "C:\Program Files (x86)\MyApp\bin"`
Returns an exit code of 3 if the specified directory is not in the system Path, 1 if the specified directory is in the unexpanded copy of the system Path, or 2 if the specified directory is in the expanded copy of the system Path.

View File

@@ -0,0 +1,3 @@
Editpath installed here is extracted from Release 1.04 from https://github.com/Bill-Stewart/PathMgr.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,128 @@
; -- makeflix.iss --
; fgh 2016-08-19
#define x86_or_x64 "x86"
#define version "1.0.1"
#if x86_or_x64 == "x86"
#define exe_dir "Win32"
#else
#define exe_dir "x64"
#endif
[Setup]
ArchitecturesAllowed={#x86_or_x64}
AppName=Makeflix
AppVersion={#version}
AppPublisher=Lellan, Inc.
AppPublisherURL=http://www.lellan.com/
AppCopyright=Copyright (C) 2012-2017 Lellan, Inc.
DefaultDirName={pf}\Lellan\Makeflix
DefaultGroupName=Lellan
UninstallDisplayIcon={app}\makeflix.exe
Compression=lzma2
SolidCompression=yes
; "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
; Source Dir is lellan/toolchain/makeflix/windows
SourceDir="..\"
OutputDir="deploy"
OutputBaseFilename="makeflix_v{#version}_{#x86_or_x64}"
SetupIconFile="..\images\Lellan_Logo_20130221.ico"
LicenseFile="..\deploy\EULA.rtf"
DisableWelcomePage=no
[Files]
Source: "makeflix\{#exe_dir}\Release\makeflix.exe"; DestDir: "{app}"; DestName: "makeflix.exe"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Gui.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\Qt5Network.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "deploy\DLLs\{#x86_or_x64}\platforms\qwindows.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
Source: "deploy\gstreamer\{#x86_or_x64}\*"; DestDir: "{app}\gstreamer"; Flags: recursesubdirs ignoreversion
Source: "deploy\vc_redist\vc_redist.{#x86_or_x64}.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
Source: "deploy\bonjour\Bonjour.{#x86_or_x64}.msi"; DestDir: "{tmp}" ; Flags: deleteafterinstall
Source: "..\deploy\Makeflix_Open_Source_Libraries.pdf"; DestDir: "{app}"
[Icons]
Name: "{group}\Makeflix"; Filename: "{app}\makeflix.exe"
Name: "{group}\Uninstall Makeflix"; Filename: "{uninstallexe}"
[Run]
#define VCmsg "Installing Microsoft Visual C++ Redistributable ..."
Filename: "{tmp}\vc_redist{#x86_or_x64}.exe"; StatusMsg: "{#VCmsg}"; Check: not VCinstalled
#define BonjourMsg "Installing Apple Bonjour support ..."
Filename: "msiexec"; Parameters: "/i {tmp}\Bonjour.{#x86_or_x64}.msi"; StatusMsg: "{#BonjourMsg}"; Check: not BonjourInstalled
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\makeflix.exe"; ValueType: string; ValueName: "(Default)"; ValueData: "{app}\makeflix.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\makeflix.exe"; ValueType: string; ValueName: "Path"; ValueData: "{app}\gstreamer\bin"; Flags: uninsdeletekey
[Code]
function VCinstalled: Boolean;
// By Michael Weiner <mailto:spam@cogit.net>
// Function for Inno Setup Compiler
// 13 November 2015
// Modified by Frank G Halasz to handle WOW case
// 23 August 2016
// Returns True if Microsoft Visual C++ Redistributable is installed, otherwise False.
// The programmer may set the year of redistributable to find; see below.
var
names: TArrayOfString;
i: Integer;
dName, key, year, platfm: String;
begin
// Year of redistributable to find; leave null to find installation for any year.
year := '2015';
Result := False;
if Is64BitInstallMode then
begin
platfm := 'x64';
key := 'Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall';
end
else if not IsWin64 then
begin
platfm := 'x86';
key := 'Software\Microsoft\Windows\CurrentVersion\Uninstall';
end
else
begin
platfm := 'x86';
key := 'Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall';
end;
// Get an array of all of the uninstall subkey names.
if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, key, names) then
// Uninstall subkey names were found.
begin
i := 0
while ((i < GetArrayLength(names)) and (Result = False)) do
// The loop will end as soon as one instance of a Visual C++ redistributable is found.
begin
// For each uninstall subkey, look for a DisplayName value.
// If not found, then the subkey name will be used instead.
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, key + '\' + names[i], 'DisplayName', dName) then
dName := names[i];
// See if the value contains both of the strings below.
Result := (Pos(Trim('Visual C++ ' + year),dName) * Pos('Redistributable',dName) * Pos(platfm, dName) <> 0)
i := i + 1;
end;
end;
end;
function BonjourInstalled: Boolean;
// Returns True if Apple Bonjour is installed, otherwise False.
// Ignores date/version of Bonjour.
begin
Result := False;
// If this key exists, then
// bonjour services must already be installed
if RegKeyExists(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\Bonjour Service') then
// Uninstall subkey names were found.
begin
Result := True;
end;
end;

View File

@@ -0,0 +1,85 @@
;###############################################################################
;#
;# medley.iss - Inno Setup compiler script for creating a Windows
;# installer for cygwin and Medley on cygwin
;#
;# 2023-06-03 Frank Halasz
;#
;# Copyright 2023 Interlisp.org
;#
;###############################################################################
#define x86_or_x64 "x64"
#if GetEnv('COMBINED_RELEASE_TAG') != ""
#define VERSION=GetEnv('COMBINED_RELEASE_TAG')
#else
#define VERSION="local"
#endif
#if GetEnv('CYGWIN_INSTALLER_BASE') != ""
#define OUTFILE=GetEnv('CYGWIN_INSTALLER_BASE')
#else
#define OUTFILE="medley-full-cygwin-x86_64-local"
#endif
[Setup]
PrivilegesRequired=lowest
ArchitecturesAllowed={#x86_or_x64}
AppName=Medley
AppVersion={#version}
AppPublisher=Interlisp.org
AppPublisherURL=https://interlisp.org/
AppCopyright=Copyright (C) 2023 Interlisp.org
DefaultDirName={%USERPROFILE}\il
DefaultGroupName=Medley
Compression=lzma2
SolidCompression=yes
; "ArchitecturesInstallIn64BitMode=x64" requests that the install be
; done in "64-bit mode" on x64, meaning it should use the native
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
OutputDir="."
OutputBaseFilename={#OUTFILE}
SetupIconFile="Medley.ico"
DisableWelcomePage=no
MissingRunOnceIdsWarning=no
DisableProgramGroupPage=yes
WizardImageFile=medley_logo.bmp
WizardSmallImageFile=medley_logo_small.bmp
WizardImageStretch=no
UninstallDisplayIcon="{app}\Medley.ico"
UninstallFilesDir={app}\uninstall
UsePreviousAppDir=no
[Dirs]
Name: "{app}\install"; Permissions: everyone-full
Name: "{app}\uninstall"; Permissions: everyone-full
Name: "{app}\cygwin"; Permissions: everyone-full
[Files]
Source: "setup-x86_64.exe"; DestDir: "{app}\cygwin"; DestName: "setup-x86_64.exe"; Flags: ignoreversion
Source: "maiko-cygwin.x86_64.tgz"; DestDir: "{app}\install"; DestName: "maiko-cygwin.x86_64.tgz"; Flags: ignoreversion
Source: "medley.tgz"; DestDir: "{app}\install"; DestName: "medley.tgz"; Flags: ignoreversion
Source: "..\win\editpath\x86_64\EditPath.exe"; DestDir: "{app}\uninstall"; DestName: "EditPath.exe"; Flags: ignoreversion
Source: "Medley.ico"; DestDir: "{app}"; DestName: "Medley.ico"; Flags: ignoreversion
[Icons]
Name: "{group}\Medley\Uninstall_Medley"; Filename: "{uninstallexe}"
; Name: "{group}\Medley\Medley"; Filename: "powershell"; Parameters: "-NoExit -File {app}\medley.ps1 --help"; IconFilename: "{app}\Medley.ico"
[Run]
Filename: "{app}\cygwin\setup-x86_64.exe"; Parameters: "--quiet-mode --no-admin --wait --no-shortcuts --no-write-registry --verbose --root {app} --site http://www.gtlib.gatech.edu/pub/cygwin/ --only-site --local-package-dir {app}\cygwin --packages nano,xdg-utils"; StatusMsg: "Installing Cygwin ..."
Filename: "{app}\bin\bash"; Parameters: "-login -c 'sed -i -e s/^none/#none/ /etc/fstab && echo none / cygdrive binary,posix=0,user 0 0 >>/etc/fstab'"; Flags: runhidden
Filename: "tar"; Parameters: "-x -z -C {app} -f {app}\install\medley.tgz"; Flags: runhidden; StatusMsg: "Installing Medley ..."
Filename: "powershell"; Parameters: "remove-item -force -recurse {app}\maiko"; Flags: runhidden; StatusMsg: "Installing Maiko ..."
Filename: "tar"; Parameters: "-x -z -C {app} -f {app}\install\maiko-cygwin.x86_64.tgz"; Flags: runhidden; StatusMsg: "Installing Maiko ..."
; Recreate medley symbolic links (lost in tars)
Filename: "{app}\bin\bash"; Parameters: "-login -c 'cd /medley/scripts/medley && ln -s medley.command medley.sh && cd ../.. && ln -s /medley/scripts/medley/medley.sh medley'"; Flags: runhidden
; Create medley.bat
Filename: "powershell"; Parameters: "write-output \""{app}\bin\bash -login -c '/medley/scripts/medley/medley.sh %*'\"" | out-file medley.bat -Encoding ascii"; WorkingDir: "{app}"; Flags: runhidden; StatusMsg: "Creating medley.bat ..."
Filename: "{app}\uninstall\EditPath.exe"; Parameters: "--user --add {app}"; Flags: runhidden; StatusMsg: "Adding to PATH ..."
Filename: "powershell"; Parameters: "remove-item -recurse -force {app}\install"; Flags: runhidden; StatusMsg: "Cleaning up ..."
[UninstallRun]
Filename: "{app}\uninstall\EditPath.exe"; Parameters: "--user --remove {app}"; Flags: runhidden

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

7
installers/deb/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
/tmp
*.deb
*.swp
*.save
/tars
/debs

1
installers/deb/build Symbolic link
View File

@@ -0,0 +1 @@
build_deb.sh

152
installers/deb/build_deb.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/bin/bash
###############################################################################
#
# build_deb.sh: build .deb files for installing Medley Interlisp on Linux
# and WSL
#
# 2023-01-10 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
# set -x
tarball_dir=tmp/tarballs
# Make sure we are in the right directory
if [ ! -f ./control-linux ];
then
echo "Can't find ./control file."
echo "Incorrect cwd?"
echo "Should be in medley/installers/deb"
echo "Exiting"
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
then
# First, make sure gh is available and we are logged in to github
if [ -z "$(which gh)" ];
then
echo "Can't find gh"
echo "Exiting."
exit 2
fi
gh auth status 2>&1 | grep --quiet --no-messages "Logged in to github.com"
if [ $? -ne 0 ];
then
echo "Not logged into github."
echo "Exiting."
exit 3
fi
# then clear out the ./tmp directory
rm -rf ./tmp
mkdir ./tmp
# then download the maiko and medley tarballs
mkdir -p ${tarball_dir}
echo "Fetching maiko and medley release tarballs"
gh release download --repo interlisp/maiko --dir ${tarball_dir} --pattern "*.tgz"
TAG=$(gh release list --repo interlisp/medley | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} --repo interlisp/medley --dir ${tarball_dir} --pattern "*.tgz"
gh repo clone interlisp/notecards notecards -- --depth 1
(cd notecards; git archive --format=tgz --output=../notecards.tgz --prefix=notecards/ main)
mv notecards.tgz ${tarball_dir}
rm -rf notecards
fi
# Figure out release tags from tarball names
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-linux.x86_64.tgz | sed "s/maiko-\(.*\)-linux.x86_64.tgz/\1/")
popd >/dev/null 2>/dev/null
# For linux and wsl create packages for each arch
for wslp in linux wsl
do
# For each arch create a deb file
for arch_base in x86_64^amd64 armv7l^armhf aarch64^arm64
do
if [[ ${wslp} = wsl && ${arch_base} = armv7l^armhf ]];
then
continue
fi
arch=${arch_base%^*}
debian_arch=${arch_base#*^}
pkg_dir=tmp/pkg/${wslp}-${arch}
#
# Set up the pkg directories for this arch using the release tarballs
#
# Copy in the right control file, modifying as needed
rm -rf ${pkg_dir}
mkdir -p ${pkg_dir}
mkdir -p ${pkg_dir}/DEBIAN
sed \
-e "s/--ARCH--/${debian_arch}/" \
-e "s/--RELEASE--/${medley_release}_${maiko_release}/" \
<control-${wslp} >${pkg_dir}/DEBIAN/control
#
il_dir=${pkg_dir}/usr/local/interlisp
MEDLEYDIR=${il_dir#${pkg_dir}}/medley
# Maiko and Medley files to il_dir (/usr/local/interlisp)
mkdir -p ${il_dir}
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/maiko-${maiko_release}-linux.${arch}.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-runtime.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-loadups.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/notecards.tgz"
# Copy the medley man page into place
man_dir="${pkg_dir}/usr/local/man/man1"
mkdir -p "${man_dir}"
cp -p "${il_dir}/medley/docs/man-page/medley.1.gz" "${man_dir}"
# Configure postinst and postrm scripts and put in place in DEBIAN dir
sed -e "s>--MEDLEYDIR-->${MEDLEYDIR}>g" <postinst >${pkg_dir}/DEBIAN/postinst
chmod +x ${pkg_dir}/DEBIAN/postinst
sed -e "s>--MEDLEYDIR-->${MEDLEYDIR}>g" <postrm >${pkg_dir}/DEBIAN/postrm
chmod +x ${pkg_dir}/DEBIAN/postrm
# For wsl scripts, include the vncviewer.exe
if [[ ${wslp} = wsl && ${arch} = x86_64 ]];
then
pushd ./tmp >/dev/null
rm -rf vncviewer64-1.12.0.exe
wget -q https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe
popd >/dev/null
mkdir -p ${il_dir}/wsl
cp -p tmp/vncviewer64-1.12.0.exe ${il_dir}/wsl/vncviewer64-1.12.0.exe
fi
#
# Make sure all files are owned by root
#
sudo su <<< "chown --recursive root:root ${il_dir}"
#
# Create tar file for this arch
#
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#${wslp}#" -e "s#@@ARCH@@#${arch}#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
mkdir -p tars
echo "Creating tar file tars/${filename}.tgz"
tar -C ${il_dir} -czf tars/${filename}.tgz .
#
# Create the deb file for this arch
#
mkdir -p debs
deb_filepath="debs/${filename}.deb"
rm -rf "${deb_filepath}"
dpkg-deb --build -Zxz "${pkg_dir}" "${deb_filepath}"
#
done
done
################################################################################################################
################################################################################################################

View File

@@ -0,0 +1,9 @@
Package: medley-interlisp
Version: 1.0.1
Release: --RELEASE--
Maintainer: info@interlisp.org
Description: Medley Interlisp for Linux
Homepage: https://github.com/interlisp/medley
Architecture: --ARCH--
Depends: man-db, xdg-utils

View File

@@ -0,0 +1,9 @@
Package: medley-interlisp
Version: 1.0.0
Release: --RELEASE--
Maintainer: info@interlisp.org
Description: Medley Interlisp for Linux
Homepage: https://github.com/interlisp/medley
Architecture: --ARCH--
Depends: wslu ( >= 4.1 ) | wslu ( << 4.0 ), tigervnc-standalone-server, tigervnc-xorg-extension

View File

@@ -0,0 +1,10 @@
#
sudo sed -i s/bullseye/bookworm/ /etc/apt/sources.list
sudo apt update
sudo apt full-upgrade -y
#
sudo apt install wget gnupg2 apt-transport-https
wget -O - https://pkg.wslutiliti.es/public.key | sudo tee -a /etc/apt/trusted.gpg.d/wslu.asc
echo "deb https://pkg.wslutiliti.es/debian bullseye main" | sudo tee -a /etc/apt/sources.list
sudo apt update

8
installers/deb/postinst Normal file
View File

@@ -0,0 +1,8 @@
#!/bin/bash
# put linkto medley.sh into /usr/local/bin
if [[ $1 = configure && ! -e /usr/local/bin/medley ]];
then
ln -s --MEDLEYDIR--/scripts/medley/medley.sh /usr/local/bin/medley
fi
# update the man database
mandb

9
installers/deb/postrm Normal file
View File

@@ -0,0 +1,9 @@
#!/bin/bash
if [[ $1 = remove || $1 = purge ]];
then
if [ "$(realpath /usr/local/bin/medley)" = "--MEDLEYDIR--/scripts/medley.sh" ];
then
rm -f /usr/local/bin/medley
fi
fi

View File

@@ -0,0 +1,3 @@
#!/bin/bash
markdown medley_downloads.md > medley_downloads.html

View File

@@ -0,0 +1,55 @@
<ul>
<li><h1>MEDLEY DOWNLOADS</h1>
<ul>
<li><h2>LINUX (including Windows System for Linux)</h2>
<ul>
<li><h3>Standard Installations (for Debian-based distros)</h3>
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86.64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
<li><h3>Local Installations (for any Linux distro)</h3>
<ul>
<li><h4>Standard Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines</a></p></li>
<li><h4>Windows System for Linux</h4>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-x86_64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86_64 machines</a></p>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines</a></p></li>
</ul></li>
</ul></li>
<li><h2>WINDOWS 10/11 (Single install based on cygwin - Docker install deprecated)</h2>
<p><a href="@@@DOWNLOAD_URL@@@/@@@CYGWIN.INSTALLER@@@">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines</a></p></li>
<li><h2>macOS 11 (Big Sur) and later - for both Intel and Apple Silicon</h2>
<ul>
<li><h3>DMG Installer</h3>
<p>Not available</p></li>
<li><h3>ZIP Installer</h3>
<p><a href="@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip">Release @@@MEDLEY.SHORT.RELEASE.TAG@@@</a></p></li>
</ul></li>
</ul></li>
</ul>

View File

@@ -0,0 +1,49 @@
* # MEDLEY DOWNLOADS
* ## LINUX (including Windows System for Linux)
* ### Standard Installations (for Debian-based distros)
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
* ### Local Installations (for any Linux distro)
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
* ## WINDOWS 10/11 (Single install based on cygwin - Docker install deprecated)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@CYGWIN.INSTALLER@@@)
* ## macOS 11 (Big Sur) and later - for both Intel and Apple Silicon
* ### DMG Installer
Not available
* ### ZIP Installer
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@](@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip)

7
installers/macos/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
tmp
devtmp
pkg/*.pkg
artifacts

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>medley/medley</string>
<key>CFBundleGetInfoString</key>
<string>Medley Interlisp, Copyright 2023 Interlisp.org</string>
<key>CFBundleIconFile</key>
<string>Medley.icns</string>
<key>CFBundleIdentifier</key>
<string>org.interlisp.Medley</string>
<key>CFBundleDocumentTypes</key>
<array>
</array>
<key>CFBundleInfoDictionaryVersion</key>
<string>3.51</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>--VERSION_TAG--</string>
<key>CFBundleSignature</key>
<string>Medley</string>
<key>CFBundleVersion</key>
<string>--VERSION_TAG--</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2023 Interlisp.org</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
</dict>
</plist>

View File

@@ -0,0 +1 @@
APPLMedley

170
installers/macos/build_app.sh Executable file
View File

@@ -0,0 +1,170 @@
#!/bin/bash
###############################################################################
#
# build_app.sh: build app bundle for installing Medley Interlisp on MacOS
#
# 2023-02-23 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
APPNAME=Medley
# 2023-07-19 Temorary selector to allow us to create .zip asset before app/dmg work is finished
INCLUDE_APP="no" # "yes" or "no"
# Make sure we are in the right directory
if [ ! -f ./app/Info.plist ];
then
echo "Can't find ./app/Info.plist file."
echo "Incorrect cwd?"
echo "Should be in medley/installers/macos"
echo "Exiting"
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Setup directories
#
CWD=$(pwd)
RESULTS_DIR=${CWD}/artifacts
APPBUNDLE=${RESULTS_DIR}/${APPNAME}.app
APPBUNDLECONTENTS=${APPBUNDLE}/Contents
APPBUNDLEEXE=${APPBUNDLECONTENTS}/MacOS
APPBUNDLERESOURCES=${APPBUNDLECONTENTS}/Resources
APPBUNDLEICON=${APPBUNDLECONTENTS}/Resources
tmp_dir=${CWD}/tmp
tarball_dir=${tmp_dir}/tarballs
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
then
# First, make sure gh is available and we are logged in to github
if [ -z "$(which gh)" ];
then
echo "Can't find gh"
echo "Exiting."
exit 2
fi
gh auth status 2>&1 | grep --quiet --no-messages "Logged in to github.com"
if [ $? -ne 0 ];
then
echo "Not logged into github."
echo "Exiting."
exit 3
fi
# then clear out the ./tmp directory
rm -rf ${tmp_dir}
mkdir -p ${tmp_dir}
# then download the maiko and medley tarballs
mkdir -p ${tarball_dir}
echo "Fetching maiko and medley release tarballs"
TAG=$(gh release list --repo interlisp/maiko | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/maiko \
--dir ${tarball_dir} \
--pattern "*darwin*.tgz"
TAG=$(gh release list --repo interlisp/medley | head -n 1 | awk "{print \$1 }")
gh release download ${TAG} \
--repo interlisp/medley \
--dir ${tarball_dir} \
--pattern "*-loadups.tgz" \
--pattern "*-runtime.tgz"
gh repo clone interlisp/notecards notecards -- --depth 1
(cd notecards; git archive --format=tgz --output=../notecards.tgz --prefix=notecards/ main)
mv notecards.tgz ${tarball_dir}
rm -rf notecards
fi
# Figure out release tags from tarball names
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-darwin.x86_64.tgz | sed "s/maiko-\(.*\)-darwin.x86_64.tgz/\1/")
popd >/dev/null 2>/dev/null
if [ "${INCLUDE_APP}" = "yes" ]; then
#
# Create bundle dirs
#
rm -rf ${RESULTS_DIR}
mkdir -p ${RESULTS_DIR}
rm -rf ${APPBUNDLE}
mkdir -p ${APPBUNDLE}
mkdir ${APPBUNDLE}/Contents
mkdir ${APPBUNDLE}/Contents/MacOS
mkdir ${APPBUNDLE}/Contents/Resources
#
# Create icons and put in bundle
#
iconset_dir=${tmp_dir}/${APPNAME}.iconset
rm -rf ${iconset_dir}
mkdir -p ${iconset_dir}
image_dir=${CWD}/images
sips -z 16 16 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_16x16@2x.png >/dev/null 2>&1
sips -z 32 32 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32.png >/dev/null 2>&1
sips -z 64 64 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_32x32@2x.png >/dev/null 2>&1
sips -z 128 128 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_128x128@2x.png >/dev/null 2>&1
sips -z 256 256 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_256x256@2x.png >/dev/null 2>&1
sips -z 512 512 ${image_dir}/App_icon1024.png --out ${iconset_dir}/icon_512x512.png >/dev/null 2>&1
cp ${image_dir}/App_icon1024.png ${iconset_dir}/icon_512x512@2x.png
iconutil -c icns -o ${tmp_dir}/${APPNAME}.icns ${iconset_dir}
cp ${tmp_dir}/${APPNAME}.icns ${APPBUNDLEICON}/
rm -r ${iconset_dir}
rm ${tmp_dir}/${APPNAME}.icns
#
# Update and copy in "control" files
#
sed -e "s/--VERSION_TAG--/${medley_release}.${maiko_release}.0/g" \
< app/Info.plist \
> ${APPBUNDLECONTENTS}/Info.plist
cp app/PkgInfo ${APPBUNDLECONTENTS}/
fi #INCLUDE_APP
#
# Untar the maiko and medley releases into the bundle
#
il_dir=${APPBUNDLE}/Contents/MacOS
mkdir -p ${il_dir}
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/maiko-${maiko_release}-darwin.universal.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-runtime.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/medley-${medley_release}-loadups.tgz"
tar -x -z -C ${il_dir} \
-f "${tarball_dir}/notecards.tgz"
#
# Handle run_medley needing separate directories for each arch
#
pushd ${il_dir}/maiko >/dev/null 2>&1
ln -s darwin.universal darwin.aarch64
ln -s darwin.universal darwin.x86_64
popd >/dev/null 2>&1
#
# Add file icon to medley.command
#
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set ${il_dir}/medley/scripts/medley/medley.command ${image_dir}/Command_icon128.png
#
# Also create the zip file of il_dir for distribution
#
pushd ${il_dir} >/dev/null 2>&1
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#macos#" -e "s#@@ARCH@@#universal#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
zip -r -6 -y -q ${RESULTS_DIR}/${filename}.zip .
popd >/dev/null 2>&1
######################################################################################################
######################################################################################################

View File

@@ -0,0 +1,66 @@
#!/bin/bash
###############################################################################
#
# build_artifacts.sh: build the artifacts for installing Medley Interlisp on
# MacOS. Basically just calls build_app.sh and build_dmg.sh.
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
###############################################################################
#
# Figure out what directory this script is being executed from
#
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
#
# cd to the dir we are executing from and call
# build_app.sh and the build_dmg.sh
#
cd ${SCRIPTDIR}
t=""
c=""
if [[ "$1" = "-t" || "$2" = "-t" ]]; then t="-t"; fi
if [[ "$1" = "-c" || "$2" = "-c" ]]; then c="-c"; fi
./build_app.sh "${t}" 2>&1
# 2023-07-20 Not building dmg as yet, just using this to build zip file
# while we finish work around dmg
# ./build_dmg.sh "${c}"
###############################################################################

185
installers/macos/build_dmg.sh Executable file
View File

@@ -0,0 +1,185 @@
#!/bin/bash
###############################################################################
#
# build_dmg.sh: build dmg for installing Medley Interlisp on MacOS
# based on Medley.app built by build_app.sh
#
# 2023-03-03 Frank Halasz
#
# Copyright 2023 by Interlisp.org
#
# Based on code found at:
# http://stackoverflow.com/questions/96882/how-do-i-create-a-nice-looking-dmg-for-mac-os-x-using-command-line-tools
#
###############################################################################
#set -o verbose #echo onset +o verbose #echo off
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
#
# Set Parameters
#
APP_NAME="Medley.app"
VOL_NAME="Medley_Install"
BG_NAME=Install_Message.png
WIN_WIDTH=700
WIN_HEIGHT=850
#
# Set pathnames
#
CWD=$(pwd)
TMP_DIR=${CWD}/tmp
RESULTS_DIR=${CWD}/artifacts
APP_PATH=${RESULTS_DIR}/${APP_NAME}
DMG_PATH=${RESULTS_DIR}/${VOL_NAME}
SRC_DIR=${TMP_DIR}/dmg_src
IMAGES_DIR=${CWD}/images
SCRIPTS_DIR=${CWD}/scripts
#
# Make sure we are in the right directory
#
if [ ! -e ${APP_PATH} ];
then
echo "Can't find the app: ${APP_NAME}."
echo "Incorrect cwd? Should be in medley/installers/macos."
echo "Or build_app.sh not yet run?"
echo "Exiting"
exit 1
fi
#
# Copy over files from build app etc to dmg proto-directory
#
if [ ! "$1" = "-c" ]
then
#
# Cleanup anything leftover from last run
#
rm -rf ${SRC_DIR}
mkdir -p ${SRC_DIR}
#
# Assemble source directory for DMG
#
#ditto ${APP_PATH} ${SRC_DIR}/${APP_NAME}
mv ${APP_PATH} ${SRC_DIR}/${APP_NAME}
SetFile -a B ${SRC_DIR}/${APP_NAME}
ditto ${SCRIPTS_DIR}/medley_add2path ${SRC_DIR}/medley_add2path
ditto ${IMAGES_DIR}/${BG_NAME} ${SRC_DIR}/.background/${BG_NAME}
fi
#
# Create initial dmg image
#
if [ -e "/Volumes/${VOL_NAME}" ];
then
hdiutil detach /Volumes/${VOL_NAME}
fi
rm -f ${DMG_PATH}.temp.dmg
hdiutil create -srcfolder ${SRC_DIR} -volname ${VOL_NAME} -fs HFS+ \
-fsargs "-c c=64,a=16,e=16" -format UDRW ${DMG_PATH}.temp.dmg
device=$(\
hdiutil attach -readwrite -noverify -noautoopen "${DMG_PATH}".temp.dmg \
| egrep '^/dev/' | sed 1q | awk '{print $1}' \
)
#
# cd to the new dmg
#
pushd /Volumes/${VOL_NAME} >/dev/null 2>&1
#
# Add symbolic link for medley script and icon for addpath
#
ln -s Medley.app/Contents/MacOS/medley/scripts/medley/medley.command medley
if [ -z "$(which fileicon)" ];
then
brew install fileicon
fi
fileicon set medley_add2path ${IMAGES_DIR}/A2P_icon128.png
#
# Dress up the appearance using Applescript
#
ROW1=375
ROW2=650
COL1=139
COL2=350
COL3=561
osascript <<EOT
tell application "Finder"
tell disk "${VOL_NAME}"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set old_bounds to bounds of container window
set l to item 1 of old_bounds
set t to item 2 of old_bounds
set r to l + ${WIN_WIDTH}
set b to t + ${WIN_HEIGHT}
set the bounds of container window to {l, t, r, b}
set theViewOptions to the icon view options of container window
set arrangement of theViewOptions to snap to grid
set icon size of theViewOptions to 128
set background picture of theViewOptions to file ".background:${BG_NAME}"
set appHome to path to applications folder from system domain
make new alias file at container window to appHome with properties {name:"Applications"}
set appHome to path to applications folder from user domain
make new alias file at container window to appHome with properties {name:"My Applications"}
set appHome to path to home folder from user domain
make new alias file at container window to appHome with properties {name:"My Home Folder"}
delay 1
set position of item "${APP_NAME}" of container window to {${COL1}, ${ROW1}}
set position of item "medley" of container window to {${COL2}, ${ROW1}}
set position of item "medley_add2path" of container window to {${COL3}, ${ROW1}}
set position of item "Applications" of container window to {${COL1}, ${ROW2}}
set position of item "My Applications" of container window to {${COL2}, ${ROW2}}
set position of item "My Home Folder" of container window to {${COL3}, ${ROW2}}
close
end tell
end tell
EOT
#
# Add icon to dmg
#
fileicon set /Volumes/${VOL_NAME} ${IMAGES_DIR}/Install_icon128.png
#
# return to original dir
#
popd >/dev/null 2>&1
#
# Detach the tmp dmg and convert it to final (compressed, ro) dmg
#
hdiutil detach ${device}
sync
rm -f ${DMG_PATH}.dmg
hdiutil convert "${DMG_PATH}".temp.dmg -format UDZO -imagekey zlib-level=6 -o ${DMG_PATH}.dmg
rm -rf "${DMG_PATH}".temp.dmg
#
# Extract version info from app Info.plist & rename dmg using version
#
sed_script='{/CFBundleVersion/!d;N;s/^.*<string>\(.*\)<\/string>/\1/;s/.0$//;s/\./_/;p;}'
version=$(sed -ne "${sed_script}" ${SRC_DIR}/${APP_NAME}/Contents/Info.plist)
DMG_NAME="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e 's#@@PLATFORM@@#macos#' -e 's#@@ARCH@@#$universal#' -e 's#@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@#${version}#' )"
mv ${DMG_PATH}.dmg ${RESULTS_DIR}/${DMG_NAME}.dmg
#
# Done
#
echo "DMG build completed."
###############################################################################
###############################################################################

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="A2P_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="A2P_icon128.png"
inkscape:export-xdpi="6.1440001"
inkscape:export-ydpi="6.1440001"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="946.01031"
y="1500.8351"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">add2path</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5e6c4"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="864.81227"
inkscape:cy="918.92566"
inkscape:window-width="1752"
inkscape:window-height="1205"
inkscape:window-x="1508"
inkscape:window-y="107"
inkscape:window-maximized="0"
inkscape:current-layer="svg2704"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,209 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
preserveAspectRatio="xMidYMid meet"
width="2000"
height="2000"
viewBox="0 0 2000 2000"
version="1.1"
id="svg2704"
sodipodi:docname="App_icon.svg"
inkscape:version="1.2 (dc2aeda, 2022-05-15)"
inkscape:export-filename="App_icon512.png"
inkscape:export-xdpi="24.576"
inkscape:export-ydpi="24.576"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<g
id="g1126"
transform="translate(-23.756927,163.29152)">
<text
x="597.27948"
y="997.78094"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text2702"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:420px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan25093">Medley</tspan></text>
<use
xlink:href="#window-icon"
x="1066.795"
y="218.396"
width="372"
height="300"
id="use2674"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="865.021"
y="89.851997"
width="372"
height="300"
id="use2676"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="629.06"
y="50.366001"
width="372"
height="300"
id="use2678"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="396.42899"
y="106.215"
width="372"
height="300"
id="use2680"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="204.11301"
y="248.522"
width="372"
height="300"
id="use2682"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="82.689003"
y="454.659"
width="372"
height="300"
id="use2684"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="51.462002"
y="691.854"
width="372"
height="300"
id="use2686"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="115.396"
y="922.39398"
width="372"
height="300"
id="use2688"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="264.327"
y="1109.627"
width="372"
height="300"
id="use2690"
transform="translate(147.4565)" />
<use
xlink:href="#window-icon"
x="474.577"
y="1223.783"
width="372"
height="300"
id="use2692"
transform="translate(147.4565)" />
<text
xml:space="preserve"
style="font-style:italic;font-size:766.666px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:7.8"
x="1003.8107"
y="1163.4888"
id="text288"><tspan
sodipodi:role="line"
id="tspan286"
x="1003.8107"
y="1163.4888" /></text>
<text
x="1263.5646"
y="1466.0958"
font-family="'Times New Roman', Times, serif"
font-weight="bold"
font-size="420px"
id="text292"
style="font-weight:bold;font-size:420px;font-family:'Times New Roman', Times, serif"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:233.333px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
id="tspan290">app</tspan></text>
</g>
<defs
id="defs2708">
<rect
x="1144.3981"
y="797.67157"
width="915.91937"
height="555.16339"
id="rect44588" />
</defs>
<sodipodi:namedview
id="namedview2706"
pagecolor="#f5eddc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.49895222"
inkscape:cx="760.59387"
inkscape:cy="1017.1315"
inkscape:window-width="2286"
inkscape:window-height="1205"
inkscape:window-x="45"
inkscape:window-y="53"
inkscape:window-maximized="0"
inkscape:current-layer="g1126"
fit-margin-top="100"
fit-margin-left="100"
fit-margin-right="100"
fit-margin-bottom="100"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<symbol
id="window-icon"
viewBox="0 0 372 300"
transform="translate(-98.918502,49.633999)">
<rect
x="10"
y="10"
width="352"
height="280"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="rect2665" />
<line
x1="10"
y1="30"
x2="362"
y2="30"
style="fill:#ffffff;stroke:#000000;stroke-width:20"
id="line2667" />
</symbol>
<circle
cx="551.08148"
cy="699.63397"
r="20"
style="display:none;fill:#ffffff;stroke:#ff0000;stroke-width:5"
id="circle2696" />
<circle
cx="551.08148"
cy="699.63397"
r="600"
style="display:none;fill:none;stroke:#0000ff;stroke-width:5"
id="circle2698" />
<rect
x="-98.918503"
y="49.633999"
width="2922"
height="1600"
style="display:none;fill:none;stroke:#00ff00;stroke-width:10"
id="rect2700" />
<text
xml:space="preserve"
id="text44586"
style="font-size:40px;line-height:1.25;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';white-space:pre;shape-inside:url(#rect44588);display:inline"
transform="translate(-98.918502,49.633999)" />
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

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