If both exist, it brings up 2 Sedit windows.
The relative version numbers are currently mapped to Medley absolute
version numbers. It would be nice to extend VERSIONDEFS with a function
(say GEDV) that maps the relative version numbers into the definitions
on git-file versions, by looking at the history. So (GEDV 'FOO 'RECORD
-3) would find the file for FOO's record declaration from WHEREIS, and
get the definition from the version 3 commits back. But GITFNS doesn't
currently have a primitive for fetching and interpreting history.
Most of the --option uses were incorrectly converted to an en-dash instead of two hyphens when making loadup.1 from loadup.md.
The en-dash didn't display correctly in the shell, typically as u with ^.
Edited loadup.md, and regenerated the other changed files using publish.sh
* New starter.sysout contains the UTF-8 external format
* Init.sysout is created with the UTF-8 external format
* Files with non-ascii characters and some other files converted to UTF-8, for basic testing
* Environment arg of WITH-READER-ENVIRONMENT can be a stream
* Compiler functions now respect the external format as copied from the source file
* Colon is the package delimiter in DEFINE-FILE-INFO expressions
* UNICODE file is deprecated in favor of UNICODE-FORMATS and UNICODE-TABLES
* Remake files to convert the 247Q package-delimiter in DEFINE-FILE-INFO expressions to 30Q
* Remake TRANSOR after removing HIST command
* Remake TRANSOR-LOADTRAN after changing the filecoms variable
* MCCS translations for strings passed to/from UNIX-GETENV and other system interfaces.
* INTERPRET.REM.CM assumes system external format is UTF-8. ISO8859/1 external format is defined in MCCS as a dummy for UTF-8 until UNICODE is loaded
* Add string translation interface to EXTERNALFORMAT datatype,
* Set the external format of the default reader environment to *DEFAULT-EXTERNALFORMAT* = :MCCS
* Add external format :THROUGH16 for 16 bit codes, used by linebuffer
* TEDIT adds TEDIT.PARAGRAPH.BOUNDARIES, fixed TEDIT.MAP.OBJECTS, a few other bugs
* Addresses the page layout menu #2447 and #2457
* TEDIT-STREAM add open method
* Ctrl-p inserts page number object
* Restore page number pretext and posttext in menu
evaluating a variable bound to NOBIND causes errors when run interpreted (doesn't when run compiled). It's not clear why this design decision was made, but in this case compiling MASTERSCOPE was hung up trying to run a subfuncion involved in macroexpansion after LOAD(MASTERSCOPE).
Revise and update the repo's README to address issue #2449 by adding an
introduction to the project; referring to the glossary for
system-specific terms; replacing section Running Medley Interlisp with a
reference to the Medley primer; and removing the obsolete link "docs --
Documentation files".
* Remove code for archaic \FONTFILENAME conventions, MEDLEYFONTFORMAT now calls the generic function.
* Add OCTALSTRING to APRINT so FONT can use it. Eventually remove it from PUP
The file lispusers/BLOCKS-HKB is a duplicate of lispusers/h/H-BLOCKS
except with differing end-of-line convention. This PR removes
BLOCKS-HKB and BLOCKS-HKB.LCOM
Closes#2079
* Fixed dumping of the running page header that was from the HEADER option of TEXTTOIMAGESTREAM.
* Restored (CONSTANT ...) around a TIMES call (that *really* ought to optimize at compilation).
* Separate interface for imagefile creation from the send-to-printer interface
* SEND.FILE.TO.PRINTER recognizes :DEFAULTPRINTER
* Various changes to address #2414
* Move BITMAP properties from PRINTERTYPES to PRINTFILETYPES.
* Fix ShellOpen, add UNIX-TMP-FILE-NAME
* Include COERCEFONTSPEC changes in anticipation of HTML streams
* PDFSTREAM compatible with new imagefile architecture plus able to convert non-local Postscript streams
* SKETCH compatible with new imagefile/printing architecture
* TEDIT compatible with new printing architecture
* Tedit files are of type TEDIT, not TEXT, new interface function TEDIT.TO.IMAGEFILE
* ATTACHEDWINDOW: DOATTACHEDWINDOWCOM allows menu to have a form to EVAL, like the background menu
* WINDOW: fix menus for new hardcopy architecture
* Remove FLUSHFONTSINCORE--FLUSHFONTCACHE is more general
* LOAD character names as suggested in PR #2398
* HARDCOPYW respects file extension
* VIEWER as default printinghost
* SLASHIT interprets '.
* MCCS to UTF8 conversion on printer name
* Deal with {LPT}.LOCAL and upper casing
* @ LPT printers work with exact upper/lower matching
* Using NSPRINT functions to recognize fax
* Let "UNIX" be the name of the default printer of type UNIX
* Improved matching for TEDIT-ABBREVS
* Make CHARACTERNAMES available at runtime (SOFT-HYPHEN etc)
* TEDIT-ABBREV: Better parsing strategy
* Added backslash markup
* Document new abbreviation conventions
* Glitch
* Responded to @MattHeffron
* Include backslash in promptwindow message
* Updated edit date
This should complete the changes for the MEDLEYDISPLAYFONTFORMAT.
The building a composite font from BDF files implemented.
Resolves#2313Resolves#2365
This should make #2364 possible.
(I created a size 20 Noto Sans _composite_ font from the same Google
fonts as used by @hjellinek's HTMLSTREAM.)
**NOTE:** This uses the function `IL:CLSMARTEN` which is from the file `CLSMARTARGS`.
The file `CLSMARTARGS` isn't loaded until almost immediately **after** `XCL-EXTRAS`.
There are no uses of `DEFINE-RECORD` in making the `lisp.sysout` loadup, so this _ought_ to be safe, but this must be verified!
Checking for charset *known* to be EQ to the SLUG charset, didn't verify that the font *had* a SLUG charset, so was comparing to NIL, which excluded *all* unloaded charsets.
* Upgrade Sketch to new font interfaces
* Tedit changes so that TEDIT.GETSYNTAX conforms to documentation
* Remove RUBOUT interrupt
* TEDIT-FNKEYS: uses keywords for action names
* LLKEY: Change keybindings for DELETE and LOOKS
* SEDIT-COMMANDS: Shift-DELELETE is wordelete.backwards
* Sketch implements arrow keys
I'm not sure what I did wrong with PR #2396 but it didn't revert
lispusers/BACKGROUND-YIELD(.LCOM).
I did what I thought was the same process, but it seems to have picked
up the right files this time.
Removed WRITE-BDF-TO-DISPLAYFONT-FILE (i.e., no STRIKE format files).
No multiple-values returned. Instead, use LIST when appropriate.
BDF-TO-CHARSETINFO is now IDEMPOTENT w.r.t. the GLYPHS.
Move resolution and defaulting of FAMILY, FACE, SIZE, ROTATION, DEVICE from WRITE-BDF-TO-MEDLEYDISPLAYFONT-FILE to BDF-TO-FONTDESCRIPTOR.
Keep the MCCS chars present BITMAP in the BDF-FONT structure, instead of needing to schlepping it around separately.
Abstracted testing/setting the MCCS chars present bits to CHAR-PRESENT-BIT (mimicking BITMAPBIT).
Added COUNT-MCHARS to know how many MCCS chars are marked in the BITMAP as present.
READ-BDF now handles when UTOMCODE? returns multiple mappings, and creates the appropriate duplicate GLYPHS with different MCCS char codes.
READ-GLYPH doesn't create an empty BITMAP for spacing glyphs.
Use font code changes:
Set (CHARSETINFO CHARSETNO).
Set (FONTDESCRIPTOR FONTSLUGWIDTH).
* loadup scripts: set MEDLEY-INIT-VARS to NOBIND before loading MEDLEYDIR
so that INITVARS in MEDLEYDIR replaces any previous settings in the loadup-sysout
* FONT: add cache for FONTSAVAILABLE, add FLUSHFONTCACHE. See FONTCODECHANGES.tedit
* Make FONTEXISTS and FONTSAVAILABLE consistent
* Add BACKGROUND-YIELD to Lisp.sysout (and thus to FULL.SYSOUT) so you don't need to load it in INITs.
* remove CAUSE-INTERRUPT subr call; doesn't add value
* Verbose mode (READ-BDF) was implemented incorrectly - fixed
* Cleanup DEFPACKAGE in source file using :IMPORT-FROM, and fewer imports.
* Various renaming for consistency with XCCS -> MCCS changes.
* Use IL:FONTSPEC record instead of using FIRST, SECOND, etc.
* Fix the parsing of IL:FONTSPEC to use COMPRESSED instead of incorrect CONDENSED.
* Zero-width "image" with zero-width "escapement" GLYPHS now get put into NOMAPPINGCHARSET.
* Add (FILES (SYSLOAD) SYSEDIT) under existing (DECLARE: EVAL@COMPILE DONTCOPY ...)
Various renaming for consistency with XCCS -> MCCS changes.
Use IL:FONTSPEC record instead of using FIRST, SECOND, etc.
Fix the parsing of IL:FONTSPEC to use COMPRESSED instead of incorrect CONDENSED.
Zero-width "image" with zero-width "escapement" GLYPHS get put into NOMAPPINGCHARSET.
Add (FILES (SYSLOAD) SYSEDIT) under existing (DECLARE: EVAL@COMPILE DONTCOPY ...)
* Add a CLOSEFN to KINETIC window that forces the kinetic to stop and exit when closew is called.
* Reset the window close flag after window is closed so that can repeatedly close and open the KINETICWINDOW.
* Add :IMPORT-FROM option to DEFPACKAGE
* Fix a couple of variable reference typos.
Change the FILETYPE to be :FAKE-COMPILE-FILE (per #2336)
* Fix error of missing arg in call to IMPORT.
prc status is C if changes requested, prc comparison runs in its own process, initial changes for gwc to treat the clone as UNIX, not DSK, so branch-switching doesn't cause files from other branches to pile up.
* COMPAREDIRECTORIES: don't fail on empty directory
* Bug in slashit
* gwc copies to UNIX--doesn't track Medley version numbers when it copies to the clone
* Coerce MCCS filename strings to UTF8 filename strings in file-name system calls, coerce system filenames back to MCCS codes
* Add UNICODE-TABLES so MTOUTF8STRING gets defined in right place in the loadup sequence
* ADIR: Bug fix: UNPACKFILENAME sets FATSTRINGP
* fix virtualkeyboard bug in code assignment
* Unicode canonicalizes non-SMALLP unicodes
* Estimates suggested width for unformatted documents from the width of the first 20 lines
* Recycled regions satisfy minimum and maximum size specifications
* Fine tuning: suggests recycled no bigger than 90% of screen, no prompt message if old region reused
* A revision to the font, Unicode, Tedit, and other modules to implement the MCCS character coding as the standard for internal text strings. MCCS is a variant of XCCS with arrows switched with circumflex/underscore and $ switched with currency, and allows for additional code assignments over time. :MCCS replaces :XCCS as the default external format, especially for source files. The file XCCS is removed in favor of the file MCCS, which includes the XCCS external format for backward compatibility.
* This includes a single Medley-font formatted font file for each of the family/size/face display fonts. The glyph assignments correspond to the MCCS character encoding (except for fonts with idiosyncratic encodings--Hippo, Symbol). All charsets from legacy font files are included in each file, and the character sets and glyphs in each file have also been extended by offline coercion from related families (e.g. Glyphs not in legacy Terminal are taken from legacy Modern). There should be fewer black boxes, and character-display shouldn't change when you switch fonts.
* The Unicode mapping tables have been redefined to set up correspondences between Unicode and MCCS, not XCCS. Separate XCCS to/from MCCS mapping functions are provided in the file MCCS; they are no longer included in INTERPRESS.
* TEDIT converts characters in legacy fonts to their new MCCS codes as it reads formatted files, marks the file as MCCS compatible and preserves the new codes on writing.
* Default keyboard assignments produce the MCCS uparrow and leftarrow for shift-6 and shift-hyphen, use Function-6 for circumflex and Function-10 for underscore.
See documentation in FONTCODECHANGES.TEDIT MCCS.TEDIT MEDLEYFONTFORMAT.TEDIT in docs/internal, and library/UNICODE.TEDIT.
* EDITINTERFACE--ED searches for symbols, no error when declining a loadfns
* Symbol by type menu pops up when the symbol with different package qualifiers have different types
* CLIPBOARD passes file to xclip (windows)
* More careful to specify {UNIX} as the host on the Medley side
* Make sure the process stream is closed in the xclip case
* This time using ShellCommand
* Use DSK and UNIX-FILE-NAME
* Added .txt to the tmp file
* Move PRESS and PRESSFROMNS to obsolete
* Remove PRESS from the loadup
Also moves MULTI-ALIST forward to the beginning of LOADUP-LISP
* BACKGROUNDIMAGES depended on PRESSFILEP, now moved here from PRESS
Update project contributor guidelines
Replace the documentation link to point to the Documentation section of the project site instead of the discontinued Wiki.
Under Working with Medley, advise opening an issue to report errors and unexpected behaviors.
Under Did you write a patch that fixes a bug?, remove the link to Maiko PRs as the project has more repos a contributor may want to open PRs for.
Signed-off-by: Paolo Amoroso <paolo.amoroso@gmail.com>
* Column major order to match XCCS and Unicode tables
* Compile with exports
* HLDISPLAY added a title argument to EDITBM
* EDITFONT puts the character and font in the title of the EDITBM window
* Put character set in edit window title
* Modernize the EDITBM window
so that it can be moved and resized like other modern windows
* Move lispusers/FASTEDITBM to obsolete/lispusers
It isn't used, doesn't even have an LCOM. But maybe it would be worth resurrecting at some time in the future.
* WIP in changing loadups to tagged nomeclature rather that branch and ability to delete tagged branches as well as thin them.
* In loadup and medley scripts, changed the --branch (-br) command line argument to --tag (-tg). Correspondingly changed the MEDLEYDIR/loadups/branches directory to be MEDLEYDIR/loadups/tagged. Separately, added a + parameter to the --thinw and --thinl command line arguments which causes ALL files to be deleted, not just the versioned files. Added a --thin command line argument that is equivalent to --thinw followed by --thinl. Updated the man page to reflect all these changes.
* Updated medley script man page to reflect the new tag nomenclature instead of branch nomenclature.
* Fix issue#2063 - typo in medley man page
* 1) In loadup script made --help (-h) be a synomym of --man (-z). 2) In both loadup and medley scripts added an optional parameter (+) to the --man (z) command line argument that when specified will display the man page without paging - i.e., sets the pager to cat.
* Fix Issue#2251 LOADUPSDIRECTORIES settings by the MEDLEYDIR fn now takes into account tagged loadups
CHARSET.DECODE, CHARSET.ENCODE added. CHARACTER.ENCODE moved here from TEDIT-FNKEYS. Some character names moved here from a few other files.
This anticipates the ability to use names for the charset argument to FONTCREATE. IOCHAR needed to move a little earlier so that STRING.EQUAL/UPPERCASEARRAY is available before FONTCREATE created the guaranteed displayfont.
This PR contains a large number of changes in support of the implementation of the Medley Dsplay Fon file format.
The changes are documented in the docs/internal/FONTCHANGES.TEDIT file.
For loadup --aux reporting of errors during building whereis.hash:
Just ignore pathnames that are just a directory.
For other errors, report the condition that caused the error, instead of just generic Warning message
* Update lispusers/INSPECTCODE-TEDIT for changes to Tedit.
This could be considered to be incorporated directly into sources/INSPECT.
(This was changed from TCOMPL (LCOM) to COMPILE-FILE (DFASL) because it just wouldn't compile correctly otherwise, for me.)
---------
Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
* Inspectcode scrolls, has the correct window title
* Add promptwindo so M-f search strings are locally visible
* Fix FILETYPE for LLDISPLAY
* MEDLEYFONTFORMAT More efficient store and read of numeric Interlisp arrays
* Fixed#2185 and #2173.
* TEDIT-MENU TEDIT-PAGE Fix a few more bugs
* TEDIT-STRESS--cleanup and harden a bit for future use
* TEDIT-FILE: Allow putting of an APPEND file. There is still a guard against putting a readonly file--use COPYFILE instead. Provide message if won't put
* Get proper insert caret looks before EOL
All display fontfiles are now in the single fonts/displayfonts/ directory. The subdirectories adobe, big, other, altofonts have been deleted, and are no longer on DISPLAYFONTDIRECTORIES. The few additional displayfonts from the envos repo are included.
This is the result of:
Removing all byte-identical files, leaving a representative of each such equivalence class in displayfonts/
Removing all files in displayfonts that are renamed byte-identical copies of other files in displayfonts/ (e.g. helvetica1-MRR-c0.displayfont is a fake-renamed copy of helvetica4-MRR-c0.displayfont). These are to be constructed on the fly by the font substitution mechanism.
Roughly comparing the bitmaps of non-identical files with the same font family/size/face/charset in the different subdirectories, and making displayfonts/ have the one that looks best (e.g. most glyphs, unless garbage), giving priority to ones that are already in displayfonts/.
Moving the remaining odd-ball files from the subdirectories to displayfonts/ (e.g. gates, music).
Copying from Envos the 30 or so files that are not byte-identical copies of files already in displayfonts/.
* Add to loadup and medley scripts a --branch argument whereby which loadup outputs are stored in MEDLEYDIR/loadups/branches/BRANCH, where BRANCH is the name of the currently active git branch of MEDLEYDIR (for loadup) or the name of a BRANCH whereby which a loadup had been run with the --branch option (for medley). Man pages updated accordingly.
* Removed --git-branch synonym for --branch from both medley and loadup scripts. Added optional BRANCH argument to --branch in loadup script. If BRANCH is specified iot is used as the (pseudo)branch name instead of the current active git branch of MEDLEYDIR. If BRANCH is "-", the current git branch name is used.
* When doing loadups, a file called gitinfo is created in the LOADUP_OUTDIR that contains the git commit, git branch and git status of MEDLEYDIR at the time of the loadup. Branch names in loadup and medley scripts now contain only alphanumerics, dahes, underscores, periods. Any other character is coerced to underscore. The branch name is now included in the window title.
* Incorporate changes from PR#2208: Use the loadup step script names as the --id string.
* Add loadups/gitinfo and loadups/branches to .gitignore
Fix editing of button...correctly wait for edit to complete before updating the button itself.
Add (FIND-BUTTON label) function.
Minor updates to documentation.
* Tedit window splitting is more robust, interface through menu items instead of split-region on the right of the window. See TEDIT-RELEASENOTES.TEDIT
* Tedit recognizes color as specfied by DSPCOLOR, passes it to hardcopy
* N-way buttons default to unsorted--new items go at the end. Otherwise keyboard shortcut meta-3 for the 3rd font might pick a different one depending on what went before.
* USER.CM can be specified as an opening property for Bravo conversion.
* Adresses/fixes Tedit issues #2173#2172#2171#2142#2105#2062#2059#1972 (maybe some others).
* Changes to rationalize internal interfaces and simplify code, and particularly to eliminate internal dependencies on the STREAMHINT Xpointer backlink. STREAMHINT is only accessed if a client has grabbed the TEXTOBJ and passes it back in. The stream and window are the safe/reliable way of referencing the Tedit state (and the window and stream know about each other, and know about the TEXTOBJ only through the stream).
* Many changes to TEDIT-STRESS, including new defaults CHECKARRAYS NIL, NSYSOUTS 0, ARRAYBLOCKCHECKING T
* lispusers/EQUATIONS: image object no longer saves state on the stream, not the window (which may not be there).
* Rename CHARNAME to be CHARCODE.ENCODE, parallel to CHARCODE.DECODE
Updated Build/Push Medley Release workflow to add wsl1-specific assets
to the releases - based on the new wsl1-specific maiko builds.
Renamed the current wsl release assets to be wsl2-speciic assets.
There are now 20 assets in a release build.
Add a --vnc flag to loadup script, used to tell loadup scripts to run
Medley with the --vnc option.
Used primarily on WSL1 and WSL2 systems where loadup defaults to X
Windows. But can be used on any Linux platform that uses Xvnc.
Not relevant on MacOS and Cygwin.
Man page updated accordingly.
* Fix POSTSCRIPTSTREAM to accept SMALLP values 0 and 1 as COLOR.
(Don't require them to be FLOATP.)
* Changed handling when color values are not directly interpretable without other context (e.g., as an index into a color map).
POSTSCRIPTSTREAM should behave similar to INTERPRESS and just ignore a BRUSHCOLOR if it is a SMALLP that's neither 0 nor 1, and use the current DSPCOLOR of the stream.
If someone wants a specific color, or grayscale, they can use the color descriptions as documented in POSTSCRIPTSTREAM.TEDIT.
* Update documentation to better describe allowed COLOR specification.
* Fix Issue #2155 (loadup -f -b -x fails can't find full.sysout). Reordered loadup so that the sysouts are copied to loadups before loadup-aux and loadup-db are run, and that the product of loadup-aux are copied to loadups before loadup-db is run -- all to make sure that the right prerequisites are available in loadups when needed. Also forced a run of loadup-aux if full.sysout is newer than exports.all when -db is specified.
* Fix Issue 2148 - loadups fail on WSL1 with Xvnc server error. Root cause of 2148 is that certain Medley sessions in loadups run very quickly - less that a second or 2. This causes the medley script to improperly detect an Xvnc server error. Fixed by adding a cli flag --automation that forces the medley script to skip the check for Xvnc server errors. Changed loadup script to call medley with this flag set. Also add a cl flag to loadup --forcevnc that forces loadup to use vnc even on WSL2. This is intended for testing purposes only.
* Collect TALK files into lispusers/talk/
renamed with hyphen convention. Also pull over TALKGAP files that were previous obsolete, and remove them from obsolete/lispusers
* Replace TALK.TEDIT--file got smashed
* TALK.TEDIT now comments the current situation
Fix Issue #2155 (loadup -f -b -x fails can't find full.sysout).
Reordered loadup so that the sysouts are copied to loadups before loadup-aux and loadup-db are run, and that the product of loadup-aux are copied to loadups before loadup-db is run -- all to make sure that the right prerequisites are available in loadups when needed.
Also forced a run of loadup-aux if full.sysout is newer than exports.all when -db is specified.
Here is what this PR does:
Fix Issue 2139: (MAKE-INDEX-HTMLS) was not handling pseudohosts correctly and an errant LI pseudohost was causing MAKE-INDEX-HTMLS to terminate early. Adjusted MAKE-INDEX-HTML so it uses psuedohosts only for the top level directory and everything further down in the tree uses the truenames relative to the top-level pseudohost, Results in a MAKE-INDEX-HTMLS run that works in the presence of random pseudohosts and in a collection of index.html files without difficult to understand and out of context references to pseudohosts.
Remove loadups/build directory from all HCFILES runs (on desktop and via github actions)
Added maiko source code and removed maiko lde executables from HCFILES outputs for github actions - thus adding maiko code and removing maiki executables @ files.interlisp.org.
Fixed scripts/clean_hcfiles.sh so that it actually cleans off all of the index.html files - was missing some.
.github/workflow directory was being left out of HCFILES. Put it back it.
Expanded the (PSEUDOHOSTS) function to have an argument, which is a list of replacement pseudohost pair to replace the current list of pseudohosts. Still returns the current list of pseudohosts as before. Designed to be used cleanly with RESETSAVE.
Three changes to loadup scripts:
1) dribble files are now copied from the workdir into loadups if loadup completes successfully,
2) if the lock preventing simultaneous runs is already set when loadup starts, it now asks the user if they want to override the lock or to exit (previously it just exited),
3) there is now a --override flag that will automatically override the lock without asking the user.
Man page updated accordingly.
Fix Issue#2151
MEDLEY-INIT-VARS now resets the LI pseudohost whenever it sets/resets the value of LOGINHOST/DIR - providing PSEUDOHOSTS is loaded and LI pseudohost already exists.
* I put in support for standard color specifications. I think this is pretty close.
BLTSHADE, FILLCIRCLE, and FILLPOLYGON with the TEXTURE as TEXTUREP or BITMAPP convert to a gray scale as a function of the number of bits set.
It'll take a bunch more refreshing of PostScript knowledge to figure out how to do these with real colors, and actual pixel-by-pixel textures.
* EXAMINEDEFS uses the Tedit atom-bound table for word selection
* REGIONMANAGER gives client better control over region recovered
* TEDIT-PF-SEE: Meta-T defaults to showing the definition in the curren…
* REGIONMANAGER and GITFNS documentation update
* Better handling of a glyph with ENCODING of -1.
I treat it as the _slug_ glyph, instead of the _default_ of a solid block.
* Handle scrambled bitmaps issue #2109.
Glyphs with zero width bitmap *and* zero advance (_escapement_) caused miscalculated glyph offsets into the CHARSETINFO bitmap.
* Allow and ignore COMMENT lines preceding the STARTFONT line.
Add error checking for extracting font FAMILY, SIZE, FACE, etc. from the BDF-FONT object.
Add recommendation to documentation to write the DISPLAYFONT files to a directory separate from the system's IL:DISPLAYFONTDIRECTORIES locations.
* Account for glyphs with a negative initial offset.
* Add VERBOSE optional parameter to READ-BDF to report font internal FAMILY, FACE, etc.
Change &OPTIONAL parameters of WRITE-BDF-TO-DISPLAYFONT-FILES to &KEY to simplify calling. (No need to remember the order.)
Add CHAR-SETS and WRITE-UNMAPPED parameters to WRITE-BDF-TO-DISPLAYFONT-FILES to allow some level of control of which DISPLAYFONT files are written.
Updated documentation, and added warning note about font's FAMILY containing any digits.
This PR is an extensive revamp of the loadup scripts including the following changes:
New omnibus script scripts/loadup which is meant to be the single interface to the loadup system. The man page for this script can be found here: https://online.interlisp.org/downloads/man_loadup.html
The new loadup script allows you to restart the loadup process from any particular stage - init, mid, lisp, full, etc. For example, you can start the loadup from an existing init-mid.sysout and have it run thru creating the full.sysout. The call for this would be: ./scripts/loadup --target full --start mid. (See man page for all options to the loadup script as well as examples of their use.)
In order to facilitate this target/start feature, the loadup workdir has been moved to a single location per MEDLEYDIR, specifically to MEDLEDIR/loadups/build. (Previously, it was different for every invocation in /tmp/loadups-$$)
When restarting the loadup from, say, lisp.sysout, the script will look for the lisp.sysout to start from first in MEDLEYDIR/loadups and then in MEDLEYDIR/loadups/build. If the starting sysout is found in loadups, it will be copied (non-versioned) into the workdir before doing the loadup, overwriting whatever is already there.
There is now a lock (MEDLEYDIR/loadups/build/lock) that prevents concurrent loadups from running (and very occassionally needs to be manually removed).
At successful completion of a loadup run, the created .sysouts and other files are moved into the loadups directory as before (unless the --nocopy option is specified). BUT the build files - including the dribble files - are left in the working directory (i.e., in loadups/build)
The loadup script now supersedes the former loadup-all.sh, loadup-full.sh and loadup-db.sh scripts. But I have left in their place scripts that call the new loadup script with the right options. loadup-all.sh is now just a link to the single loadup script, who's options are (hopefully) a superset of loadup-all.sh.
All of the worker scripts (e.g., loadup-full-from-lisp.sh) have been updated to use better mechanisms to catch and report errors, including the new (LOGOUT T EXITCODE) feature. The main script has been updated to better catch errors in these worker scripts when they do happen.
You can now specify a MAIKODIR for the loadup, either using the MAIKODIR env variable or thru the --maikodir command line option.
All of the loadup scripts have been moved down one level into scripts/loadups. But there are links from the scripts/ directory into the scripts/loadups directory for all of the top-level legacy scripts - loadup-all.sh, loadup-db.sh, loadup-full.sh so that you do not have to change your own scripts unless you need to use some of the new features. More importantly, none of the github workflows need to change right now.
The SYSOUTCOMMITS mechanism had to be changed since there is no guarantee that e.g., lisp.sysout and full.sysout are built on the same commit. So (ASSOC 'MEDLEY SYSOUTCOMMITS) now returns an assoc list of sysouts, e.g., ((INIT "aaa")(LISP "bbb")(FULL "ccc")(APPS "ddd")), showing the commits for the various layers of the loadup.
The new loadup scheme allows different sysouts to be created from different commits, so there is an issue with RDSYS (and RDSYS.LCOM) being out of sync with one or more of the sysout in loadups. RDSYS(.LCOM) are copied into library when ever a loadup of the Init stage completes successfully (unless the -nocopy option is specified). The only way to solve this issue when it arises is to do a complete loadup from starter.sysout to full.sysout (or apps.sysout) to ensure evrything is built on the same commit.
* Now can create the FONTDESCRIPTOR with all non-empty charsets.
Can write DISPLAYFONTFILE format ("STRIKE") files for the charsets.
Add ability to use mapping of Unicode charcode to unknown XCCS charcode in the private space.
* Create 2nd FONTDESCRIPTOR for unmapped Unicode to XCCS charcodes, organized by charset-like (8-bit splitting of charcode) of Unicode encoding value.
* Added option to create and write files for RAW FONTDESCRIPTOR which does NO mapping from Unicode to XCCS.
All glyphs are at the Unicode encoding positions.
Any glyphs with Unicode encoding > xFFFF are not included in the FONTDESCRIPTOR or DISPLAYFONT files.
* Fix a bug where I assumed glyph names couldn't be parsed as a number; and a little cleanup.
The linux otf2bdf utility uses the hex of encoding value as the name, which can appear to be a FLOAT and overflow (i.e., 3D39).
Similar parsing problem fixed and corrected an error message.
* Initial documentation file written.
1961 - RDSYS incomplete path for copying
2061 - delay starting making loadups due to "expensive" operation just to check if connected dir is inside of a git repo
* Distinguish public TEDIT.NTHCHARCODE... from private \TEDIT.NTHCHARCODE...
* Fix screen-update bug: deleting the character before the first character in a window
* glitch in region code
* Implement new key binding architecture for Tedit actions, to make mappings more user-accessible. Includes new Buttons item on Tedit menu. See TEDIT-RELEASENOTES
* Prompts for Tedit initial-window region based on document properties
* More flexible Tedit abbreviations
* Size + or - in Tedit character looks go to next available
* Other bug fixes and code adjustments.
* Fix Issue 2072: update do_hcfiles.sh to use new rem.cm argument to medley script. Also update medley script to print out the REM.CM file used (if any).
* Update buildReleaseIncDocker.yml to account for the change on interlisp/online repo from 'master' to 'main' as primary branch
* Do compile.sh after update to medley-run.sh to add REM.CM to printout when using the medley command.
DLIONFNKEYS created button-images on the screen corresponding to some of
the Dandelion edit buttons for Tedit. EDITKEYS is a newer and better
version of the same functionality, and even that will be replaced by a new internal Tedit keyaction architecture.
Currently, (CHARCODE 1) produces 49, just like (CHARCODE a) produces 97.
That's because CHARCODE.DECODE interprets a single character (that is
not also defined as a cHARACTERNAME) input as exactly that character,
and gets its character code.
But a character name in the charset,charnum format is treated in a
different way. If either part of the name is a number, it is interpreted
as an octal number, to make it easier to match against the XCCS
specifications. So (CHARCODE Meta,1) does not map to the position of
digit 1 in the Meta (currently 1) character set (= 256+49=305), it maps
to 256+1=257. In order to get 305, you have to specify Meta,61 (where 61
is the octal equivalent of 49).
That's rather opaque, and I found that TEDITKEY had a workaround based
on the obscure fact that CHARCODE.DECODE adds 128 for each # it sees in
the beginning of a character name. So ##1 adds 2*128 to 49 to get 305,
corresponding to digit 1 in the Meta character set. But that depends on
the fact that Meta is currently defined as charset 1, it won't work when
we move Meta up to the Unicode/XCCS undefined region of the code space.
This PR adds (Zero 48) (One 49)...(Nine 57) to the initial value of
CHARACTERNAMES in LLREAD, so that 305 for example can be specified as
Meta,One. This is more obvious than Meta,61 and will remain valid when
Meta is moved, unlike the ## hack..
Lafite is not in the fuller ms database, so I missed these references in
TEDIT-INDENT.
But note also: there are 2 definitions of the function
\GV.PARSERECIPIENTS1, one on lafite/TEDIT-PRIVATEDL and one on
internal/MAILCLIENT.
The one on TEDIT-PRIVATEDL references the variable ADDRESSPARSERRDTBL,
which is not initialized.
Selection highlighting should be correct if line contains a preceding
diacritic.
Find from expanded menu should work.
Screen and selection should not be garbled after substitute.
I have not yet replicated the break-on-put also reported in #2055
* Paren error when selection looks set to INVERTED
* Add SET, SHADE, and SHADEHEIGHT properties to TEDIT.SELPROP
* Add QUIET as optional last argument to TEDIT.FORMAT.HARDCOPY, suppress prompt-window message
* COLLECT? argument to TEDIT.MAP.OBJECTS can specify what kind of information to collect.
- Fixed INTERPRET.REM.CM so that it no longer tries to load the file pointed to by LDEINIT and instead loads the file pointed to by LDEREMCM.
LDEINIT remains the file used by greet.
- Adjusted the medley script to have a new argument -cm (or --rem.cm) which sets LDEREMCM as appropriate before launching lde.
- Updated the loadup scripts as required to use this new -cm argument when calling medley.
Finally, added a new feature to the medley script -cc (or --repeat) whereby which when medley finishes it checks for a nonzero file given as the argument to -cc. If that file exists, medley is run again (i.e., repeated) with LDEREMCM set to that file. This repeats until this file no longer exists or is zero-length. The file can be found as the vale of LDEREPEATCM so that each invocation of medley can modify (or delete) this file so as to change the subsequent run of medley.
* Fix up Move command
* change paralooks record, recompile, other updates
* Fix right arrow and EOF
* Caret position after NEXT, add FILESTREAM textprop, CH#/LEN args to TEDIT.SEL.AS.STRING
* Added LLK
* Arrows-movement in menus is confined to fields
* Slightly better menu test
* TEXTPROP glitch, create window after getting file
* remove a debug call
* forward/backward forgets original x position
* Opentext stream preps for window-region prompt width
* typing resets the leftarrow X position
* Removing cached X position for up and down arrows
I tied this to the DIRTY flag and recompiled its users. Also separately fixed the setsel and find functions to clobber the cache
* Fencepost glitrch
* add OPENWIDTH property
* Selection past the middle goes to the right
* bug fix
* Set up for paralooks name changes to avoid future confusions
* Update tedit-exports.all
* One more systematic name change for char/para looks parallelism
* TEDITSTRING applies initial props
* TEDIT.CARETLOOKS returns oldlooks, TEDIT.PUT has a QUIET flag
QUITEFLAG suppresses prompt printing
In github actions, remove build of Medley Docker for arm64 since the Dockerfile_medley build fails when loading tigervnc-standalone-server for arm64. Arm64 docker image has never been used anyway. It was meant for running online on arm64 servers, but we have never done that and have no plans to do so. So just getting rid of arm64 docker image rather than trying to fix it.
Enable **FONTSAMPLER** to display glyphs from **.DISPLAYFONT** (bitmap
font) on non-`DISPLAY` stream (e.g., **PDF**)
Change to match 2025-02-03 discussion on Ascent/Descent
per-`CHARSETINFO` _vs._ whole `FONTDESCRIPTOR`.
(Use whole `FONTDESCRIPTOR`.)
* Add back character sets that had characters outside 16 bit plane
* Update XCCS-353=SYMBOLS3.TXT
Update title line
* Update UNICODE.TEDIT
* Fix charset names
* Reorganized the tables, added requested interfaces
* Use a single hash
* Top-level array branch beats a single hash
* cleanup UNICODE.TRANSLATE macro
* Fix slug in outcharfn
* Remove a stray line
* Another try, would work for raw
* Remove duplicates, redo hashing
* Getting complete maps in both directions
* Initializing
* Only the latest file versions
* Add back gothic mappings
* Enable FONTSAMPLER to display glyphs from DISPLAYFONT (bitmap font) on non-DISPLAY stream (e.g., PDF)
Added .LCOM to repository.
Corrected PR.
* Relocate FONTSAMPLE files to obsolete.
* Files renamed. Internal names and documentation were NOT updated.
---------
Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
These are macros that I have been using for years to simplify the
storage and retrieval of items in alist structures with arbitrary
numbers of keys. They may prove useful to others.
* Add back character sets that had characters outside 16 bit plane
* Update XCCS-353=SYMBOLS3.TXT
Update title line
* Update UNICODE.TEDIT
* Fix charset names
* Reorganized the tables, added requested interfaces
* Use a single hash
* Top-level array branch beats a single hash
* cleanup UNICODE.TRANSLATE macro
* Fix slug in outcharfn
* Remove a stray line
* Another try, would work for raw
* Remove duplicates, redo hashing
* Getting complete maps in both directions
* Initializing
* Only the latest file versions
* Add back gothic mappings
* Add a call to check for orphaned versions after any checkout
* use == instead of -eq for optional
* Add a scripts/install-repo-checks for things to run after checkout; only this versioning error checked for now
The files were **copied** from `lispusers` to `library`, and then
modified there.
They should have been **moved** so the git history was preserved.
I replaced these files _with themselves_ by a 3 step process that
_appears_ to have gotten the git history to be correct.
(And the `PSEUDOHOSTS.TEDIT` from `lispusers` was also moved. It had
been left behind previously.)
* Addresses #1943
* Better prompt messages for meta-O and meta-D
* Cleanup TEDIT.SETSEL
* Meta-O shows menu of types to edit
* Extra variable
* More cleaning of TEDIT.SETSEL
Start it running with `(START-TAB-WINDOWS)`.
Bonus debug tool: `(KEY-WINDOW)` starts a process that monitors keyboard
and mouse button events and displays them in a little window.
* Shakedown of field menu items
* Suppress shift-select in menus
* Typo, plus inserting EOL-containing strings
* Fix selection display glitch revealed by DOCUMENT
* Fix arg order, eliminate U-CASE
* U-CASE only if coercing IDENTIFIER from LABEL
* Allow SMALLP for identifiers, INITSTATE for SELECTION
Also a fence-post glitch in paragraph selection
* Fix MB.GET
* TEDIT-MENU: Right button doesn't invert Marginbar, copying suppressed
* TEDIT-STREAM: Error if copying an image object that doesn't allow copying
* Missed another LITATOM/SMALLP test on IDENTIFIERS
* Clicking in a menu removes stale promptwindow text
---------
Co-authored-by: Frank Halasz <frank@halasz.org>
* FILEIO: EOL for input defaults to ANY, EXT-FORMAT can specify EOL
As per technical meeting on 7/15/2024
* Revert "FILEIO: EOL for input defaults to ANY, EXT-FORMAT can specify EOL"
This reverts commit 6a7e8c3665.
* FILEIO: Fix comment
* Added DETECTEDEOLCONVENTION to STREAM declaration
and recompiled calls to macro \CHECKEOLC.
* COMAPARETEXT: was trying to set EOL to ANY on a Tedit stream
* LCOMS needing to be recompiled for \CHECKEOLC macro and Create STREAM
(plus a new (unchanged) version of IOCHAR needed to get the cleanup to work for the recompile)
* EXTERNALFORMAT macro and function implement EOL detection
* FILEIO: stream records detected EOL, also RENAMEFILE uses COPYBYTES
UFS doesn't check file devices identity, doesn't give type-change message. Recompiled for create stream
* ADIR has TRUEDEVICE
* Revert "FILEIO: stream records detected EOL, also RENAMEFILE uses COPYBYTES"
This reverts commit fa97aa6157.
* Revert "EXTERNALFORMAT macro and function implement EOL detection"
This reverts commit eb098615ed.
* Revert "LCOMS needing to be recompiled for \CHECKEOLC macro and Create STREAM"
This reverts commit 5967452c63.
* Revert "Added DETECTEDEOLCONVENTION to STREAM declaration"
This reverts commit 196f105cf5.
* Trying to complete the ANY/EOLC and binary RENAMEFILE issues
* loadup glitch
* TMAX updates for compatibility with Tedit changes
* DOC-OBJECTS changes for compatibility with Tedit changes
* MODERNIZE update for Tedit split windows
* Core Tedit files
* IMAGEOBJ: Remove dependency on Tedit internals
* WINDOW: Remove dependency on Tedit internal declaration
Still strange that WFROMDS should have to branch on Tedit
* WINDOWOBJ gets window of TTY process before the window of the stream of the TTY process
So insert into Tedit works
* TEDIT-CHAT: try to use TEXTSTREAM vs TEXTOBJ
* Fix tab-initialization problem in SLIDES.TEDIT
as reported by @nbriggs
* TEDIT-CHAT: use TSTREAM rather than TEXTOBJ
* Updates after lots more testing, particularly scrolling
Some other files dragged along to avoid dependence on Tedit internals
* Remove unwanted SAVE.SYSOUT
* Addresses more end-of-file and empty-file display issues
Try it again
* TEDIT-DEBUG tracking other changes
* Odds and ends
* Adjust EOF selection and caret-scrolling on copy
* More cleanup, plus fixing a few more ancient (Venue) glitches
As usual, the problems have to do with the funky behavior of EOL's in the middle and end of the document. More abstraction and refactoring to get better control of this (I hope).
* TEDIT-WINDOW: Scroll down of big objects
Trying to fix what happens at the transition when scrolling down brings a big-object's top down in the window. Approach is to bring down the line above, which may make for a little jump. I hope that solves it.
Scrolling up still needs some adjustment.
* Eliminate junk at top of window after up/down scrolling of big objects
BLTSHADE is OK there for scrolling, but not for redisplay after editing. In the edit case, the top of the pane above the last valid line is preserved.
Scrolling still has the problem that the window can go blank at the first scroll that brings a tall object into the pane--still working on that.
* Scrolling with tall lines should be more continuous
* Another tweak for scrolling
plus interface extension to TEDIT.MOVE and TEDIT.COPY, a little more on field menus
* More robust strategy for field menu buttons
Surround the field with prefix and suffix pieces with image objects that print the pre and post labels and shift the selection forward or backward into the field. Doesn't depend on inherited quirky logic in the selection line-scanner.
* Field selection ignores right and middle clicks
* A little more menu/selection tweaking
You can't extend through fields and buttons
* Added CUSTOMBUTTONEVENTFN to menu field buttons
Also, menu buttons in general can't be deleted
* A few more glitches, plus a little selection refactoring for buttons
* Reduce flicker in pargraph menu margin bar
* screen update glitch
* DOC-OBJECTS, TEDIT-SCREEN: Fixes the HCFILES DOC-OBJECTS failure
* TEDIT-BUTTONS: Field values should always be shown in the specified FIELDFONT
* Abstracting the structure of the history lists
cleanup, but mostly as a precursor to maybe doing a ring buffer of a specified length
* TEDIT-FILE, a little font-reading cleanup
* Include the files from rmk-39 that deal with the text/binary renamefile problem
* TEDIT-PAGE addresses #1905
* Fix BUTTONSTART to STARTPC in Put/Get menu buttons
* Use width of M as width of EOL--easy to select
Also put in function call for potential kerning--needs eventual FONT support
* Rename a few internal functions from TEDIT.-- to \TEDIT.--
* Doesn't make sense for a charlooks to not have a font
* TEDIT-BUTTONS - Fix comment
* Take out Tedit internals from \CARET.FLASH?
Should have included this in fifth round long ago
* TEDIT-FILE: use DEFAULTFONT for .sh files
Easier to follow the layout
* TEDIT-LOOKS: fix loadup order
* tedit-exports.all Remove line-has-protection field
Useless
* Make sure that charlooks change as expected
* External format for .sh files is UTF-8
* Better display of history information for debugging
* Button changes: show document font families, better fields
* TEDIT-WINDOW, remove extra truncated line with down-scroll
* TEDIT-SELECTION: suppress line/paragraph selection for built-in menus
Line/para selection would be reasonable for multi-line fields, but most menu lines have protected text that would behave inconsistently. So just suppress
* Better support for potential kerning
* Fix empty field value
* Simplify ASCII translation code
* Make sure headings have a default tab
* Word boundary at character 1
* Remember that you specified a font class instead of a font
For the charlooks menu, but also so that it is saved on a put
* More items on the Family NWAY-button line
* glitch
* TEDIT-LOOKS: Better algorithm for Ascii translation
* Charmenu remembers previous "Other" fonts, even if not installed
* Fix initial piece index
* Fix fontclass changes (again)
* Fix cygwin install script (medley.iss) to handle install directory with spaces in the directoryname. Also fix the uninstall.exe so that it actually deletes all of the installed directory instead of just portions of it. Finally update architecture specifications to match the latest InnoSetup conventions.
* Add powershell script to prep installers/cygwin directory for local testing of cygwin installer. Does what is done online by github action to get the files to include in the installer.
Update github action workflows to account for deprecation of macos-12
runner and move of ubuntu-latest to ubuntu-24.04.
Removed use of ubuntu-latest and macos-latest in favor of explicit
versions (macos-14, ubuntu-24.04) in order to prevent issues when
*-latest changes without our notice.
* Add git commit ID to beginning of loadups .dribble files.
The commit ID is put into the .dribble file in the .sh scripts. (using echo ... > name.dribble)
The changes to MEDLEY-UTILS, LOADUP-FULL, and LOADUP-LISP are to enable the passing of APPENDFLG to (DRIBBLE ... APPENDFLG).
* I hadn't saved file before previous commit.
* Add to IL:SYSOUTCOMMITS instead of to the .dribble files.
* Initialize SYSOUTCOMMITS so PUTASSOC has somewhere to put value(s)
In scripts/medley/medley_vnc.sh, update references to Xvnc and vncviewer to their tigervnc-specific versions Xtigervnc and xtigervncviewer. Fixes Issue#1841.
* Added new module READ-BDF.
This will parse a bdf font file into a BDF::BDF-FONT structure.
It does NOT create (convert into) an IL:FONTDESCRIPTOR instance.
Minimal error checking!
* Remove work-around for bug in CL:READ-FROM-STRING that is fixed in PR #1833
* Fix for issue 1812: CL:READ-FROM-STRING returns byte position instead of character position.
* Previous edit hadn't noticed corresponding issue using the value of the START argument passed to SETFILEPTR
…. They are treated the same as strings: the `symbol-name` is first
interned in the package before being exported.
This is defined as the behavior in CLtL2, and using uninterned symbols
appears to be common practice in other Common Lisp code.
Previously --vnc flag in medley script worked only on WSL.
With this PR, the --vnc flag works on (non-WSL) linux platforms - any
linux distro that support the TigerVNC server and viewer.
To use this feature you must first install both the TigerVNC server and
TigerVNC client on linux. On Debian-based distros (e.g., Ubuntu and
Mint): ```sudo apt install tigervnc-standalone-server tigervnc-viewer```
* Add clean-hcfiles.sh; update do_hcfiles.sh to save hcfiles.dribble to loadups and to extract fails to hcfiles-fails.txt in loadups.
* Fix clean_hcfiles.sh to handle pdf files that are tracked by git.
* Tweak output of clean_hcfiles.sh
Start it running with `(START-TAB-WINDOWS)`.
Bonus: `(KEY-WINDOW)` starts a process that monitors keyboard and mouse button
events and displays them in a little window.
* First pass at workflow for doing HCFILES on each release
* Finish doHCFILES workflow
* Fix delete of gh-page branch in DoHCFILES workflow
* Redo doHCFILES workflow for files.interlisp.org; add indexing to do_hcfiles script
* Fiddling with workflow names so that I can test doHCFILES.yml on a branch
* in doHCFILES workflow fix use of GH_TOKEN
* Fix typo in doHCFILES workflow
* Debugging doHCFILES workflow
* Fix multiple bugs in do_hcfiles script; fixed multiple bugs in doHCFILES workflow
* Debugging move
* in do_hcfiles.sh add back in Tedit file stoHCFILES run
* Clean up do_hcfiles.sh a bit
* Add debugging code to doHCFILES workflow
* In MAKE-INDEX-HTMLS, add code to ensure that the original case of the files/directory names are preserved since (DIRECTORY) seems to return names ia all-caps, always
* Debugging doHCFILES
* Fiddling with debugging code in doHCFILES workflow
* Add MEDLEY-INIT-VARS to cm file in do_hcfiles.sh
* Undo effect of merging fgh_hcfiles-updates into fgh_hcfiles-workflow. fgh_hcfiles-update will be abadoned
* Add up button to index.html files in MAKE-INDEX-HTMLS
* Update MAKE-INDEX-HTMLS to include an up-on-level button in index.html files. Move fio files to medley instead of source. Streamline doHCFILES workflow
* Debugging
* In MAKE-INDEX-HTMLS, make sure that the up-one button does not appear in the top-level index.html
* In doHCFILES workflow, add difference between development(draft) and production; add doHCFILES workflow into buildReleraseInclDocker workflow
* Update MAKE-INDEX-HTMLS with new onclick script to handle directories properly
* Fix typo in buildRelease workflow
* Polishing up do_hcfiles.sh
* Return buildDocker.yml to original state after using it to test doHCFILES.yml
The WINDOW datatype has a bunch of fixed fields for items that are
commonly used, and then it has USERDATA property list for other fields,
some of which are part of the window system and some of which belong to
particular applications.
When you inspect a WINDOW, you see the common fields all nicely laid
out, but you have to click again to bring up the user-data properties in
another window. And if your are inspecting several windows, you have to
keep track of which user properties go with which windows.
This adds an INSPECTMACRO for WINDOW that brings up the USERDATA
properties to the single inspect window, as first-class properties at
the bottom of the fixed-field entries, with a --USERDATA-- separator
This fixes GITFNS `prc` not showing any changed files if they included
`.git` in the full name.
It now is specific, and excludes only those in the `.git/` top-level
directory.
GITFNS also ignored changed files at the top-level of the repo. This is
fixed also.
This can be tested with PR #1756
* to buildReleaseInclDocker workflow, add call to build and deploy the Online-Medley Docker image to oio
* add version tag to call to buildAndDeploy... workflow in online
* Oh boy, get the name of the build and deploy workflow in online right this time!
* Added explicit secrets to call to medley online build deploy workflow
* fix test code in buildReleaseInclDocker
* debuggin gbuildReleaseInclDocker
* Debugging adding of online deploy to buildReleaseInclDocker
* Change approach to running buildDeployMedleyDocker online workflow to use gh workflow run rather than use a cross-repo workflow call
* GH_TOKEN or GITHUB_TOKEN?
* Create ONLINE_TOKEN to access online repo from medley repo workflows via gh
* From buildReleaseInclDocker workflow, remove debugging stuff; change kickoff of oio build and deploy so that it will not kickoff workflow if draft is true
In medley.sh, improve error messages when MAIKODIR and/or the requested
maiko executable (e.g., ldeinit) cannot be found.
Helps clarify error messaging in loadup-mid-from-init script that
utilizes ldeinit.
In PRINT-ALL-DOCUMENTATION only one of two places was checked for the
documentation string.
(Also, MAKEFILE updated the LAMA variable in the CMLEXECCOMS.)
Issue #1735
FB.PROMPTW.FORMAT now uses the global PROMPTWINDOW if called under a
borrowed function (i.e., not a FILEBROWSER window). Tweaked the format
string provided by FB.FASTSEE.ONEFILE to go to newline conditionally.
Issue #1742
FB.PROMPTW.FORMAT now uses the global PROMPTWINDOW if called under a borrowed function (i.e., not a FILEBROWSER window).
Tweaked the format string provided by FB.FASTSEE.ONEFILE to go to newline conditionally.
Update all loadup scripts so that 3 things are true:
1. all sub-scripts are called via `/bin/sh <subscript>` so that exec bit
need not be set on any loadup script
2. medley is called via `scripts/medley/medley.command` rather than just
`medley` so that the top-level medley symbolic link is not necessary for
loadups
3. the loadup scripts do not have to be started while cwd is MEDLEYDIR;
instead MEDLEYDIR is automatically computed based on where the loadup
script is executed from (as the medley script does).
* GITFNS: prc ignores PRs from other owners
The menu just includes Interlisp PR's. Fixing it to deal with other owners will take more work.
* JSON: JSON-GET takes a list of attributes
A convenience for accessing objects embedded in objects
* GITFNS: a minor cleanup
* Remove JSON-GET left over
* Put the git commands to install remotes in comments
So we don't have to rediscover them when we decide to fix prc to deal with this issue.
Fix issue #1727
Edit of function from popup menu in MASTERSCOPE show paths graph locks
mouse process.
Left buttonfn didn't include :DONTWAIT option when launching the editor;
middle buttonfn did.
MANAGER called PF with function NAME in a variable. BUT PF is NLAMBDA so
didn't eval its argument. Changed to use CL:APPLY*. Moved the process
function from a local LAMBDA in Manager.DO.COMMAND to a separate named
function. Tweaked prompt strings for the "CopyDef" and "Rename All" item
menu commands.
Add a DEVICE argument to \NSRANDOM.CREATE.STREAM so that when it creates
a stream, it can pass a device to the stream creation code. As of PR814
of July 2022, streams whose DEVICE field is NIL break during creation.
Update all callers to \NSRANDOM.CREATE.STREAM to pass the new DEVICE
argument.
Edit of function from popup menu in MASTERSCOPE show paths graph locks mouse process.
Left buttonfn didn't include :DONTWAIT option when launching the editor; middle buttonfn did.
MANAGER called PF with function NAME in a variable. BUT PF is NLAMBDA so didn't eval its argument. Changed to use CL:APPLY*.
Moved the process function from a local LAMBDA in Manager.DO.COMMAND to a separate named function.
Tweaked prompt strings for the "CopyDef" and "Rename All" item menu commands.
* UNPACKFILENAME produces <> for top-level directory
For virtually any combination of leading <, > or /. Addresses #1685.
* Produce < instead of <> for top-level empty directory
Does not yet deal with all combinations of directory-internal bracket sequences
* Make medley.sh and its associated scripts POSIX compliant - i.e., debashify them
* Added config file for medley script, medley now reads from config file and prepends arguemnts from file to the copmmand line arguments
* WIP. Updates to medley.sh scripts.
* WIP. More on medley.sh and friends update.
* WIP. Medley redo
* WIP. Debugging new medley scripts
* Renamed medley.sh/medley.command to be medley_main.sh. Added code to compile single medley.sh/medley.command script by inlining all of the source'd medley_*.sh files.
* Add temp fix for cygwin Issue #1685
* Minor fixup to medley_utils.sh; take debug code out out of run_medley
* Add README to medley directory to explain how to compile medley.sh (medley.command).
* Ooops. This time really adding the README file to the medley directory explaining how to compile medley.sh (medley.command)
* Update loadup- scripts to use updated medley scripts rather than run-medley
* Fix default setting of $config_file in medley_configfile.sh
* Redo medley compile to pick up last commikt
* Fixing how maiko exe is found and sysout argument error processing - both issues discovered testing on MAcOS
* In medley_configfile, replace echo with printf %s because echo - does not work in zsh
* Supress config file on loadups calls to Medley
* Add oldschool support (use original run-medley) to loadup scripts; improve FAILURE detection so loadup-all won't proceed once one of the components fails
* Add in medley_args.sh add -prog as synonym to --maikoprog to aid in loadup scripts; in medley_run.sh script try to get a good exit code for call to maiko, especially useful for loadup scripts
* Run loadup scripts thru shellcheck and update as necessary to make Posix compliant
* Get rid of -nt comparisons in loadup-setup.sh because they are not posix-complaint. They were not really needed anyway.
* Removing (for now) use of lde exit codes to decide FAILURE case in loadup-setup.sh since exit codes from lde apperar to be inverted on MacOS.
* Update medley man page. Add - functionality to more args is medley_args.sh
* Compile medley.sh with changes from last commit
* Ooops. Left medley_args.sh changes out of last commit. Rectifying here.
* Added support for LDEKEYBOARDTYPE to medley_run to match run-medley
* Add to medley.sh: auto numbered id's and titles with id's inserted
* Cleanup some shellcheck issues in medley_main.sh
* fix maiko args -nh-xxx. were -nethub-xxxx. In medley_run.sh
* Overhaul handling of pass-on args to manage the quoting issues prevelant in the previous implementation
* Cleanup minor shellcheck issues in medley_*.sh scripts
* Add underscore as character allowed in ids - makes things clearer when id used with +
* Add a self-numbering id to medley calls in loadup scripts
* Put workaround in medley_run.sh for Issue #1702 - issues with sysout arg processing in Maiko
* Oops. messed up LDESRCSYSOUT in last commit. should be LDESOURCESYSOUT
* compile medley.sh
So the full set of available PRs (with their draft/approved status)
remains visible. You can poke from one to the other. May be useful when
we go through the PRs in Monday meetings. (Still doesn't bother with a
menu at all if there is only one PR to work on.)
On this first pass, the menu is placed (but not attached) just under the
current exec window, on the hope that this keeps it out of the way of
the windows that are created during the comparison.
Try it, let me know how this feels, whether this is an improvement over
the previous pop-up.
So the full set of available PRs (with their draft/approved status) remains visible. You can poke from one to the other. May be useful when we go through the PRs in Monday meetings. (Still doesn't bother with a menu at all if there is only one PR to work on.)
On this first pass, the menu is placed (but not attached) just under the current exec window, on the hope that this keeps it out of the way of the windows that are created during the comparison.
Try it, let me know how this feels, whether this is an improvement over the previous pop-up.
* GITFNS gets prc information in JSON form
prc uses the simple JSON parser in the new lispusers file JSON to convert the json string into a lisp data structure. Maybe the commonlisp package YASON that Matt looked at would be more general, but perhaps also requires more understanding.
With this change, drafts should be marked with D, approves should be marked with A.
* Quote branch names in git commands -- attempt to fix issue #1691
---------
Co-authored-by: rmkaplan <ron.kaplan@post.harvard.edu>
* WINDOWOBJ: Add ENCAPSULATEDOBJP function
If provided to TEDIT.MAP.OBJECTS, this will return a list of all unknown image objects and their locations
* Fix earlier misunderstanding of encapsulated set up
* CLIPBOARD: Remove Tedit-specific code
* TEDIT-COMMAND: Add interface to Clipboard
This also implements a different way of dealing with image objects in the selection. Instead of causing an error (since an imageobject can't be printed to the clipboard stream), it tries to put out a useful representation of the object. If the object has a preprint function, it applies that. Otherwise, it prints out the name of the getfn. Other objects can be explored.
Also remade HARDCOPY NEW and TCOMPLed the whole file to get everything pretty printed and compiled. The NEW option to MAKEFILE was not enough, I also had to set MAKEFILEREMAKEFLG to NIL.
* IMINDEX: The displayfn of index image objects sets AFTERHARDCOPYFN to close the index file
Removes the need for advising the Tedit hardcopy function. This won't have an effect until a separate PR (after rmk7 is merged) that updates the hardcopy function.
* Index image object explicitly uses OLD-INTERLISP-FILE for printing and reading (cf #1652)
* Remove derived PDFs from branch other than gh-pages
* only the gh-pages branch should have the pdfs
* make pdfs and listings
* Update HCFILES and MAKE-INDEX-HTMLS, add preliminary documentation
* add a slashit to avoid angle brackets
* TEDIT-MENU: Eliminate illegal arg and caret location errors
@nbriggs got an error when (as I remember) parsing the OTHER font in the charlooks menu. This was because of a missing BOUNDP check when trying to decide if the other font is a fontclass.
Separately, the caret appeared in the wrong place if a field insert was the first interaction with a menu.
* Remove redundant binding
* Add support for cl: loop for hash tables
* fix subtle package problems setting up LISP package & conflicts with CLOS
* include fix for 'repeat n' clause
* remake in lower-case p make diffs legible, dfasl for defuns
This now builds in knowledge of which Titan and Terminal fonts actually exist, so it doesn't try to increase the size to a black hole. Still a hack, but there are so many MOVD's involved that it is really hard to see how to do it with a generic FIND-NEXT-LARGEST-FONT.
This includes some files in lispusers that are not in the Tedit core but had references to Tedit internal functions (TMAX, DOC-OBJECTS and some others) that have been renamed. (I hope to clean out those internal references, at some point.)
A few additional changes are here to track the changes that were recently made in the unrenamed master branch. Going forward, I want to make future changes in this branch.
Eventual plan is to introduce a Tedit package and do another systematic renaming of all \TEDIT.xxx functions to TEDIT::xxx, this is a first step.
This does not yet include a backward-compatibility mapping of oldnames to newnames, as was discussed in the technical meeting.
Motivated by the fact that FILEPOS was not being properly informed that the bytes of the encoded stream are stable (unlike XCCS) so it can run at the byte level without character decoding.
(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.
* 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
* 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
* 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
* 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
* 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
* 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
* 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>
* 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>
* 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
* 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>
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>
* 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.
* 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.
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.
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.
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.
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.)
* 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
* 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
# 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.
* 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>
* 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.
* 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
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.
* 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
* 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
* 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.
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.)
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
* 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.
* 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
* 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
* 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
* 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
* 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>
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.
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>
* 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.
* 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
* 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>
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)
* 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
* 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
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?
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
* 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
* 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
* Lafite and Rooms Manuals
Add Lafite and Rooms Manuals
* Only rooms-manual, Lafite has .tedit files
---------
Co-authored-by: Larry Masinter <LMM@acm.org>
* 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
* 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)
* 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)
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?).
`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.
First, we want to thank you for helping reach the goal of restoring Medley Interlisp
to the point where it is as useful today as it was 30 years ago.
This guide is meant to help you make useful contributions, whether to the [Maiko](https://github.com/Interlisp/maiko) C-based virtual machine implementation, the [Medley](https://github.com/Interlisp/medley) Lisp code (in Interlisp and Common Lisp), or [documentation](https://github.com/Interlisp/medley/wiki). There are a number of [GitHub](https://github.com/Interlisp/medley/discussions/categories/github-use) problems that could use some attention.
This guide is meant to help you make useful contributions, whether to the [Maiko](https://github.com/Interlisp/maiko) C-based virtual machine implementation, the [Medley](https://github.com/Interlisp/medley) Lisp code (in Interlisp and Common Lisp), or [documentation](https://interlisp.org/software/using-medley). There are a number of [GitHub](https://github.com/Interlisp/medley/discussions/categories/github-use) problems that could use some attention.
## Working with Maiko
@@ -17,6 +17,8 @@ The current arrangement of files and extentions is awkward for working on the im
* The most useful contributions are reproducible errors -- things that don't work as documented.
* Second most useful are reports of unexpected behavior -- things that aren't documented but behave unexpectedly.
To report these errors and behaviors [open an issue](https://github.com/Interlisp/medley/issues).
## Reporting a bug or feature request
* Ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/Interlisp/medley/issues) or [Discussions](https://github.com/Interlisp/medley/discussions). Note that all issues and Discussions are found in the Medley repository, using labels to distinguish. Discussions are for questions or topics where there is some disagreement or uncertainty about the "right" direction.
* If you're unable to find a discussion or open issue addressing the problem, open a new one. Be sure to include a title
@@ -24,7 +26,7 @@ and clear description, as much relevant information as possible. Use the issue t
## Did you write a patch that fixes a bug?
* Some bug fixes and "improvements" have unintended consequences, well beyond what you might expect for well-written modern code. We don't have testing new builds automated or integrated. Be sure you've tested your patch.
* Open a new [GitHub pull request](https://github.com/Interlisp/maiko/pulls) with the patch.
* Open a new GitHub pull request with the patch.
* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
* Keep Pull Requests small and easily reviewable. https://www.thedroidsonroids.com/blog/splitting-pull-request for
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
The [Medley Interlisp Project](https://interlisp.org) aims to preserve, revive, and modernize the [Interlisp](https://interlisp.org) software development environment for rapid prototyping, research and Artificial Intelligence created at Xerox PARC since the 1970s.
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.
This repository is for the Lisp environment of the [Medley](https://interlisp.org) release of Interlisp. Other repositories hold additional subsystems and applications such as [Maiko](https://github.com/Interlisp/maiko), the implementation (in C) of the Medley virtual machine, the [LOOPS](https://github.com/Interlisp/loops) object-oriented extension of Interlisp, and the [NoteCards](https://github.com/Interlisp/notecards) hypermedia system.
[Interlisp/maiko](https://github.com/Interlisp/maiko), is the repo for the implementation (in C) of the Medley virtual machine.
[Install and Run](https://interlisp.org/software/install-and-run) covers ways to install and start up Medley on Linux systems, MacOS, Windows (with or without WSL), and in a web browser.
## Using releases
[Using Medley](https://interlisp.org/software/using-medley/) has an overview and pointers to documentation.
There currently are separate releases of medley and maiko; get the latest version of each.
The [Glossary](https://interlisp.org/history/glossary) defines system-specific terms such as "loadup" and "sysout".
### Getting releases
## Releases
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.)
While there are installers for popular platforms, this section may be useful in some circumstances.
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.
### Getting releases
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`)
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.
You don't need the "runtime" if you've cloned this (medley) repo, but you'll still need the "loadups" release.
Or, build your own maiko (the binaries `lde`, `ldex` OR `ldesdl`, and `ldeinit`).
You can also build for other architectures
If you happen to have the 'gh' GitHubcommand 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.
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`)
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,43 +49,29 @@ 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.)
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
The `run-medley` script in this repo sets up some convenient defaults. Running Medley can be done by typing:
```
$ cd medley
$ ./run-medley
```
Or, if you wish to start Medley up with a different SYSOUT:
```
$ cd medley
$ ./run-medley <SYSOUT-file-name>
```
The first time the system is run it loads the system image that comes
with the system. When you exit the system (or "do a `SaveVM`" menu
option) the state of your machine is saved in a file named
`~/lisp.virtualmem`. Subsequent system startups load the
`~/lisp.virtualmem` image by default.
The primer [Medley Interlisp for the Newcomer](https://primer.interlisp.org) eases new users into the Interlisp environment. It assumes no prior knowledge of Lisp and covers the user interface, programming and debugging, windows and graphics, and more. We recommend consulting this document to learn how to run and use the system.
### Exiting The System
@@ -112,7 +98,8 @@ you can continue right where you left off.
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.
@@ -121,9 +108,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
* 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
@@ -133,11 +119,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
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.