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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user