1
0
mirror of synced 2026-04-26 04:08:08 +00:00

Compare commits

..

62 Commits

Author SHA1 Message Date
rmkaplan
328d3f53cd NEARESTCORNER must be onscreen (addresses #1294 (#1295)
* NEARESTCORNER must be onscreen  (addresses #1294

Mouse jumps to the nearest onscreen corner of the ghost region

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

Relatively minor cleanups, little or no functionality improvements

* COMPAREDIRECTORIES:  Get AUTHOR only if selected

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

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

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

* Reorganizing VIRTUALKEYBOARDS as described in #1267

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

* Move KEYBOARDCONFIGS KEYBOARDEDIT to library/virtualkeyboards

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

* Oops, off by one

---------

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

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

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

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

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

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

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

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

---------

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

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

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

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

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

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

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

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

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

* HARDCOPY:  fixes printer menu

* PDFSTREAM: define PDF fonts as POSTSCRIPT fonts

* PDFSTREAM: fix convert template

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

* PDF Stream:  slight generalization

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

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

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

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

The other PR will be cleaned out

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

* PDFSTREAM:  wrapped FULLNAME around TRUEFILENAME

* Restore POSTSCRIPTSTREAM

* UNIXUTILS:  Added UNIX-FILE-NAME

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

* PDF-STREAM:  added SEE-PDF

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

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

* Pick up master changes

---------

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

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

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

* Fix call to gh release list for maiko

* Debugging call to gh release list for maiko

* Debugging call to gh release list for maiko #2

* Debugging call to gh release list for maiko #3

* Debugging call to gh release list for maiko #4

* Debugging call to gh release list for maiko #5

* Debugging call to gh release list for maiko #6

* Change maiko downloads to accoiunt for draft releases

* Change maiko downloads to account for draft releases #2

* Specify shell (powershell) for Download cygwin installler

* Few cleanup items on cygwin-install

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

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

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

* Add xdg-utils to cygwin install to support ShellBrowser

* Odds and ends on cygwin build

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

* Remove junk lines from buildLoadup.yml

* Restore accidently deleted line to buildLoadup.yml

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

* Change name of job from windows_installer to cygwin_installer

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

* Fiddling with getting cygwin-installer name right

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

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

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

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

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

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

* In Dockerfile_medley do an apt update before tzdata

* Changing dockerfile_medley to be based on 22.04 to take care on glibc problems in online_medley docker
2023-09-16 18:09:34 -07:00
rmkaplan
781709e4e1 PDF Stream: slight generalization 2023-09-12 13:49:56 -07:00
Frank Halasz
b772b8383c Moving vncviewer to online.interlisp.org/downloads to bypass issues with sourceforge in buildLoadup.yml (#1319) 2023-09-04 10:39:52 -07:00
rmkaplan
9b4c4a3bf7 Merge branch 'PDFSTREAM' of https://github.com/interlisp/medley into PDFSTREAM 2023-07-20 22:26:48 -07:00
rmkaplan
51d554c67e Merge branch 'master' into PDFSTREAM 2023-07-20 22:26:41 -07:00
rmkaplan
ca39ccf27b Merge branch 'master' into PDFSTREAM 2023-07-20 21:01:13 -07:00
rmkaplan
e1cd9260b4 Merge branch 'master' into PDFSTREAM 2023-07-19 20:29:48 -07:00
rmkaplan
b0aa518a41 Merge branch 'master' into PDFSTREAM 2023-07-19 14:57:50 -07:00
rmkaplan
9e0bfabc52 Merge branch 'master' into PDFSTREAM 2023-07-19 12:58:02 -07:00
rmkaplan
ebff4f7268 PDFSTREAM: Fix logic around closing the postscript sub-stream 2023-07-17 23:04:38 -07:00
rmkaplan
c281728c65 PDFSTREAM: fix convert template 2023-07-02 18:25:41 -07:00
rmkaplan
c4554894b3 PDFSTREAM: define PDF fonts as POSTSCRIPT fonts 2023-06-25 17:16:27 -07:00
rmkaplan
58196b4011 HARDCOPY: fixes printer menu 2023-06-24 15:49:31 -07:00
rmkaplan
f6a9b88b34 POSTSCRIPTSTREAM: Adds extra field to postscript data for PDFSTREAM filename 2023-06-24 15:49:18 -07:00
rmkaplan
bad19ab45f PDFSTREAM: first implementation
Makes PS file, then applies separate utility (if available) to convert PS to PDF
2023-06-24 15:48:21 -07:00
165 changed files with 10995 additions and 4295 deletions

View File

@@ -7,7 +7,7 @@
#
# ******************************************************************************
FROM ubuntu:22.10
FROM ubuntu:22.04
ARG TARGETPLATFORM
# Handle ARGs, ENV variables, and LABELs
@@ -31,6 +31,12 @@ ENV LANG=C.UTF-8
# Copy over the release deb files
ADD ./*.deb /tmp
# Get tzdata setup ahead of time
RUN apt-get update; \
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime; \
DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata; \
dpkg-reconfigure --frontend noninteractive tzdata
# Install Medley/Maiko and add tightvnc server and xclip to the image
RUN apt-get update \
&& apt-get install -y apt-utils \
@@ -51,8 +57,8 @@ RUN apt-get update \
echo "x86_64"; \
fi \
) \
&& deb="medley-full-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}-linux-${p}.deb \
&& deb="medley-full-linux-${p}-${MEDLEY_RELEASE#medley-}" \
&& deb=${deb}_${MAIKO_RELEASE#maiko-}.deb \
&& apt-get install -y /tmp/${deb} \
&& chown --recursive root:root /usr/local/interlisp \
&& (if [ -n "$(which unminimize)" ]; then (yes | unminimize); fi)

View File

@@ -20,7 +20,7 @@ name: 'Build/Push Docker Image'
# Run this workflow on ...
on:
workflow_dispatch:
inputs:
inputs:
draft:
description: "Mark this as a draft release"
type: choice
@@ -33,7 +33,7 @@ on:
options:
- 'false'
- 'true'
workflow_call:
outputs:
successful:
@@ -59,7 +59,7 @@ on:
defaults:
run:
shell: bash
jobs:
@@ -86,7 +86,7 @@ jobs:
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
fi
######################################################################################
@@ -100,7 +100,7 @@ jobs:
outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }}
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -110,7 +110,7 @@ jobs:
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
# Check if build already run for this commit
- name: Build already completed?
- name: Build already completed?
id: check
continue-on-error: true
uses: ./../actions/check-sentry-action
@@ -131,12 +131,12 @@ jobs:
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Find latest release (draft or normal)
# and download its assets
- name: Download linux debs from latest (draft) release
@@ -160,7 +160,7 @@ jobs:
- name: Get info about Miako and Medley releases
id: release_info
run: |
regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
regex="^medley-full-[^-]*-[^-]*-\([^_]*\)_\(.*\).deb\$"
ls -1 release_debs | head -n 1 > debname.tmp
medley_release="medley-$(sed -e "s/${regex}/\1/" debname.tmp)"
maiko_release="maiko-$(sed -e "s/${regex}/\2/" debname.tmp)"
@@ -168,6 +168,8 @@ jobs:
echo "MEDLEY_RELEASE=${medley_release}" >> ${GITHUB_ENV}
echo "MAIKO_RELEASE=${maiko_release}" >> ${GITHUB_ENV}
# regex="^[^0-9]*\([^_]*\)_\([^-]*-[^-]*\)-\([^-]*\)-\([^.]*\).*\$"
# Set repo env variables
- name: Set repo/docker env variables
id: repo_env
@@ -176,10 +178,10 @@ jobs:
docker_namespace="$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
docker_image="${docker_namespace}/${repo_name}"
if [ "${{ needs.inputs.outputs.draft }}" = "false" ];
then
then
docker_tags="${docker_image}:latest,${docker_image}:${MEDLEY_RELEASE#*-}_${MAIKO_RELEASE#*-}"
platforms="linux/amd64,linux/arm64"
else
else
docker_tags="${docker_image}:draft"
platforms="linux/amd64"
fi
@@ -242,7 +244,7 @@ jobs:
needs: [inputs, sentry, build_and-push]
steps:
steps:
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -257,10 +259,10 @@ jobs:
uses: ./../actions/set-sentry-action
with:
tag: "docker"
- name: Output
id: output
run: |
echo "build_successful='true'" >> ${GITHUB_OUTPUT}
######################################################################################

View File

@@ -60,7 +60,7 @@ defaults:
jobs:
######################################################################################
# JOB: inputs #######################################################################
# Regularize the inputs so they can be referenced the same way whether they are
# the result of a workflow_dispatch or a workflow_call
@@ -85,8 +85,7 @@ jobs:
fi
######################################################################################
# JOB: sentry #######################################################################
# Use sentry-action to determine if this release has already been built
# based on the latest commit to the repo
@@ -114,11 +113,11 @@ jobs:
with:
tag: "loadup"
######################################################################################
# JOB: loadup #######################################################################
#
# Do the loadup
# Do the loadup and push to release on github
#
loadup:
@@ -130,6 +129,9 @@ jobs:
medley_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_RELEASE_TAG }}
medley_short_release_tag: ${{ steps.job_outputs.outputs.MEDLEY_SHORT_RELEASE_TAG }}
debs_filename_base: ${{ steps.debs.outputs.DEBS_FILENAME_BASE }}
maiko_release_tag: ${{ steps.job_outputs.outputs.MAIKO_RELEASE_TAG }}
artifacts_filename_template: ${{ steps.job_outputs.outputs.ARTIFACTS_FILENAME_TEMPLATE }}
release_url: ${{ steps.push.outputs.html_url }}
needs: [inputs, sentry]
if: |
@@ -154,24 +156,36 @@ jobs:
id: tag
uses: ./../actions/release-tag-action
# Get Maiko release information, retrieves the name of the latest
# Get Maiko release information, retrieves the name of the latest (draft)
# release. Used to download the correct Maiko release
- name: Get Maiko Release Information
# Find latest release (draft or normal)
- name: Get maiko release information
id: maiko
uses: abatilo/release-info-action@v1.3.2
with:
owner: ${{ github.repository_owner }}
repo: maiko
run: |
tag=""
if [ "${{ needs.inputs.outputs.draft }}" = "true" ];
then
gh release list --repo ${{ github.repository_owner }}/maiko | grep Draft >/tmp/releases-$$
if [ $? -eq 0 ];
then
tag=$(head -n 1 /tmp/releases-$$ | awk '{ print $3 }')
fi
fi
if [ -z "${tag}" ];
then
tag=$(gh release list --repo ${{ github.repository_owner }}/maiko | grep Latest | head -n 1 | awk '{ print $3 }')
fi
echo "maiko_tag=${tag}" >> ${GITHUB_OUTPUT}
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Setup environment variables & establish job outputs
- name: Setup Environment Variables
run: |
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_OUTPUT}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${RELEASE_TAG}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.latest_tag }}" >>${GITHUB_ENV}
echo "MAIKO_RELEASE_TAG=${{ steps.maiko.outputs.maiko_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@" >>${GITHUB_ENV}
- name: More Environment Variables
run: |
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_RELEASE_TAG#medley-}" >>${GITHUB_ENV}
@@ -182,27 +196,26 @@ jobs:
- name: Establish job outputs
id: job_outputs
run: |
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "COMBINED_RELEASE_TAG=${COMBINED_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_RELEASE_TAG=${MEDLEY_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MEDLEY_SHORT_RELEASE_TAG=${MEDLEY_SHORT_RELEASE_TAG}" >> ${GITHUB_OUTPUT}
echo "MAIKO_RELEASE_TAG=${MAIKO_RELEASE_TAG}" >> $GITHUB_OUTPUT;
echo "ARTIFACTS_FILENAME_TEMPLATE=${ARTIFACTS_FILENAME_TEMPLATE}" >> ${GITHUB_OUTPUT}
# Setup some needed dirs in workspace
- name: Create work dirs
run: mkdir -p ${TARBALL_DIR}
# Download Maiko Release Assets
# Download Maiko Release Assets and untar it
- name: Download Release Assets
uses: robinraju/release-downloader@v1.6
with:
repository: ${{ github.repository_owner }}/maiko
token: ${{ secrets.GITHUB_TOKEN }}
latest: true
out-file-path: ${{ env.TARBALL_DIR }}
fileName: "${{ env.MAIKO_RELEASE_TAG }}-linux.*.tgz"
- name: Untar Maiko Release for use in loadup
run: |
tar -xzf "${TARBALL_DIR}/${{ env.MAIKO_RELEASE_TAG }}-linux.x86_64.tgz"
gh release download ${MAIKO_RELEASE_TAG} \
-D ${TARBALL_DIR} \
--repo ${{ github.repository_owner }}/maiko \
-p '*.tgz'
tar -xzf "${TARBALL_DIR}/${MAIKO_RELEASE_TAG}-linux.x86_64.tgz"
env:
GITHUB_TOKEN: ${{ secrets.MAIKO_TOKEN }}
# Checkout Notecards and tar it in the tarballsdir
- name: Checkout Notecards
@@ -210,11 +223,11 @@ jobs:
with:
repository: ${{ github.repository_owner }}/notecards
path: ./notecards
- run: mv ./notecards ../notecards
- name: Tar notecards into tarball dir
run: |
cd ..
tar cfz medley/${TARBALL_DIR}/notecards.tgz notecards
mv ./notecards ../notecards
cd ../notecards
git archive --format=tgz --output="${TARBALL_DIR}/notecards.tgz" --prefix=notecards/ main
# Install vnc
- name: Install vnc
@@ -224,7 +237,6 @@ jobs:
run: |
Xvnc -geometry 1280x720 :0 &
export DISPLAY=":0"
PATH="$PWD/maiko:$PATH"
scripts/loadup-all.sh -apps
scripts/loadup-db.sh
@@ -233,15 +245,6 @@ jobs:
scripts/release-make-tars.sh "${MEDLEY_RELEASE_TAG}"
mv releases/"${MEDLEY_SHORT_RELEASE_TAG}"/*.tgz "${TARBALL_DIR}"
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
debs_filename_base=$(./build_deb.sh)
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_ENV;
echo "DEBS_FILENAME_BASE=${debs_filename_base}" >> $GITHUB_OUTPUT;
# Push the release up to github releases
- name: Delete existing release with same tag (if any)
uses: cb80/delrel@latest
@@ -250,29 +253,37 @@ jobs:
continue-on-error: true
- name: Push the release
id: push_release
id: push
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# ${{ env.TARBALL_DIR }}/notecards.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-loadups.tgz,
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz,
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
${{ env.TARBALL_DIR }}/${{ env.MEDLEY_RELEASE_TAG }}-runtime.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
draft: ${{ needs.inputs.outputs.draft }}
prerelease: false
generateReleaseNotes: true
token: ${{ secrets.GITHUB_TOKEN }}
# Save the tarball directory for subsequent jobs
- name: Save tarballs
uses: actions/upload-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
if-no-files-found: error
# JOB: linux_installer ##############################################################
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
# Create the linux installers (.deb and .tgz) and push to release on github
#
windows_installer:
linux_installer:
runs-on: windows-latest
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup]
if: |
@@ -280,6 +291,157 @@ jobs:
|| needs.inputs.outputs.force == 'true'
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
echo "DEBS_DIR=installers/deb/debs" >>${GITHUB_ENV}
echo "TARS_DIR=installers/deb/tars" >>${GITHUB_ENV}
echo "TARBALL_DIR=installers/deb/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" \
>>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create taball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the deb files as well as the tgz files
- name: Build .deb files for 3 architectures
id: debs
run: |
cd installers/deb
./build_deb.sh
# Push the debs and tgz up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
${{ env.DEBS_DIR }}/*.deb,
${{ env.TARS_DIR }}/*.tgz
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
- name: Rename medley tar for the x86_64 platform
run: |
cd ${{ env.TARS_DIR }}
mv medley-full-linux-x86_64-*.tgz medley.tgz
- name: Save medley tar for use in cygwin installers
uses: actions/upload-artifact@v3
with:
name: medley-tar
path: |
${{ env.TARS_DIR }}/medley.tgz
# JOB: macos_installer ##############################################################
#
# Create the macos installers (.dmg and .zip) and push to release on github
#
macos_installer:
runs-on: macos-12
needs: [inputs, sentry, loadup]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
# if: false
defaults:
run:
shell: bash
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Environment variables
- name: Environment variables
run: |
MACOS_DIR=installers/macos
echo "MACOS_DIR=${MACOS_DIR}" >>${GITHUB_ENV}
echo "ARTIFACTS_DIR=${MACOS_DIR}/artifacts" >>${GITHUB_ENV}
echo "TARBALL_DIR=${MACOS_DIR}/tmp/tarballs" >>${GITHUB_ENV}
echo "MEDLEY_RELEASE_TAG=${{ needs.loadup.outputs.medley_release_tag }}" >>${GITHUB_ENV}
echo "ARTIFACTS_FILENAME_TEMPLATE=${{ needs.loadup.outputs.artifacts_filename_template }}" >>${GITHUB_ENV}
# Create tarball dir
- run: mkdir -p ${TARBALL_DIR}
# Get the tarballs
- name: Get tarballs
uses: actions/download-artifact@v3
with:
name: tarballs
path: ${{ env.TARBALL_DIR }}
# Build the .dmg and .zip files
- name: Build .dmg & .zip files
id: dmg-zip
run: |
cd ${MACOS_DIR}
./build_artifacts.sh
# Push the .dmg and .zip up to github releases
- name: Push the release
id: push_release
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts:
# 2023-07-20 not yet building dmg -- ${{ env.ARTIFACTS_DIR }}/*.dmg,
${{ env.ARTIFACTS_DIR }}/*.zip
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# JOB: cygwin_installer #############################################################
#
# Create the Windows installer, push it up to the release on github and
# update the downloads page on OIO
#
cygwin_installer:
runs-on: windows-2022
needs: [inputs, sentry, loadup, linux_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
outputs:
cygwin_installer: ${{ steps.compile_iss.outputs.CYGWIN_INSTALLER }}
steps:
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
@@ -294,24 +456,59 @@ jobs:
echo "MEDLEY_RELEASE_TAG=$mrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=$msrt" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$aft="${{ needs.loadup.outputs.artifacts_filename_template }}"
echo "ARTIFACTS_FILENAME_TEMPLATE=$aft" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$debs="${{ needs.loadup.outputs.debs_filename_base }}"
echo "DEBS_FILENAME_BASE=$debs" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Download vnc viewer
- name: Download vncviewer
# Retrieve medley tars from artifact store
- name: Retrieve medley tar
uses: actions/download-artifact@v3
with:
name: medley-tar
path: installers/cygwin/
# Download maiko cygwin build
- name: Retrieve maiko cygwin build
shell: powershell
env:
GH_TOKEN: ${{ secrets.MAIKO_TOKEN }}
run: |
gh release download ${{ needs.loadup.outputs.maiko_release_tag }} --repo interlisp/maiko --pattern ${{ needs.loadup.outputs.maiko_release_tag }}-cygwin.x86_64.tgz --output installers\cygwin\maiko-cygwin.x86_64.tgz
# Download cygwin installer to be included by medley.iss
- name: Download cygwin installer
id: cygwin
shell: powershell
run: |
$url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
$output = "installers\win\vncviewer64-1.12.0.exe"
(New-Object System.Net.WebClient).DownloadFile($url, $output)
wget https://cygwin.com/setup-x86_64.exe -OutFile installers\cygwin\setup-x86_64.exe
# Download vnc viewer
#- name: Download vncviewer
# shell: powershell
# run: |
# $url = "https://sourceforge.net/projects/tigervnc/files/stable/1.12.0/vncviewer64-1.12.0.exe"
# $output = "installers\win\vncviewer64-1.12.0.exe"
# (New-Object System.Net.WebClient).DownloadFile($url, $output)
# Run iscc.exe to compile the installer
- name: Compile medley.iss
#- name: Compile medley.iss
# shell: powershell
# run: |
# iscc installers\win\medley.iss
# $filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
# echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
# Run iscc.exe to compile the installer
- name: Compile cygwin_medley.iss
id: compile_iss
shell: powershell
run: |
iscc installers\win\medley.iss
$filename="medley-install_${env:COMBINED_RELEASE_TAG}_x64.exe"
echo "INSTALLER_FILENAME=$filename" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
$Env:CYGWIN_INSTALLER_BASE="medley-full-cygwin-x86_64-${env:COMBINED_RELEASE_TAG}"
$CYGWIN_INSTALLER="${Env:CYGWIN_INSTALLER_BASE}.exe"
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "CYGWIN_INSTALLER=$CYGWIN_INSTALLER" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
iscc installers\cygwin\medley.iss
# Upload windows installer to release
- name: Upload windows installer to release
@@ -319,7 +516,7 @@ jobs:
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: installers/win/${{ env.INSTALLER_FILENAME }}
artifacts: installers/cygwin/${{ env.CYGWIN_INSTALLER }}
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
@@ -327,18 +524,65 @@ jobs:
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Install the OpenSSH Client
- name: Install the OpenSSH Client
shell: powershell
# JOB: downloads_page ################################################################
#
# Update the downloads page on OIO
#
downloads_page:
runs-on: ubuntu-latest
needs: [inputs, sentry, loadup, linux_installer, macos_installer, cygwin_installer]
if: |
needs.sentry.outputs.release_not_built == 'true'
|| needs.inputs.outputs.force == 'true'
steps:
# Environment variables
- name: Environment Varibales (from other jobs)
run: |
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
crt="${{ needs.loadup.outputs.combined_release_tag }}"
echo "COMBINED_RELEASE_TAG=${crt}" >>${GITHUB_ENV}
mrt="${{ needs.loadup.outputs.medley_release_tag }}"
echo "MEDLEY_RELEASE_TAG=${mrt}" >>${GITHUB_ENV}
msrt="${{ needs.loadup.outputs.medley_short_release_tag }}"
echo "MEDLEY_SHORT_RELEASE_TAG=${msrt}" >>${GITHUB_ENV}
cyginst="${{ needs.cygwin_installer.outputs.cygwin_installer }}"
echo "CYGWIN_INSTALLER=${cyginst}" >>${GITHUB_ENV}
# Checkout latest commit
- name: Checkout Medley
uses: actions/checkout@v3
# Upload a dummy file to release
# Needed since download url of the release changes on every update
# So this will be the final update before creating downloads page
# and we can use its url for the page
- run: echo "placeholder" >placeholder.txt
- name: Upload windows placeholder.txt to release
id: pushph
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifacts: placeholder.txt
tag: ${{ env.MEDLEY_RELEASE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitNameDuringUpdate: true
omitPrereleaseDuringUpdate: true
# Update the downloads page and the man page on OIO
- name: Update the downloads page and the man page to the OIO static page host
shell: bash
run: |
# Figure out filenames
download_url="${{ steps.push.outputs.html_url }}"
download_url="${{ steps.pushph.outputs.html_url }}"
download_url="${download_url/\/tag\//\/download\/}"
local_template="installers/downloads_page/medley_downloads.html"
local_filename="medley_downloads.html"
@@ -356,9 +600,9 @@ jobs:
# Fill in downloads page template
sed \
-e "s/@@@MEDLEY.SHORT.RELEASE.TAG@@@/${MEDLEY_SHORT_RELEASE_TAG}/g" \
-e "s/@@@COMBINED.RELEASE.TAG@@@/${COMBINED_RELEASE_TAG}/g" \
-e "s~@@@DOWNLOAD_URL@@@~${download_url}~g" \
-e "s/@@@DEBS.FILENAME.BASE@@@/${DEBS_FILENAME_BASE}/g" \
-e "s/@@@WINDOWS.INSTALLER.FILENAME@@@/${INSTALLER_FILENAME}/g" \
-e "s~@@@CYGWIN.INSTALLER@@@~${CYGWIN_INSTALLER}~g" \
< "${local_template}" > "${local_filename}"
# Create sftp instruction file
echo "-rm ${remote_filepath}.oldold" > batch
@@ -373,9 +617,15 @@ jobs:
env:
SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
# Remove placeholder.txt
- name: Remove placeholder.txt
run: |
gh release delete-asset ${{ env.MEDLEY_RELEASE_TAG }} placeholder.txt --yes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
######################################################################################
# JOB: complete #####################################################################
# Use set-sentry-action to determine set the sentry that says this release has
# been successfully built
@@ -387,9 +637,16 @@ jobs:
outputs:
build_successful: ${{ steps.output.outputs.build_successful }}
needs: [inputs, sentry, loadup, windows_installer]
needs: [inputs, sentry, loadup, downloads_page]
steps:
# Delete the tarballs artifact
- name: Delete tarballs artifact
uses: geekyeggo/delete-artifact@v2
with:
name: tarballs
failOnError: false
# Checkout the actions for this repo owner
- name: Checkout Actions
uses: actions/checkout@v3
@@ -411,21 +668,4 @@ jobs:
echo "build_successful='true'" >> $GITHUB_OUTPUT
######################################################################################
# - name: Download the Windows installer created in windows job
# uses: actions/download-artifact@v3
# with:
# name: windows_installer
# path: installers/win
# - name: Rename the Windows installer w/ version tag
# run: |
# maiko_release_tag="${{ steps.maiko.outputs.latest_tag }}"
# combined_release_tag="${MEDLEY_RELEASE_TAG#medley-}_${maiko_release_tag#maiko-}"
# windows_installer_filename="medley_install_${combined_release_tag}_x64.exe"
# cd installers/win
# mv medley_install_vXXXVERSIONXXX_x64.exe "${windows_installer_filename}"
# echo "WINDOWS_INSTALLER_FILENAME=${windows_installer_filename}" >>${GITHUB_ENV}
######################################################################################

View File

@@ -84,6 +84,7 @@ jobs:
echo "force=false" >> $GITHUB_OUTPUT;
fi
######################################################################################
@@ -94,8 +95,7 @@ jobs:
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
OIO_SSH_KEY: ${{ secrets.OIO_SSH_KEY }}
secrets: inherit
######################################################################################
@@ -107,9 +107,7 @@ jobs:
with:
draft: ${{ needs.inputs.outputs.draft }}
force: ${{ needs.inputs.outputs.force }}
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
secrets: inherit
######################################################################################

View File

@@ -1,12 +1,11 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Jan-2023 12:44:20" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;9 21022
(FILECREATED "16-Jun-2023 17:20:09" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;11 21130
:CHANGES-TO (VARS APPS-INITCOMS)
(FNS Apps.DoInit)
:CHANGES-TO (FNS Apps.DoInit)
:PREVIOUS-DATE "19-Jan-2023 11:57:40" {DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;8
)
:PREVIOUS-DATE "19-Jan-2023 12:44:20"
{DSK}<home>frank>il>medley>gmedley>greetfiles>APPS-INIT.;10)
(PRETTYCOMPRINT APPS-INITCOMS)
@@ -170,7 +169,11 @@
(* ;; " create the Documentation and ROOMS, Notecards Activation Buttons, if needed")
(Apps.CreateButtons T])
(Apps.CreateButtons T)
(* ;; " Make sure Notecards doesn't try to load its HASH file in NC.PostGreet")
(SETTOPVAL '\NC.SourceAccessFlg NIL])
(Apps.CreateButtons
[LAMBDA (DoDocsToo) (* ; "Edited 13-Dec-2022 12:51 by frank")
@@ -373,8 +376,8 @@
(BKSYSBUF " ")
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1146 20888 (Apps.InitNotecards 1156 . 5018) (Apps.DoInit 5020 . 8119) (
Apps.CreateButtons 8121 . 16945) (Apps.CreateLabel 16947 . 17757) (Apps.ActivateCLOS 17759 . 19108) (
Apps.ActivateRooms 19110 . 19961) (Apps.ShowDoc 19963 . 20112) (XCL-USER::EXEC_INTERLISP 20114 . 20886
(FILEMAP (NIL (1109 20996 (Apps.InitNotecards 1119 . 4981) (Apps.DoInit 4983 . 8227) (
Apps.CreateButtons 8229 . 17053) (Apps.CreateLabel 17055 . 17865) (Apps.ActivateCLOS 17867 . 19216) (
Apps.ActivateRooms 19218 . 20069) (Apps.ShowDoc 20071 . 20220) (XCL-USER::EXEC_INTERLISP 20222 . 20994
)))))
STOP

Binary file not shown.

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

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

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

View File

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

View File

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

Binary file not shown.

Binary file not shown.

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -11,15 +11,6 @@
###############################################################################
# set -x
# mess with file desscriptors so we get only one line on stdout
# so we can communicate only what we want back to any githib runner
# stash fd 1 in fd 3
exec 3>&1
# make fd 1 (stdout) be the same as stdout
# so none of the std output from this file will be captured by
# $() but it will still be written out to the tty (via stderr)
exec 1>&2
tarball_dir=tmp/tarballs
# Make sure we are in the right directory
@@ -32,6 +23,13 @@ then
exit 1
fi
# template for artifacts file names should be passed down in the ENV variable: ARTIFACTS_FILENAME_TEMPLATE
if [ -z "${ARTIFACTS_FILENAME_TEMPLATE}" ];
then
ARTIFACTS_FILENAME_TEMPLATE="medley-full-@@PLATFORM@@-@@ARCH@@-@@MEDLEY.RELEASE@@_@@MAIKO.RELEASE@@"
fi
# If running as a github action or -t arg, then skip downloading the tarballs
if ! [[ -n "${GITHUB_WORKSPACE}" || "$1" = "-t" ]];
@@ -69,7 +67,6 @@ fi
pushd ${tarball_dir} >/dev/null 2>/dev/null
medley_release=$(echo medley-*-loadups.tgz | sed "s/medley-\(.*\)-loadups.tgz/\1/")
maiko_release=$(echo maiko-*-linux.x86_64.tgz | sed "s/maiko-\(.*\)-linux.x86_64.tgz/\1/")
debs_filename_base="medley-full-${medley_release}_${maiko_release}"
popd >/dev/null 2>/dev/null
@@ -136,7 +133,7 @@ do
#
# Create tar file for this arch
#
filename="${debs_filename_base}-${wslp}-${arch}"
filename="$(echo ${ARTIFACTS_FILENAME_TEMPLATE} | sed -e "s#@@PLATFORM@@#${wslp}#" -e "s#@@ARCH@@#${arch}#" -e "s#@@MEDLEY.RELEASE@@#${medley_release}#" -e "s#@@MAIKO.RELEASE@@#${maiko_release}#" )"
mkdir -p tars
echo "Creating tar file tars/${filename}.tgz"
tar -C ${il_dir} -czf tars/${filename}.tgz .
@@ -151,8 +148,5 @@ do
done
done
# send just one line back to github $() construct
# do this by restoring fd 1 to what it was orginally
exec 1>&3
echo "${debs_filename_base}"
################################################################################################################
################################################################################################################

View File

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

View File

@@ -6,40 +6,44 @@
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.deb)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\.64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.deb)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.deb)
* ### Local Installations (for any Linux distro)
* #### Standard Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-linux-armv7l.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARMv7 machines](@@@DOWNLOAD_URL@@@/medley-full-linux-armv7l-@@@COMBINED.RELEASE.TAG@@@.tgz)
* #### Windows System for Linux
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-x86\_64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for x86\_64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-x86\_64-@@@COMBINED.RELEASE.TAG@@@.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/@@@DEBS.FILENAME.BASE@@@-wsl-aarch64.tgz)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for ARM64 machines](@@@DOWNLOAD_URL@@@/medley-full-wsl-aarch64-@@@COMBINED.RELEASE.TAG@@@.tgz)
* ## WINDOWS 10/11 (Medley runs in a Docker container)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@WINDOWS.INSTALLER.FILENAME@@@)
* ## WINDOWS 10/11 (Single install based on cygwin - Docker install deprecated)
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@ for Windows x64 machines](@@@DOWNLOAD_URL@@@/@@@CYGWIN.INSTALLER@@@)
* ## macOS 11 (Big Sur) and later - for both Intel and Apple Silicon
* ### DMG Installer
Not available
* ### ZIP Installer
[Release @@@MEDLEY.SHORT.RELEASE.TAG@@@](@@@DOWNLOAD_URL@@@/medley-full-macos-universal-@@@COMBINED.RELEASE.TAG@@@.zip)

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

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

View File

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

View File

@@ -0,0 +1 @@
APPLMedley

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

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

View File

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

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

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

View File

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

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

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

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

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

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 144 KiB

View File

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

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

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

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<pkg-ref id="org.interlisp.Medley"/>
<options customize="always" require-scripts="false" hostArchitectures="x86_64,arm64" />
<domains enable_anywhere="false" enable_currentUserHome="true" enable_localSystem="false" />
<choices-outline>
<line choice="default">
<line choice="org.interlisp.Medley" />
</line>
<line choice="Location" />
</choices-outline>
<choice id="default" visible="false" />
<choice id="org.interlisp.Medley"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<choice id="Location"
description="D Install for all Users?"
title="T Install for all users?"
customLocation="tests"
>
<pkg-ref id="org.interlisp.Medley"/>
</choice>
<pkg-ref id="org.interlisp.Medley" version="01.01.01" onConclusion="none">Medley-base.pkg</pkg-ref>
</installer-gui-script>

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# functions to discover what directory this script is being executed from
get_abs_filename() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}
get_script_dir() {
# call this with ${BASH_SOURCE[0]:-$0} as its (only) parameter
# set -x
local SCRIPT_PATH="$( get_abs_filename "$1" )";
pushd . > '/dev/null';
while [ -h "$SCRIPT_PATH" ];
do
cd "$( dirname -- "$SCRIPT_PATH"; )";
SCRIPT_PATH="$( readlink -f -- "$SCRIPT_PATH"; )";
done
cd "$( dirname -- "$SCRIPT_PATH"; )" > '/dev/null';
SCRIPT_PATH="$( pwd; )";
popd > '/dev/null';
# set +x
echo "${SCRIPT_PATH}"
}
SCRIPTDIR=$(get_script_dir "${BASH_SOURCE[0]:-$0}")
touch ~/.profile
cat >> ~/.profile <<EOF
PATH=\${PATH}:${SCRIPTDIR}
EOF
rm ${SCRIPTDIR}/medley_add2path.command

View File

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

View File

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

View File

@@ -34,7 +34,7 @@ SolidCompression=yes
; 64-bit Program Files directory and the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64
OutputDir="."
OutputBaseFilename="medley-install_{#version}_{#x86_or_x64}"
OutputBaseFilename="medley-full-{#version}-windows-{#x86_or_x64}"
SetupIconFile="Medley.ico"
DisableWelcomePage=no
MissingRunOnceIdsWarning=no

View File

@@ -1,15 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
(FILECREATED " 9-Jul-2022 09:41:26" 
|{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>BIGBITMAPS.;12| 108851
(FILECREATED "31-Jul-2023 13:39:50" |{WMEDLEY}<library>BIGBITMAPS.;13| 109376
:EDIT-BY |rmk|
:CHANGES-TO (VARS BIGBITMAPSCOMS)
(FNS \\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM \\GENERIC.DSPCREATE.BIGBM
\\DSPCREATE.BIGBM)
(MACROS |\\SFInvert|)
(FNS BIGBITMAPEQUAL)
:PREVIOUS-DATE "26-Oct-2021 14:51:38"
|{DSK}<users>kaplan>local>medley3.5>working-medley>library>BIGBITMAPS.;6|)
:PREVIOUS-DATE " 9-Jul-2022 09:41:26" |{WMEDLEY}<library>BIGBITMAPS.;12|)
; Copyright (c) 1991, 1993-1994 by Venue.
@@ -24,8 +22,8 @@
(MACROS |GetNewFragment|)
(MACROS |\\SFInvert|))
(INITRECORDS BIGBM)
(FNS BIGBITMAPP BITBLT.BIGBM BITMAPCREATE.BIGBM BITMAPCREATE BITMAPCOPY BLTSHADE.BIGBM BITBLT
\\ORG.BITBLT \\BLTSHADE.DISPLAY \\RESHOWBORDER1)
(FNS BIGBITMAPP BITBLT.BIGBM BITMAPCREATE.BIGBM BITMAPCREATE BITMAPCOPY BIGBITMAPEQUAL
BLTSHADE.BIGBM BITBLT \\ORG.BITBLT \\BLTSHADE.DISPLAY \\RESHOWBORDER1)
(FNS \\DRAWCIRCLE.BIGBM \\FILLCIRCLE.BIGBM \\DRAWELLIPSE.BIGBM \\DRAWCURVE.BIGBM
\\DRAWLINE.BIGBM.DASH \\DRAWLINE.BIGBM.NODASH)
(FNS \\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM)
@@ -353,6 +351,20 @@
0 0 NIL NIL 'INPUT 'REPLACE 0)
(RETURN NEWBITMAP))))
(BIGBITMAPEQUAL
(LAMBDA (BM1 BM2) (* \; "Edited 31-Jul-2023 13:08 by rmk")
(* |;;| "Fields may not be SMALLP")
(AND (|type?| BIGBM |of| BM1)
(|type?| BIGBM |of| BM2)
(IEQP (|ffetch| (BIGBM BIGBMWIDTH) |of| BM1)
(|ffetch| (BIGBM BIGBMWIDTH) |of| BM2))
(IEQP (|ffetch| (BIGBM BIGBMHEIGHT) |of| BM1)
(|ffetch| (BIGBM BIGBMHEIGHT) |of| BM2))
(|for| B1 |in| (|ffetch| (BIGBM BIGBMLIST) |of| BM1) |as| B2
|in| (|ffetch| (BIGBM BIGBMLIST) |of| BM2) |always| (EQUALBITMAPP B1 B2)))))
(BLTSHADE.BIGBM
(LAMBDA (TEXTURE DESTINATION DESTLEFT DESTBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION)
(* \; "Edited 17-Oct-89 19:01 by takeshi")
@@ -1699,15 +1711,15 @@
)
(PUTPROPS BIGBITMAPS COPYRIGHT ("Venue" 1991 1993 1994))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (3546 48244 (BIGBITMAPP 3556 . 3702) (BITBLT.BIGBM 3704 . 14527) (BITMAPCREATE.BIGBM
14529 . 15871) (BITMAPCREATE 15873 . 17475) (BITMAPCOPY 17477 . 18012) (BLTSHADE.BIGBM 18014 . 21150)
(BITBLT 21152 . 22800) (\\ORG.BITBLT 22802 . 34371) (\\BLTSHADE.DISPLAY 34373 . 43611) (
\\RESHOWBORDER1 43613 . 48242)) (48245 71523 (\\DRAWCIRCLE.BIGBM 48255 . 51618) (\\FILLCIRCLE.BIGBM
51620 . 55666) (\\DRAWELLIPSE.BIGBM 55668 . 60188) (\\DRAWCURVE.BIGBM 60190 . 64040) (
\\DRAWLINE.BIGBM.DASH 64042 . 68401) (\\DRAWLINE.BIGBM.NODASH 68403 . 71521)) (71524 71893 (
\\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM 71534 . 71891)) (72025 85168 (DSPDESTINATION 72035 .
75933) (|\\SFFixY| 75935 . 81657) (|\\SFFixDestination| 81659 . 82842) (|\\SFFixClippingRegion| 82844
. 85166)) (85169 93255 (\\SW2BM 85179 . 90203) (BITMAPHEIGHT 90205 . 90703) (BITMAPWIDTH 90705 .
91197) (|\\SFFixFont| 91199 . 92171) (BITSPERPIXEL 92173 . 93253)) (93256 108609 (COLORIZEBITMAP 93266
. 96076) (\\BWTOCOLORBLT 96078 . 102671) (UNCOLORIZEBITMAP 102673 . 108607)))))
(FILEMAP (NIL (3364 48769 (BIGBITMAPP 3374 . 3520) (BITBLT.BIGBM 3522 . 14345) (BITMAPCREATE.BIGBM
14347 . 15689) (BITMAPCREATE 15691 . 17293) (BITMAPCOPY 17295 . 17830) (BIGBITMAPEQUAL 17832 . 18537)
(BLTSHADE.BIGBM 18539 . 21675) (BITBLT 21677 . 23325) (\\ORG.BITBLT 23327 . 34896) (\\BLTSHADE.DISPLAY
34898 . 44136) (\\RESHOWBORDER1 44138 . 48767)) (48770 72048 (\\DRAWCIRCLE.BIGBM 48780 . 52143) (
\\FILLCIRCLE.BIGBM 52145 . 56191) (\\DRAWELLIPSE.BIGBM 56193 . 60713) (\\DRAWCURVE.BIGBM 60715 . 64565
) (\\DRAWLINE.BIGBM.DASH 64567 . 68926) (\\DRAWLINE.BIGBM.NODASH 68928 . 72046)) (72049 72418 (
\\GENERIC.DSPCREATE.DESTINATION.BITMAP?.BIGBM 72059 . 72416)) (72550 85693 (DSPDESTINATION 72560 .
76458) (|\\SFFixY| 76460 . 82182) (|\\SFFixDestination| 82184 . 83367) (|\\SFFixClippingRegion| 83369
. 85691)) (85694 93780 (\\SW2BM 85704 . 90728) (BITMAPHEIGHT 90730 . 91228) (BITMAPWIDTH 91230 .
91722) (|\\SFFixFont| 91724 . 92696) (BITSPERPIXEL 92698 . 93778)) (93781 109134 (COLORIZEBITMAP 93791
. 96601) (\\BWTOCOLORBLT 96603 . 103196) (UNCOLORIZEBITMAP 103198 . 109132)))))
STOP

Binary file not shown.

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (128 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (logic ((100 (
53 37 NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260
NOLOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)
) (107 (61284 61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45
177 NOLOCKSHIFT)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (
61234 61235 NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272
NOLOCKSHIFT)) (126 (61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (128 (61356 61356
NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138
(61305 61303 NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (145 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239
61238 NOLOCKSHIFT)) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295
NOLOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)
) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36
NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105
(100 68 LOCKSHIFT)) (106 (174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41
NOLOCKSHIFT)) (109 (61254 61255 NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (
112 (47 61300 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64
NOLOCKSHIFT)) (118 (61282 61283 LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302
NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (
180 184 LOCKSHIFT)) (125 (172 61244 LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250
NOLOCKSHIFT)) (128 (61298 61253 NOLOCKSHIFT)) (129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (
133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (
61356 61362 LOCKSHIFT)) (138 (61254 61291 NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296
61266 NOLOCKSHIFT)) (150 (61305 61303 NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72
LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (
61396 61380 NOLOCKSHIFT)) (102 (61398 61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399
61383 NOLOCKSHIFT)) (105 (61232 8743 NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86
NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438
NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (61248 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394 61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (
119 (176 8546 NOLOCKSHIFT)) (120 (167 8744 NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385
NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT)) (124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (128 (39 34 NOLOCKSHIFT)) (129 (93 125
NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137 (61438 67 NOLOCKSHIFT)) (138 (8739 74
NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90 NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95
61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (61354 8573 NOLOCKSHIFT)) (150 (61286 8741
NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740 NOLOCKSHIFT)) (153 (61400 61384
NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32
32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406 61368 NOLOCKSHIFT)) (160 2SHIFTDOWN
. 2SHIFTUP)) DANDELION) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41 NOLOCKSHIFT)) (102 (57 37
NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101 69 LOCKSHIFT)) (106 (103
71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116 84 LOCKSHIFT)) (110 (56 95
NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116
(53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (119 (63 47 NOLOCKSHIFT)) (
120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (123 (99 67 LOCKSHIFT)) (
124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127 (119 87 LOCKSHIFT)) (
128 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106 74
LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (GREEK ((100 (
53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814
LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843
9811 LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814
LOCKSHIFT)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (
9851 9819 LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)
) (128 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828
9796 LOCKSHIFT)) (151 (9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (
154 (9840 9808 LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT
) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP))
DANDELION) (ITALIAN ((100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (
116 (51 61872 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81
LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (128 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92
124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (
145 (95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (
151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (
155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (SPANISH ((100 (53
61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102 (54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50
61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (
97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (
111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (59 58 NOLOCKSHIFT)) (129
(203 187 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139
(98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (
143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (161 191 NOLOCKSHIFT)) (148 (114
82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72
LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156
LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (44 171 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (FRENCH ((100 (53 61905 NOLOCKSHIFT)) (101 (52
61888 NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (
105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (
109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119
87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102
70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (145 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DANDELION) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (
116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (
120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (
124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (
128 (39 34 NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145
(95 94 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (
121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (
109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780
LOCKSHIFT)) (159 (61925 61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DANDELION) (STANDARD-RUSSIAN ((
100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53 NOLOCKSHIFT)) (103 (10085 10037
LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (106 (10068 10020 LOCKSHIFT)) (107
(10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029 LOCKSHIFT)) (110 (37 48
NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088 10040 LOCKSHIFT)) (119 (
10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038 LOCKSHIFT)) (122 (95 56
NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125 (10091 10043 LOCKSHIFT)
) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (128 (10095 10047 LOCKSHIFT)) (129 (
10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (138 (10080 10032
LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (41
40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022 LOCKSHIFT)) (150 (10081 10033
LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT)) (153 (46 55 NOLOCKSHIFT)) (154
(10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DANDELION))

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (1 1
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (128 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (logic ((100 (
53 37 NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260
NOLOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)
) (107 (61284 61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45
177 NOLOCKSHIFT)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (
61234 61235 NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272
NOLOCKSHIFT)) (126 (61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (128 (61356 61356
NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138
(61305 61303 NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (145 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239
61238 NOLOCKSHIFT)) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295
NOLOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)
) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36
NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105
(100 68 LOCKSHIFT)) (106 (174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41
NOLOCKSHIFT)) (109 (61254 61255 NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (
112 (47 61300 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64
NOLOCKSHIFT)) (118 (61282 61283 LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302
NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (
180 184 LOCKSHIFT)) (125 (172 61244 LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250
NOLOCKSHIFT)) (128 (61298 61253 NOLOCKSHIFT)) (129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (
133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (
61356 61362 LOCKSHIFT)) (138 (61254 61291 NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296
61266 NOLOCKSHIFT)) (150 (61305 61303 NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72
LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (
61396 61380 NOLOCKSHIFT)) (102 (61398 61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399
61383 NOLOCKSHIFT)) (105 (61232 8743 NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86
NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438
NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (61248 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394 61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (
119 (176 8546 NOLOCKSHIFT)) (120 (167 8744 NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385
NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT)) (124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (128 (39 34 NOLOCKSHIFT)) (129 (93 125
NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137 (61438 67 NOLOCKSHIFT)) (138 (8739 74
NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90 NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (95
61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (61354 8573 NOLOCKSHIFT)) (150 (61286 8741
NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740 NOLOCKSHIFT)) (153 (61400 61384
NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32
32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406 61368 NOLOCKSHIFT)) (160 2SHIFTDOWN
. 2SHIFTUP)) DORADO) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41 NOLOCKSHIFT)) (102 (57 37
NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101 69 LOCKSHIFT)) (106 (103
71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116 84 LOCKSHIFT)) (110 (56 95
NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116
(53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (119 (63 47 NOLOCKSHIFT)) (
120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (123 (99 67 LOCKSHIFT)) (
124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127 (119 87 LOCKSHIFT)) (
128 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106 74
LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (GREEK ((100 (
53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814
LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843
9811 LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814
LOCKSHIFT)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (
9851 9819 LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)
) (128 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (145 (95 94 NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828
9796 LOCKSHIFT)) (151 (9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (
154 (9840 9808 LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT
) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP))
DORADO) (ITALIAN ((100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (
116 (51 61872 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81
LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (128 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92
124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (
145 (95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (
151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (
155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (SPANISH ((100 (53
61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102 (54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50
61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (
97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (
111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (59 58 NOLOCKSHIFT)) (129
(203 187 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139
(98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (
143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (161 191 NOLOCKSHIFT)) (148 (114
82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72
LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156
LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (44 171 NOLOCKSHIFT)) (159 (61 43
NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (FRENCH ((100 (53 61905 NOLOCKSHIFT)) (101 (52
61888 NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (
105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (
109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (204 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119
87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (128 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102
70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (145 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DORADO) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) . IGNORE) (
116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (
120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (
124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (
128 (39 34 NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (133 (92 124
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145
(95 94 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (
121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (
109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780
LOCKSHIFT)) (159 (61925 61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DORADO) (STANDARD-RUSSIAN ((
100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53 NOLOCKSHIFT)) (103 (10085 10037
LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (106 (10068 10020 LOCKSHIFT)) (107
(10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029 LOCKSHIFT)) (110 (37 48
NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (115 (1 1 NOLOCKSHIFT) .
IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088 10040 LOCKSHIFT)) (119 (
10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038 LOCKSHIFT)) (122 (95 56
NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125 (10091 10043 LOCKSHIFT)
) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (128 (10095 10047 LOCKSHIFT)) (129 (
10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (133 (92 124 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (138 (10080 10032
LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (145 (41
40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022 LOCKSHIFT)) (150 (10081 10033
LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT)) (153 (46 55 NOLOCKSHIFT)) (154
(10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DORADO))

View File

@@ -1,171 +0,0 @@
((EUROPEAN ((100 (53 197 NOLOCKSHIFT)) (101 (52 196 NOLOCKSHIFT)) (102 (54 198 NOLOCKSHIFT)) (103 (
61887 61759 LOCKSHIFT)) (104 (55 199 NOLOCKSHIFT)) (105 (61888 61760 LOCKSHIFT)) (106 (61872 61744
LOCKSHIFT)) (107 (61860 61732 LOCKSHIFT)) (108 (48 126 NOLOCKSHIFT)) (109 (61892 61764 LOCKSHIFT)) (
110 (203 207 NOLOCKSHIFT)) (111 (61919 61791 LOCKSHIFT)) (112 (47 191 NOLOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (51 195 NOLOCKSHIFT)) (117 (50 194 NOLOCKSHIFT)) (118 (61873 61745
LOCKSHIFT)) (119 (61858 61730 LOCKSHIFT)) (120 (61874 61746 LOCKSHIFT)) (121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT)) (123 (61886 61758 LOCKSHIFT)) (124 (61864 61736 LOCKSHIFT)) (125 (61903
61775 LOCKSHIFT)) (126 (61908 61780 LOCKSHIFT)) (127 (241 225 LOCKSHIFT)) (171 (187 170 LOCKSHIFT)) (
129 (249 233 LOCKSHIFT)) (132 (49 193 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (61905 61777 LOCKSHIFT)) (137 (61869 61741 LOCKSHIFT)) (138 (61877 61749
LOCKSHIFT)) (139 (61906 61778 LOCKSHIFT)) (140 (251 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (
250 234 LOCKSHIFT)) (143 (59 58 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (171 186 LOCKSHIFT
)) (148 (61904 61776 LOCKSHIFT)) (149 (61920 61792 LOCKSHIFT)) (150 (61921 61793 LOCKSHIFT)) (151 (
61857 61729 LOCKSHIFT)) (152 (61863 61735 LOCKSHIFT)) (153 (56 200 NOLOCKSHIFT)) (154 (61900 61772
LOCKSHIFT)) (155 (239 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
246 230 LOCKSHIFT)) (159 (207 176 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (logic ((100 (53 37
NOLOCKSHIFT)) (101 (52 164 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (61258 61260 NOLOCKSHIFT)) (
104 (55 38 NOLOCKSHIFT)) (105 (61292 61293 NOLOCKSHIFT)) (106 (61271 61270 NOLOCKSHIFT)) (107 (61284
61285 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61307 61306 NOLOCKSHIFT)) (110 (45 177 NOLOCKSHIFT
)) (111 (61269 61268 LOCKSHIFT)) (112 (172 174 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51
35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61240 61241 NOLOCKSHIFT)) (119 (61234 61235
NOLOCKSHIFT)) (120 (61266 61262 NOLOCKSHIFT)) (121 (61365 61365 NOLOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)
) (123 (61275 61274 NOLOCKSHIFT)) (124 (61300 61299 NOLOCKSHIFT)) (125 (61273 61272 NOLOCKSHIFT)) (126
(61282 61283 NOLOCKSHIFT)) (127 (61256 61257 NOLOCKSHIFT)) (171 (61356 61356 NOLOCKSHIFT)) (129 (93
125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT)
. IGNORE) (135 (61250 61251 NOLOCKSHIFT)) (137 (61298 61297 NOLOCKSHIFT)) (138 (61305 61303
NOLOCKSHIFT)) (139 (61265 61264 NOLOCKSHIFT)) (140 (61364 61364 NOLOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (61281 233 NOLOCKSHIFT)) (143 (61351 61351 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (61357 61357 NOLOCKSHIFT)) (148 (61279 61278 NOLOCKSHIFT)) (149 (61239 61238 NOLOCKSHIFT)
) (150 (61290 61290 NOLOCKSHIFT)) (151 (61263 61261 NOLOCKSHIFT)) (152 (61295 61295 NOLOCKSHIFT)) (153
(56 42 NOLOCKSHIFT)) (154 (61252 61253 NOLOCKSHIFT)) (155 (61254 61255 NOLOCKSHIFT)) (156 LOCKDOWN .
LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160
2SHIFTDOWN . 2SHIFTUP)) DOVE) (MATH ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126
NOLOCKSHIFT)) (103 (61284 61285 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (
174 61245 NOLOCKSHIFT)) (107 (61369 61363 NOLOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (61254 61255
NOLOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (173 61246 LOCKSHIFT)) (112 (47 61300 NOLOCKSHIFT)) (115
(8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (61282 61283
LOCKSHIFT)) (119 (61287 61286 NOLOCKSHIFT)) (120 (61301 61302 NOLOCKSHIFT)) (121 (61351 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT)) (123 (175 61247 LOCKSHIFT)) (124 (180 184 LOCKSHIFT)) (125 (172 61244
LOCKSHIFT)) (126 (61256 61257 LOCKSHIFT)) (127 (44 61250 NOLOCKSHIFT)) (171 (61298 61253 NOLOCKSHIFT))
(129 (93 61265 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9
NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (61356 61362 LOCKSHIFT)) (138 (61254 61291
NOLOCKSHIFT)) (139 (98 61360 NOLOCKSHIFT)) (140 (61309 177 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (
142 (46 61251 NOLOCKSHIFT)) (143 (61299 61252 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (
95 94 NOLOCKSHIFT)) (148 (61358 82 LOCKSHIFT)) (149 (61296 61266 NOLOCKSHIFT)) (150 (61305 61303
NOLOCKSHIFT)) (151 (61308 61267 LOCKSHIFT)) (152 (61288 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154
(61357 61361 NOLOCKSHIFT)) (155 (61292 61293 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (91 61264 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DOVE) (OFFICE ((100 (61397 61381 NOLOCKSHIFT)) (101 (61396 61380 NOLOCKSHIFT)) (102 (61398
61382 NOLOCKSHIFT)) (103 (8557 8554 NOLOCKSHIFT)) (104 (61399 61383 NOLOCKSHIFT)) (105 (61232 8743
NOLOCKSHIFT)) (106 (61346 8571 NOLOCKSHIFT)) (107 (188 86 NOLOCKSHIFT)) (108 (61402 61386 NOLOCKSHIFT)
) (109 (210 8738 NOLOCKSHIFT)) (110 (61437 61438 NOLOCKSHIFT)) (111 (163 8558 NOLOCKSHIFT)) (112 (
61248 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (61395 61379 NOLOCKSHIFT)) (117 (61394
61378 NOLOCKSHIFT)) (118 (185 8553 NOLOCKSHIFT)) (119 (176 8546 NOLOCKSHIFT)) (120 (167 8744
NOLOCKSHIFT)) (121 (97 8745 NOLOCKSHIFT)) (122 (61401 61385 NOLOCKSHIFT)) (123 (162 8570 NOLOCKSHIFT))
(124 (61437 88 NOLOCKSHIFT)) (125 (111 8569 NOLOCKSHIFT)) (126 (61289 8737 NOLOCKSHIFT)) (127 (44 60
NOLOCKSHIFT)) (171 (39 34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (61393 61377 NOLOCKSHIFT)) (
165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (61233 8742 NOLOCKSHIFT)) (137
(61438 67 NOLOCKSHIFT)) (138 (8739 74 NOLOCKSHIFT)) (139 (190 61436 NOLOCKSHIFT)) (140 (189 90
NOLOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (61249 62 NOLOCKSHIFT)) (143 (61352 58 NOLOCKSHIFT)) (
144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 61280 NOLOCKSHIFT)) (148 (212 8574 NOLOCKSHIFT)) (149 (
61354 8573 NOLOCKSHIFT)) (150 (61286 8741 NOLOCKSHIFT)) (151 (165 8572 NOLOCKSHIFT)) (152 (61368 8740
NOLOCKSHIFT)) (153 (61400 61384 NOLOCKSHIFT)) (154 (173 175 NOLOCKSHIFT)) (155 (172 174 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123 NOLOCKSHIFT)) (159 (61406
61368 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (DVORAK ((100 (49 42 NOLOCKSHIFT)) (101 (51 41
NOLOCKSHIFT)) (102 (57 37 NOLOCKSHIFT)) (103 (46 62 NOLOCKSHIFT)) (104 (48 38 NOLOCKSHIFT)) (105 (101
69 LOCKSHIFT)) (106 (103 71 LOCKSHIFT)) (107 (107 75 LOCKSHIFT)) (108 (54 45 NOLOCKSHIFT)) (109 (116
84 LOCKSHIFT)) (110 (56 95 NOLOCKSHIFT)) (111 (108 76 LOCKSHIFT)) (112 (122 90 LOCKSHIFT)) (115 (8 8
NOLOCKSHIFT) . IGNORE) (116 (53 40 NOLOCKSHIFT)) (117 (55 35 NOLOCKSHIFT)) (118 (44 60 NOLOCKSHIFT)) (
119 (63 47 NOLOCKSHIFT)) (120 (111 79 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (52 164 NOLOCKSHIFT)) (
123 (99 67 LOCKSHIFT)) (124 (113 81 LOCKSHIFT)) (125 (114 82 LOCKSHIFT)) (126 (110 78 LOCKSHIFT)) (127
(119 87 LOCKSHIFT)) (171 (44 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (33 64 NOLOCKSHIFT)) (
165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (117 85 LOCKSHIFT)) (137 (106
74 LOCKSHIFT)) (138 (104 72 LOCKSHIFT)) (139 (120 88 LOCKSHIFT)) (140 (59 58 NOLOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (118 86 LOCKSHIFT)) (143 (115 83 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (169 170 NOLOCKSHIFT)) (148 (112 80 LOCKSHIFT)) (149 (121 89 LOCKSHIFT)) (150 (105 73
LOCKSHIFT)) (151 (102 70 LOCKSHIFT)) (152 (100 68 LOCKSHIFT)) (153 (50 162 NOLOCKSHIFT)) (154 (98 66
LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (
91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (GREEK ((100 (53 37
NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT)) (103 (9830 69 LOCKSHIFT)) (104 (55
38 NOLOCKSHIFT)) (105 (9829 9797 LOCKSHIFT)) (106 (9849 9817 LOCKSHIFT)) (107 (115 9814 LOCKSHIFT)) (
108 (48 41 NOLOCKSHIFT)) (109 (9837 9805 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (9843 9811
LOCKSHIFT)) (112 (47 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35 NOLOCKSHIFT)) (117
(50 64 NOLOCKSHIFT)) (118 (9853 9821 LOCKSHIFT)) (119 (9835 9803 LOCKSHIFT)) (120 (9846 9814 LOCKSHIFT
)) (121 (9825 9793 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (9836 9804 LOCKSHIFT)) (124 (9851 9819
LOCKSHIFT)) (125 (9842 9810 LOCKSHIFT)) (126 (9838 9806 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (171 (39
34 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (9850 9818 LOCKSHIFT)) (137 (9841 9809 LOCKSHIFT)) (138
(106 74 LOCKSHIFT)) (139 (9826 66 LOCKSHIFT)) (140 (9833 9801 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 94
NOLOCKSHIFT)) (148 (9845 9813 LOCKSHIFT)) (149 (9848 9816 LOCKSHIFT)) (150 (9828 9796 LOCKSHIFT)) (151
(9852 9820 LOCKSHIFT)) (152 (9834 9802 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (9840 9808
LOCKSHIFT)) (155 (9839 9807 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (
158 (91 123 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (ITALIAN ((171
(39 34 NOLOCKSHIFT)) (100 (53 61903 NOLOCKSHIFT)) (101 (52 61886 NOLOCKSHIFT)) (102 (54 61919
NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85
LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45
NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116
(51 61872 NOLOCKSHIFT)) (117 (50 61857 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)
) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT))
(171 (39 186 NOLOCKSHIFT)) (129 (93 125 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27
NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT
)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN .
1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208
(95 170 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151
(121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155
(109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (91 123
NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (SPANISH ((208 (161 191
NOLOCKSHIFT)) (171 (59 58 NOLOCKSHIFT)) (100 (53 61904 NOLOCKSHIFT)) (101 (52 61887 NOLOCKSHIFT)) (102
(54 61920 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (
106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (
110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) .
IGNORE) (116 (51 61873 NOLOCKSHIFT)) (117 (50 61858 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113
81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73
LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 171
NOLOCKSHIFT)) (171 (59 58 NOLOCKSHIFT)) (129 (185 186 NOLOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27
27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67
LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN
. 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (61900 61772 LOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) .
IGNORE) (208 (161 191 NOLOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71
LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61925 NOLOCKSHIFT)) (154 (110
78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (
158 (169 170 NOLOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (FRENCH ((208
(61869 61741 NOLOCKSHIFT)) (171 (39 61857 NOLOCKSHIFT)) (100 (53 61905 NOLOCKSHIFT)) (101 (52 61888
NOLOCKSHIFT)) (102 (54 61921 NOLOCKSHIFT)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (
100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (
107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)) (111 (112 80 LOCKSHIFT)) (112 (95 63 NOLOCKSHIFT)) (115 (
1 1 NOLOCKSHIFT) . IGNORE) (116 (51 61874 NOLOCKSHIFT)) (117 (50 61859 NOLOCKSHIFT)) (118 (119 87
LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83 LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40
NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88 LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76
LOCKSHIFT)) (127 (44 171 NOLOCKSHIFT)) (171 (39 61857 NOLOCKSHIFT)) (129 (61872 61892 LOCKSHIFT)) (132
(49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) . IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70
LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74 LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90
LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 187 NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13
13 NOLOCKSHIFT) . IGNORE) (208 (61869 61741 LOCKSHIFT)) (148 (114 82 LOCKSHIFT)) (149 (116 84
LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (152 (104 72 LOCKSHIFT)) (153 (56 61919
NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (156 LOCKDOWN . LOCKUP) (157 (32 32
NOLOCKSHIFT) . IGNORE) (158 (61873 61877 LOCKSHIFT)) (159 (61 43 NOLOCKSHIFT)) (160 2SHIFTDOWN .
2SHIFTUP)) DOVE) (GERMAN ((100 (53 37 NOLOCKSHIFT)) (101 (52 36 NOLOCKSHIFT)) (102 (54 126 NOLOCKSHIFT
)) (103 (101 69 LOCKSHIFT)) (104 (55 38 NOLOCKSHIFT)) (105 (100 68 LOCKSHIFT)) (106 (117 85 LOCKSHIFT)
) (107 (118 86 LOCKSHIFT)) (108 (48 41 NOLOCKSHIFT)) (109 (107 75 LOCKSHIFT)) (110 (45 45 NOLOCKSHIFT)
) (111 (112 80 LOCKSHIFT)) (112 (251 63 NOLOCKSHIFT)) (115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (51 35
NOLOCKSHIFT)) (117 (50 64 NOLOCKSHIFT)) (118 (119 87 LOCKSHIFT)) (119 (113 81 LOCKSHIFT)) (120 (115 83
LOCKSHIFT)) (121 (97 65 LOCKSHIFT)) (122 (57 40 NOLOCKSHIFT)) (123 (105 73 LOCKSHIFT)) (124 (120 88
LOCKSHIFT)) (125 (111 79 LOCKSHIFT)) (126 (108 76 LOCKSHIFT)) (127 (44 60 NOLOCKSHIFT)) (171 (39 34
NOLOCKSHIFT)) (129 (61863 61735 LOCKSHIFT)) (132 (49 33 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (102 70 LOCKSHIFT)) (137 (99 67 LOCKSHIFT)) (138 (106 74
LOCKSHIFT)) (139 (98 66 LOCKSHIFT)) (140 (122 90 LOCKSHIFT)) (141 1SHIFTDOWN . 1SHIFTUP) (142 (46 62
NOLOCKSHIFT)) (143 (59 58 NOLOCKSHIFT)) (144 (13 13 NOLOCKSHIFT) . IGNORE) (208 (95 94 NOLOCKSHIFT)) (
148 (114 82 LOCKSHIFT)) (149 (116 84 LOCKSHIFT)) (150 (103 71 LOCKSHIFT)) (151 (121 89 LOCKSHIFT)) (
152 (104 72 LOCKSHIFT)) (153 (56 42 NOLOCKSHIFT)) (154 (110 78 LOCKSHIFT)) (155 (109 77 LOCKSHIFT)) (
156 LOCKDOWN . LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (61908 61780 LOCKSHIFT)) (159 (61925
61797 LOCKSHIFT)) (160 2SHIFTDOWN . 2SHIFTUP)) DOVE) (STANDARD-RUSSIAN ((208 (41 40 NOLOCKSHIFT)) (171
(10073 10025 NOLOCKSHIFT)) (100 (34 52 NOLOCKSHIFT)) (101 (47 51 NOLOCKSHIFT)) (102 (58 53
NOLOCKSHIFT)) (103 (10085 10037 LOCKSHIFT)) (104 (44 54 NOLOCKSHIFT)) (105 (10067 10019 LOCKSHIFT)) (
106 (10068 10020 LOCKSHIFT)) (107 (10078 10030 LOCKSHIFT)) (108 (63 57 NOLOCKSHIFT)) (109 (10077 10029
LOCKSHIFT)) (110 (37 48 NOLOCKSHIFT)) (111 (10073 10025 LOCKSHIFT)) (112 (10071 10023 LOCKSHIFT)) (
115 (8 8 NOLOCKSHIFT) . IGNORE) (116 (45 50 NOLOCKSHIFT)) (117 (61352 49 NOLOCKSHIFT)) (118 (10088
10040 LOCKSHIFT)) (119 (10075 10027 LOCKSHIFT)) (120 (10093 10045 LOCKSHIFT)) (121 (10086 10038
LOCKSHIFT)) (122 (95 56 NOLOCKSHIFT)) (123 (10090 10042 LOCKSHIFT)) (124 (10089 10041 LOCKSHIFT)) (125
(10091 10043 LOCKSHIFT)) (126 (10069 10021 LOCKSHIFT)) (127 (10066 10018 LOCKSHIFT)) (171 (10095
10047 LOCKSHIFT)) (129 (10092 10044 LOCKSHIFT)) (132 (167 43 NOLOCKSHIFT)) (165 (27 27 NOLOCKSHIFT) .
IGNORE) (134 (9 9 NOLOCKSHIFT) . IGNORE) (135 (10065 10017 LOCKSHIFT)) (137 (10083 10035 LOCKSHIFT)) (
138 (10080 10032 LOCKSHIFT)) (139 (10074 10026 LOCKSHIFT)) (140 (10097 10049 LOCKSHIFT)) (141
1SHIFTDOWN . 1SHIFTUP) (142 (10096 10048 LOCKSHIFT)) (143 (10072 10024 LOCKSHIFT)) (144 (13 13
NOLOCKSHIFT) . IGNORE) (208 (41 40 NOLOCKSHIFT)) (148 (10076 10028 LOCKSHIFT)) (149 (10070 10022
LOCKSHIFT)) (150 (10081 10033 LOCKSHIFT)) (151 (10079 10031 LOCKSHIFT)) (152 (10082 10034 LOCKSHIFT))
(153 (46 55 NOLOCKSHIFT)) (154 (10084 10036 LOCKSHIFT)) (155 (10094 10046 LOCKSHIFT)) (156 LOCKDOWN .
LOCKUP) (157 (32 32 NOLOCKSHIFT) . IGNORE) (158 (10087 10039 LOCKSHIFT)) (159 (33 61 NOLOCKSHIFT)) (
160 2SHIFTDOWN . 2SHIFTUP)) DOVE))

Binary file not shown.

Binary file not shown.

276
library/PDFSTREAM Normal file
View File

@@ -0,0 +1,276 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 1-Oct-2023 20:53:05" {WMEDLEY}<library>PDFSTREAM.;54 13917
:EDIT-BY rmk
:CHANGES-TO (FNS SEE-PDF)
:PREVIOUS-DATE " 1-Oct-2023 15:29:33" {WMEDLEY}<library>PDFSTREAM.;53)
(PRETTYCOMPRINT PDFSTREAMCOMS)
(RPAQQ PDFSTREAMCOMS
((FILES (SYSLOAD)
POSTSCRIPTSTREAM)
[COMS (* ; "Hook into hardcopy interface")
[ADDVARS [PRINTERTYPES ((PDF)
(CANPRINT (PDF))
(STATUS TRUE)
(PROPERTIES NILL)
(SEND POSTSCRIPTSEND)
(BITMAPSCALE POSTSCRIPT.BITMAPSCALE)
(BITMAPFILE (PDF.HARDCOPYW FILE BITMAP SCALEFACTOR REGION
ROTATION TITLE]
[PRINTFILETYPES (PDF (TEST PDFFILEP)
(EXTENSION (PDF))
(CONVERSION (TEXT PDF.TEXT TEDIT PDF.TEDIT]
(IMAGESTREAMTYPES (PDF (OPENSTREAM OPEN-PDF-STREAM)
(FONTCREATE POSTSCRIPT.FONTCREATE)
(FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE)
(CREATECHARSET \CREATECHARSET.PSC]
(VARS (DEFAULTPRINTERTYPE 'PDF))
(FNS PDFFILEP PDF.HARDCOPYW PDF.TEXT PDF.TEDIT)
(P (FONTPROFILE.ADDDEVICE 'PDF 'POSTSCRIPT]
(* ;; "")
(* ;; "Implementation of PDF streams")
(INITVARS (PDFCONVERTER 'ps2pdf))
(* ; "Mac with ghostscript?")
(ALISTS (PDF-CONVERTER-TEMPLATES ps2pdf pstopdf))
(GLOBALVARS PDFCONVERTER PDF-CONVERTER-TEMPLATES)
(FNS OPEN-PDF-STREAM CLOSE-PDF-STREAM PS-TO-PDF)
(FNS SEE-PDF)))
(FILESLOAD (SYSLOAD)
POSTSCRIPTSTREAM)
(* ; "Hook into hardcopy interface")
(ADDTOVAR PRINTERTYPES ((PDF)
(CANPRINT (PDF))
(STATUS TRUE)
(PROPERTIES NILL)
(SEND POSTSCRIPTSEND)
(BITMAPSCALE POSTSCRIPT.BITMAPSCALE)
(BITMAPFILE (PDF.HARDCOPYW FILE BITMAP SCALEFACTOR REGION ROTATION TITLE))))
(ADDTOVAR PRINTFILETYPES (PDF (TEST PDFFILEP)
(EXTENSION (PDF))
(CONVERSION (TEXT PDF.TEXT TEDIT PDF.TEDIT))))
(ADDTOVAR IMAGESTREAMTYPES (PDF (OPENSTREAM OPEN-PDF-STREAM)
(FONTCREATE POSTSCRIPT.FONTCREATE)
(FONTSAVAILABLE POSTSCRIPT.FONTSAVAILABLE)
(CREATECHARSET \CREATECHARSET.PSC)))
(RPAQQ DEFAULTPRINTERTYPE PDF)
(DEFINEQ
(PDFFILEP
[LAMBDA (FILE) (* ; "Edited 23-Jun-2023 14:43 by rmk")
(* ; "Edited 5-Mar-93 21:40 by rmk:")
(* ; "Edited 14-Jan-93 10:56 by jds")
(OR (CL:MEMBER (UNPACKFILENAME.STRING FILE 'EXTENSION)
'("PDF")
:TEST
(FUNCTION STRING-EQUAL))
(CL:WHEN (STREAMP FILE)
(SETFILEPTR FILE 0)
(PROG1 (AND (EQ (BIN FILE)
(CHARCODE %%))
(EQ (BIN FILE)
(CHARCODE P))
(EQ (BIN FILE)
(CHARCODE D))
(EQ (BIN FILE)
(CHARCODE F)))
(SETFILEPTR FILE 0)))])
(PDF.HARDCOPYW
[LAMBDA (PDFFILE BITMAP SCALEFACTOR REGION Landscape? TITLE)
(* ; "Edited 24-Jul-2023 10:37 by rmk")
(* ; "Edited 23-Jun-2023 13:28 by rmk")
(* ; "Edited 6-Mar-2023 22:43 by rmk")
(LET ((PSTTMP (PACKFILENAME 'EXTENSION 'TMPPS 'BODY PDFFILE)))
(PS-TO-PDF (POSTSCRIPT.HARDCOPYW PSTTMP BITMAP SCALEFACTOR REGION Landscape? TITLE)
PDFFILE])
(PDF.TEXT
[LAMBDA (FILE PDFFILE FONTS HEADING TABS) (* ; "Edited 1-Oct-2023 15:24 by rmk")
(* ; "Edited 23-Jun-2023 13:23 by rmk")
(* ; "Edited 7-Mar-2023 08:39 by rmk")
(TEXTTOIMAGEFILE FILE PDFFILE 'PDF FONTS HEADING TABS `(REGION ,POSTSCRIPT.DEFAULT.PAGEREGION
ROTATION ,(NOT (NOT
POSTSCRIPT.TEXTFILE.LANDSCAPE
])
(PDF.TEDIT
[LAMBDA (FILE PDFFILE) (* ; "Edited 23-Jun-2023 13:22 by rmk")
(* ; "Edited 7-Mar-2023 08:39 by rmk")
(LET ((TSTREAM (OPENTEXTSTREAM FILE)))
(TEDIT.FORMAT.HARDCOPY FILE PDFFILE T NIL NIL NIL 'PDF)
(CLOSEF TSTREAM])
)
(FONTPROFILE.ADDDEVICE 'PDF 'POSTSCRIPT)
(* ;; "")
(* ;; "Implementation of PDF streams")
(RPAQ? PDFCONVERTER 'ps2pdf)
(* ; "Mac with ghostscript?")
(ADDTOVAR PDF-CONVERTER-TEMPLATES (ps2pdf " " PSFILE " " PDFFILE " 2> " ERRORFILE)
(pstopdf " " PSFILE " -o " PDFFILE " 2> " ERRORFILE))
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS PDFCONVERTER PDF-CONVERTER-TEMPLATES)
)
(DEFINEQ
(OPEN-PDF-STREAM
[LAMBDA (FILE OPTIONS) (* ; "Edited 23-Sep-2023 15:38 by rmk")
(* ; "Edited 22-Sep-2023 11:04 by rmk")
(* ; "Edited 24-Jun-2023 14:49 by rmk")
(* ;; "Open a temporary PS file, but set it up so that at closing it gets converted to PDF using an operating-system utility (if available), and then gets renamed to the original intended filename.")
(* ;; "We have to stash the original filename someplace. We could put it in the tmp filename and then parse it out, but then we would have to worry about how unix filenames might parse against our {, }, etc. ")
(* ;;
 "Simplest thing for now is to just add an extra field at the end of the \POSTSCRIPTDATA record.")
(* ;; "")
(if [AND NIL (EQ 'LPT (FILENAMEFIELD FILE 'HOST]
then
(* ;; "If FILE is on the LPT device, we could just ssume that it can be printed directly, no point in converting. But then we would alo have to lie and give it a PDF extension so it thinks that we are heading to a PDF printer.")
(OPENPOSTSCRIPTSTREAM FILE OPTIONS)
else (CL:UNLESS (OR (ASSOC (OR PDFCONVERTER (MKATOM (UNIX-GETENV "MEDLEY-PDFCONVERTER")))
PDF-CONVERTER-TEMPLATES))
(ERROR "POSTSCRIPT-to-PDF converter is not specified"))
(SETQ FILE (OR (AND (NEQ FILE T)
(OUTFILEP FILE))
(ERROR "PDF target file not found" FILE)))
(LET ((PSSTREAM (OPENPOSTSCRIPTSTREAM (CONCAT "{UNIX}/tmp/medley-pdf-" (IDATE)
"-"
(RAND)
".ps")
OPTIONS)))
(STREAMPROP PSSTREAM 'AFTERCLOSE (CONS (FUNCTION CLOSE-PDF-STREAM)))
(STREAMPROP PSSTREAM 'PDFTARGETINFO FILE)
PSSTREAM])
(CLOSE-PDF-STREAM
[LAMBDA (PSSTREAM) (* ; "Edited 22-Sep-2023 11:18 by rmk")
(* ; "Edited 24-Jul-2023 10:37 by rmk")
(* ; "Edited 17-Jul-2023 22:32 by rmk")
(* ; "Edited 24-Jun-2023 13:57 by rmk")
(* ;; "PSSTREAM is a postscript (maybe in tmp) rendition of what is intended to end up as a pdf. If we are going directly to a printer, we can probably just pass it along without worrying about conversion. In fact, in that case we probably should not have bothered even setting up the PDF stream.")
(* ;; "But for a file we execute the PDFCONVERTER as a shell command to make a pdf, and then we rename it to the intended filename")
(STREAMPROP PSSTREAM 'AFTERCLOSE NIL) (* ;
 "Maybe just remove only CLOSE-PDF-STREAMfrom the list?")
(LET ((TARGETINFO (STREAMPROP PSSTREAM 'PDFTARGETINFO NIL)))
(CL:IF TARGETINFO
(RENAMEFILE (PS-TO-PDF PSSTREAM)
TARGETINFO)
PSSTREAM)])
(PS-TO-PDF
[LAMBDA (PSFILE PDFFILE DONTDELETE) (* ; "Edited 1-Oct-2023 15:18 by rmk")
(* ; "Edited 23-Sep-2023 22:54 by rmk")
(* ; "Edited 23-Jul-2023 22:30 by rmk")
(* ; "Edited 24-Jun-2023 15:01 by rmk")
(* ; "Edited 16-Jul-2022 13:06 by rmk")
(* ; "Edited 8-Jul-2022 10:20 by rmk")
(* ; "Edited 7-May-2022 22:40 by rmk")
(* ; "Edited 7-Oct-2021 11:15 by rmk:")
(* ;; "PSFILE is the name of a closed PS file on a DSK/UNIX device. This function uses the PDFCONVERTER utility to convert that to a parallel pdf file, which is then renamed to PDFFILE. ")
(* ;; "DONTDELETE is just for debugging, keeps the /tmp/ files")
(SETQ PSFILE (FULLNAME (TRUEFILENAME PSFILE)))
(CL:UNLESS (INFILEP PSFILE)
(ERROR "NO PS FILE TO CONVERT"))
(SETQ PDFFILE (if PDFFILE
then (TRUEFILENAME PDFFILE)
else (PACKFILENAME 'EXTENSION 'pdf 'BODY PSFILE)))
(LET ((ERRORFILE (PACKFILENAME 'EXTENSION 'error 'BODY PSFILE))
COMPLETIONCODE)
(* ;; "PROCESS-COMMAND is currently from GITFNS. Not sure whether ShellCommand in UNIXUTILS is appropriate.")
(* ;;
 "We have to map the filenames down to Unix conventions: (not pseudohost or host, slashes, etc.")
[SETQ COMPLETIONCODE (PROCESS-COMMAND (CONCATLIST (SUBLIS
`((PSFILE \, (SLASHIT (TRUEFILENAME
PSFILE)
NIL T))
(PDFFILE \, (SLASHIT (TRUEFILENAME
PDFFILE)
NIL T))
(ERRORFILE \, (SLASHIT (TRUEFILENAME
ERRORFILE)
NIL T)))
(ASSOC (OR PDFCONVERTER
(MKATOM (UNIX-GETENV
"MEDLEY-PDFCONVERTER"
)))
PDF-CONVERTER-TEMPLATES]
(* ;; "Now use Medley names")
(CLOSEF? PSFILE)
(CL:UNLESS DONTDELETE (DELFILE PSFILE))
(CLOSEF? ERRORFILE)
(CL:WHEN (INFILEP ERRORFILE)
(CL:WHEN (IGREATERP (PROG1 (GETFILEINFO ERRORFILE 'LENGTH)
(CL:UNLESS DONTDELETE (DELFILE ERRORFILE)))
0)
(ERROR "Cannot create PDF file for " PDFFILE)))
(CL:WHEN (IGREATERP COMPLETIONCODE 0)
(ERROR "Cannot create PDF file for " PDFFILE))
PDFFILE])
)
(DEFINEQ
(SEE-PDF
[LAMBDA (PDFFILE) (* ; "Edited 1-Oct-2023 20:47 by rmk")
(* ; "Edited 26-Sep-2023 16:52 by rmk")
(* ;; "Good for Mac, not sure about Windows etc.")
(ShellCommand (CONCAT "open -a Preview " (UNIX-FILE-NAME (PACKFILENAME 'BODY PDFFILE 'EXTENSION
'PDF)
'INPUT])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3078 5692 (PDFFILEP 3088 . 4002) (PDF.HARDCOPYW 4004 . 4602) (PDF.TEXT 4604 . 5321) (
PDF.TEDIT 5323 . 5690)) (6136 13355 (OPEN-PDF-STREAM 6146 . 8324) (CLOSE-PDF-STREAM 8326 . 9613) (
PS-TO-PDF 9615 . 13353)) (13356 13894 (SEE-PDF 13366 . 13892)))))
STOP

BIN
library/PDFSTREAM.LCOM Normal file

Binary file not shown.

View File

@@ -1,28 +1,40 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "18-Jan-2023 20:36:10" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;7 5091
(FILECREATED " 8-Oct-2023 15:06:52" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;15 14696
:CHANGES-TO (FNS ShellBrowser ShellBrowse ShellOpen)
:CHANGES-TO (FNS ShellOpen UNIX-FILE-NAME ShellBrowser ShellBrowse ShellOpener)
(VARS UNIXUTILSCOMS)
(FUNCTIONS ShellWhich)
:PREVIOUS-DATE "18-Jan-2023 13:22:28" {DSK}<home>frank>il>medley>gmedley>greetfiles>UNIXUTILS.;1
:PREVIOUS-DATE " 8-Oct-2023 02:35:47" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;14
)
(PRETTYCOMPRINT UNIXUTILSCOMS)
(RPAQQ UNIXUTILSCOMS ((GLOBALVARS ShellBrowser)
(INITVARS (ShellBrowser))
(FUNCTIONS ShellCommand ShellWhich)
(FNS ShellBrowser ShellBrowse)))
(RPAQQ UNIXUTILSCOMS
((DECLARE%: EVAL@COMPILE DONTCOPY (* ; "For PROCESS-COMMAND")
(FILES (FROM LOADUPS)
EXPORTS.ALL))
(GLOBALVARS ShellBrowser ShellOpener)
(INITVARS (ShellBrowser)
(ShellOpener))
(FUNCTIONS ShellCommand ShellWhich)
(FNS ShellBrowser ShellBrowse ShellOpener ShellOpen PROCESS-COMMAND SLASHIT UNIX-FILE-NAME)
(PROPS (UNIXUTILS FILETYPE))))
(DECLARE%: EVAL@COMPILE DONTCOPY
(FILESLOAD (FROM LOADUPS)
EXPORTS.ALL)
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS ShellBrowser)
(GLOBALVARS ShellBrowser ShellOpener)
)
(RPAQ? ShellBrowser )
(RPAQ? ShellOpener )
(CL:DEFUN ShellCommand (Cmd &OPTIONAL (Output T))
(CL:WITH-OPEN-STREAM (s (CREATE-PROCESS-STREAM Cmd))
(CL:TAGBODY [SETFILEINFO s 'ENDOFSTREAMOP #'(CL:LAMBDA (s)
@@ -34,62 +46,56 @@
(CL:DEFUN ShellWhich (Cmd) (* ; "Edited 18-Jan-2023 13:19 by FGH")
[CL:WITH-OPEN-STREAM (S (OPENSTREAM '{NODIRCORE} 'BOTH))
(ShellCommand (CONCAT "which " Cmd)
(ShellCommand (CONCAT "command -v " Cmd)
S)
(COND
((EQ (GETEOFPTR S)
0)
NIL)
(T (SETFILEPTR S 0)
(MKSTRING (READ S])
(RSTRING S])
(DEFINEQ
(ShellBrowser
[LAMBDA NIL (* ; "Edited 18-Jan-2023 20:30 by FGH")
(OR ShellBrowser (SETQ ShellBrowser (LET (CMDPATH)
(if (STRPOS "darwin" (OR (UNIX-GETENV "OSTYPE")
(UNIX-GETENV "PATH")))
then
(* ;; " MacOS")
"open"
elseif (SETQ CMDPATH (ShellWhich "wslview"))
then
(* ;; "windows with WSL")
(* ;; "Figure out the browser to use for the ShellOpen/ShellBrowse functions. ")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "xdg-open"))
then
(* ;; "Linux systems with xdg-utils installed ")
(* ;; " Ordinarily, this would be the same as the generic ShellOpener.")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "git"))
then
(* ;; " Systems with git installed")
(* ;; " But if a generic ShellOpener is not found, then there are some additional")
(CONCAT CMDPATH " web--browse")
(* ; "")
elseif (SETQ CMDPATH (ShellWhich "lynx"))
then
(* ;; " Systems with lynx installed")
(* ;; " possibilities that will work for http/https URLs. If one of these exists return it.")
(LET (CMDPATH2)
(if (SETQ CMDPATH2 (ShellWhich "xterm"))
then (CONCAT CMDPATH2 " -e " CMDPATH)
else (LIST CMDPATH)))
else
(* ;;
 " Out of ideas - just return a dummy function")
(OR ShellBrowser (SETQ ShellBrowser
(if (NOT (STREQUAL (ShellOpener)
"true"))
then ShellOpener
else (LET (CMDPATH)
(if (SETQ CMDPATH (ShellWhich "git"))
then
(* ;; " Systems with git installed")
"true"])
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "lynx"))
then
(* ;; " Systems with lynx installed")
(LET (CMDPATH2)
(if (SETQ CMDPATH2 (ShellWhich "xterm"))
then (CONCAT CMDPATH2 " -e " CMDPATH)
else (LIST CMDPATH)))
else
(* ;; " Out of ideas - just return a dummy function")
"true"])
(ShellBrowse
[LAMBDA (URL) (* ; "Edited 18-Jan-2023 20:32 by FGH")
(* ;; " Open the web page specified by URL using an external browser via shell call")
(* ;;
 " URL must start with http:// or https:// (case ireelevant) or this function will just return NIL.")
(* ;; " URL must start with http:// or https:// or file:/// (case ireelevant) or this function will just return NIL.")
(* ;; " Returns T otherwise.")
@@ -97,17 +103,189 @@
(if (OR (EQ (STRPOS "http://" (L-CASE URL))
1)
(EQ (STRPOS "https://" (L-CASE URL))
1)
(EQ (STRPOS "file:///" (L-CASE URL))
1))
then (ShellOpen URL)
else NIL])
(ShellOpener
[LAMBDA NIL
(* ;; "Find an %"opener%" that will open files (and URLs) using the appropriate/default app on this machine")
(OR ShellOpener (SETQ ShellOpener (LET (CMDPATH)
(if (SETQ CMDPATH (ShellWhich "wslview"))
then
(* ;; "windows with WSL")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "cygstart"))
then
(* ;; "windows with cygwin")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "xdg-open"))
then
(* ;; "Linux systems with xdg-utils installed ")
CMDPATH
elseif (SETQ CMDPATH (ShellWhich "open"))
then
(* ;; " MacOS open")
CMDPATH
else
(* ;;
 " Out of ideas - just return a dummy function")
"true"])
(ShellOpen
[LAMBDA (FilenameOrURL)
(* ;; "Open the file or URL using the generic %"opener%" for this machine via a shell call.")
(* ;; " If FilenameOrURL starts with %"http://%" or %"https://%" or %"file:///%", then we use (ShellBrowser) as")
(* ;; " the %"opener%" (which includes some browsers on a machine without a generic opener).")
(* ;;
 " Otherwise FilenameOrURL is assumed to be a filename and will be opened using (ShellOpener).")
(* ;; " Returns T is all goes well; returns an error string if all does not go well")
(SETQ FilenameOrURL (MKSTRING FilenameOrURL))
(if (OR (EQ (STRPOS "http://" (L-CASE FilenameOrURL))
1)
(EQ (STRPOS "https://" (L-CASE FilenameOrURL))
1)
(EQ (STRPOS "file://" (L-CASE FilenameOrURL))
1))
then (LET ((BROWSER (ShellBrowser)))
(if (LISTP BROWSER)
then (CHAT 'SHELL NIL (CONCAT (CAR BROWSER)
" '" URL "'"))
else (ShellCommand (CONCAT BROWSER " '" URL "'"
" >>/tmp/ShellBrowser-warnings-$$.txt")))
T)
else NIL])
(if (NOT (STREQUAL BROWSER "true"))
then (if (LISTP BROWSER)
then (CHAT 'SHELL NIL (CONCAT (CAR BROWSER)
" '" FilenameOrURL "'"))
else (ShellCommand (CONCAT BROWSER " '" FilenameOrURL "'"
" >>/tmp/ShellBrowser-warnings-$$.txt"))
T)
else (CONCAT "Unable to find a browser to open: " FilenameOrURL)))
else
(LET ((OPENER (ShellOpener))
(UNIXFILE (UNIX-FILE-NAME FilenameOrURL 'INPUT T)))
(if (NOT UNIXFILE)
then (CONCAT "File not found: " FilenameOrURL)
elseif (NOT (STREQUAL OPENER "true"))
then (CL:WITH-OPEN-STREAM
(SHELLSTREAM (OPENSTREAM (CONCAT "{CORE}SHELLOUT" (RAND))
'BOTH))
(ShellCommand (CONCAT OPENER " '" UNIXFILE "'"
" >>/tmp/ShellOpener-warnings-$$.txt")
SHELLSTREAM)
(if (EQ (GETFILEPTR SHELLSTREAM)
0)
then T
else (LET* ((OUTSTRING (ALLOCSTRING (GETFILEPTR SHELLSTREAM)
" ")))
(CL:WITH-OPEN-STREAM (STRINGSTREAM (OPENSTRINGSTREAM OUTSTRING
'OUTPUT))
(SETFILEPTR SHELLSTREAM 0)
(CL:TAGBODY [SETFILEINFO SHELLSTREAM 'ENDOFSTREAMOP
#'(CL:LAMBDA (s)
(GO OUT]
(CL:LOOP (PRINTCCODE (READCCODE SHELLSTREAM)
STRINGSTREAM))
OUT))
OUTSTRING)))
else (CONCAT "Unable to find a file opener to open: " FilenameOrURL])
(PROCESS-COMMAND
[LAMBDA (CMD) (* ; "Edited 17-Jul-2022 08:17 by rmk")
(* ;; "This sets up an asynchronous process and waits until it returns with an exit code. Typically 0 means success.")
(CL:WITH-OPEN-STREAM (PS (CREATE-PROCESS-STREAM CMD))
(BIND CODE WHILE (EQ T (SETQ CODE (OR (SUBRCALL UNIX-HANDLECOMM 7 (fetch (STREAM F1)
of PS))
0))) DO (BLOCK) FINALLY (RETURN CODE])
(SLASHIT
[LAMBDA (X LCASEDIRS NOHOST) (* ; "Edited 23-Sep-2023 15:27 by rmk")
(* ;; "It would also be nice to use the generic unpackfilename/packfilename tools. But packfilename sticks in brackets again, and sticks a dot on when removing the version.")
(* ;; "Perhaps this should be a per file-device operation that maps device names into the local file system.")
(* ;; "This is a first approximation to a utility that converts a filename X on a host whose files physically reside in the local Unix file system into the strings that shell commands can use to reference that file. For now, this just involves replacing directory brackets with /, removing the host, and perhaps lower-casing the directory. It probably should be extended to deal with version number translation, for now it just keeps the ; version. ")
(LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
0]
[SETQ SLASHED (CONCATCODES (FOR I C FROM DIRPOS WHILE (SETQ C (NTHCHARCODE X I))
COLLECT (SELCHARQ C
((< >)
(SETQ LASTDIRPOS I)
(CHARCODE /))
(/ (SETQ LASTDIRPOS I)
C)
C]
(CL:WHEN (AND LCASEDIRS LASTDIRPOS)
(SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS)))
(SETQ SLASHED (CONCAT (L-CASE (SUBSTRING SLASHED 1 LASTDIRPOS))
(OR (SUBSTRING SLASHED (ADD1 LASTDIRPOS))
""))))
(CL:IF (OR (EQ DIRPOS 1)
NOHOST)
SLASHED
(CONCAT (SUBSTRING X 1 (SUB1 DIRPOS))
SLASHED))])
(UNIX-FILE-NAME
[LAMBDA (FILE ACCESS COPY) (* ; "Edited 1-Oct-2023 20:52 by rmk")
(* ;; "Tries to return the string that would reference FILE in a Unix shell, for the use of PROCESS-COMMAND and ShellCommand. If VERSION is 1, it assumes that the Unix file is doesn't have the Medley version convention. If FILE does not have a corresponding Unix name, COPY is non-NIL, and ACCESS is INPUT, FILE will be copied to a unix tmp file (with COPY in its name) and that name will be returned.")
(CL:WHEN (\GETSTREAM FILE ACCESS T)
(SETQ FILE (OR (FULLNAME FILE)
FILE))) (* ; "Might catch NODIRCORE")
(CL:WHEN FILE
(SETQ FILE (TRUEFILENAME FILE))
(CL:UNLESS (STREAMP FILE)
[SETQ FILE (\GETFILENAME FILE (SELECTQ ACCESS
(OUTPUT 'NEW)
(INPUT 'OLD)
(NIL (SETQ ACCESS 'INPUT)
'OLD)
(\ILLEGAL.ARG ACCESS])
[SELECTQ (FILENAMEFIELD FILE 'HOST)
(UNIX [SUBSTRING FILE (ADD1 (CONSTANT (NCHARS "{UNIX}"])
(DSK (LET [(VERSION (FILENAMEFIELD FILE 'VERSION]
(SETQ FILE (SLASHIT (PACKFILENAME 'HOST NIL 'VERSION NIL 'BODY FILE)))
(CL:IF (AND VERSION (IGREATERP VERSION 1))
(CONCAT FILE (CL:IF (FILENAMEFIELD FILE 'EXTENSION)
"."
"")
"~" VERSION "~")
FILE)))
(CL:WHEN (AND COPY (EQ ACCESS 'INPUT)
FILE)
(RESETLST
(CL:WHEN (\GETSTREAM FILE 'INPUT T) (* ; "Hope is randaccess")
[RESETSAVE (GETFILEPTR FILE)
`(PROGN (SETFILEPTR ,FILE OLDVALUE])
(COPYFILE FILE (CONCAT "{UNIX}/tmp/medley-" (L-CASE COPY)
"-"
(IDATE)
"-"
(RAND)
(CL:IF (FILENAMEFIELD FILE 'EXTENSION)
(CONCAT "." (FILENAMEFIELD FILE 'EXTENSION))
"")))))])])
)
(PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (764 1137 (ShellCommand 764 . 1137)) (1139 1538 (ShellWhich 1139 . 1538)) (1539 5068 (
ShellBrowser 1549 . 4072) (ShellBrowse 4074 . 5066)))))
(FILEMAP (NIL (1144 1517 (ShellCommand 1144 . 1517)) (1519 1916 (ShellWhich 1519 . 1916)) (1917 14618
(ShellBrowser 1927 . 3675) (ShellBrowse 3677 . 4362) (ShellOpener 4364 . 6052) (ShellOpen 6054 . 9357)
(PROCESS-COMMAND 9359 . 9972) (SLASHIT 9974 . 12016) (UNIX-FILE-NAME 12018 . 14616)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,10 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "14-Jul-2022 16:55:53" 
{DSK}<users>kaplan>local>medley3.5>working-medley>library>tedit>TEDIT-WINDOW.;1 180402
(FILECREATED "20-Oct-2023 21:46:58" {MEDLEY}<library>tedit>TEDIT-WINDOW.;7 180689
:PREVIOUS-DATE "14-Jul-2022 11:08:01"
{DSK}<users>kaplan>local>medley3.5>working-medley>library>newtedit>TEDIT-WINDOW.;2)
:EDIT-BY rmk
:CHANGES-TO (FNS TEDIT.DEACTIVATE.WINDOW)
:PREVIOUS-DATE "14-Jul-2022 16:55:53" {MEDLEY}<library>tedit>TEDIT-WINDOW.;5)
(PRETTYCOMPRINT TEDIT-WINDOWCOMS)
@@ -1631,113 +1633,114 @@
(DEFINEQ
(TEDIT.DEACTIVATE.WINDOW
[LAMBDA (W FORCEFLG DISCONNECTONLYFLG) (* ; "Edited 16-Oct-2021 18:51 by rmk:")
[LAMBDA (W FORCEFLG DISCONNECTONLYFLG) (* ; "Edited 20-Oct-2023 21:46 by rmk")
(* ; "Edited 16-Oct-2021 18:51 by rmk:")
(* ;; "Deactivate the various button fns for this window")
(PROG [(TEXTOBJ (WINDOWPROP W 'TEXTOBJ] (* ;
 "Can't be a call to TEXTOBJ, since window may NOT have a textobj on it.")
(replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with T)
[COND
((AND TEXTOBJ (fetch (TEXTOBJ EDITOPACTIVE) of TEXTOBJ))
(* ;; "If something is going on, DON'T CLOSE THE WINDOW")
(TEDIT.PROMPTPRINT TEXTOBJ "Not closed; edit operation in progress" T)
(RETURN 'DON'T))
((AND TEXTOBJ (PROCESSP (WINDOWPROP W 'PROCESS))
(NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ))
(NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))
(NOT FORCEFLG)) (* ;
 "This is an un-quit TEdit window. Try to QUIT out of TEdit.")
(COND
((\TEDIT.QUIT W T))
(T
(* ;; "Always return DON'T: If we didn't quit, we don't want to close the window; if we did quit, the window is closed already, and will be reopened to reclose it.")
(RETURN 'DON'T]
(COND
([AND TEXTOBJ (OR FORCEFLG (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)
(fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)
(NOT (PROCESSP (WINDOWPROP W 'PROCESS]
(* ;
 "Only do this if it's a TEdit window, and has been QUIT out of.")
(CL:WHEN TEXTOBJ
(replace (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ with T)
[COND
((AND (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)))
(CLEARW (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ]
(\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ)
NIL NIL) (* ;
 "Before the window is closed, make SURE that the caret is down, or the window will reappear.")
((fetch (TEXTOBJ EDITOPACTIVE) of TEXTOBJ)
(* ;; "If something is going on, DON'T CLOSE THE WINDOW")
(TEDIT.PROMPTPRINT TEXTOBJ "Not closed; edit operation in progress" T)
(RETURN 'DON'T))
((AND (PROCESSP (WINDOWPROP W 'PROCESS))
(NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ))
(NOT (fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ))
(NOT FORCEFLG)) (* ;
 "This is an un-quit TEdit window. Try to QUIT out of TEdit.")
(COND
((\TEDIT.QUIT W T))
(T
(* ;; "Always return DON'T: If we didn't quit, we don't want to close the window; if we did quit, the window is closed already, and will be reopened to reclose it.")
(RETURN 'DON'T]
(COND
((AND (\TEDIT.WINDOW.TITLE TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))
(OPENWP W)
(EQ W (CAR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
(NOT DISCONNECTONLYFLG))
(\TEDIT.WINDOW.TITLE TEXTOBJ "Edit Window [Inactive]")
([OR FORCEFLG (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)
(fetch (TEXTOBJ TXTREADONLY) of TEXTOBJ)
(NOT (PROCESSP (WINDOWPROP W 'PROCESS] (* ;
 "Only do this if it's a TEdit window, and has been QUIT out of.")
[COND
((AND (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ)))
(CLEARW (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ]
(\SHOWSEL (fetch (TEXTOBJ SEL) of TEXTOBJ)
NIL NIL) (* ;
 "Before the window is closed, make SURE that the caret is down, or the window will reappear.")
(COND
((AND (\TEDIT.WINDOW.TITLE TEXTOBJ)
(OPENWP (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))
(OPENWP W)
(EQ W (CAR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
(NOT DISCONNECTONLYFLG))
(\TEDIT.WINDOW.TITLE TEXTOBJ "Edit Window [Inactive]")
(* ;
 "Reset the window's title to a known 'inactive' value")
))
[COND
((NOT DISCONNECTONLYFLG)
(for PANE in (REVERSE (CDR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
do
(* ;; "Run thru any split-off sub-panes, and reattach them, so we get a whole window back before the end of the world.")
))
[COND
((NOT DISCONNECTONLYFLG)
(for PANE in (REVERSE (CDR (fetch (TEXTOBJ \WINDOW) of TEXTOBJ)))
do
(* ;; "Run thru any split-off sub-panes, and reattach them, so we get a whole window back before the end of the world.")
(\TEDIT.UNSPLITW PANE))
(replace (TEXTOBJ \WINDOW) of TEXTOBJ with NIL)
(COND
((type? STREAM (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(\TEDIT.UNSPLITW PANE))
(replace (TEXTOBJ \WINDOW) of TEXTOBJ with NIL)
(COND
((type? STREAM (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(* ;
 "Close the file that this window was open on.")
(COND
((NOT (WINDOWPROP W 'TEDIT-CLOSING-FILE T))
(CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(WINDOWPROP W 'TEDIT-CLOSING-FILE NIL]
(WINDOWPROP W 'TEXTOBJ NIL) (* ;
(COND
((NOT (WINDOWPROP W 'TEDIT-CLOSING-FILE T))
(CLOSEF? (fetch (TEXTOBJ TXTFILE) of TEXTOBJ))
(WINDOWPROP W 'TEDIT-CLOSING-FILE NIL]
(WINDOWPROP W 'TEXTOBJ NIL) (* ;
 "Detach the edit data structures from the window")
(WINDOWPROP W 'TEXTSTREAM NIL)
(WINDOWPROP W 'LINES NIL)
(WINDOWPROP W 'THISLINE NIL)
(WINDOWPROP W 'PROCESS.EXITFN NIL)
(WINDOWPROP W 'PROCESS.IDLEFN NIL)
(WINDOWPROP W 'CURSOROUTFN NIL)
(WINDOWPROP W 'CURSORMOVEDFN NIL)
(WINDOWPROP W 'BUTTONEVENTFN 'TOTOPW) (* ; "And the button functions")
(WINDOWPROP W 'RIGHTBUTTONFN 'DOWINDOWCOM)
(WINDOWDELPROP W 'CLOSEFN 'TEDIT.DEACTIVATE.WINDOW)
(WINDOWPROP W 'SCROLLFN NIL)
(WINDOWDELPROP W 'RESHAPEFN '\EDITRESHAPEFN)
(AND (NOT DISCONNECTONLYFLG)
(WINDOWPROP W 'PROCESS)
(\TEDIT.INTERRUPT.SETUP (WINDOWPROP W 'PROCESS)
T)) (* ;
(WINDOWPROP W 'TEXTSTREAM NIL)
(WINDOWPROP W 'LINES NIL)
(WINDOWPROP W 'THISLINE NIL)
(WINDOWPROP W 'PROCESS.EXITFN NIL)
(WINDOWPROP W 'PROCESS.IDLEFN NIL)
(WINDOWPROP W 'CURSOROUTFN NIL)
(WINDOWPROP W 'CURSORMOVEDFN NIL)
(WINDOWPROP W 'BUTTONEVENTFN 'TOTOPW) (* ; "And the button functions")
(WINDOWPROP W 'RIGHTBUTTONFN 'DOWINDOWCOM)
(WINDOWDELPROP W 'CLOSEFN 'TEDIT.DEACTIVATE.WINDOW)
(WINDOWPROP W 'SCROLLFN NIL)
(WINDOWDELPROP W 'RESHAPEFN '\EDITRESHAPEFN)
(AND (NOT DISCONNECTONLYFLG)
(WINDOWPROP W 'PROCESS)
(\TEDIT.INTERRUPT.SETUP (WINDOWPROP W 'PROCESS)
T)) (* ;
 "Make sure any disarmed interrupts are restored.")
(for MENUW in (ATTACHEDWINDOWS W) when (AND (WINDOWPROP MENUW 'TEDITMENU)
(WINDOWPROP MENUW 'TEXTOBJ))
do (* ;
(for MENUW in (ATTACHEDWINDOWS W) when (AND (WINDOWPROP MENUW 'TEDITMENU)
(WINDOWPROP MENUW 'TEXTOBJ))
do (* ;
 "Detach all the TEDITMENU windows that belong to this window.")
(replace (TEXTOBJ EDITFINISHEDFLG) of (TEXTOBJ MENUW) with T)
(replace (TEXTOBJ EDITFINISHEDFLG) of (TEXTOBJ MENUW) with T)
(* ; "Mark it finished")
(WINDOWPROP MENUW 'TEDITMENU NIL) (* ;
(WINDOWPROP MENUW 'TEDITMENU NIL) (* ;
 "And mark it no longer a menu window")
(GIVE.TTY.PROCESS MENUW) (* ;
(GIVE.TTY.PROCESS MENUW) (* ;
 "Then give it a chance to kill itself off")
(DISMISS 300))
(COND
((NOT DISCONNECTONLYFLG)
(GIVE.TTY.PROCESS W)
(DISMISS 300)))
[replace (TEXTOBJ \WINDOW) of TEXTOBJ with (COND
((LISTP (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ))
(DISMISS 300))
(COND
((NOT DISCONNECTONLYFLG)
(GIVE.TTY.PROCESS W)
(DISMISS 300)))
[replace (TEXTOBJ \WINDOW) of TEXTOBJ with (COND
((LISTP (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ))
(* ; "It's a list; remove this window")
(DREMOVE W (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ]
(DREMOVE W (fetch (TEXTOBJ \WINDOW)
of TEXTOBJ]
(* ;
 "Disconnect the window from the edit data structures as well.")
])
)))])
(\TEDIT.REPAINTFN
[LAMBDA (W) (* ; "Edited 30-May-91 23:34 by jds")
@@ -2726,25 +2729,25 @@
(RPAQ? TEDIT.TITLED.ICON.TEMPLATE (CONS TEDITICON (CONS TEDITMASK (CONS TEDIT.ICON.TITLE.REGION NIL))
))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (7116 90052 (TEDIT.CREATEW 7126 . 9899) (\TEDIT.CREATEW.FROM.REGION 9901 . 10881) (
TEDIT.CURSORMOVEDFN 10883 . 20782) (TEDIT.CURSOROUTFN 20784 . 21327) (TEDIT.WINDOW.SETUP 21329 . 23154
) (TEDIT.MINIMAL.WINDOW.SETUP 23156 . 30934) (\TEDIT.ACTIVE.WINDOWP 30936 . 31929) (
\TEDIT.BUTTONEVENTFN 31931 . 55639) (\TEDIT.WINDOW.OPS 55641 . 58853) (\TEDIT.EXPANDFN 58855 . 59418)
(\TEDIT.MAINW 59420 . 60717) (\TEDIT.PRIMARYW 60719 . 61880) (\TEDIT.COPYINSERTFN 61882 . 62678) (
\TEDIT.NEWREGIONFN 62680 . 65196) (\TEDIT.SET.WINDOW.EXTENT 65198 . 70741) (\TEDIT.SHRINK.ICONCREATE
70743 . 72944) (\TEDIT.SHRINKFN 72946 . 73505) (\TEDIT.SPLITW 73507 . 78972) (\TEDIT.UNSPLITW 78974 .
83830) (\TEDIT.WINDOW.SETUP 83832 . 89655) (\SAFE.FIRST 89657 . 90050)) (91382 92293 (TEDITWINDOWP
91392 . 92291)) (92330 95120 (TEDIT.GETINPUT 92340 . 94400) (\TEDIT.MAKEFILENAME 94402 . 95118)) (
95169 101597 (TEDIT.PROMPTPRINT 95179 . 98114) (TEDIT.PROMPTFLASH 98116 . 100025) (
\TEDIT.PROMPT.PAGEFULLFN 100027 . 101595)) (101832 105804 (TEXTSTREAM.TITLE 101842 . 102467) (
\TEDIT.ORIGINAL.WINDOW.TITLE 102469 . 104391) (\TEDIT.WINDOW.TITLE 104393 . 105047) (
\TEXTSTREAM.FILENAME 105049 . 105802)) (105847 147324 (TEDIT.DEACTIVATE.WINDOW 105857 . 112821) (
\TEDIT.REPAINTFN 112823 . 115671) (\TEDIT.RESHAPEFN 115673 . 120517) (\TEDIT.SCROLLFN 120519 . 147322)
) (147366 149497 (\TEDIT.PROCIDLEFN 147376 . 148671) (\TEDIT.PROCENTRYFN 148673 . 149118) (
\TEDIT.PROCEXITFN 149120 . 149495)) (149576 160542 (\EDIT.DOWNCARET 149586 . 150255) (\EDIT.FLIPCARET
150257 . 151776) (TEDIT.FLASHCARET 151778 . 153059) (\EDIT.UPCARET 153061 . 153486) (
TEDIT.NORMALIZECARET 153488 . 159185) (\SETCARET 159187 . 160115) (\TEDIT.CARET 160117 . 160540)) (
160576 174370 (TEDIT.ADD.MENUITEM 160586 . 162877) (TEDIT.DEFAULT.MENUFN 162879 . 171849) (
TEDIT.REMOVE.MENUITEM 171851 . 172848) (\TEDIT.CREATEMENU 172850 . 173287) (\TEDIT.MENU.WHENHELDFN
173289 . 174055) (\TEDIT.MENU.WHENSELECTEDFN 174057 . 174368)))))
(FILEMAP (NIL (7098 90034 (TEDIT.CREATEW 7108 . 9881) (\TEDIT.CREATEW.FROM.REGION 9883 . 10863) (
TEDIT.CURSORMOVEDFN 10865 . 20764) (TEDIT.CURSOROUTFN 20766 . 21309) (TEDIT.WINDOW.SETUP 21311 . 23136
) (TEDIT.MINIMAL.WINDOW.SETUP 23138 . 30916) (\TEDIT.ACTIVE.WINDOWP 30918 . 31911) (
\TEDIT.BUTTONEVENTFN 31913 . 55621) (\TEDIT.WINDOW.OPS 55623 . 58835) (\TEDIT.EXPANDFN 58837 . 59400)
(\TEDIT.MAINW 59402 . 60699) (\TEDIT.PRIMARYW 60701 . 61862) (\TEDIT.COPYINSERTFN 61864 . 62660) (
\TEDIT.NEWREGIONFN 62662 . 65178) (\TEDIT.SET.WINDOW.EXTENT 65180 . 70723) (\TEDIT.SHRINK.ICONCREATE
70725 . 72926) (\TEDIT.SHRINKFN 72928 . 73487) (\TEDIT.SPLITW 73489 . 78954) (\TEDIT.UNSPLITW 78956 .
83812) (\TEDIT.WINDOW.SETUP 83814 . 89637) (\SAFE.FIRST 89639 . 90032)) (91364 92275 (TEDITWINDOWP
91374 . 92273)) (92312 95102 (TEDIT.GETINPUT 92322 . 94382) (\TEDIT.MAKEFILENAME 94384 . 95100)) (
95151 101579 (TEDIT.PROMPTPRINT 95161 . 98096) (TEDIT.PROMPTFLASH 98098 . 100007) (
\TEDIT.PROMPT.PAGEFULLFN 100009 . 101577)) (101814 105786 (TEXTSTREAM.TITLE 101824 . 102449) (
\TEDIT.ORIGINAL.WINDOW.TITLE 102451 . 104373) (\TEDIT.WINDOW.TITLE 104375 . 105029) (
\TEXTSTREAM.FILENAME 105031 . 105784)) (105829 147611 (TEDIT.DEACTIVATE.WINDOW 105839 . 113108) (
\TEDIT.REPAINTFN 113110 . 115958) (\TEDIT.RESHAPEFN 115960 . 120804) (\TEDIT.SCROLLFN 120806 . 147609)
) (147653 149784 (\TEDIT.PROCIDLEFN 147663 . 148958) (\TEDIT.PROCENTRYFN 148960 . 149405) (
\TEDIT.PROCEXITFN 149407 . 149782)) (149863 160829 (\EDIT.DOWNCARET 149873 . 150542) (\EDIT.FLIPCARET
150544 . 152063) (TEDIT.FLASHCARET 152065 . 153346) (\EDIT.UPCARET 153348 . 153773) (
TEDIT.NORMALIZECARET 153775 . 159472) (\SETCARET 159474 . 160402) (\TEDIT.CARET 160404 . 160827)) (
160863 174657 (TEDIT.ADD.MENUITEM 160873 . 163164) (TEDIT.DEFAULT.MENUFN 163166 . 172136) (
TEDIT.REMOVE.MENUITEM 172138 . 173135) (\TEDIT.CREATEMENU 173137 . 173574) (\TEDIT.MENU.WHENHELDFN
173576 . 174342) (\TEDIT.MENU.WHENSELECTEDFN 174344 . 174655)))))
STOP

Binary file not shown.

View File

@@ -0,0 +1,625 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 6-Jul-2023 08:52:09" {WMEDLEY}<library>virtualkeyboards>DANDELIONKEYBOARDS.;3 33795
:EDIT-BY rmk
:CHANGES-TO (VARS DANDELIONKEYBOARDSCOMS)
:PREVIOUS-DATE " 4-Jul-2023 23:18:05" {WMEDLEY}<library>virtualkeyboards>DANDELIONKEYBOARDS.;2
)
(PRETTYCOMPRINT DANDELIONKEYBOARDSCOMS)
(RPAQQ DANDELIONKEYBOARDSCOMS ((ALISTS (VKBD.LOADED-KEYBOARDS DANDELION))))
(ADDTOVAR VKBD.LOADED-KEYBOARDS
(DANDELION (EUROPEAN ((100 (53 197 NOLOCKSHIFT))
(101 (52 196 NOLOCKSHIFT))
(102 (54 198 NOLOCKSHIFT))
(103 (61887 61759 LOCKSHIFT))
(104 (55 199 NOLOCKSHIFT))
(105 (61888 61760 LOCKSHIFT))
(106 (61872 61744 LOCKSHIFT))
(107 (61860 61732 LOCKSHIFT))
(108 (48 126 NOLOCKSHIFT))
(109 (61892 61764 LOCKSHIFT))
(110 (203 207 NOLOCKSHIFT))
(111 (61919 61791 LOCKSHIFT))
(112 (47 191 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 195 NOLOCKSHIFT))
(117 (50 194 NOLOCKSHIFT))
(118 (61873 61745 LOCKSHIFT))
(119 (61858 61730 LOCKSHIFT))
(120 (61874 61746 LOCKSHIFT))
(121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT))
(123 (61886 61758 LOCKSHIFT))
(124 (61864 61736 LOCKSHIFT))
(125 (61903 61775 LOCKSHIFT))
(126 (61908 61780 LOCKSHIFT))
(127 (241 225 LOCKSHIFT))
(128 (187 170 LOCKSHIFT))
(129 (249 233 LOCKSHIFT))
(132 (49 193 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61905 61777 LOCKSHIFT))
(137 (61869 61741 LOCKSHIFT))
(138 (61877 61749 LOCKSHIFT))
(139 (61906 61778 LOCKSHIFT))
(140 (251 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (250 234 LOCKSHIFT))
(143 (59 58 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (171 186 LOCKSHIFT))
(148 (61904 61776 LOCKSHIFT))
(149 (61920 61792 LOCKSHIFT))
(150 (61921 61793 LOCKSHIFT))
(151 (61857 61729 LOCKSHIFT))
(152 (61863 61735 LOCKSHIFT))
(153 (56 200 NOLOCKSHIFT))
(154 (61900 61772 LOCKSHIFT))
(155 (239 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (246 230 LOCKSHIFT))
(159 (207 176 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(logic ((100 (53 37 NOLOCKSHIFT))
(101 (52 164 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61258 61260 NOLOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (61292 61293 NOLOCKSHIFT))
(106 (61271 61270 NOLOCKSHIFT))
(107 (61284 61285 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61307 61306 NOLOCKSHIFT))
(110 (45 177 NOLOCKSHIFT))
(111 (61269 61268 LOCKSHIFT))
(112 (172 174 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61240 61241 NOLOCKSHIFT))
(119 (61234 61235 NOLOCKSHIFT))
(120 (61266 61262 NOLOCKSHIFT))
(121 (61365 61365 NOLOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (61275 61274 NOLOCKSHIFT))
(124 (61300 61299 NOLOCKSHIFT))
(125 (61273 61272 NOLOCKSHIFT))
(126 (61282 61283 NOLOCKSHIFT))
(127 (61256 61257 NOLOCKSHIFT))
(128 (61356 61356 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61250 61251 NOLOCKSHIFT))
(137 (61298 61297 NOLOCKSHIFT))
(138 (61305 61303 NOLOCKSHIFT))
(139 (61265 61264 NOLOCKSHIFT))
(140 (61364 61364 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61281 233 NOLOCKSHIFT))
(143 (61351 61351 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (61357 61357 NOLOCKSHIFT))
(148 (61279 61278 NOLOCKSHIFT))
(149 (61239 61238 NOLOCKSHIFT))
(150 (61290 61290 NOLOCKSHIFT))
(151 (61263 61261 NOLOCKSHIFT))
(152 (61295 61295 NOLOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61252 61253 NOLOCKSHIFT))
(155 (61254 61255 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(MATH ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61284 61285 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (174 61245 NOLOCKSHIFT))
(107 (61369 61363 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61254 61255 NOLOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (173 61246 LOCKSHIFT))
(112 (47 61300 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61282 61283 LOCKSHIFT))
(119 (61287 61286 NOLOCKSHIFT))
(120 (61301 61302 NOLOCKSHIFT))
(121 (61351 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (175 61247 LOCKSHIFT))
(124 (180 184 LOCKSHIFT))
(125 (172 61244 LOCKSHIFT))
(126 (61256 61257 LOCKSHIFT))
(127 (44 61250 NOLOCKSHIFT))
(128 (61298 61253 NOLOCKSHIFT))
(129 (93 61265 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (61356 61362 LOCKSHIFT))
(138 (61254 61291 NOLOCKSHIFT))
(139 (98 61360 NOLOCKSHIFT))
(140 (61309 177 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 61251 NOLOCKSHIFT))
(143 (61299 61252 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (61358 82 LOCKSHIFT))
(149 (61296 61266 NOLOCKSHIFT))
(150 (61305 61303 NOLOCKSHIFT))
(151 (61308 61267 LOCKSHIFT))
(152 (61288 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61357 61361 NOLOCKSHIFT))
(155 (61292 61293 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 61264 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(OFFICE ((100 (61397 61381 NOLOCKSHIFT))
(101 (61396 61380 NOLOCKSHIFT))
(102 (61398 61382 NOLOCKSHIFT))
(103 (8557 8554 NOLOCKSHIFT))
(104 (61399 61383 NOLOCKSHIFT))
(105 (61232 8743 NOLOCKSHIFT))
(106 (61346 8571 NOLOCKSHIFT))
(107 (188 86 NOLOCKSHIFT))
(108 (61402 61386 NOLOCKSHIFT))
(109 (210 8738 NOLOCKSHIFT))
(110 (61437 61438 NOLOCKSHIFT))
(111 (163 8558 NOLOCKSHIFT))
(112 (61248 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (61395 61379 NOLOCKSHIFT))
(117 (61394 61378 NOLOCKSHIFT))
(118 (185 8553 NOLOCKSHIFT))
(119 (176 8546 NOLOCKSHIFT))
(120 (167 8744 NOLOCKSHIFT))
(121 (97 8745 NOLOCKSHIFT))
(122 (61401 61385 NOLOCKSHIFT))
(123 (162 8570 NOLOCKSHIFT))
(124 (61437 88 NOLOCKSHIFT))
(125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (61393 61377 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61233 8742 NOLOCKSHIFT))
(137 (61438 67 NOLOCKSHIFT))
(138 (8739 74 NOLOCKSHIFT))
(139 (190 61436 NOLOCKSHIFT))
(140 (189 90 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61249 62 NOLOCKSHIFT))
(143 (61352 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 61280 NOLOCKSHIFT))
(148 (212 8574 NOLOCKSHIFT))
(149 (61354 8573 NOLOCKSHIFT))
(150 (61286 8741 NOLOCKSHIFT))
(151 (165 8572 NOLOCKSHIFT))
(152 (61368 8740 NOLOCKSHIFT))
(153 (61400 61384 NOLOCKSHIFT))
(154 (173 175 NOLOCKSHIFT))
(155 (172 174 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61406 61368 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(DVORAK ((100 (49 42 NOLOCKSHIFT))
(101 (51 41 NOLOCKSHIFT))
(102 (57 37 NOLOCKSHIFT))
(103 (46 62 NOLOCKSHIFT))
(104 (48 38 NOLOCKSHIFT))
(105 (101 69 LOCKSHIFT))
(106 (103 71 LOCKSHIFT))
(107 (107 75 LOCKSHIFT))
(108 (54 45 NOLOCKSHIFT))
(109 (116 84 LOCKSHIFT))
(110 (56 95 NOLOCKSHIFT))
(111 (108 76 LOCKSHIFT))
(112 (122 90 LOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (53 40 NOLOCKSHIFT))
(117 (55 35 NOLOCKSHIFT))
(118 (44 60 NOLOCKSHIFT))
(119 (63 47 NOLOCKSHIFT))
(120 (111 79 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (52 164 NOLOCKSHIFT))
(123 (99 67 LOCKSHIFT))
(124 (113 81 LOCKSHIFT))
(125 (114 82 LOCKSHIFT))
(126 (110 78 LOCKSHIFT))
(127 (119 87 LOCKSHIFT))
(128 (44 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (33 64 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (117 85 LOCKSHIFT))
(137 (106 74 LOCKSHIFT))
(138 (104 72 LOCKSHIFT))
(139 (120 88 LOCKSHIFT))
(140 (59 58 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (118 86 LOCKSHIFT))
(143 (115 83 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (169 170 NOLOCKSHIFT))
(148 (112 80 LOCKSHIFT))
(149 (121 89 LOCKSHIFT))
(150 (105 73 LOCKSHIFT))
(151 (102 70 LOCKSHIFT))
(152 (100 68 LOCKSHIFT))
(153 (50 162 NOLOCKSHIFT))
(154 (98 66 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(GREEK ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (9830 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (9829 9797 LOCKSHIFT))
(106 (9849 9817 LOCKSHIFT))
(107 (115 9814 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (9837 9805 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (9843 9811 LOCKSHIFT))
(112 (47 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (9853 9821 LOCKSHIFT))
(119 (9835 9803 LOCKSHIFT))
(120 (9846 9814 LOCKSHIFT))
(121 (9825 9793 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (9836 9804 LOCKSHIFT))
(124 (9851 9819 LOCKSHIFT))
(125 (9842 9810 LOCKSHIFT))
(126 (9838 9806 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (9850 9818 LOCKSHIFT))
(137 (9841 9809 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (9826 66 LOCKSHIFT))
(140 (9833 9801 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (9845 9813 LOCKSHIFT))
(149 (9848 9816 LOCKSHIFT))
(150 (9828 9796 LOCKSHIFT))
(151 (9852 9820 LOCKSHIFT))
(152 (9834 9802 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (9840 9808 LOCKSHIFT))
(155 (9839 9807 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(ITALIAN ((100 (53 61903 NOLOCKSHIFT))
(101 (52 61886 NOLOCKSHIFT))
(102 (54 61919 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 61872 NOLOCKSHIFT))
(117 (50 61858 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (39 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 170 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(SPANISH ((100 (53 61904 NOLOCKSHIFT))
(101 (52 61887 NOLOCKSHIFT))
(102 (54 61920 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 61873 NOLOCKSHIFT))
(117 (50 61858 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (59 58 NOLOCKSHIFT))
(129 (203 187 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (61900 61772 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (161 191 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61925 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (44 171 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(FRENCH ((100 (53 61905 NOLOCKSHIFT))
(101 (52 61888 NOLOCKSHIFT))
(102 (54 61921 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 61874 NOLOCKSHIFT))
(117 (50 61859 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (39 61857 NOLOCKSHIFT))
(129 (61872 61892 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (61869 61741 LOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61919 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61873 61877 LOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(GERMAN ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (251 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (61863 61735 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61908 61780 LOCKSHIFT))
(159 (61925 61797 LOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)
(STANDARD-RUSSIAN ((100 (34 52 NOLOCKSHIFT))
(101 (47 51 NOLOCKSHIFT))
(102 (58 53 NOLOCKSHIFT))
(103 (10085 10037 LOCKSHIFT))
(104 (44 54 NOLOCKSHIFT))
(105 (10067 10019 LOCKSHIFT))
(106 (10068 10020 LOCKSHIFT))
(107 (10078 10030 LOCKSHIFT))
(108 (63 57 NOLOCKSHIFT))
(109 (10077 10029 LOCKSHIFT))
(110 (37 48 NOLOCKSHIFT))
(111 (10073 10025 LOCKSHIFT))
(112 (10071 10023 LOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (45 50 NOLOCKSHIFT))
(117 (61352 49 NOLOCKSHIFT))
(118 (10088 10040 LOCKSHIFT))
(119 (10075 10027 LOCKSHIFT))
(120 (10093 10045 LOCKSHIFT))
(121 (10086 10038 LOCKSHIFT))
(122 (95 56 NOLOCKSHIFT))
(123 (10090 10042 LOCKSHIFT))
(124 (10089 10041 LOCKSHIFT))
(125 (10091 10043 LOCKSHIFT))
(126 (10069 10021 LOCKSHIFT))
(127 (10066 10018 LOCKSHIFT))
(128 (10095 10047 LOCKSHIFT))
(129 (10092 10044 LOCKSHIFT))
(132 (167 43 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (10065 10017 LOCKSHIFT))
(137 (10083 10035 LOCKSHIFT))
(138 (10080 10032 LOCKSHIFT))
(139 (10074 10026 LOCKSHIFT))
(140 (10097 10049 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (10096 10048 LOCKSHIFT))
(143 (10072 10024 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (41 40 NOLOCKSHIFT))
(148 (10076 10028 LOCKSHIFT))
(149 (10070 10022 LOCKSHIFT))
(150 (10081 10033 LOCKSHIFT))
(151 (10079 10031 LOCKSHIFT))
(152 (10082 10034 LOCKSHIFT))
(153 (46 55 NOLOCKSHIFT))
(154 (10084 10036 LOCKSHIFT))
(155 (10094 10046 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (10087 10039 LOCKSHIFT))
(159 (33 61 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DANDELION)))
(DECLARE%: DONTCOPY
(FILEMAP (NIL)))
STOP

View File

@@ -0,0 +1,624 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 6-Jul-2023 08:52:15" {WMEDLEY}<library>virtualkeyboards>DORADOKEYBOARDS.;4 33578
:EDIT-BY rmk
:CHANGES-TO (VARS DORADOKEYBOARDSCOMS)
:PREVIOUS-DATE " 4-Jul-2023 23:15:23" {WMEDLEY}<library>virtualkeyboards>DORADOKEYBOARDS.;2)
(PRETTYCOMPRINT DORADOKEYBOARDSCOMS)
(RPAQQ DORADOKEYBOARDSCOMS ((ALISTS (VKBD.LOADED-KEYBOARDS DORADO))))
(ADDTOVAR VKBD.LOADED-KEYBOARDS
(DORADO (EUROPEAN ((100 (53 197 NOLOCKSHIFT))
(101 (52 196 NOLOCKSHIFT))
(102 (54 198 NOLOCKSHIFT))
(103 (61887 61759 LOCKSHIFT))
(104 (55 199 NOLOCKSHIFT))
(105 (61888 61760 LOCKSHIFT))
(106 (61872 61744 LOCKSHIFT))
(107 (61860 61732 LOCKSHIFT))
(108 (48 126 NOLOCKSHIFT))
(109 (61892 61764 LOCKSHIFT))
(110 (203 207 NOLOCKSHIFT))
(111 (61919 61791 LOCKSHIFT))
(112 (47 191 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 195 NOLOCKSHIFT))
(117 (50 194 NOLOCKSHIFT))
(118 (61873 61745 LOCKSHIFT))
(119 (61858 61730 LOCKSHIFT))
(120 (61874 61746 LOCKSHIFT))
(121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT))
(123 (61886 61758 LOCKSHIFT))
(124 (61864 61736 LOCKSHIFT))
(125 (61903 61775 LOCKSHIFT))
(126 (61908 61780 LOCKSHIFT))
(127 (241 225 LOCKSHIFT))
(128 (187 170 LOCKSHIFT))
(129 (249 233 LOCKSHIFT))
(132 (49 193 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61905 61777 LOCKSHIFT))
(137 (61869 61741 LOCKSHIFT))
(138 (61877 61749 LOCKSHIFT))
(139 (61906 61778 LOCKSHIFT))
(140 (251 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (250 234 LOCKSHIFT))
(143 (59 58 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (171 186 LOCKSHIFT))
(148 (61904 61776 LOCKSHIFT))
(149 (61920 61792 LOCKSHIFT))
(150 (61921 61793 LOCKSHIFT))
(151 (61857 61729 LOCKSHIFT))
(152 (61863 61735 LOCKSHIFT))
(153 (56 200 NOLOCKSHIFT))
(154 (61900 61772 LOCKSHIFT))
(155 (239 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (246 230 LOCKSHIFT))
(159 (207 176 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(logic ((100 (53 37 NOLOCKSHIFT))
(101 (52 164 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61258 61260 NOLOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (61292 61293 NOLOCKSHIFT))
(106 (61271 61270 NOLOCKSHIFT))
(107 (61284 61285 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61307 61306 NOLOCKSHIFT))
(110 (45 177 NOLOCKSHIFT))
(111 (61269 61268 LOCKSHIFT))
(112 (172 174 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61240 61241 NOLOCKSHIFT))
(119 (61234 61235 NOLOCKSHIFT))
(120 (61266 61262 NOLOCKSHIFT))
(121 (61365 61365 NOLOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (61275 61274 NOLOCKSHIFT))
(124 (61300 61299 NOLOCKSHIFT))
(125 (61273 61272 NOLOCKSHIFT))
(126 (61282 61283 NOLOCKSHIFT))
(127 (61256 61257 NOLOCKSHIFT))
(128 (61356 61356 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61250 61251 NOLOCKSHIFT))
(137 (61298 61297 NOLOCKSHIFT))
(138 (61305 61303 NOLOCKSHIFT))
(139 (61265 61264 NOLOCKSHIFT))
(140 (61364 61364 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61281 233 NOLOCKSHIFT))
(143 (61351 61351 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (61357 61357 NOLOCKSHIFT))
(148 (61279 61278 NOLOCKSHIFT))
(149 (61239 61238 NOLOCKSHIFT))
(150 (61290 61290 NOLOCKSHIFT))
(151 (61263 61261 NOLOCKSHIFT))
(152 (61295 61295 NOLOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61252 61253 NOLOCKSHIFT))
(155 (61254 61255 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(MATH ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61284 61285 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (174 61245 NOLOCKSHIFT))
(107 (61369 61363 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61254 61255 NOLOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (173 61246 LOCKSHIFT))
(112 (47 61300 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61282 61283 LOCKSHIFT))
(119 (61287 61286 NOLOCKSHIFT))
(120 (61301 61302 NOLOCKSHIFT))
(121 (61351 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (175 61247 LOCKSHIFT))
(124 (180 184 LOCKSHIFT))
(125 (172 61244 LOCKSHIFT))
(126 (61256 61257 LOCKSHIFT))
(127 (44 61250 NOLOCKSHIFT))
(128 (61298 61253 NOLOCKSHIFT))
(129 (93 61265 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (61356 61362 LOCKSHIFT))
(138 (61254 61291 NOLOCKSHIFT))
(139 (98 61360 NOLOCKSHIFT))
(140 (61309 177 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 61251 NOLOCKSHIFT))
(143 (61299 61252 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (61358 82 LOCKSHIFT))
(149 (61296 61266 NOLOCKSHIFT))
(150 (61305 61303 NOLOCKSHIFT))
(151 (61308 61267 LOCKSHIFT))
(152 (61288 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61357 61361 NOLOCKSHIFT))
(155 (61292 61293 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 61264 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(OFFICE ((100 (61397 61381 NOLOCKSHIFT))
(101 (61396 61380 NOLOCKSHIFT))
(102 (61398 61382 NOLOCKSHIFT))
(103 (8557 8554 NOLOCKSHIFT))
(104 (61399 61383 NOLOCKSHIFT))
(105 (61232 8743 NOLOCKSHIFT))
(106 (61346 8571 NOLOCKSHIFT))
(107 (188 86 NOLOCKSHIFT))
(108 (61402 61386 NOLOCKSHIFT))
(109 (210 8738 NOLOCKSHIFT))
(110 (61437 61438 NOLOCKSHIFT))
(111 (163 8558 NOLOCKSHIFT))
(112 (61248 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (61395 61379 NOLOCKSHIFT))
(117 (61394 61378 NOLOCKSHIFT))
(118 (185 8553 NOLOCKSHIFT))
(119 (176 8546 NOLOCKSHIFT))
(120 (167 8744 NOLOCKSHIFT))
(121 (97 8745 NOLOCKSHIFT))
(122 (61401 61385 NOLOCKSHIFT))
(123 (162 8570 NOLOCKSHIFT))
(124 (61437 88 NOLOCKSHIFT))
(125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (61393 61377 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61233 8742 NOLOCKSHIFT))
(137 (61438 67 NOLOCKSHIFT))
(138 (8739 74 NOLOCKSHIFT))
(139 (190 61436 NOLOCKSHIFT))
(140 (189 90 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61249 62 NOLOCKSHIFT))
(143 (61352 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 61280 NOLOCKSHIFT))
(148 (212 8574 NOLOCKSHIFT))
(149 (61354 8573 NOLOCKSHIFT))
(150 (61286 8741 NOLOCKSHIFT))
(151 (165 8572 NOLOCKSHIFT))
(152 (61368 8740 NOLOCKSHIFT))
(153 (61400 61384 NOLOCKSHIFT))
(154 (173 175 NOLOCKSHIFT))
(155 (172 174 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61406 61368 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(DVORAK ((100 (49 42 NOLOCKSHIFT))
(101 (51 41 NOLOCKSHIFT))
(102 (57 37 NOLOCKSHIFT))
(103 (46 62 NOLOCKSHIFT))
(104 (48 38 NOLOCKSHIFT))
(105 (101 69 LOCKSHIFT))
(106 (103 71 LOCKSHIFT))
(107 (107 75 LOCKSHIFT))
(108 (54 45 NOLOCKSHIFT))
(109 (116 84 LOCKSHIFT))
(110 (56 95 NOLOCKSHIFT))
(111 (108 76 LOCKSHIFT))
(112 (122 90 LOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (53 40 NOLOCKSHIFT))
(117 (55 35 NOLOCKSHIFT))
(118 (44 60 NOLOCKSHIFT))
(119 (63 47 NOLOCKSHIFT))
(120 (111 79 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (52 164 NOLOCKSHIFT))
(123 (99 67 LOCKSHIFT))
(124 (113 81 LOCKSHIFT))
(125 (114 82 LOCKSHIFT))
(126 (110 78 LOCKSHIFT))
(127 (119 87 LOCKSHIFT))
(128 (44 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (33 64 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (117 85 LOCKSHIFT))
(137 (106 74 LOCKSHIFT))
(138 (104 72 LOCKSHIFT))
(139 (120 88 LOCKSHIFT))
(140 (59 58 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (118 86 LOCKSHIFT))
(143 (115 83 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (169 170 NOLOCKSHIFT))
(148 (112 80 LOCKSHIFT))
(149 (121 89 LOCKSHIFT))
(150 (105 73 LOCKSHIFT))
(151 (102 70 LOCKSHIFT))
(152 (100 68 LOCKSHIFT))
(153 (50 162 NOLOCKSHIFT))
(154 (98 66 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(GREEK ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (9830 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (9829 9797 LOCKSHIFT))
(106 (9849 9817 LOCKSHIFT))
(107 (115 9814 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (9837 9805 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (9843 9811 LOCKSHIFT))
(112 (47 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (9853 9821 LOCKSHIFT))
(119 (9835 9803 LOCKSHIFT))
(120 (9846 9814 LOCKSHIFT))
(121 (9825 9793 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (9836 9804 LOCKSHIFT))
(124 (9851 9819 LOCKSHIFT))
(125 (9842 9810 LOCKSHIFT))
(126 (9838 9806 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (9850 9818 LOCKSHIFT))
(137 (9841 9809 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (9826 66 LOCKSHIFT))
(140 (9833 9801 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (9845 9813 LOCKSHIFT))
(149 (9848 9816 LOCKSHIFT))
(150 (9828 9796 LOCKSHIFT))
(151 (9852 9820 LOCKSHIFT))
(152 (9834 9802 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (9840 9808 LOCKSHIFT))
(155 (9839 9807 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(ITALIAN ((100 (53 61903 NOLOCKSHIFT))
(101 (52 61886 NOLOCKSHIFT))
(102 (54 61919 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 61872 NOLOCKSHIFT))
(117 (50 61858 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (39 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 170 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(SPANISH ((100 (53 61904 NOLOCKSHIFT))
(101 (52 61887 NOLOCKSHIFT))
(102 (54 61920 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 61873 NOLOCKSHIFT))
(117 (50 61858 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (59 58 NOLOCKSHIFT))
(129 (203 187 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (61900 61772 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (161 191 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61925 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (44 171 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(FRENCH ((100 (53 61905 NOLOCKSHIFT))
(101 (52 61888 NOLOCKSHIFT))
(102 (54 61921 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (204 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 61874 NOLOCKSHIFT))
(117 (50 61859 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(128 (39 61857 NOLOCKSHIFT))
(129 (61872 61892 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (61869 61741 LOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61919 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61873 61877 LOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(GERMAN ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (251 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(128 (39 34 NOLOCKSHIFT))
(129 (61863 61735 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (95 94 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61908 61780 LOCKSHIFT))
(159 (61925 61797 LOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)
(STANDARD-RUSSIAN ((100 (34 52 NOLOCKSHIFT))
(101 (47 51 NOLOCKSHIFT))
(102 (58 53 NOLOCKSHIFT))
(103 (10085 10037 LOCKSHIFT))
(104 (44 54 NOLOCKSHIFT))
(105 (10067 10019 LOCKSHIFT))
(106 (10068 10020 LOCKSHIFT))
(107 (10078 10030 LOCKSHIFT))
(108 (63 57 NOLOCKSHIFT))
(109 (10077 10029 LOCKSHIFT))
(110 (37 48 NOLOCKSHIFT))
(111 (10073 10025 LOCKSHIFT))
(112 (10071 10023 LOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (45 50 NOLOCKSHIFT))
(117 (61352 49 NOLOCKSHIFT))
(118 (10088 10040 LOCKSHIFT))
(119 (10075 10027 LOCKSHIFT))
(120 (10093 10045 LOCKSHIFT))
(121 (10086 10038 LOCKSHIFT))
(122 (95 56 NOLOCKSHIFT))
(123 (10090 10042 LOCKSHIFT))
(124 (10089 10041 LOCKSHIFT))
(125 (10091 10043 LOCKSHIFT))
(126 (10069 10021 LOCKSHIFT))
(127 (10066 10018 LOCKSHIFT))
(128 (10095 10047 LOCKSHIFT))
(129 (10092 10044 LOCKSHIFT))
(132 (167 43 NOLOCKSHIFT))
(133 (92 124 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (10065 10017 LOCKSHIFT))
(137 (10083 10035 LOCKSHIFT))
(138 (10080 10032 LOCKSHIFT))
(139 (10074 10026 LOCKSHIFT))
(140 (10097 10049 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (10096 10048 LOCKSHIFT))
(143 (10072 10024 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(145 (41 40 NOLOCKSHIFT))
(148 (10076 10028 LOCKSHIFT))
(149 (10070 10022 LOCKSHIFT))
(150 (10081 10033 LOCKSHIFT))
(151 (10079 10031 LOCKSHIFT))
(152 (10082 10034 LOCKSHIFT))
(153 (46 55 NOLOCKSHIFT))
(154 (10084 10036 LOCKSHIFT))
(155 (10094 10046 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (10087 10039 LOCKSHIFT))
(159 (33 61 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DORADO)))
(DECLARE%: DONTCOPY
(FILEMAP (NIL)))
STOP

View File

@@ -0,0 +1,631 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 6-Jul-2023 08:52:04" {WMEDLEY}<library>virtualkeyboards>DOVEKEYBOARDS.;3 33268
:EDIT-BY rmk
:CHANGES-TO (VARS DOVEKEYBOARDSCOMS)
:PREVIOUS-DATE " 4-Jul-2023 23:19:33" {WMEDLEY}<library>virtualkeyboards>DOVEKEYBOARDS.;2)
(PRETTYCOMPRINT DOVEKEYBOARDSCOMS)
(RPAQQ DOVEKEYBOARDSCOMS ((ALISTS (VKBD.LOADED-KEYBOARDS DOVE))))
(ADDTOVAR VKBD.LOADED-KEYBOARDS
(DOVE (EUROPEAN ((100 (53 197 NOLOCKSHIFT))
(101 (52 196 NOLOCKSHIFT))
(102 (54 198 NOLOCKSHIFT))
(103 (61887 61759 LOCKSHIFT))
(104 (55 199 NOLOCKSHIFT))
(105 (61888 61760 LOCKSHIFT))
(106 (61872 61744 LOCKSHIFT))
(107 (61860 61732 LOCKSHIFT))
(108 (48 126 NOLOCKSHIFT))
(109 (61892 61764 LOCKSHIFT))
(110 (203 207 NOLOCKSHIFT))
(111 (61919 61791 LOCKSHIFT))
(112 (47 191 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 195 NOLOCKSHIFT))
(117 (50 194 NOLOCKSHIFT))
(118 (61873 61745 LOCKSHIFT))
(119 (61858 61730 LOCKSHIFT))
(120 (61874 61746 LOCKSHIFT))
(121 (61859 61731 LOCKSHIFT))
(122 (57 202 NOLOCKSHIFT))
(123 (61886 61758 LOCKSHIFT))
(124 (61864 61736 LOCKSHIFT))
(125 (61903 61775 LOCKSHIFT))
(126 (61908 61780 LOCKSHIFT))
(127 (241 225 LOCKSHIFT))
(171 (187 170 LOCKSHIFT))
(129 (249 233 LOCKSHIFT))
(132 (49 193 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61905 61777 LOCKSHIFT))
(137 (61869 61741 LOCKSHIFT))
(138 (61877 61749 LOCKSHIFT))
(139 (61906 61778 LOCKSHIFT))
(140 (251 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (250 234 LOCKSHIFT))
(143 (59 58 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (171 186 LOCKSHIFT))
(148 (61904 61776 LOCKSHIFT))
(149 (61920 61792 LOCKSHIFT))
(150 (61921 61793 LOCKSHIFT))
(151 (61857 61729 LOCKSHIFT))
(152 (61863 61735 LOCKSHIFT))
(153 (56 200 NOLOCKSHIFT))
(154 (61900 61772 LOCKSHIFT))
(155 (239 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (246 230 LOCKSHIFT))
(159 (207 176 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(logic ((100 (53 37 NOLOCKSHIFT))
(101 (52 164 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61258 61260 NOLOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (61292 61293 NOLOCKSHIFT))
(106 (61271 61270 NOLOCKSHIFT))
(107 (61284 61285 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61307 61306 NOLOCKSHIFT))
(110 (45 177 NOLOCKSHIFT))
(111 (61269 61268 LOCKSHIFT))
(112 (172 174 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61240 61241 NOLOCKSHIFT))
(119 (61234 61235 NOLOCKSHIFT))
(120 (61266 61262 NOLOCKSHIFT))
(121 (61365 61365 NOLOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (61275 61274 NOLOCKSHIFT))
(124 (61300 61299 NOLOCKSHIFT))
(125 (61273 61272 NOLOCKSHIFT))
(126 (61282 61283 NOLOCKSHIFT))
(127 (61256 61257 NOLOCKSHIFT))
(171 (61356 61356 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61250 61251 NOLOCKSHIFT))
(137 (61298 61297 NOLOCKSHIFT))
(138 (61305 61303 NOLOCKSHIFT))
(139 (61265 61264 NOLOCKSHIFT))
(140 (61364 61364 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61281 233 NOLOCKSHIFT))
(143 (61351 61351 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (61357 61357 NOLOCKSHIFT))
(148 (61279 61278 NOLOCKSHIFT))
(149 (61239 61238 NOLOCKSHIFT))
(150 (61290 61290 NOLOCKSHIFT))
(151 (61263 61261 NOLOCKSHIFT))
(152 (61295 61295 NOLOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61252 61253 NOLOCKSHIFT))
(155 (61254 61255 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(MATH ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (61284 61285 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (174 61245 NOLOCKSHIFT))
(107 (61369 61363 NOLOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (61254 61255 NOLOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (173 61246 LOCKSHIFT))
(112 (47 61300 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (61282 61283 LOCKSHIFT))
(119 (61287 61286 NOLOCKSHIFT))
(120 (61301 61302 NOLOCKSHIFT))
(121 (61351 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (175 61247 LOCKSHIFT))
(124 (180 184 LOCKSHIFT))
(125 (172 61244 LOCKSHIFT))
(126 (61256 61257 LOCKSHIFT))
(127 (44 61250 NOLOCKSHIFT))
(171 (61298 61253 NOLOCKSHIFT))
(129 (93 61265 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (61356 61362 LOCKSHIFT))
(138 (61254 61291 NOLOCKSHIFT))
(139 (98 61360 NOLOCKSHIFT))
(140 (61309 177 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 61251 NOLOCKSHIFT))
(143 (61299 61252 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (95 94 NOLOCKSHIFT))
(148 (61358 82 LOCKSHIFT))
(149 (61296 61266 NOLOCKSHIFT))
(150 (61305 61303 NOLOCKSHIFT))
(151 (61308 61267 LOCKSHIFT))
(152 (61288 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (61357 61361 NOLOCKSHIFT))
(155 (61292 61293 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 61264 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(OFFICE ((100 (61397 61381 NOLOCKSHIFT))
(101 (61396 61380 NOLOCKSHIFT))
(102 (61398 61382 NOLOCKSHIFT))
(103 (8557 8554 NOLOCKSHIFT))
(104 (61399 61383 NOLOCKSHIFT))
(105 (61232 8743 NOLOCKSHIFT))
(106 (61346 8571 NOLOCKSHIFT))
(107 (188 86 NOLOCKSHIFT))
(108 (61402 61386 NOLOCKSHIFT))
(109 (210 8738 NOLOCKSHIFT))
(110 (61437 61438 NOLOCKSHIFT))
(111 (163 8558 NOLOCKSHIFT))
(112 (61248 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (61395 61379 NOLOCKSHIFT))
(117 (61394 61378 NOLOCKSHIFT))
(118 (185 8553 NOLOCKSHIFT))
(119 (176 8546 NOLOCKSHIFT))
(120 (167 8744 NOLOCKSHIFT))
(121 (97 8745 NOLOCKSHIFT))
(122 (61401 61385 NOLOCKSHIFT))
(123 (162 8570 NOLOCKSHIFT))
(124 (61437 88 NOLOCKSHIFT))
(125 (111 8569 NOLOCKSHIFT))
(126 (61289 8737 NOLOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(171 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (61393 61377 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (61233 8742 NOLOCKSHIFT))
(137 (61438 67 NOLOCKSHIFT))
(138 (8739 74 NOLOCKSHIFT))
(139 (190 61436 NOLOCKSHIFT))
(140 (189 90 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (61249 62 NOLOCKSHIFT))
(143 (61352 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (95 61280 NOLOCKSHIFT))
(148 (212 8574 NOLOCKSHIFT))
(149 (61354 8573 NOLOCKSHIFT))
(150 (61286 8741 NOLOCKSHIFT))
(151 (165 8572 NOLOCKSHIFT))
(152 (61368 8740 NOLOCKSHIFT))
(153 (61400 61384 NOLOCKSHIFT))
(154 (173 175 NOLOCKSHIFT))
(155 (172 174 NOLOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61406 61368 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(DVORAK ((100 (49 42 NOLOCKSHIFT))
(101 (51 41 NOLOCKSHIFT))
(102 (57 37 NOLOCKSHIFT))
(103 (46 62 NOLOCKSHIFT))
(104 (48 38 NOLOCKSHIFT))
(105 (101 69 LOCKSHIFT))
(106 (103 71 LOCKSHIFT))
(107 (107 75 LOCKSHIFT))
(108 (54 45 NOLOCKSHIFT))
(109 (116 84 LOCKSHIFT))
(110 (56 95 NOLOCKSHIFT))
(111 (108 76 LOCKSHIFT))
(112 (122 90 LOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (53 40 NOLOCKSHIFT))
(117 (55 35 NOLOCKSHIFT))
(118 (44 60 NOLOCKSHIFT))
(119 (63 47 NOLOCKSHIFT))
(120 (111 79 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (52 164 NOLOCKSHIFT))
(123 (99 67 LOCKSHIFT))
(124 (113 81 LOCKSHIFT))
(125 (114 82 LOCKSHIFT))
(126 (110 78 LOCKSHIFT))
(127 (119 87 LOCKSHIFT))
(171 (44 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (33 64 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (117 85 LOCKSHIFT))
(137 (106 74 LOCKSHIFT))
(138 (104 72 LOCKSHIFT))
(139 (120 88 LOCKSHIFT))
(140 (59 58 NOLOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (118 86 LOCKSHIFT))
(143 (115 83 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (169 170 NOLOCKSHIFT))
(148 (112 80 LOCKSHIFT))
(149 (121 89 LOCKSHIFT))
(150 (105 73 LOCKSHIFT))
(151 (102 70 LOCKSHIFT))
(152 (100 68 LOCKSHIFT))
(153 (50 162 NOLOCKSHIFT))
(154 (98 66 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(GREEK ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (9830 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (9829 9797 LOCKSHIFT))
(106 (9849 9817 LOCKSHIFT))
(107 (115 9814 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (9837 9805 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (9843 9811 LOCKSHIFT))
(112 (47 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (9853 9821 LOCKSHIFT))
(119 (9835 9803 LOCKSHIFT))
(120 (9846 9814 LOCKSHIFT))
(121 (9825 9793 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (9836 9804 LOCKSHIFT))
(124 (9851 9819 LOCKSHIFT))
(125 (9842 9810 LOCKSHIFT))
(126 (9838 9806 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(171 (39 34 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (9850 9818 LOCKSHIFT))
(137 (9841 9809 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (9826 66 LOCKSHIFT))
(140 (9833 9801 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (95 94 NOLOCKSHIFT))
(148 (9845 9813 LOCKSHIFT))
(149 (9848 9816 LOCKSHIFT))
(150 (9828 9796 LOCKSHIFT))
(151 (9852 9820 LOCKSHIFT))
(152 (9834 9802 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (9840 9808 LOCKSHIFT))
(155 (9839 9807 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(ITALIAN ((171 (39 34 NOLOCKSHIFT))
(100 (53 61903 NOLOCKSHIFT))
(101 (52 61886 NOLOCKSHIFT))
(102 (54 61919 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (95 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 61872 NOLOCKSHIFT))
(117 (50 61857 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(171 (39 186 NOLOCKSHIFT))
(129 (93 125 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (95 170 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (91 123 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(SPANISH ((208 (161 191 NOLOCKSHIFT))
(171 (59 58 NOLOCKSHIFT))
(100 (53 61904 NOLOCKSHIFT))
(101 (52 61887 NOLOCKSHIFT))
(102 (54 61920 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (95 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 61873 NOLOCKSHIFT))
(117 (50 61858 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(171 (59 58 NOLOCKSHIFT))
(129 (185 186 NOLOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (61900 61772 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (161 191 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61925 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (169 170 NOLOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(FRENCH ((208 (61869 61741 NOLOCKSHIFT))
(171 (39 61857 NOLOCKSHIFT))
(100 (53 61905 NOLOCKSHIFT))
(101 (52 61888 NOLOCKSHIFT))
(102 (54 61921 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (95 63 NOLOCKSHIFT))
(115 (1 1 NOLOCKSHIFT) . IGNORE)
(116 (51 61874 NOLOCKSHIFT))
(117 (50 61859 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 171 NOLOCKSHIFT))
(171 (39 61857 NOLOCKSHIFT))
(129 (61872 61892 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 187 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (61869 61741 LOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 61919 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61873 61877 LOCKSHIFT))
(159 (61 43 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(GERMAN ((100 (53 37 NOLOCKSHIFT))
(101 (52 36 NOLOCKSHIFT))
(102 (54 126 NOLOCKSHIFT))
(103 (101 69 LOCKSHIFT))
(104 (55 38 NOLOCKSHIFT))
(105 (100 68 LOCKSHIFT))
(106 (117 85 LOCKSHIFT))
(107 (118 86 LOCKSHIFT))
(108 (48 41 NOLOCKSHIFT))
(109 (107 75 LOCKSHIFT))
(110 (45 45 NOLOCKSHIFT))
(111 (112 80 LOCKSHIFT))
(112 (251 63 NOLOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (51 35 NOLOCKSHIFT))
(117 (50 64 NOLOCKSHIFT))
(118 (119 87 LOCKSHIFT))
(119 (113 81 LOCKSHIFT))
(120 (115 83 LOCKSHIFT))
(121 (97 65 LOCKSHIFT))
(122 (57 40 NOLOCKSHIFT))
(123 (105 73 LOCKSHIFT))
(124 (120 88 LOCKSHIFT))
(125 (111 79 LOCKSHIFT))
(126 (108 76 LOCKSHIFT))
(127 (44 60 NOLOCKSHIFT))
(171 (39 34 NOLOCKSHIFT))
(129 (61863 61735 LOCKSHIFT))
(132 (49 33 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (102 70 LOCKSHIFT))
(137 (99 67 LOCKSHIFT))
(138 (106 74 LOCKSHIFT))
(139 (98 66 LOCKSHIFT))
(140 (122 90 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (46 62 NOLOCKSHIFT))
(143 (59 58 NOLOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (95 94 NOLOCKSHIFT))
(148 (114 82 LOCKSHIFT))
(149 (116 84 LOCKSHIFT))
(150 (103 71 LOCKSHIFT))
(151 (121 89 LOCKSHIFT))
(152 (104 72 LOCKSHIFT))
(153 (56 42 NOLOCKSHIFT))
(154 (110 78 LOCKSHIFT))
(155 (109 77 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (61908 61780 LOCKSHIFT))
(159 (61925 61797 LOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)
(STANDARD-RUSSIAN ((208 (41 40 NOLOCKSHIFT))
(171 (10073 10025 NOLOCKSHIFT))
(100 (34 52 NOLOCKSHIFT))
(101 (47 51 NOLOCKSHIFT))
(102 (58 53 NOLOCKSHIFT))
(103 (10085 10037 LOCKSHIFT))
(104 (44 54 NOLOCKSHIFT))
(105 (10067 10019 LOCKSHIFT))
(106 (10068 10020 LOCKSHIFT))
(107 (10078 10030 LOCKSHIFT))
(108 (63 57 NOLOCKSHIFT))
(109 (10077 10029 LOCKSHIFT))
(110 (37 48 NOLOCKSHIFT))
(111 (10073 10025 LOCKSHIFT))
(112 (10071 10023 LOCKSHIFT))
(115 (8 8 NOLOCKSHIFT) . IGNORE)
(116 (45 50 NOLOCKSHIFT))
(117 (61352 49 NOLOCKSHIFT))
(118 (10088 10040 LOCKSHIFT))
(119 (10075 10027 LOCKSHIFT))
(120 (10093 10045 LOCKSHIFT))
(121 (10086 10038 LOCKSHIFT))
(122 (95 56 NOLOCKSHIFT))
(123 (10090 10042 LOCKSHIFT))
(124 (10089 10041 LOCKSHIFT))
(125 (10091 10043 LOCKSHIFT))
(126 (10069 10021 LOCKSHIFT))
(127 (10066 10018 LOCKSHIFT))
(171 (10095 10047 LOCKSHIFT))
(129 (10092 10044 LOCKSHIFT))
(132 (167 43 NOLOCKSHIFT))
(165 (27 27 NOLOCKSHIFT) . IGNORE)
(134 (9 9 NOLOCKSHIFT) . IGNORE)
(135 (10065 10017 LOCKSHIFT))
(137 (10083 10035 LOCKSHIFT))
(138 (10080 10032 LOCKSHIFT))
(139 (10074 10026 LOCKSHIFT))
(140 (10097 10049 LOCKSHIFT))
(141 1SHIFTDOWN . 1SHIFTUP)
(142 (10096 10048 LOCKSHIFT))
(143 (10072 10024 LOCKSHIFT))
(144 (13 13 NOLOCKSHIFT) . IGNORE)
(208 (41 40 NOLOCKSHIFT))
(148 (10076 10028 LOCKSHIFT))
(149 (10070 10022 LOCKSHIFT))
(150 (10081 10033 LOCKSHIFT))
(151 (10079 10031 LOCKSHIFT))
(152 (10082 10034 LOCKSHIFT))
(153 (46 55 NOLOCKSHIFT))
(154 (10084 10036 LOCKSHIFT))
(155 (10094 10046 LOCKSHIFT))
(156 LOCKDOWN . LOCKUP)
(157 (32 32 NOLOCKSHIFT) . IGNORE)
(158 (10087 10039 LOCKSHIFT))
(159 (33 61 NOLOCKSHIFT))
(160 2SHIFTDOWN . 2SHIFTUP))
DOVE)))
(DECLARE%: DONTCOPY
(FILEMAP (NIL)))
STOP

View File

@@ -1,13 +1,16 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "25-May-95 14:32:35" {DSK}<project>medley2.0>library>KEYBOARDEDITOR.;4 51139
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS EDITKEYBOARD VKBD.EDIT.CREATE-DISPLAY)
(FILECREATED " 6-Jul-2023 16:23:12" {WMEDLEY}<library>KEYBOARDEDITOR.;3 50717
previous date%: "25-May-95 11:35:16" {DSK}<project>medley2.0>library>KEYBOARDEDITOR.;2)
:EDIT-BY rmk
:CHANGES-TO (FNS VKBD.EDIT.CREATE-CHARACTERS-MENU)
:PREVIOUS-DATE "25-May-95 14:32:35" {WMEDLEY}<library>KEYBOARDEDITOR.;1)
(* ; "
Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights reserved.
Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation.
")
(PRETTYCOMPRINT KEYBOARDEDITORCOMS)
@@ -15,14 +18,14 @@ Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights r
(RPAQQ KEYBOARDEDITORCOMS
((FILES VIRTUALKEYBOARDS)
(COMS
(* ;; "Editor for Configurations -- the description of the physical key layout, which keys are assignable, etc.")
(* ;; "Editor for Configurations -- the description of the physical key layout, which keys are assignable, etc.")
(FNS EDITCONFIGURATION VKBD.CONF.CHANGE-KEY-VALUE VKBD.CONF.DISPLAY-FIELD-VALUE
VKBD.CONF.DISPLAY-INFO-KEYBOARD VKBD.CONF.DISPLAY-KEY-INFO
VKBD.CONF.EDIT-DEFAULT-ASSIGNMENTS VKBD.CONF.ICONFN VKBD.CONF.PARSE-CONFIGURATION)
(BITMAPS VKBD.CONF.ICON))
(* ;; "EEditor for keyboard layouts per se:")
(* ;; "EEditor for keyboard layouts per se:")
(FNS EDITKEYBOARD VKBD.EDIT.ADD-SUBITEM-TO-BACKGROUND-MENU VKBD.EDIT.CREATE-COMMAND-MENU
VKBD.EDIT.CREATE-NON-CHAR-ASSIGMENTS-MENU VKBD.EDIT-KEYBOARD-COMMAND
@@ -459,7 +462,8 @@ Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights r
ITEMWIDTH _ 29])
(VKBD.EDIT.CREATE-CHARACTERS-MENU
[LAMBDA (CHAR-SET-NUMBER FONT) (* sm "15-Aug-85 12:15")
[LAMBDA (CHAR-SET-NUMBER FONT) (* ; "Edited 6-Jul-2023 16:23 by rmk")
(* sm "15-Aug-85 12:15")
(PROG (EXISTING-MENU-INFO NEW-MENU)
[SETQ EXISTING-MENU-INFO (for CHARSET-FONT-MENU in VKBD.EDIT.CASH-MENUES
thereis (AND (EQP (CAR CHARSET-FONT-MENU)
@@ -468,21 +472,17 @@ Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights r
FONT]
(if EXISTING-MENU-INFO
then (RETURN (CADDR EXISTING-MENU-INFO)))
(PRINTOUT PROMPTWINDOW T "Wait. Bitmaps for character set " (OCTALSTRING CHAR-SET-NUMBER)
" are being retrieved. ")
(PRINTOUT PROMPTWINDOW T "Retrieving bitmaps for character set " (OCTALSTRING
CHAR-SET-NUMBER))
(SETQ NEW-MENU (create MENU
ITEMS _ (for I from 0 to 255 bind CODE bind ROTATED-I
collect (PROGN (SETQ ROTATED-I (SUB1 (
 VKBD.EDIT.ROTATED-NUMBER
(ADD1 I)
16 16)))
(LIST (GETCHARBITMAP (SETQ CODE
(VKBD.PARSE-CHAR-CODE
(LIST
CHAR-SET-NUMBER
ROTATED-I)))
FONT)
CODE)))
collect (SETQ ROTATED-I (SUB1 (VKBD.EDIT.ROTATED-NUMBER
(ADD1 I)
16 16)))
(SETQ CODE (LOGOR (LLSH CHAR-SET-NUMBER 8)
I))
(LIST (GETCHARBITMAP CODE FONT)
CODE))
MENUCOLUMNS _ 16
CENTERFLG _ T
ITEMHEIGHT _ 25
@@ -717,16 +717,16 @@ Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights r
("Accented Characters" 241)))
(RPAQQ VKBD.EDIT.MENU-ITEMS (("CharSet" VKBD.EDIT.SWITCH-CHAR-SET-COMMAND "Pops up a menu of all possible character set number. Selecting one will switch the displayed character set."
)
("Stop" VKBD.EDIT.STOP-COMMAND
)
("Stop" VKBD.EDIT.STOP-COMMAND
"Exit from the keyboard editor. Returns the new keyboard, but does not modify the original one."
)
("Quit" VKBD.EDIT.QUIT-COMMAND
)
("Quit" VKBD.EDIT.QUIT-COMMAND
"Exit from the keyboard editor. Modifies the roriginal keyboard and returns it ."
)
("Define" VKBD.EDIT.DEFINE-COMMAND
)
("Define" VKBD.EDIT.DEFINE-COMMAND
"Adds the edited keyboard in its current state to the set of known keyboards."
)))
)))
(RPAQQ VKBD.EDIT.NON-CHAR-ASSIGNMENTS (SHIFT CTRL META LOCK LOCKDOWN LOCKUP EVENT))
@@ -744,27 +744,26 @@ Copyright (c) 1985, 1987, 1990, 1995 by Venue & Xerox Corporation. All rights r
VKBD.EDIT.MASK)
)
(VKBD.EDIT.ADD-SUBITEM-TO-BACKGROUND-MENU (LIST "Edit" '(ADD.PROCESS '(
 VKBD.EDIT-KEYBOARD-COMMAND
T))
"Calls the keyboard editor. Will prompt for name for the new keyboard, and will use the default keyboard as the initial keyboard"
VKBD.EDIT.BACKGROUND-MENU-SUBITEMS)
(VKBD.EDIT.ADD-SUBITEM-TO-BACKGROUND-MENU (LIST "Edit" '(ADD.PROCESS '(VKBD.EDIT-KEYBOARD-COMMAND
T))
"Calls the keyboard editor. Will prompt for name for the new keyboard, and will use the default keyboard as the initial keyboard"
VKBD.EDIT.BACKGROUND-MENU-SUBITEMS)
"Keyboard")
(PUTPROPS KEYBOARDEDITOR COPYRIGHT ("Venue & Xerox Corporation" 1985 1987 1990 1995))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3451 17311 (EDITCONFIGURATION 3461 . 3784) (VKBD.CONF.CHANGE-KEY-VALUE 3786 . 8411) (
VKBD.CONF.DISPLAY-FIELD-VALUE 8413 . 10186) (VKBD.CONF.DISPLAY-INFO-KEYBOARD 10188 . 12135) (
VKBD.CONF.DISPLAY-KEY-INFO 12137 . 12894) (VKBD.CONF.EDIT-DEFAULT-ASSIGNMENTS 12896 . 14277) (
VKBD.CONF.ICONFN 14279 . 15020) (VKBD.CONF.PARSE-CONFIGURATION 15022 . 17309)) (19637 42746 (
EDITKEYBOARD 19647 . 21947) (VKBD.EDIT.ADD-SUBITEM-TO-BACKGROUND-MENU 21949 . 22875) (
VKBD.EDIT.CREATE-COMMAND-MENU 22877 . 23227) (VKBD.EDIT.CREATE-NON-CHAR-ASSIGMENTS-MENU 23229 . 23692)
(VKBD.EDIT-KEYBOARD-COMMAND 23694 . 25067) (VKBD.EDIT.ASSIGN-CHARACTER 25069 . 27743) (
VKBD.EDIT.ASSIGN-NON-CHARACTER 27745 . 28363) (VKBD.EDIT.CREATE-CHARACTER-SETS-MENU 28365 . 29404) (
VKBD.EDIT.CREATE-CHARACTERS-MENU 29406 . 31987) (VKBD.EDIT.CREATE-DISPLAY 31989 . 35222) (
VKBD.EDIT.DEFINE-COMMAND 35224 . 35626) (VKBD.EDIT.DO-MENU-COMMAND 35628 . 35838) (VKBD.EDIT.ICONFN
35840 . 36489) (VKBD.EDIT.INVERT-IF-LOCKED 36491 . 36924) (VKBD.EDIT.KEYBOARD-REPAINTFN 36926 . 37496)
(VKBD.EDIT.LARGE-WINDOW-REPAINTFN 37498 . 38093) (VKBD.EDIT.MAKE-CURRENT-KEY 38095 . 40147) (
VKBD.EDIT.QUIT-COMMAND 40149 . 40502) (VKBD.EDIT.STOP-COMMAND 40504 . 40730) (
VKBD.EDIT.SWITCH-CHAR-SET-COMMAND 40732 . 41658) (VKBD.EDIT.SWITCH-CHARACTER-SET 41660 . 42443) (
VKBD.EDIT.ROTATED-NUMBER 42445 . 42744)))))
(FILEMAP (NIL (3425 17285 (EDITCONFIGURATION 3435 . 3758) (VKBD.CONF.CHANGE-KEY-VALUE 3760 . 8385) (
VKBD.CONF.DISPLAY-FIELD-VALUE 8387 . 10160) (VKBD.CONF.DISPLAY-INFO-KEYBOARD 10162 . 12109) (
VKBD.CONF.DISPLAY-KEY-INFO 12111 . 12868) (VKBD.CONF.EDIT-DEFAULT-ASSIGNMENTS 12870 . 14251) (
VKBD.CONF.ICONFN 14253 . 14994) (VKBD.CONF.PARSE-CONFIGURATION 14996 . 17283)) (19611 42442 (
EDITKEYBOARD 19621 . 21921) (VKBD.EDIT.ADD-SUBITEM-TO-BACKGROUND-MENU 21923 . 22849) (
VKBD.EDIT.CREATE-COMMAND-MENU 22851 . 23201) (VKBD.EDIT.CREATE-NON-CHAR-ASSIGMENTS-MENU 23203 . 23666)
(VKBD.EDIT-KEYBOARD-COMMAND 23668 . 25041) (VKBD.EDIT.ASSIGN-CHARACTER 25043 . 27717) (
VKBD.EDIT.ASSIGN-NON-CHARACTER 27719 . 28337) (VKBD.EDIT.CREATE-CHARACTER-SETS-MENU 28339 . 29378) (
VKBD.EDIT.CREATE-CHARACTERS-MENU 29380 . 31683) (VKBD.EDIT.CREATE-DISPLAY 31685 . 34918) (
VKBD.EDIT.DEFINE-COMMAND 34920 . 35322) (VKBD.EDIT.DO-MENU-COMMAND 35324 . 35534) (VKBD.EDIT.ICONFN
35536 . 36185) (VKBD.EDIT.INVERT-IF-LOCKED 36187 . 36620) (VKBD.EDIT.KEYBOARD-REPAINTFN 36622 . 37192)
(VKBD.EDIT.LARGE-WINDOW-REPAINTFN 37194 . 37789) (VKBD.EDIT.MAKE-CURRENT-KEY 37791 . 39843) (
VKBD.EDIT.QUIT-COMMAND 39845 . 40198) (VKBD.EDIT.STOP-COMMAND 40200 . 40426) (
VKBD.EDIT.SWITCH-CHAR-SET-COMMAND 40428 . 41354) (VKBD.EDIT.SWITCH-CHARACTER-SET 41356 . 42139) (
VKBD.EDIT.ROTATED-NUMBER 42141 . 42440)))))
STOP

Binary file not shown.

View File

@@ -1,17 +1,17 @@
(DEFINE-FILE-INFO PACKAGE "IL" READTABLE "XCL" BASE 10)
(FILECREATED "22-Dec-2018 22:58:47" 
|{DSK}<Users>kaplan>Local>medley3.5>lispcore>library>VIRTUALKEYBOARDS.;10| 141793
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|changes| |to:| (VARS VIRTUALKEYBOARDSCOMS VKBD.BACKGROUND-MENU-SUBITEMS
VKBD.NON-CHAR-ASSIGNMENTS-LABELS VKBD.WINDOW-MENU-SUBITEMS VKBD.ICON
VKBD.MASK MODEACTIONS)
(RECORDS KEYBOARDCONFIGURATION VIRTUALKEYBOARD)
(FILECREATED " 6-Jul-2023 15:55:10" |{WMEDLEY}<library>VIRTUALKEYBOARDS>VIRTUALKEYBOARDS.;16| 140655
|previous| |date:| "22-Dec-2018 22:52:44"
|{DSK}<Users>kaplan>Local>medley3.5>lispcore>library>VIRTUALKEYBOARDS.;9|)
:EDIT-BY |rmk|
:CHANGES-TO (VARS VIRTUALKEYBOARDSCOMS)
(FNS VKBD.INIT VKBD.LOAD-KEYBOARD-FILE METASHIFT)
:PREVIOUS-DATE "28-Jun-2023 11:52:23" |{WMEDLEY}<library>virtualkeyboards>VIRTUALKEYBOARDS.;9|
)
; Copyright (c) 1985, 1986, 1987, 1988, 1990, 1992, 1993, 1995, 1996, 2017, 2018 by Venue & Xerox Corporation. All rights reserved.
; Copyright (c) 1985-1988, 1990, 1992-1993, 1995-1996, 2017-2018 by Venue & Xerox Corporation.
(PRETTYCOMPRINT VIRTUALKEYBOARDSCOMS)
@@ -50,7 +50,8 @@
UNDERLINE NOTUNDERLINE SUBSCRIPT SUPERSCRIPT SMALLER LARGER MARGINS NOTMARGINS
LOOKS NOTLOOKS F11 NOTF11 F12 NOTF12))
(RECORDS KEYBOARDCONFIGURATION VIRTUALKEYBOARD)
(INITVARS (VKBD.KNOWN-KEYBOARDS NIL))
(INITVARS (VKBD.LOADED-KEYBOARDS NIL)
(VKBD.KNOWN-KEYBOARDS NIL))
(FILES (SOURCE)
KEYBOARDCONFIGS)
(VARS VKBD.BACKGROUND-MENU-SUBITEMS VKBD.NON-CHAR-ASSIGNMENTS-LABELS
@@ -60,6 +61,7 @@
VKBD.KNOWN-KEYBOARDS VKBD.NON-CHAR-ASSIGNMENTS-LABELS VKBD.ICON VKBD.MASK
CURRENTKEYBOARDCONFIG VKBD.CONFIGURATIONS VKBD.COMMONCODELABELS VKBD.COMMONKEYLABELS
VKBD.COMMONDEFAULTASSIGNMENT)
(INITVARS (CURRENTKEYBOARDCONFIG NIL))
(COMS (DECLARE\: FIRST (P (MOVD? '\\KEYBOARDEVENTFN '\\OLDKEYBOARDEVENTFN)))
(INITVARS (\\ORIGINALDEFAULTKEYACTION))
(FNS VKBD.\\KEYBOARDEVENTFN VKBD.RESETKEYACTIONTABLES)
@@ -75,11 +77,12 @@
'DEFAULT)))
(FNS FIXKEYBOARD FIXKEYBOARDCONFIG FIXKEYASSIGNMENTS)
(DECLARE\: DONTEVAL@LOAD DOCOPY (P (VKBD.INIT)))
(COMS (FNS METASHIFT)
(* \;
 "Call new definition if the old one had been called")
(P (AND (MEMB (MACHINETYPE)
'(MAIKO DORADO))
(COMS (P (MOVD? 'METASHIFT 'OLDMETASHIFT))
(FNS METASHIFT)
(* \;
 "Call new definition if the old one had been called")
(P (AND (MEMB (KEYBOARDTYPE)
'(X DORADO))
(EQUAL (KEYACTION 'BLANK-BOTTOM)
'(METADOWN . METAUP))
(METASHIFT T))))
@@ -217,61 +220,34 @@
'DEFAULT)))))))
(VKBD.CREATE-KEYACTION-TABLE
(LAMBDA (NEW-KEYBOARD OLDTABLE) (* \; "Edited 29-Feb-96 12:32 by rmk")
(LAMBDA (NEW-KEYBOARD OLDTABLE) (* \; "Edited 28-Jun-2023 11:52 by rmk")
(* \; "Edited 29-Feb-96 12:32 by rmk")
(PROG (KEYBOARDNAME FOUND KEYACTION-TABLE CONFIG)
(CL:UNLESS (COND
((AND (ATOM NEW-KEYBOARD)
(SETQ FOUND (FINDVIRTUALKEYBOARD NEW-KEYBOARD)))
(SETQ NEW-KEYBOARD FOUND))
((MEMB NEW-KEYBOARD VKBD.KNOWN-KEYBOARDS)))
(* |;;| "Use FOUND to preserve NEW-KEYBOARD for error")
(* |;;| "Use FOUND to preserve NEW-KEYBOARD for error")
(ERROR "INVALID KEYBOARD" NEW-KEYBOARD))
(SETQ KEYBOARDNAME (FETCH (VIRTUALKEYBOARD KEYBOARDNAME) OF NEW-KEYBOARD))
(COND
(OLDTABLE (SETQ KEYACTION-TABLE (RESETKEYACTION OLDTABLE)))
((SETQ KEYACTION-TABLE (GETPROP KEYBOARDNAME 'KEYACTIONTABLE))
(RETURN KEYACTION-TABLE))
(T (SETQ KEYACTION-TABLE (KEYACTIONTABLE))))
(SETQ NEW-KEYBOARD (VKBD.COMPLETE-KEYBOARD NEW-KEYBOARD))
(SETQ CONFIG (VKBD.GET-CONFIGURATION (FETCH (VIRTUALKEYBOARD KEYBOARDCONFIGURATION)
OF NEW-KEYBOARD)))
(FOR KEY-ASSIGNMENT IN (FETCH (VIRTUALKEYBOARD COMPLETEKEYASSIGNMENTS)
OF NEW-KEYBOARD) DO (OLDKEYACTION (CAR
KEY-ASSIGNMENT
)
(CDR KEY-ASSIGNMENT)
KEYACTION-TABLE))
OF NEW-KEYBOARD)))
(FOR KEY-ASSIGNMENT IN (FETCH (VIRTUALKEYBOARD COMPLETEKEYASSIGNMENTS) OF NEW-KEYBOARD)
DO (CL:UNLESS (MEMB (CAR KEY-ASSIGNMENT)
'(31 86))
(OLDKEYACTION (CAR KEY-ASSIGNMENT)
(CDR KEY-ASSIGNMENT)
KEYACTION-TABLE)))
(PUTPROP KEYBOARDNAME 'KEYACTIONTABLE KEYACTION-TABLE)
(RETURN KEYACTION-TABLE))))
(vkbd.windowmenufn
@@ -414,7 +390,9 @@
(setq |BackgroundMenu| nil)))
(VKBD.INIT
(LAMBDA NIL (* \; "Edited 14-Jun-2017 14:22 by kaplan")
(LAMBDA NIL (* \; "Edited 6-Jul-2023 15:14 by rmk")
(* \; "Edited 28-Jun-2023 10:40 by rmk")
(* \; "Edited 14-Jun-2017 14:22 by kaplan")
(* \; "Edited 16-Jun-92 11:14 by kaplan")
(* |;;| "Reads virtual keyboard file for current type (or default type), if it can be found. Keyboards that don't match current keyboard can be displayed but not installed (via PROCESS.KEYBOARD)")
@@ -423,35 +401,22 @@
(SETQ \\ORIGINALDEFAULTKEYACTION (KEYACTIONTABLE \\DEFAULTKEYACTION)))
(SETQ VKBD.COMMONCODELABELS (FOR X IN VKBD.COMMONCHARLABELS
COLLECT (IF (LISTP X)
THEN (IF (SMALLP (CAR X))
THEN X
ELSE (LIST (CHARCODE.DECODE
(CAR X))
(CADR X)))
ELSE (LIST (CHARCODE.DECODE X)
X))))
THEN (IF (SMALLP (CAR X))
THEN X
ELSE (LIST (CHARCODE.DECODE (CAR X))
(CADR X)))
ELSE (LIST (CHARCODE.DECODE X)
X))))
(VKBD.ADD-ITEM-TO-BACKGROUND-MENU "Keyboard" ''(SWITCHKEYBOARDS T NIL)
"Displays a menu for switching keyboards" VKBD.BACKGROUND-MENU-SUBITEMS)
(VKBD.WINDOWMENUINIT)
(LET (FILE (KT (KEYBOARDTYPE)))
(LET ((KT (KEYBOARDTYPE)))
(SETQ CURRENTKEYBOARDCONFIG (VKBD.GET-CONFIGURATION KT))
(COND
((SETQ FILE (COND
((AND KT (FINDFILE (PACK* KT "KEYBOARDS")
T)))
(T (FINDFILE (PACK* DEFAULTVIRTUALKEYBOARDTYPE "KEYBOARDS")
T))))
(VKBD.LOAD-KEYBOARD-FILE FILE)
(CL:WHEN (VKBD.LOAD-KEYBOARD-FILE KT)
(* |;;| "Loading a keyboard file may change our notion of KEYBOARDTYPE, because of new coercion paths. The default keyboard will be added for the new type")
(VKBD.ADD-DEFAULT-KEYBOARD))
(T
(* |;;| "Special printing here to avoid file-not-found error in case where user calls VKBD.LOAD-KEYBOARD-FILE directly")
(PROMPTPRINT "Note: virtual keyboard file for type " (OR (KEYBOARDTYPE)
DEFAULTVIRTUALKEYBOARDTYPE)
" keyboards not found"))))))
(VKBD.ADD-DEFAULT-KEYBOARD)))))
(VKBD.CREATE-DEFAULT-KEYBOARD
@@ -474,9 +439,10 @@
OF CONFIGURATION)))))
(VKBD.ADD-DEFAULT-KEYBOARD
(LAMBDA (KEYBOARDTYPE) (* \; "Edited 23-May-95 17:04 by rmk:")
(LAMBDA (KEYBOARDTYPE) (* \; "Edited 28-Jun-2023 10:45 by rmk")
(* \; "Edited 23-May-95 17:04 by rmk:")
(* |;;;| "It is useful practice to be able to switch back to the original key assignments. Thus the program is adding one special keyboard with the name DEFAULT which is the current keyboardtype's default keyboard.")
(* |;;;| "It is useful practice to be able to switch back to the original key assignments. Thus the program is adding one special keyboard with the name DEFAULT which is the current keyboardtype's default keyboard.")
(SETQ KEYBOARDTYPE (OR KEYBOARDTYPE (KEYBOARDTYPE)))
(BIND DEFAULT WHILE (SETQ DEFAULT (FINDVIRTUALKEYBOARD 'DEFAULT KEYBOARDTYPE))
@@ -504,114 +470,55 @@
THEN (VKBD.LOAD-KEYBOARD-FILE F REDEFINE? DELETE-FIRST? T)))))
(VKBD.LOAD-KEYBOARD-FILE
(LAMBDA (KEYBOARDTYPE REDEFINE? DELETE-CURRENT-DEFINITIONS?)
(* \; "Edited 6-Jul-2023 15:11 by rmk")
(* \; "Edited 4-Jul-2023 23:22 by rmk")
(CL:UNLESS KEYBOARDTYPE (SETQ KEYBOARDTYPE DEFAULTVIRTUALKEYBOARDTYPE))
(LAMBDA (FILENAME REDEFINE? DELETE-CURRENT-DEFINITIONS? PROMPTPRINT)
(* |;;| "Returns T if keyboards of type KEYBOARDTYPE found. Prints prompt warning and returns NIL if not found.")
(* \; "Edited 4-Mar-96 10:53 by rmk")
(* |;;| "Note: Can't switch to READFILE, since it uses OLD-INTERLISP readtable which doesn't honor vertical bars around numeric atoms.")
(LET (FILE (VKBDDIRS (CONS (MEDLEYDIR "library/virtualkeyboards/")
LISPUSERSDIRECTORIES))
(NEWKEYBOARDS (CDR (ASSOC KEYBOARDTYPE VKBD.LOADED-KEYBOARDS))))
(CL:UNLESS NEWKEYBOARDS
(* |;;| "If keyboards of type KEYBOARDTYPE have not previously been loaded, we look for a file <KEYBOARDTYPE>KEYBOARDS (e.g. XKEYBOARDS, SDLKEYBOARDS), defaulting to the directory that VIRTUALKEYBOARDS is coming from. It is assumed that that file will add the desired keyboards to VKBD.LOADED-KEYBOARDS,")
(* |;;| "Note: Can't switch to READFILE, since it uses OLD-INTERLISP readtable which doesn't honor vertical bars around numeric atoms.")
(CL:WHEN (SETQ FILE (FINDFILE (PACK* KEYBOARDTYPE "KEYBOARDS")
T VKBDDIRS))
(LOAD FILE T)
(SETQ NEWKEYBOARDS (CDR (ASSOC KEYBOARDTYPE VKBD.LOADED-KEYBOARDS)))))
(|if| NEWKEYBOARDS
|then| (COND
(DELETE-CURRENT-DEFINITIONS? (SETQ VKBD.KNOWN-KEYBOARDS NEWKEYBOARDS)
(VKBD.ADD-DEFAULT-KEYBOARD))
(T (FOR NEWKEYBOARD KN KC IN NEWKEYBOARDS
DO
(* |;;|
 "To make sure that COMPLETEDASSIGNMENTS cell (or any other new cells) exist--backward compatibility")
(SETQ NEWKEYBOARD (CREATE VIRTUALKEYBOARD USING NEWKEYBOARD))
(SETQ KN (FETCH KEYBOARDNAME OF NEWKEYBOARD))
(SETQ KC (FETCH KEYBOARDCONFIGURATION OF NEWKEYBOARD))
(FOR TAIL OLDKEYBOARD ON VKBD.KNOWN-KEYBOARDS
WHEN (AND (EQ KN (FETCH KEYBOARDNAME OF (SETQ OLDKEYBOARD
(CAR TAIL))))
(EQ KC (FETCH KEYBOARDCONFIGURATION OF OLDKEYBOARD)))
DO
(* |;;| "If REDEFINE?, then replace one with same name and configuration. Otherwise, keep the old one instead of installing the new one.")
(LET ((NEWKEYBOARDS (CL:WITH-OPEN-FILE (STREAM FILENAME :DIRECTION :INPUT)
(BIND KB DATE (*PACKAGE* _ *INTERLISP-PACKAGE*)
(RDTBL _ (FIND-READTABLE "INTERLISP"))
FIRST (SETQ DATE (READ STREAM RDTBL))
(CL:UNLESS (LISTP DATE)
(CL:WHEN (STRINGP DATE)
(SETQ DATE (CONCAT "Keyboards from " (FULLNAME STREAM
)
" [" DATE "]"))
(IF PROMPTPRINT
THEN (PROMPTPRINT DATE)
ELSE (PRINTOUT T DATE T)))
(SETQ DATE NIL)) WHILE (SKIPSEPRCODES STREAM RDTBL)
UNTIL (EQ 'STOP (SETQ KB (READ STREAM RDTBL))) COLLECT
KB
FINALLY (CL:WHEN DATE
(* |;;|
 "Was a LISTP date, must have been a keyboard")
(PUSH DATE $$VAL))))))
(COND
(DELETE-CURRENT-DEFINITIONS? (SETQ VKBD.KNOWN-KEYBOARDS NEWKEYBOARDS)
(VKBD.ADD-DEFAULT-KEYBOARD))
(T (FOR NEWKEYBOARD KN KC IN NEWKEYBOARDS
DO
(* |;;|
"To make sure that COMPLETEDASSIGNMENTS cell (or any other new cells) exist--backward compatibility")
(SETQ NEWKEYBOARD (CREATE VIRTUALKEYBOARD USING NEWKEYBOARD))
(SETQ KN (FETCH KEYBOARDNAME OF NEWKEYBOARD))
(SETQ KC (FETCH KEYBOARDCONFIGURATION OF NEWKEYBOARD))
(FOR TAIL OLDKEYBOARD ON VKBD.KNOWN-KEYBOARDS
WHEN (AND (EQ KN (FETCH KEYBOARDNAME OF (SETQ OLDKEYBOARD
(CAR TAIL))))
(EQ KC (FETCH KEYBOARDCONFIGURATION OF OLDKEYBOARD))
) DO
(* |;;| "If REDEFINE?, then replace one with same name and configuration. Otherwise, keep the old one instead of installing the new one.")
(COND
(REDEFINE? (RPLACA TAIL NEWKEYBOARD))
(T (RETURN))) FINALLY (SETQ
VKBD.KNOWN-KEYBOARDS
(NCONC1
VKBD.KNOWN-KEYBOARDS
NEWKEYBOARD))))
)))))
(COND
(REDEFINE? (RPLACA TAIL NEWKEYBOARD))
(T (RETURN))) FINALLY (SETQ VKBD.KNOWN-KEYBOARDS
(NCONC1 VKBD.KNOWN-KEYBOARDS
NEWKEYBOARD))))))
T
|else| (PROMPTPRINT "Note: Can't find virtual keyboard file for " KEYBOARDTYPE
" keyboards")
NIL))))
(vkbd.store-file-command
(lambda (f) (* \; "Edited 15-Dec-87 16:31 by Snow")
@@ -2412,29 +2319,29 @@
(NOTF12 621))
(DECLARE\: EVAL@COMPILE
(RECORD KEYBOARDCONFIGURATION (CONFIGURATIONNAME KBCDUMMY1 KEYREGIONS KBCDUMMY2 DEFAULTASSIGNMENT
KEYNAMESMAPPING KEYBOARDTYPE KEYLABELS KEYLABELSFONT
BACKGROUNDSHADE KEYBOARDDISPLAYFONT CHARLABELS)
(RECORD KEYBOARDCONFIGURATION (CONFIGURATIONNAME KBCDUMMY1 KEYREGIONS KBCDUMMY2 DEFAULTASSIGNMENT
KEYNAMESMAPPING KEYBOARDTYPE KEYLABELS KEYLABELSFONT
BACKGROUNDSHADE KEYBOARDDISPLAYFONT CHARLABELS)
(* |;;| "Dummy fields so length test still works")
(* |;;| "Dummy fields so length test still works")
(TYPE? (EQLENGTH DATUM (CONSTANT (LENGTH (RECORDFIELDNAMES
'
KEYBOARDCONFIGURATION
)))))
KEYBOARDTYPE _ (KEYBOARDTYPE)
KEYLABELSFONT _ DEFAULTKEYBOARDLABELSFONT BACKGROUNDSHADE _ 23130
KEYBOARDDISPLAYFONT _ DEFAULTKEYBOARDDISPLAYFONT)
(TYPE? (EQLENGTH DATUM (CONSTANT (LENGTH (RECORDFIELDNAMES
'KEYBOARDCONFIGURATION)
))))
KEYBOARDTYPE _ (KEYBOARDTYPE)
KEYLABELSFONT _ DEFAULTKEYBOARDLABELSFONT BACKGROUNDSHADE _ 23130
KEYBOARDDISPLAYFONT _ DEFAULTKEYBOARDDISPLAYFONT)
(RECORD VIRTUALKEYBOARD (KEYBOARDNAME KEYASSIGNMENTS KEYBOARDCONFIGURATION KEYBOARDDISPLAYFONT)
(HASHLINK VIRTUALKEYBOARD (COMPLETEKEYASSIGNMENTS VKBDHASHARRAY 20)))
(HASHLINK VIRTUALKEYBOARD (COMPLETEKEYASSIGNMENTS VKBDHASHARRAY 20)))
)
(DECLARE\: EVAL@COMPILE (GLOBALVARS VKBDHASHARRAY))
(SETUPHASHARRAY 'VKBDHASHARRAY 20)
(RPAQ? VKBD.LOADED-KEYBOARDS NIL)
(RPAQ? VKBD.KNOWN-KEYBOARDS NIL)
(FILESLOAD (SOURCE)
@@ -2485,11 +2392,11 @@
)))))
(RPAQQ VKBD.NON-CHAR-ASSIGNMENTS-LABELS ((SHIFT SHIFT)
(CTRL CTRL)
(META META)
(LOCK LOCK)
(LOCKUP LOCKUP)
(LOCKDOWN LOCKDOWN)))
(CTRL CTRL)
(META META)
(LOCK LOCK)
(LOCKUP LOCKUP)
(LOCKDOWN LOCKDOWN)))
(RPAQQ VKBD.WINDOW-MENU-SUBITEMS
(SUBITEMS ("Switch keyboard" (FUNCTION (LAMBDA (W)
@@ -2549,6 +2456,8 @@
VKBD.NON-CHAR-ASSIGNMENTS-LABELS VKBD.ICON VKBD.MASK CURRENTKEYBOARDCONFIG VKBD.CONFIGURATIONS
VKBD.COMMONCODELABELS VKBD.COMMONKEYLABELS VKBD.COMMONDEFAULTASSIGNMENT)
)
(RPAQ? CURRENTKEYBOARDCONFIG NIL)
(DECLARE\: FIRST
(MOVD? '\\KEYBOARDEVENTFN '\\OLDKEYBOARDEVENTFN)
@@ -2858,18 +2767,18 @@
(RPAQ? MODEKEYS )
(RPAQQ MODEACTIONS (EVENT CTRLUP CTRLDOWN 1SHIFTUP 1SHIFTDOWN 2SHIFTUP 2SHIFTDOWN LOCKUP LOCKDOWN
LOCKTOGGLE METAUP METADOWN FONTUP FONTDOWN FONTTOGGLE USERMODE1UP
USERMODE1DOWN USERMODE1TOGGLE USERMODE2UP USERMODE2DOWN USERMODE2TOGGLE
USERMODE3UP USERMODE3DOWN USERMODE3TOGGLE))
(RPAQQ MODEACTIONS (EVENT CTRLUP CTRLDOWN 1SHIFTUP 1SHIFTDOWN 2SHIFTUP 2SHIFTDOWN LOCKUP LOCKDOWN
LOCKTOGGLE METAUP METADOWN FONTUP FONTDOWN FONTTOGGLE USERMODE1UP
USERMODE1DOWN USERMODE1TOGGLE USERMODE2UP USERMODE2DOWN USERMODE2TOGGLE
USERMODE3UP USERMODE3DOWN USERMODE3TOGGLE))
(DECLARE\: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS MODEKEYS MODEACTIONS)
)
(ADDTOVAR BREAKRESETFORMS ((LAMBDA (K)
(PROCESS.KEYBOARD NIL K))
'DEFAULT))
(PROCESS.KEYBOARD NIL K))
'DEFAULT))
(DEFINEQ
(FIXKEYBOARD
@@ -3390,12 +3299,15 @@
(VKBD.INIT)
)
(MOVD? 'METASHIFT 'OLDMETASHIFT)
(DEFINEQ
(METASHIFT
(LAMBDA FLG (* \; "Edited 16-Jun-92 08:44 by rmk:")
(LAMBDA FLG (* \; "Edited 6-Jul-2023 09:21 by rmk")
(* \; "Edited 16-Jun-92 08:44 by rmk:")
(* |;;| "Sets interpretation of swat key to first arg, where T means meta-shift, NIL means original setting. Returns previous setting. This differs from LLKEY version in that it changes the \\DORADOKEYACTIONS and \\DEFAULTKEYACTION table to insure that the metashift remains in effect across keyboard switches.")
(* |;;| "Sets interpretation of swat key to first arg, where T means meta-shift, NIL means original setting. Returns previous setting. This differs from LLKEY version in that it changes the \\DORADOKEYACTIONS and \\DEFAULTKEYACTION table to insure that the metashift remains in effect across keyboard switches.")
(PROG* ((METASTATUS '(METADOWN . METAUP))
(ARGUMENT (AND (IGREATERP FLG 0)
@@ -3408,19 +3320,19 @@
OLDSETTING)
(SETQ OLDSETTING (KEYACTION 'BLANK-BOTTOM ARGUMENT))
(* |;;|
 "Update \\doradokeyactions table so we don't lose the change when we repalce the keyaction table.")
(* |;;|
 "Update \\doradokeyactions table so we don't lose the change when we repalce the keyaction table.")
(AND (EQ (MACHINETYPE)
'DORADO)
(COND
(ARGUMENT (PUTASSOC 'BLANK-BOTTOM ARGUMENT \\DORADOKEYACTIONS)
(KEYACTION 'BLANK-BOTTOM ARGUMENT \\DEFAULTKEYACTION))
(T (SETQ \\DORADOKEYACTIONS (|for| X |in| \\DORADOKEYACTIONS
|join| (AND (NEQ (CAR X)
'BLANK-BOTTOM)
(LIST X))))
(KEYACTION 'BLANK-BOTTOM NIL \\DEFAULTKEYACTION))))
(CL:WHEN (EQ (KEYBOARDTYPE)
'DORADO)
(COND
(ARGUMENT (PUTASSOC 'BLANK-BOTTOM ARGUMENT \\DORADOKEYACTIONS)
(KEYACTION 'BLANK-BOTTOM ARGUMENT \\DEFAULTKEYACTION))
(T (SETQ \\DORADOKEYACTIONS (|for| X |in| \\DORADOKEYACTIONS
|join| (AND (NEQ (CAR X)
'BLANK-BOTTOM)
(LIST X))))
(KEYACTION 'BLANK-BOTTOM NIL \\DEFAULTKEYACTION))))
(RETURN (COND
((EQUAL OLDSETTING METASTATUS)
T)
@@ -3432,8 +3344,8 @@
(* \; "Call new definition if the old one had been called")
(AND (MEMB (MACHINETYPE)
'(MAIKO DORADO))
(AND (MEMB (KEYBOARDTYPE)
'(X DORADO))
(EQUAL (KEYACTION 'BLANK-BOTTOM)
'(METADOWN . METAUP))
(METASHIFT T))
@@ -3450,38 +3362,38 @@
(PUTPROPS VIRTUALKEYBOARDS COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1988 1990 1992 1993
1995 1996 2017 2018))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (5486 14142 (FINDVIRTUALKEYBOARD 5496 . 8650) (PROCESS.KEYBOARD 8652 . 11328) (
VKBD.CREATE-KEYACTION-TABLE 11330 . 13246) (VKBD.WINDOWMENUFN 13248 . 13515) (VKBD.WINDOWMENUINIT
13517 . 14140)) (14143 19504 (LOADKEYBOARDDISPLAYFONTS 14153 . 19502)) (19613 20837 (DEFINEKEYBOARD
19623 . 20835)) (20838 25256 (VKBD.ADD-ITEM-TO-BACKGROUND-MENU 20848 . 21256) (VKBD.INIT 21258 . 23796
) (VKBD.CREATE-DEFAULT-KEYBOARD 23798 . 24390) (VKBD.ADD-DEFAULT-KEYBOARD 24392 . 25254)) (25257 31597
(VKBD.LOAD-FILE-COMMAND 25267 . 25721) (VKBD.LOAD-KEYBOARD-FILE 25723 . 29558) (
VKBD.STORE-FILE-COMMAND 29560 . 29901) (VKBD.STORE-KEYBOARD-FILE 29903 . 31595)) (31598 40899 (
SWITCHKEYBOARDS 31608 . 33086) (VKBD.POP-MENU-AND-SWITCH-KEYBOARDS 33088 . 33458) (
VKBD.POP-UP-KEYBOARDS-MENU 33460 . 34842) (VKBD.GET-CONFIGURATION 34844 . 35762) (
VKBD.SUBCONFIGURATION 35764 . 40897)) (40900 81185 (VKBD.BUTTONEVENTFN 40910 . 43817) (
VKBD.CENTER-BITMAP-IN-REGION 43819 . 45343) (VKBD.CLEAR-KEY-DISPLAY 45345 . 47476) (
VKBD.CREATE-KEYBOARD-BITMAP 47478 . 49522) (VKBD.CREATE-KEYBOARD-DISPLAY 49524 . 52653) (
VKBD.CURSORMOVEDFN 52655 . 54559) (VKBD.DISPLAY-CHARACTER 54561 . 56519) (VKBD.DISPLAY-EMPTY-KEY-CAP
56521 . 67059) (VKBD.DISPLAY-KEY 67061 . 70268) (VKBD.DISPLAY-KEY-CHARACTERS 70270 . 71463) (
VKBD.DRAW-KEY-CAPS 71465 . 73653) (VKBD.ERASE-FRAME 73655 . 73978) (VKBD.EXTEND-REGION 73980 . 74569)
(VKBD.GET-KEY-AND-REGIONS-OF-CURSOR-POSITION 74571 . 75186) (VKBD.GET-KEY-REGIONS 75188 . 75444) (
VKBD.INVERT-KEY 75446 . 75736) (VKBD.INVERT-REGION 75738 . 76429) (VKBD.KEYBOARD-WINDOW-REPAINTFN
76431 . 78388) (VKBD.LOWER-HALF-REGION 78390 . 78790) (VKBD.POSITION-IS-IN-KEY-REGION 78792 . 79076) (
VKBD.REMOVE-KEYBOARD-COMMAND 79078 . 79535) (VKBD.UNION-REGIONS 79537 . 80682) (VKBD.UPPER-HALF-REGION
80684 . 81183)) (81186 100744 (VKBD.KEY-ASSOC 81196 . 81696) (VKBD.CHAR-ASSIGNMENTP 81698 . 81862) (
VKBD.COMPLETE-KEYBOARD 81864 . 84523) (VKBD.CTRL-ASSIGNMENTP 84525 . 84768) (VKBD.EVENT-ASSIGNMENTP
84770 . 85010) (VKBD.META-ASSIGNMENTP 85012 . 85255) (VKBD.FRAME-KEY 85257 . 87134) (
VKBD.GET-CURRENT-KEY-ASSIGNMENT 87136 . 87505) (VKBD.GET-NON-CHAR-LABEL 87507 . 88162) (VKBD.ICONFN
88164 . 88900) (VKBD.INVERT-LOCK-KEYS 88902 . 89580) (VKBD.INVERT-SHIFT-KEYS 89582 . 90264) (
VKBD.TRANSLATE-KEY-ID 90266 . 90945) (VKBD.KEY-ID-TO-KEY-NAMES 90947 . 91433) (
VKBD.KEYBOARD-IS-KEYBOARDTYPE-KEYBOARD 91435 . 92033) (VKBD.LOCK-ASSIGNMENTP 92035 . 92482) (
VKBD.LOCK-KEYP 92484 . 92802) (VKBD.LOCK/NOLOCK 92804 . 92963) (VKBD.LOCKDOWN-ASSIGNMENTP 92965 .
93259) (VKBD.LOCKUP-ASSIGNMENTP 93261 . 93551) (VKBD.PARSE-CHAR-CODE 93553 . 94052) (
VKBD.PARSE-KEY-ASSIGNMENT 94054 . 97510) (VKBD.RESET-KEYBOARD-WINDOW 97512 . 98105) (
VKBD.SEND-CHARACTER 98107 . 99616) (VKBD.SHIFT-ASSIGNMENTP 99618 . 100012) (VKBD.SHIFTED-CHAR 100014
. 100172) (VKBD.UNDEFINE-KEYBOARD 100174 . 100581) (VKBD.UNSHIFTED-CHAR 100583 . 100742)) (113812
116258 (VKBD.\\KEYBOARDEVENTFN 113822 . 115025) (VKBD.RESETKEYACTIONTABLES 115027 . 116256)) (116364
122515 (NEWKEYACTION 116374 . 122513)) (123170 139358 (FIXKEYBOARD 123180 . 124300) (FIXKEYBOARDCONFIG
124302 . 131526) (FIXKEYASSIGNMENTS 131528 . 139356)) (139411 141267 (METASHIFT 139421 . 141265)))))
(FILEMAP (NIL (5390 13914 (FINDVIRTUALKEYBOARD 5400 . 8554) (PROCESS.KEYBOARD 8556 . 11232) (
VKBD.CREATE-KEYACTION-TABLE 11234 . 13018) (VKBD.WINDOWMENUFN 13020 . 13287) (VKBD.WINDOWMENUINIT
13289 . 13912)) (13915 19276 (LOADKEYBOARDDISPLAYFONTS 13925 . 19274)) (19385 20609 (DEFINEKEYBOARD
19395 . 20607)) (20610 24555 (VKBD.ADD-ITEM-TO-BACKGROUND-MENU 20620 . 21028) (VKBD.INIT 21030 . 22982
) (VKBD.CREATE-DEFAULT-KEYBOARD 22984 . 23576) (VKBD.ADD-DEFAULT-KEYBOARD 23578 . 24553)) (24556 30484
(VKBD.LOAD-FILE-COMMAND 24566 . 25020) (VKBD.LOAD-KEYBOARD-FILE 25022 . 28445) (
VKBD.STORE-FILE-COMMAND 28447 . 28788) (VKBD.STORE-KEYBOARD-FILE 28790 . 30482)) (30485 39786 (
SWITCHKEYBOARDS 30495 . 31973) (VKBD.POP-MENU-AND-SWITCH-KEYBOARDS 31975 . 32345) (
VKBD.POP-UP-KEYBOARDS-MENU 32347 . 33729) (VKBD.GET-CONFIGURATION 33731 . 34649) (
VKBD.SUBCONFIGURATION 34651 . 39784)) (39787 80072 (VKBD.BUTTONEVENTFN 39797 . 42704) (
VKBD.CENTER-BITMAP-IN-REGION 42706 . 44230) (VKBD.CLEAR-KEY-DISPLAY 44232 . 46363) (
VKBD.CREATE-KEYBOARD-BITMAP 46365 . 48409) (VKBD.CREATE-KEYBOARD-DISPLAY 48411 . 51540) (
VKBD.CURSORMOVEDFN 51542 . 53446) (VKBD.DISPLAY-CHARACTER 53448 . 55406) (VKBD.DISPLAY-EMPTY-KEY-CAP
55408 . 65946) (VKBD.DISPLAY-KEY 65948 . 69155) (VKBD.DISPLAY-KEY-CHARACTERS 69157 . 70350) (
VKBD.DRAW-KEY-CAPS 70352 . 72540) (VKBD.ERASE-FRAME 72542 . 72865) (VKBD.EXTEND-REGION 72867 . 73456)
(VKBD.GET-KEY-AND-REGIONS-OF-CURSOR-POSITION 73458 . 74073) (VKBD.GET-KEY-REGIONS 74075 . 74331) (
VKBD.INVERT-KEY 74333 . 74623) (VKBD.INVERT-REGION 74625 . 75316) (VKBD.KEYBOARD-WINDOW-REPAINTFN
75318 . 77275) (VKBD.LOWER-HALF-REGION 77277 . 77677) (VKBD.POSITION-IS-IN-KEY-REGION 77679 . 77963) (
VKBD.REMOVE-KEYBOARD-COMMAND 77965 . 78422) (VKBD.UNION-REGIONS 78424 . 79569) (VKBD.UPPER-HALF-REGION
79571 . 80070)) (80073 99631 (VKBD.KEY-ASSOC 80083 . 80583) (VKBD.CHAR-ASSIGNMENTP 80585 . 80749) (
VKBD.COMPLETE-KEYBOARD 80751 . 83410) (VKBD.CTRL-ASSIGNMENTP 83412 . 83655) (VKBD.EVENT-ASSIGNMENTP
83657 . 83897) (VKBD.META-ASSIGNMENTP 83899 . 84142) (VKBD.FRAME-KEY 84144 . 86021) (
VKBD.GET-CURRENT-KEY-ASSIGNMENT 86023 . 86392) (VKBD.GET-NON-CHAR-LABEL 86394 . 87049) (VKBD.ICONFN
87051 . 87787) (VKBD.INVERT-LOCK-KEYS 87789 . 88467) (VKBD.INVERT-SHIFT-KEYS 88469 . 89151) (
VKBD.TRANSLATE-KEY-ID 89153 . 89832) (VKBD.KEY-ID-TO-KEY-NAMES 89834 . 90320) (
VKBD.KEYBOARD-IS-KEYBOARDTYPE-KEYBOARD 90322 . 90920) (VKBD.LOCK-ASSIGNMENTP 90922 . 91369) (
VKBD.LOCK-KEYP 91371 . 91689) (VKBD.LOCK/NOLOCK 91691 . 91850) (VKBD.LOCKDOWN-ASSIGNMENTP 91852 .
92146) (VKBD.LOCKUP-ASSIGNMENTP 92148 . 92438) (VKBD.PARSE-CHAR-CODE 92440 . 92939) (
VKBD.PARSE-KEY-ASSIGNMENT 92941 . 96397) (VKBD.RESET-KEYBOARD-WINDOW 96399 . 96992) (
VKBD.SEND-CHARACTER 96994 . 98503) (VKBD.SHIFT-ASSIGNMENTP 98505 . 98899) (VKBD.SHIFTED-CHAR 98901 .
99059) (VKBD.UNDEFINE-KEYBOARD 99061 . 99468) (VKBD.UNSHIFTED-CHAR 99470 . 99629)) (112553 114999 (
VKBD.\\KEYBOARDEVENTFN 112563 . 113766) (VKBD.RESETKEYACTIONTABLES 113768 . 114997)) (115105 121256 (
NEWKEYACTION 115115 . 121254)) (121893 138081 (FIXKEYBOARD 121903 . 123023) (FIXKEYBOARDCONFIG 123025
. 130249) (FIXKEYASSIGNMENTS 130251 . 138079)) (138168 140132 (METASHIFT 138178 . 140130)))))
STOP

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,27 +1,26 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "11-Dec-87 14:48:16" {DSK}<XAVIER>COMMON-MAKE.;5 15290
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (VARS COMMON-MAKECOMS)
(FNS COMMON-FILE-COMMAND COMMON-MAKEFILE)
(PROPS (COMMON-MAKE MAKEFILE-ENVIRONMENT))
(FILECREATED "13-Oct-2023 16:40:48" {LU}COMMON-MAKE.;2 14315
previous date%: "11-Dec-87 12:53:46" {DSK}<XAVIER>COMMON-MAKE.;1)
:EDIT-BY "mth"
:CHANGES-TO (VARS COMMON-MAKECOMS)
:PREVIOUS-DATE "11-Dec-87 14:48:16" {LU}COMMON-MAKE.;1)
(* "
Copyright (c) 1987 by Unisys Corp.. All rights reserved.
")
(PRETTYCOMPRINT COMMON-MAKECOMS)
(RPAQQ COMMON-MAKECOMS ((* FUNCTIONS TO HANDLE WRITING STANDARD COMMONLISP SOURCE FILES)
(RPAQQ COMMON-MAKECOMS [
(* ;; "FUNCTIONS TO HANDLE WRITING STANDARD COMMONLISP SOURCE FILES")
(FNS COMMON-FILE-COMMAND COMMON-MAKEFILE)
(PROP MAKEFILE-ENVIRONMENT COMMON-MAKE)
(EDITHIST COMMON-MAKE)))
(DECLARE%: DONTCOPY (ALISTS (EDITHISTALIST COMMON-MAKE])
(* FUNCTIONS TO HANDLE WRITING STANDARD COMMONLISP SOURCE FILES)
(* ;; "FUNCTIONS TO HANDLE WRITING STANDARD COMMONLISP SOURCE FILES")
(DEFINEQ
@@ -227,30 +226,20 @@ Copyright (c) 1987 by Unisys Corp.. All rights reserved.
(CLOSEF *STANDARD-OUTPUT*])
)
(PUTPROPS COMMON-MAKE MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP"))
(PUTPROPS COMMON-MAKE MAKEFILE-ENVIRONMENT (:READTABLE "INTERLISP" :PACKAGE "INTERLISP"))
(DECLARE%: DONTCOPY
(ADDTOVAR EDITHISTALIST (COMMON-MAKE ("11-Dec-87 12:54:22" DJVB {DSK}<XAVIER>COMMON-MAKE.;1
(COMMON-FILE-COMMAND COMMON-MAKEFILE))
("11-Dec-87 13:35:35" DJVB {DSK}<XAVIER>COMMON-MAKE.;2 (
COMMON-FILE-COMMAND
COMMON-MAKEFILE
)
(GETTING DETAILS RIGHT))
("11-Dec-87 13:40:48" DJVB {DSK}<XAVIER>COMMON-MAKE.;3 (
COMMON-FILE-COMMAND
))
("11-Dec-87 14:09:04" DJVB {DSK}<XAVIER>COMMON-MAKE.;4 (
COMMON-FILE-COMMAND
))
("11-Dec-87 14:48:44" DJVB {DSK}<XAVIER>COMMON-MAKE.;5 (
COMMON-FILE-COMMAND
)
(FIXED FILE COMMENTS AND CL:DEFVAR ET AL))))
(ADDTOVAR EDITHISTALIST
(COMMON-MAKE ("11-Dec-87 12:54:22" DJVB {DSK}<XAVIER>COMMON-MAKE.;1 (COMMON-FILE-COMMAND
COMMON-MAKEFILE))
("11-Dec-87 13:35:35" DJVB {DSK}<XAVIER>COMMON-MAKE.;2 (COMMON-FILE-COMMAND
COMMON-MAKEFILE)
(GETTING DETAILS RIGHT))
("11-Dec-87 13:40:48" DJVB {DSK}<XAVIER>COMMON-MAKE.;3 (COMMON-FILE-COMMAND))
("11-Dec-87 14:09:04" DJVB {DSK}<XAVIER>COMMON-MAKE.;4 (COMMON-FILE-COMMAND))
("11-Dec-87 14:48:44" DJVB {DSK}<XAVIER>COMMON-MAKE.;5 (COMMON-FILE-COMMAND)
(FIXED FILE COMMENTS AND CL:DEFVAR ET AL))))
)
(PUTPROPS COMMON-MAKE COPYRIGHT ("Unisys Corp." 1987))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (829 13460 (COMMON-FILE-COMMAND 839 . 9055) (COMMON-MAKEFILE 9057 . 13458)))))
(FILEMAP (NIL (722 13353 (COMMON-FILE-COMMAND 732 . 8948) (COMMON-MAKEFILE 8950 . 13351)))))
STOP
ÿ

BIN
lispusers/COMMON-MAKE.LCOM Normal file

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 3-Oct-2022 12:03:37" 
{DSK}<users>kaplan>local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;252 128695
(FILECREATED "29-Sep-2023 17:25:57" {WMEDLEY}<lispusers>COMPAREDIRECTORIES.;257 130870
:CHANGES-TO (FNS CDFILES)
:EDIT-BY rmk
:PREVIOUS-DATE "14-Aug-2022 12:13:45"
{DSK}<users>kaplan>local>medley3.5>working-medley>lispusers>COMPAREDIRECTORIES.;250)
:CHANGES-TO (FNS COMPAREDIRECTORIES COMPAREDIRECTORIES.INFOS)
:PREVIOUS-DATE "28-Sep-2023 23:20:57" {WMEDLEY}<lispusers>COMPAREDIRECTORIES.;256)
(* ; "
@@ -16,7 +16,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(PRETTYCOMPRINT COMPAREDIRECTORIESCOMS)
(RPAQQ COMPAREDIRECTORIESCOMS
(
[
(* ;; "Compare the contents of two directories.")
(FNS COMPAREDIRECTORIES COMPAREDIRECTORIES.INFOS COMPAREDIRECTORIES.CANDIDATES
@@ -25,7 +25,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(FNS CDFILES CDFILES.MATCH CDFILES.PATS)
(FNS CDPRINT CDPRINT.HEADER CDPRINT.LINE CDPRINT.MAXWIDTHS CDPRINT.COLHEADERS CDPRINT.COLUMNS
CDTEDIT)
(FNS CDMAP CDENTRY CDSUBSET CDMERGE CDMERGE.COMMON)
(FNS CDMAP CDENTRY CDSUBSET CDMERGE CDMERGE.COMMON CD.SORT)
(FNS BINCOMP EOLTYPE EOLTYPE.SHOW)
(RECORDS CDMAXNCHARS CDVALUE CDENTRY CDINFO)
@@ -56,7 +56,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
CDBROWSER-COPY CDBROWSER-DELETE-FILE CD-SWAPDIRS)
(VARS CDTABLEBROWSER.MENUITEMS)
(FILES (SYSLOAD)
COMPARESOURCES COMPARETEXT))))
COMPARESOURCES COMPARETEXT)
(P (MOVD? 'NILL 'TEDIT.FILEDATE])
@@ -66,7 +67,9 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(COMPAREDIRECTORIES
[LAMBDA (DIR1 DIR2 SELECT INCLUDEDFILES EXCLUDEDFILES USEDIRECTORYDATE OUTPUTFILE ALLVERSIONS
FIXDIRECTORYDATES) (* ; "Edited 29-Mar-2022 11:50 by rmk")
FIXDIRECTORYDATES) (* ; "Edited 29-Sep-2023 17:25 by rmk")
(* ; "Edited 5-Apr-2023 10:12 by rmk")
(* ; "Edited 29-Mar-2022 11:50 by rmk")
(* ; "Edited 23-Feb-2022 21:10 by rmk")
(* ; "Edited 4-Jan-2022 12:09 by rmk")
(* ; "Edited 31-Oct-2021 11:01 by rmk:")
@@ -120,7 +123,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(CDPRINT.HEADER DIR1 DIR2 SELECT DATE T)
(PRINTOUT T " ... ")
(SETQ INFOS1 (COMPAREDIRECTORIES.INFOS DIR1 INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH1
USEDIRECTORYDATE))
USEDIRECTORYDATE (MEMB 'AUTHOR SELECT)))
(SETQ INFOS2 (COMPAREDIRECTORIES.INFOS DIR2 INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH2
USEDIRECTORYDATE))
@@ -138,7 +141,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(SETQ CDENTRIES (SORT (CDENTRIES.SELECT (COMPAREDIRECTORIES.CANDIDATES INFOS1 INFOS2)
SELECT)
T))
(FUNCTION CD.SORT)))
(PRINTOUT T (LENGTH CDENTRIES)
" entries" T)
(REPLACE CDENTRIES OF CDVALUE WITH CDENTRIES)
@@ -148,7 +151,9 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(RETURN (CDPRINT CDVALUE OUTPUTFILE NIL (MEMB 'AUTHOR SELECT])
(COMPAREDIRECTORIES.INFOS
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH USEDIRECTORYDATE)
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH USEDIRECTORYDATE INCLUDEAUTHOR)
(* ;; "Edited 29-Sep-2023 17:25 by rmk")
(* ;; "Edited 22-May-2022 14:17 by rmk")
@@ -176,7 +181,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
ELSE (SETFILEINFO STREAM 'CREATIONDATE LDATE)
LDATE)))
LENGTH _ (GETFILEINFO STREAM 'LENGTH)
AUTHOR _ (GETFILEINFO STREAM 'AUTHOR)
AUTHOR _ (AND INCLUDEAUTHOR (GETFILEINFO STREAM 'AUTHOR))
TYPE _ TYPE
EOL _ (EOLTYPE STREAM)))
(CLOSEF? STREAM))
@@ -322,7 +327,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
CDE])
(COMPAREDIRECTORIES.INFOS.TYPE
[LAMBDA (FILE) (* ; "Edited 22-May-2022 14:27 by rmk")
[LAMBDA (FILE) (* ; "Edited 28-Sep-2023 23:09 by rmk")
(* ; "Edited 22-May-2022 14:27 by rmk")
(* ; "Edited 25-Apr-2022 09:02 by rmk")
(* ; "Edited 4-Jan-2022 13:10 by rmk")
(* ; "Edited 12-Dec-2021 22:50 by rmk")
@@ -330,9 +336,11 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(CL:MULTIPLE-VALUE-SETQ (TYPE DATE)
(LISPFILETYPE FILE))
(CL:UNLESS TYPE
(SETQ TYPE (IF (PRINTFILETYPE FILE)
ELSEIF (MEMB (FILENAMEFIELD FILE 'EXTENSION)
'(TXT TEXT SH MD C))
(SETQ TYPE (IF (SETQ DATE (TEDIT.FILEDATE FILE))
THEN 'TEDIT
ELSEIF (PRINTFILETYPE FILE)
ELSE (MEMB (FILENAMEFIELD FILE 'EXTENSION)
'(TXT TEXT SH MD C))
THEN 'TEXT
ELSE 'OTHER)))
(CL:VALUES TYPE DATE])
@@ -388,7 +396,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(DEFINEQ
(CDFILES
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 3-Oct-2022 12:03 by rmk")
[LAMBDA (DIR INCLUDEDFILES EXCLUDEDFILES ALLVERSIONS DEPTH)(* ; "Edited 17-Jun-2023 23:04 by rmk")
(* ; "Edited 3-Oct-2022 12:03 by rmk")
(* ; "Edited 25-Apr-2022 08:42 by rmk")
(* ; "Edited 5-Mar-2022 15:05 by rmk")
(* ; "Edited 16-Oct-2020 13:42 by rmk:")
@@ -457,7 +466,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(* ;; "We enumerate all the files, checking to see that")
(FOR FULLNAME NAME EXT SUBDIR UNPACK THISDEPTH (STARTPOS _ (ADD1 (NCHARS DIR)))
(FOR FULLNAME NAME EXT SUBDIR UNPACK THISDEPTH (STARTPOS _ (IPLUS 2 (NCHARS DIR)))
IN (DIRECTORY ENUMPAT `(DEPTH ,DEPTH COLLECT)
NIL
(CL:IF ALLVERSIONS
@@ -509,7 +518,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(ILEQ THISDEPTH (CADDDR P])
(CDFILES.PATS
[LAMBDA (PATTERNS) (* ; "Edited 23-Dec-2021 17:02 by rmk")
[LAMBDA (PATTERNS) (* ; "Edited 17-Jun-2023 23:36 by rmk")
(* ; "Edited 23-Dec-2021 17:02 by rmk")
(* ;; "Returns (NAME EXT SUBDIR DEPTH) items where NAME or EXT may be the wildcard *, SD is the subdirectory (if any) and DEPTH is the number of / or > in the subdirectory")
@@ -519,38 +529,47 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(* * NIL 1)
)
ELSE (FOR P N E SD D UNPACK INSIDE PATTERNS
JOIN (SETQ UNPACK (UNPACKFILENAME P))
(SETQ SD (LISTGET UNPACK 'SUBDIRECTORY))
ELSE (FOR P N E SD DEPTH UNPACK INSIDE PATTERNS
JOIN (SETQ UNPACK (UNPACKFILENAME.STRING P)) (* ;
 "String so we can tell the difference between x and x.")
[SETQ SD (MKATOM (LISTGET UNPACK 'SUBDIRECTORY]
(* ;; "Count the subdirectory depth")
[SETQ D (IF (EQ SD '*)
THEN MAX.SMALLP
ELSE (FOR I (CNT _ 1) FROM 1 DO (SELCHARQ (NTHCHARCODE SD I)
((/ >)
(ADD CNT 1))
(NIL (RETURN CNT))
NIL]
[SETQ DEPTH (IF (EQ SD '*)
THEN MAX.SMALLP
ELSE (FOR I (CNT _ 1) FROM 1 DO (SELCHARQ (NTHCHARCODE SD I)
((/ >)
(ADD CNT 1))
(NIL (RETURN CNT))
NIL]
(SETQ N (LISTGET UNPACK 'NAME))
(SETQ N (if (NULL N)
then '*
elseif (NEQ 0 (NCHARS N))
then (MKATOM N)))
(SETQ E (LISTGET UNPACK 'EXTENSION))
(IF [OR (AND (STRING.EQUAL N 'COM)
(SETQ E (if (NULL E)
then '*
elseif (NEQ 0 (NCHARS E))
then (MKATOM E)))
(if [OR (AND (STRING.EQUAL N 'COM)
(NULL E))
(AND (STRING.EQUAL E 'COM)
(MEMB N ' (* NIL)]
THEN (FOR CE IN *COMPILED-EXTENSIONS* COLLECT (LIST '* CE SD D))
THEN (FOR CE IN *COMPILED-EXTENSIONS* COLLECT (LIST '* CE SD DEPTH))
ELSE (CONS (IF N
THEN (LIST N E SD D)
THEN (LIST N E SD DEPTH)
ELSEIF E
THEN
(* ;; "This is the case .XXX, which presumably identifies a dotted file. If this is supposed to be all files with extension XXX, it shoud be specified as *.XXX, the case above. So we move .E into the N field.")
(LIST (PACK* '%. E)
NIL SD D)
NIL SD DEPTH)
ELSE `
(* * (\, SD) (\, D))
(* * (\, SD) (\, DEPTH))
])
)
(DEFINEQ
@@ -881,7 +900,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
WHEN (APPLY* FN CDE) COLLECT CDE])
(CDMERGE
[LAMBDA (CDVALUES) (* ; "Edited 24-Jan-2022 17:01 by rmk")
[LAMBDA (CDVALUES) (* ; "Edited 5-Apr-2023 10:10 by rmk")
(* ; "Edited 24-Jan-2022 17:01 by rmk")
(* ;; "This merges a collection of CDVALUES on different directories into a single CDVALUE with the union of the CDENTRIES, provided that they have the same selection criteria. The merged directories will be the minimal common prefix of all of the entries on each side, and the residual of the directory will be packed onto all the names.")
@@ -919,8 +939,8 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
 "Merge the CDENTRIES with matchnames pulled back so that subdirectories show up")
(SETQ MERGEDENTRIES
(SORT [FOR CDV NC1 _ (ADD1 (NCHARS DIR1))
NC2 _ (ADD1 (NCHARS DIR2)) IN (CDR CDS)
(SORT [FOR CDV (NC1 _ (ADD1 (NCHARS DIR1)))
(NC2 _ (ADD1 (NCHARS DIR2))) IN (CDR CDS)
JOIN (FOR CDE IN (FETCH CDENTRIES OF CDV)
COLLECT (CREATE CDENTRY
USING CDE MATCHNAME _
@@ -933,7 +953,7 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
OF (FETCH INFO2
OF CDE))
NC2]
T))
(FUNCTION CD.SORT)))
(CD.UPDATEWIDTHS (CREATE CDVALUE
CDDIR1 _ DIR1
CDDIR2 _ DIR2
@@ -962,6 +982,19 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(L-CASECODE CY] DO (RETURN (CL:IF (EQ I 1)
""
(SUBSTRING DIRX 1 LASTDIRPOS))])
(CD.SORT
[LAMBDA (ENTRY1 ENTRY2) (* ; "Edited 5-Apr-2023 10:15 by rmk")
(* ;; "Groups same file with different extensions together. FOO and FOO.LCOM together, even if FOO-FUM exists (hyphen comes before period).")
(LET ((M1 (FETCH MATCHNAME OF ENTRY1))
(M2 (FETCH MATCHNAME OF ENTRY2))
ORDER)
(CL:IF [EQ 'EQUAL (SETQ ORDER (ALPHORDER (PACKFILENAME 'EXTENSION NIL 'BODY M1)
(PACKFILENAME 'EXTENSION NIL 'BODY M2]
(ALPHORDER M1 M2)
ORDER)])
)
(DEFINEQ
@@ -2154,28 +2187,30 @@ Copyright (c) 1985-1988, 1990, 1994, 1998, 2018, 2020-2021 by Venue & Xerox Corp
(FILESLOAD (SYSLOAD)
COMPARESOURCES COMPARETEXT)
(MOVD? 'NILL 'TEDIT.FILEDATE)
(PUTPROPS COMPAREDIRECTORIES COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1988 1990 1994 1998
2018 2020 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2624 22181 (COMPAREDIRECTORIES 2634 . 7467) (COMPAREDIRECTORIES.INFOS 7469 . 10343) (
COMPAREDIRECTORIES.CANDIDATES 10345 . 13730) (CDENTRIES.SELECT 13732 . 18507) (
COMPAREDIRECTORIES.INFOS.TYPE 18509 . 19415) (MATCHNAME 19417 . 20097) (CD.INSURECDVALUE 20099 . 21713
) (CD.UPDATEWIDTHS 21715 . 22179)) (22182 32000 (CDFILES 22192 . 28094) (CDFILES.MATCH 28096 . 29721)
(CDFILES.PATS 29723 . 31998)) (32001 49822 (CDPRINT 32011 . 34528) (CDPRINT.HEADER 34530 . 35427) (
CDPRINT.LINE 35429 . 38661) (CDPRINT.MAXWIDTHS 38663 . 42778) (CDPRINT.COLHEADERS 42780 . 44065) (
CDPRINT.COLUMNS 44067 . 49187) (CDTEDIT 49189 . 49820)) (49823 58192 (CDMAP 49833 . 51265) (CDENTRY
51267 . 51576) (CDSUBSET 51578 . 53017) (CDMERGE 53019 . 56873) (CDMERGE.COMMON 56875 . 58190)) (58193
65731 (BINCOMP 58203 . 62492) (EOLTYPE 62494 . 65056) (EOLTYPE.SHOW 65058 . 65729)) (66259 78786 (
FIND-UNCOMPILED-FILES 66269 . 69912) (FIND-UNSOURCED-FILES 69914 . 72298) (FIND-SOURCE-FILES 72300 .
74038) (FIND-COMPILED-FILES 74040 . 75917) (FIND-UNLOADED-FILES 75919 . 76772) (FIND-LOADED-FILES
76774 . 77202) (FIND-MULTICOMPILED-FILES 77204 . 78784)) (78787 87218 (CREATED-AS 78797 . 83594) (
SOURCE-FOR-COMPILED-P 83596 . 86523) (COMPILE-SOURCE-DATE-DIFF 86525 . 87216)) (87219 97525 (
FIX-DIRECTORY-DATES 87229 . 90222) (FIX-EQUIV-DATES 90224 . 91749) (COPY-COMPARED-FILES 91751 . 93572)
(COPY-MISSING-FILES 93574 . 95731) (COMPILED-ON-SAME-SOURCE 95733 . 97523)) (97719 105557 (CDBROWSER
97729 . 101656) (CDBROWSER.STRINGS 101658 . 105555)) (105719 107455 (CD.TABLEITEM 105729 . 105949) (
CD.TABLEITEM.PRINTFN 105951 . 106150) (CD.TABLEITEM.COPYFN 106152 . 107210) (
CDTABLEBROWSER.HEADING.REPAINTFN 107212 . 107453)) (107456 128111 (CDTABLEBROWSER.WHENSELECTEDFN
107466 . 107934) (CD.COMMANDSELECTEDFN 107936 . 113037) (CD-MENUFN 113039 . 117350) (CD-COMPARE-FILES
117352 . 120704) (CDBROWSER-COPY 120706 . 124375) (CDBROWSER-DELETE-FILE 124377 . 127590) (CD-SWAPDIRS
127592 . 128109)))))
(FILEMAP (NIL (2651 22769 (COMPAREDIRECTORIES 2661 . 7751) (COMPAREDIRECTORIES.INFOS 7753 . 10711) (
COMPAREDIRECTORIES.CANDIDATES 10713 . 14098) (CDENTRIES.SELECT 14100 . 18875) (
COMPAREDIRECTORIES.INFOS.TYPE 18877 . 20003) (MATCHNAME 20005 . 20685) (CD.INSURECDVALUE 20687 . 22301
) (CD.UPDATEWIDTHS 22303 . 22767)) (22770 33392 (CDFILES 22780 . 28794) (CDFILES.MATCH 28796 . 30421)
(CDFILES.PATS 30423 . 33390)) (33393 51214 (CDPRINT 33403 . 35920) (CDPRINT.HEADER 35922 . 36819) (
CDPRINT.LINE 36821 . 40053) (CDPRINT.MAXWIDTHS 40055 . 44170) (CDPRINT.COLHEADERS 44172 . 45457) (
CDPRINT.COLUMNS 45459 . 50579) (CDTEDIT 50581 . 51212)) (51215 60336 (CDMAP 51225 . 52657) (CDENTRY
52659 . 52968) (CDSUBSET 52970 . 54409) (CDMERGE 54411 . 58395) (CDMERGE.COMMON 58397 . 59712) (
CD.SORT 59714 . 60334)) (60337 67875 (BINCOMP 60347 . 64636) (EOLTYPE 64638 . 67200) (EOLTYPE.SHOW
67202 . 67873)) (68403 80930 (FIND-UNCOMPILED-FILES 68413 . 72056) (FIND-UNSOURCED-FILES 72058 . 74442
) (FIND-SOURCE-FILES 74444 . 76182) (FIND-COMPILED-FILES 76184 . 78061) (FIND-UNLOADED-FILES 78063 .
78916) (FIND-LOADED-FILES 78918 . 79346) (FIND-MULTICOMPILED-FILES 79348 . 80928)) (80931 89362 (
CREATED-AS 80941 . 85738) (SOURCE-FOR-COMPILED-P 85740 . 88667) (COMPILE-SOURCE-DATE-DIFF 88669 .
89360)) (89363 99669 (FIX-DIRECTORY-DATES 89373 . 92366) (FIX-EQUIV-DATES 92368 . 93893) (
COPY-COMPARED-FILES 93895 . 95716) (COPY-MISSING-FILES 95718 . 97875) (COMPILED-ON-SAME-SOURCE 97877
. 99667)) (99863 107701 (CDBROWSER 99873 . 103800) (CDBROWSER.STRINGS 103802 . 107699)) (107863
109599 (CD.TABLEITEM 107873 . 108093) (CD.TABLEITEM.PRINTFN 108095 . 108294) (CD.TABLEITEM.COPYFN
108296 . 109354) (CDTABLEBROWSER.HEADING.REPAINTFN 109356 . 109597)) (109600 130255 (
CDTABLEBROWSER.WHENSELECTEDFN 109610 . 110078) (CD.COMMANDSELECTEDFN 110080 . 115181) (CD-MENUFN
115183 . 119494) (CD-COMPARE-FILES 119496 . 122848) (CDBROWSER-COPY 122850 . 126519) (
CDBROWSER-DELETE-FILE 126521 . 129734) (CD-SWAPDIRS 129736 . 130253)))))
STOP

Binary file not shown.

View File

@@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "22-May-2022 18:46:01" 
{DSK}<users>kaplan>local>medley3.5>working-medley>lispusers>COMPARESOURCES.;128 39655
(FILECREATED "17-Jun-2023 15:22:40" {WMEDLEY}<lispusers>COMPARESOURCES.;131 39663
:CHANGES-TO (FNS COMPARESOURCES CSBROWSER \CS.EXAMINE)
(VARS COMPARESOURCESCOMS)
:EDIT-BY rmk
:PREVIOUS-DATE "12-May-2022 10:17:13"
{DSK}<users>kaplan>local>medley3.5>working-medley>lispusers>COMPARESOURCES.;123)
:CHANGES-TO (FNS CSBROWSER \CS.COMPARE.MASTERS)
:PREVIOUS-DATE "22-May-2022 18:46:01" {WMEDLEY}<lispusers>COMPARESOURCES.;128)
(* ; "
@@ -141,25 +140,26 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
'SAME])
(\CS.COMPARE.MASTERS
[LAMBDA (BODYX BODYY DW?) (* ; "Edited 25-Feb-2022 18:02 by rmk")
[LAMBDA (BODY1 BODY2 DW?) (* ; "Edited 17-Jun-2023 15:19 by rmk")
(* ; "Edited 25-Feb-2022 18:02 by rmk")
(* ; "Edited 18-Jan-2022 22:00 by rmk")
(* ; "Edited 19-Dec-2021 21:05 by rmk")
(* ; "Edited 5-Sep-2020 19:01 by rmk:")
(* ; "Edited 15-Apr-88 14:41 by bvm")
(DECLARE (USEDFREE DIFFERENCES COMPARESTREAM))
(LET (YTHING XTHING PRED DIFS TMP)
(SETQ BODYX (CL:REMOVE-IF (FUNCTION EDITDATE?)
BODYX)) (* ;
(LET (THING2 THING1 PRED DIFS TMP)
(SETQ BODY1 (CL:REMOVE-IF (FUNCTION EDITDATE?)
BODY1)) (* ;
 "We don't care about editdate comments")
(SETQ BODYY (CL:REMOVE-IF (FUNCTION EDITDATE?)
BODYY))
(SETQ BODYX (\CS.FIXFNS BODYX))
(SETQ BODYY (\CS.FIXFNS BODYY))
(CL:WHEN (AND (SETQ XTHING (ASSOC 'DEFINE-FILE-INFO BODYX))
(SETQ YTHING (ASSOC 'DEFINE-FILE-INFO BODYY))
(\CS.COMPARE.DEFINE-FILE-INFO XTHING YTHING))
(SETQ BODYX (REMOVE XTHING BODYX))
(SETQ BODYY (REMOVE YTHING BODYY)))
(SETQ BODY2 (CL:REMOVE-IF (FUNCTION EDITDATE?)
BODY2))
(SETQ BODY1 (\CS.FIXFNS BODY1))
(SETQ BODY2 (\CS.FIXFNS BODY2))
(CL:WHEN (AND (SETQ THING1 (ASSOC 'DEFINE-FILE-INFO BODY1))
(SETQ THING2 (ASSOC 'DEFINE-FILE-INFO BODY2))
(\CS.COMPARE.DEFINE-FILE-INFO THING1 THING2))
(SETQ BODY1 (REMOVE THING1 BODY1))
(SETQ BODY2 (REMOVE THING2 BODY2)))
(* ;; "These are for commonlispy definers")
@@ -168,18 +168,18 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
do
(* ;; "handle definer based things")
(for DEFFER in DEFFERS WHEN [AND (SETQ XTHING (for X in BODYX collect X
(for DEFFER in DEFFERS WHEN [AND (SETQ THING1 (for X in BODY1 collect X
when (EQ (CAR X)
DEFFER)))
(SETQ YTHING (for X in BODYY collect X
(SETQ THING2 (for X in BODY2 collect X
when (EQ (CAR X)
DEFFER]
do
(* ;; "Take out all of the THINGS we are about to do. ")
(SETQ BODYX (CL:SET-DIFFERENCE BODYX XTHING :TEST (FUNCTION EQUALALL)))
(SETQ BODYY (CL:SET-DIFFERENCE BODYY YTHING :TEST (FUNCTION EQUALALL)))
(CL:WHEN (SETQ DIFS (\CS.COMPARE.TYPES XTHING YTHING
(SETQ BODY1 (CL:SET-DIFFERENCE BODY1 THING1 :TEST (FUNCTION EQUALALL)))
(SETQ BODY2 (CL:SET-DIFFERENCE BODY2 THING2 :TEST (FUNCTION EQUALALL)))
(CL:WHEN (SETQ DIFS (\CS.COMPARE.TYPES THING1 THING2
(CONCAT (OR (CL:DOCUMENTATION TYPE 'DEFINE-TYPES)
TYPE)
" defined by " DEFFER)
@@ -194,11 +194,11 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
(* ;; "These are for other filepkage types, as registered in COMPARESOURCETYPES")
[for TYPE in COMPARESOURCETYPES EACHTIME (SETQ PRED (fetch (CSTYPE PREDFN) of TYPE))
WHEN [AND (SETQ XTHING (for X in BODYX collect X when (CL:FUNCALL PRED X)))
(SETQ YTHING (for X in BODYY collect X when (CL:FUNCALL PRED X]
do (SETQ BODYX (CL:SET-DIFFERENCE BODYX XTHING :TEST (FUNCTION EQUALALL)))
(SETQ BODYY (CL:SET-DIFFERENCE BODYY YTHING :TEST (FUNCTION EQUALALL)))
(CL:WHEN [SETQ DIFS (\CS.COMPARE.TYPES XTHING YTHING (OR (fetch (CSTYPE TITLE)
WHEN [AND (SETQ THING1 (for X in BODY1 collect X when (CL:FUNCALL PRED X)))
(SETQ THING2 (for X in BODY2 collect X when (CL:FUNCALL PRED X]
do (SETQ BODY1 (CL:SET-DIFFERENCE BODY1 THING1 :TEST (FUNCTION EQUALALL)))
(SETQ BODY2 (CL:SET-DIFFERENCE BODY2 THING2 :TEST (FUNCTION EQUALALL)))
(CL:WHEN [SETQ DIFS (\CS.COMPARE.TYPES THING1 THING2 (OR (fetch (CSTYPE TITLE)
of TYPE)
(MKSTRING (fetch (CSTYPE
FPKGTYPE)
@@ -211,23 +211,23 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
((SETQ TMP (ASSOC TYPE DIFFERENCES))
(NCONC TMP DIFS))
(T (push DIFFERENCES (CONS TYPE DIFS])]
(SETQ BODYY (CL:SET-DIFFERENCE BODYY (PROG1 BODYX
(SETQ BODYX (CL:SET-DIFFERENCE
BODYX BODYY :TEST
(SETQ BODY2 (CL:SET-DIFFERENCE BODY2 (PROG1 BODY1
(SETQ BODY1 (CL:SET-DIFFERENCE
BODY1 BODY2 :TEST
(FUNCTION EQUALALL))))
:TEST
(FUNCTION EQUALALL)))
(COND
((OR BODYX BODYY)
((OR BODY1 BODY2)
(printout CONTEXTSTREAM T "---Expressions:" T)
(LET ((COMMENTX 0)
(COMMENTY 0)) (* ; "Remove comments")
[SETQ BODYX (for X in BODYX collect X unless (COND
[SETQ BODY1 (for X in BODY1 collect X unless (COND
((EQ (CAR X)
COMMENTFLG)
(add COMMENTX 1)
T]
[SETQ BODYY (for Y in BODYY collect Y unless (COND
[SETQ BODY2 (for Y in BODY2 collect Y unless (COND
((EQ (CAR Y)
COMMENTFLG)
(add COMMENTY 1)
@@ -238,14 +238,14 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
(printout CONTEXTSTREAM .I1 COMMENTX " comments -> " .I1 COMMENTY " comments."
T T)))
[COND
[BODYX (COND
(BODYY (COMPARELISTS BODYX BODYY COMPARESTREAM)
(\CS.EXAMINE BODYX BODYY NIL 'Expression))
[BODY1 (COND
(BODY2 (COMPARELISTS BODY1 BODY2 COMPARESTREAM)
(\CS.EXAMINE BODY1 BODY2 NIL 'Expression))
(T (printout COMPARESTREAM "These are not on File 2:" T)
(FOR X IN BODYX DO (LVLPRINT X COMPARESTREAM 2 3)
(FOR X IN BODY1 DO (LVLPRINT X COMPARESTREAM 2 3)
(\CS.EXAMINE X NIL T NIL 'Expression]
(BODYY (printout COMPARESTREAM "These are not on File 1:" T)
(FOR Y IN BODYY DO (LVLPRINT Y COMPARESTREAM 2 3)
(BODY2 (printout COMPARESTREAM "These are not on File 1:" T)
(FOR Y IN BODY2 DO (LVLPRINT Y COMPARESTREAM 2 3)
(\CS.EXAMINE NIL Y T NIL 'Expression]
(OR (ASSOC 'Other DIFFERENCES)
(push DIFFERENCES (LIST 'Other '--])
@@ -622,7 +622,9 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
(DEFINEQ
(CSBROWSER
[LAMBDA (FILEX FILEY DW? LABEL1 LABEL2 REGION IGNORECOMMENTS TITLE)
[LAMBDA (FILE1 FILE2 DW? LABEL1 LABEL2 REGION IGNORECOMMENTS TITLE)
(* ;; "Edited 17-Jun-2023 15:21 by rmk")
(* ;; "Edited 22-May-2022 18:42 by rmk")
@@ -637,28 +639,29 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
(* ;; "Don't use the INFILEP value, because that might screw with capitalization that the caller prefers. If the file can be found that way, then lower functions will find it.")
(DECLARE (SPECVARS LABEL1 LABEL2))
(SETQ FILEX (OR (STREAMP FILEX)
(INFILEP FILEX)
(FINDFILE FILEX NIL DIRECTORIES)
(ERROR "FILE NOT FOUND" FILEX)))
(SETQ FILEY (OR (STREAMP FILEY)
(INFILEP FILEY)
(FINDFILE FILEY NIL DIRECTORIES)
(ERROR "FILE NOT FOUND" FILEY)))
(CL:UNLESS (LISPSOURCEFILEP FILEX)
(ERROR FILEX " is not a Medley source file"))
(CL:UNLESS (LISPSOURCEFILEP FILEY)
(ERROR FILEX " is not a Medley source file"))
(SETQ FILE1 (OR (STREAMP FILE1)
(INFILEP FILE1)
(FINDFILE FILE1 NIL DIRECTORIES)
(ERROR "FILE NOT FOUND" FILE1)))
(SETQ FILE2 (OR (STREAMP FILE2)
(INFILEP FILE2)
(FINDFILE FILE2 NIL DIRECTORIES)
(ERROR "FILE NOT FOUND" FILE2)))
(CL:UNLESS (LISPSOURCEFILEP FILE1)
(ERROR FILE1 " is not a Medley source file"))
(CL:UNLESS LABEL1
(SETQ LABEL1 (PACKFILENAME 'HOST NIL 'DIRECTORY NIL 'BODY FILE1)))
(CL:UNLESS LABEL2
(SETQ LABEL2 (PACKFILENAME 'HOST NIL 'DIRECTORY NIL 'BODY FILE2)))
(CL:UNLESS (LISPSOURCEFILEP FILE2)
(ERROR FILE1 " is not a Medley source file"))
(CL:UNLESS TITLE
[SETQ TITLE (CONCAT "COMPARESOURCES of " (OR LABEL1 (PACKFILENAME 'HOST NIL 'DIRECTORY NIL
'BODY FILEX))
" and "
(OR LABEL2 (PACKFILENAME 'HOST NIL 'DIRECTORY NIL 'BODY FILEY])
(SETQ TITLE (CONCAT "COMPARESOURCES of " LABEL1 " and " LABEL2)))
(LET [(WINDOW (OBJ.CREATEW 'VERTICAL REGION TITLE NIL T (FONTPROP DEFAULTFONT 'HEIGHT]
(WINDOWPROP WINDOW 'UNDERSCONTRUCTION T)
(GETPROMPTWINDOW WINDOW T)
(WINDOWPROP WINDOW 'UNDERSCONTRUCTION NIL)
(COMPARESOURCES FILEX FILEY '(T 2WINDOWS)
(COMPARESOURCES FILE1 FILE2 '(T 2WINDOWS)
DW? WINDOW IGNORECOMMENTS LABEL1 LABEL2)
(OPENW WINDOW)
WINDOW])
@@ -679,16 +682,16 @@ Copyright (c) 1985-1988, 2018, 2020-2021 by Xerox Corporation.
)
(PUTPROPS COMPARESOURCES COPYRIGHT ("Xerox Corporation" 1985 1986 1987 1988 2018 2020 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1864 25616 (COMPARESOURCES 1874 . 8001) (\CS.COMPARE.MASTERS 8003 . 15415) (
\CS.COMPARE.TYPES 15417 . 18683) (\CS.EXAMINE 18685 . 21863) (\CS.FIXFNS 21865 . 23367) (
\CS.SORT.DECLARES 23369 . 23712) (\CS.SORT.DECLARE1 23714 . 25134) (\CS.FILTER.GARBAGE 25136 . 25614))
(25617 30153 (\CS.ISFNFORM 25627 . 25895) (\CS.COMPARE.FNS 25897 . 26139) (\CS.FNSID 26141 . 26285) (
\CS.ISVARFORM 26287 . 26392) (\CS.COMPARE.VARS 26394 . 27056) (\CS.ISMACROFORM 27058 . 27196) (
\CS.ISRECFORM 27198 . 27526) (\CS.REC.NAME 27528 . 27847) (\CS.ISCOURIERFORM 27849 . 27949) (
\CS.ISTEMPLATEFORM 27951 . 28049) (\CS.COMPARE.TEMPLATES 28051 . 28416) (\CS.ISPROPFORM 28418 . 28573)
(\CS.PROP.NAME 28575 . 28720) (\CS.COMPARE.PROPS 28722 . 28879) (\CS.ISADDVARFORM 28881 . 28974) (
\CS.COMPARE.ADDVARS 28976 . 29141) (\CS.ISFPKGCOMFORM 29143 . 29350) (\CS.COMPARE.FPKGCOMS 29352 .
29559) (\CS.COMPARE.DEFINE-FILE-INFO 29561 . 30151)) (30154 36218 (CSOBJ.CREATE 30164 . 30577) (
CSOBJ.DISPLAYFN 30579 . 31332) (CSOBJ.IMAGEBOXFN 31334 . 33495) (CSOBJ.BUTTONEVENTINFN 33497 . 35968)
(CSOBJ.COPYBUTTONEVENTINFN 35970 . 36216)) (37099 39228 (CSBROWSER 37109 . 39226)))))
(FILEMAP (NIL (1751 25612 (COMPARESOURCES 1761 . 7888) (\CS.COMPARE.MASTERS 7890 . 15411) (
\CS.COMPARE.TYPES 15413 . 18679) (\CS.EXAMINE 18681 . 21859) (\CS.FIXFNS 21861 . 23363) (
\CS.SORT.DECLARES 23365 . 23708) (\CS.SORT.DECLARE1 23710 . 25130) (\CS.FILTER.GARBAGE 25132 . 25610))
(25613 30149 (\CS.ISFNFORM 25623 . 25891) (\CS.COMPARE.FNS 25893 . 26135) (\CS.FNSID 26137 . 26281) (
\CS.ISVARFORM 26283 . 26388) (\CS.COMPARE.VARS 26390 . 27052) (\CS.ISMACROFORM 27054 . 27192) (
\CS.ISRECFORM 27194 . 27522) (\CS.REC.NAME 27524 . 27843) (\CS.ISCOURIERFORM 27845 . 27945) (
\CS.ISTEMPLATEFORM 27947 . 28045) (\CS.COMPARE.TEMPLATES 28047 . 28412) (\CS.ISPROPFORM 28414 . 28569)
(\CS.PROP.NAME 28571 . 28716) (\CS.COMPARE.PROPS 28718 . 28875) (\CS.ISADDVARFORM 28877 . 28970) (
\CS.COMPARE.ADDVARS 28972 . 29137) (\CS.ISFPKGCOMFORM 29139 . 29346) (\CS.COMPARE.FPKGCOMS 29348 .
29555) (\CS.COMPARE.DEFINE-FILE-INFO 29557 . 30147)) (30150 36214 (CSOBJ.CREATE 30160 . 30573) (
CSOBJ.DISPLAYFN 30575 . 31328) (CSOBJ.IMAGEBOXFN 31330 . 33491) (CSOBJ.BUTTONEVENTINFN 33493 . 35964)
(CSOBJ.COPYBUTTONEVENTINFN 35966 . 36212)) (37095 39236 (CSBROWSER 37105 . 39234)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 9-Jul-2022 11:05:08" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>lispusers>EXAMINEDEFS.;40 12957
(FILECREATED "13-Oct-2023 11:18:04" {WMEDLEY}<lispusers>EXAMINEDEFS.;48 14244
:CHANGES-TO (FNS EXAMINEDEFS)
:EDIT-BY rmk
:PREVIOUS-DATE "24-Jun-2022 18:52:03"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>lispusers>EXAMINEDEFS.;39)
:CHANGES-TO (FNS EXAMINEDEFS TEDITDEF)
:PREVIOUS-DATE "19-Jul-2023 13:59:26" {WMEDLEY}<lispusers>EXAMINEDEFS.;44)
(PRETTYCOMPRINT EXAMINEDEFSCOMS)
@@ -19,49 +19,66 @@
(DEFINEQ
(EXAMINEDEFS
[LAMBDA (NAME TYPE SOURCE1 SOURCE2 TITLE1 TITLE2 REGION) (* ; "Edited 9-Jul-2022 11:04 by rmk")
(* ; "Edited 24-Jun-2022 18:51 by rmk")
(* ; "Edited 23-Jun-2022 17:58 by rmk")
(* ; "Edited 25-Feb-2022 15:01 by rmk")
[LAMBDA (NAME TYPE SOURCE1 SOURCE2 TITLE1 TITLE2 REGION) (* ; "Edited 13-Oct-2023 11:11 by rmk")
(* ; "Edited 18-May-2023 22:35 by rmk")
(* ; "Edited 21-Apr-2023 14:42 by rmk")
(* ;; "This provides for side-by-side examination of separate but presumably related expressions. The (LISTP) expressions can be provided directly as SOURCE1 and SOURCE2 or, if NAME is given the copies of the definitions of NAME as TYPE on the two sources are examined.")
(* ;; "This provides for side-by-side examination of separate but presumably related expressions. The (LISTP) expressions can be provided directly as the definitions SOURCE1 and SOURCE2 or, if NAME is given the copies of the definitions of NAME as TYPE on the two sources are examined. If both SOURCE1 and SOURCE2 are NIL, then SOURCE1 is the existing file defintions, NIL is the existing in-memory definition")
(* ;; "")
(* ;; "Examination is in side-by-side attached SEDIT windows if SEDIT is the EDITMODE. You can use SEDIT operations to zoom in on the location of any changes, deleting common stuff for example. But you are always working on a copy, so that changes are safe and ephemeral. This is an examination, not an edit.")
(CL:UNLESS NAME
(CL:UNLESS (LISTP SOURCE1)
(ERROR SOURCE1 " cannot be examined"))
(CL:UNLESS (LISTP SOURCE2)
(ERROR SOURCE2 " cannot be examined")))
(CL:UNLESS TYPE
(SETQ TYPE 'FNS))
(if NAME
then (CL:UNLESS [OR SOURCE1 SOURCE2 (SETQ SOURCE2 (CAR (WHEREIS NAME
(OR TYPE '(FNS FUNCTIONS))
T]
(ERROR (CONCAT "Can't find " NAME " definitions to examine")))
else (CL:UNLESS (LISTP SOURCE1)
(ERROR SOURCE1 " cannot be examined"))
(CL:UNLESS (LISTP SOURCE2)
(ERROR SOURCE2 " cannot be examined")))
(* ;; "TITLE1 and TITLE2 are optional strings that will be used to construct the titles of the SEDIT windows. We would like to know where GETDEF got the definition so we can use that, but there isn't an interface that provides that information (extended WHEREIS?)")
(LET (DEF1 DEF2)
(SETQ DEF1 (IF (LISTP SOURCE1)
THEN
(* ;; "Copy to simulate READONLY")
(* ;; "")
(SETQ DEF1 (COPY SOURCE1))
ELSEIF (GETDEF NAME TYPE SOURCE1)
ELSE (ERROR NAME " not found on " SOURCE1)))
(SETQ DEF2 (IF (LISTP SOURCE2)
THEN (COPY SOURCE2)
ELSEIF (GETDEF NAME TYPE SOURCE2)
ELSE (ERROR NAME " not found on " SOURCE2)))
(* ;; "If SOURCE1 and SOURCE2 are both NIL, SOURCE1 defaults to the current (in memory) definition, SOURCE2 defaults to the definition on the current file.")
(LET (DEF1 DEF2)
(if (SETQ DEF1 (LISTP SOURCE1))
elseif TYPE
then (NEQ (SETQ DEF1 (GETDEF NAME TYPE SOURCE1 'NOERROR))
(FILEPKGTYPE TYPE 'NULLDEF))
elseif (NEQ (SETQ DEF1 (GETDEF NAME (SETQ TYPE 'FNS)
SOURCE1
'NOERROR))
(FILEPKGTYPE TYPE 'NULLDEF))
elseif (NEQ (SETQ DEF1 (GETDEF NAME (SETQ TYPE 'FUNCTIONS)
SOURCE1
'NOERROR))
(FILEPKGTYPE TYPE 'NULLDEF))
else (ERROR NAME (CONCAT "not found on " SOURCE1)))
(if (SETQ DEF2 (LISTP SOURCE2))
elseif (NEQ (SETQ DEF2 (GETDEF NAME TYPE SOURCE2 'NOERROR))
(FILEPKGTYPE TYPE 'NULLDEF))
else (ERROR NAME (CONCAT "not found on " SOURCE2)))
(CL:UNLESS TITLE1
(SETQ TITLE1 (CL:IF (AND SOURCE1 (ILEQ (COUNT SOURCE1)
5))
SOURCE1
"File 1")))
(SETQ TITLE1 (OR (AND (OR (LISTP SOURCE1)
(NULL SOURCE1))
'Current)
(AND (MEMB (U-CASE SOURCE1)
'(PROP SAVED))
'Saved)
(FINDFILE SOURCE1)
SOURCE1)))
(CL:UNLESS TITLE2
(SETQ TITLE2 (CL:IF (AND SOURCE2 (ILEQ (COUNT SOURCE2)
5))
SOURCE2
"File 2")))
(SETQ TITLE2 (OR (AND (OR (LISTP SOURCE2)
(NULL SOURCE2))
'Current)
(AND (MEMB (U-CASE SOURCE2)
'(PROP SAVED))
'Saved)
(FINDFILE SOURCE2)
SOURCE2)))
(SELECTQ (EDITMODE)
(SEDIT:SEDIT
(* ;;
@@ -80,7 +97,9 @@
 "Crude suggestions for height, width, position. Suggest shorter window for smaller structures")
(SELECTQ EXAMINEWITH
(SEDIT (CL:UNLESS (REGIONP REGION)
(SEDIT (SETQ DEF1 (COPY DEF1)) (* ; "Copy to simulate read-only")
(SETQ DEF2 (COPY DEF2))
(CL:UNLESS (REGIONP REGION)
(SETQ REGION (GETREGION)))
[LET (R1 R2 HALFWIDTH W1 W2)
(SETQ HALFWIDTH (IQUOTIENT (FETCH (REGION WIDTH)
@@ -139,15 +158,14 @@
(CONCAT "Compare sources of " NAME
" as " TYPE)
TEXTWIDTH TEXTHEIGHT))
(WINDOWPROP CTWINDOW 'EXAMINEDEFS
(LIST NAME TYPE SOURCE1 SOURCE2 TITLE1
TITLE2)))])
(WINDOWPROP CTWINDOW 'EXAMINEDEFS KEY))])
(SHOULDNT)))
(PROGN (EDITE DEF1)
(EDITE DEF2])
(EXAMINEFILES
[LAMBDA (FILE1 FILE2 TITLE1 TITLE2 REGION) (* ; "Edited 1-Feb-2022 23:15 by rmk")
[LAMBDA (FILE1 FILE2 TITLE1 TITLE2 REGION) (* ; "Edited 19-Jul-2023 13:48 by rmk")
(* ; "Edited 1-Feb-2022 23:15 by rmk")
(* ; "Edited 25-Jan-2022 10:08 by rmk")
(* ; "Edited 2-Jan-2022 23:15 by rmk")
(* ; "Edited 30-Dec-2021 21:49 by rmk")
@@ -156,23 +174,26 @@
(CL:UNLESS REGION
(SETQ REGION (GETREGION)))
(LIST (AND FILE1 (TEDIT-SEE FILE1 (RELCREATEREGION `(,REGION 0.5 -1)
REGION
'RIGHT
'TOP
`(,REGION 0.5)
(FETCH (REGION TOP) OF REGION))
NIL TITLE1))
(AND FILE2 (TEDIT-SEE FILE2 (RELCREATEREGION `(,REGION 0.5 1)
REGION
'LEFT
'TOP
`(,REGION 0.5)
(FETCH (REGION TOP) OF REGION))
NIL TITLE2])
(LIST (AND (INFILEP FILE1)
(TEDIT-SEE FILE1 (RELCREATEREGION `(,REGION 0.5 -1)
REGION
'RIGHT
'TOP
`(,REGION 0.5)
(FETCH (REGION TOP) OF REGION))
NIL TITLE1))
(AND (INFILEP FILE2)
(TEDIT-SEE FILE2 (RELCREATEREGION `(,REGION 0.5 1)
REGION
'LEFT
'TOP
`(,REGION 0.5)
(FETCH (REGION TOP) OF REGION))
NIL TITLE2])
(TEDITDEF
[LAMBDA (NAME DEF TYPE READERENVIRONMENT WIDTH) (* ; "Edited 23-Jun-2022 17:27 by rmk")
[LAMBDA (NAME DEF TYPE READERENVIRONMENT WIDTH) (* ; "Edited 13-Oct-2023 00:23 by rmk")
(* ; "Edited 23-Jun-2022 17:27 by rmk")
(* ; "Edited 28-Jan-2022 23:36 by rmk")
(* ; "Edited 12-Jan-2022 17:27 by rmk")
(LET ((TSTREAM (OPENTEXTSTREAM)))
@@ -182,11 +203,14 @@
TSTREAM))
TSTREAM))
(SELECTQ (CAR DEF)
([LAMBDA NLAMBDA OPENLAMBDA]
(PRINTOUT TSTREAM .FONT BOLDFONT .P2 NAME T .FONT DEFAULTFONT 2)
(PRINTDEF DEF 2 T NIL NIL TSTREAM))
(DEFINEQ (SETQ DEF (CADR DEF))
(PRINTOUT TSTREAM .FONT BOLDFONT .P2 NAME T .FONT DEFAULTFONT 2)
(PRINTDEF (CADR DEF)
2 T NIL NIL TSTREAM))
((DEFMACRO DEFUN) (* ; "Has args after name")
((DEFMACRO DEFUN DEFMACRO CL:DEFUN) (* ; "Has args after name")
(PRINTOUT TSTREAM "(" .P2 (CAR DEF)
" " .FONT BOLDFONT .P2 (CADR DEF)
.FONT DEFAULTFONT " " .P2 (CADDR DEF)
@@ -216,6 +240,6 @@
(FILESLOAD (SYSLOAD)
COMPARETEXT)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (671 12815 (EXAMINEDEFS 681 . 9537) (EXAMINEFILES 9539 . 10934) (TEDITDEF 10936 . 12813)
))))
(FILEMAP (NIL (618 14102 (EXAMINEDEFS 628 . 10448) (EXAMINEFILES 10450 . 11932) (TEDITDEF 11934 .
14100)))))
STOP

Binary file not shown.

View File

@@ -1,10 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "30-Mar-2023 09:08:48" {WMEDLEY}<lispusers>GITFNS.;469 119763
(FILECREATED " 1-Oct-2023 19:33:26" {WMEDLEY}<lispusers>GITFNS.;489 124166
:EDIT-BY rmk
:CHANGES-TO (FNS GIT-MAKE-PROJECT)
:PREVIOUS-DATE "11-Mar-2023 23:12:35" {WMEDLEY}<lispusers>GITFNS.;468)
:PREVIOUS-DATE " 1-Oct-2023 19:27:42" {WMEDLEY}<lispusers>GITFNS.;488)
(PRETTYCOMPRINT GITFNSCOMS)
@@ -14,7 +16,7 @@
(* ;; "Set up")
(FILES (SYSLOAD FROM LISPUSERS)
COMPAREDIRECTORIES COMPARESOURCES COMPARETEXT PSEUDOHOSTS)
COMPAREDIRECTORIES COMPARESOURCES COMPARETEXT PSEUDOHOSTS UNIXUTILS)
(* ;; "")
@@ -47,6 +49,7 @@
(INITVARS (GIT-MERGE-COMPARES T)
(GIT-CDBROWSER-SEPARATE-DIRECTIONS T))
(COMMANDS gwc bbc prc cob b? cdg cdw)
(FNS PRC-COMMAND)
(* ;; "")
@@ -65,7 +68,7 @@
(FNS GIT-COMMIT GIT-PUSH GIT-PULL GIT-APPROVAL GIT-GET-FILE GIT-FILE-EXISTS?
GIT-REMOTE-UPDATE GIT-REMOTE-ADD GIT-FILE-DATE GIT-FILE-HISTORY GIT-PRINT-FILE-HISTORY
GIT-FETCH)
GIT-FETCH GIT-PR-BRANCHES)
(* ;; "Differences")
@@ -77,8 +80,8 @@
(* ;; "Branches")
(FNS GIT-BRANCH-NUM GIT-CHECKOUT GIT-WHICH-BRANCH GIT-MAKE-BRANCH GIT-BRANCHES
GIT-BRANCH-EXISTS? GIT-PICK-BRANCH GIT-PRC-MENU GIT-PULL-REQUESTS GIT-SHORT-BRANCH-NAME
GIT-LONG-NAME)
GIT-BRANCH-EXISTS? GIT-PICK-BRANCH GIT-BRANCH-MENU GIT-PULL-REQUESTS
GIT-SHORT-BRANCH-NAME GIT-LONG-NAME GIT-PRC-BRANCHES)
(* ;; "My branches")
@@ -98,7 +101,7 @@
(FNS GIT-GET-DIFFERENT-FILES GIT-BRANCHES-COMPARE-DIRECTORIES GIT-WORKING-COMPARE-DIRECTORIES
GIT-COMPARE-WORKTREE GITCDOBJBUTTONFN GIT-CD-LABELFN GIT-CD-MENUFN
GIT-WORKING-COMPARE-FILES GIT-BRANCHES-COMPARE-FILES)
GIT-WORKING-COMPARE-FILES GIT-BRANCHES-COMPARE-FILES GIT-PR-COMPARE)
(INITVARS (FROMGITN 0))
(* ;; "")
@@ -106,8 +109,8 @@
(* ;; "Utilities")
(FNS CDGITDIR GIT-COMMAND GITORIGIN GIT-INITIALS GIT-COMMAND-TO-FILE PROCESS-COMMAND
GIT-RESULT-TO-LINES STRIPLOCAL)
(FNS CDGITDIR GIT-COMMAND GITORIGIN GIT-INITIALS GIT-COMMAND-TO-FILE GIT-RESULT-TO-LINES
STRIPLOCAL)
(PROPS (GITFNS FILETYPE))))
@@ -116,7 +119,7 @@
(FILESLOAD (SYSLOAD FROM LISPUSERS)
COMPAREDIRECTORIES COMPARESOURCES COMPARETEXT PSEUDOHOSTS)
COMPAREDIRECTORIES COMPARESOURCES COMPARETEXT PSEUDOHOSTS UNIXUTILS)
@@ -130,15 +133,15 @@
(DEFINEQ
(GIT-CLONEP
[LAMBDA (HOST/DIR NOERROR CHECKANCESTORS) (* ; "Edited 12-May-2022 11:44 by rmk")
[LAMBDA (HOST/DIR NOERROR CHECKANCESTORS) (* ; "Edited 1-Oct-2023 18:09 by rmk")
(* ; "Edited 12-May-2022 11:44 by rmk")
(* ; "Edited 8-May-2022 16:24 by rmk")
(* ;; "If CHECKANCESTORS, looks back up the directory chain to see if perhaps the .git is somewhere higher up.")
(IF [AND HOST/DIR (LET ((D (SLASHIT (TRUEFILENAME (PACKFILENAME.STRING 'BODY HOST/DIR
(IF [AND HOST/DIR (LET [(D (SLASHIT (TRUEFILENAME (PACKFILENAME.STRING 'BODY HOST/DIR
'HOST
'DSK))
T)))
'DSK]
(IF (DIRECTORYNAMEP (CONCAT D "/.git/"))
THEN D
ELSEIF (AND CHECKANCESTORS (FIND-ANCESTOR-DIRECTORY
@@ -164,6 +167,7 @@
(GIT-MAKE-PROJECT
[LAMBDA (PROJECTNAME CLONEPATH WORKINGPATH EXCLUSIONS DEFAULTSUBDIRS)
(* ; "Edited 1-Oct-2023 19:33 by rmk")
(* ; "Edited 30-Mar-2023 09:06 by rmk")
(* ; "Edited 5-Feb-2023 12:43 by rmk")
(* ; "Edited 1-Feb-2023 16:55 by rmk")
@@ -205,7 +209,7 @@
(GIT-CLONEP (MEDLEYDIR (L-CASE PROJECTNAME)
NIL NIL T)
T)
(GIT-CLONEP (MEDLEYDIR (CONCAT "../" PROJECTNAME)
(GIT-CLONEP (MEDLEYDIR (CONCAT "../" (L-CASE PROJECTNAME))
NIL NIL T)
T)
(GIT-CLONEP (DIRECTORYNAME (CONCAT MEDLEYDIR "../git-" (L-CASE
@@ -216,12 +220,11 @@
(ERROR (CONCAT "Can't find a clone directory for " PROJECTNAME))
(PRINTOUT T "Note: Can't find a clone directory for "
PROJECTNAME T)))
elseif (GIT-CLONEP (SLASHIT (PACKFILENAME 'HOST 'DSK 'DIRECTORY
elseif (GIT-CLONEP [SLASHIT (PACKFILENAME 'HOST 'DSK 'DIRECTORY
(UNPACKFILENAME.STRING (TRUEFILENAME
CLONEPATH)
'DIRECTORY
'RETURN))
T)
'RETURN]
T T)
else (ERROR (CONCAT "Can't find the clone directory " CLONEPATH " for "
PROJECTNAME]
@@ -262,7 +265,7 @@
(DIRECTORYNAME (TRUEFILENAME WORKINGPATH)
T)))
[SETQ WORKINGPATH (if WP
then (UNSLASHIT WP T)
then (UNSLASHIT WP)
elseif WORKINGPATH
then (ERROR (CONCAT "Can't find the working directory "
(AND (EQ WORKINGPATH T)
@@ -314,7 +317,8 @@
PROJECT))])
(GIT-PUT-PROJECT-FIELD
[LAMBDA (PROJECT FIELD NEWVALUE) (* ; "Edited 11-Mar-2023 23:00 by rmk")
[LAMBDA (PROJECT FIELD NEWVALUE) (* ; "Edited 10-Jun-2023 21:48 by rmk")
(* ; "Edited 11-Mar-2023 23:00 by rmk")
(* ; "Edited 7-Jul-2022 11:25 by rmk")
(* ; "Edited 13-May-2022 10:40 by rmk")
(* ; "Edited 9-May-2022 20:02 by rmk")
@@ -322,24 +326,17 @@
(* ;; "Replaces the value of a project field with NEWVALUE. The project record is DONTCOPY, to avoid potential name conflicts, so this provides a functional interface. One use: augment EXCLUSIONS with a list of temporary debug and testing files that you don't want to see in the various file listings")
(CL:WHEN (SETQ PROJECT (IF (TYPE? GIT-PROJECT PROJECT)
THEN PROJECT
ELSEIF (CDR (ASSOC (OR (U-CASE PROJECT)
GIT-DEFAULT-PROJECT)
GIT-PROJECTS))
ELSEIF NOERROR
THEN NIL
ELSE (ERROR "NOT A GIT-PROJECT" PROJECT)))
(SELECTQ FIELD
(PROJECTNAME (REPLACE PROJECTNAME OF PROJECT WITH NEWVALUE))
(WHOST (REPLACE WHOST OF PROJECT WITH NEWVALUE))
(GITHOST (REPLACE GITHOST OF PROJECT WITH NEWVALUE))
(EXCLUSIONS (REPLACE EXCLUSIONS OF PROJECT WITH NEWVALUE))
(DEFAULTSUBDIRS
(REPLACE DEFAULTSUBDIRS OF PROJECT WITH NEWVALUE))
(CLONEPATH (REPLACE CLONEPATH OF PROJECT WITH NEWVALUE))
(MAINBRANCH (REPLACE MAINBRANCH OF PROJECT WITH NEWVALUE))
PROJECT))])
(SETQ PROJECT (GIT-GET-PROJECT PROJECT))
(SELECTQ FIELD
(PROJECTNAME (REPLACE PROJECTNAME OF PROJECT WITH NEWVALUE))
(WHOST (REPLACE WHOST OF PROJECT WITH NEWVALUE))
(GITHOST (REPLACE GITHOST OF PROJECT WITH NEWVALUE))
(EXCLUSIONS (REPLACE EXCLUSIONS OF PROJECT WITH NEWVALUE))
(DEFAULTSUBDIRS
(REPLACE DEFAULTSUBDIRS OF PROJECT WITH NEWVALUE))
(CLONEPATH (REPLACE CLONEPATH OF PROJECT WITH NEWVALUE))
(MAINBRANCH (REPLACE MAINBRANCH OF PROJECT WITH NEWVALUE))
PROJECT])
(GIT-PROJECT-PATH
[LAMBDA (PROJECTNAME PROJECTPATH) (* ; "Edited 8-May-2022 15:10 by rmk")
@@ -478,29 +475,7 @@
(* ;; "Compares REMOTEBRANCH against the main orign branch, for pull-request assessment")
(LET ((RB REMOTEBRANCH)
(DR DRAFTS)
(PRS))
(IF PROJECT
THEN (SETQ PROJECT (GIT-GET-PROJECT PROJECT))
ELSEIF (GIT-GET-PROJECT RB NIL T)
THEN (SETQ PROJECT RB)
(SETQ RB NIL)
ELSEIF (GIT-GET-PROJECT DRAFTS NIL T)
THEN (SETQ PROJECT DRAFTS)
(SETQ DRFTS NIL))
(CL:WHEN (MEMB (U-CASE RB)
'(DRAFT DRAFTS))
(SETQ RB NIL)
(SETQ DR T))
(GIT-FETCH PROJECT)
(SETQ PRS (GIT-PULL-REQUESTS T DR PROJECT))
(IF PRS
THEN (CL:WHEN (OR RB (SETQ RB (GIT-PICK-BRANCH (GIT-PRC-MENU DR PROJECT PRS)
"Pull requests")))
(GIT-BRANCHES-COMPARE-DIRECTORIES (GIT-MAINBRANCH PROJECT)
RB NIL PROJECT))
ELSE "No open pull requests")))
(PRC-COMMAND REMOTEBRANCH DRAFTS PROJECT))
(DEFCOMMAND cob (BRANCH NEXTTITLESTRING PROJECT)
@@ -553,6 +528,46 @@
(SLASHIT (/CNDIR (CONCAT (GIT-GET-PROJECT PROJECT 'WHOST)
(OR SUBDIR "")))
T))
(DEFINEQ
(PRC-COMMAND
[LAMBDA (REMOTEBRANCH DRAFTS PROJECT) (* ; "Edited 28-Jul-2023 09:03 by rmk")
(LET (PRS PRMENU)
(IF PROJECT
THEN (SETQ PROJECT (GIT-GET-PROJECT PROJECT))
ELSEIF (GIT-GET-PROJECT REMOTEBRANCH NIL T)
THEN (SETQ PROJECT REMOTEBRANCH)
(SETQ REMOTEBRANCH NIL)
ELSEIF (GIT-GET-PROJECT DRAFTS NIL T)
THEN (SETQ PROJECT DRAFTS)
(SETQ DRAFTS NIL))
(CL:WHEN (MEMB (U-CASE REMOTEBRANCH)
'(DRAFT DRAFTS))
(SETQ REMOTEBRANCH NIL)
(SETQ DRAFTS T))
(GIT-FETCH PROJECT)
(SETQ PRS (GIT-PULL-REQUESTS T DRAFTS PROJECT))
(CL:WHEN (AND REMOTEBRANCH (NEQ REMOTEBRANCH 'PinMenu))
(for PR in PRS when (OR (STRPOS REMOTEBRANCH (fetch PRDESCRIPTION of PR)
NIL NIL NIL NIL FILEDIRCASEARRAY)
(STRPOS REMOTEBRANCH (fetch PRNAME of PR)
NIL NIL NIL NIL FILEDIRCASEARRAY)) collect PR
finally (CL:WHEN $$VAL (SETQ PRS $$VAL))
(SETQ REMOTEBRANCH NIL)))
(IF PRS
THEN (CL:UNLESS REMOTEBRANCH
(SETQ PRS (GIT-PRC-BRANCHES DRAFTS PROJECT PRS))
(SETQ PRMENU (GIT-BRANCH-MENU PRS (CONCAT (LENGTH PRS)
" pull requests")
NIL))
(SETQ REMOTEBRANCH (MENU PRMENU)))
(if (EQ 'PinMenu REMOTEBRANCH)
then (ADDMENU (GIT-BRANCH-MENU PRS (CONCAT (LENGTH PRS)
" pull requests")))
elseif REMOTEBRANCH
then (GIT-PR-COMPARE REMOTEBRANCH PROJECT))
ELSE "No open pull requests"])
)
@@ -1004,6 +1019,35 @@
(GIT-FETCH
[LAMBDA (PROJECT) (* ; "Edited 8-Jul-2022 10:32 by rmk")
(GIT-COMMAND "git fetch" T NIL PROJECT])
(GIT-PR-BRANCHES
[LAMBDA (DRAFT PROJECT PRS) (* ; "Edited 8-Aug-2022 18:15 by rmk")
(* ; "Edited 4-Aug-2022 18:55 by rmk")
(* ; "Edited 9-Jul-2022 19:01 by rmk")
(* ; "Edited 16-May-2022 19:44 by rmk")
(CL:UNLESS PRS
(SETQ PRS (GIT-PULL-REQUESTS T DRAFT PROJECT)))
(CL:WHEN PRS
(LET ((RELATIONS (GIT-BRANCH-RELATIONS (FOR PR IN PRS COLLECT (GITORIGIN (CADDR PR)))
NIL T PROJECT)))
(SORT [FOR PR REL LABEL PRNAME (SUPERSETS _ (CAR RELATIONS))
(EQUALS _ (CADR RELATIONS)) IN PRS
COLLECT (SETQ PRNAME (fetch PRNAME of PR))
(SETQ LABEL (CONCAT "#" (fetch (PULLREQUEST PRNUMBER) of PR)
" "
(IF [SETQ REL (CAR (CDR (SASSOC PRNAME SUPERSETS]
THEN (CONCAT PRNAME " > " REL)
ELSEIF [SETQ REL (CAR (CDR (SASSOC PRNAME EQUALS]
THEN (CONCAT PRNAME " = " REL)
ELSE PRNAME)))
(LIST (CL:IF (EQ 'DRAFT (FETCH PRSTATUS OF PR))
(CONCAT LABEL " (draft)")
LABEL)
(GITORIGIN PRNAME)
(CONCAT " " (FETCH PRDESCRIPTION OF PR)
" #"
(FETCH PRNUMBER OF PR]
T)))])
)
@@ -1321,41 +1365,24 @@
THEN (ERROR "Unknown branch" BRANCH])
(GIT-PICK-BRANCH
[LAMBDA (BRANCHES TITLE) (* ; "Edited 18-May-2022 13:44 by rmk")
(CL:WHEN (MKLIST BRANCHES)
(MENU (CREATE MENU
TITLE _ (OR TITLE 'Branches)
ITEMS _ BRANCHES
MENUFONT _ DEFAULTFONT)))])
[LAMBDA (BRANCHES TITLE) (* ; "Edited 6-Jul-2023 22:31 by rmk")
(* ; "Edited 30-Jun-2023 16:58 by rmk")
(* ; "Edited 18-May-2022 13:44 by rmk")
(MENU (GIT-BRANCH-MENU BRANCHES (OR TITLE (CONCAT (LENGTH BRANCHES)
" branches"])
(GIT-PRC-MENU
[LAMBDA (DRAFT PROJECT PRS) (* ; "Edited 8-Aug-2022 18:15 by rmk")
(* ; "Edited 4-Aug-2022 18:55 by rmk")
(* ; "Edited 9-Jul-2022 19:01 by rmk")
(* ; "Edited 16-May-2022 19:44 by rmk")
(CL:UNLESS PRS
(SETQ PRS (GIT-PULL-REQUESTS T DRAFT PROJECT)))
(CL:WHEN PRS
(LET ((RELATIONS (GIT-BRANCH-RELATIONS (FOR PR IN PRS COLLECT (GITORIGIN (CADDR PR)))
NIL T PROJECT)))
(SORT [FOR PR REL LABEL PRNAME (SUPERSETS _ (CAR RELATIONS))
(EQUALS _ (CADR RELATIONS)) IN PRS
COLLECT (SETQ PRNAME (fetch PRNAME of PR))
(SETQ LABEL (CONCAT "#" (fetch (PULLREQUEST PRNUMBER) of PR)
" "
(IF [SETQ REL (CAR (CDR (SASSOC PRNAME SUPERSETS]
THEN (CONCAT PRNAME " > " REL)
ELSEIF [SETQ REL (CAR (CDR (SASSOC PRNAME EQUALS]
THEN (CONCAT PRNAME " = " REL)
ELSE PRNAME)))
(LIST (CL:IF (EQ 'DRAFT (FETCH PRSTATUS OF PR))
(CONCAT LABEL " (draft)")
LABEL)
(GITORIGIN PRNAME)
(CONCAT " " (FETCH PRDESCRIPTION OF PR)
" #"
(FETCH PRNUMBER OF PR]
T)))])
(GIT-BRANCH-MENU
[LAMBDA (BRANCHES TITLE PIN?) (* ; "Edited 6-Jul-2023 22:31 by rmk")
(* ; "Edited 30-Jun-2023 16:58 by rmk")
(* ; "Edited 18-May-2022 13:44 by rmk")
(CL:WHEN (SETQ BRANCHES (MKLIST BRANCHES))
(CL:WHEN PIN?
[SETQ BRANCHES (APPEND BRANCHES '((" Pin menu" 'PinMenu])
(CREATE MENU
TITLE _ (OR TITLE (CONCAT (LENGTH BRANCHES)
" branches"))
ITEMS _ BRANCHES
MENUFONT _ DEFAULTFONT))])
(GIT-PULL-REQUESTS
[LAMBDA (ALLINFO INCLUDEDRAFTS PROJECT) (* ; "Edited 8-Aug-2022 13:12 by rmk")
@@ -1402,6 +1429,35 @@
(* ;; "Allows short-hand reference to branch: rmk40 will return rmk40--xyz")
(FIND B IN (GIT-BRANCHES WHERE PROJECT EXCLUDEMERGED) SUCHTHAT (STRPOS BRANCH B])
(GIT-PRC-BRANCHES
[LAMBDA (DRAFT PROJECT PRS) (* ; "Edited 8-Aug-2022 18:15 by rmk")
(* ; "Edited 4-Aug-2022 18:55 by rmk")
(* ; "Edited 9-Jul-2022 19:01 by rmk")
(* ; "Edited 16-May-2022 19:44 by rmk")
(CL:UNLESS PRS
(SETQ PRS (GIT-PULL-REQUESTS T DRAFT PROJECT)))
(CL:WHEN PRS
(LET ((RELATIONS (GIT-BRANCH-RELATIONS (FOR PR IN PRS COLLECT (GITORIGIN (CADDR PR)))
NIL T PROJECT)))
(SORT [FOR PR REL LABEL PRNAME (SUPERSETS _ (CAR RELATIONS))
(EQUALS _ (CADR RELATIONS)) IN PRS
COLLECT (SETQ PRNAME (fetch PRNAME of PR))
(SETQ LABEL (CONCAT "#" (fetch (PULLREQUEST PRNUMBER) of PR)
" "
(IF [SETQ REL (CAR (CDR (SASSOC PRNAME SUPERSETS]
THEN (CONCAT PRNAME " > " REL)
ELSEIF [SETQ REL (CAR (CDR (SASSOC PRNAME EQUALS]
THEN (CONCAT PRNAME " = " REL)
ELSE PRNAME)))
(LIST (CL:IF (EQ 'DRAFT (FETCH PRSTATUS OF PR))
(CONCAT LABEL " (draft)")
LABEL)
(GITORIGIN PRNAME)
(CONCAT " " (FETCH PRDESCRIPTION OF PR)
" #"
(FETCH PRNUMBER OF PR]
T)))])
)
@@ -1664,7 +1720,9 @@
(LIST DIR1 DIR2 MAPPINGS))])
(GIT-BRANCHES-COMPARE-DIRECTORIES
[LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 12-Sep-2022 14:41 by rmk")
[LAMBDA (BRANCH1 BRANCH2 LOCAL PROJECT) (* ; "Edited 26-Sep-2023 22:40 by rmk")
(* ; "Edited 10-Jun-2023 17:28 by rmk")
(* ; "Edited 12-Sep-2022 14:41 by rmk")
(* ; "Edited 20-Jul-2022 21:18 by rmk")
(* ; "Edited 22-May-2022 22:47 by rmk")
(* ; "Edited 9-May-2022 15:14 by rmk")
@@ -1683,10 +1741,11 @@
(SETQ MAPPINGS (CADDR DIRS))
(IF DIRS
THEN (TERPRI T)
(SETQ CDVALUE (COMPAREDIRECTORIES (CAR DIRS)
[SETQ CDVALUE (COMPAREDIRECTORIES (CAR DIRS)
(CADR DIRS)
'(> < ~= -* *-)
'*>*.*))
'*>*.*
(GIT-GET-PROJECT PROJECT 'EXCLUSIONS]
(* ;; "We know that both sides come from Unix/unversioned, even if they have been copied into versioned FROMGIT, so we make a pass to remove the misleading versions.")
@@ -1733,10 +1792,9 @@
(TERPRI T)
(IF (FETCH (CDVALUE CDENTRIES) OF CDVALUE)
THEN (SETQ LAST-BRANCH-CDVALUE CDVALUE)
(CDBROWSER CDVALUE (CONCAT "Comparing " (L-CASE (FETCH PROJECTNAME
OF PROJECT)
T)
" " SHORT1 " and " SHORT2 " "
(CDBROWSER CDVALUE (CONCAT (L-CASE (FETCH PROJECTNAME OF PROJECT)
T)
" " SHORT1 " vs " SHORT2 " "
(LENGTH (FETCH (CDVALUE CDENTRIES) OF CDVALUE))
" files")
(LIST SHORT1 SHORT2)
@@ -1754,6 +1812,12 @@
(GIT-WORKING-COMPARE-DIRECTORIES
[LAMBDA (SUBDIRS SELECT EXCLUDEDFILES FIXDIRECTORYDATES UPDATE PROJECT)
(* ;; "Edited 26-Sep-2023 22:41 by rmk")
(* ;; "Edited 17-Jun-2023 22:54 by rmk")
(* ;; "Edited 10-Jun-2023 21:32 by rmk")
(* ;; "Edited 20-Jul-2022 21:18 by rmk")
(* ;; "Edited 25-Jun-2022 21:37 by rmk")
@@ -1793,7 +1857,13 @@
(GITSUBDIR SUBDIR T PROJECT)
(OR SELECT '(> < ~= -* *-))
NIL
(FETCH EXCLUSIONS OF PROJECT)
(for E DPOS in (GIT-GET-PROJECT PROJECT 'EXCLUSIONS)
collect (SETQ DPOS (STRPOS SUBDIR (FILENAMEFIELD E
'DIRECTORY)
1 NIL T T FILEDIRCASEARRAY))
(CL:IF DPOS
(SUBSTRING E (ADD1 DPOS))
E))
NIL NIL NIL FIXDIRECTORYDATES))
[FOR CDE IN (FETCH CDENTRIES OF CDVAL)
DO (CL:WHEN (FETCH INFO1 OF CDE)
@@ -1812,9 +1882,8 @@
(SETQ $$VAL (CDMERGE $$VAL))
[SETQ SUBDIRS (CONCATLIST (FOR SUBDIR IN SUBDIRS COLLECT (CONCAT SUBDIR " "])
[FOR CDVAL TITLE IN $$VAL AS SUBDIR INSIDE SUBDIRS
DO (SETQ TITLE (CONCAT "Comparing " WPROJ " and " BRANCH2 " " SUBDIR
" " (LENGTH (fetch (CDVALUE CDENTRIES)
of CDVAL))
DO (SETQ TITLE (CONCAT WPROJ " vs. " BRANCH2 " " SUBDIR " "
(LENGTH (fetch (CDVALUE CDENTRIES) of CDVAL))
" files"))
[CDBROWSER CDVAL TITLE `(,WPROJ ,BRANCH2)
`(BRANCH1 ,WPROJ BRANCH2 ,BRANCH2 SUBDIR ,SUBDIR LABELFN
@@ -2067,6 +2136,11 @@
" " FILE)
(CONCAT (GIT-SHORT-BRANCH-NAME BRANCH2)
" " FILE])
(GIT-PR-COMPARE
[LAMBDA (RB PROJECT) (* ; "Edited 6-Jul-2023 22:22 by rmk")
(GIT-BRANCHES-COMPARE-DIRECTORIES (GIT-MAINBRANCH PROJECT)
RB NIL PROJECT])
)
(RPAQ? FROMGITN 0)
@@ -2083,11 +2157,13 @@
(DEFINEQ
(CDGITDIR
[LAMBDA (PROJECT) (* ; "Edited 8-Jul-2022 10:34 by rmk")
[LAMBDA (PROJECT) (* ; "Edited 23-Sep-2023 13:01 by rmk")
(* ; "Edited 8-Jul-2022 10:34 by rmk")
(* ; "Edited 7-Jul-2022 09:36 by rmk")
(* ; "Edited 7-May-2022 22:41 by rmk")
(* ; "Edited 2-Nov-2021 21:12 by rmk:")
(CONCAT "cd " [SLASHIT (STRIPHOST (TRUEFILENAME (FETCH GITHOST OF PROJECT]
(CONCAT "cd " (SLASHIT (TRUEFILENAME (FETCH GITHOST OF PROJECT))
NIL T)
" && "])
(GIT-COMMAND
@@ -2198,16 +2274,6 @@
(ERROR (CONCAT "Command failed: " CMD)))
NIL])
(PROCESS-COMMAND
[LAMBDA (CMD) (* ; "Edited 17-Jul-2022 08:17 by rmk")
(* ;; "This sets up an asynchronous process and waits until it returns with an exit code. Typically 0 means success.")
(CL:WITH-OPEN-STREAM (PS (CREATE-PROCESS-STREAM CMD))
(BIND CODE WHILE (EQ T (SETQ CODE (OR (SUBRCALL UNIX-HANDLECOMM 7 (fetch (STREAM F1)
of PS))
0))) DO (BLOCK) FINALLY (RETURN CODE])
(GIT-RESULT-TO-LINES
[LAMBDA (FILE ALL) (* ; "Edited 16-Jul-2022 22:21 by rmk")
@@ -2234,32 +2300,33 @@
(PUTPROPS GITFNS FILETYPE :TCOMPL)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (3979 20805 (GIT-CLONEP 3989 . 5252) (GIT-INIT 5254 . 5884) (GIT-MAKE-PROJECT 5886 .
13487) (GIT-GET-PROJECT 13489 . 15414) (GIT-PUT-PROJECT-FIELD 15416 . 17433) (GIT-PROJECT-PATH 17435
. 18479) (FIND-ANCESTOR-DIRECTORY 18481 . 18830) (GIT-FIND-CLONE 18832 . 19913) (GIT-MAINBRANCH 19915
. 20310) (GIT-MAINBRANCH? 20312 . 20803)) (27232 30020 (ALLSUBDIRS 27242 . 28528) (MEDLEYSUBDIRS
28530 . 29223) (GITSUBDIRS 29225 . 30018)) (30021 34811 (TOGIT 30031 . 31437) (FROMGIT 31439 . 32420)
(GIT-DELETE-FILE 32422 . 33268) (MYMEDLEY-DELETE-FILES 33270 . 34809)) (34812 37815 (MYMEDLEYSUBDIR
34822 . 35278) (GITSUBDIR 35280 . 35723) (STRIPDIR 35725 . 36096) (STRIPHOST 36098 . 36338) (STRIPNAME
36340 . 37093) (STRIPWHERE 37095 . 37813)) (37816 39718 (GFILE4MFILE 37826 . 38189) (MFILE4GFILE
38191 . 38760) (GIT-REPO-FILENAME 38762 . 39716)) (39767 49589 (GIT-COMMIT 39777 . 40603) (GIT-PUSH
40605 . 41249) (GIT-PULL 41251 . 41863) (GIT-APPROVAL 41865 . 42214) (GIT-GET-FILE 42216 . 44181) (
GIT-FILE-EXISTS? 44183 . 44457) (GIT-REMOTE-UPDATE 44459 . 45183) (GIT-REMOTE-ADD 45185 . 45492) (
GIT-FILE-DATE 45494 . 46425) (GIT-FILE-HISTORY 46427 . 48361) (GIT-PRINT-FILE-HISTORY 48363 . 49413) (
GIT-FETCH 49415 . 49587)) (49619 60212 (GIT-BRANCH-DIFF 49629 . 55969) (GIT-COMMIT-DIFFS 55971 . 56524
) (GIT-BRANCH-RELATIONS 56526 . 60210)) (60257 72489 (GIT-BRANCH-NUM 60267 . 60840) (GIT-CHECKOUT
60842 . 61901) (GIT-WHICH-BRANCH 61903 . 62201) (GIT-MAKE-BRANCH 62203 . 64416) (GIT-BRANCHES 64418 .
66686) (GIT-BRANCH-EXISTS? 66688 . 67392) (GIT-PICK-BRANCH 67394 . 67722) (GIT-PRC-MENU 67724 . 69727)
(GIT-PULL-REQUESTS 69729 . 71875) (GIT-SHORT-BRANCH-NAME 71877 . 72168) (GIT-LONG-NAME 72170 . 72487)
) (72519 75854 (GIT-MY-CURRENT-BRANCH 72529 . 72899) (GIT-MY-BRANCHP 72901 . 73406) (
GIT-MY-NEXT-BRANCH 73408 . 73902) (GIT-MY-BRANCHES 73904 . 75852)) (75900 79852 (GIT-ADD-WORKTREE
75910 . 77394) (GIT-REMOVE-WORKTREE 77396 . 78326) (GIT-LIST-WORKTREES 78328 . 79132) (WORKTREEDIR
79134 . 79850)) (79900 111109 (GIT-GET-DIFFERENT-FILES 79910 . 86334) (
GIT-BRANCHES-COMPARE-DIRECTORIES 86336 . 92493) (GIT-WORKING-COMPARE-DIRECTORIES 92495 . 97321) (
GIT-COMPARE-WORKTREE 97323 . 101301) (GITCDOBJBUTTONFN 101303 . 105793) (GIT-CD-LABELFN 105795 .
106877) (GIT-CD-MENUFN 106879 . 109319) (GIT-WORKING-COMPARE-FILES 109321 . 109941) (
GIT-BRANCHES-COMPARE-FILES 109943 . 111107)) (111179 119696 (CDGITDIR 111189 . 111749) (GIT-COMMAND
111751 . 113309) (GITORIGIN 113311 . 114008) (GIT-INITIALS 114010 . 114314) (GIT-COMMAND-TO-FILE
114316 . 117805) (PROCESS-COMMAND 117807 . 118420) (GIT-RESULT-TO-LINES 118422 . 119029) (STRIPLOCAL
119031 . 119694)))))
(FILEMAP (NIL (4081 20660 (GIT-CLONEP 4091 . 5419) (GIT-INIT 5421 . 6051) (GIT-MAKE-PROJECT 6053 .
13718) (GIT-GET-PROJECT 13720 . 15645) (GIT-PUT-PROJECT-FIELD 15647 . 17288) (GIT-PROJECT-PATH 17290
. 18334) (FIND-ANCESTOR-DIRECTORY 18336 . 18685) (GIT-FIND-CLONE 18687 . 19768) (GIT-MAINBRANCH 19770
. 20165) (GIT-MAINBRANCH? 20167 . 20658)) (26068 28195 (PRC-COMMAND 26078 . 28193)) (28251 31039 (
ALLSUBDIRS 28261 . 29547) (MEDLEYSUBDIRS 29549 . 30242) (GITSUBDIRS 30244 . 31037)) (31040 35830 (
TOGIT 31050 . 32456) (FROMGIT 32458 . 33439) (GIT-DELETE-FILE 33441 . 34287) (MYMEDLEY-DELETE-FILES
34289 . 35828)) (35831 38834 (MYMEDLEYSUBDIR 35841 . 36297) (GITSUBDIR 36299 . 36742) (STRIPDIR 36744
. 37115) (STRIPHOST 37117 . 37357) (STRIPNAME 37359 . 38112) (STRIPWHERE 38114 . 38832)) (38835 40737
(GFILE4MFILE 38845 . 39208) (MFILE4GFILE 39210 . 39779) (GIT-REPO-FILENAME 39781 . 40735)) (40786
52616 (GIT-COMMIT 40796 . 41622) (GIT-PUSH 41624 . 42268) (GIT-PULL 42270 . 42882) (GIT-APPROVAL 42884
. 43233) (GIT-GET-FILE 43235 . 45200) (GIT-FILE-EXISTS? 45202 . 45476) (GIT-REMOTE-UPDATE 45478 .
46202) (GIT-REMOTE-ADD 46204 . 46511) (GIT-FILE-DATE 46513 . 47444) (GIT-FILE-HISTORY 47446 . 49380) (
GIT-PRINT-FILE-HISTORY 49382 . 50432) (GIT-FETCH 50434 . 50606) (GIT-PR-BRANCHES 50608 . 52614)) (
52646 63239 (GIT-BRANCH-DIFF 52656 . 58996) (GIT-COMMIT-DIFFS 58998 . 59551) (GIT-BRANCH-RELATIONS
59553 . 63237)) (63284 76387 (GIT-BRANCH-NUM 63294 . 63867) (GIT-CHECKOUT 63869 . 64928) (
GIT-WHICH-BRANCH 64930 . 65228) (GIT-MAKE-BRANCH 65230 . 67443) (GIT-BRANCHES 67445 . 69713) (
GIT-BRANCH-EXISTS? 69715 . 70419) (GIT-PICK-BRANCH 70421 . 70911) (GIT-BRANCH-MENU 70913 . 71616) (
GIT-PULL-REQUESTS 71618 . 73764) (GIT-SHORT-BRANCH-NAME 73766 . 74057) (GIT-LONG-NAME 74059 . 74376) (
GIT-PRC-BRANCHES 74378 . 76385)) (76417 79752 (GIT-MY-CURRENT-BRANCH 76427 . 76797) (GIT-MY-BRANCHP
76799 . 77304) (GIT-MY-NEXT-BRANCH 77306 . 77800) (GIT-MY-BRANCHES 77802 . 79750)) (79798 83750 (
GIT-ADD-WORKTREE 79808 . 81292) (GIT-REMOVE-WORKTREE 81294 . 82224) (GIT-LIST-WORKTREES 82226 . 83030)
(WORKTREEDIR 83032 . 83748)) (83798 116000 (GIT-GET-DIFFERENT-FILES 83808 . 90232) (
GIT-BRANCHES-COMPARE-DIRECTORIES 90234 . 96585) (GIT-WORKING-COMPARE-DIRECTORIES 96587 . 101983) (
GIT-COMPARE-WORKTREE 101985 . 105963) (GITCDOBJBUTTONFN 105965 . 110455) (GIT-CD-LABELFN 110457 .
111539) (GIT-CD-MENUFN 111541 . 113981) (GIT-WORKING-COMPARE-FILES 113983 . 114603) (
GIT-BRANCHES-COMPARE-FILES 114605 . 115769) (GIT-PR-COMPARE 115771 . 115998)) (116070 124099 (CDGITDIR
116080 . 116767) (GIT-COMMAND 116769 . 118327) (GITORIGIN 118329 . 119026) (GIT-INITIALS 119028 .
119332) (GIT-COMMAND-TO-FILE 119334 . 122823) (GIT-RESULT-TO-LINES 122825 . 123432) (STRIPLOCAL 123434
. 124097)))))
STOP

Binary file not shown.

View File

@@ -15,7 +15,7 @@ where
CLONEPATH specifies the local path to the clone
e.g. {dsk}<users>...>git-medley
WORKINGPATH is optionally the local path to a corresponding Medley-residential working directory (e.g. {dsk}<users>...>working-medley>)
When the project has a working path:
When the project has a WORKINGPATH:
EXCLUSIONS is a list of files and directories to be excluded from comparisons (including what its .gitignore specifies)
DEFAULTSUBDIRS is a list of subdirectories to be use in working-path comparisons when directories are not otherwise specified.
For convenience, if CLONEPATH is NIL or T (and not a path), then a sequence of probes based on PROJECTNAME attempts to find a clone directory (with a .git subdirectory):
@@ -76,73 +76,13 @@ In addition to the commands for comparing and viewing files, the menu for this b
If the master/main branch is the current branch then the menu has no commands to change the clone directory. The browser will show those files that have been updated from a recent merge, and they can individually be copied from the git branch to realign the two source trees with incremented Medley version numbers. If the comparison is with a different branch, say the user's current staging branch, copying files from the working Medley to the git clone or deleting git files will set git up for future commits.
Note that the menu item for deleting Medley files will cause all versions to be removed, not just the latest one, to avoid the possibility that an earlier one is revealed. Deletion for Medley files is also accomplished by renaming to a {Wprojectname}<deleted> subdirectory so that they can be recovered if a deletion is in error. Files in the git-clone are removed from the file system immediately, since git provides its own recovery mechanism for those files.
GITFNS does not (yet?) include functions for commits, pushes, or merge for updating the remote repository. Those have to be done outside of Medley through the usual github interfaces, as guided by the information provided by the comparisons.
(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))).È.È4 ÈÈ4 ÈÈ4ÈÈ4ÈÈ4ÈÈ4ÈÈ4È È4ÈÈ.È.ŠŠ8.ŠŠ8JÈÈ PAGEHEADING RUNNINGHEADTERMINAL
MODERN
TIMESROMAN$TERMINALMODERN
MODERN MODERN
MODERN
 HRULE.GETFNMODERN
  HRULE.GETFNMODERN
  HRULE.GETFNMODERN
   HRULE.GETFNMODERN   HRULE.GETFNMODERN  
1

R
Íé

;
¹@,

 "  &  \ 
X
 p  6 ,
 
)
 
) 
+      5     
@ &  
I 7
 o
 E .
8 > I


Y  

$
; 
}
(
) 9
!
0
4  c
 
5  vB 
1OLJ
''

œ
)2
+
 

    Z !  œ
5H

5
5
>$N ! M
§A
@
4

@Ô
â   k 6.  R   < 9  
'
Y" ( ? F 
<00>

ìË
ò1Sýzº
(LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC)) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))1$4È$È4È $È1È$4 È$È4 È$È4È$È4È$È4È$È4È$È1È$1ŠŠ8$1ŠŠ8$JÈ$È PAGEHEADING RUNNINGHEAD1È$ TERMINAL_Q(DEFAULTFONT 1 (TERMINAL 12) (TERMINAL 8) (TERMINAL 8) (POSTSCRIPT (TERMINAL 8))) MODERN
TERMINAL
MODERNMODERN
MODERN 
TIMESROMAN$MODERN
 HRULE.GETFN  HRULE.GETFN  HRULE.GETFN   HRULE.GETFN  HRULE.GETFN 1R Íé;¹@
, "  &  \ 
X
 p 6 , ) ) +      5     @ &  I 7  o E .8 > I Y  $; }() 9!04  c  5  vB 1OLJ''œ)2+     Z !  œ5H 55>$N ! M §A@4
@Ôâ   k 6.  R   < 9  'Y"(? F <00>ìËò1Rþzº

View File

@@ -1,16 +1,15 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "15-Sep-2022 23:39:36" {DSK}<home>matt>medley>LISPUSERS>MANAGER.;2 111145
(FILECREATED "13-Oct-2023 16:41:52" {LU}MANAGER.;3 112648
:EDIT-BY "mth"
:CHANGES-TO (FNS Manager.DO.COMMAND)
(VARS MANAGERCOMS MANAGER-FILE-OPERATIONS-COMMANDS)
:PREVIOUS-DATE "10-Feb-2022 22:17:51" {DSK}<home>matt>medley>LISPUSERS>MANAGER.;1)
:PREVIOUS-DATE "10-Oct-2023 11:27:25" {LU}MANAGER.;1)
(* ; "
Copyright (c) 1986-1987, 1900, 2022 by Xerox Corporation.
")
(PRETTYCOMPRINT MANAGERCOMS)
(RPAQQ MANAGERCOMS
@@ -52,11 +51,12 @@ Copyright (c) 1986-1987, 1900, 2022 by Xerox Corporation.
(* ;; "")
(SPECVARS Manager.ACTIVEFLG MANAGER-CASES MANAGER-ADDTOFILES?)
(GLOBALVARS LAMBDAFONT DEFAULTFONT MENUFONT BOLDMENUFONT MANAGER-WINDOWS LOADBFLG SAVEDBFLG
(GLOBALVARS LAMBDAFONT DEFAULTFONT MENUFONT BOLDMENUFONT MANAGER-WINDOWS LOADDBFLG SAVEDBFLG
MANAGER-ITEM-OPERATION-COMMANDS MANAGER-ITEM-FILE-RELATION-COMMANDS
MANAGER-FILE-OPERATIONS-COMMANDS MANAGER-FILE-FILE-RELATION-COMMANDS
MANAGER-MAIN-MENU-ITEMS MANAGER-ACTIVITY-WINDOW-TITLE BackgroundMenuCommands
BackgroundMenu)
MANAGER-MAIN-MENU-ITEMS MANAGER-ACTIVITY-WINDOW-TITLE MANAGER-MAIN-WINDOW
MANAGER-MAIN-ICONW Manager.WINDOW-ANCHOR MANAGER.BM MANAGER.BM.MASK
BackgroundMenuCommands BackgroundMenu)
(VARS *UNMANAGED-TYPES* MANAGER-ACTIVITY-WINDOW-TITLE (MANAGER-CASES)
(MANAGER-ADDTOFILES?)
MANAGER-FILE-FILE-RELATION-COMMANDS MANAGER-FILE-OPERATIONS-COMMANDS
@@ -64,28 +64,33 @@ Copyright (c) 1986-1987, 1900, 2022 by Xerox Corporation.
MANAGER-MAIN-MENU-ITEMS MANAGER.BM MANAGER.BM.MASK)
(INITVARS (Manager.ACTIVEFLG NIL)
(Manager.SORTFILELSTFLG T)
(Manager.WINDOW-ANCHOR 'ANCHOR-BL)
(Manager.MENUROWS 20)
(Manager.DATASPACE NIL)
(MANAGER-WINDOWS NIL)
(MANAGER-MAIN-WINDOW NIL)
(MANAGER-MAIN-ICONW (ICONW MANAGER.BM MANAGER.BM.MASK
(create POSITION XCOORD _ 0 YCOORD _ 0)
T))
(MANAGER-OPEN-WINDOWS NIL)
(MANAGER-FILE-MENU NIL)
(MANAGER-FILELST-MENU NIL)
(MANAGER-FILE-OPERATIONS-MENU NIL)
(MANAGER-FILE-FILE-RELATION-MENU NIL)
(MANAGER-MARKED-SHADE BOLDMENUFONT))
(FILES FILEBROWSER)
(* ; "for SEE command")
(FILES DATABASEFNS FILEBROWSER (FROM LISPUSERS)
COMMON-MAKE)
(* ; "FILEBROWSER for SEE command")
(FNS MANAGER MANAGER.RESET Manager.ADDADV Manager.ADDTOFILES? Manager.ALTERMARKING
Manager.DO.COMMAND Manager.HIGHLIGHT Manager.PROMPT Manager.WINDOW
Manager.insurefilehighlights Manager.CHANGED? Manager.CHECKFILE Manager.COLLECTCOMS
Manager.COMS.WSF Manager.COMSOPEN Manager.COMSUPDATE Manager.HIGHLIGHTED
Manager.INSUREHIGHLIGHTS Manager.FILECHANGES Manager.FILELSTCHANGED?
Manager.ANCHORED-SET-POSITION Manager.DO.COMMAND Manager.HIGHLIGHT Manager.PROMPT
Manager.WINDOW Manager.insurefilehighlights Manager.CHANGED? Manager.CHECKFILE
Manager.COLLECTCOMS Manager.COMS.WSF Manager.COMSOPEN Manager.COMSUPDATE
Manager.HIGHLIGHTED Manager.INSUREHIGHLIGHTS Manager.FILECHANGES Manager.FILELSTCHANGED?
Manager.FILESUBTYPES Manager.GET.ENVIRONMENT Manager.GETFILE Manager.INTITLE?
Manager.MAIN.WSF Manager.MAINCLOSE Manager.MAINMENUITEMS Manager.MAINOPEN
Manager.MAINUPDATE Manager.MAKEFILE.ADV Manager.MENUCOLUMNS Manager.MENUHASITEM
Manager.MENUITEMS Manager.REMOVE.DUPLICATE.ADVICE Manager.RESETSUBITEMS
Manager.SORT.COMS Manager.SORTBYCOLUMN)
Manager.SET-ANCHOR Manager.SORT.COMS Manager.SORTBYCOLUMN)
(ADVISE ADDFILE ADDTOFILES? MAKEFILE MARKASCHANGED UNMARKASCHANGED UPDATEFILES ADDTOCOMS
DELFROMCOMS \ADDTOFILEBLOCK/ADDNEWCOM LOAD LOADFNS (MARKASCHANGED :IN
DEFAULT.EDITDEFA0001))
@@ -181,10 +186,11 @@ Copyright (c) 1986-1987, 1900, 2022 by Xerox Corporation.
)
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS LAMBDAFONT DEFAULTFONT MENUFONT BOLDMENUFONT MANAGER-WINDOWS LOADBFLG SAVEDBFLG
(GLOBALVARS LAMBDAFONT DEFAULTFONT MENUFONT BOLDMENUFONT MANAGER-WINDOWS LOADDBFLG SAVEDBFLG
MANAGER-ITEM-OPERATION-COMMANDS MANAGER-ITEM-FILE-RELATION-COMMANDS
MANAGER-FILE-OPERATIONS-COMMANDS MANAGER-FILE-FILE-RELATION-COMMANDS MANAGER-MAIN-MENU-ITEMS
MANAGER-ACTIVITY-WINDOW-TITLE BackgroundMenuCommands BackgroundMenu)
MANAGER-ACTIVITY-WINDOW-TITLE MANAGER-MAIN-WINDOW MANAGER-MAIN-ICONW Manager.WINDOW-ANCHOR
MANAGER.BM MANAGER.BM.MASK BackgroundMenuCommands BackgroundMenu)
)
(RPAQQ *UNMANAGED-TYPES* (EXPRESSIONS FILES FIELDS FILEVARS-ARE-NOW-OK))
@@ -368,6 +374,12 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
("Edit FILELST" 'EDIT
"Edit the variable which lists the files noticed by the file package")))
("Advice" 'SHOWADVICE "Display the list of advised or traced fns and functions.")
("Set Window Anchor" 'ANCHOR-BL
"Set the anchor corner for window growth to Bottom Left (default)"
(SUBITEMS (" Top Left " 'ANCHOR-TL "Set the anchor corner to Top Left")
(" Top Right " 'ANCHOR-TR "Set the anchor corner to Top Right")
(" Bottom Left " 'ANCHOR-BL "Set the anchor corner to Bottom Left")
(" Bottom Right " 'ANCHOR-BR "Set the anchor corner to Bottom Right")))
("Quit" 'QUIT "Shut down all manager windows" (SUBITEMS ("Quit" 'QUIT
"Shut down all manager windows"
)
@@ -385,6 +397,8 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(RPAQ? Manager.SORTFILELSTFLG T)
(RPAQ? Manager.WINDOW-ANCHOR 'ANCHOR-BL)
(RPAQ? Manager.MENUROWS 20)
(RPAQ? Manager.DATASPACE NIL)
@@ -393,6 +407,9 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(RPAQ? MANAGER-MAIN-WINDOW NIL)
(RPAQ? MANAGER-MAIN-ICONW (ICONW MANAGER.BM MANAGER.BM.MASK (create POSITION XCOORD _ 0 YCOORD _ 0)
T))
(RPAQ? MANAGER-OPEN-WINDOWS NIL)
(RPAQ? MANAGER-FILE-MENU NIL)
@@ -405,11 +422,12 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(RPAQ? MANAGER-MARKED-SHADE BOLDMENUFONT)
(FILESLOAD FILEBROWSER)
(FILESLOAD DATABASEFNS FILEBROWSER (FROM LISPUSERS)
COMMON-MAKE)
(* ; "for SEE command")
(* ; "FILEBROWSER for SEE command")
(DEFINEQ
@@ -522,11 +540,30 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(Manager.HIGHLIGHT ITEM MENU MARKING?))) finally (Manager.MAINUPDATE
UPDATEFILES])
(Manager.ANCHORED-SET-POSITION
[LAMBDA (IW IH) (* ; "Edited 10-Oct-2023 11:22 by mth")
(LET (WREGION XPOS YPOS TEMP)
(SETQ WREGION (WINDOWPROP MANAGER-MAIN-WINDOW 'REGION))
(SETQ YPOS (fetch (REGION BOTTOM) of WREGION))
(if (FMEMB Manager.WINDOW-ANCHOR '(ANCHOR-TL ANCHOR-TR))
then (SETQ YPOS (- (+ YPOS (fetch (REGION HEIGHT) of WREGION))
IH)))
(SETQ TEMP (+ YPOS IH))
(if (>= TEMP SCREENHEIGHT)
then (SETQ YPOS (- SCREENHEIGHT 1)))
(SETQ XPOS (fetch (REGION LEFT) of WREGION))
(if (FMEMB Manager.WINDOW-ANCHOR '(ANCHOR-TR ANCHOR-BR))
then (SETQ XPOS (- (+ XPOS (fetch (REGION WIDTH) of WREGION))
IW)))
(SETQ TEMP (+ XPOS IW))
(if (>= TEMP SCREENWIDTH)
then (SETQ XPOS (- SCREENWIDTH 1)))
(create POSITION
XCOORD _ XPOS
YCOORD _ YPOS])
(Manager.DO.COMMAND
[LAMBDA (COMMAND ITEM COMSTYPE FILE MENU) (* ; "Edited 15-Sep-2022 23:35 by Matt Heffron")
(* ; "Edited 15-Sep-2022 23:32 by Matt Heffron")
(* ; "Edited 15-Sep-2022 23:19 by Matt Heffron")
(* ; "Edited 18-Nov-87 14:30 by raf")
[LAMBDA (COMMAND ITEM COMSTYPE FILE MENU) (* ; "Edited 13-Oct-2023 16:28 by mth")
(if (EQ COMSTYPE 'FILEVARS)
then (SETQ COMSTYPE 'VARS) (* ; "The Manager currently does unnatural things with the FILEVARS type, this is a hack to compensate for it. E.g., editing a FILEVARS = editing the VARS, etc.")
)
@@ -719,15 +756,22 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(Manager.HIGHLIGHT FILE MENU)))
else (* ; "single item")
(UNMARKASCHANGED ITEM COMSTYPE)))
(SEE (FB.FASTSEE.ONEFILE
NIL FILE (LET [(W (CREATEW NIL (CONCAT "Seeing " FILE
"..."]
(DSPSCROLL 'ON W)
(WINDOWPROP W 'PAGEFULLFN
'FB.SEEFULLFN)
(TTYDISPLAYSTREAM W)
W)))
(TEDIT-SEE (TEDIT-SEE FILE))
(SEE (LET ((FULLNAME (OR (CDAR (GETPROP FILE 'FILEDATES))
FILE)))
(* ;;
 "I'm assuming that the CAR of the FILEDATES list is the most recent...")
(FB.FASTSEE.ONEFILE
NIL FULLNAME
(LET [(W (CREATEW NIL (CONCAT "Seeing " FULLNAME
"..."]
(DSPSCROLL 'ON W)
(WINDOWPROP W 'PAGEFULLFN 'FB.SEEFULLFN)
(TTYDISPLAYSTREAM W)
W))))
(TEDIT-SEE (TEDIT-SEE (OR (CDAR (GETPROP FILE 'FILEDATES))
FILE)))
(LOAD
(printout T .FONT LAMBDAFONT "Loading file " FILE "."
.FONT DEFAULTFONT T)
@@ -748,18 +792,20 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
then NIL
else (LIST COMMAND]
(printout T .FONT DEFAULTFONT T)))
(COMMON-MAKEFILE
(FILESLOAD 'COMMON-MAKEFILE)
(if FILE
then (printout T .FONT LAMBDAFONT
"Writing CommonLisp source into " FILE
".LSP" .FONT DEFAULTFONT T)
(PRINT (USER::COMMON-MAKEFILE FILE)
T)
else (CL:FORMAT T
(COMMON-MAKEFILE (if FILE
then (printout T .FONT LAMBDAFONT
"Writing CommonLisp source into "
FILE ".LSP" .FONT
DEFAULTFONT T)
(PRINT (COMMON-MAKEFILE FILE)
T)
else (CL:FORMAT T
"~&CommonLispify must be selected separately for each file"
)))
)))
((LIST HARDCOPY) (LISTFILES1 FILE))
((ANCHOR-TL ANCHOR-TR ANCHOR-BL ANCHOR-BR) (
 Manager.SET-ANCHOR
COMMAND))
(CLEANUP
(printout T .FONT LAMBDAFONT "Cleanup..." .FONT
DEFAULTFONT T)
@@ -821,68 +867,42 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(* ;; "DATABASEFNS stuff")
(DB
(FILESLOAD 'DATABASEFNS)
(CL:FORMAT T
(DB (CL:FORMAT T
"~&Global DataBaseFNS Flags:~%%SAVEDBFLG = ~a, LOADDBFLG = ~a"
SAVEDBFLG LOADBFLG))
SAVEDBFLG LOADDBFLG))
(DBFILE
(FILESLOAD 'DATABASEFNS)
(CL:FORMAT T "~&The DATABASE prop for ~a is: ~a" FILE
(GETPROP FILE 'DATABASE))
(CL:FORMAT T
"~&Global DataBaseFNS Flags:~%%SAVEDBFLG = ~a, LOADDBFLG = ~a"
SAVEDBFLG LOADBFLG))
SAVEDBFLG LOADDBFLG))
(DBON
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'ON)
(SETQ LOADDBFLG 'ON)
(SETQ SAVEDBFLG 'ON))
(DBOFF
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'OFF)
(SETQ SAVEDBFLG 'OFF))
(SETQ LOADDBFLG 'NO)
(SETQ SAVEDBFLG 'NO))
(DBASK
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'ASK)
(SETQ LOADDBFLG 'ASK)
(SETQ SAVEDBFLG 'ASK))
(DBLOADON
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'ON))
(DBSAVEON
(FILESLOAD 'DATABASEFNS)
(SETQ SAVEDBFLG 'ON))
(DBLOADOFF
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'OFF))
(DBSAVEOFF
(FILESLOAD 'DATABASEFNS)
(SETQ SAVEDBFLG 'OFF))
(DBLOADASK
(FILESLOAD 'DATABASEFNS)
(SETQ LOADBFLG 'ASK))
(DBSAVEASK
(FILESLOAD 'DATABASEFNS)
(SETQ SAVEDBFLG 'ASK))
(DBFILEON
(FILESLOAD 'DATABASEFNS)
(PUTPROP FILE 'DATABASE 'ON))
(DBFILEOFF
(FILESLOAD 'DATABASEFNS)
(PUTPROP FILE 'DATABASE 'OFF))
(DBFILEASK
(FILESLOAD 'DATABASEFNS)
(PUTPROP FILE 'DATABASE 'ASK))
(DBLOADON (SETQ LOADDBFLG 'YES))
(DBSAVEON (SETQ SAVEDBFLG 'YES))
(DBLOADOFF (SETQ LOADDBFLG 'NO))
(DBSAVEOFF (SETQ SAVEDBFLG 'NO))
(DBLOADASK (SETQ LOADDBFLG 'ASK))
(DBSAVEASK (SETQ SAVEDBFLG 'ASK))
(DBFILEON (PUTPROP FILE 'DATABASE 'YES))
(DBFILEOFF (PUTPROP FILE 'DATABASE 'NO))
(DBFILEASK (PUTPROP FILE 'DATABASE 'ASK))
(DUMPDB
(printout T .FONT LAMBDAFONT
"Dumping the Masterscope Database for file " FILE
.FONT DEFAULTFONT T)
(FILESLOAD 'DATABASEFNS)
(DUMPDB FILE))
(LOADDB
(printout T .FONT LAMBDAFONT
"Loading the Masterscope Database for file " FILE
.FONT DEFAULTFONT T)
(FILESLOAD 'DATABASEFNS)
(LOADDB FILE))
(COMPILE
(printout T .FONT LAMBDAFONT "Compiling..." .FONT
@@ -1372,7 +1392,7 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
FILE])
(Manager.MAINOPEN
[LAMBDA (POSITION) (* ; "Edited 17-Aug-87 13:59 by raf")
[LAMBDA (POSITION) (* ; "Edited 10-Oct-2023 11:23 by mth")
(* ;;; "Builds the manager main (FILELST) menu at the indicated position.")
@@ -1387,31 +1407,30 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(ADDMENU MANAGER-FILE-MENU
(SETQ MANAGER-MAIN-WINDOW
(CREATEW (with POSITION
(with MENU MANAGER-FILE-MENU (SETQ IW (MIN (WIDTHIFWINDOW IMAGEWIDTH)
SCREENWIDTH))
(CREATEW (with POSITION (with MENU MANAGER-FILE-MENU (SETQ IW (MIN (WIDTHIFWINDOW
IMAGEWIDTH)
SCREENWIDTH))
(* ;
 "width of file menu. Actually unlikely to be wider than screenwidth (!)")
(SETQ IH (MIN (HEIGHTIFWINDOW IMAGEHEIGHT T)
SCREENHEIGHT))
(SETQ IH (MIN (HEIGHTIFWINDOW IMAGEHEIGHT T)
SCREENHEIGHT))
(* ;
 "height of window; could possibly be higher than screen if lots of files")
(if (POSITIONP POSITION)
then (* ;
(if (POSITIONP POSITION)
then (* ;
 "gave an initial position for the manager file menu")
POSITION
elseif (WINDOWP MANAGER-MAIN-WINDOW)
then (* ;
POSITION
elseif (WINDOWP MANAGER-MAIN-WINDOW)
then (* ;
 "if there was a window, put the new one in the same place (and close the old one)")
(PROG1 (with REGION (WINDOWPROP MANAGER-MAIN-WINDOW
'REGION)
(create POSITION
XCOORD _ LEFT
YCOORD _ BOTTOM))
(CLOSEW MANAGER-MAIN-WINDOW))
else (* ;
(PROG1 (Manager.ANCHORED-SET-POSITION IW IH)
(* ;; "(with REGION (WINDOWPROP MANAGER-MAIN-WINDOW (QUOTE REGION)) (create POSITION XCOORD _ LEFT YCOORD _ BOTTOM))")
(CLOSEW MANAGER-MAIN-WINDOW))
else (* ;
 "let user say where to put the menu")
(GETBOXPOSITION IW IH)))
(GETBOXPOSITION IW IH)))
(create REGION
LEFT _ XCOORD
WIDTH _ IW
@@ -1434,17 +1453,18 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(* ;; "Shrink to the manager icon, and remember to update when the expanding")
[WINDOWPROP MANAGER-MAIN-WINDOW 'ICONFN (FUNCTION (LAMBDA (WIN OICON)
(LET ((IW (if (NULL OICON)
then (ICONW MANAGER.BM
MANAGER.BM.MASK
)
else OICON)))
[WINDOWPROP IW 'EXPANDFN
(FUNCTION (LAMBDA NIL
(
 Manager.MAINUPDATE
NIL]
IW]
(SETQ MANAGER-MAIN-ICONW
(if (NULL OICON)
then (OR MANAGER-MAIN-ICONW
(ICONW MANAGER.BM
MANAGER.BM.MASK))
else OICON))
[WINDOWPROP MANAGER-MAIN-ICONW
'EXPANDFN
(FUNCTION (LAMBDA NIL
(Manager.MAINUPDATE
NIL]
MANAGER-MAIN-ICONW]
(SETQ Manager.ACTIVEFLG T)
(Manager.MAINUPDATE T])
@@ -1545,6 +1565,12 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(CONCAT "Creates a " TYPE
" submenu for the file " FILE])
(Manager.SET-ANCHOR
[LAMBDA (NEWANCHOR) (* ; "Edited 10-Oct-2023 11:24 by mth")
(if (AND (FMEMB NEWANCHOR '(ANCHOR-TL ANCHOR-TR ANCHOR-BL ANCHOR-BR))
(NEQ Manager.WINDOW-ANCHOR NEWANCHOR))
then (SETQ Manager.WINDOW-ANCHOR NEWANCHOR])
(Manager.SORT.COMS
[LAMBDA (A B) (* ; "Edited 18-Nov-87 15:12 by raf")
@@ -1746,20 +1772,21 @@ Will load DataBaseFNS if necessary" (SUBITEMS ("All" 'DB
(ADDTOVAR LAMA )
)
(PUTPROPS MANAGER COPYRIGHT ("Xerox Corporation" 1986 1987 1900 2022))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (24415 101274 (MANAGER 24425 . 25224) (MANAGER.RESET 25226 . 26740) (Manager.ADDADV
26742 . 28095) (Manager.ADDTOFILES? 28097 . 28375) (Manager.ALTERMARKING 28377 . 29987) (
Manager.DO.COMMAND 29989 . 61755) (Manager.HIGHLIGHT 61757 . 62054) (Manager.PROMPT 62056 . 62369) (
Manager.WINDOW 62371 . 63004) (Manager.insurefilehighlights 63006 . 64077) (Manager.CHANGED? 64079 .
64628) (Manager.CHECKFILE 64630 . 65729) (Manager.COLLECTCOMS 65731 . 67169) (Manager.COMS.WSF 67171
. 69841) (Manager.COMSOPEN 69843 . 74581) (Manager.COMSUPDATE 74583 . 75675) (Manager.HIGHLIGHTED
75677 . 75983) (Manager.INSUREHIGHLIGHTS 75985 . 76543) (Manager.FILECHANGES 76545 . 76844) (
Manager.FILELSTCHANGED? 76846 . 77174) (Manager.FILESUBTYPES 77176 . 77814) (Manager.GET.ENVIRONMENT
77816 . 80354) (Manager.GETFILE 80356 . 82670) (Manager.INTITLE? 82672 . 83350) (Manager.MAIN.WSF
83352 . 85996) (Manager.MAINCLOSE 85998 . 87108) (Manager.MAINMENUITEMS 87110 . 88187) (
Manager.MAINOPEN 88189 . 93565) (Manager.MAINUPDATE 93567 . 94203) (Manager.MAKEFILE.ADV 94205 . 95241
) (Manager.MENUCOLUMNS 95243 . 96047) (Manager.MENUHASITEM 96049 . 96406) (Manager.MENUITEMS 96408 .
96653) (Manager.REMOVE.DUPLICATE.ADVICE 96655 . 98261) (Manager.RESETSUBITEMS 98263 . 99500) (
Manager.SORT.COMS 99502 . 100034) (Manager.SORTBYCOLUMN 100036 . 101272)))))
(FILEMAP (NIL (25676 102848 (MANAGER 25686 . 26485) (MANAGER.RESET 26487 . 28001) (Manager.ADDADV
28003 . 29356) (Manager.ADDTOFILES? 29358 . 29636) (Manager.ALTERMARKING 29638 . 31248) (
Manager.ANCHORED-SET-POSITION 31250 . 32353) (Manager.DO.COMMAND 32355 . 62991) (Manager.HIGHLIGHT
62993 . 63290) (Manager.PROMPT 63292 . 63605) (Manager.WINDOW 63607 . 64240) (
Manager.insurefilehighlights 64242 . 65313) (Manager.CHANGED? 65315 . 65864) (Manager.CHECKFILE 65866
. 66965) (Manager.COLLECTCOMS 66967 . 68405) (Manager.COMS.WSF 68407 . 71077) (Manager.COMSOPEN 71079
. 75817) (Manager.COMSUPDATE 75819 . 76911) (Manager.HIGHLIGHTED 76913 . 77219) (
Manager.INSUREHIGHLIGHTS 77221 . 77779) (Manager.FILECHANGES 77781 . 78080) (Manager.FILELSTCHANGED?
78082 . 78410) (Manager.FILESUBTYPES 78412 . 79050) (Manager.GET.ENVIRONMENT 79052 . 81590) (
Manager.GETFILE 81592 . 83906) (Manager.INTITLE? 83908 . 84586) (Manager.MAIN.WSF 84588 . 87232) (
Manager.MAINCLOSE 87234 . 88344) (Manager.MAINMENUITEMS 88346 . 89423) (Manager.MAINOPEN 89425 . 94818
) (Manager.MAINUPDATE 94820 . 95456) (Manager.MAKEFILE.ADV 95458 . 96494) (Manager.MENUCOLUMNS 96496
. 97300) (Manager.MENUHASITEM 97302 . 97659) (Manager.MENUITEMS 97661 . 97906) (
Manager.REMOVE.DUPLICATE.ADVICE 97908 . 99514) (Manager.RESETSUBITEMS 99516 . 100753) (
Manager.SET-ANCHOR 100755 . 101074) (Manager.SORT.COMS 101076 . 101608) (Manager.SORTBYCOLUMN 101610
. 102846)))))
STOP

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED " 7-Oct-2022 21:45:29" 
{DSK}<Users>kaplan>Local>medley3.5>working-medley>lispusers>MODERNIZE.;43 30755
(FILECREATED "29-Oct-2023 10:56:48" {WMEDLEY}<lispusers>MODERNIZE.;48 30909
:CHANGES-TO (FNS MODERNWINDOW)
:EDIT-BY rmk
:PREVIOUS-DATE " 5-Mar-2022 23:20:21"
{DSK}<Users>kaplan>Local>medley3.5>working-medley>lispusers>MODERNIZE.;40)
:CHANGES-TO (FNS NEARESTCORNER)
:PREVIOUS-DATE "29-Jul-2023 10:48:55" {WMEDLEY}<lispusers>MODERNIZE.;47)
(PRETTYCOMPRINT MODERNIZECOMS)
@@ -30,7 +30,7 @@
(* ;; "Add some Meta commands")
(FNS TEDIT.MODERNIZE \MODERNIZED.TEDIT.BUTTONEVENTFN TEDIT.SELECTALL)
(FNS TEDIT.MODERNIZE \MODERNIZED.TEDIT.BUTTONEVENTFN)
(DECLARE%: DONTEVAL@LOAD DOCOPY (P
(* ;; "Tedit")
@@ -325,21 +325,47 @@
(IGREATERP LASTMOUSEX (IPLUS LEFT (TIMES WIDTH (DIFFERENCE 1 TITLEPROPORTION])
(NEARESTCORNER
[LAMBDA (REGION) (* ; "Edited 14-Feb-2021 21:46 by rmk:")
[LAMBDA (REGION) (* ; "Edited 29-Oct-2023 10:56 by rmk")
(* ; "Edited 29-Jul-2023 10:32 by rmk")
(* ; "Edited 14-Feb-2021 21:46 by rmk:")
(* ;;
"Moves the cursor to the corner of REGION that is closest to the current LASTMOUSEX AND LASTMOUSEY")
(* ;; "Moves the cursor to the corner of REGION that is closest to the current LASTMOUSEX and LASTMOUSEY, provided that that corner is on-screen.")
(\CURSORPOSITION (CL:IF (ILESSP (IDIFFERENCE LASTMOUSEX (FETCH LEFT OF REGION))
(IDIFFERENCE (FETCH RIGHT OF REGION)
LASTMOUSEX))
(FETCH LEFT OF REGION)
(FETCH RIGHT OF REGION))
(CL:IF (ILESSP (IDIFFERENCE LASTMOUSEY (FETCH BOTTOM OF REGION))
(IDIFFERENCE (FETCH TOP OF REGION)
LASTMOUSEY))
(FETCH BOTTOM OF REGION)
(FETCH TOP OF REGION))])
(LET ((LEFT (FETCH (REGION LEFT) OF REGION))
(RIGHT (FETCH (REGION RIGHT) OF REGION))
(TOP (FETCH (REGION TOP) OF REGION))
(BOTTOM (FETCH (REGION BOTTOM) OF REGION))
X Y)
(* ;; "If the nearest corner is offscreen, pick the other one.")
(SETQ X (if (OR (ILESSP LEFT 0)
(IGEQ LEFT SCREENWIDTH))
then
(* ;; "LEFT is offscreen")
RIGHT
elseif (ILESSP (IDIFFERENCE LASTMOUSEX LEFT)
(IDIFFERENCE RIGHT LASTMOUSEX))
then
(* ;; "Closer to LEFT")
LEFT
else RIGHT))
(SETQ Y (if (OR (ILESSP TOP 0)
(IGEQ TOP SCREENHEIGHT))
then
(* ;; "TOP is offscreen")
BOTTOM
elseif (ILESSP (IDIFFERENCE LASTMOUSEY BOTTOM)
(IDIFFERENCE TOP LASTMOUSEY))
then
(* ;; "Closer to BOTTOM")
BOTTOM
else TOP))
(\CURSORPOSITION X Y])
(INCORNER.REGION
[LAMBDA (CORNERREGION TOPMARGIN) (* ; "Edited 13-Oct-2021 15:04 by rmk:")
@@ -470,50 +496,25 @@
(DEFINEQ
(TEDIT.MODERNIZE
[LAMBDA NIL (* ; "Edited 11-Oct-2021 15:02 by rmk:")
[LAMBDA NIL (* ; "Edited 14-Jun-2023 16:56 by rmk")
(* ; "Edited 11-Oct-2021 15:02 by rmk:")
(MODERNWINDOW.SETUP (FUNCTION \TEDIT.BUTTONEVENTFN)
(FUNCTION \MODERNIZED.TEDIT.BUTTONEVENTFN))
(CL:WHEN (GETD '\TEDIT.BUTTONEVENTFN)
(* ;; "All")
(TEDIT.SETFUNCTION (CHARCODE "Meta,a")
(FUNCTION TEDIT.SELECTALL)
TEDIT.READTABLE)
(TEDIT.SETFUNCTION (CHARCODE "Meta,A")
(FUNCTION TEDIT.SELECTALL)
TEDIT.READTABLE)
(* ;; "Quit")
(TEDIT.SETFUNCTION (CHARCODE "Meta,q")
(FUNCTION TEDIT.QUIT)
TEDIT.READTABLE)
(TEDIT.SETFUNCTION (CHARCODE "Meta,Q")
(FUNCTION TEDIT.QUIT)
TEDIT.READTABLE))])
(FUNCTION \MODERNIZED.TEDIT.BUTTONEVENTFN])
(\MODERNIZED.TEDIT.BUTTONEVENTFN
[LAMBDA (W STREAM) (* ; "Edited 13-Oct-2021 21:43 by rmk:")
[LAMBDA (W STREAM) (* ; "Edited 29-Jul-2023 10:48 by rmk")
(* ; "Edited 13-Oct-2021 21:43 by rmk:")
(* ;; "If a TEDIT window has been split, we have to make sure that movement happens only for clicks at the top of the main window and at the bottom of the bottom-most split window. Clicks near the split lines must be ignored. Essentially, the %"region%" of the Tedit window is the union of the regions of all of its split-panes.")
(* ;; "We pass the pain that received the click, because that's what the original \TEDIT.BUTTONEVENTFN needs to see, if we decide not to shape or move.")
(* ;; "We pass the pane that received the click, because that's what the original \TEDIT.BUTTONEVENTFN needs to see, if we decide not to shape or move.")
(MODERNWINDOW.BUTTONEVENTFN W (FUNCTION MODERN-ORIG-\TEDIT.BUTTONEVENTFN)
NIL NIL [APPLY (FUNCTION UNIONREGIONS)
(bind PANE _ (CENTRALWINDOW W) collect (WINDOWPROP PANE
'REGION)
(bind PANE _ (CENTRALWINDOW W) collect (WINDOWPROP PANE 'REGION)
repeatwhile (SETQ PANE (WINDOWPROP PANE 'TEDIT-NEXT-PANE-DOWN]
(WINDOWPROP (CENTRALWINDOW W)
'TITLE])
(TEDIT.SELECTALL
[LAMBDA (STREAM TEXTOBJ SEL) (* ; "Edited 3-May-2020 17:29 by rmk:")
(LET [(TEXTSTREAM (TEXTSTREAM (TTY.PROCESS]
(CL:WHEN TEXTSTREAM
(TEDIT.SETSEL TEXTSTREAM 0 (ADD1 (fetch TEXTLEN of (TEXTOBJ TEXTSTREAM)))
'LEFT))])
)
(DECLARE%: DONTEVAL@LOAD DOCOPY
@@ -614,12 +615,11 @@
(ADDTOVAR LAMA MODERN-ADD-EXEC)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (5125 11487 (MODERNWINDOW 5135 . 6675) (MODERNWINDOW.SETUP 6677 . 9626) (UNMODERNWINDOW
9628 . 10022) (MODERNWINDOW.UNSETUP 10024 . 10836) (\MODERNIZED.FREEMENU.BUTTONEVENTFN 10838 . 11485))
(11552 21714 (MODERNWINDOW.BUTTONEVENTFN 11562 . 18589) (NEARTOP 18591 . 19519) (NEARESTCORNER 19521
. 20400) (INCORNER.REGION 20402 . 21712)) (21772 24244 (MODERN-ADD-EXEC 21782 . 22213) (MODERN-SNAPW
22215 . 22758) (TOTOPW.MODERNIZE 22760 . 23188) (MODERN-MENUBUTTONFN 23190 . 24242)) (24245 26674 (
\MODERNIZED.FREEMENU.BUTTONEVENTFN 24255 . 24902) (MODERNIZED.TB.BUTTONEVENTFN 24904 . 26672)) (26715
28994 (TEDIT.MODERNIZE 26725 . 27539) (\MODERNIZED.TEDIT.BUTTONEVENTFN 27541 . 28663) (TEDIT.SELECTALL
28665 . 28992)))))
(FILEMAP (NIL (5048 11410 (MODERNWINDOW 5058 . 6598) (MODERNWINDOW.SETUP 6600 . 9549) (UNMODERNWINDOW
9551 . 9945) (MODERNWINDOW.UNSETUP 9947 . 10759) (\MODERNIZED.FREEMENU.BUTTONEVENTFN 10761 . 11408)) (
11475 22625 (MODERNWINDOW.BUTTONEVENTFN 11485 . 18512) (NEARTOP 18514 . 19442) (NEARESTCORNER 19444 .
21311) (INCORNER.REGION 21313 . 22623)) (22683 25155 (MODERN-ADD-EXEC 22693 . 23124) (MODERN-SNAPW
23126 . 23669) (TOTOPW.MODERNIZE 23671 . 24099) (MODERN-MENUBUTTONFN 24101 . 25153)) (25156 27585 (
\MODERNIZED.FREEMENU.BUTTONEVENTFN 25166 . 25813) (MODERNIZED.TB.BUTTONEVENTFN 25815 . 27583)) (27626
29148 (TEDIT.MODERNIZE 27636 . 27989) (\MODERNIZED.TEDIT.BUTTONEVENTFN 27991 . 29146)))))
STOP

Binary file not shown.

View File

@@ -1,14 +1,13 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Jul-2023 09:17:48" {WMEDLEY}<lispusers>PSEUDOHOSTS.;153 27674
(FILECREATED "22-Sep-2023 15:29:50" {WMEDLEY}<lispusers>PSEUDOHOSTS.;158 26638
:EDIT-BY rmk
:CHANGES-TO (RECORDS PHDEVICE PHGENFILESTATE TARGETDEVICE)
(MACROS PSEUDOHOST.NAME PSEUDOHOST.TARGETVAL)
:CHANGES-TO (FNS PSEUDOHOST SLASHIT CONTRACT.PH)
(VARS PSEUDOHOSTSCOMS)
:PREVIOUS-DATE "18-Jul-2023 13:12:35" {WMEDLEY}<lispusers>PSEUDOHOSTS.;152)
:PREVIOUS-DATE "26-Jul-2023 12:34:37" {WMEDLEY}<lispusers>PSEUDOHOSTS.;155)
(PRETTYCOMPRINT PSEUDOHOSTSCOMS)
@@ -21,7 +20,7 @@
(* ;; "Internals")
(FNS EXPAND.PH CONTRACT.PH SLASHIT UNSLASHIT GETHOSTINFO.PH)
(FNS EXPAND.PH CONTRACT.PH UNSLASHIT GETHOSTINFO.PH)
(FNS OPENFILE.PH GETFILENAME.PH DIRECTORYNAMEP.PH CLOSEFILE.PH REOPENFILE.PH DELETEFILE.PH
OPENP.PH UNREGISTERFILE.PH REGISTERFILE.PH GENERATEFILES.PH GETFILEINFO.PH
SETFILEINFO.PH NEXTFILEFN.PH FILEINFOFN.PH RENAMEFILE.PH)
@@ -42,6 +41,8 @@
(PSEUDOHOST
[LAMBDA (HOST PREFIX)
(* ;; "Edited 22-Sep-2023 15:29 by rmk")
(* ;; "Edited 25-Jun-2022 17:00 by rmk")
(* ;; "Edited 24-Feb-2022 23:56 by rmk: Expand prefix so that it is rooted in a real host and not a previously defined pseudohost.")
@@ -81,7 +82,7 @@
(SELECTQ TARGETHOST
((DSK CORE)
(SETQ PREFIX (UNSLASHIT PREFIX)))
(UNIX (SETQ PREFIX (SLASHIT PREFIX)))
(UNIX (SETQ PREFIX (SLASHIT PREFIX)))
NIL)
(SETQ TARGETDEVICE (OR (\GETDEVICEFROMHOSTNAME TARGETHOST)
(ERROR "UNKNOWN TARGET HOST" TARGETHOST)))
@@ -153,26 +154,32 @@
(FETCH (FDEV DEVICENAME) OF (FETCH (PHDEVICE TARGETDEV) OF (\GETDEVICEFROMNAME HOST))))])
(TRUEFILENAME
[LAMBDA (FILE) (* ; "Edited 26-Jan-2022 23:33 by rmk")
[LAMBDA (FILE) (* ; "Edited 26-Jul-2023 07:53 by rmk")
(* ; "Edited 26-Jan-2022 23:33 by rmk")
(* ; "Edited 25-Jan-2022 08:47 by rmk")
(LET (FILENAME DEVICE)
(IF (STREAMP FILE)
THEN (SETQ FILENAME (FETCH (STREAM FULLFILENAME) OF FILE))
(SETQ DEVICE (FETCH (STREAM DEVICE) OF FILE))
ELSE (SETQ FILENAME (\ADD.CONNECTED.DIR FILE))
(SETQ DEVICE (\GETDEVICEFROMNAME FILENAME)))
(CL:IF (TYPE? PHDEVICE DEVICE)
(EXPAND.PH FILENAME DEVICE)
FILENAME)])
(if (LISTP FILE)
then (for F in FILE collect (TRUEFILENAME F))
else (LET (FILENAME DEVICE)
(IF (STREAMP FILE)
THEN (SETQ FILENAME (FETCH (STREAM FULLFILENAME) OF FILE))
(SETQ DEVICE (FETCH (STREAM DEVICE) OF FILE))
ELSE (SETQ FILENAME (\ADD.CONNECTED.DIR FILE))
(SETQ DEVICE (\GETDEVICEFROMNAME FILENAME)))
(CL:IF (TYPE? PHDEVICE DEVICE)
(EXPAND.PH FILENAME DEVICE)
FILENAME)])
(PSEUDOFILENAME
[LAMBDA (FILE) (* ; "Edited 29-Jan-2022 23:08 by rmk")
[LAMBDA (FILE) (* ; "Edited 26-Jul-2023 12:34 by rmk")
(* ; "Edited 29-Jan-2022 23:08 by rmk")
(* ; "Edited 28-Jan-2022 09:06 by rmk")
(FOR D PN (FILENAME _ (IF (STREAMP FILE)
THEN (FETCH (STREAM FULLFILENAME) OF FILE)
ELSE (\ADD.CONNECTED.DIR FILE))) IN \FILEDEVICES
WHEN (TYPE? PHDEVICE D) UNLESS (EQ FILENAME (SETQ PN (CONTRACT.PH FILENAME D)))
DO (RETURN PN) FINALLY (RETURN FILENAME])
(if (LISTP FILE)
then (for F in FILE collect (PSEUDOFILENAME F))
else (FOR D PN (FILENAME _ (IF (STREAMP FILE)
THEN (FETCH (STREAM FULLFILENAME) OF FILE)
ELSE (\ADD.CONNECTED.DIR FILE))) IN \FILEDEVICES
WHEN (TYPE? PHDEVICE D) UNLESS (EQ FILENAME (SETQ PN (CONTRACT.PH FILENAME D)))
DO (RETURN PN) FINALLY (RETURN FILENAME])
)
@@ -209,6 +216,8 @@
(CONTRACT.PH
[LAMBDA (NAME PHDEV)
(* ;; "Edited 22-Sep-2023 14:30 by rmk")
(* ;; "Edited 30-Jan-2022 00:20 by rmk: the smallest pseudoname for NAME. If the NAME was constructed by expanding, then")
(* ;; "Finds the smallest pseudoname for NAME. The PHDEV is used only to find its targetdev, that's where we scan for matching prefixes. This is so we can find the lowest matching pseudohost in the target's prefix map. If the hosts are defined as {DSK}...{H1}...{H2}, DSK knows the prefixes that lead to H1 and H2, picks the longest matching prefix and replaces it by the corresponding host.")
@@ -234,7 +243,7 @@
(SETQ CONNECTOR (CADDR PM))
[SETQ SUFFIX (CONCAT CONNECTOR (IF (EQ CONNECTOR '/)
THEN (SLASHIT SUFFIX)
THEN (SLASHIT SUFFIX)
ELSE (UNSLASHIT SUFFIX])
(RETURN (PACK* '{ (CADR PM)
"}"
@@ -244,31 +253,6 @@
(RETURN NAME)))])
(SLASHIT
[LAMBDA (X LCASEDIRS) (* ; "Edited 26-Jan-2022 15:08 by rmk")
(* ; "Edited 3-Jan-2022 11:44 by rmk")
(* ; "Edited 22-Dec-2021 20:18 by rmk")
(* ; "Edited 2-Nov-2021 22:54 by rmk:")
(LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
0]
[SETQ SLASHED (CONCATCODES (FOR I C FROM DIRPOS WHILE (SETQ C (NTHCHARCODE X I))
COLLECT (SELCHARQ C
((< >)
(SETQ LASTDIRPOS I)
(CHARCODE /))
(/ (SETQ LASTDIRPOS I)
C)
C]
(CL:WHEN (AND LCASEDIRS LASTDIRPOS)
(SETQ LASTDIRPOS (ADD1 (IDIFFERENCE LASTDIRPOS DIRPOS)))
(SETQ SLASHED (CONCAT (L-CASE (SUBSTRING SLASHED 1 LASTDIRPOS))
(OR (SUBSTRING SLASHED (ADD1 LASTDIRPOS))
""))))
(CL:IF (EQ DIRPOS 1)
SLASHED
(CONCAT (SUBSTRING X 1 (SUB1 DIRPOS))
SLASHED))])
(UNSLASHIT
[LAMBDA (X LCASEDIRS) (* ; "Edited 26-Jan-2022 15:09 by rmk")
(* ; "Edited 22-Dec-2021 20:18 by rmk")
@@ -527,13 +511,12 @@
EXPORTS.ALL)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1397 9433 (PSEUDOHOST 1407 . 6966) (PSEUDOHOSTP 6968 . 7481) (PSEUDOHOSTS 7483 . 7844)
(TARGETHOST 7846 . 8120) (TRUEFILENAME 8122 . 8809) (PSEUDOFILENAME 8811 . 9431)) (9461 17000 (
EXPAND.PH 9471 . 10724) (CONTRACT.PH 10726 . 13391) (SLASHIT 13393 . 14961) (UNSLASHIT 14963 . 16709)
(GETHOSTINFO.PH 16711 . 16998)) (17001 25021 (OPENFILE.PH 17011 . 18084) (GETFILENAME.PH 18086 . 18375
) (DIRECTORYNAMEP.PH 18377 . 19001) (CLOSEFILE.PH 19003 . 19470) (REOPENFILE.PH 19472 . 20037) (
DELETEFILE.PH 20039 . 20323) (OPENP.PH 20325 . 20620) (UNREGISTERFILE.PH 20622 . 21164) (
REGISTERFILE.PH 21166 . 21700) (GENERATEFILES.PH 21702 . 22746) (GETFILEINFO.PH 22748 . 23050) (
SETFILEINFO.PH 23052 . 23251) (NEXTFILEFN.PH 23253 . 23799) (FILEINFOFN.PH 23801 . 24076) (
RENAMEFILE.PH 24078 . 25019)))))
(FILEMAP (NIL (1315 9921 (PSEUDOHOST 1325 . 6930) (PSEUDOHOSTP 6932 . 7445) (PSEUDOHOSTS 7447 . 7808)
(TARGETHOST 7810 . 8084) (TRUEFILENAME 8086 . 9048) (PSEUDOFILENAME 9050 . 9919)) (9949 15964 (
EXPAND.PH 9959 . 11212) (CONTRACT.PH 11214 . 13925) (UNSLASHIT 13927 . 15673) (GETHOSTINFO.PH 15675 .
15962)) (15965 23985 (OPENFILE.PH 15975 . 17048) (GETFILENAME.PH 17050 . 17339) (DIRECTORYNAMEP.PH
17341 . 17965) (CLOSEFILE.PH 17967 . 18434) (REOPENFILE.PH 18436 . 19001) (DELETEFILE.PH 19003 . 19287
) (OPENP.PH 19289 . 19584) (UNREGISTERFILE.PH 19586 . 20128) (REGISTERFILE.PH 20130 . 20664) (
GENERATEFILES.PH 20666 . 21710) (GETFILEINFO.PH 21712 . 22014) (SETFILEINFO.PH 22016 . 22215) (
NEXTFILEFN.PH 22217 . 22763) (FILEINFOFN.PH 22765 . 23040) (RENAMEFILE.PH 23042 . 23983)))))
STOP

Binary file not shown.

View File

@@ -1,23 +1,40 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "28-Apr-88 17:04:57" {ERINYES}<LISPUSERS>MEDLEY>READAIS.;1 48154
changes to%: (FNS AISBLT AISBLT1TO1 24BITCOLORTO8BITMAP AISBLT8TO4MODUL AISBLT8TOLESSFSA AISBLT8TO4TRUNC AISBLT8TO8 AISBLT4TO4 AISBLT8TO4LESSFSA AISBLT8TO1FSA AISBLT8TO1TRUNC CLOSEST.COLOR GRAPHAISHISTOGRAM AISHISTOGRAM SMOOTHEDFILTER SLOW.COLOR.DISTANCE FAST.COLOR.DISTANCE INSUREAISFILE SHOWCOLORAIS SHOWCOLORAIS1 WRITEAIS WRITEAIS1 \GETBASENYBBLE \PUTBASENYBBLE)
(VARS READAISCOMS)
(FILECREATED "24-Sep-2023 14:35:09" {WMEDLEY}<lispusers>READAIS.;2 63146
previous date%: "27-Apr-88 12:12:58" {QV}<BRIGGS>LISP>MEDLEY>READAIS.;2)
:EDIT-BY rmk
:CHANGES-TO (FNS AISHISTOGRAM)
:PREVIOUS-DATE "28-Apr-88 17:04:57" {WMEDLEY}<lispusers>READAIS.;1)
(* "
Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. All rights reserved.
(* ; "
Copyright (c) 1982-1988 by Xerox Corporation.
")
(PRETTYCOMPRINT READAISCOMS)
(RPAQQ READAISCOMS ((DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NYBBLESPERWORD 4))) (* ;; "fixed INSUREAISFILE, AISBLT, AISBLT8TO8. nhb 27-Apr-88 01:58:56") (FNS 24BITCOLORTO8BITMAP AISBLT AISBLT1TO1 AISBLT8TO4MODUL AISBLT8TOLESSFSA AISBLT8TO4TRUNC AISBLT8TO8 AISBLT4TO4 AISBLT8TO4LESSFSA AISBLT8TO1FSA AISBLT8TO1TRUNC CLOSEST.COLOR GRAPHAISHISTOGRAM AISHISTOGRAM SMOOTHEDFILTER SLOW.COLOR.DISTANCE FAST.COLOR.DISTANCE INSUREAISFILE SHOWCOLORAIS SHOWCOLORAIS1 WRITEAIS WRITEAIS1 \GETBASENYBBLE \PUTBASENYBBLE) (MACROS .GET.4BIT.AND.SPREAD.ERR. .GET.1BIT.AND.SPREAD.ERR. .GET.NBIT.AND.SPREAD.ERR. .GET.LEFTMOST.4BIT .GET.LEFTMOST.BIT. .GET.BESTCOLOR.AND.SPREAD.ERR. .4BIT.MODULATE.INTENSITY.VALUE. .MODULATE.INTENSITY.VALUE. SQUARE) (P (MOVD? (QUOTE FAST.COLOR.DISTANCE) (QUOTE COLOR.DISTANCE))) (VARS AISDIRECTORIES) (GLOBALVARS AISDIRECTORIES)))
(RPAQQ READAISCOMS
((DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (NYBBLESPERWORD 4)))
(* ;; "fixed INSUREAISFILE, AISBLT, AISBLT8TO8. nhb 27-Apr-88 01:58:56")
(FNS 24BITCOLORTO8BITMAP AISBLT AISBLT1TO1 AISBLT8TO4MODUL AISBLT8TOLESSFSA AISBLT8TO4TRUNC
AISBLT8TO8 AISBLT4TO4 AISBLT8TO4LESSFSA AISBLT8TO1FSA AISBLT8TO1TRUNC CLOSEST.COLOR
GRAPHAISHISTOGRAM AISHISTOGRAM SMOOTHEDFILTER SLOW.COLOR.DISTANCE FAST.COLOR.DISTANCE
INSUREAISFILE SHOWCOLORAIS SHOWCOLORAIS1 WRITEAIS WRITEAIS1 \GETBASENYBBLE
\PUTBASENYBBLE)
(MACROS .GET.4BIT.AND.SPREAD.ERR. .GET.1BIT.AND.SPREAD.ERR. .GET.NBIT.AND.SPREAD.ERR.
.GET.LEFTMOST.4BIT .GET.LEFTMOST.BIT. .GET.BESTCOLOR.AND.SPREAD.ERR.
.4BIT.MODULATE.INTENSITY.VALUE. .MODULATE.INTENSITY.VALUE. SQUARE)
(P (MOVD? 'FAST.COLOR.DISTANCE 'COLOR.DISTANCE))
(VARS AISDIRECTORIES)
(GLOBALVARS AISDIRECTORIES)))
(DECLARE%: EVAL@COMPILE DONTCOPY
(DECLARE%: EVAL@COMPILE
(RPAQQ NYBBLESPERWORD 4)
(RPAQQ NYBBLESPERWORD 4)
(CONSTANTS (NYBBLESPERWORD 4))
@@ -83,8 +100,59 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. Al
)
(AISHISTOGRAM
(LAMBDA (FILE REGION) (* kbr%: "13-Jul-85 19:28") (* returns an array that have the number of pixels in FILE that have each intensity.) (PROG (STREAM DATABEG AISHISTOGRAM TMP BITSPERSAMPLE SFILEWIDTH SFILEHEIGHT SFILEBYTESPERLINE LEFT BOTTOM RIGHT TOP WIDTH HEIGHT BEG END) (COND ((OR (SETQ STREAM (FINDFILE FILE NIL AISDIRECTORIES)) (SETQ STREAM FILE)) (SETQ STREAM (GETSTREAM (OPENFILE STREAM (QUOTE INPUT)) (QUOTE INPUT))))) (SETQ TMP (INSUREAISFILE STREAM)) (SETQ BITSPERSAMPLE (CAR TMP)) (SETQ SFILEWIDTH (CADR TMP)) (SETQ SFILEHEIGHT (CADDR TMP)) (SETQ SFILEBYTESPERLINE (LLSH (CADDDR TMP) 1)) (SETQ DATABEG (GETFILEPTR STREAM)) (SETQ AISHISTOGRAM (ARRAY (EXPT 2 BITSPERSAMPLE) NIL 0 0)) (COND (REGION (SETQ LEFT (IMAX (IMIN (fetch (REGION LEFT) of REGION) (SUB1 SFILEWIDTH)) 0)) (SETQ RIGHT (IMAX (IMIN SFILEWIDTH (fetch (REGION PRIGHT) of REGION)) 0)) (COND ((IGEQ LEFT RIGHT) (RETURN AISHISTOGRAM)) (T (SETQ WIDTH (IDIFFERENCE RIGHT LEFT)))) (SETQ BOTTOM (IMIN (fetch (REGION BOTTOM) of REGION) (SUB1 SFILEHEIGHT))) (SETQ TOP (IMIN SFILEHEIGHT (fetch (REGION PTOP) of REGION))) (COND ((IGREATERP BOTTOM TOP) (RETURN AISHISTOGRAM))) (SETQ BEG (IPLUS DATABEG (IPLUS (ITIMES SFILEBYTESPERLINE (IDIFFERENCE SFILEHEIGHT TOP)) LEFT))) (SETQ END (IPLUS DATABEG (IPLUS (ITIMES SFILEBYTESPERLINE (IDIFFERENCE SFILEHEIGHT BOTTOM)) LEFT))) (for LINE from BEG to END by SFILEBYTESPERLINE do (\SETFILEPTR STREAM LINE) (for BIT from 1 to WIDTH do (SETA AISHISTOGRAM (SETQ TMP (\BIN STREAM)) (ADD1 (ELT AISHISTOGRAM TMP)))))) (T (for LINE from 1 to SFILEHEIGHT do (for BIT from 1 to SFILEBYTESPERLINE do (SETA AISHISTOGRAM (SETQ TMP (\BIN STREAM)) (ADD1 (ELT AISHISTOGRAM TMP))))))) (CLOSEF STREAM) (RETURN AISHISTOGRAM)))
)
[LAMBDA (FILE REGION) (* ; "Edited 24-Sep-2023 14:34 by rmk")
(* kbr%: "13-Jul-85 19:28")
(* ;
 "returns an array that have the number of pixels in FILE that have each intensity.")
(PROG (STREAM DATABEG AISHISTOGRAM TMP BITSPERSAMPLE SFILEWIDTH SFILEHEIGHT SFILEBYTESPERLINE
LEFT BOTTOM RIGHT TOP WIDTH HEIGHT BEG END)
[COND
((OR (SETQ STREAM (FINDFILE FILE NIL AISDIRECTORIES))
(SETQ STREAM FILE))
(SETQ STREAM (OPENSTREAM STREAM 'INPUT]
(SETQ TMP (INSUREAISFILE STREAM))
(SETQ BITSPERSAMPLE (CAR TMP))
(SETQ SFILEWIDTH (CADR TMP))
(SETQ SFILEHEIGHT (CADDR TMP))
(SETQ SFILEBYTESPERLINE (LLSH (CADDDR TMP)
1))
(SETQ DATABEG (GETFILEPTR STREAM))
(SETQ AISHISTOGRAM (ARRAY (EXPT 2 BITSPERSAMPLE)
NIL 0 0))
[COND
[REGION (SETQ LEFT (IMAX (IMIN (fetch (REGION LEFT) of REGION)
(SUB1 SFILEWIDTH))
0))
(SETQ RIGHT (IMAX (IMIN SFILEWIDTH (fetch (REGION PRIGHT) of REGION))
0))
[COND
((IGEQ LEFT RIGHT)
(RETURN AISHISTOGRAM))
(T (SETQ WIDTH (IDIFFERENCE RIGHT LEFT]
(SETQ BOTTOM (IMIN (fetch (REGION BOTTOM) of REGION)
(SUB1 SFILEHEIGHT)))
(SETQ TOP (IMIN SFILEHEIGHT (fetch (REGION PTOP) of REGION)))
(COND
((IGREATERP BOTTOM TOP)
(RETURN AISHISTOGRAM)))
(SETQ BEG (IPLUS DATABEG (IPLUS (ITIMES SFILEBYTESPERLINE (IDIFFERENCE
SFILEHEIGHT TOP)
)
LEFT)))
(SETQ END (IPLUS DATABEG (IPLUS (ITIMES SFILEBYTESPERLINE (IDIFFERENCE
SFILEHEIGHT
BOTTOM))
LEFT)))
(for LINE from BEG to END by SFILEBYTESPERLINE
do (\SETFILEPTR STREAM LINE)
(for BIT from 1 to WIDTH do (SETA AISHISTOGRAM (SETQ TMP (\BIN STREAM))
(ADD1 (ELT AISHISTOGRAM TMP]
(T (for LINE from 1 to SFILEHEIGHT
do (for BIT from 1 to SFILEBYTESPERLINE
do (SETA AISHISTOGRAM (SETQ TMP (\BIN STREAM))
(ADD1 (ELT AISHISTOGRAM TMP]
(CLOSEF STREAM)
(RETURN AISHISTOGRAM])
(SMOOTHEDFILTER
(LAMBDA (HISTOGRAM) (* kbr%: "13-Jul-85 15:05") (* returns a 256 to 256 mapping array that maximally distributes the intensity values by looking at the histogram array HISTOGRAM) (PROG (ARSIZE SMOOTHARRAY TOTALPOINTS POINTSLESS FILEINTENSITY NEWINTENSITY POINTSPAST BUCKETSIZE NTOMOVE NPTS) (SETQ ARSIZE (ARRAYSIZE HISTOGRAM)) (SETQ POINTSLESS 0) (SETQ NEWINTENSITY 0) (SETQ POINTSPAST 0) (SETQ SMOOTHARRAY (ARRAY ARSIZE NIL 0 0)) (SETQ TOTALPOINTS (for I from 0 to (SUB1 ARSIZE) sum (ELT HISTOGRAM I))) (SETQ BUCKETSIZE (IQUOTIENT TOTALPOINTS 256)) (for I from 0 to (SUB1 ARSIZE) do (SETQ NPTS (ELT HISTOGRAM I)) (SETQ POINTSLESS (IPLUS POINTSLESS NPTS)) (COND ((IGREATERP POINTSLESS BUCKETSIZE) (SETQ NTOMOVE (IQUOTIENT POINTSLESS BUCKETSIZE)) (SETA SMOOTHARRAY I (IPLUS NEWINTENSITY (IQUOTIENT NTOMOVE 2))) (SETQ NEWINTENSITY (COND ((IGREATERP NEWINTENSITY 255) 255) (T (IPLUS NEWINTENSITY NTOMOVE)))) (SETQ POINTSLESS (IDIFFERENCE POINTSLESS (ITIMES NTOMOVE BUCKETSIZE)))) (T (SETA SMOOTHARRAY I NEWINTENSITY)))) (RETURN SMOOTHARRAY)))
@@ -128,41 +196,308 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988 by Xerox Corporation. Al
)
(DECLARE%: EVAL@COMPILE
(PUTPROPS .GET.4BIT.AND.SPREAD.ERR. MACRO ((STREAM) (PROGN (* returns the 4 most significant bits taking into account the error and spreads the error into the appropriate places.) (SETQ BYTE (IPLUS (\BIN STREAM) THISPIXELERROR)) (PROG1 (COND ((IGREATERP BYTE 255) (* overflow case) 15) (T (LRSH BYTE 4))) (SETQ ERR (LOGAND BYTE 15)) (* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below and to the right.) (* calculate |1/4| of error.) (SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELERROR (IPLUS (\GETBASE ERRTABLEPTR 1) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASE ERRTABLEPTR 1 (LRSH ERR 1)) (* |3/8| to one below) (\PUTBASE ERRTABLEPTR 0 (IPLUS (\GETBASE ERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1)))) (SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 1))))))
(PUTPROPS .GET.4BIT.AND.SPREAD.ERR. MACRO [(STREAM)
(PROGN
(PUTPROPS .GET.1BIT.AND.SPREAD.ERR. MACRO ((STREAM) (PROGN (* returns the most significant bit taking into account the error and spreads the error into the appropriate places.) (SETQ BYTE (IPLUS (\BIN STREAM) THISPIXELERROR)) (PROG1 (SETQ VAL (COND ((IGREATERP BYTE 255) (* overflow case) 0) ((IGREATERP 0 BYTE) (* overflow case) 1) (T (LOGXOR (LRSH BYTE 7) 1)))) (SETQ ERR (IDIFFERENCE BYTE (\GETBASE INTENSITYBASE VAL))) (* put |3/8| of error into next pixel, |3/8| to one below and |1/4| to one below and to the right.) (* calculate |1/4| of error.) (SETQ ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR) 2) 64)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THREEEIGHTSERR (IPLUS ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR) 1) 128))) (SETQ THISPIXELERROR (IPLUS (\GETBASEPTR ERRTABLEPTR 2) THREEEIGHTSERR)) (* |1/4| of error to next one down to right.) (\PUTBASEPTR ERRTABLEPTR 2 ERR) (* |3/8| to one below) (\PUTBASEPTR ERRTABLEPTR 0 (IPLUS (\GETBASEPTR ERRTABLEPTR 0) THREEEIGHTSERR)) (SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 2))))))
(* returns the 4 most significant bits taking into account the error and spreads
 the error into the appropriate places.)
(PUTPROPS .GET.NBIT.AND.SPREAD.ERR. MACRO ((STREAM) (PROGN (* returns the NBITS most significant bits taking into account the error and spreads the error into the appropriate places.) (SETQ BYTE (IPLUS (IDIFFERENCE 255 (\BIN STREAM)) THISPIXELERROR)) (PROG1 (SETQ VAL (COND ((IGREATERP BYTE 255) (* overflow case) MAXVALUE) ((IGREATERP 0 BYTE) 0) (T (LRSH BYTE DELBITS)))) (* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below and to the right.) (SETQ ERR (IDIFFERENCE BYTE (\GETBASE INTENSITYBASE VAL))) (* calculate |1/4| of error.) (SETQ ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR) 2) 64)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THREEEIGHTSERR (IPLUS ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR) 1) 128))) (SETQ THISPIXELERROR (IPLUS (\GETBASEPTR ERRTABLEPTR 2) THREEEIGHTSERR)) (* |1/8| of error to next one down to right.) (\PUTBASEPTR ERRTABLEPTR 2 ERR) (* |3/8| to one below) (\PUTBASEPTR ERRTABLEPTR 0 (IPLUS (\GETBASEPTR ERRTABLEPTR 0) THREEEIGHTSERR)) (SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 2))))))
(SETQ BYTE (IPLUS (\BIN STREAM)
THISPIXELERROR))
(PROG1 (COND
((IGREATERP BYTE 255)
(* overflow case)
15)
(T (LRSH BYTE 4)))
(SETQ ERR (LOGAND BYTE 15))
(PUTPROPS .GET.LEFTMOST.4BIT MACRO ((STREAM) (* returns the 4 most significant bits) (LRSH (\BIN STREAM) 4)))
(* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below
 and to the right.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH ERR 2))
(* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELERROR
(IPLUS (\GETBASE ERRTABLEPTR 1)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASE ERRTABLEPTR 1 (LRSH ERR 1))
(* |3/8| to one below)
[\PUTBASE ERRTABLEPTR 0
(IPLUS (\GETBASE ERRTABLEPTR 0)
(IPLUS ERR (LRSH ERR 1]
(SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 1)))])
(PUTPROPS .GET.LEFTMOST.BIT. MACRO ((STREAM) (* returns the most significant bit from an 8 bit sample. It also inverts the sign of the bit since 1 is black and 0 white. NIL) (COND ((IGREATERP (COND (FILTERARRAY (ELT FILTERARRAY (\BIN STREAM))) (T (\BIN STREAM))) 127) 0) (T 1))))
(PUTPROPS .GET.1BIT.AND.SPREAD.ERR. MACRO [(STREAM)
(PROGN
(PUTPROPS .GET.BESTCOLOR.AND.SPREAD.ERR. MACRO (NIL (PROGN (* returns the best matching color bits taking into account the error and spreads the error into the appropriate places.) (SETQ COLOR (CLOSEST.COLOR COLORMAP (SETQ REDBYTE (IPLUS (\BIN REDSTREAM) THISPIXELREDERROR)) (SETQ GREENBYTE (IPLUS (\BIN GREENSTREAM) THISPIXELGREENERROR)) (SETQ BLUEBYTE (IPLUS (\BIN BLUESTREAM) THISPIXELBLUEERROR)))) (SETQ RGB (ELT COLORMAP COLOR)) (PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB RED) of RGB) REDBYTE)) (COND ((IGREATERP ERR -1) (* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below and to the right.) (* calculate |1/4| of error.) (SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELREDERROR (IPLUS (\GETBASEPTR REDERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR REDERRTABLEPTR 2 (LRSH ERR 1)) (* |3/8| to one below) (\PUTBASEPTR REDERRTABLEPTR 0 (IPLUS (\GETBASEPTR REDERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1))))) (T (* error is negative, do things differently.) (* calculate |1/4| of error.) (SETQ ERR (LRSH (IMINUS ERR) 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELREDERROR (IDIFFERENCE (\GETBASEPTR REDERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR REDERRTABLEPTR 2 (IMINUS (LRSH ERR 1))) (* |3/8| to one below) (\PUTBASEPTR REDERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR REDERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1)))))) (SETQ REDERRTABLEPTR (\ADDBASE REDERRTABLEPTR 2))) (PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB GREEN) of RGB) GREENBYTE)) (COND ((IGREATERP ERR -1) (* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below and to the right.) (* calculate |1/4| of error.) (SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELGREENERROR (IPLUS (\GETBASEPTR GREENERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR GREENERRTABLEPTR 2 (LRSH ERR 1)) (* |3/8| to one below) (\PUTBASEPTR GREENERRTABLEPTR 0 (IPLUS (\GETBASEPTR GREENERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1))))) (T (* error is negative, do things differently.) (* calculate |1/4| of error.) (SETQ ERR (LRSH (IMINUS ERR) 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELGREENERROR (IDIFFERENCE (\GETBASEPTR GREENERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR GREENERRTABLEPTR 2 (IMINUS (LRSH ERR 1))) (* |3/8| to one below) (\PUTBASEPTR GREENERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR GREENERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1)))))) (SETQ GREENERRTABLEPTR (\ADDBASE GREENERRTABLEPTR 2))) (PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB BLUE) of RGB) BLUEBYTE)) (COND ((IGREATERP ERR -1) (* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below and to the right.) (* calculate |1/4| of error.) (SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELBLUEERROR (IPLUS (\GETBASEPTR BLUEERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR BLUEERRTABLEPTR 2 (LRSH ERR 1)) (* |3/8| to one below) (\PUTBASEPTR BLUEERRTABLEPTR 0 (IPLUS (\GETBASEPTR BLUEERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1))))) (T (* error is negative, do things differently.) (* calculate |1/4| of error.) (SETQ ERR (LRSH (IMINUS ERR) 2)) (* |3/8| of error to next pixel plus error from previous line) (SETQ THISPIXELBLUEERROR (IDIFFERENCE (\GETBASEPTR BLUEERRTABLEPTR 2) (IPLUS ERR (LRSH ERR 1)))) (* |1/8| of error to next one down to right.) (\PUTBASEPTR BLUEERRTABLEPTR 2 (IMINUS (LRSH ERR 1))) (* |3/8| to one below) (\PUTBASEPTR BLUEERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR BLUEERRTABLEPTR 0) (IPLUS ERR (LRSH ERR 1)))))) (SETQ BLUEERRTABLEPTR (\ADDBASE BLUEERRTABLEPTR 2))) COLOR)))
(* returns the most significant bit taking into account the error and spreads the
 error into the appropriate places.)
(PUTPROPS .4BIT.MODULATE.INTENSITY.VALUE. MACRO ((STREAM) (LOGAND (IMIN 255 (IMAX (IPLUS (\BIN STREAM) (RAND MODMIN MODMAX)) 0)) 240)))
(SETQ BYTE (IPLUS (\BIN STREAM)
THISPIXELERROR))
(PROG1 [SETQ VAL (COND
((IGREATERP BYTE 255)
(* overflow case)
0)
((IGREATERP 0 BYTE)
(* overflow case)
1)
(T (LOGXOR (LRSH BYTE 7)
1]
(SETQ ERR (IDIFFERENCE BYTE (\GETBASE
INTENSITYBASE
VAL)))
(PUTPROPS .MODULATE.INTENSITY.VALUE. MACRO ((STREAM) (IMIN 255 (IMAX (IPLUS (\BIN STREAM) (RAND MODMIN MODMAX)) 0))))
(* put |3/8| of error into next pixel, |3/8| to one below and |1/4| to one below
 and to the right.)
(* calculate |1/4| of error.)
(SETQ ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR)
2)
64))
(* |3/8| of error to next pixel plus
 error from previous line)
(SETQ THREEEIGHTSERR
(IPLUS ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR)
1)
128)))
(SETQ THISPIXELERROR (IPLUS (\GETBASEPTR
ERRTABLEPTR
2)
THREEEIGHTSERR))
(* |1/4| of error to next one down to
 right.)
(\PUTBASEPTR ERRTABLEPTR 2 ERR)
(* |3/8| to one below)
(\PUTBASEPTR ERRTABLEPTR 0
(IPLUS (\GETBASEPTR ERRTABLEPTR 0)
THREEEIGHTSERR))
(SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 2)))])
(PUTPROPS SQUARE MACRO (LAMBDA (X) (* coded this way because negative arith is not is microcode for ITIMES) (COND ((IGREATERP X -1) (ITIMES X X)) (T (ITIMES (SETQ X (IMINUS X)) X)))))
(PUTPROPS .GET.NBIT.AND.SPREAD.ERR. MACRO [(STREAM)
(PROGN
(* returns the NBITS most significant bits taking into account the error and
 spreads the error into the appropriate places.)
(SETQ BYTE (IPLUS (IDIFFERENCE 255 (\BIN STREAM))
THISPIXELERROR))
(PROG1 [SETQ VAL (COND
((IGREATERP BYTE 255)
(* overflow case)
MAXVALUE)
((IGREATERP 0 BYTE)
0)
(T (LRSH BYTE DELBITS]
(* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below
 and to the right.)
(SETQ ERR (IDIFFERENCE BYTE (\GETBASE
INTENSITYBASE
VAL)))
(* calculate |1/4| of error.)
(SETQ ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR)
2)
64))
(* |3/8| of error to next pixel plus
 error from previous line)
(SETQ THREEEIGHTSERR
(IPLUS ERR (IDIFFERENCE (LRSH (IPLUS 256 ERR)
1)
128)))
(SETQ THISPIXELERROR (IPLUS (\GETBASEPTR
ERRTABLEPTR
2)
THREEEIGHTSERR))
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR ERRTABLEPTR 2 ERR)
(* |3/8| to one below)
(\PUTBASEPTR ERRTABLEPTR 0
(IPLUS (\GETBASEPTR ERRTABLEPTR 0)
THREEEIGHTSERR))
(SETQ ERRTABLEPTR (\ADDBASE ERRTABLEPTR 2)))])
(PUTPROPS .GET.LEFTMOST.4BIT MACRO ((STREAM) (* returns the 4 most significant bits)
(LRSH (\BIN STREAM)
4)))
(PUTPROPS .GET.LEFTMOST.BIT. MACRO ((STREAM)
(* returns the most significant bit from an 8 bit sample.
 It also inverts the sign of the bit since 1 is black and 0 white.
 NIL)
(COND
((IGREATERP (COND
(FILTERARRAY (ELT FILTERARRAY (\BIN STREAM)))
(T (\BIN STREAM)))
127)
0)
(T 1))))
(PUTPROPS .GET.BESTCOLOR.AND.SPREAD.ERR. MACRO
(NIL (PROGN
(* returns the best matching color bits taking into account the error and spreads
 the error into the appropriate places.)
[SETQ COLOR (CLOSEST.COLOR COLORMAP (SETQ REDBYTE (IPLUS (\BIN REDSTREAM)
THISPIXELREDERROR))
(SETQ GREENBYTE (IPLUS (\BIN GREENSTREAM)
THISPIXELGREENERROR))
(SETQ BLUEBYTE (IPLUS (\BIN BLUESTREAM)
THISPIXELBLUEERROR]
(SETQ RGB (ELT COLORMAP COLOR))
(PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB RED) of RGB)
REDBYTE))
[COND
[(IGREATERP ERR -1)
(* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below
 and to the right.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELREDERROR (IPLUS (\GETBASEPTR REDERRTABLEPTR 2)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR REDERRTABLEPTR 2 (LRSH ERR 1))
(* |3/8| to one below)
(\PUTBASEPTR REDERRTABLEPTR 0 (IPLUS (\GETBASEPTR REDERRTABLEPTR 0)
(IPLUS ERR (LRSH ERR 1]
(T (* error is negative, do things
 differently.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH (IMINUS ERR)
2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELREDERROR (IDIFFERENCE (\GETBASEPTR REDERRTABLEPTR 2
)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR REDERRTABLEPTR 2 (IMINUS (LRSH ERR 1)))
(* |3/8| to one below)
(\PUTBASEPTR REDERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR
REDERRTABLEPTR 0
)
(IPLUS ERR (LRSH ERR 1]
(SETQ REDERRTABLEPTR (\ADDBASE REDERRTABLEPTR 2)))
(PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB GREEN) of RGB)
GREENBYTE))
[COND
[(IGREATERP ERR -1)
(* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below
 and to the right.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELGREENERROR (IPLUS (\GETBASEPTR GREENERRTABLEPTR 2)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR GREENERRTABLEPTR 2 (LRSH ERR 1))
(* |3/8| to one below)
(\PUTBASEPTR GREENERRTABLEPTR 0 (IPLUS (\GETBASEPTR GREENERRTABLEPTR
0)
(IPLUS ERR (LRSH ERR 1]
(T (* error is negative, do things
 differently.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH (IMINUS ERR)
2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELGREENERROR (IDIFFERENCE (\GETBASEPTR
GREENERRTABLEPTR 2)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR GREENERRTABLEPTR 2 (IMINUS (LRSH ERR 1)))
(* |3/8| to one below)
(\PUTBASEPTR GREENERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR
GREENERRTABLEPTR
0)
(IPLUS ERR (LRSH ERR 1]
(SETQ GREENERRTABLEPTR (\ADDBASE GREENERRTABLEPTR 2)))
(PROGN (SETQ ERR (IDIFFERENCE (fetch (RGB BLUE) of RGB)
BLUEBYTE))
[COND
[(IGREATERP ERR -1)
(* put |3/8| of error into next pixel, |3/8| to one below and |1/8| to one below
 and to the right.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH ERR 2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELBLUEERROR (IPLUS (\GETBASEPTR BLUEERRTABLEPTR 2)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR BLUEERRTABLEPTR 2 (LRSH ERR 1))
(* |3/8| to one below)
(\PUTBASEPTR BLUEERRTABLEPTR 0 (IPLUS (\GETBASEPTR BLUEERRTABLEPTR 0
)
(IPLUS ERR (LRSH ERR 1]
(T (* error is negative, do things
 differently.)
(* calculate |1/4| of error.)
(SETQ ERR (LRSH (IMINUS ERR)
2)) (* |3/8| of error to next pixel plus
 error from previous line)
[SETQ THISPIXELBLUEERROR (IDIFFERENCE (\GETBASEPTR BLUEERRTABLEPTR
2)
(IPLUS ERR (LRSH ERR 1]
(* |1/8| of error to next one down to
 right.)
(\PUTBASEPTR BLUEERRTABLEPTR 2 (IMINUS (LRSH ERR 1)))
(* |3/8| to one below)
(\PUTBASEPTR BLUEERRTABLEPTR 0 (IDIFFERENCE (\GETBASEPTR
BLUEERRTABLEPTR
0)
(IPLUS ERR (LRSH ERR 1]
(SETQ BLUEERRTABLEPTR (\ADDBASE BLUEERRTABLEPTR 2)))
COLOR)))
(PUTPROPS .4BIT.MODULATE.INTENSITY.VALUE. MACRO ((STREAM)
(LOGAND (IMIN 255 (IMAX (IPLUS (\BIN STREAM)
(RAND MODMIN MODMAX))
0))
240)))
(PUTPROPS .MODULATE.INTENSITY.VALUE. MACRO ((STREAM)
(IMIN 255 (IMAX (IPLUS (\BIN STREAM)
(RAND MODMIN MODMAX))
0))))
(PUTPROPS SQUARE MACRO [LAMBDA (X) (* coded this way because negative
 arith is not is microcode for ITIMES)
(COND
((IGREATERP X -1)
(ITIMES X X))
(T (ITIMES (SETQ X (IMINUS X))
X])
)
(MOVD? (QUOTE FAST.COLOR.DISTANCE) (QUOTE COLOR.DISTANCE))
(MOVD? 'FAST.COLOR.DISTANCE 'COLOR.DISTANCE)
(RPAQQ AISDIRECTORIES (T {CORE} {DSK} {CYAN}<AIS>))
(RPAQQ AISDIRECTORIES (T {CORE} {DSK} {CYAN}<AIS>))
(DECLARE%: DOEVAL@COMPILE DONTCOPY
(GLOBALVARS AISDIRECTORIES)
)
(PUTPROPS READAIS COPYRIGHT ("Xerox Corporation" 1982 1983 1984 1985 1986 1987 1988))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1827 40089 (24BITCOLORTO8BITMAP 1837 . 3843) (AISBLT 3845 . 10524) (AISBLT1TO1 10526 .
11817) (AISBLT8TO4MODUL 11819 . 13524) (AISBLT8TOLESSFSA 13526 . 15610) (AISBLT8TO4TRUNC 15612 . 16848
) (AISBLT8TO8 16850 . 19104) (AISBLT4TO4 19106 . 21591) (AISBLT8TO4LESSFSA 21593 . 23620) (
AISBLT8TO1FSA 23622 . 26181) (AISBLT8TO1TRUNC 26183 . 27872) (CLOSEST.COLOR 27874 . 28236) (
GRAPHAISHISTOGRAM 28238 . 28847) (AISHISTOGRAM 28849 . 30585) (SMOOTHEDFILTER 30587 . 31648) (
SLOW.COLOR.DISTANCE 31650 . 31948) (FAST.COLOR.DISTANCE 31950 . 32242) (INSUREAISFILE 32244 . 33441) (
SHOWCOLORAIS 33443 . 35628) (SHOWCOLORAIS1 35630 . 37166) (WRITEAIS 37168 . 39031) (WRITEAIS1 39033 .
39353) (\GETBASENYBBLE 39355 . 39642) (\PUTBASENYBBLE 39644 . 40087)))))
(FILEMAP (NIL (1582 41465 (24BITCOLORTO8BITMAP 1592 . 3598) (AISBLT 3600 . 10279) (AISBLT1TO1 10281 .
11572) (AISBLT8TO4MODUL 11574 . 13279) (AISBLT8TOLESSFSA 13281 . 15365) (AISBLT8TO4TRUNC 15367 . 16603
) (AISBLT8TO8 16605 . 18859) (AISBLT4TO4 18861 . 21346) (AISBLT8TO4LESSFSA 21348 . 23375) (
AISBLT8TO1FSA 23377 . 25936) (AISBLT8TO1TRUNC 25938 . 27627) (CLOSEST.COLOR 27629 . 27991) (
GRAPHAISHISTOGRAM 27993 . 28602) (AISHISTOGRAM 28604 . 31961) (SMOOTHEDFILTER 31963 . 33024) (
SLOW.COLOR.DISTANCE 33026 . 33324) (FAST.COLOR.DISTANCE 33326 . 33618) (INSUREAISFILE 33620 . 34817) (
SHOWCOLORAIS 34819 . 37004) (SHOWCOLORAIS1 37006 . 38542) (WRITEAIS 38544 . 40407) (WRITEAIS1 40409 .
40729) (\GETBASENYBBLE 40731 . 41018) (\PUTBASENYBBLE 41020 . 41463)))))
STOP

Binary file not shown.

View File

@@ -1,11 +1,12 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "22-Jun-2021 10:52:34" 
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>READINTERPRESS.;4 10412
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
changes to%: (FNS PRINTSEQUENCE)
(FILECREATED "24-Sep-2023 13:52:48" {WMEDLEY}<lispusers>READINTERPRESS.;6 11350
previous date%: "22-Jun-2021 10:35:30"
{DSK}<Users>kaplan>Local>medley3.5>git-medley>lispusers>READINTERPRESS.;3)
:EDIT-BY rmk
:CHANGES-TO (FNS SHOWFILE)
:PREVIOUS-DATE "22-Jun-2021 10:52:34" {WMEDLEY}<lispusers>READINTERPRESS.;4)
(* ; "
@@ -122,8 +123,53 @@ Copyright (c) 1983-1986, 1988, 2021 by Xerox Corporation.
)
(SHOWFILE
(LAMBDA (IPFILE OUTPUTFILE MAXZEROLINES) (* rmk%: "16-Jun-84 15:29") (OR MAXZEROLINES (SETQ MAXZEROLINES 5)) (RESETLST (PROG (STREAM) (RESETSAVE (SETQ STREAM (OPENFILE IPFILE (QUOTE INPUT))) (QUOTE (PROGN (CLOSEF? OLDVALUE)))) (SETQ STREAM (GETSTREAM STREAM)) (* Don't do an OPENSTREAM until (OPENP stream) is NIL if stream is closed.) (RESETSAVE (OUTPUT)) (RESETSAVE (SETQ OUTPUTFILE (OPENFILE OUTPUTFILE (QUOTE OUTPUT))) (QUOTE (PROGN (CLOSEF? OLDVALUE) (AND RESETSTATE (DELFILE OLDVALUE))))) (OUTPUT OUTPUTFILE) (printout NIL .FONT DEFAULTFONT (OPENP STREAM (QUOTE INPUT)) T T) (for I B1 B2 B3 B4 B5 B6 B7 B8 (NZEROLINES _ 0) from 1 by 8 until (\EOFP STREAM) do (printout NIL |.I5| I %,,) (SETQ B1 (SHOWBYTE STREAM)) (SETQ B2 (SHOWBYTE STREAM)) (SETQ B3 (SHOWBYTE STREAM)) (SETQ B4 (SHOWBYTE STREAM)) (printout NIL %,,) (SETQ B5 (SHOWBYTE STREAM)) (SETQ B6 (SHOWBYTE STREAM)) (SETQ B7 (SHOWBYTE STREAM)) (SETQ B8 (SHOWBYTE STREAM)) (TAB 23) (COND (B1 (printout NIL |.I4| B1))) (COND (B2 (printout NIL |.I4| B2))) (COND (B3 (printout NIL |.I4| B3))) (COND (B4 (printout NIL |.I4| B4))) (printout NIL %,,) (COND (B5 (printout NIL |.I4| B5))) (COND (B6 (printout NIL |.I4| B6))) (COND (B7 (printout NIL |.I4| B7))) (COND (B8 (printout NIL |.I4| B8 T)))) (RETURN (LIST (CLOSEF IPFILE) (CLOSEF OUTPUTFILE))))))
)
[LAMBDA (IPFILE OUTPUTFILE MAXZEROLINES) (* ; "Edited 24-Sep-2023 13:52 by rmk")
(* rmk%: "16-Jun-84 15:29")
(OR MAXZEROLINES (SETQ MAXZEROLINES 5))
(RESETLST
[PROG (STREAM)
[RESETSAVE (SETQ STREAM (OPENSTREAM IPFILE 'INPUT))
'(PROGN (CLOSEF? OLDVALUE] (* Don't do an OPENSTREAM until
 (OPENP stream) is NIL if stream is
 closed.)
(RESETSAVE (OUTPUT))
[RESETSAVE (SETQ OUTPUTFILE (OPENSTREAM OUTPUTFILE 'OUTPUT))
'(PROGN (CLOSEF? OLDVALUE)
(AND RESETSTATE (DELFILE OLDVALUE]
(OUTPUT OUTPUTFILE)
(printout NIL .FONT DEFAULTFONT (OPENP STREAM 'INPUT)
T T)
[for I B1 B2 B3 B4 B5 B6 B7 B8 (NZEROLINES _ 0) from 1 by 8 until (\EOFP STREAM)
do (printout NIL .I5 I %,,)
(SETQ B1 (SHOWBYTE STREAM))
(SETQ B2 (SHOWBYTE STREAM))
(SETQ B3 (SHOWBYTE STREAM))
(SETQ B4 (SHOWBYTE STREAM))
(printout NIL %,,)
(SETQ B5 (SHOWBYTE STREAM))
(SETQ B6 (SHOWBYTE STREAM))
(SETQ B7 (SHOWBYTE STREAM))
(SETQ B8 (SHOWBYTE STREAM))
(TAB 23)
(COND
(B1 (printout NIL .I4 B1)))
(COND
(B2 (printout NIL .I4 B2)))
(COND
(B3 (printout NIL .I4 B3)))
(COND
(B4 (printout NIL .I4 B4)))
(printout NIL %,,)
(COND
(B5 (printout NIL .I4 B5)))
(COND
(B6 (printout NIL .I4 B6)))
(COND
(B7 (printout NIL .I4 B7)))
(COND
(B8 (printout NIL .I4 B8 T]
(RETURN (LIST (CLOSEF IPFILE)
(CLOSEF OUTPUTFILE])])
(SHOWBYTE
(LAMBDA (STREAM) (* rmk%: "13-JUL-82 18:01") (PROG ((BYTE (COND ((NOT (\EOFP STREAM)) (\BIN STREAM))))) (COND (BYTE (PRIN1 (COND ((AND (IGEQ BYTE (CHARCODE SPACE)) (ILESSP BYTE (CHARCODE DEL)) (NEQ BYTE 96)) (CHARACTER BYTE)) (T (QUOTE %.)))))) (RETURN BYTE)))
@@ -132,14 +178,14 @@ Copyright (c) 1983-1986, 1988, 2021 by Xerox Corporation.
(DECLARE%: EVAL@COMPILE
(PUTPROPS BIN.RIP MACRO [ARGS (LET ((ISTREAM (CAR ARGS))
(OSTREAM (CADR ARGS)))
`(LET [(C (BIN ,ISTREAM]
(COND
((IGREATERP (POSITION ,OSTREAM)
15)
(printout ,OSTREAM 5 "|" 8)))
(printout ,OSTREAM .I3 C " ")
C])
(OSTREAM (CADR ARGS)))
`(LET [(C (BIN ,ISTREAM]
(COND
((IGREATERP (POSITION ,OSTREAM)
15)
(printout ,OSTREAM 5 "|" 8)))
(printout ,OSTREAM .I3 C " ")
C])
)
(DECLARE%: EVAL@COMPILE DONTCOPY
@@ -156,8 +202,9 @@ Copyright (c) 1983-1986, 1988, 2021 by Xerox Corporation.
)
(PUTPROPS READINTERPRESS COPYRIGHT ("Xerox Corporation" 1983 1984 1985 1986 1988 2021))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1210 1896 (PRINTMASTER 1220 . 1894)) (1897 9430 (OPCODE 1907 . 2032) (TOKEN 2034 . 2606
) (FINDNONPRIMNAME 2608 . 2713) (FINDOPNAME 2715 . 2972) (SHORTINT 2974 . 3167) (TOKENFORMAT 3169 .
3411) (FINDSEQUENCETYPE 3413 . 3617) (PRINTTOKEN 3619 . 4570) (PRINTSEQUENCE 4572 . 7449) (
SEARCHIPLIST 7451 . 7583) (READINT.IP 7585 . 7824) (SHOWFILE 7826 . 9150) (SHOWBYTE 9152 . 9428)))))
(FILEMAP (NIL (1158 1844 (PRINTMASTER 1168 . 1842)) (1845 10432 (OPCODE 1855 . 1980) (TOKEN 1982 .
2554) (FINDNONPRIMNAME 2556 . 2661) (FINDOPNAME 2663 . 2920) (SHORTINT 2922 . 3115) (TOKENFORMAT 3117
. 3359) (FINDSEQUENCETYPE 3361 . 3565) (PRINTTOKEN 3567 . 4518) (PRINTSEQUENCE 4520 . 7397) (
SEARCHIPLIST 7399 . 7531) (READINT.IP 7533 . 7772) (SHOWFILE 7774 . 10152) (SHOWBYTE 10154 . 10430))))
)
STOP

Binary file not shown.

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "27-Feb-2022 08:48:09" 
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;116 37561
(FILECREATED " 2-Nov-2023 23:48:28" {WMEDLEY}<lispusers>REGIONMANAGER.;133 41064
:CHANGES-TO (FNS \RELCREATEREGION.REF \RELCREATEREGION.SIZE)
:EDIT-BY rmk
:PREVIOUS-DATE "28-Jan-2022 23:52:21"
{DSK}<Users>kaplan>Local>medley3.5>my-medley>lispusers>REGIONMANAGER.;113)
:CHANGES-TO (FNS RM-CREATEW)
:PREVIOUS-DATE "10-Oct-2023 22:19:05" {WMEDLEY}<lispusers>REGIONMANAGER.;129)
(PRETTYCOMPRINT REGIONMANAGERCOMS)
@@ -15,12 +15,12 @@
[
(* ;; "Typed regions")
[COMS (FNS SET-TYPED-REGIONS)
[COMS (FNS SET-TYPED-REGIONS GRAB-TYPED-REGION REGISTER-TYPED-REGION REGION-TYPE)
(FNS RM-CREATEW RM-CLOSEW RM-GETREGION CLOSE-TYPED-W)
(INITVARS (TYPED-REGIONS))
(GLOBALVARS TYPED-REGIONS)
(DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TYPED-REGION REGION-SOURCE))
(INITRECORDS TYPED-REGION REGION-SOURCE)
(DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS TYPED-REGION))
(INITRECORDS TYPED-REGION)
(P (MOVD? 'CREATEW 'CREATEW.ORIG)
(MOVD? 'CLOSEW 'CLOSEW.ORIG)
(MOVD? 'GETREGION 'GETREGION.ORIG)
@@ -86,120 +86,177 @@
REGIONS
(NCONC REGIONS (CDR PREV)))]
else (push TYPED-REGIONS (CONS TYPE REGIONS])
(GRAB-TYPED-REGION
[LAMBDA (REGION-TYPE MINWIDTH MINHEIGHT) (* ; "Edited 10-Oct-2023 13:41 by rmk")
(* ; "Edited 14-Sep-2023 07:30 by rmk")
(* ;; "Returns a REGIONTYPE region that satisfies MINWIDTH and MINHEIGHT, if specified")
(for R in (CDR (ASSOC REGION-TYPE TYPED-REGIONS)) unless (fetch REGION-INUSE of R)
when [AND (OR (NULL MINWIDTH)
(ILEQ MINWIDTH (fetch WIDTH of R)))
(OR (NULL MINHEIGHT)
(ILEQ MINHEIGHT (fetch HEIGHT of R] do
(* ;; "We don't mark it as inuse here, leave that gets done by INSTALL-TYPED-REGION when ownership is given to a window. The only downside is that the region could be reallocated before that happens, and 2 window would come up in the same place.")
(RETURN R])
(REGISTER-TYPED-REGION
[LAMBDA (REGION REGION-TYPE WINDOW) (* ; "Edited 10-Oct-2023 13:30 by rmk")
(* ; "Edited 29-Sep-2023 13:33 by rmk")
(* ; "Edited 14-Sep-2023 10:03 by rmk")
(* ;; "REGION was passed as the REGION argument to the original CREATEW. If that was NIL, CREATEW created its own region, but it didn't do it through GETREGION (=RM.GETREGION) so it hasn't been registered according to the specified type. We set up the arrangements here. ")
(CL:WHEN REGION-TYPE
(CL:UNLESS REGION
(SETQ REGION (WINDOWREGION WINDOW)))
(LET [(TREGIONLIST (OR (ASSOC REGION-TYPE TYPED-REGIONS)
(CAR (PUSH TYPED-REGIONS (CONS REGION-TYPE]
(CL:UNLESS (MEMB REGION (CDR TREGIONLIST))
(NCONC1 TREGIONLIST REGION))
(replace REGION-INUSE of REGION with T)
(* ;; "We keep the original separate from the window's region WINDOWPROP so that RM-CLOSEW can update if the user reshapes.")
(WINDOWPROP WINDOW 'TYPED-REGION (CONS REGION-TYPE REGION))
REGION))])
(REGION-TYPE
[LAMBDA (X TYPE) (* ; "Edited 10-Oct-2023 14:30 by rmk")
(* ; "Edited 16-Sep-2023 08:41 by rmk")
(* ;;
 "Value is the type of X if it is a region of type TYPE or a region of any type if TYPE is NIL.")
(CL:WHEN (REGIONP X)
[if TYPE
then (CL:WHEN (MEMB X (CDR (ASSOC TYPE TYPED-REGIONS)))
TYPE)
else (CAR (find TYPELIST in TYPED-REGIONS suchthat (MEMB X TYPELIST])])
)
(DEFINEQ
(RM-CREATEW
[LAMBDA (REGION TITLE BORDERSIZE NOOPENFLG PROPS) (* ; "Edited 1-Jan-2022 23:12 by rmk")
[LAMBDA (REGION TITLE BORDERSIZE NOOPENFLG PROPS) (* ; "Edited 2-Nov-2023 23:48 by rmk")
(* ; "Edited 24-Sep-2023 20:38 by rmk")
(* ; "Edited 14-Sep-2023 22:23 by rmk")
(* ; "Edited 1-Jan-2022 23:12 by rmk")
(* ; "Edited 29-Dec-2021 19:25 by rmk")
(* ;; "Generic CREATEW function for managed regions. If REGIONTYPE is specified (as REGION or in PROPS), then we try to find a previous region for that type that is currently unused, create one if needed.")
(* ;; "Generic CREATEW function for managed regions. If REGION-TYPE is specified (as REGION or in PROPS), then we try to find a previous region for that type that is currently unused, create one if needed.")
(* ;; "We have to bracket the original window creation because the we have to mark that the window uses that region, to put it back in the pool when the window is closed.")
(LET (WINDOW REGIONTYPE TYPEDREGION TYPELIST)
[SETQ REGIONTYPE (if (AND REGION (LITATOM REGION))
then (PROG1 REGION (SETQ REGION NIL))
else (LISTGET PROPS 'REGION-TYPE]
(SETQ TYPELIST (ASSOC REGIONTYPE TYPED-REGIONS))
(* ;; "NOTE: putting the region as the REGION--TYPE property may only be needed for old TEDIT compatibility")
(* ;; "We have REGIONTYPE, but maybe also a region that already has a source. Maybe we should make sure that the source is of that type?")
(LET [WINDOW REGION-TYPE (RTPROP (LISTGET PROPS 'REGION-TYPE]
(SETQ REGION-TYPE (if (AND (LITATOM REGION)
REGION)
then (PROG1 REGION (SETQ REGION NIL))
elseif (LITATOM RTPROP)
then RTPROP))
(CL:UNLESS (OR (REGIONP REGION)
(SCREENREGIONP REGION))
(SETQ REGION (OR (REGIONP RTPROP)
(SCREENREGIONP RTPROP))))
(* ;; "Note: REGION can also be a screenregion, that falls through.")
(* ;; "We have REGION-TYPE, but maybe also a region that already has a source. Maybe we should make sure that the source is of that type? REGION can also be a screenregion, that falls through.")
(IF (REGIONP REGION)
THEN (SETQ TYPEDREGION (FETCH REGION-SOURCE OF REGION))
ELSEIF TYPELIST
THEN
(* ;;
 "If we don't find an unused region, CREATEW will create one in the ordinary way. We type it below.")
[SETQ TYPEDREGION (FIND R FOUND in (CDR TYPELIST)
SUCHTHAT (NOT (fetch REGION-INUSE of R]
(SETQ REGION TYPEDREGION))
(CL:WHEN (AND REGION-TYPE (NULL REGION))
(SETQ REGION (GRAB-TYPED-REGION REGION-TYPE)))
(SETQ WINDOW (CREATEW.ORIG REGION TITLE BORDERSIZE NOOPENFLG PROPS))
(* ;; "CREATEW doesn't call the user-entry GETREGION, so we have to trap and install its return region here.")
(CL:WHEN (AND TYPELIST (NULL TYPEDREGION)) (* ;
 "If not, we don't record this even if typed.")
(SETQ TYPEDREGION (OR (FETCH REGION-SOURCE OF (SETQ REGION (WINDOWREGION WINDOW)))
(COPY REGION)))
(NCONC1 TYPELIST TYPEDREGION))
(CL:WHEN TYPEDREGION
(replace REGION-INUSE of TYPEDREGION with T)
(WINDOWPROP WINDOW 'TYPED-REGION TYPEDREGION)
(WINDOWPROP WINDOW 'REGION-TYPE REGIONTYPE))
(CL:WHEN REGION-TYPE (REGISTER-TYPED-REGION REGION REGION-TYPE WINDOW))
WINDOW])
(RM-CLOSEW
[LAMBDA (WINDOW) (* ; "Edited 29-Dec-2021 15:44 by rmk")
(* ; "Edited 28-Dec-2021 11:02 by rmk")
(* ; "Edited 27-Nov-2021 10:00 by rmk:")
(* ; "Edited 26-Oct-2021 21:54 by rmk:")
(* ;
 "Edited 25-Apr-94 10:08 by sybalsky")
(* ; "")
[LAMBDA (WINDOW) (* ; "Edited 10-Oct-2023 22:11 by rmk")
(* ;;
 "Makes the window's typed region available for reuse, if the window is marked with a TYPEDREGION.")
(* ;; "It's possible that the window exists and can be reopened after it has been closed. The glitch in that case is that we may have decided to make the window's region available to another window, and if this window is opened again it will come on top of that other one (if it hasn't moved). Oh well.")
(LET [(TYPEDREGION (WINDOWPROP WINDOW 'TYPED-REGION]
(CL:WHEN (AND (CLOSEW.ORIG WINDOW)
TYPEDREGION)
(REPLACE REGION-INUSE OF TYPEDREGION WITH NIL)
(WINDOWPROP WINDOW 'TYPED-REGION NIL)
T)])
(* ;; "This replaces the particular typed-region in TYPED-REGIONS with the region that the window ended up with, perhaps after the user reshaped it. But (WINDOWPROP WINDOW 'REGION) doesn't include the prompt window, if it's there, and (WINDOWREGION WINDOW) would union in all of the attached windows (menus etc.) This code assumes that the promptwindow was taken out of the original region (lots of funky code does that), so it unions it back in to the REGION property to reconstruct the original typed-region. The alternative would be to have the windows region copy the original grabbed region and restore only that. But then we would be ignoring any reshaping adjustments.")
(LET* [CLOSEVAL (TYPEDREGION (WINDOWPROP WINDOW 'TYPED-REGION))
(REGIONTYPE (CAR TYPEDREGION))
(TREGION (CDR TYPEDREGION))
[PWINDOW (WINDOWP (CAR (MKLIST (WINDOWPROP WINDOW 'PROMPTWINDOW]
[WREGION (CL:IF PWINDOW
(UNIONREGIONS (WINDOWPROP WINDOW 'REGION)
(WINDOWPROP PWINDOW 'REGION))
(WINDOWPROP WINDOW 'REGION))]
(TREGIONLIST (AND REGIONTYPE (OR (ASSOC REGIONTYPE TYPED-REGIONS)
(CAR (PUSH TYPED-REGIONS (CONS REGIONTYPE]
(CL:WHEN (AND (SETQ CLOSEVAL (CLOSEW.ORIG WINDOW))
TYPEDREGION)
(CL:UNLESS (EQUAL TREGION WREGION)
(* ;; "The user reshaped the window after the region was taken from TYPED-REGIONS. Assume that the new shape is what should be offered when this is recycled. Important to keep the same structure")
(with REGION TREGION (SETQ LEFT (fetch (REGION LEFT) of WREGION))
(SETQ BOTTOM (fetch (REGION BOTTOM) of WREGION))
(SETQ WIDTH (fetch (REGION WIDTH) of WREGION))
(SETQ HEIGHT (fetch (REGION HEIGHT) of WREGION))))
(* ;; "Move TREGION to the front so most recently closed will be recycled first")
(CL:WHEN TREGIONLIST
(change (CDR TREGIONLIST)
(CONS TREGION (DREMOVE TREGION DATUM))))
(replace REGION-INUSE of TREGION with NIL)
(WINDOWPROP WINDOW 'TYPED-REGION NIL))
CLOSEVAL])
(RM-GETREGION
[LAMBDA (MINWIDTH MINHEIGHT INITREGION NEWREGIONFN NEWREGIONFNARG INITCORNERS)
[LAMBDA (MINWIDTH MINHEIGHT INITREGION NEWREGIONFN NEWREGIONFNARG INITCORNERS)
(* ; "Edited 10-Oct-2023 12:39 by rmk")
(* ; "Edited 14-Sep-2023 07:50 by rmk")
(* ; "Edited 1-Jan-2022 21:49 by rmk")
(* ;; "If INITREGION is a type atom and a region of that type is available, then use it as the INITREGION. Otherwise, add a copy of the new region to the available list, and assert that the new region has the copy as its source.")
(* ;; "If INITREGION is a type atom:")
(* ;; "We don't know what will happen to the new region, but if it ends up as a region for CREATEW, the source information enables us to mark its source as inuse.")
(* ;; " If a region of that type is available, then a (copy) is returned.")
(* ;; "This allows for the possibility that the application is actually asking the user for a constellation region that will be shrunk in anticipation of future satellite attachments. A future retrieval will return the original size and position, and it will then presumably be shrunk in the same way.")
(* ;; " Otherwise, the user is asked for a new region, that is added to the type list, and again a copy is returned.")
(LET (REGION (TYPELIST (ASSOC (CL:WHEN (AND INITREGION (LITATOM INITREGION))
INITREGION)
TYPED-REGIONS)))
(FOR R in (CDR TYPELIST) UNLESS (fetch REGION-INUSE of R)
WHEN [AND (OR (NULL MINWIDTH)
(ILEQ MINWIDTH (FETCH WIDTH OF R)))
(OR (NULL MINHEIGHT)
(ILEQ MINHEIGHT (FETCH HEIGHT OF R]
DO
(* ;; "Copy so the caller can update the region without affecting the recyclable source, but remember what it is based on. We don't mark it as used here, maybe a window won't be built around it and it will fade away. However, there is the risk that another GETREGION will find the same source before it is given to a window, in which case 2 windows might open up in the same place.")
(* ;; "We return a copy because we don't know what will happen to this region, whether it will be changed by future operations (e.g. by a constellation operation). A future retrieval will return the original size and position, and it will then presumably be shrunk in the same way.")
(SETQ REGION (COPY R))
(REPLACE REGION-SOURCE OF REGION WITH R)
(RETURN))
(* ;; "If we found a good one, we're done. Otherwise, run the normal code, but save the new region if it is typed.")
(* ;; " If INITREGION is not a typeatom, it is passed through to the original GETREGION, and the new region will not be managed.")
(LET (REGION TYPELIST (REGION-TYPE (AND (LITATOM INITREGION)
INITREGION)))
(SETQ REGION (GRAB-TYPED-REGION REGION-TYPE MINWIDTH MINHEIGHT))
(CL:UNLESS REGION
(SETQ REGION (GETREGION.ORIG MINWIDTH MINHEIGHT INITREGION NEWREGIONFN NEWREGIONFNARG
INITCORNERS))
(CL:WHEN TYPELIST
(* ;;
 "The new region is based on a typed region. The saved source is a copy of what we return.")
(* ;; "If we found a good one, INITREGIONS must have been a type, and we're done. Otherwise, run the normal code, but save the new region as a new instance if its typed.")
(NCONC1 TYPELIST (REPLACE REGION-SOURCE OF REGION WITH (COPY REGION)))))
(SETQ REGION (GETREGION.ORIG MINWIDTH MINHEIGHT (CL:IF REGION-TYPE
NIL
INITREGION)
NEWREGIONFN NEWREGIONFNARG INITCORNERS))
(CL:WHEN REGION-TYPE
(* ;; "A new typed region to add to the list . ")
(NCONC1 [OR (ASSOC REGION-TYPE TYPED-REGIONS)
(CAR (PUSH TYPED-REGIONS (CONS REGION-TYPE]
REGION)))
REGION])
(CLOSE-TYPED-W
[LAMBDA (TYPE) (* ; "Edited 29-Dec-2021 15:58 by rmk")
(* ; "Edited 27-Nov-2021 11:50 by rmk:")
[LAMBDA (TYPE) (* ; "Edited 14-Sep-2023 07:39 by rmk")
(* ; "Edited 29-Dec-2021 15:58 by rmk")
(* ; "Edited 27-Nov-2021 11:50 by rmk:")
(* ;; "Closes all windows of REGIONTYPE inside TYPE")
(* ;; "Closes all windows whose regions are of type TYPE")
(CL:WHEN TYPE
(for W R in (OPENWINDOWS) when (AND (SETQ WT (WINDOWPROP W 'REGION-TYPE))
(EQMEMB WT TYPE)) do (CLOSEW W)))])
(for W R in (OPENWINDOWS) eachtime [SETQ WT (CAR (WINDOWPROP W 'TYPED-REGION]
when (AND WT (EQMEMB WT TYPE)) do (CLOSEW W)))])
)
(RPAQ? TYPED-REGIONS )
@@ -211,27 +268,17 @@
(DECLARE%: EVAL@COMPILE
(HASHLINK TYPED-REGION (REGION-INUSE REGION-INUSE-HASH))
(HASHLINK REGION-SOURCE (REGION-SOURCE REGION-SOURCE-HASH))
)
(DECLARE%: EVAL@COMPILE (GLOBALVARS REGION-INUSE-HASH))
(SETUPHASHARRAY 'REGION-INUSE-HASH NIL)
(DECLARE%: EVAL@COMPILE (GLOBALVARS REGION-SOURCE-HASH))
(SETUPHASHARRAY 'REGION-SOURCE-HASH NIL)
)
(DECLARE%: EVAL@COMPILE (GLOBALVARS REGION-INUSE-HASH))
(SETUPHASHARRAY 'REGION-INUSE-HASH NIL)
(DECLARE%: EVAL@COMPILE (GLOBALVARS REGION-SOURCE-HASH))
(SETUPHASHARRAY 'REGION-SOURCE-HASH NIL)
(MOVD? 'CREATEW 'CREATEW.ORIG)
(MOVD? 'CLOSEW 'CLOSEW.ORIG)
@@ -683,10 +730,11 @@
)
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1672 3859 (SET-TYPED-REGIONS 1682 . 3857)) (3860 10861 (RM-CREATEW 3870 . 6377) (
RM-CLOSEW 6379 . 7780) (RM-GETREGION 7782 . 10368) (CLOSE-TYPED-W 10370 . 10859)) (11777 19256 (
RELCREATEREGION 11787 . 16410) (RELGETREGION 16412 . 19019) (RELCREATEPOSITION 19021 . 19254)) (19257
26061 (\RELCREATEREGION.REF 19267 . 23018) (\RELCREATEREGION.SIZE 23020 . 26059)) (26114 35456 (
RM-ATTACHWINDOW 26124 . 35454)) (35457 37191 (CLOSEWITH 35467 . 35994) (CLOSEWITH.DOIT 35996 . 36276)
(MOVEWITH 36278 . 36801) (MOVEWITH.DOIT 36803 . 37189)))))
(FILEMAP (NIL (1612 6730 (SET-TYPED-REGIONS 1622 . 3797) (GRAB-TYPED-REGION 3799 . 4825) (
REGISTER-TYPED-REGION 4827 . 6124) (REGION-TYPE 6126 . 6728)) (6731 14637 (RM-CREATEW 6741 . 8864) (
RM-CLOSEW 8866 . 11884) (RM-GETREGION 11886 . 14035) (CLOSE-TYPED-W 14037 . 14635)) (15280 22759 (
RELCREATEREGION 15290 . 19913) (RELGETREGION 19915 . 22522) (RELCREATEPOSITION 22524 . 22757)) (22760
29564 (\RELCREATEREGION.REF 22770 . 26521) (\RELCREATEREGION.SIZE 26523 . 29562)) (29617 38959 (
RM-ATTACHWINDOW 29627 . 38957)) (38960 40694 (CLOSEWITH 38970 . 39497) (CLOSEWITH.DOIT 39499 . 39779)
(MOVEWITH 39781 . 40304) (MOVEWITH.DOIT 40306 . 40692)))))
STOP

Binary file not shown.

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