From f7adee1260413fcfc35f0cd752ed3c9c425cea68 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Sat, 4 Mar 2023 18:12:57 -0800 Subject: [PATCH 1/4] WIP, incomplete keystroke tables --- content/en/docs/Keystrokes.md | 34 ++++++++++++++++++++++++++++++++++ content/en/docs/Using.md | 12 +++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 content/en/docs/Keystrokes.md diff --git a/content/en/docs/Keystrokes.md b/content/en/docs/Keystrokes.md new file mode 100644 index 000000000..64f709348 --- /dev/null +++ b/content/en/docs/Keystrokes.md @@ -0,0 +1,34 @@ +--- +title: Keystrokes, Mouse menus and Gestures +url: /doc/info/Keystrokes.html +weight: 40 +--- +The handling of keyboard and mouse clicks and gestures is different and varied within the Medley Interlisp environment. This chart shows common keystrokes. +[Tabled of Keystrokes](https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit?usp=sharing) has the raw data. + + +## At an "exec" (i.e., the REPL) + +|character |action | +|----------|------------------------------| +|back |delete the previous character| +|ctrl-H | "" | +|ctrl-M |insert End-of-Line | +|ctrl-alt-J|move down | +|ctrl-alt-L|move to start of line | +|ctrl-alt-Y|"get userexec" ???? | +|ctrl-P |interrupt typeout,set printlevel| + + +## Interrupt characters + +These are enabled per-process. Medley maintains, for each process, a "termtable" which enables different kinds of interrupts. In general, the process (sometimes known as the "TTY" process or the process that "has the keyboard". + +|character|action | +|---------|----------------------------------------- | +|ctrl-B |stop the process and enter a break window | +|ctrl-D | reset the process, unwind the stack to the top level | +|ctrl-E | unwind the stack as if an error occured without break| +|ctrl-G | ?? | + + diff --git a/content/en/docs/Using.md b/content/en/docs/Using.md index 908d8f80e..17943e1af 100644 --- a/content/en/docs/Using.md +++ b/content/en/docs/Using.md @@ -83,8 +83,9 @@ optional (if not provided they default to NIL) and ignores extra arguments ## Macros -Interlisp supports macros but unlike Common Lisp, Interlisp symbols -may simultaneously have a function definition and a macro definition. +Interlisp supports macros (including macros defined with CL:DEFMACRO). +In addition, Interlisp supports a kind of "compiler-macro" by +setting a MACRO property; a symbol may simultaneously have a function definition and a MACRO property. If a symbol has both a function definition and a macro definition, the function definition is used by the interpreter and the macro is used by the compiler. This allows for extra error checking during @@ -93,7 +94,7 @@ development and fast operation during production use. Interlisp also has a backquote facility similar to Common Lisp's \` and \, read macros. -Unlike Common Lisp, Interlisp does not have a special function for +Interlisp does not have a special function for defining macros. Macros are defined by placing their definition on the property list of the symbol. @@ -110,6 +111,11 @@ In Medley Common Lisp and Interlisp are fully integrated. From within Common Lisp, Interlisp functions may be accessed through the Common Lisp package nicknamed ``IL''. +# Keystrokes and Mouse menus and gestures + +Interlisp and Medley were developed long before there were "User Interface Guidelines" for what keystrokes and mouse gestures and menus. +See [Keystrokes, Mouse Menus and Gestures](Keystrokes). + # Continuing On This introduction was designed to provide the most general of From f4aa5d331e6ee5dde227440d13521ea598785639 Mon Sep 17 00:00:00 2001 From: Andrew Sengul Date: Wed, 6 Dec 2023 09:14:38 -0700 Subject: [PATCH 2/4] Update Keystrokes.md Fix typo and improve formatting a bit Signed-off-by: Andrew Sengul --- content/en/docs/Keystrokes.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/en/docs/Keystrokes.md b/content/en/docs/Keystrokes.md index 64f709348..c992f0e10 100644 --- a/content/en/docs/Keystrokes.md +++ b/content/en/docs/Keystrokes.md @@ -4,19 +4,19 @@ url: /doc/info/Keystrokes.html weight: 40 --- The handling of keyboard and mouse clicks and gestures is different and varied within the Medley Interlisp environment. This chart shows common keystrokes. -[Tabled of Keystrokes](https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit?usp=sharing) has the raw data. +[Table of Keystrokes](https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit?usp=sharing) has the raw data. ## At an "exec" (i.e., the REPL) -|character |action | -|----------|------------------------------| -|back |delete the previous character| -|ctrl-H | "" | -|ctrl-M |insert End-of-Line | -|ctrl-alt-J|move down | -|ctrl-alt-L|move to start of line | -|ctrl-alt-Y|"get userexec" ???? | +|character |action | +|----------|--------------------------------| +|back |delete the previous character | +|ctrl-H | "" | +|ctrl-M |insert End-of-Line | +|ctrl-alt-J|move down | +|ctrl-alt-L|move to start of line | +|ctrl-alt-Y|"get userexec" ???? | |ctrl-P |interrupt typeout,set printlevel| From 033087c37be3e413618cd385f3c3162069ff5b6f Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Mon, 25 Dec 2023 14:30:15 -0800 Subject: [PATCH 3/4] leave breadcrumbs if this has been moved --- .../using-medley/keystrokes.md} | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) rename content/en/{docs/Keystrokes.md => software/using-medley/keystrokes.md} (63%) diff --git a/content/en/docs/Keystrokes.md b/content/en/software/using-medley/keystrokes.md similarity index 63% rename from content/en/docs/Keystrokes.md rename to content/en/software/using-medley/keystrokes.md index c992f0e10..60231cb40 100644 --- a/content/en/docs/Keystrokes.md +++ b/content/en/software/using-medley/keystrokes.md @@ -1,24 +1,27 @@ --- title: Keystrokes, Mouse menus and Gestures -url: /doc/info/Keystrokes.html +url: /software/using-medley/keystrokes/ weight: 40 +aliases: + - /doc/info/Keystrokes.html --- -The handling of keyboard and mouse clicks and gestures is different and varied within the Medley Interlisp environment. This chart shows common keystrokes. -[Table of Keystrokes](https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit?usp=sharing) has the raw data. +The handling of keyboard and mouse clicks and gestures is different and varied within the Medley environment. This chart shows common keystrokes. +[Table of Keystrokes](https://docs.google.com/spreadsheets/d/1FOkrr62TtEhhY49m9U0T_6bvqSGRQt9fBRtMDw0YKtY/edit?usp=sharing) more data. -## At an "exec" (i.e., the REPL) +We'd like to improve keyboard handling but haven't yet found a path. + +## At an "exec" (i.e., the REPL). |character |action | |----------|--------------------------------| -|back |delete the previous character | -|ctrl-H | "" | -|ctrl-M |insert End-of-Line | +|backspace | delete the previous character | +|ctrl-H | (same as backspace) | +|enter |if at end of line, terminate | +|ctrl-M | (same as enter) | |ctrl-alt-J|move down | |ctrl-alt-L|move to start of line | |ctrl-alt-Y|"get userexec" ???? | -|ctrl-P |interrupt typeout,set printlevel| - ## Interrupt characters @@ -29,6 +32,8 @@ These are enabled per-process. Medley maintains, for each process, a "termtable" |ctrl-B |stop the process and enter a break window | |ctrl-D | reset the process, unwind the stack to the top level | |ctrl-E | unwind the stack as if an error occured without break| -|ctrl-G | ?? | +|ctrl-P | interrupt printing and reset the PRINTLEVEL | + + From 088e4b5f9973ff6d3977cb5dd5b017605fbfb9b7 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Mon, 25 Dec 2023 14:40:45 -0800 Subject: [PATCH 4/4] This Using.html has been superceded by other changes --- content/en/docs/Using.md | 140 --------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 content/en/docs/Using.md diff --git a/content/en/docs/Using.md b/content/en/docs/Using.md deleted file mode 100644 index 17943e1af..000000000 --- a/content/en/docs/Using.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: The Basics of Interlisp -url: /doc/info/Using.html -weight: 2 ---- - -Some very basics -- enough to get you to find the Medley User's Guide of ~30 years ago. - -# Interlisp - -Interlisp is a dialect of Lisp and as such, it is based on the familiar -syntax of left-parenthesis, function name, arguments, and -right-parenthesis. Besides many of the functions having different -names and arguments compared to Common Lisp, Interlisp has many other, -more fundamental, differences from Common Lisp. While this section -will not go into any of the functional differences between Interlisp -and Common Lisp, it will attempt to detail the more fundamental -differences between the two. The reference manual may be used for a -detailed description of the Interlisp functions. - -## Upper- and Lower Case - -Interlisp uses mixed case. That is, upper-case letters and lower-case -letters are treated as different. This means you can have a variable -name `my-var` and a variable named `MY-VAR` that are unique and -unrelated to each other. This is true for Common Lisp too, but -the READ function in Common Lisp translates. - -Most Interlisp primitives are upper case. - -As a side note, the Medley system includes a package called DWIM (Do -What I Mean). This system reads in what you type and attempts to -automatically correct input errors. At times, in an effort to correct -typing errors this system will auto-convert something you type in -lowercase into uppercase. Thus it may appear that the case doesn't -matter - but it does. - -## Variables - -Except for Special Variables, variables in Common Lisp are lexically -scoped. This means that local variables are only visible within the -scope they are defined. This means, among other things, that -variables defined in one function are not visible to other functions. - -In functions that are running interpretively (as opposed to having -been compiled), variables in Interlisp are dynamically scoped. This -means that variables are visible within the dynamic environment they -are in. For example, let's say we create two functions `FUN1` -and `FUN2`. If `FUN1` introduced a local variable and then -called `FUN2`, then `FUN2` would have access to the variable -since it is in the dynamic environment of being called by `FUN1`. -In other words, the variable was in existence when `FUN2` was -called. However, the Interlisp compiler "hides" variables unless -they are "declared special", so that they are essentially lexically scoped, -as in Common Lisp. - -Common Lisp also supports dynamic variables as well. They are called -the Special Variables. - -## LISP-2 - -Like Common Lisp but unlike Scheme, Interlisp is a LISP-2 language. -This means, in part, that the namespace for variables is separate from -the namespace for functions. For example, in Interlisp and -Common Lisp, you can simultaneously have a variable named `ABC` -and a function named `ABC` that are unrelated. - -## LAMBDA & NLAMBDA & CL:LAMBDA - -Interlisp shares the notion of `LAMBDA` expressions with Common Lisp, -as a way of defining functions. Interlisp `LAMBDA` specifies a list -of parameters; Common Lisp parameter lists can be decorated with -`&OPTIONAL`, `&REST` and `&KEYWORD` parameters. Interlisp also -adds the notion of an `NLAMBDA` function that doesn't evaluate -its arguments -- arguments to -`NLAMBDA` function are passed directly into a function without -being evaluated. - -Interlisp supports spread and no-spread lambda arguments similar to -Common Lisp. However, Interlisp treats all arguments as -optional (if not provided they default to NIL) and ignores extra arguments -(no warning or error is raised). - -## Macros - -Interlisp supports macros (including macros defined with CL:DEFMACRO). -In addition, Interlisp supports a kind of "compiler-macro" by -setting a MACRO property; a symbol may simultaneously have a function definition and a MACRO property. -If a symbol has both a function definition and a macro definition, the -function definition is used by the interpreter and the macro -is used by the compiler. This allows for extra error checking during -development and fast operation during production use. - -Interlisp also has a backquote facility similar to Common Lisp's \` -and \, read macros. - -Interlisp does not have a special function for -defining macros. Macros are defined by placing their definition on -the property list of the symbol. - -# Medley Common Lisp - -The term "Common Lisp" covers a range of development stages, first -defined by the book "Common Lisp, the Language" editions 1 (aka CLtL1) -and 2 (aka CLtL2) and ultimately the ANSI Standard Common Lisp (aka ANSI). -The Common Lisp currently supported by Medley is somewhere between -CLtl1 and CLtl2. We are hoping to complete the move to -CLtl2. - -In Medley Common Lisp and Interlisp are fully -integrated. From within Common Lisp, Interlisp functions may be -accessed through the Common Lisp package nicknamed ``IL''. - -# Keystrokes and Mouse menus and gestures - -Interlisp and Medley were developed long before there were "User Interface Guidelines" for what keystrokes and mouse gestures and menus. -See [Keystrokes, Mouse Menus and Gestures](Keystrokes). - -# Continuing On - -This introduction was designed to provide the most general of -information -- just enough to get you started. Medley comes -with extensive documentation. - -In searchable PDF and (imperfect) HTML: - - -* (1991) [Sun User Guide](/documentation/SunUserGuide.pdf) -* (1992) [Medley for the Novice](/documentation/Medley-Primer.pdf) -* (1993) [Interlisp Reference Manual](/documentation/IRM.pdf) - -Medley Interlisp also includes an online reference: - -* right-click on the desktop to get to the system menu -* select DInfo - -_or_, at any prompt, the `man` command will look up an (Interlisp) symbol. - ------------- -_Many thanks to [Blake McBride](https://github.com/blakemcbride) and his [Medley Intro](https://github.com/blakemcbride/medley-intro) from which this was initially taken._