1
0
mirror of synced 2026-02-26 17:13:17 +00:00

Merge in changed files

This commit is contained in:
Larry Masinter
2021-02-28 18:08:43 -08:00
37 changed files with 125 additions and 298 deletions

View File

@@ -1,24 +0,0 @@
# Running Medley Interlisp on a Mac.
Running on MacOS requires an X server, and building on a Mac requires X client libraries. An X-server for x86 can be freely obtained at https://www.xquartz.org/. For the new arm64 MacOS 11, you'll need https://x.org which you can get via MacPorts or Brew.
### Middle-mouse tweak
if you don't have a 3-button mouse (wheel = middle mouse)
you can enable FN-left to be middle. Run in a terminal:
```sh
defaults write org.macosforge.xquartz.X11 enable_fake_buttons -boolean true
defaults write org.macosforge.xquartz.X11 fake_button2 fn
defaults write org.macosforge.xquartz.X11 fake_button3 none
```
To turn the settings back to the original default values do:
```sh
defaults write org.macosforge.xquartz.X11 enable_fake_buttons -boolean false
defaults delete org.macosforge.xquartz.X11 fake_button2
defaults delete org.macosforge.xquartz.X11 fake_button3
```

View File

@@ -1,7 +1,13 @@
# Medley
This repo is for the Lisp environment of [Medley Interlisp](https://Interlisp.org). We've made great process in sorting out what we have (some dusty corners notwithstanding), but there's quite a bit more work to do. Please report problems!
See [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction) for an overview.
This repository is for the Lisp environment of [Medley Interlisp](https://Interlisp.org).
We've made great process in sorting out what we have (some dusty corners notwithstanding), but there's quite a bit more work to do. Please report problems!
See [Medley Interlisp Wiki](https://github.com/Interlisp/medley/wiki/) for an overview, and other pointers.
A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko), which is the implementation (in C) of the Medley virtual machine.
@@ -10,9 +16,10 @@ A sub-project is [Interlisp/maiko](https://github.com/Interlisp/maiko), which is
### Setting up X
Medley Interlisp needs an X-Server to manage its display. Most Linux desktops have one.
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 displayes).
* It also presumes you have a 3-button mouse (the scroll-wheel on some mice act as one with some difficulty.) See [README-mac.md](./README-mac.md) for more info on dealing with that.
Medley Interlisp needs an X-Server to manage its display. Most Linux desktops have one. There are a number of free open source X-servers for windows. Mac users should head over to [XQuartz.org](https://xquartz.org/releases) -- be sure to pick a version if you have a newer Mac.
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.
### Running Medley Interlisp
@@ -78,8 +85,8 @@ Each directory should have a README.md, but briefly
- library -- packages that were supported (30 years ago)
- lispusers -- packages that were only half supported (ditto)
- loadups -- has sysouts and other builds
- makesysout -- files for making new sysouts for various configurations, based on basics
- patches -- for cases where reloading doesn't wor
- scripts -- some scripts for fixing up things
- sunloadup -- support information for making a new lisp.sysout from scratch
- sources -- sources for Interlisp and Common Lisp implementations
- unicode -- data files for support of XCCS to and from Unicode mappings

File diff suppressed because one or more lines are too long

Binary file not shown.

17
library/CLIPBOARD.TXT Normal file
View File

@@ -0,0 +1,17 @@
library/CLIPBOARD
Written by Ron Kaplan, 2020-2021
A small package that implements copy and paste to the system clipboard.
It arms meta-C for copy to the clipboard from the current selection of an application that has been armed (Tedit, Sedit), and also meta-X for extraction (copy followed by delete).
Meta-V is defined as an interrupt character that pastes the current clipboard contents into whatever process curent has input focus.
The information in the clipboard can be provided from or provided to external (non-Medley) applications (mail, emacs, etc.) in the usual way. For example, a form cselected in SEDIT can be copied to the clipboard and pasted into an email message.
It assumes that the clipboard is a utf-8/unicode stream, and uses the UNICODE package to convert to and from the Medley internal character encoding (XCCS).
The name of the clipboard stream may differ from platform to platform. On the Mac, the paste stream is "pbpaste" and the copy stream is "pbcopy". Those names are used if "darwin" is a substring of (UNIX-GETENV "ostype"). Otherwise both stream-names default to "xclip". The functions CLIPBOARD-COPY-STREAM and CLIPBOARD-PASTE-STREAM perform this selection.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
lispusers/MODERNIZE Normal file

File diff suppressed because one or more lines are too long

BIN
lispusers/MODERNIZE.LCOM Normal file

Binary file not shown.

76
lispusers/MODERNIZE.TXT Normal file
View File

@@ -0,0 +1,76 @@
MODERNIZE documentation
Ron Kaplan, February 2021
[A renaming of an earlier MACINTERFACE package]
MODERNIZE is a simple Lispusers package that changes the mouse actions on Medley windows so that moving and shaping can be done in a way that approximates the behavior of windows on modern platforms, Mac, Windows, etc. It also adds some meta keys to also emulate more conventional behavior.
Thus, for a window that has been created or transformed in this way, you can move the window by left-clicking in the title bar and dragging the window's ghost region. Or you can reshape by clicking in a corner of the title bar or near the bottom of the window to drag out the ghost region by that corner.
The menu behavior for other buttons or buttons clicked in other positions is unchanged.
For bottom corners, "near" means inside the window within MODERN-WINDOW-MARGIN (initially 25) pixels above or to the left/right of the corner.
For top corners, "near" means within the title bar and within the margin from the left/right edges.
(Windows that don't have a title-bar, like Snap windows, can be set up so that moving can happen by clicking anywhere, and shaping at the top is determined by the margin inside the window region.)
When the package is loaded, this behavior is installed for the following kinds of windows:
Tedit
Debugger/break
Sedit
Inspector
Snap
Exec
File Browser
Grapher
The function MODERNWINDOW.SETUP establishes the new behavior for classes of windows:
(MODERNWINDOW.SETUP ORIGFN MODERNWINDOWFN ANYWHERE)
ORIGFN is either the name of the BUTTONEVENTFN for a class of windows (e.g. \TEDIT.BUTTONEVENTFN for Tedit windows) or it is a function that creates windows of a particulate kind (e.g. SNAPW or ADD-EXEC).
MODERNWINDOW.SETUP moves the definition of ORIGFN to the name (PACK* 'MODERN-ORIG- ORIGFN), and then provides a new definition for ORIGFN that does the moving or reshaping for clicks in the triggering locations, and otherwise passes control through to the original definition.
If ORIGNFN is a button event function, then MODERNWINDOWFN should not be specified. In that case a new definition for ORIGFN is constructed to provide the desired windowing behavior.
Otherwise, if ORIGFN is the function that creates windows of a class (e.g. SNAPW), then a MODERNWINDOWFN should be provided to create such windows (by calling (PACK* MODERN-ORIG- ORIGFN)). The definition of MODERNWINDOWFN replaces the original definition of ORIGFN.
If the flag ANYWHERE is non-NIL, especially for windows without a title bar, then the moving behavior is triggered by a click anywhere in the window (except the corners).
Because this works by redefining existing functions, it is important that the MODERNIZE package be loaded AFTER Tedit and Sedit, if those are not already in the sysout. And it should be called to upgrade the proper functions for other window classes that might later be added.
Provided these capabilities are already loaded, the following window classes are "modernized" when MODERNIZE is loaded are:
TEDIT
SEDIT
INSPECTOR
SNAP
DEBUGGER
EXEC
TABLEBROWSER
FILEBROWSER
FREEMENU
GRAPHER
PROMPTWINDOW
If it is not known or it is inconvenient to systematically upgrade a button function or a window-creation function, the new behavior can be provided after a particular window has been created, by invoking
(MODERNWINDOW WINDOW ANYWHERE)
This saves the windows existing BUTTONEVENTFN as a window property PREMODERN-BUTTONEVENTFN, and installs a simple stub function in its place.
If things go awry:
(UNMODERN.SETUP ORIGFN) is provided to restore the original behavior for windows whose buttonevent function is ORIGIN.
(UNMODERNWINDOW WINDOW) restores a modernized window (via MACWINDOW) to its original state.
Known issue: Clicking at the bottom-right corner of Tedit windows sometimes doesn't catch the new behavior--there seems to be a conflict with Tedit's window-splitting conventions. Clicking a little further into the window seems more reliable.

File diff suppressed because one or more lines are too long

View File

@@ -59,8 +59,15 @@ while [ "$#" -ne 0 ]; do
shift
;;
"--dimensions" | "-dimensions")
geometry="-g $2"
screensize="-sc $2"
sw=`expr "$2" : "\([0-9]*\)x[0-9]*$"`
sh=`expr "$2" : "[0-9]*x\([0-9]*\)$"`
if [ -n "$sw" -a -n "$sh" ] ; then
sw=$(( (31+$sw)/32*32 ))
gw=$(( 22+$sw ))
gh=$(( 22+$sh ))
geometry="-g ${gw}x${gh}"
screensize="-sc ${sw}x${sh}"
fi
shift
;;
"--geometry" | "-geometry" | "-g")

File diff suppressed because one or more lines are too long

Binary file not shown.