1
0
mirror of synced 2026-04-27 20:48:58 +00:00

Rmk88 split screen updates and color, eliminate reliance on STREAMHINT xpointer (#2119)

* Tedit window splitting is more robust, interface through menu items instead of split-region on the right of the window.  See TEDIT-RELEASENOTES.TEDIT

* Tedit recognizes color as specfied by DSPCOLOR, passes it to hardcopy

* N-way buttons default to unsorted--new items go at the end. Otherwise keyboard shortcut meta-3 for the 3rd font might pick a different one depending on what went before.

* USER.CM can be specified as an opening property for Bravo conversion.

* Adresses/fixes Tedit issues #2173 #2172 #2171 #2142  #2105 #2062 #2059 #1972 (maybe some others).

* Changes to rationalize internal interfaces and simplify code, and particularly to eliminate internal dependencies on the STREAMHINT Xpointer backlink.  STREAMHINT is only accessed if a client has grabbed the TEXTOBJ and passes it back in.  The stream and window are the safe/reliable way of referencing the Tedit state (and the window and stream know about each other, and know about the TEXTOBJ only through the stream).

* Many changes to TEDIT-STRESS, including new defaults CHECKARRAYS NIL, NSYSOUTS 0, ARRAYBLOCKCHECKING T

* lispusers/EQUATIONS: image object no longer saves state on the stream, not the window (which may not be there).

* Rename CHARNAME to be CHARCODE.ENCODE, parallel to CHARCODE.DECODE
This commit is contained in:
rmkaplan
2025-07-03 00:06:10 -07:00
committed by GitHub
parent d6253dbffd
commit 63d5849a15
47 changed files with 5481 additions and 4204 deletions

View File

@@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "28-Mar-2025 14:07:00" {WMEDLEY}<library>TEDIT>TEDIT-FIND.;155 43772
(FILECREATED "21-Apr-2025 22:42:57" {WMEDLEY}<library>tedit>TEDIT-FIND.;165 43576
:EDIT-BY rmk
:CHANGES-TO (FNS TEDIT.NEXT)
:CHANGES-TO (FNS TEDIT.SUBSTITUTE)
:PREVIOUS-DATE "19-Mar-2025 11:25:45" {WMEDLEY}<library>tedit>TEDIT-FIND.;153)
:PREVIOUS-DATE "20-Apr-2025 23:44:49" {WMEDLEY}<library>tedit>TEDIT-FIND.;162)
(PRETTYCOMPRINT TEDIT-FINDCOMS)
@@ -67,15 +67,15 @@
(CAR RESULT)))])
(TEDIT.SUBSTITUTE
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM? NEWCHARLOOKS)(* ; "Edited 19-Mar-2025 11:20 by rmk")
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM? NEWCHARLOOKS)(* ; "Edited 21-Apr-2025 22:23 by rmk")
(* ; "Edited 6-Apr-2025 14:39 by rmk")
(* ; "Edited 19-Mar-2025 11:20 by rmk")
(* ; "Edited 15-Mar-2025 00:23 by rmk")
(* ; "Edited 6-Mar-2025 20:17 by rmk")
(* ; "Edited 8-Dec-2024 15:47 by rmk")
(* ; "Edited 26-Nov-2024 23:49 by rmk")
(* ; "Edited 15-Aug-2024 09:20 by rmk")
(* ; "Edited 14-Jul-2024 00:24 by rmk")
(* ; "Edited 18-May-2024 23:03 by rmk")
(* ; "Edited 12-May-2024 21:11 by rmk")
(* ; "Edited 15-Mar-2024 14:09 by rmk")
(* ; "Edited 6-Jan-2024 11:09 by rmk")
(* ; "Edited 12-Nov-2023 12:29 by rmk")
@@ -88,7 +88,7 @@
(CL:UNLESS (\TEDIT.READONLY TSTREAM)
(RESETLST
(PROG ((TEXTOBJ (TEXTOBJ TSTREAM))
(PROG ((TEXTOBJ (FTEXTOBJ TSTREAM))
(NREPLACEMENTS 0)
(YESLIST '("Y" "y" "yes" "YES" "T" "Yes"))
SEARCHSTRING ABORTFLG ENDCHAR# STARTCHAR# CONFIRMFLG SEL REPLACE-LEN ACTIONSTRING
@@ -159,12 +159,10 @@
ENDCHAR#))
do (* ;
 "Show each substitution site and ask for permission")
(\TEDIT.UPDATE.SEL SEL (CAR HIT)
(\TEDIT.UPDATE.SEL TSTREAM (CAR HIT)
(CADR HIT)
'RIGHT
'PENDINGDEL)
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.SHOWSEL SEL T TEXTOBJ)
(TEDIT.NORMALIZECARET TEXTOBJ SEL)
[SELECTQ (U-CASE (NTHCHAR (TEDIT.GETINPUT TEXTOBJ
"OK to replace? ['q' quits]" "Yes")
@@ -175,8 +173,8 @@
(SETQ CHARLOOKS (PCHARLOOKS (\TEDIT.CHTOPC (CAR HIT)
TEXTOBJ))))
(\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY REPLACEMENT
'COPY TEXTOBJ)
TEXTOBJ SEL)
'COPY TSTREAM)
TSTREAM SEL)
(\TEDIT.COPYSEL SEL LASTSEL)
(* ; "This may be where we end up")
(add NREPLACEMENTS 1)
@@ -187,7 +185,7 @@
(* ;;
 "Turn off rejected selection, search for next starting one charcter later. ENDCHAR# is still OK.")
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
(\TEDIT.NOSEL TSTREAM)
(SETQ STARTCHAR# (ADD1 (CAR HIT]
finally (\TEDIT.COPYSEL LASTSEL SEL))
else
@@ -204,10 +202,10 @@
(\TEDIT.UPDATE.SEL SEL (CAR HIT)
(CADR HIT)
'RIGHT)
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.FIXSEL SEL TSTREAM)
(\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY REPLACEMENT
'COPY TEXTOBJ NIL CHARLOOKS)
TEXTOBJ SEL)
'COPY TSTREAM NIL CHARLOOKS)
TSTREAM SEL)
(push EVENTS (\TEDIT.POPEVENT TEXTOBJ))
(* ;
 "Collect the events for a single composite")
@@ -221,23 +219,22 @@
(* ;; "At least one replacement, update the lines that have changed. We have to calculate how many of the original characters have %"changed%" by adding the TOTALDIFF to the final position of the last character of the last hit. ")
(\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION FIRSTHIT
(\TEDIT.UPDATE.LINES TSTREAM 'INSERTION FIRSTHIT
(IDIFFERENCE (IPLUS (FGETSEL SEL CHLIM)
TOTALDIFF)
FIRSTHIT))
(* ;; "Not clear what the final selection should be, if there are multiple changes. The original selection? A selection that goes from the beginning of the first subsitution to the end of the last (as here)? Or just the selection of the last substitution?")
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
(\TEDIT.NOSEL TSTREAM)
(\TEDIT.UPDATE.SEL SEL FIRSTHIT (IDIFFERENCE HITLAST FIRSTHIT
)
'RIGHT)
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.HISTORYADD.COMPOSITE TEXTOBJ EVENTS))]
(* ;; "Save the search & replacement strings to offer for next time:")
(\TEDIT.SHOWSEL SEL T TEXTOBJ)
(\TEDIT.SHOWSEL SEL T TSTREAM)
(TEDIT.NORMALIZECARET TSTREAM SEL)
(PUTTEXTPROP TEXTOBJ 'TEDIT.LAST.SUBSTITUTE.STRING SEARCHSTRING)
(PUTTEXTPROP TEXTOBJ 'TEDIT.LAST.REPLACEMENT.STRING (\TEDIT.SELPIECES.TO.STRING
@@ -251,7 +248,8 @@
(RETURN NREPLACEMENTS))))])
(TEDIT.NEXT
[LAMBDA (TSTREAM) (* ; "Edited 28-Mar-2025 14:06 by rmk")
[LAMBDA (TSTREAM) (* ; "Edited 6-Apr-2025 14:40 by rmk")
(* ; "Edited 28-Mar-2025 14:06 by rmk")
(* ; "Edited 14-Mar-2025 23:14 by rmk")
(* ; "Edited 11-Mar-2025 15:35 by rmk")
(* ; "Edited 9-Mar-2025 11:31 by rmk")
@@ -307,11 +305,9 @@
then
(* ;; "CHNO is the beginning of the located blank, DCH is its length")
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
(\TEDIT.UPDATE.SEL SEL CHNO DCH 'RIGHT 'PENDINGDEL)
(\TEDIT.NOSEL TSTREAM)
(\TEDIT.UPDATE.SEL TSTREAM CHNO DCH 'RIGHT 'PENDINGDEL)
(FSETTOBJ TEXTOBJ BLUEPENDINGDELETE T)
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.SHOWSEL SEL T TEXTOBJ)
(FSETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ SEL))
(TEDIT.NORMALIZECARET TEXTOBJ)
else (TEDIT.PROMPTPRINT TEXTOBJ "No more blanks to fill in" T])
@@ -688,10 +684,10 @@
(DREVERSE $$VAL))])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (961 20132 (TEDIT.FIND 971 . 1555) (TEDIT.FIND.SETSEL 1557 . 2022) (TEDIT.FIND.BACKWARD
2024 . 2603) (TEDIT.SUBSTITUTE 2605 . 15424) (TEDIT.NEXT 15426 . 20130)) (20133 23562 (
TEDIT.FIND.OBJECT 20143 . 21643) (TEDIT.FIND.OBJECT.BACKWARD 21645 . 23560)) (23595 43749 (\TEDIT.FIND
23605 . 26541) (\TEDIT.FIND.BACKWARD 26543 . 29061) (\TEDIT.WCFIND 29063 . 32582) (\TEDIT.BASICFIND
32584 . 34943) (\TEDIT.WCFIND.BACKWARD 34945 . 38409) (\TEDIT.BASICFIND.BACKWARD 38411 . 40668) (
\TEDIT.PARSE.SEARCHSTRING 40670 . 43747)))))
(FILEMAP (NIL (967 19936 (TEDIT.FIND 977 . 1561) (TEDIT.FIND.SETSEL 1563 . 2028) (TEDIT.FIND.BACKWARD
2030 . 2609) (TEDIT.SUBSTITUTE 2611 . 15222) (TEDIT.NEXT 15224 . 19934)) (19937 23366 (
TEDIT.FIND.OBJECT 19947 . 21447) (TEDIT.FIND.OBJECT.BACKWARD 21449 . 23364)) (23399 43553 (\TEDIT.FIND
23409 . 26345) (\TEDIT.FIND.BACKWARD 26347 . 28865) (\TEDIT.WCFIND 28867 . 32386) (\TEDIT.BASICFIND
32388 . 34747) (\TEDIT.WCFIND.BACKWARD 34749 . 38213) (\TEDIT.BASICFIND.BACKWARD 38215 . 40472) (
\TEDIT.PARSE.SEARCHSTRING 40474 . 43551)))))
STOP