From 12377b9e6cf22c95e06313eb9cf70f06adfc28fc Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Wed, 23 Apr 2025 07:42:24 -0700 Subject: [PATCH 01/18] Tedit split windows, color, internals --- internal/TEDIT-DEBUG | 208 ++-- internal/TEDIT-DEBUG.LCOM | Bin 61959 -> 60861 bytes library/tedit/TEDIT | 486 +++++---- library/tedit/TEDIT-ABBREV | 15 +- library/tedit/TEDIT-ABBREV.LCOM | Bin 5019 -> 5021 bytes library/tedit/TEDIT-BUTTONS | 69 +- library/tedit/TEDIT-BUTTONS.LCOM | Bin 35180 -> 35292 bytes library/tedit/TEDIT-CHAT | 91 +- library/tedit/TEDIT-CHAT.LCOM | Bin 5406 -> 4965 bytes library/tedit/TEDIT-FILE | 168 +-- library/tedit/TEDIT-FILE.LCOM | Bin 38658 -> 38677 bytes library/tedit/TEDIT-FIND | 58 +- library/tedit/TEDIT-FIND.LCOM | Bin 9247 -> 9194 bytes library/tedit/TEDIT-FIXFILES | 183 ++++ library/tedit/TEDIT-FIXFILES.LCOM | Bin 0 -> 4504 bytes library/tedit/TEDIT-FNKEYS | 597 +++++++---- library/tedit/TEDIT-FNKEYS.LCOM | Bin 37368 -> 39856 bytes library/tedit/TEDIT-HCPY | 305 +++--- library/tedit/TEDIT-HCPY.LCOM | Bin 12514 -> 12122 bytes library/tedit/TEDIT-HISTORY | 588 ++++++----- library/tedit/TEDIT-HISTORY.LCOM | Bin 13365 -> 15293 bytes library/tedit/TEDIT-LOOKS | 346 ++++--- library/tedit/TEDIT-LOOKS.LCOM | Bin 38955 -> 39727 bytes library/tedit/TEDIT-MENU | 319 +++++- library/tedit/TEDIT-MENU.LCOM | Bin 47358 -> 53003 bytes library/tedit/TEDIT-OLDFILE.LCOM | Bin 17524 -> 17553 bytes library/tedit/TEDIT-PAGE | 470 +++++---- library/tedit/TEDIT-PAGE.LCOM | Bin 28839 -> 29410 bytes library/tedit/TEDIT-RELEASENOTES.TEDIT | Bin 36150 -> 39350 bytes library/tedit/TEDIT-SCREEN | 918 ++++++++-------- library/tedit/TEDIT-SCREEN.LCOM | Bin 31683 -> 34767 bytes library/tedit/TEDIT-SELECTION | 822 ++++++++------- library/tedit/TEDIT-SELECTION.LCOM | Bin 30293 -> 31275 bytes library/tedit/TEDIT-STREAM | 427 ++++---- library/tedit/TEDIT-STREAM.LCOM | Bin 37165 -> 37976 bytes library/tedit/TEDIT-TFBRAVO.LCOM | Bin 27112 -> 27143 bytes library/tedit/TEDIT-WINDOW | 1324 +++++++++++------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 65925 -> 62351 bytes library/tedit/TEDIT.LCOM | Bin 32146 -> 33043 bytes library/tedit/TOPLINE.TEDIT | Bin 0 -> 1685 bytes library/tedit/TSTREAMS,TEDIT | Bin 0 -> 1286 bytes library/tedit/tedit-exports.all | 141 +-- 42 files changed, 4141 insertions(+), 3394 deletions(-) create mode 100644 library/tedit/TEDIT-FIXFILES create mode 100644 library/tedit/TEDIT-FIXFILES.LCOM create mode 100644 library/tedit/TOPLINE.TEDIT create mode 100644 library/tedit/TSTREAMS,TEDIT diff --git a/internal/TEDIT-DEBUG b/internal/TEDIT-DEBUG index f89323284..acea03411 100644 --- a/internal/TEDIT-DEBUG +++ b/internal/TEDIT-DEBUG @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "29-Mar-2025 22:37:05" {WMEDLEY}TEDIT-DEBUG.;143 131559 +(FILECREATED "17-Apr-2025 19:42:02" {WMEDLEY}TEDIT-DEBUG.;157 134317 :EDIT-BY rmk - :CHANGES-TO (MACROS DEBUGOUTPUT) - (FNS SP SL SSP SPF STL TEST.TEMPLATE) + :CHANGES-TO (FNS TEST.TEMPLATE) - :PREVIOUS-DATE "28-Mar-2025 20:51:43" {WMEDLEY}TEDIT-DEBUG.;141) + :PREVIOUS-DATE "17-Apr-2025 13:40:19" {WMEDLEY}TEDIT-DEBUG.;156) (PRETTYCOMPRINT TEDIT-DEBUGCOMS) @@ -23,7 +22,8 @@ (* ;;  "This is stored in internal/ so that it remains compatible with the commits/branches/PRs/releases.") - (VARS (\TEDIT.THELPFLG T)) + (VARS (\TEDIT.THELPFLG T) + (TFILES (CONS 'TEDIT-DEBUG TEDITFILES))) (COMS (* ;  "Get/set (default) object, stream, window, selection") (FNS GTO GTS GTW GSEL) @@ -68,7 +68,8 @@ (FNS DFVENUE VSEE) (FNS PTT) (* ; "Plain text") - (MACROS DEBUGOUTPUT) + (COMS (MACROS DEBUGOUTPUT) + (FNS DEBUGOUTPUT.STREAM)) (FNS TEDIT-DEBUG) (FNS TRENAME) (FILES (NOERROR) @@ -100,6 +101,8 @@ (RPAQQ \TEDIT.THELPFLG T) +(RPAQ TFILES (CONS 'TEDIT-DEBUG TEDITFILES)) + (* ; "Get/set (default) object, stream, window, selection") @@ -157,11 +160,18 @@ (DEFINEQ (TEST.TEMPLATE - [LAMBDA (FILE) (* ; "Edited 29-Mar-2025 09:51 by rmk") - (CL:WHEN (AND (TEXTSTREAM LASTTEXTSTREAM) + [LAMBDA (FILE) (* ; "Edited 17-Apr-2025 19:41 by rmk") + (* ; "Edited 29-Mar-2025 09:51 by rmk") + (CL:WHEN (AND (TEXTSTREAM LASTTEXTSTREAM T) (TEDITWINDOWP LASTTEXTSTREAM) (OPENWP (TEDITWINDOWP LASTTEXTSTREAM))) - (TEXTPROP LASTTEXTSTREAM 'DIRTY NIL) + (for ST SW in (GETTEXTPROP LASTTEXTSTREAM 'SHOWSTREAMS) when (AND (SETQ SW ( + \TEDIT.PRIMARYPANE + ST)) + (OPENWP SW)) + do (PUTTEXTPROP ST 'DIRTY NIL) + (CLOSEW SW)) + (PUTTEXTPROP LASTTEXTSTREAM 'DIRTY NIL) (CLOSEW (TEDITWINDOWP LASTTEXTSTREAM))) (LET [(TSTREAM (TEXTSTREAM (TEDIT FILE NIL NIL '(LEAVETTY T] (SETQ LASTTEXTSTREAM TSTREAM) @@ -444,7 +454,10 @@ (DEFINEQ (SP - [LAMBDA (PC NP OFILE TOBJ FONT NOCR) (* ; "Edited 29-Mar-2025 22:34 by rmk") + [LAMBDA (PC NP OFILE TOBJ FONT NOCR) (* ; "Edited 17-Apr-2025 13:37 by rmk") + (* ; "Edited 15-Apr-2025 13:53 by rmk") + (* ; "Edited 11-Apr-2025 12:15 by rmk") + (* ; "Edited 29-Mar-2025 22:34 by rmk") (* ; "Edited 6-Jan-2025 22:18 by rmk") (* ; "Edited 16-Dec-2024 15:50 by rmk") (* ; "Edited 30-Nov-2024 19:34 by rmk") @@ -502,8 +515,7 @@ (SETQ NP (CL:IF NP 20 MAX.SMALLP))) - (DEBUGOUTPUT OFILE WTYPE TITLE (DSPFONT (OR FONT '(TERMINAL 8)) - OFILE) + (DEBUGOUTPUT [DEBUGOUTPUT.STREAM OFILE WTYPE TITLE 120 (OR FONT '(TERMINAL 8] (for P PFILES inpieces PC as I from 1 to NP as PCNO from (OR (PIECENUM PC TEXTOBJ) 1) do @@ -521,11 +533,16 @@ OLDVALUE]) (PRINTOUT OFILE .I3 PCNO "/") (SPPRINT P OFILE TEXTOBJ NOCR)) - (TERPRI OFILE)) + (TERPRI OFILE) + (CL:WHEN (TEXTSTREAMP OFILE) + (TEXTPROP.ADD TEXTOBJ 'SHOWSTREAMS OFILE))) (RETURN PC]) (SL - [LAMBDA (FIRSTLINE LASTLINE PANE TOBJ OFILE) (* ; "Edited 29-Mar-2025 20:27 by rmk") + [LAMBDA (FIRSTLINE LASTLINE PANE TOBJ OFILE) (* ; "Edited 17-Apr-2025 13:36 by rmk") + (* ; "Edited 15-Apr-2025 13:57 by rmk") + (* ; "Edited 11-Apr-2025 12:15 by rmk") + (* ; "Edited 29-Mar-2025 20:27 by rmk") (* ; "Edited 21-Jan-2025 15:39 by rmk") (* ; "Edited 6-Jan-2025 22:58 by rmk") (* ; "Edited 7-Dec-2024 16:34 by rmk") @@ -537,9 +554,6 @@ (* ; "Edited 27-Oct-2024 18:38 by rmk") (* ; "Edited 25-Oct-2024 22:25 by rmk") (* ; "Edited 21-Oct-2024 23:08 by rmk") - - (* ;; "Shows a selection of the lines backing the display in PANE") - (LET (LINES WTYPE PNO TITLE) (if OFILE then (CL:WHEN (MEMB OFILE '(T TEDIT)) @@ -564,8 +578,9 @@ (SETQ TOBJ (pop LINES)) (SETQ PANE (pop LINES)) (SETQ PNO (pop LINES)) - (DEBUGOUTPUT OFILE WTYPE TITLE (PRINTOUT OFILE .FONT '(TERMINAL 8) - "Pane " PNO " = " PANE T) + (DEBUGOUTPUT (DEBUGOUTPUT.STREAM OFILE WTYPE TITLE NIL '(TERMINAL 8)) + (PRINTOUT OFILE .FONT '(TERMINAL 8) + "Pane " PNO " = " PANE T) (PRINTOUT OFILE .FONT '(TERMINAL 8) 15 "HT" -3 "BOT" 27 .FONT '(TERMINAL 8 BOLD) "C1" 36 "CN" .FONT '(TERMINAL 8) @@ -577,11 +592,14 @@ (TERPRI OFILE) (CL:WHEN (EQ FIRSTLINE LASTLINE) (printout OFILE (for L inlines (FGETLD LASTLINE NEXTLINE) sum 1) - " lines below LASTLINE" T T))) + " lines below LASTLINE" T T)) + (CL:WHEN (TEXTSTREAMP OFILE) + (TEXTPROP.ADD TOBJ 'SHOWSTREAMS OFILE))) FIRSTLINE]) (SSP - [LAMBDA (SELPIECES NP OFILE TEXTOBJ) (* ; "Edited 29-Mar-2025 22:35 by rmk") + [LAMBDA (SELPIECES NP OFILE TEXTOBJ) (* ; "Edited 11-Apr-2025 12:16 by rmk") + (* ; "Edited 29-Mar-2025 22:35 by rmk") (* ; "Edited 30-Jan-2025 11:25 by rmk") (* ; "Edited 26-Nov-2024 20:54 by rmk") (* ; "Edited 3-Mar-2024 12:58 by rmk") @@ -600,15 +618,16 @@ then (SETQ TEXTOBJ (TEXTOBJ OFILE)) (SETQ OFILE NIL) else (GTO TEXTOBJ)) - (DEBUGOUTPUT OFILE (CL:UNLESS OFILE 'SSP) - NIL + (DEBUGOUTPUT (DEBUGOUTPUT.STREAM OFILE (CL:UNLESS OFILE 'SSP) + NIL) (for PC inselpieces SELPIECES as I from 1 to (OR NP 50) do (PRINTOUT OFILE .I3 I "/") (SPPRINT PC OFILE TEXTOBJ))) SELPIECES]) (SPF - [LAMBDA (ARG TITLE OFILE) (* ; "Edited 29-Mar-2025 22:36 by rmk") + [LAMBDA (ARG TITLE OFILE) (* ; "Edited 11-Apr-2025 12:16 by rmk") + (* ; "Edited 29-Mar-2025 22:36 by rmk") (* ; "Edited 30-Aug-2024 21:25 by rmk") (* ; "Edited 15-Aug-2024 22:39 by rmk") (* ; "Edited 13-Aug-2024 10:45 by rmk") @@ -627,9 +646,10 @@ (SETQ TEXTOBJ (TEXTOBJ (\TEDIT.MAINW TEXTOBJ)))) (SETQ PAGEREGIONS (GETTOBJ TEXTOBJ TXTPAGEFRAMES))) (SETQ TITLE (CONCAT "Page regions for " (OR TITLE TEXTOBJ PAGEREGIONS))) - (DEBUGOUTPUT OFILE 'SPF TITLE (PRINTOUT OFILE .FONT '(TERMINAL 8 BOLD) - TITLE .FONT '(TERMINAL 8) - T) + (DEBUGOUTPUT (DEBUGOUTPUT.STREAM OFILE 'SPF TITLE) + (PRINTOUT OFILE .FONT '(TERMINAL 8 BOLD) + TITLE .FONT '(TERMINAL 8) + T) (for TYPE PF (FIRSTPF _ (TEDIT.GET.PAGEFORMAT PAGEREGIONS 'FIRST/DEFAULT)) in '(FIRST/DEFAULT LEFT RIGHT) collect (SETQ PF (TEDIT.GET.PAGEFORMAT PAGEREGIONS TYPE)) @@ -912,7 +932,8 @@ (DEFINEQ (STL - [LAMBDA (THISLINE LASTCS LCHAR1 OFILE) (* ; "Edited 29-Mar-2025 22:36 by rmk") + [LAMBDA (THISLINE LASTCS LCHAR1 OFILE) (* ; "Edited 11-Apr-2025 13:02 by rmk") + (* ; "Edited 29-Mar-2025 22:36 by rmk") (* ; "Edited 22-Aug-2024 23:51 by rmk") (* ; "Edited 4-Aug-2024 12:08 by rmk") (* ; "Edited 31-Jul-2024 19:55 by rmk") @@ -933,12 +954,13 @@ (SETQ LASTCS CHARSLOT)) (SETQ THISLINE (fetch (TEXTOBJ THISLINE) of (GTO THISLINE)))) (\DTEST THISLINE 'THISLINE) - (DEBUGOUTPUT OFILE (CL:IF OFILE - NIL - 'STL) - NIL - (for CSLOT EXPANDSPACES CHNO TX LENGTH CHAR CHARW (SPACEFACTOR _ (FETCH TLSPACEFACTOR - OF THISLINE)) + (DEBUGOUTPUT (DEBUGOUTPUT.STREAM OFILE (CL:IF OFILE + NIL + 'STL) + NIL 80) + (for CSLOT EXPANDSPACES CHNO TX LENGTH CHAR CHARW CHARCL (SPACEFACTOR _ + (FETCH TLSPACEFACTOR + OF THISLINE)) (FIRSTSPACESLOT _ (fetch TLFIRSTSPACE of THISLINE)) (LINE _ (fetch (THISLINE DESC) of THISLINE)) (NSPACES _ 0) @@ -963,6 +985,7 @@ (SETQ LENGTH TX) (printout OFILE 29 "XLIM" T) eachtime (SETQ CHAR (CHAR CSLOT)) (SETQ CHARW (CHARW CSLOT)) + (SETQ CHARCL (CHARCL CSLOT)) (CL:UNLESS (CHARSLOTP CSLOT THISLINE) (HELP "THISLINE RUNS OFF THE EDGE" THISLINE)) @@ -1004,7 +1027,7 @@ (PROGN (add LENGTH CHARW) (add TX CHARW) (CHARACTER CHAR))) - .FR 28 CHARW " " .I4 TX 35 CSLOT) + .FR 28 CHARW " " .I4 TX 35 CHARCL 64 CSLOT) (ADD CHNO 1) elseif [AND [OR (CHARSLOTP CHAR THISLINE) (AND (NULL CHAR) @@ -1048,11 +1071,12 @@ T]) (CLEARTHISLINE - [LAMBDA (TSTREAM) (* ; "Edited 6-Mar-2025 11:28 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 11-Apr-2025 11:04 by rmk") + (* ; "Edited 6-Mar-2025 11:28 by rmk") (LET ((THISLINE (GETTOBJ (GTO TSTREAM) THISLINE))) (replace (THISLINE DESC) of THISLINE with NIL) - (for CSLOT incharslots THISLINE do (FILLCHARSLOT CSLOT NIL NIL]) + (for CSLOT incharslots THISLINE do (FILLCHARSLOT CSLOT NIL NIL NIL]) ) (DEFINEQ @@ -2360,29 +2384,40 @@ (DECLARE%: EVAL@COMPILE -(PUTPROPS DEBUGOUTPUT MACRO - [ARGS - `(LET - [(OFILE ,(CAR ARGS)) - (WTYPE ,(CADR ARGS)) - (TITLE ,(CADDR ARGS] - (RESETLST - [if WTYPE - then [SETQ OFILE (OPENTEXTSTREAM NIL (REGIONP OFILE) - NIL NIL '(FONT DEFAULTFONT] - [RESETSAVE NIL - `(PROGN (CL:UNLESS RESETSTATE - [TEDIT OFILE WTYPE NIL - `(READONLY QUIET LEAVETTY T TITLE - ,(OR TITLE WTYPE] - (WINDOWPROP (WFROMDS OFILE) - 'TEDIT-DEBUG T))] - elseif OFILE - then (RESETSAVE (SETQ OFILE (OPENSTREAM OFILE 'OUTPUT 'NEW)) - '(PROGN (CLOSEF? OLDVALUE] - [RESETSAVE (DSPFONT NIL OFILE) - '(PROGN (DSPFONT OLDVALUE OFILE] - ,@(CDDDR ARGS))]) +(PUTPROPS DEBUGOUTPUT MACRO [(FILE . FORMS) + (RESETLST + [LET ((OFILE FILE)) + [RESETSAVE (DSPFONT NIL OFILE) + '(PROGN (DSPFONT OLDVALUE OFILE] . FORMS])]) +) +(DEFINEQ + +(DEBUGOUTPUT.STREAM + [LAMBDA (OFILE WTYPE TITLE WIDTH FONT) (* ; "Edited 15-Apr-2025 13:55 by rmk") + (* ; "Edited 11-Apr-2025 12:13 by rmk") + + (* ;; "Passed as the first argument in a call to DEBUGOUTPUT") + + (CL:UNLESS FONT (SETQ FONT DEFAULTFONT)) + [if WTYPE + then [SETQ OFILE (OPENTEXTSTREAM + NIL + (REGIONP OFILE) + NIL NIL `(FONT ,FONT PARALOOKS + (RIGHTMARGIN ,(AND WIDTH (ITIMES WIDTH (CHARWIDTH + (CHARCODE SPACE) + FONT] + (CL:WHEN WIDTH (LINELENGTH WIDTH OFILE)) + [RESETSAVE NIL `(PROGN (CL:UNLESS RESETSTATE + [TEDIT ,OFILE ',WTYPE NIL + `(READONLY QUIET LEAVETTY T TITLE + ,(OR TITLE WTYPE] + (WINDOWPROP (WFROMDS ,OFILE) + 'TEDIT-DEBUG T))] + elseif OFILE + then (RESETSAVE (SETQ OFILE (OPENSTREAM OFILE 'OUTPUT 'NEW)) + '(PROGN (CLOSEF? OLDVALUE] + OFILE]) ) (DEFINEQ @@ -2469,30 +2504,31 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4984 7543 (GTO 4994 . 5244) (GTS 5246 . 7017) (GTW 7019 . 7175) (GSEL 7177 . 7541)) ( -7576 8135 (TEST.TEMPLATE 7586 . 8133)) (8136 9071 (TESTACTION 8146 . 9069)) (9096 22911 (IPC 9106 . -10610) (ILINES 10612 . 13153) (ISEL 13155 . 13766) (ITS 13768 . 15492) (IPANES 15494 . 15729) (ITL -15731 . 16150) (IHIST 16152 . 18814) (IPCTB 18816 . 19242) (IMB 19244 . 20003) (ICL 20005 . 20706) ( -IPL 20708 . 21248) (ICARET 21250 . 21777) (INSPECTPIECES 21779 . 22909)) (22933 50561 (SP 22943 . -27587) (SL 27589 . 31035) (SSP 31037 . 32592) (SPF 32594 . 35020) (SLF 35022 . 44155) (SHOWLINE 44157 - . 47719) (SLL 47721 . 48468) (STBYTES 48470 . 50196) (SSEL 50198 . 50559)) (50562 59579 (STL 50572 . -59208) (CLEARTHISLINE 59210 . 59577)) (59580 64953 (NTHPIECE 59590 . 60722) (NPIECES 60724 . 61589) ( -NTHPIECECHAR 61591 . 62899) (SELPIECE 62901 . 63343) (PIECENUM 63345 . 64064) (PCBYTES 64066 . 64951)) - (64954 67428 (FILEBYTES 64964 . 66388) (TFILEBYTES 66390 . 67426)) (67429 68751 (TRELMOVE 67439 . -67682) (TSCROLL 67684 . 67850) (TSCROLL* 67852 . 68749)) (68752 71801 (TRY 68762 . 70031) (TEDITCLOSEW - 70033 . 70376) (PARALASTWITHOUTEOL 70378 . 71263) (FIXPARALAST 71265 . 71799)) (71802 86449 (SPPRINT -71812 . 78397) (SPPRINT.CHAR 78399 . 79383) (SPPRINT.OBJ 79385 . 82443) (SHOWPIECEBYTES 82445 . 84001) - (CHECKPLENGTHS 84003 . 84460) (SBT 84462 . 85599) (COPYPCHAIN 85601 . 86447)) (86450 88511 (POSLINE -86460 . 88509)) (88512 89395 (PRESPLIT 88522 . 89393)) (89396 91109 (ALLTL 89406 . 90659) (NTHCHARSLOT - 90661 . 91107)) (91135 101348 (PLCHAIN 91145 . 91673) (PRINTLINE 91675 . 94665) (SL.GETLINES 94667 . -97960) (CHECKLINES 97962 . 98942) (COLLECTLINES 98944 . 99196) (NTHLINE 99198 . 100203) (HEIGHT 100205 - . 100493) (LINEBOTS 100495 . 101346)) (101349 103797 (IPC.DECODEARGS 101359 . 103795)) (103798 104391 - (SPF1 103808 . 104389)) (104420 106798 (SLF.FATPLEN 104430 . 105289) (FILEPIECE 105291 . 106796)) ( -106831 107599 (SELTEDIT 106841 . 107597)) (107669 113281 (PPARA 107679 . 108101) (PRUN 108103 . 109579 -) (ADDLINEPOSITIONS 109581 . 111008) (SBR 111010 . 111664) (SBC 111666 . 113279)) (113338 115114 ( -OLDWI 113348 . 113723) (COMP 113725 . 113920) (DFR 113922 . 115112)) (115115 116148 (DFGV 115125 . -115651) (GDIRECTORIES 115653 . 116146)) (116149 122714 (TTEST 116159 . 120691) (LTEST 120693 . 122058) - (THC 122060 . 122712)) (123028 123720 (SHOWSAFE 123038 . 123718)) (123773 124220 (MYH 123783 . 124218 -)) (124465 125560 (DFVENUE 124475 . 125354) (VSEE 125356 . 125558)) (125561 126015 (PTT 125571 . -126013)) (127250 129566 (TEDIT-DEBUG 127260 . 129564)) (129567 131303 (TRENAME 129577 . 131301))))) + (FILEMAP (NIL (5077 7636 (GTO 5087 . 5337) (GTS 5339 . 7110) (GTW 7112 . 7268) (GSEL 7270 . 7634)) ( +7669 8790 (TEST.TEMPLATE 7679 . 8788)) (8791 9726 (TESTACTION 8801 . 9724)) (9751 23566 (IPC 9761 . +11265) (ILINES 11267 . 13808) (ISEL 13810 . 14421) (ITS 14423 . 16147) (IPANES 16149 . 16384) (ITL +16386 . 16805) (IHIST 16807 . 19469) (IPCTB 19471 . 19897) (IMB 19899 . 20658) (ICL 20660 . 21361) ( +IPL 21363 . 21903) (ICARET 21905 . 22432) (INSPECTPIECES 22434 . 23564)) (23588 52256 (SP 23598 . +28642) (SL 28644 . 32479) (SSP 32481 . 34183) (SPF 34185 . 36715) (SLF 36717 . 45850) (SHOWLINE 45852 + . 49414) (SLL 49416 . 50163) (STBYTES 50165 . 51891) (SSEL 51893 . 52254)) (52257 61752 (STL 52267 . +61268) (CLEARTHISLINE 61270 . 61750)) (61753 67126 (NTHPIECE 61763 . 62895) (NPIECES 62897 . 63762) ( +NTHPIECECHAR 63764 . 65072) (SELPIECE 65074 . 65516) (PIECENUM 65518 . 66237) (PCBYTES 66239 . 67124)) + (67127 69601 (FILEBYTES 67137 . 68561) (TFILEBYTES 68563 . 69599)) (69602 70924 (TRELMOVE 69612 . +69855) (TSCROLL 69857 . 70023) (TSCROLL* 70025 . 70922)) (70925 73974 (TRY 70935 . 72204) (TEDITCLOSEW + 72206 . 72549) (PARALASTWITHOUTEOL 72551 . 73436) (FIXPARALAST 73438 . 73972)) (73975 88622 (SPPRINT +73985 . 80570) (SPPRINT.CHAR 80572 . 81556) (SPPRINT.OBJ 81558 . 84616) (SHOWPIECEBYTES 84618 . 86174) + (CHECKPLENGTHS 86176 . 86633) (SBT 86635 . 87772) (COPYPCHAIN 87774 . 88620)) (88623 90684 (POSLINE +88633 . 90682)) (90685 91568 (PRESPLIT 90695 . 91566)) (91569 93282 (ALLTL 91579 . 92832) (NTHCHARSLOT + 92834 . 93280)) (93308 103521 (PLCHAIN 93318 . 93846) (PRINTLINE 93848 . 96838) (SL.GETLINES 96840 . +100133) (CHECKLINES 100135 . 101115) (COLLECTLINES 101117 . 101369) (NTHLINE 101371 . 102376) (HEIGHT +102378 . 102666) (LINEBOTS 102668 . 103519)) (103522 105970 (IPC.DECODEARGS 103532 . 105968)) (105971 +106564 (SPF1 105981 . 106562)) (106593 108971 (SLF.FATPLEN 106603 . 107462) (FILEPIECE 107464 . 108969 +)) (109004 109772 (SELTEDIT 109014 . 109770)) (109842 115454 (PPARA 109852 . 110274) (PRUN 110276 . +111752) (ADDLINEPOSITIONS 111754 . 113181) (SBR 113183 . 113837) (SBC 113839 . 115452)) (115511 117287 + (OLDWI 115521 . 115896) (COMP 115898 . 116093) (DFR 116095 . 117285)) (117288 118321 (DFGV 117298 . +117824) (GDIRECTORIES 117826 . 118319)) (118322 124887 (TTEST 118332 . 122864) (LTEST 122866 . 124231) + (THC 124233 . 124885)) (125201 125893 (SHOWSAFE 125211 . 125891)) (125946 126393 (MYH 125956 . 126391 +)) (126638 127733 (DFVENUE 126648 . 127527) (VSEE 127529 . 127731)) (127734 128188 (PTT 127744 . +128186)) (128547 130007 (DEBUGOUTPUT.STREAM 128557 . 130005)) (130008 132324 (TEDIT-DEBUG 130018 . +132322)) (132325 134061 (TRENAME 132335 . 134059))))) STOP diff --git a/internal/TEDIT-DEBUG.LCOM b/internal/TEDIT-DEBUG.LCOM index 7d290024119afc243e2289ec5474960ac7979bc9..95a2f29f6ba3aa8d0c3b9571c0f81cf3ce4f0f73 100644 GIT binary patch delta 12067 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 Jet7lH{{`QmXnOzv delta 12843 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 diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index a22f9a7e6..d6d63e118 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "31-Mar-2025 12:04:22" {WMEDLEY}TEDIT>TEDIT.;792 141883 +(FILECREATED "22-Apr-2025 10:28:59" {WMEDLEY}tedit>TEDIT.;822 144773 :EDIT-BY rmk - :CHANGES-TO (FNS TDRIBBLE) + :CHANGES-TO (FNS \TEDIT.DELETE \TEDIT.MOVE \TEDIT.COPY \TEDIT.COPYPIECE) - :PREVIOUS-DATE "28-Mar-2025 14:10:12" {WMEDLEY}TEDIT>TEDIT.;791) + :PREVIOUS-DATE "21-Apr-2025 22:54:33" {WMEDLEY}tedit>TEDIT.;818) (PRETTYCOMPRINT TEDITCOMS) @@ -31,14 +31,14 @@ (DECLARE%: EVAL@COMPILE DONTCOPY (FILES TEDIT-EXPORTS.ALL)) (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP) UNICODE))) - (DECLARE%: EVAL@COMPILE DONTCOPY + [DECLARE%: EVAL@COMPILE DONTCOPY (* ;; "Assertions go to comments if not being checked, so we see value-warnings") (EXPORT (COMS (MACROS TEDIT-ASSERT) + (MACROS FTEXTOBJ) (GLOBALVARS CHECK-TEDIT-ASSERTIONS) - (INITVARS (CHECK-TEDIT-ASSERTIONS T))) - (MACROS OBJECT.ALLOWS))) + (INITVARS (CHECK-TEDIT-ASSERTIONS T] (INITVARS (TEDIT.TENTATIVE NIL) (TEDIT.DEFAULT.PROPS NIL)) (GLOBALVARS TEDIT.TENTATIVE TEDIT.DEFAULT.PROPS) @@ -170,19 +170,19 @@ ,(KWOTE (CAR ARGS])] (T ` (* (TEDIT-ASSERT (\,@ ARGS)))]) ) +(DECLARE%: EVAL@COMPILE + +(PUTPROPS FTEXTOBJ MACRO [(X) + (TEXTOBJ! (CL:IF (type? TEXTOBJ X) + X + (GETTSTR X TEXTOBJ))]) +) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS CHECK-TEDIT-ASSERTIONS) ) (RPAQ? CHECK-TEDIT-ASSERTIONS T) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS OBJECT.ALLOWS MACRO ((PC OPERATION FROMTOBJ TOTOBJ) - (OR (NOT (EQ OBJECT.PTYPE (PTYPE PC))) - (\TEDIT.APPLY.OBJFN (PCONTENTS PC) - OPERATION FROMTOBJ TOTOBJ)))) -) (* "END EXPORTED DEFINITIONS") @@ -359,7 +359,8 @@ NIL]) (TEDIT.CONCAT - [LAMBDA (TSTREAMS SEPARATOR) (* ; "Edited 8-Feb-2025 20:58 by rmk") + [LAMBDA (TSTREAMS SEPARATOR) (* ; "Edited 21-Apr-2025 22:28 by rmk") + (* ; "Edited 8-Feb-2025 20:58 by rmk") (* ; "Edited 17-Mar-2024 00:21 by rmk") (* ; "Edited 18-Jan-2024 00:03 by rmk") @@ -369,12 +370,13 @@ (CL:UNLESS (CHARCODEP SEPARATOR) (SETQ SEPARATOR (OR (CHARCODE.DECODE SEPARATOR T) (MKSTRING SEPARATOR))))) + [SETQ TSTREAMS (for TS inside TSTREAMS collect (OR (TEXTSTREAM TS T) + (OPENTEXTSTREAM TS] (LET* ((CSTREAM (OPENTEXTSTREAM)) (CTEXTOBJ (TEXTOBJ CSTREAM)) - [TSTEXTOBJECTS (for TS inside TSTREAMS collect (OR (TEXTOBJ TS T) - (TEXTOBJ (OPENTEXTSTREAM TS] + (TSTEXTOBJECTS (for TS in TSTREAMS collect (FTEXTOBJ TS))) FIRSTTOBJ INITIALFILEPIECES) - (CL:WHEN TSTEXTOBJECTS + (CL:WHEN TSTREAMS (SETQ FIRSTTOBJ (CAR TSTEXTOBJECTS)) (* ;; "Take overall parameters from the first stream. ") @@ -384,17 +386,16 @@ (FSETTOBJ CTEXTOBJ TXTRTBL (FGETTOBJ FIRSTTOBJ TXTRTBL)) (FSETTOBJ CTEXTOBJ TXTWTBL (FGETTOBJ FIRSTTOBJ TXTWTBL)) (FSETTOBJ CTEXTOBJ TXTSTYLESHEET (FGETTOBJ FIRSTTOBJ TXTSTYLESHEET)) - (for TSOBJ PREVPC (LASTTOBJ _ (CAR (LAST TSTEXTOBJECTS))) - (FIRSTPC _ (create PIECE)) in TSTEXTOBJECTS first - (* ;; - "LASTTOBJ to suppress final separator") + (for TS PREVPC (LASTTOBJ _ (CAR (LAST TSTEXTOBJECTS))) + (FIRSTPC _ (create PIECE)) in TSTREAMS as TSOBJ in TSTEXTOBJECTS + first + (* ;; "LASTTOBJ to suppress final separator") - (SETQ PREVPC FIRSTPC) - (* ; "Dummy") + (SETQ PREVPC FIRSTPC) (* ; "Dummy") do (CL:WHEN (FGETTOBJ TSOBJ FORMATTEDP) (FSETTOBJ CTEXTOBJ FORMATTEDP T)) (for PC NEWPIECE inpieces (\TEDIT.FIRSTPIECE TSOBJ) - do (SETQ NEWPIECE (\TEDIT.COPYPIECE PC TSOBJ CTEXTOBJ NIL 'COPY)) + do (SETQ NEWPIECE (\TEDIT.COPYPIECE PC TS CTEXTOBJ NIL 'COPY)) (FSETPC PREVPC NEXTPIECE NEWPIECE) (FSETPC NEWPIECE PREVPIECE PREVPC) (SETQ PREVPC NEWPIECE)) @@ -480,7 +481,8 @@ (\TEDIT.COPY FROM TO FROMSTREAM TOSTREAM]) (TEDIT.DELETE - [LAMBDA (TSTREAM SEL LEN LEAVECARETLOOKS) (* ; "Edited 22-Jun-2024 00:06 by rmk") + [LAMBDA (TSTREAM SEL LEN LEAVECARETLOOKS) (* ; "Edited 6-Apr-2025 12:31 by rmk") + (* ; "Edited 22-Jun-2024 00:06 by rmk") (* ; "Edited 22-May-2024 09:44 by rmk") (* ; "Edited 23-May-2023 12:57 by rmk") (* ; "Edited 22-May-2023 10:54 by rmk") @@ -498,10 +500,11 @@ elseif (NULL SEL) then (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) (SELECTION! SEL) - (\TEDIT.DELETE TEXTOBJ SEL]) + (\TEDIT.DELETE TSTREAM SEL]) (TEDIT.INSERT - [LAMBDA (TSTREAM TEXT CH#ORSEL LOOKS DONTSCROLL) (* ; "Edited 2-Aug-2024 22:17 by rmk") + [LAMBDA (TSTREAM TEXT CH#ORSEL LOOKS DONTSCROLL) (* ; "Edited 4-Apr-2025 11:22 by rmk") + (* ; "Edited 2-Aug-2024 22:17 by rmk") (* ; "Edited 31-Jul-2024 12:13 by rmk") (* ; "Edited 23-Jul-2024 16:35 by rmk") (* ; "Edited 7-Jul-2024 12:33 by rmk") @@ -535,9 +538,13 @@ (SELECTION! CH#ORSEL) (if (FGETSEL CH#ORSEL SET) then (\TEDIT.INSERT TEXT CH#ORSEL TSTREAM DONTSCROLL) - (CL:WHEN LOOKS (* ; - "TEXTSEL now selects the insertion, apply the looks.") - (\TEDIT.CHANGE.CHARLOOKS TSTREAM LOOKS)) + (CL:WHEN LOOKS + + (* ;; "TEXTSEL now selects the insertion, apply the looks, but don't keep the looks-change as a separate event. We want it to behave as if the looks had been applied to the TEXT before the insertion (e.g. converting first to SELPIECES).") + + (LET ((HISTORY (FGETTOBJ TEXTOBJ TXTHISTORY))) + (\TEDIT.CHANGE.CHARLOOKS TSTREAM LOOKS) + (FSETTOBJ TEXTOBJ TXTHISTORY HISTORY))) else (TEDIT.PROMPTPRINT TEXTOBJ "Please select a place for the insertion." T)))) ]) @@ -750,7 +757,9 @@ (DEFINEQ (TEDIT.INSERT.OBJECT - [LAMBDA (OBJECT TSTREAM CH# LOOKS) (* ; "Edited 25-Feb-2025 11:18 by rmk") + [LAMBDA (OBJECT TSTREAM CH# LOOKS) (* ; "Edited 21-Apr-2025 22:17 by rmk") + (* ; "Edited 6-Apr-2025 14:10 by rmk") + (* ; "Edited 25-Feb-2025 11:18 by rmk") (* ; "Edited 2-Feb-2025 11:37 by rmk") (* ; "Edited 26-Dec-2024 10:13 by rmk") (* ; "Edited 21-Oct-2024 00:26 by rmk") @@ -795,7 +804,7 @@  "If this is computed text in bulk, fix the length.") (\TEDIT.THELP "SUBSTREAM NOT IMPLEMENTED") (FSETPC OBJPC PTYPE SUBSTREAM.PTYPE) - (FSETPC OBJPC PLEN (TEXTLEN (fetch (TEXTSTREAM TEXTOBJ) of SUBSTREAM)))) + (FSETPC OBJPC PLEN (TEXTLEN (FTEXTOBJ SUBSTREAM)))) (SETQ OBJSELPIECES (\TEDIT.SELPIECES.COPY (create SELPIECES SPLEN _ 1 @@ -803,7 +812,7 @@ SPLAST _ OBJPC SPFIRSTCHAR _ CH# SPLASTCHAR _ CH#) - 'INSERT TEXTOBJ)) + 'INSERT TSTREAM)) (CL:UNLESS OBJSELPIECES (* ; "Copy may not be allowed") (RETURN)) @@ -813,57 +822,69 @@  " OBJSELPIECES contains (a copy of) the object piece, and the object approved of insertion.") (SETQ SEL (TEXTSEL TEXTOBJ)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (CL:WHEN (type? SELECTION CH#) (SETQ CH# (GETSEL CH# CH#))) (CL:WHEN (FGETTOBJ TEXTOBJ BLUEPENDINGDELETE) - (\TEDIT.DELETE TEXTOBJ SEL)) + (\TEDIT.DELETE TSTREAM SEL)) (CL:WHEN CH# (\TEDIT.UPDATE.SEL SEL (IMIN CH# (ADD1 (TEXTLEN TEXTOBJ))) 0 'LEFT) - (\TEDIT.FIXSEL SEL TEXTOBJ)) + (\TEDIT.FIXSEL SEL TSTREAM)) (\TEDIT.INSERT.SELPIECES OBJSELPIECES TEXTOBJ SEL) (CL:WHEN LOOKS (\TEDIT.CHANGE.CHARLOOKS TSTREAM LOOKS SEL)) (\TEDIT.SCROLL.CARET TSTREAM) - (\TEDIT.SHOWSEL SEL T TEXTOBJ]) + (\TEDIT.SHOWSEL SEL T TSTREAM]) (TEDIT.EDIT.OBJECT - [LAMBDA (TSTREAM OBJ) (* ; "Edited 3-Oct-2024 22:08 by rmk") + [LAMBDA (TSTREAM OBJ) (* ; "Edited 6-Apr-2025 23:14 by rmk") + (* ; "Edited 3-Oct-2024 22:08 by rmk") (* ; "Edited 10-May-2024 22:42 by rmk") - (* ; "Edited 7-May-2024 08:18 by rmk") - (* ; "Edited 29-Apr-2024 12:41 by rmk") (* ; "Edited 15-Mar-2024 14:23 by rmk") (* ; "Edited 2-Dec-2023 09:57 by rmk") (* ; "Edited 19-May-2023 21:35 by rmk") (* ; "Edited 27-Apr-2023 00:14 by rmk") (* ; "Edited 21-Oct-2022 18:37 by rmk") (* ; "Edited 29-May-91 18:23 by jds") + + (* ;; "If OBJ, makes it be the selection and SELOBJ. Then edits SELOBJ") + (SETQ TSTREAM (TEXTSTREAM TSTREAM)) - (LET ((TEXTOBJ (TEXTOBJ! (FGETTSTR TSTREAM TEXTOBJ))) - SEL CH# EDITFN) - [COND - [(AND OBJ (IMAGEOBJP OBJ)) - (SETQ CH# (TEDIT.FIND.OBJECT TEXTOBJ OBJ)) - (COND - (CH# (SETQ SEL (\TEDIT.COPYSEL (FGETTOBJ TEXTOBJ SEL))) - (\TEDIT.UPDATE.SEL SEL CH# 1) - (SETSEL SEL SELOBJ OBJ) - (\TEDIT.FIXSEL SEL TEXTOBJ)) - (T (TEDIT.PROMPTPRINT TEXTOBJ "Can't find specified object." T] - (T (SETQ SEL (FGETTOBJ TEXTOBJ SEL)) - (SETQ OBJ (GETSEL SEL SELOBJ] - (COND - (CH# (* ; + (PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) + CH# EDITFN) + (if (IMAGEOBJP OBJ) + then (SETQ CH# (TEDIT.FIND.OBJECT TSTREAM OBJ)) + (if CH# + then (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM CH# 1) + (\TEDIT.FIXSEL NIL TSTREAM) + (SETSEL (TEXTSEL TEXTOBJ) + SELOBJ OBJ) + (TEDIT.NORMALIZECARET TSTREAM) + else (TEDIT.PROMPTPRINT TSTREAM "Can't find the specified object" T T) + (RETURN)) + elseif OBJ + then (TEDIT.PROMPTPRINT TSTREAM (CONCAT OBJ " is not an image object") + T T) + (RETURN) + elseif (SETQ OBJ (GETSEL (TEXTSEL TEXTOBJ) + SELOBJ)) + else (TEDIT.PROMPTPRINT TSTREAM "Please select an editable object" T T) + (RETURN)) + (if (SETQ EDITFN (IMAGEOBJPROP OBJ 'EDITFN)) + then (* ;  "OK There's an object selected. Edit it.") - (SETQ EDITFN (IMAGEOBJPROP OBJ 'EDITFN)) - (CL:UNLESS (AND EDITFN (APPLY* EDITFN OBJ)) (* ; + (CL:UNLESS (AND EDITFN (APPLY* EDITFN OBJ)) + (* ;  "If the editfn makes a change, update the screen.") - (TEDIT.OBJECT.CHANGED TSTREAM OBJ))) - (T (TEDIT.PROMPTPRINT TEXTOBJ "Please select an editable object" T T]) + (TEDIT.OBJECT.CHANGED TSTREAM OBJ)) + else (TEDIT.PROMPTPRINT TSTREAM (CONCAT OBJ " does not have an edit function" T]) (TEDIT.OBJECT.CHANGED - [LAMBDA (TSTREAM OBJECT PIECE/CH#/SEL) (* ; "Edited 26-Nov-2024 03:52 by rmk") + [LAMBDA (TSTREAM OBJECT PIECE/CH#/SEL) (* ; "Edited 21-Apr-2025 20:16 by rmk") + (* ; "Edited 20-Apr-2025 13:24 by rmk") + (* ; "Edited 26-Nov-2024 03:52 by rmk") (* ; "Edited 20-Oct-2024 12:08 by rmk") (* ; "Edited 19-Oct-2024 10:03 by rmk") (* ; "Edited 3-Oct-2024 22:58 by rmk") @@ -890,11 +911,11 @@ elseif (AND (type? SELECTION PIECE/CH#/SEL) (EQ OBJECT (FGETSEL PIECE/CH#/SEL SELOBJ))) then (FGETSEL PIECE/CH#/SEL CH#) - else (TEDIT.FIND.OBJECT TSTREAM OBJECT 1))) + else (TEDIT.FIND.OBJECT TSTREAM OBJECT 1))) (if CH# then (* ; "Change affected lines") - (\TEDIT.UPDATE.LINES TEXTOBJ 'CHANGED CH# 1) - (\TEDIT.SHOWSEL NIL T TEXTOBJ) (* ; "And mark the document dirty.") + (\TEDIT.UPDATE.LINES TSTREAM 'CHANGED CH# 1) + (\TEDIT.SHOWSEL NIL T TSTREAM) (* ; "And mark the document dirty.") (FSETTOBJ TEXTOBJ \DIRTY T) else (TEDIT.PROMPTPRINT TSTREAM "Changed object not found in document" T]) @@ -1075,26 +1096,27 @@ T]) (\TEDIT.READONLY - [LAMBDA (TEXTOBJ TYPE CHNO) (* ; "Edited 4-Jul-2024 13:40 by rmk") + [LAMBDA (TSTREAM TYPE CHNO) (* ; "Edited 20-Apr-2025 23:12 by rmk") + (* ; "Edited 4-Jul-2024 13:40 by rmk") (* ; "Edited 25-May-2024 10:01 by rmk") (* ; "Edited 22-May-2024 13:00 by rmk") (* ; "Edited 1-Feb-2024 17:33 by rmk") (* ; "Edited 13-Nov-2023 11:26 by rmk") - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ)) - (if (FGETTOBJ TEXTOBJ TXTREADONLY) - then (CL:UNLESS (FGETTOBJ TEXTOBJ TXTREADONLYQUIET) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (OR TYPE "Text") - " is read only--aborted") - T T)) - 'READONLY - elseif [AND (FGETTOBJ TEXTOBJ TXTAPPENDONLY) - (OR (NULL CHNO) - (ILEQ CHNO (FGETTOBJ TEXTOBJ TEXTLEN] - then (CL:UNLESS (FGETTOBJ TEXTOBJ TXTREADONLYQUIET) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (OR TYPE "Text") - " is append only--aborted") - T T)) - 'APPENDONLY]) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (if (FGETTOBJ TEXTOBJ TXTREADONLY) + then (CL:UNLESS (FGETTOBJ TEXTOBJ TXTREADONLYQUIET) + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (OR TYPE "Text") + " is read only--aborted") + T T)) + 'READONLY + elseif [AND (FGETTOBJ TEXTOBJ TXTAPPENDONLY) + (OR (NULL CHNO) + (ILEQ CHNO (FGETTOBJ TEXTOBJ TEXTLEN] + then (CL:UNLESS (FGETTOBJ TEXTOBJ TXTREADONLYQUIET) + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (OR TYPE "Text") + " is append only--aborted") + T T)) + 'APPENDONLY]) ) (DEFINEQ @@ -1223,7 +1245,10 @@ (T TSTREAM)))]) (\TEDIT.INSERT - [LAMBDA (INSERT SEL TSTREAM DONTSCROLL TYPEIN) (* ; "Edited 5-Jan-2025 23:01 by rmk") + [LAMBDA (INSERT SEL TSTREAM DONTSCROLL TYPEIN) (* ; "Edited 21-Apr-2025 20:16 by rmk") + (* ; "Edited 20-Apr-2025 13:26 by rmk") + (* ; "Edited 6-Apr-2025 14:12 by rmk") + (* ; "Edited 5-Jan-2025 23:01 by rmk") (* ; "Edited 28-Nov-2024 09:53 by rmk") (* ; "Edited 25-Nov-2024 22:05 by rmk") (* ; "Edited 18-Nov-2024 15:53 by rmk") @@ -1254,7 +1279,7 @@ (CL:WHEN [AND (GETSEL SEL SET) (OR (CHARCODEP INSERT) (NEQ 0 (NCHARS INSERT] - [PROG* ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + [PROG* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (PARACHARS (FGETTOBJ TEXTOBJ PARABREAKCHARS)) NCHARSADDED CARETCHNO) @@ -1263,7 +1288,7 @@ (CL:WHEN (\TEDIT.READONLY TEXTOBJ NIL CARETCHNO) (RETURN NIL)) (CL:WHEN (FGETTOBJ TEXTOBJ BLUEPENDINGDELETE) (* ; "Blue pending delete?") - (\TEDIT.DELETE TEXTOBJ SEL)) + (\TEDIT.DELETE TSTREAM SEL)) (SETQ CARETCHNO (TEDIT.GETPOINT TEXTOBJ SEL)) (if (CHARCODEP INSERT) then @@ -1286,7 +1311,7 @@ (* ;; "The piece table is now correct: NCHARSADDED new characters have been been added in front of CARETCHNO. ") - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (* ;; "Set the caret so that the next insertion should also come in front of that (now displaced) character, and then update the screen.") @@ -1302,13 +1327,17 @@ (* ;; "All the panes must be updated. SELPANE mayalso need to be scrolled to make the caret visible for the next input.") - (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION CARETCHNO NCHARSADDED) + (\TEDIT.UPDATE.LINES TSTREAM 'INSERTION CARETCHNO NCHARSADDED) (CL:WHEN (EQ SEL (TEXTSEL TEXTOBJ)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ)) + (\TEDIT.SHOWSEL SEL T TSTREAM)) (CL:WHEN TYPEIN (\TEDIT.SCROLL.CARET TSTREAM)))])]) (\TEDIT.MOVE - [LAMBDA (FROMSEL TOSEL FROMTSTREAM TOTSTREAM) (* ; "Edited 6-Feb-2025 16:17 by rmk") + [LAMBDA (FROMSEL TOSEL FROMTSTREAM TOTSTREAM) (* ; "Edited 22-Apr-2025 09:21 by rmk") + (* ; "Edited 16-Apr-2025 09:01 by rmk") + (* ; "Edited 6-Apr-2025 14:14 by rmk") + (* ; "Edited 5-Apr-2025 13:18 by rmk") + (* ; "Edited 6-Feb-2025 16:17 by rmk") (* ; "Edited 8-Dec-2024 21:37 by rmk") (* ; "Edited 26-Nov-2024 22:34 by rmk") (* ; "Edited 22-Nov-2024 15:42 by rmk") @@ -1337,8 +1366,8 @@ (* ;; "If they are in separate texts, then the modifcations to TO go into TO's history (pending delete and insert), the deletion of FROM is an event in its object. In that case it will require undos in both objects to get them both back to the original state.") (CL:UNLESS (EQ 0 (GETSEL FROMSEL DCH)) - [PROG* ((FROMOBJ (GETTSTR FROMTSTREAM TEXTOBJ)) - (TOOBJ (GETTSTR TOTSTREAM TEXTOBJ)) + [PROG* ((FROMOBJ (FTEXTOBJ FROMTSTREAM)) + (TOOBJ (FTEXTOBJ TOTSTREAM)) (TOCH# (FGETSEL TOSEL CH#)) (TODCH (FGETSEL TOSEL DCH)) (TOPOINT (FGETSEL TOSEL POINT)) @@ -1376,14 +1405,14 @@ (* ;; "Grab (a copy of) the source pieces, if image objects allow copying. FROMPIECES is essentially a clipboard for extract/insert--the FROMOBJ has not yet been changed.") (SETQ FROMPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES FROMSEL NIL FROMOBJ) - 'MOVE TOOBJ FROMOBJ)) + 'MOVE TOTSTREAM FROMTSTREAM)) (CL:UNLESS FROMPIECES (* ;; "If bailing, should we undo the BPDEVENT (if history is ON)?") (RETURN)) - (\TEDIT.SHOWSEL FROMSEL NIL FROMOBJ) - (\TEDIT.SHOWSEL TOSEL NIL TOOBJ) + (\TEDIT.NOSEL FROMTSTREAM) + (\TEDIT.NOSEL TOTSTREAM) (* ;; "No need to recheck allowance") @@ -1392,9 +1421,10 @@ (* ;;  "Can't call \TEDIT.DELETE because we don't want to implicitly update the TOSEL for the insert.") - (\TEDIT.DELETE.SELPIECES FROMOBJ FROMSEL NIL T) + (\TEDIT.DELETE.SELPIECES FROMTSTREAM FROMSEL NIL T) (\TEDIT.SEL.DELETEDCHARS TOSEL FROMSEL) - (\TEDIT.UPDATE.LINES FROMOBJ 'DELETION FROMSEL) + (\TEDIT.UPDATE.LINES FROMTSTREAM 'DELETION (FGETSEL FROMSEL CH#) + (FGETSEL FROMSEL DCH)) (* ;; "Pop to accumulate into a single event (BPD, DELETE, INSERT).") @@ -1411,10 +1441,9 @@ (\TEDIT.HISTORYADD.COMPOSITE TOOBJ TOOBJ (LIST (\TEDIT.POPEVENT TOOBJ) (\TEDIT.POPEVENT TOOBJ)))) (RETURN)) - (\TEDIT.INSERT.SELPIECES FROMPIECES TOOBJ TOSEL) + (\TEDIT.INSERT.SELPIECES FROMPIECES TOTSTREAM TOSEL) (\TEDIT.SET.SEL.LOOKS TOSEL 'NORMAL) - (\TEDIT.FIXSEL TOSEL TOOBJ) - (\TEDIT.SHOWSEL TOSEL T TOOBJ) + (\TEDIT.SHOWSEL TOSEL T TOTSTREAM) (* ;; "") @@ -1426,7 +1455,10 @@ (CL:IF BPD (\TEDIT.POPEVENT TOOBJ])]) (\TEDIT.COPY - [LAMBDA (FROMSEL TOSEL FROMTSTREAM TOTSTREAM) (* ; "Edited 18-Mar-2025 23:13 by rmk") + [LAMBDA (FROMSEL TOSEL FROMTSTREAM TOTSTREAM) (* ; "Edited 22-Apr-2025 09:12 by rmk") + (* ; "Edited 6-Apr-2025 14:16 by rmk") + (* ; "Edited 5-Apr-2025 13:19 by rmk") + (* ; "Edited 18-Mar-2025 23:13 by rmk") (* ; "Edited 23-Nov-2024 22:45 by rmk") (* ; "Edited 22-Nov-2024 15:44 by rmk") (* ; "Edited 13-Sep-2024 22:28 by rmk") @@ -1460,13 +1492,13 @@ (* ;; "Grab (a copy of) the source pieces, if image object allows") (SETQ FROMPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES FROMSEL NIL FROMOBJ) - 'COPY TOOBJ FROMOBJ)) + 'COPY TOTSTREAM FROMTSTREAM)) (CL:UNLESS FROMPIECES (RETURN)) (* ;; "No object objected") - (\TEDIT.SHOWSEL FROMSEL NIL FROMOBJ) (* ; "Turn off any current highlighting") - (\TEDIT.SHOWSEL TOSEL NIL TOOBJ) + (\TEDIT.NOSEL FROMTSTREAM) (* ; "Turn off any current highlighting") + (\TEDIT.NOSEL TOTSTREAM) (* ;; "") @@ -1482,8 +1514,8 @@ (if (FGETTOBJ TOOBJ BLUEPENDINGDELETE) then (FSETTOBJ TOOBJ BLUEPENDINGDELETE NIL) - (\TEDIT.REPLACE.SELPIECES FROMPIECES TOOBJ TOSEL) - else (\TEDIT.INSERT.SELPIECES FROMPIECES TOOBJ TOSEL)) + (\TEDIT.REPLACE.SELPIECES FROMPIECES TOTSTREAM TOSEL) + else (\TEDIT.INSERT.SELPIECES FROMPIECES TOTSTREAM TOSEL)) (* ;; "") @@ -1491,14 +1523,14 @@ (* ;; "") - (\TEDIT.SHOWSEL TOSEL NIL TOOBJ) (* ; + (\TEDIT.NOSEL TOTSTREAM) (* ;  "Take down anything that might thave appeared") - (\TEDIT.FIXSEL TOSEL TOOBJ) - (\TEDIT.SHOWSEL TOSEL T TOOBJ) + (\TEDIT.SHOWSEL TOSEL T TOTSTREAM) (\TEDIT.SCROLL.CARET TOTSTREAM)))]) (\TEDIT.REPLACE.SELPIECES - [LAMBDA (INSERTSELPIECES TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 15:46 by rmk") + [LAMBDA (INSERTSELPIECES TSTREAM SEL) (* ; "Edited 21-Apr-2025 22:29 by rmk") + (* ; "Edited 19-Mar-2025 15:46 by rmk") (* ; "Edited 8-Dec-2024 13:46 by rmk") (* ; "Edited 26-Nov-2024 17:37 by rmk") (* ; "Edited 29-Sep-2024 00:24 by rmk") @@ -1520,16 +1552,17 @@ (* ;;  "On return, the pieces, lines, selection, and display are complete, correct, and consistent ") - (CL:UNLESS (\TEDIT.READONLY TEXTOBJ) - [PROG ((POINT (GETSEL SEL POINT)) + (CL:UNLESS (\TEDIT.READONLY TSTREAM) + [PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (POINT (GETSEL SEL POINT)) (CH# (FGETSEL SEL CH#)) (DCH (FGETSEL SEL DCH)) DELEVENT ILEN) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.SHOWSEL SEL NIL TSTREAM) (* ;; "We first delete, then insert, updating the display after the second operation.") - (CL:WHEN (\TEDIT.DELETE.SELPIECES TEXTOBJ CH# DCH) + (CL:WHEN (\TEDIT.DELETE.SELPIECES TSTREAM CH# DCH) (* ;; "Reduce to a point to the right of the last remaining character so that FIXSEL sees starting character in its proper line.") @@ -1537,7 +1570,7 @@ 0 'RIGHT 'NORMAL) - (\TEDIT.FIXSEL SEL TEXTOBJ) + (\TEDIT.FIXSEL SEL TSTREAM) (FSETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ SEL)) (SETQ DELEVENT (\TEDIT.LASTEVENT TEXTOBJ T))) (* ; "Catch the deletion event") @@ -1557,13 +1590,14 @@ (SETTH DELEVENT THPOINT POINT)) (\TEDIT.UPDATE.SEL SEL CH# ILEN POINT) (if (IGREATERP ILEN DCH) - then (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION CH# (IDIFFERENCE ILEN DCH)) + then (\TEDIT.UPDATE.LINES TSTREAM 'INSERTION CH# (IDIFFERENCE ILEN DCH)) elseif (ILESSP ILEN DCH) - then (\TEDIT.UPDATE.LINES TEXTOBJ 'DELETION CH# (IDIFFERENCE DCH ILEN)) - else (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS CH# DCH)))])]) + then (\TEDIT.UPDATE.LINES TSTREAM 'DELETION CH# (IDIFFERENCE DCH ILEN)) + else (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS CH# DCH)))])]) (\TEDIT.INSERT.SELPIECES - [LAMBDA (SELPIECES TEXTOBJ TARGETSEL DONTUPDATE) (* ; "Edited 26-Nov-2024 11:04 by rmk") + [LAMBDA (SELPIECES TSTREAM TARGETSEL DONTUPDATE) (* ; "Edited 20-Apr-2025 23:19 by rmk") + (* ; "Edited 26-Nov-2024 11:04 by rmk") (* ; "Edited 31-Oct-2024 18:01 by rmk") (* ; "Edited 22-Sep-2024 18:37 by rmk") (* ; "Edited 15-Aug-2024 10:49 by rmk") @@ -1585,9 +1619,10 @@ (* ;; "\TEDIT.INSERTCH.HISTORY uses the first piece to decide whether it is in a consecutive run of insertions.") (CL:WHEN SELPIECES - (LET ((INSCH# (TEDIT.GETPOINT TEXTOBJ TARGETSEL)) - (SPLEN (fetch (SELPIECES SPLEN) of SELPIECES)) - (SPFIRST (fetch (SELPIECES SPFIRST) of SELPIECES)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (INSCH# (TEDIT.GETPOINT TSTREAM TARGETSEL)) + (SPLEN (GETSPC SELPIECES SPLEN)) + (SPFIRST (GETSPC SELPIECES SPFIRST)) NEXTPC) (SETQ NEXTPC (\TEDIT.ALIGNEDPIECE INSCH# TEXTOBJ)) (\TEDIT.INSERTPIECES SPFIRST NEXTPC TEXTOBJ) @@ -1599,7 +1634,7 @@ (\TEDIT.UPDATE.SEL (FGETTOBJ TEXTOBJ SEL) INSCH# SPLEN 'RIGHT) - (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION INSCH# SPLEN)) + (\TEDIT.UPDATE.LINES TSTREAM 'INSERTION INSCH# SPLEN)) (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :Insert INSCH# SPLEN NIL SPFIRST))))]) @@ -1636,7 +1671,8 @@ WINDOW TSTREAM))]) (\TEDIT.CHARDELETE - [LAMBDA (TSTREAM FORWARD) (* ; "Edited 28-Nov-2024 10:14 by rmk") + [LAMBDA (TSTREAM FORWARD) (* ; "Edited 6-Apr-2025 12:28 by rmk") + (* ; "Edited 28-Nov-2024 10:14 by rmk") (* ; "Edited 27-Nov-2024 09:18 by rmk") (* ; "Edited 29-Sep-2024 21:04 by rmk") (* ; "Edited 22-Sep-2024 18:56 by rmk") @@ -1651,7 +1687,7 @@ (* ;; "This identifies the character before or after the current caret position, and deletes it.") (CL:UNLESS (\TEDIT.READONLY TSTREAM) - (PROG* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (PROG* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (SEL (TEXTSEL TEXTOBJ)) (DCH (GETSEL SEL DCH)) CH#) @@ -1673,13 +1709,14 @@ (SETQ DCH 1) else (RETURN)) - (\TEDIT.DELETE TEXTOBJ CH# DCH (CL:IF FORWARD + (\TEDIT.DELETE TSTREAM CH# DCH (CL:IF FORWARD 'RIGHT 'LEFT)) (\TEDIT.SCROLL.CARET TSTREAM)))]) (\TEDIT.COPYPIECE - [LAMBDA (PC FROMOBJ TOOBJ UNPROTECT OPERATION PROMPTTEXTOBJ) + [LAMBDA (PC FROMTSTREAM TOTSTREAM UNPROTECT OPERATION PROMPTTEXTOBJ) + (* ; "Edited 22-Apr-2025 00:12 by rmk") (* ; "Edited 3-Aug-2024 12:40 by rmk") (* ; "Edited 15-Oct-2023 20:14 by rmk") (* ; "Edited 30-Jul-2023 22:44 by rmk") @@ -1688,14 +1725,15 @@ (* ; "Edited 7-May-2023 11:46 by rmk") (* ; "Edited 12-Jun-90 17:50 by mitani") - (* ;; "TEXTOBJ's prompt gets the message that a copy is not allowed, the FROMOBJ and TOOBJ provide the streams for the object's copy function. The copy is disconnected from PC's original connections.") + (* ;; "PROMPTTEXTOBJ's prompt gets the message that a copy is not allowed, the FROMOBJ and TOOBJ provide the streams for the object's copy function. The copy is disconnected from PC's original connections.") (* ;; "If UNPROTECT, the copies of protected pieces are unprotected") (* ;; "OPERATION keys which imageobject function to apply, if any") - (PROG (NEWPC SRCPFILE (CROSSCOPY (NEQ FROMOBJ TOOBJ))) (* ; - "No matter what, we need a fresh copy.") + (PROG ((TOOBJ (FTEXTOBJ TOTSTREAM)) + (CROSSCOPY (NEQ FROMTSTREAM TOTSTREAM)) + NEWPC SRCPFILE) (SETQ NEWPC (create PIECE using PC PNEW _ T PREVPIECE _ NIL NEXTPIECE _ NIL PTREENODE _ NIL)) (SELECTC (PTYPE PC) @@ -1727,13 +1765,15 @@ (OBJECT.PTYPE (* ;  "No copy if object doesn't allow it. Caller must be prepared for NIL?") (FSETPC NEWPC PCONTENTS (OR (\TEDIT.APPLY.OBJFN (PCONTENTS NEWPC) - OPERATION FROMOBJ TOOBJ PROMPTTEXTOBJ) + OPERATION FROMTSTREAM TOTSTREAM + PROMPTTEXTOBJ) (RETURN NIL)))) NIL) (* ;; "If moving from one text to another, we have to register the looks.") - (if (AND UNPROTECT (ffetch CLPROTECTED of (PLOOKS NEWPC))) + (if (AND UNPROTECT (FGETCLOOKS (PLOOKS NEWPC) + CLPROTECTED)) then (FSETPC NEWPC PLOOKS (\TEDIT.UNIQUIFY.CHARLOOKS (create CHARLOOKS using (PLOOKS PC) CLPROTECTED _ NIL @@ -1747,7 +1787,8 @@ (RETURN NEWPC]) (\TEDIT.APPLY.OBJFN - [LAMBDA (OBJ OPERATION FROMTOBJ TOTOBJ PROMPTTEXTOBJ) (* ; "Edited 25-Jun-2024 11:59 by rmk") + [LAMBDA (OBJ OPERATION FROMTSTREAM TOTSTREAM PROMPTTEXTOBJ)(* ; "Edited 21-Apr-2025 21:07 by rmk") + (* ; "Edited 25-Jun-2024 11:59 by rmk") (* ; "Edited 15-Mar-2024 15:38 by rmk") (* ; "Edited 15-Jul-2023 10:43 by rmk") (* ; "Edited 9-Jul-2023 16:24 by rmk") @@ -1758,24 +1799,24 @@ (* ;; "As part of an OPERATION on an image object piece, we execute the appropriate object functions. If any of them returns DONT, we print a message in the prompt window of PROMPTTEXTOBJ or FROMTOBJ, and return NIL. Otherwise, we return an object, either OBJ or a copy.") - (CL:UNLESS TOTOBJ (SETQ TOTOBJ FROMTOBJ)) - (PROG [NEWOBJ (OBJFN (IMAGEOBJPROP OBJ (SELECTQ OPERATION - (COPY 'COPYFN) - (MOVE 'WHENMOVEDFN) - (INSERT 'WHENINSERTEDFN) - (DELETE (* ; + (CL:UNLESS TOTSTREAM (SETQ TOTSTREAM FROMTSTREAM)) + (PROG ((OBJFN (IMAGEOBJPROP OBJ (SELECTQ OPERATION + (COPY 'COPYFN) + (MOVE 'WHENMOVEDFN) + (INSERT 'WHENINSERTEDFN) + (DELETE (* ;  "This may want to apply to the first pane?") - 'WHENDELETEDFN) - NIL] + 'WHENDELETEDFN) + NIL))) + NEWOBJ) (SETQ NEWOBJ (if OBJFN - then (APPLY* OBJFN OBJ (fetch (TEXTOBJ STREAMHINT) of FROMTOBJ) - (CL:UNLESS (EQ OPERATION 'DELETE) - (fetch (TEXTOBJ STREAMHINT) of TOTOBJ))) + then (APPLY* OBJFN OBJ FROMTSTREAM (CL:UNLESS (EQ OPERATION 'DELETE) + TOTSTREAM)) elseif (EQ OPERATION 'COPY) then (COPYALL OBJ) else OBJ)) (CL:WHEN (MEMB NEWOBJ '(DON'T DONT)) - (TEDIT.PROMPTPRINT (OR PROMPTTEXTOBJ FROMTOBJ) + (TEDIT.PROMPTPRINT (OR PROMPTTEXTOBJ FROMTSTREAM) (CONCAT (L-CASE OPERATION T) " of this object not allowed.") T) @@ -1785,36 +1826,29 @@ (CL:WHEN [AND (EQ OPERATION 'COPY) (SETQ OBJFN (IMAGEOBJPROP OBJ 'WHENCOPIEDFN)) - (MEMB (APPLY* OBJFN OBJ (WINDOWPROP (\TEDIT.PRIMARYPANE TOTOBJ) + (MEMB (APPLY* OBJFN OBJ (WINDOWPROP (\TEDIT.PRIMARYPANE TOTSTREAM) 'DSP) - (fetch (TEXTOBJ STREAMHINT) of FROMTOBJ) - (fetch (TEXTOBJ STREAMHINT) of TOTOBJ)) + FROMTSTREAM TOTSTREAM) '(DON'T DONT] (RETURN NIL)) (RETURN (OR (IMAGEOBJP NEWOBJ) OBJ]) (\TEDIT.DELETE - [LAMBDA (TEXTOBJ TARGETSEL/CHAR LEN POINT DONTCHECK) (* ; "Edited 19-Mar-2025 11:22 by rmk") + [LAMBDA (TSTREAM TARGETSEL/CHAR LEN POINT DONTCHECK) (* ; "Edited 22-Apr-2025 09:58 by rmk") + (* ; "Edited 20-Apr-2025 13:27 by rmk") + (* ; "Edited 6-Apr-2025 12:03 by rmk") + (* ; "Edited 19-Mar-2025 11:22 by rmk") (* ; "Edited 6-Feb-2025 00:14 by rmk") (* ; "Edited 8-Dec-2024 21:39 by rmk") - (* ; "Edited 28-Nov-2024 10:13 by rmk") - (* ; "Edited 27-Nov-2024 09:18 by rmk") (* ; "Edited 13-Sep-2024 22:30 by rmk") - (* ; "Edited 8-Sep-2024 00:07 by rmk") (* ; "Edited 7-Jul-2024 12:07 by rmk") (* ; "Edited 23-Jun-2024 19:27 by rmk") (* ; "Edited 18-May-2024 16:20 by rmk") - (* ; "Edited 12-May-2024 20:51 by rmk") - (* ; "Edited 23-Apr-2024 07:35 by rmk") (* ; "Edited 24-Apr-2024 10:42 by rmk") (* ; "Edited 15-Mar-2024 13:36 by rmk") (* ; "Edited 21-Feb-2024 20:40 by rmk") - (* ; "Edited 20-Feb-2024 20:09 by rmk") - (* ; "Edited 19-Feb-2024 11:48 by rmk") - (* ; "Edited 16-Feb-2024 08:46 by rmk") (* ; "Edited 12-Nov-2023 12:14 by rmk") - (* ; "Edited 29-Oct-2023 00:19 by rmk") (* ; "Edited 6-Jun-2023 12:48 by rmk") (* ; "Edited 29-May-91 18:22 by jds") @@ -1827,46 +1861,45 @@ (* ;; "If this is called as part of a move, SEL should end up at the location of the insert, adjusted if the TARGETSEL comes earlier. If this is just a delete, SEL should end up as a point selection at TARGETSEL's CH#.") - (CL:UNLESS TARGETSEL/CHAR - (SETQ TARGETSEL/CHAR (TEXTSEL TEXTOBJ))) - (LET ((SEL (TEXTSEL TEXTOBJ)) - CLOOKS FIRSTCHAR) - [if (type? SELECTION TARGETSEL/CHAR) - then (SETQ CLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ TARGETSEL/CHAR)) - (SETQ FIRSTCHAR (FGETSEL TARGETSEL/CHAR CH#)) - (CL:UNLESS LEN - (SETQ LEN (FGETSEL TARGETSEL/CHAR DCH))) - (SETQ POINT (FGETSEL TARGETSEL/CHAR POINT)) - else (SETQ FIRSTCHAR TARGETSEL/CHAR) - (CL:UNLESS POINT - (SETQ POINT 'LEFT))] - [SETQ CLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ (CL:IF (EQ POINT 'LEFT) - (SUB1 FIRSTCHAR) - (IPLUS FIRSTCHAR LEN))] - (CL:WHEN (\TEDIT.DELETE.SELPIECES TEXTOBJ FIRSTCHAR LEN DONTCHECK) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (SEL (TEXTSEL TEXTOBJ)) + CLOOKS FIRSTCHAR) + (CL:UNLESS TARGETSEL/CHAR (SETQ TARGETSEL/CHAR SEL)) + [if (type? SELECTION TARGETSEL/CHAR) + then (SETQ CLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ TARGETSEL/CHAR)) + (SETQ FIRSTCHAR (FGETSEL TARGETSEL/CHAR CH#)) + (CL:UNLESS LEN + (SETQ LEN (FGETSEL TARGETSEL/CHAR DCH))) + (SETQ POINT (FGETSEL TARGETSEL/CHAR POINT)) + else (SETQ FIRSTCHAR TARGETSEL/CHAR) + (CL:UNLESS POINT + (SETQ POINT 'LEFT))] + [SETQ CLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ (CL:IF (EQ POINT 'LEFT) + FIRSTCHAR + (IPLUS -1 FIRSTCHAR LEN))] + (CL:WHEN (\TEDIT.DELETE.SELPIECES TSTREAM FIRSTCHAR LEN DONTCHECK) (* ;  "Delete the selected characters (if objects allow)") - (* ;; "Pieces are gone, make lines, SEL, and caret looks consistent with current text.") + (* ;; + "Pieces are gone, make lines, SEL, and caret looks consistent with current text.") - (\TEDIT.UPDATE.LINES TEXTOBJ 'DELETION FIRSTCHAR LEN) - (FSETTOBJ TEXTOBJ CARETLOOKS CLOOKS) + (\TEDIT.UPDATE.LINES TSTREAM 'DELETION FIRSTCHAR LEN) + (FSETTOBJ TEXTOBJ CARETLOOKS CLOOKS) - (* ;; "Adjust SEL and TARGETSEL to reflect the deleted characters.") + (* ;; "Adjust SEL and TARGETSEL to reflect the deleted characters.") - (\TEDIT.SEL.DELETEDCHARS SEL FIRSTCHAR LEN) + (\TEDIT.SEL.DELETEDCHARS SEL FIRSTCHAR LEN) - (* ;; "In any event, TARGETSEL's characters are all gone, reduce it to a point selection in case it is still in use. And then SEL moves to the position of the deletion.") + (* ;; "In any event, TARGETSEL's characters are all gone, reduce it to a point selection in case it is still in use. And then SEL moves to the position of the deletion.") - (* ;; "This is to the right of the last remaining character so that FIXSEL sees starting character in its proper line.") + (* ;; "This is to the right of the last remaining character so that FIXSEL sees starting character in its proper line.") - (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL (SUB1 FIRSTCHAR) - 0 - 'RIGHT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) - T)]) + (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) + (\TEDIT.UPDATE.SEL TSTREAM (SUB1 FIRSTCHAR) + 0 + 'RIGHT) + T)]) (\TEDIT.DIFFUSE.PARALOOKS [LAMBDA (PRIORPC SUCCEEDINGPC) (* ; "Edited 16-Feb-2024 00:07 by rmk") @@ -1894,7 +1927,8 @@ (PPARALAST PC)) do (FSETPC PC PPARALOOKS PPLOOKS)))]) (\TEDIT.WORDDELETE - [LAMBDA (TSTREAM) (* ; "Edited 27-Nov-2024 23:21 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 6-Apr-2025 12:31 by rmk") + (* ; "Edited 27-Nov-2024 23:21 by rmk") (* ; "Edited 31-Oct-2024 17:47 by rmk") (* ; "Edited 7-Jul-2024 11:35 by rmk") (* ; "Edited 29-Apr-2024 11:01 by rmk") @@ -1903,8 +1937,7 @@ (* ; "Edited 23-May-2023 16:37 by rmk") (* ; "Edited 22-May-2023 10:52 by rmk") (* ; "Edited 29-May-91 18:22 by jds") - (LET ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) - LASTNO FIRSTNO) + (LET (LASTNO FIRSTNO) (SETQ LASTNO (SUB1 (TEDIT.GETPOINT TSTREAM))) (* ;; "LASTNO is the final (i.e., highest-numbered) character to be deleted.") @@ -1912,10 +1945,11 @@ (CL:UNLESS (ILEQ LASTNO 0) (* ;  "Nothing to delete at start of file.") (SETQ FIRSTNO (\TEDIT.WORD.FIRST TSTREAM LASTNO)) - (\TEDIT.DELETE TEXTOBJ FIRSTNO (ADD1 (IDIFFERENCE LASTNO FIRSTNO))))]) + (\TEDIT.DELETE TSTREAM FIRSTNO (ADD1 (IDIFFERENCE LASTNO FIRSTNO))))]) (\TEDIT.WORDDELETE.FORWARD - [LAMBDA (TSTREAM) (* ; "Edited 27-Nov-2024 20:31 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 6-Apr-2025 12:30 by rmk") + (* ; "Edited 27-Nov-2024 20:31 by rmk") (* ; "Edited 31-Oct-2024 17:47 by rmk") (* ; "Edited 7-Jul-2024 11:35 by rmk") (* ; "Edited 29-Apr-2024 10:59 by rmk") @@ -1927,18 +1961,19 @@ (* ;; "This deletes all characters from the character just after the caret to the end of the following word, skipping over separators to reach the target word.") - (LET ((TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ))) - FIRSTNO LASTNO) + (LET (FIRSTNO LASTNO) (* ;; "LASTNO is the final (i.e., highest-numbered) character to be deleted.") (SETQ FIRSTNO (TEDIT.GETPOINT TSTREAM)) - (CL:UNLESS (IGREATERP FIRSTNO (TEXTLEN TEXTOBJ)) (* ; "Nothing to delete at end of file.") + (CL:UNLESS (IGREATERP FIRSTNO (TEXTLEN (FTEXTOBJ TSTREAM))) + (* ; "Nothing to delete at end of file.") (SETQ LASTNO (\TEDIT.WORD.LAST TSTREAM FIRSTNO)) - (\TEDIT.DELETE TEXTOBJ FIRSTNO (ADD1 (IDIFFERENCE LASTNO FIRSTNO))))]) + (\TEDIT.DELETE TSTREAM FIRSTNO (ADD1 (IDIFFERENCE LASTNO FIRSTNO))))]) (\TEDIT.FINISHEDIT? - [LAMBDA (TSTREAM NOFORCE) (* ; "Edited 14-Jul-2024 12:25 by rmk") + [LAMBDA (TSTREAM NOFORCE) (* ; "Edited 19-Apr-2025 10:47 by rmk") + (* ; "Edited 14-Jul-2024 12:25 by rmk") (* ; "Edited 1-Jul-2024 16:11 by rmk") (* ; "Edited 30-Jun-2024 12:36 by rmk") (* ; "Edited 25-Jun-2024 11:59 by rmk") @@ -1963,12 +1998,15 @@ (* ;; "We're busy doing something, don't close with a message") - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Not closed: " (CL:IF (EQ T (FGETTOBJ TEXTOBJ - EDITOPACTIVE)) - "Edit" - (FGETTOBJ TEXTOBJ EDITOPACTIVE)) - " operation in progress") - T) + (CL:UNLESS (STRING.EQUAL "Get" (FGETTOBJ TEXTOBJ EDITOPACTIVE)) + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Not closed: " (CL:IF (EQ T (FGETTOBJ TEXTOBJ + EDITOPACTIVE + )) + "Edit" + (FGETTOBJ TEXTOBJ + EDITOPACTIVE)) + " operation in progress") + T)) (RETURN 'DON'T)) [for QUITFN (PRIMPANE _ (FGETTOBJ TEXTOBJ PRIMARYPANE)) inside QUITFNS until (OR (EQ QUITFLG 'DON'T) @@ -2266,7 +2304,7 @@ (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "31-Mar-2025 12:04:23") +(RPAQQ TEDITSYSTEMDATE "22-Apr-2025 10:28:59") @@ -2276,26 +2314,26 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4795 7189 (MAKE-TEDIT-EXPORTS.ALL 4805 . 5351) (UPDATE-TEDIT 5353 . 6282) (EDIT-TEDIT -6284 . 7187)) (8697 36163 (TEDIT 8707 . 11285) (TEXTSTREAM 11287 . 13207) (TEXTSTREAMP 13209 . 13593) -(COERCETEXTSTREAM 13595 . 17806) (TEDIT.CONCAT 17808 . 21114) (TEDITSTRING 21116 . 22030) (TEDIT-SEE -22032 . 22591) (TEDIT.COPY 22593 . 24738) (TEDIT.DELETE 24740 . 25992) (TEDIT.INSERT 25994 . 28952) ( -TEDIT.TERPRI 28954 . 30068) (TEDIT.KILL 30070 . 30986) (TEDIT.QUIT 30988 . 32354) (TEDIT.MOVE 32356 . -33244) (TEDIT.STRINGWIDTH 33246 . 33917) (TEDIT.CHARWIDTH 33919 . 36161)) (36164 38105 (TEXTOBJ 36174 - . 36639) (COERCETEXTOBJ 36641 . 38103)) (39505 41155 (TDRIBBLE 39515 . 41153)) (41196 53304 ( -TEDIT.INSERT.OBJECT 41206 . 46047) (TEDIT.EDIT.OBJECT 46049 . 48390) (TEDIT.OBJECT.CHANGED 48392 . -51259) (TEDIT.MAP.OBJECTS 51261 . 52832) (\TEDIT.FIRST.OBJPIECE 52834 . 53067) (\TEDIT.NEXT.OBJPIECE -53069 . 53302)) (53327 60770 (\TEDIT.CONCAT.PAGEFRAMES 53337 . 58404) (\TEDIT.GET.PAGE.HEADINGS 58406 - . 59435) (\TEDIT.CONCAT.INSTALL.HEADINGS 59437 . 60768)) (60771 64200 (\TEDIT.MOVE.MSG 60781 . 62862) - (\TEDIT.READONLY 62864 . 64198)) (64201 69865 (TEDIT.NCHARS 64211 . 64584) (TEDIT.RPLCHARCODE 64586 - . 67465) (TEDIT.NTHCHARCODE 67467 . 69394) (TEDIT.NTHCHAR 69396 . 69863)) (69911 124812 (\TEDIT1 -69921 . 71998) (\TEDIT.INSERT 72000 . 77977) (\TEDIT.MOVE 77979 . 85329) (\TEDIT.COPY 85331 . 89464) ( -\TEDIT.REPLACE.SELPIECES 89466 . 93631) (\TEDIT.INSERT.SELPIECES 93633 . 96518) (\TEDIT.RESTARTFN -96520 . 99025) (\TEDIT.CHARDELETE 99027 . 101854) (\TEDIT.COPYPIECE 101856 . 106704) ( -\TEDIT.APPLY.OBJFN 106706 . 109903) (\TEDIT.DELETE 109905 . 114942) (\TEDIT.DIFFUSE.PARALOOKS 114944 - . 117215) (\TEDIT.WORDDELETE 117217 . 118773) (\TEDIT.WORDDELETE.FORWARD 118775 . 120447) ( -\TEDIT.FINISHEDIT? 120449 . 124810)) (124813 125472 (\TEDIT.THELP 124823 . 125470)) (125506 134290 ( -\TEDIT.PARAPIECES 125516 . 127490) (\TEDIT.PARACHNOS 127492 . 128384) (\TEDIT.PARA.FIRST 128386 . -131253) (\TEDIT.PARA.LAST 131255 . 134288)) (134291 141386 (\TEDIT.WORD.FIRST 134301 . 138305) ( -\TEDIT.WORD.LAST 138307 . 141384))))) + (FILEMAP (NIL (4839 7233 (MAKE-TEDIT-EXPORTS.ALL 4849 . 5395) (UPDATE-TEDIT 5397 . 6326) (EDIT-TEDIT +6328 . 7231)) (8663 36650 (TEDIT 8673 . 11251) (TEXTSTREAM 11253 . 13173) (TEXTSTREAMP 13175 . 13559) +(COERCETEXTSTREAM 13561 . 17772) (TEDIT.CONCAT 17774 . 21076) (TEDITSTRING 21078 . 21992) (TEDIT-SEE +21994 . 22553) (TEDIT.COPY 22555 . 24700) (TEDIT.DELETE 24702 . 26063) (TEDIT.INSERT 26065 . 29439) ( +TEDIT.TERPRI 29441 . 30555) (TEDIT.KILL 30557 . 31473) (TEDIT.QUIT 31475 . 32841) (TEDIT.MOVE 32843 . +33731) (TEDIT.STRINGWIDTH 33733 . 34404) (TEDIT.CHARWIDTH 34406 . 36648)) (36651 38592 (TEXTOBJ 36661 + . 37126) (COERCETEXTOBJ 37128 . 38590)) (39992 41642 (TDRIBBLE 40002 . 41640)) (41683 54668 ( +TEDIT.INSERT.OBJECT 41693 . 46709) (TEDIT.EDIT.OBJECT 46711 . 49540) (TEDIT.OBJECT.CHANGED 49542 . +52623) (TEDIT.MAP.OBJECTS 52625 . 54196) (\TEDIT.FIRST.OBJPIECE 54198 . 54431) (\TEDIT.NEXT.OBJPIECE +54433 . 54666)) (54691 62134 (\TEDIT.CONCAT.PAGEFRAMES 54701 . 59768) (\TEDIT.GET.PAGE.HEADINGS 59770 + . 60799) (\TEDIT.CONCAT.INSTALL.HEADINGS 60801 . 62132)) (62135 65742 (\TEDIT.MOVE.MSG 62145 . 64226) + (\TEDIT.READONLY 64228 . 65740)) (65743 71407 (TEDIT.NCHARS 65753 . 66126) (TEDIT.RPLCHARCODE 66128 + . 69007) (TEDIT.NTHCHARCODE 69009 . 70936) (TEDIT.NTHCHAR 70938 . 71405)) (71453 127702 (\TEDIT1 +71463 . 73540) (\TEDIT.INSERT 73542 . 79803) (\TEDIT.MOVE 79805 . 87607) (\TEDIT.COPY 87609 . 92038) ( +\TEDIT.REPLACE.SELPIECES 92040 . 96362) (\TEDIT.INSERT.SELPIECES 96364 . 99361) (\TEDIT.RESTARTFN +99363 . 101868) (\TEDIT.CHARDELETE 101870 . 104799) (\TEDIT.COPYPIECE 104801 . 109814) ( +\TEDIT.APPLY.OBJFN 109816 . 112902) (\TEDIT.DELETE 112904 . 117272) (\TEDIT.DIFFUSE.PARALOOKS 117274 + . 119545) (\TEDIT.WORDDELETE 119547 . 121162) (\TEDIT.WORDDELETE.FORWARD 121164 . 122953) ( +\TEDIT.FINISHEDIT? 122955 . 127700)) (127703 128362 (\TEDIT.THELP 127713 . 128360)) (128396 137180 ( +\TEDIT.PARAPIECES 128406 . 130380) (\TEDIT.PARACHNOS 130382 . 131274) (\TEDIT.PARA.FIRST 131276 . +134143) (\TEDIT.PARA.LAST 134145 . 137178)) (137181 144276 (\TEDIT.WORD.FIRST 137191 . 141195) ( +\TEDIT.WORD.LAST 141197 . 144274))))) STOP diff --git a/library/tedit/TEDIT-ABBREV b/library/tedit/TEDIT-ABBREV index 88b76fa5f..8087b09ab 100644 --- a/library/tedit/TEDIT-ABBREV +++ b/library/tedit/TEDIT-ABBREV @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 10:13:36" {WMEDLEY}tedit>TEDIT-ABBREV.;21 15982 +(FILECREATED "20-Apr-2025 23:30:29" {WMEDLEY}tedit>TEDIT-ABBREV.;22 16092 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.ABBREV.PARSE) + :CHANGES-TO (FNS \TEDIT.ABBREV.EXPAND) - :PREVIOUS-DATE "23-Mar-2025 17:09:00" {WMEDLEY}tedit>TEDIT-ABBREV.;20) + :PREVIOUS-DATE "28-Mar-2025 10:13:36" {WMEDLEY}tedit>TEDIT-ABBREV.;21) (PRETTYCOMPRINT TEDIT-ABBREVCOMS) @@ -63,7 +63,8 @@ (DEFINEQ (\TEDIT.ABBREV.EXPAND - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 20-Mar-2025 21:52 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 20-Apr-2025 23:30 by rmk") + (* ; "Edited 20-Mar-2025 21:52 by rmk") (* ; "Edited 30-May-91 19:27 by jds") (* ; "Expand an abbvreviation") (LET ((CANDIDATES (\TEDIT.ABBREV.PARSE TSTREAM SEL)) @@ -92,7 +93,7 @@ (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.FROM.STRING EXPANSION TEXTOBJ NIL (PCHARLOOKS (\TEDIT.CHTOPC (CADR CAND) TEXTOBJ))) - TEXTOBJ SEL) + TSTREAM SEL) else (TEDIT.PROMPTPRINT TSTREAM "No abbreviation to expand" T]) (\TEDIT.ABBREV.PARSE @@ -306,6 +307,6 @@ ("DATE" . \TEDIT.EXPAND.DATE) (">>DATE<<" . \TEDIT.EXPAND.DATE))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2933 14638 (\TEDIT.ABBREV.EXPAND 2943 . 5054) (\TEDIT.ABBREV.PARSE 5056 . 12340) ( -\TEDIT.EXPAND.DATE 12342 . 12975) (\TEDIT.TRY.ABBREV 12977 . 14636))))) + (FILEMAP (NIL (2934 14748 (\TEDIT.ABBREV.EXPAND 2944 . 5164) (\TEDIT.ABBREV.PARSE 5166 . 12450) ( +\TEDIT.EXPAND.DATE 12452 . 13085) (\TEDIT.TRY.ABBREV 13087 . 14746))))) STOP diff --git a/library/tedit/TEDIT-ABBREV.LCOM b/library/tedit/TEDIT-ABBREV.LCOM index b01804eed14c83acf82a92c4e035e9e838e9d7a1..45417e8c6d2ce1f1bf0fd5f5211ddc1107ec881b 100644 GIT binary patch delta 218 zcmbQOK39E0gs_3GV?mLwk%5t^f|0S6u>lZG%(j#?(p2D5GD4CxG_^7@vobN9xK|~` zH6p;#&qX0KPeI8o)W=5wS)HDqo{~aJVo7QWb_2|mG`Td~Jbhf9gIpa$TwN4UY=Jnz z$WlpR@;OFzHX{W?GXu-Xg^c=Q5IZ#$tO9~u!#w>%gLPei+9&HUN=!b>sKIDB`5WUI MMu*LZnQjOG01!_%uK)l5 delta 231 zcmbQMK3jc4gs_FKZ(@**~Dy1NkdHqE+r!~BuQf{10yRVi-~(x zCePzxi_OeaP;v|P@lillq^GB+q>z$WlA3~5x3RI3CYOerr;n?1kgH>etBZn?5f=NE z6eeF_)L>OGG_|ytT*Roa9pD%g?5e3?6%gba=II|Atm^{Q4Ag6ktedit>TEDIT-BUTTONS.;223 124611 +(FILECREATED "14-Apr-2025 23:50:23" {WMEDLEY}tedit>TEDIT-BUTTONS.;226 124952 :EDIT-BY rmk - :CHANGES-TO (FNS MB.FIELD.INSURETYPE MB.BUTTONEVENTINFN) + :CHANGES-TO (FNS MB.3STATE.BUTTONEVENTINFN MB.TOGGLE.BUTTONEVENTINFN) - :PREVIOUS-DATE "14-Mar-2025 15:29:51" {WMEDLEY}TEDIT>TEDIT-BUTTONS.;219) + :PREVIOUS-DATE " 6-Apr-2025 14:47:34" {WMEDLEY}tedit>TEDIT-BUTTONS.;225) (PRETTYCOMPRINT TEDIT-BUTTONSCOMS) @@ -67,7 +67,8 @@ (DEFINEQ (MB.ADD - [LAMBDA (MENUDESC MENUTSTREAM WHERE INCREMENTALUPDATES) (* ; "Edited 5-Jan-2025 11:36 by rmk") + [LAMBDA (MENUDESC MENUTSTREAM WHERE INCREMENTALUPDATES) (* ; "Edited 6-Apr-2025 14:35 by rmk") + (* ; "Edited 5-Jan-2025 11:36 by rmk") (* ; "Edited 22-Oct-2024 09:16 by rmk") (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 18-Oct-2024 13:49 by rmk") @@ -156,10 +157,10 @@ (* ;; "Form to be evaluated") (add CH# (EVAL TYPE)) - else (\ILLEGAL.ARG DESC))) finally (\TEDIT.SHOWSEL NIL NIL MENUTSTREAM) + else (\ILLEGAL.ARG DESC))) finally (\TEDIT.NOSEL MENUTSTREAM) (* ;  "User has to click to get a selection") - (SETSEL (TEXTSEL (GETTSTR MENUTSTREAM TEXTOBJ)) + (SETSEL (TEXTSEL (FTEXTOBJ MENUTSTREAM)) SET NIL) (RETURN CH#)))]) @@ -753,6 +754,7 @@ (MB.3STATE.BUTTONEVENTINFN [LAMBDA (OBJ MENUDS SEL RELX RELY MENUWINDOW MENUTSTREAM BUTTON) + (* ; "Edited 14-Apr-2025 23:49 by rmk") (* ; "Edited 22-Dec-2024 22:45 by rmk") (* ; "Edited 7-Dec-2024 13:11 by rmk") (* ; "Edited 5-Dec-2024 21:53 by rmk") @@ -794,8 +796,7 @@ else (* ; "Buttons came up: do it") (IMAGEOBJPROP OBJ 'STATE NEXTSTATE) (CL:WHEN (SETQ STATECHANGEFN (IMAGEOBJPROP OBJ 'STATECHANGEFN)) - (APPLY* STATECHANGEFN OBJ NEXTSTATE (fetch (TEXTWINDOW WTEXTSTREAM) - of MENUDS)))]) + (APPLY* STATECHANGEFN OBJ NEXTSTATE (PANETEXTSTREAM MENUDS)))]) (TEDIT.BACKTOMAIN MENUTSTREAM))) 'DON'T]) ) @@ -1379,6 +1380,7 @@ (MB.TOGGLE.BUTTONEVENTINFN [LAMBDA (OBJ MENUDS MENUSEL RELX RELY MENUWINDOW MENUTSTREAM BUTTON) + (* ; "Edited 14-Apr-2025 23:49 by rmk") (* ; "Edited 7-Dec-2024 13:11 by rmk") (* ; "Edited 19-Oct-2024 19:52 by rmk") (* ; "Edited 5-Oct-2024 22:42 by rmk") @@ -1422,8 +1424,8 @@ else (* ; "Buttons came up: do it") (SETQ STATECHANGEFN (IMAGEOBJPROP OBJ 'STATECHANGEFN)) (if (OR (NULL STATECHANGEFN) - (NEQ 'DON'T (APPLY* STATECHANGEFN OBJ NEXTSTATE - (fetch (TEXTWINDOW WTEXTSTREAM) of MENUDS) + (NEQ 'DON'T (APPLY* STATECHANGEFN OBJ NEXTSTATE (PANETEXTSTREAM + MENUDS) MENUSEL))) then (IMAGEOBJPROP OBJ 'STATE NEXTSTATE) (* ; @@ -1774,7 +1776,8 @@ ENDPC]) (MB.FIELD.SETSTATEFN - [LAMBDA (PREFIXPC NEWVALUE TSTREAM) (* ; "Edited 9-Dec-2024 22:14 by rmk") + [LAMBDA (PREFIXPC NEWVALUE TSTREAM) (* ; "Edited 6-Apr-2025 12:23 by rmk") + (* ; "Edited 9-Dec-2024 22:14 by rmk") (* ; "Edited 4-Dec-2024 20:31 by rmk") (* ; "Edited 20-Oct-2024 17:20 by rmk") (* ; "Edited 29-Sep-2024 12:46 by rmk") @@ -1818,7 +1821,7 @@  "FSEL selects the field to the right of PREFIXPC") (\TEDIT.UPDATE.SEL FSEL FIELDSTART FIELDLENGTH 'LEFT) (CL:UNLESS (EQ 0 FIELDLENGTH) (* ; "Clear the old value") - (\TEDIT.DELETE TEXTOBJ FSEL) + (\TEDIT.DELETE TSTREAM FSEL) (SETQ FIELDLENGTH 0)) (SETQ FIELDLENGTH (if (EQ NEWVALUE '**EMPTY**) then 0 @@ -1961,25 +1964,25 @@ (MB.FIELD.INIT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3253 19106 (MB.ADD 3263 . 9692) (MB.DELETE 9694 . 10068) (MB.GET 10070 . 16840) ( -MB.GET.MBARG 16842 . 18511) (TEDIT.BACKTOMAIN 18513 . 19104)) (19150 39086 (MB.BUTTONEVENTINFN 19160 - . 20728) (MB.DISPLAYFN 20730 . 22789) (MB.SETIMAGE 22791 . 23959) (MB.SIZEFN 23961 . 25509) ( -MB.WHENOPERATEDONFN 25511 . 27460) (MB.COPYFN 27462 . 27920) (MB.GETFN 27922 . 28883) (MB.PUTFN 28885 - . 29985) (MB.SHOWSELFN 29987 . 31496) (MB.CREATE 31498 . 35521) (MB.CHANGENAME 35523 . 36005) ( -MB.INIT 36007 . 37468) (MB.TRACK.UNTIL 37470 . 38165) (MB.DON'T 38167 . 38463) (MB.SPEC.REMAINDER -38465 . 39084)) (39248 49238 (MB.3STATE.CREATE 39258 . 40122) (MB.3STATE.DISPLAYFN 40124 . 41110) ( -MB.3STATE.SHOWSELFN 41112 . 43423) (MB.3STATE.INIT 43425 . 44836) (MB.3STATE.SETSTATEFN 44838 . 45496) - (MB.3STATE.BUTTONEVENTINFN 45498 . 49236)) (49393 80061 (MB.NWAY.CREATE 49403 . 55445) ( -MB.NWAY.DISPLAYFN 55447 . 56310) (MB.NWAY.WHENOPERATEDONFN 56312 . 58502) (MB.NWAY.SIZEFN 58504 . -62440) (MB.NWAY.SELECT 62442 . 66012) (MB.NWAY.BUTTONEVENTINFN 66014 . 69226) (MB.NWAY.NEWMENUBUTTON -69228 . 69940) (MB.NWAY.COPYFN 69942 . 70909) (MB.NWAY.INIT 70911 . 72402) (MB.NWAY.ARRANGEBUTTONS -72404 . 74375) (MB.NWAY.ADDITEM 74377 . 78239) (MB.NWAY.FINDSUBOBJ 78241 . 78755) (MB.NWAY.SETSTATEFN -78757 . 80059)) (80140 92027 (MB.TOGGLE.CREATE 80150 . 81145) (MB.TOGGLE.DISPLAYFN 81147 . 82630) ( -MB.TOGGLE.INIT 82632 . 84431) (MB.SET.TOGGLE 84433 . 85634) (MB.TOGGLE.SETSTATEFN 85636 . 86476) ( -MB.TOGGLE.BUTTONEVENTINFN 86478 . 90682) (MB.TOGGLE.WHENOPERATEDONFN 90684 . 92025)) (92108 124532 ( -MB.FIELD.CREATE 92118 . 97569) (MB.FIELD.DISPLAYFN 97571 . 98362) (MB.FIELD.IMAGEBOXFN 98364 . 99846) -(MB.FIELD.PREFIXCREATE 99848 . 103784) (MB.FIELD.SUFFIXCREATE 103786 . 105446) (MB.FIELD.INIT 105448 - . 107215) (MB.FIELD.WHENOPERATEDONFN 107217 . 108488) (MB.FIELD.GETSTATEFN 108490 . 112424) ( -MB.FIELD.SETSTATEFN 112426 . 117121) (MB.FIELD.BUTTONEVENTINFN 117123 . 119428) (MB.FIELD.SIZEFN -119430 . 119670) (MB.FIELD.INSURETYPE 119672 . 124530))))) + (FILEMAP (NIL (3266 19211 (MB.ADD 3276 . 9797) (MB.DELETE 9799 . 10173) (MB.GET 10175 . 16945) ( +MB.GET.MBARG 16947 . 18616) (TEDIT.BACKTOMAIN 18618 . 19209)) (19255 39191 (MB.BUTTONEVENTINFN 19265 + . 20833) (MB.DISPLAYFN 20835 . 22894) (MB.SETIMAGE 22896 . 24064) (MB.SIZEFN 24066 . 25614) ( +MB.WHENOPERATEDONFN 25616 . 27565) (MB.COPYFN 27567 . 28025) (MB.GETFN 28027 . 28988) (MB.PUTFN 28990 + . 30090) (MB.SHOWSELFN 30092 . 31601) (MB.CREATE 31603 . 35626) (MB.CHANGENAME 35628 . 36110) ( +MB.INIT 36112 . 37573) (MB.TRACK.UNTIL 37575 . 38270) (MB.DON'T 38272 . 38568) (MB.SPEC.REMAINDER +38570 . 39189)) (39353 49358 (MB.3STATE.CREATE 39363 . 40227) (MB.3STATE.DISPLAYFN 40229 . 41215) ( +MB.3STATE.SHOWSELFN 41217 . 43528) (MB.3STATE.INIT 43530 . 44941) (MB.3STATE.SETSTATEFN 44943 . 45601) + (MB.3STATE.BUTTONEVENTINFN 45603 . 49356)) (49513 80181 (MB.NWAY.CREATE 49523 . 55565) ( +MB.NWAY.DISPLAYFN 55567 . 56430) (MB.NWAY.WHENOPERATEDONFN 56432 . 58622) (MB.NWAY.SIZEFN 58624 . +62560) (MB.NWAY.SELECT 62562 . 66132) (MB.NWAY.BUTTONEVENTINFN 66134 . 69346) (MB.NWAY.NEWMENUBUTTON +69348 . 70060) (MB.NWAY.COPYFN 70062 . 71029) (MB.NWAY.INIT 71031 . 72522) (MB.NWAY.ARRANGEBUTTONS +72524 . 74495) (MB.NWAY.ADDITEM 74497 . 78359) (MB.NWAY.FINDSUBOBJ 78361 . 78875) (MB.NWAY.SETSTATEFN +78877 . 80179)) (80260 92259 (MB.TOGGLE.CREATE 80270 . 81265) (MB.TOGGLE.DISPLAYFN 81267 . 82750) ( +MB.TOGGLE.INIT 82752 . 84551) (MB.SET.TOGGLE 84553 . 85754) (MB.TOGGLE.SETSTATEFN 85756 . 86596) ( +MB.TOGGLE.BUTTONEVENTINFN 86598 . 90914) (MB.TOGGLE.WHENOPERATEDONFN 90916 . 92257)) (92340 124873 ( +MB.FIELD.CREATE 92350 . 97801) (MB.FIELD.DISPLAYFN 97803 . 98594) (MB.FIELD.IMAGEBOXFN 98596 . 100078) + (MB.FIELD.PREFIXCREATE 100080 . 104016) (MB.FIELD.SUFFIXCREATE 104018 . 105678) (MB.FIELD.INIT 105680 + . 107447) (MB.FIELD.WHENOPERATEDONFN 107449 . 108720) (MB.FIELD.GETSTATEFN 108722 . 112656) ( +MB.FIELD.SETSTATEFN 112658 . 117462) (MB.FIELD.BUTTONEVENTINFN 117464 . 119769) (MB.FIELD.SIZEFN +119771 . 120011) (MB.FIELD.INSURETYPE 120013 . 124871))))) STOP diff --git a/library/tedit/TEDIT-BUTTONS.LCOM b/library/tedit/TEDIT-BUTTONS.LCOM index 5bc86b10f1783471bb0abfe0424493efcb81e029..aa145bcf3c8d31f38c4e054e09f85115cd387d3e 100644 GIT binary patch delta 1079 zcmZuvJ#W)c6m5ctLWD%1w50{4OIR9EEx&I&1qr8pNezx2C9gFfT~LcuI#hs=IxuvA zA3*Rw;2%_-Q3Xs)42X>hF);8G7`Tp8ngl%9&-b2t?z!jPUvKi?lKksXQM|(yuBj{fVtoP!2Q39dd6*Sq+T^;nCOWx(qPM0bmkChQ#xV)b~b>N-&o!k2vmkVk5(}n&g zJI@`Tw?ChsxKo~(7p{VJKL~Ww3oNhG1mQTK*Sr9PqJT5_#`43i?idh~fENVOQrC3+ z5Ru%5aB0QsbV0B&>={8MWVkj6nOOaEXw|LE94j@qrNdR=4uSQolUdP08@O;& zT*KGF@&FB-iKAwmxTC_DNNyEorkF~r!q~faRKy5PuK3e4ZlBLY&1RsFa#X2)PV%&h zbq!wF-yCz(9HH`9FHoD0wk6{RDJS_}Slg2*wX1Onj30#{nLYeR8Is&JQT;YZ;tZWh zYM1s}z@-D3FI++21K=oRU^;UpG@{S|bHw1Fuw8Z|ObRf2NDquENSy$Ro@avt6&$iT zff5B?rjIxhj8_MOSsmfJqm7G;xSkU5O$1zn6fw}u*+3>PIxd8Q`F1BVI4UlC6jnh{ zwJ{#!t}_y9G^)Urgi070@LTOb-%g+4)4+#gn delta 1034 zcmZuv&rcIU6s9F2)Jw5g#na0gm14Tt`L(mVfXTK@+tulA(+(6OmugLb7!Jh57-Kwp z1NPw6t7rZI5^tXT2aE|<Gez-Vkp30G03X&NvbynQ{qrk!~f zHY$asMj%DKD|{u^!MKK>#Pj(lvjh;PHbU{2+=GNMK7Uw>|K#Rt2D%~{F%P>QLk1K+ z^xI-xitUf9Z}wgu4i4Wx)dYdc&T4H#sVMB3D;T-)TK;=(_hh>D=<)8bU%WM?zq5XE zCW$}pW#N7r_J1x+JujXPr~l=4e@`vh7KfccO40PC>35sJTnEIaFM&B2QaUpTd!nm= zaRk1UQN5?SL8y_;g0SB5yFFlZ5{qrfU>#s6J_^b&m}Nn`W@a{-iO+2jZUA)=>|{Ku zC1eMv?IyTJAmsW58YpEWDvI54S;WTiad4+hC{OyrzP~+cBRDPPi4}jHS;#wF1Iu?g zO>m^A^mC1nn7T;~5&KdjU_{5M(4-}t$ICZ2KT+;L_A`t_DjcYubm0@VY-mKG0^+iZ zi^E1m!kOmS(nZ1{(GEoWq@re13cxmnOebK>!LO?z3IVw`D8B|sS4AWNX?|E)fkeDM z_0}(g>q1ZHolG0t&; TE9Lm9n0s}QYn^_3M{fTI@(2Je diff --git a/library/tedit/TEDIT-CHAT b/library/tedit/TEDIT-CHAT index 1027f5340..6f220118f 100644 --- a/library/tedit/TEDIT-CHAT +++ b/library/tedit/TEDIT-CHAT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "11-Mar-2025 15:41:08" {WMEDLEY}tedit>TEDIT-CHAT.;17 12449 +(FILECREATED "21-Apr-2025 23:06:01" {WMEDLEY}tedit>TEDIT-CHAT.;20 12175 :EDIT-BY rmk - :CHANGES-TO (FNS TEDITCHAT.CHARFN) + :CHANGES-TO (FNS TEDIT.DISPLAYTEXT) - :PREVIOUS-DATE "24-Jun-2024 00:05:09" {WMEDLEY}tedit>TEDIT-CHAT.;16) + :PREVIOUS-DATE "11-Mar-2025 15:41:08" {WMEDLEY}tedit>TEDIT-CHAT.;17) (PRETTYCOMPRINT TEDIT-CHATCOMS) @@ -92,98 +92,99 @@ (DEFINEQ (TEDIT.DISPLAYTEXT - [LAMBDA (TEXTOBJ CH CHWIDTH LINE XPOINT DS SEL) (* ; "Edited 23-Dec-2023 09:15 by rmk") + [LAMBDA (TSTREAM CH CHWIDTH LINE XPOINT DS SEL) (* ; "Edited 21-Apr-2025 23:05 by rmk") + (* ; "Edited 23-Dec-2023 09:15 by rmk") (* ; "Edited 6-Apr-2023 21:39 by rmk") (* ; "Edited 4-Nov-2022 17:18 by rmk") (* ; "Edited 25-Sep-2022 13:34 by rmk") - (* ; "Edited 6-Aug-2022 13:28 by rmk") - (* ; "Edited 12-Jun-90 18:01 by mitani") + (* ; "Edited 6-Aug-2022 13:28 by rmk") + (* ; + "This function does the actual displaying of typed-in text on the edit window.") (* This function does the actual  displaying of typed-in text on the  edit window.) - (HELP 'TEDIT.DISPLAYTEXT 'NOTUSED?) - (PROG ((LOOKS (\TEDIT.APPLY.STYLES (fetch (TEXTOBJ CARETLOOKS) of TEXTOBJ) + (LINEDESCRIPTOR! LINE) + (NOTUSED) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (LOOKS (\TEDIT.APPLY.STYLES (FGETTOBJ TEXTOBJ CARETLOOKS) (\TEDIT.CARETPIECE TEXTOBJ) - (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ))) - (TERMSA (fetch (TEXTOBJ TXTTERMSA) of TEXTOBJ)) + TSTREAM)) + (TERMSA (FGETTOBJ TEXTOBJ TXTTERMSA)) DY FONT) - (MOVETO XPOINT (IPLUS (fetch YBASE of LINE) - (OR (fetch CLOFFSET of LOOKS) + (MOVETO XPOINT (IPLUS (GETLD LINE YBASE) + (OR (FGETCLOOKS LOOKS CLOFFSET) 0)) - DS) (* Set the display stream position) + DS) (* ; "Set the display stream position") (COND - [TERMSA (* Special terminal table for - controlling character display. - Use it.) + [TERMSA (* ; + "Special terminal table for controlling character display. Use it.") (RESETLST (RESETSAVE \PRIMTERMSA TERMSA) [COND [(STRINGP CH) (for CHAR instring CH do (SELCHARQ CHAR - (TAB (* Put down white) - (BITBLT NIL 0 0 DS XPOINT (fetch YBOT of LINE) + (TAB (* ; "Put down white") + (BITBLT NIL 0 0 DS XPOINT (FGETLD LINE YBOT) 36 - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE) (RELMOVETO 36 0 DS)) - (CR (BITBLT NIL 0 0 DS XPOINT (fetch YBOT of LINE) + (CR (BITBLT NIL 0 0 DS XPOINT (FGETLD LINE YBOT) (IMAX 6 (CHARWIDTH CHAR FONT)) - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE)) - (\DSPPRINTCHAR (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - CHAR] + (\DSPPRINTCHAR TSTREAM CHAR] (T (SELCHARQ CH - (TAB (* Put down white) - (BITBLT NIL 0 0 DS XPOINT (fetch YBOT of LINE) + (TAB (* ; "Put down white") + (BITBLT NIL 0 0 DS XPOINT (FGETLD LINE YBOT) 36 - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE) (RELMOVETO 36 0 DS)) - (EOL (BITBLT NIL 0 0 DS XPOINT (fetch YBOT of LINE) + (EOL (BITBLT NIL 0 0 DS XPOINT (FGETLD LINE YBOT) (IMAX 6 (CHARWIDTH CH FONT)) - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE)) - (\DSPPRINTCHAR (fetch (TEXTOBJ STREAMHINT) of TEXTOBJ) - CH])] - (T (* No special handling; - just use native character codes) + (\DSPPRINTCHAR TSTREAM CH])] + (T (* ; + "No special handling; just use native character codes") (COND [(STRINGP CH) (for CHAR instring CH do (SELCHARQ CHAR - (TAB (* Put down white) + (TAB (* ; "Put down white") (BITBLT NIL 0 0 DS (DSPXPOSITION NIL DS) - (fetch YBOT of LINE) + (FGETLD LINE YBOT) 36 - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE) (RELMOVETO 36 0 DS)) (EOL (BITBLT NIL 0 0 DS (DSPXPOSITION NIL DS) - (fetch YBOT of LINE) + (FGETLD LINE YBOT) (IMAX 6 (CHARWIDTH CHAR FONT)) - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE)) (BLTCHAR CHAR DS] (T (SELCHARQ CH - (TAB (* Put down white) + (TAB (* ; "Put down white") (BITBLT NIL 0 0 DS (DSPXPOSITION NIL DS) - (fetch YBOT of LINE) + (FGETLD LINE YBOT) 36 - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE) (RELMOVETO 36 0 DS)) - (EOL (* Blank out the CR's width.) + (EOL (* ; "Blank out the CR's width.") (BITBLT NIL 0 0 DS (DSPXPOSITION NIL DS) - (fetch YBOT of LINE) + (FGETLD LINE YBOT) (IMAX 6 (CHARWIDTH CH FONT)) - (fetch LHEIGHT of LINE) + (FGETLD LINE LHEIGHT) 'TEXTURE 'REPLACE WHITESHADE)) (BLTCHAR CH DS]) @@ -214,6 +215,6 @@ CHATDECLS) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (886 4630 (TEDITSTREAM.INIT 896 . 1823) (TEDITCHAT.MENUFN 1825 . 3661) (TEDITCHAT.CHARFN - 3663 . 4628)) (4677 11561 (TEDIT.DISPLAYTEXT 4687 . 11559))))) + (FILEMAP (NIL (887 4631 (TEDITSTREAM.INIT 897 . 1824) (TEDITCHAT.MENUFN 1826 . 3662) (TEDITCHAT.CHARFN + 3664 . 4629)) (4678 11287 (TEDIT.DISPLAYTEXT 4688 . 11285))))) STOP diff --git a/library/tedit/TEDIT-CHAT.LCOM b/library/tedit/TEDIT-CHAT.LCOM index 8d82ab38d6b52ee9c43c079c7fe7e105e0f82814..aaad4d44df075c43fc740316fef05b06963c3475 100644 GIT binary patch delta 1909 zcmZ`)O>g5w7*1L?{n~busw!1>Rc5LVj(zzio_3SS4ez`YM0AqPaJ#P3rKKk4;(m^*W+g6mJ(Ux@iWi+A?JBs zf3@`c{HN{&!71&%_fte7X+&sFQgRaB+g6f9T13M$;Zsa z`(xmhcD^-wa+nUC7;bVn0>58cvFho5^U z1*%eXPj_s)W>k5hq}343P?Rs{4W2hSqBM(q)HQToLKNO#jhPkeF5?zjqf&@T()dy$ zB9mSsf^jGjR@0$GIOBaZ^kI`K3V@)e0z*{6@c-2LdW|8H?cpRF!l|Dm;1epn;A188 z0>=vJ;@;56N;_x**(eJXhjEAd0Nxn zfak7&U`vr{S!D-yK^Inj4H*#NFca>;ci<+Yy6t^GGT-j0QRx)`8U7iMMg|HoUnPV7 zvihsP?yc^w3am3FZi(A{rH))05)7e*1df$DD?jT&Xs55-iGA0WPKcAoX^w)B(cG%&5H)6WhfUs}^&ShuX?9dOsj{^m(@QV5^=24kB{WGeU` zD|pvOr`x)3vCPFYYqBb6KeS@T>AnFPFI?f1U28JP2F16Jo5_Q-`0WBu6AoFOqRq z^`4KttVrnI8;s{QhZT*wjW7Unb6TyYHBvqZ)3pa!#UdCDVXS(o8(hRGZx%U!sj)fl%822%h_sA}E;t6i&L^qz&EvtAwzEA={#DMJjtdj^j{v>m-w{8z(llvuQ+8Sg8`F&F%q- z8&b3g!2t;<7UG6fq?I^;P`g4x;-}J{wtM2(6P&nlXwMwVn{ocusUQb?{PKP8J$v5w z&0jBnz4Up_`yo8Hcb6nYWf8@aqL3=zc{haxEF&yrG0w{3-p|h`@@tyA3>UjtLGRo{ z$zs(o5C`v_&0f2Jr6d<)*NeJA^ETC7TJXLP$Gz3?{D`O^5fh?%&F}*0OS_1&mQ8Q# zX4Od*fPs>jq}JcN$9f@15VC@t71Sh(u`EMk`r+SUJdEguYv$Hb5s4BiniZF=2y&@i zcCi%$eI@*lw;Q!m-CngCW^sPmx$+EKe_D(CnU{6WIV$a* zym4^8u{~Lv<}Ikf?A;EI$GkfuXd?eK!24t*(ehIcR-5crt4;HAlcDQGQqX3>u`FA! zxNHLv!2-&aa=M!{TqI>g#G*C5;I1J_7LZMivU!`jCXz@W5G$EZ9^6iZ)3}!i<8)sl zQI-1=i5YKw^!*mW8Q2+r!wBq`O)W#qQ$z$mUbWd;M223W1?uE&-EvJENs2HKl6q{Z zot3dAJjfP1>{d4;hK!v?u*^F38^Q4UEY4D4A_c2rF&zwviqd6^3huJSv^)Tvl1U)u zEyPyd6!>RD7Ro>-hq{i-hTlR8a`bF=iN}g2%<~ciSp$x>v8FpNJheyOLKqe5@GL@o zHu$iFmp09k<2{M3w0at0O||KZXz00#a46avSw1nV{%n!eQ8vEqr)56N?T3}A+;Ac9 z!-m%Ud*sJUJ13N*^uuel7p7hs;dyzIO@19=`Htoz;hBT*1C58iIS5Z^Q?HMk(_2r5 zCU;IB@aX-=mm2Y-K{wSuBFk;208-iYv~jm433;NYFKdM$s&`nZznQ%T*ppiVZb{GSZ~1U2smz= z-9iMuTZhi9Gl+#sfsh0*-6<}~JyVtBfl3mLL4b`jq|3%iOYIiNU~EAwSbrd-Vs2Rc z16C_Fy;4AFg>O7}A|$Ip28>h3g(Y@o`zHgOPHdTE$GVCtrdxGr;U;1LwiyL5Fhi>| L$iufLhA;mMI!PoJ diff --git a/library/tedit/TEDIT-FILE b/library/tedit/TEDIT-FILE index ab84851d3..d594e14b8 100644 --- a/library/tedit/TEDIT-FILE +++ b/library/tedit/TEDIT-FILE @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 14:24:34" {WMEDLEY}TEDIT>TEDIT-FILE.;608 161966 +(FILECREATED "22-Apr-2025 15:58:21" {WMEDLEY}tedit>TEDIT-FILE.;614 163325 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.GET.FORMATTED.FILE) + :CHANGES-TO (FNS TEDIT.PUT \TEDIT.PUT.SINGLE.CHARLOOKS \TEDIT.GET.SINGLE.CHARLOOKS) - :PREVIOUS-DATE "26-Mar-2025 10:02:49" {WMEDLEY}TEDIT>TEDIT-FILE.;607) + :PREVIOUS-DATE "19-Apr-2025 22:29:28" {WMEDLEY}tedit>TEDIT-FILE.;612) (PRETTYCOMPRINT TEDIT-FILECOMS) @@ -45,7 +45,7 @@ (FNS \TEDIT.GET.PARALOOKS.LIST \TEDIT.GET.SINGLE.PARALOOKS) (FNS \TEDIT.GET.OBJECT)) (COMS - (* ;; "Putting (pageframe functions on TEDIT-PAGE)") + (* ;; "Putting pageframe functions are on TEDIT-PAGE)") (FNS \TEDIT.PUT.PCTB \TEDIT.PUT.PCTB.PIECEDATA \TEDIT.PUT.TRAILER \TEDIT.PUT.PCTB.MERGEABLE \TEDIT.PUT.UTF8.SPLITPIECES \TEDIT.PUT.PCTB.NEXTNEW @@ -55,7 +55,8 @@ (FNS \TEDIT.PUT.PARALOOKS.LIST \TEDIT.PUT.SINGLE.PARALOOKS \TEDIT.PUT.PARALOOKS)) (GLOBALVARS TEDIT.INPUT.FORMATS *TEDIT-FILE-READTABLE*) (FNS TEDITFROMLISPSOURCE SHELLSCRIPTP TEDITFROMSHELLSCRIPT) - (INITVARS (TEDIT.SOURCE.LINELENGTH 110)) + (INITVARS (TEDIT.SOURCE.LINELENGTH 110) + (TEDIT.SOURCE.NLINES 30)) (ADDVARS (TEDIT.INPUT.FORMATS (LISPSOURCEFILEP TEDITFROMLISPSOURCE) (SHELLSCRIPTP TEDITFROMSHELLSCRIPT))) (INITVARS (* ; @@ -118,7 +119,9 @@ (DEFINEQ (TEDIT.GET - [LAMBDA (TSTREAM FILE UNFORMATTED? PROPS) (* ; "Edited 14-Mar-2025 11:52 by rmk") + [LAMBDA (TSTREAM FILE UNFORMATTED? PROPS) (* ; "Edited 19-Apr-2025 10:31 by rmk") + (* ; "Edited 6-Apr-2025 14:26 by rmk") + (* ; "Edited 14-Mar-2025 11:52 by rmk") (* ; "Edited 26-Aug-2024 16:15 by rmk") (* ; "Edited 11-Aug-2024 12:13 by rmk") (* ; "Edited 29-Jun-2024 16:30 by rmk") @@ -180,8 +183,7 @@ (* ;; "New file is good, clean out the old stuff") - (\TEDIT.SHOWSEL (TEXTSEL TEXTOBJ) - NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (\TEDIT.TEXTCLOSEF TEXTOBJ) (* ;  "Close the old files, still in TXTFILE") @@ -189,9 +191,10 @@ (* ;; "Open a textstream NTSTREAM on the new file, then reconnect its textobj to the old TSTREAM and window") - (SETQ MAINWINDOW (\TEDIT.MAINW TEXTOBJ)) (SETQ BEING-EDITED (GETTEXTPROP TEXTOBJ 'BEING-EDITED)) + (SETQ MAINWINDOW (\TEDIT.MAINW TEXTOBJ)) (CL:WHEN MAINWINDOW + (TEDIT.KILL TEXTOBJ) (SETQ TEDITCREATED (WINDOWPROP MAINWINDOW 'TEDITCREATED))) (CL:WHEN UNFORMATTED? (push PROPS 'CLEARGET T)) @@ -392,7 +395,8 @@ (TEDIT.INCLUDE TSTREAM INFILE START END SAFE T]) (TEDIT.PUT - [LAMBDA (TSTREAM FILE FORCENEW UNFORMATTED? FORMAT QUIET) (* ; "Edited 14-Mar-2025 11:52 by rmk") + [LAMBDA (TSTREAM FILE FORCENEW UNFORMATTED? FORMAT QUIET) (* ; "Edited 22-Apr-2025 15:58 by rmk") + (* ; "Edited 14-Mar-2025 11:52 by rmk") (* ; "Edited 22-Feb-2025 15:56 by rmk") (* ; "Edited 23-Dec-2024 23:02 by rmk") (* ; "Edited 11-Aug-2024 12:30 by rmk") @@ -1415,7 +1419,8 @@ (for I from 1 to (\WIN FILE) collect (\TEDIT.GET.SINGLE.CHARLOOKS FILE TEXTOBJ]) (\TEDIT.GET.SINGLE.CHARLOOKS - [LAMBDA (FILE TEXTOBJ) (* ; "Edited 2-Jan-2025 11:08 by rmk") + [LAMBDA (FILE TEXTOBJ) (* ; "Edited 22-Apr-2025 15:20 by rmk") + (* ; "Edited 2-Jan-2025 11:08 by rmk") (* ; "Edited 11-Dec-2024 22:59 by rmk") (* ; "Edited 9-Dec-2024 20:11 by rmk") (* ; "Edited 13-Aug-2024 08:49 by rmk") @@ -1423,8 +1428,6 @@ (* ; "Edited 7-Apr-2024 17:21 by rmk") (* ; "Edited 16-Jan-2024 22:46 by rmk") (* ; "Edited 21-Dec-2023 23:54 by rmk") - (* ; "Edited 19-Dec-2023 10:13 by rmk") - (* ; "Edited 25-Nov-2023 23:21 by rmk") (* ; "Edited 24-Aug-2023 15:05 by rmk") (* ; "Edited 20-Feb-2022 12:42 by larry") (* ; "Edited 30-May-91 20:25 by jds") @@ -1436,15 +1439,22 @@ (PROG* ((LOOKS (create CHARLOOKS)) (FILEPOS (GETFILEPTR FILE)) (LOOKSLEN (\WIN FILE)) - FONT NAME SIZE SUPER PROPS STYLESTR BOLD ITALIC) + FONT NAME SIZE SUPER PROPS STYLESTR BOLD ITALIC EXTRAS) (SETQ NAME (\ARBIN FILE)) (* ; "The font name") (SETQ SIZE (\WIN FILE)) (* ; "Size of the type, in points") (SETQ SUPER (\SMALLPIN FILE)) (* ;  "Superscripting distance, could be negative") (FSETCLOOKS LOOKS CLSTYLE (OR (\ARBIN FILE) 0)) - (FSETCLOOKS LOOKS CLUSERINFO (\ARBIN FILE)) - (SETQ PROPS (\WIN FILE)) + (SETQ EXTRAS (\ARBIN FILE)) + (if [AND (EQ '\TEDIT.COLOR (CAR (LISTP (CAR (LISTP EXTRAS] + then (FSETCLOOKS LOOKS CLCOLOR (CADR (ASSOC '\TEDIT.COLOR EXTRAS))) + (* ; "Color tells us it's an alist") + (FSETCLOOKS LOOKS CLUSERINFO (CADR (ASSOC '\TEDIT.USERINFO EXTRAS))) + else (* ; "Pre color, create installed BLACK") + (FSETCLOOKS LOOKS CLCOLOR 'BLACK) + (FSETCLOOKS LOOKS CLUSERINFO EXTRAS)) + (SETQ PROPS (\WIN FILE)) (* ; "All the bits") [SETQ BOLD (NOT (ZEROP (LOGAND 512 PROPS] [SETQ ITALIC (NOT (ZEROP (LOGAND 256 PROPS] (with CHARLOOKS LOOKS [SETQ CLSELBEFORE (NOT (ZEROP (LOGAND 8192 PROPS] @@ -1692,7 +1702,7 @@ -(* ;; "Putting (pageframe functions on TEDIT-PAGE)") +(* ;; "Putting pageframe functions are on TEDIT-PAGE)") (DEFINEQ @@ -2185,11 +2195,11 @@ (PUTHASH LOOKS I LOOKSHASH]) (\TEDIT.PUT.SINGLE.CHARLOOKS - [LAMBDA (FORMATSTREAM LOOKS) (* ; "Edited 2-Jan-2025 10:43 by rmk") + [LAMBDA (FORMATSTREAM LOOKS) (* ; "Edited 22-Apr-2025 14:50 by rmk") + (* ; "Edited 2-Jan-2025 10:43 by rmk") (* ; "Edited 13-Aug-2024 08:47 by rmk") (* ; "Edited 31-Jul-2024 00:05 by rmk") (* ; "Edited 16-Jan-2024 23:07 by rmk") - (* ; "Edited 21-Dec-2023 23:54 by rmk") (* ; "Edited 19-Dec-2023 10:14 by rmk") (* ; "Edited 26-Aug-2023 11:29 by rmk") (* ; "Edited 15-Aug-2023 23:17 by rmk") @@ -2198,40 +2208,43 @@ (* ;; "Put out a single CHARLOOKS description.") (LET ((FILEPOS (GETFILEPTR FORMATSTREAM)) - (FONT (fetch (CHARLOOKS CLFONT) of LOOKS)) + (FONT (FGETCLOOKS LOOKS CLFONT)) LEN) (\WOUT FORMATSTREAM 0) (* ;  "Reserve space for the length of this looks") - [COND - ((type? FONTCLASS FONT) (* ; + [if (type? FONTCLASS FONT) + then (* ;  "For font classes, we need to save a list of device-FD sets") - (\ARBOUT FORMATSTREAM (FONTCLASSUNPARSE FONT))) - (T (* ; + (\ARBOUT FORMATSTREAM (FONTCLASSUNPARSE FONT)) + else (* ;  "For FONTDESCRIPTORs, do it the easy way") - (\ATMOUT FORMATSTREAM (FONTPROP FONT 'FAMILY] (* ; "The font family") + (\ATMOUT FORMATSTREAM (FONTPROP FONT 'FAMILY](* ; "The font family") (\WOUT FORMATSTREAM (OR (FONTPROP FONT 'SIZE) 0)) (* ; "Size of the type, in points") - (\SMALLPOUT FORMATSTREAM (OR (fetch (CHARLOOKS CLOFFSET) of LOOKS) + (\SMALLPOUT FORMATSTREAM (OR (FGETCLOOKS LOOKS CLOFFSET) 0)) (* ; "Super/subscripting distance") - (COND - ([AND (fetch (CHARLOOKS CLSTYLE) of LOOKS) - (NOT (ZEROP (fetch (CHARLOOKS CLSTYLE) of LOOKS] - (\ARBOUT FORMATSTREAM (fetch (CHARLOOKS CLSTYLE) of LOOKS))) - (T (\WOUT FORMATSTREAM 0))) - (COND - ((fetch (CHARLOOKS CLUSERINFO) of LOOKS) - (\ARBOUT FORMATSTREAM (fetch (CHARLOOKS CLUSERINFO) of LOOKS))) - (T (\WOUT FORMATSTREAM 0))) - (\WOUT FORMATSTREAM (LOGOR (CL:IF (fetch (CHARLOOKS CLSELBEFORE) of LOOKS) + (if [AND (FGETCLOOKS LOOKS CLSTYLE) + (NOT (ZEROP (FGETCLOOKS LOOKS CLSTYLE] + then (\ARBOUT FORMATSTREAM (FGETCLOOKS LOOKS CLSTYLE)) + else (\WOUT FORMATSTREAM 0)) + + (* ;; "Make an ALIST, headed by \TEDIT.COLOR, for future expansion") + + [\ARBOUT FORMATSTREAM (CONS (LIST '\TEDIT.COLOR (OR (FGETCLOOKS LOOKS CLCOLOR) + 'BLACK)) + (CL:IF (FGETCLOOKS LOOKS CLUSERINFO) + (CONS (LIST '\TEDIT.USERINFO (FGETCLOOKS LOOKS CLUSERINFO)))) + ] + (\WOUT FORMATSTREAM (LOGOR (CL:IF (FGETCLOOKS LOOKS CLSELBEFORE) 8192 0) - (CL:IF (fetch (CHARLOOKS CLUNBREAKABLE) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLUNBREAKABLE LOOKS) 4096 0) - (CL:IF (fetch (CHARLOOKS CLLEADER) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLLEADER) 2048 0) - (CL:IF (fetch (CHARLOOKS CLINVERTED) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLINVERTED) 1024 0) (CL:IF (EQ 'BOLD (FONTPROP FONT 'WEIGHT)) @@ -2240,28 +2253,28 @@ (CL:IF (EQ 'ITALIC (FONTPROP FONT 'SLOPE)) 256 0) - (CL:IF (fetch (CHARLOOKS CLULINE) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLULINE) 128 0) - (CL:IF (fetch (CHARLOOKS CLOLINE) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLOLINE) 64 0) - (CL:IF (fetch (CHARLOOKS CLSTRIKE) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLSTRIKE) 32 0) - (CL:IF (fetch (CHARLOOKS CLSMALLCAP) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLSMALLCAP) 16 0) - (CL:IF (fetch (CHARLOOKS CLPROTECTED) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLPROTECTED) 8 0) - (CL:IF (fetch (CHARLOOKS CLINVISIBLE) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLINVISIBLE) 4 0) - (CL:IF (fetch (CHARLOOKS CLSELAFTER) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLSELAFTER) 2 0) - (CL:IF (fetch (CHARLOOKS CLCANCOPY) of LOOKS) + (CL:IF (FGETCLOOKS LOOKS CLCANCOPY) 1 0))) @@ -2470,7 +2483,9 @@ (DEFINEQ (TEDITFROMLISPSOURCE - [LAMBDA (SOURCEFILE TSTREAM PROPS USERTEMP START END) (* ; "Edited 26-Mar-2025 10:02 by rmk") + [LAMBDA (SOURCEFILE TSTREAM PROPS USERTEMP START END) (* ; "Edited 7-Apr-2025 23:13 by rmk") + (* ; "Edited 1-Apr-2025 12:54 by rmk") + (* ; "Edited 26-Mar-2025 10:02 by rmk") (* ; "Edited 18-Feb-2025 23:34 by rmk") (* ; "Edited 17-Nov-2024 10:03 by rmk") (* ; "Edited 25-Dec-2023 12:28 by rmk") @@ -2492,12 +2507,15 @@ (* ;; "Estimate 110 characters per line in the default font?") - [PUTTEXTPROPS TSTREAM `(PARABREAKCHARS NIL OPENWIDTH ,(TIMES TEDIT.SOURCE.LINELENGTH + (PUTTEXTPROPS TSTREAM `(PARABREAKCHARS NIL OPENWIDTH ,(TIMES TEDIT.SOURCE.LINELENGTH (CHARWIDTH (CHARCODE SPACE) DEFAULTFONT)) + OPENHEIGHT + ,(TIMES TEDIT.SOURCE.NLINES (FONTPROP DEFAULTFONT 'HEIGHT)) BOUNDTABLE ,(TEDIT.ATOMBOUND.READTABLE (fetch (READER-ENVIRONMENT REREADTABLE) - of USERTEMP] + of USERTEMP)) + DEFAULTPUTEXTENSION "")) (TEDIT.PROMPTPRINT TSTREAM (CONCAT "Fetching " (FULLNAME SOURCEFILE) " ...") T) @@ -2526,33 +2544,35 @@ (RPAQ? TEDIT.SOURCE.LINELENGTH 110) +(RPAQ? TEDIT.SOURCE.NLINES 30) + (ADDTOVAR TEDIT.INPUT.FORMATS (LISPSOURCEFILEP TEDITFROMLISPSOURCE) (SHELLSCRIPTP TEDITFROMSHELLSCRIPT)) (RPAQ? *TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5064 34612 (TEDIT.GET 5074 . 11194) (TEDIT.FORMATTEDFILEP 11196 . 12512) ( -TEDIT.FILEDATE 12514 . 13685) (TEDIT.INCLUDE 13687 . 21716) (TEDIT.RAW.INCLUDE 21718 . 22526) ( -TEDIT.PUT 22528 . 30777) (TEDIT.PUT.STREAM 30779 . 34610)) (34613 54492 (\TEDIT.GET.FOREIGN.FILE 34623 - . 38048) (\TEDIT.GET.UNFORMATTED.FILE 38050 . 42042) (\TEDIT.GET.FORMATTED.FILE 42044 . 45071) ( -\TEDIT.FORMATTEDSTREAMP 45073 . 48091) (\ARBIN 48093 . 48813) (\ATMIN 48815 . 49352) (\DWIN 49354 . -49733) (\STRINGIN 49735 . 50443) (\TEDIT.GET.TRAILER 50445 . 52961) (\TEDIT.CACHEFILE 52963 . 54490)) -(54658 68412 (\TEDIT.GET.PIECES3 54668 . 65174) (\TEDIT.GET.IDATE3 65176 . 66571) ( -\TEDIT.MAKE.STRINGPIECE 66573 . 68410)) (68413 80788 (\TEDIT.GET.UNFORMATTED.FILE.XCCS 68423 . 74539) -(\TEDIT.INTERPRET.XCCS.SHIFTS 74541 . 80786)) (80810 86832 (\TEDIT.GET.UNFORMATTED.FILE.UTF8 80820 . -86830)) (86855 95480 (\TEDIT.GET.CHARLOOKS.LIST 86865 . 87596) (\TEDIT.GET.SINGLE.CHARLOOKS 87598 . -92292) (\TEDIT.GET.CHARLOOKS 92294 . 93624) (\TEDIT.GET.PARALOOKS.INDEX 93626 . 94170) ( -\TEDIT.GET.CHARLOOKS.INDEX 94172 . 95478)) (95481 103138 (\TEDIT.GET.PARALOOKS.LIST 95491 . 96113) ( -\TEDIT.GET.SINGLE.PARALOOKS 96115 . 103136)) (103139 106729 (\TEDIT.GET.OBJECT 103149 . 106727)) ( -106791 138872 (\TEDIT.PUT.PCTB 106801 . 116451) (\TEDIT.PUT.PCTB.PIECEDATA 116453 . 119651) ( -\TEDIT.PUT.TRAILER 119653 . 120420) (\TEDIT.PUT.PCTB.MERGEABLE 120422 . 123856) ( -\TEDIT.PUT.UTF8.SPLITPIECES 123858 . 128560) (\TEDIT.PUT.PCTB.NEXTNEW 128562 . 133033) ( -\TEDIT.INSERT.NEWPIECES 133035 . 136470) (\TEDIT.PUTRESET 136472 . 136714) (\ARBOUT 136716 . 137440) ( -\ATMOUT 137442 . 138047) (\DWOUT 138049 . 138328) (\STRINGOUT 138330 . 138870)) (138873 150948 ( -\TEDIT.PUT.CHARLOOKS.LIST 138883 . 140555) (\TEDIT.PUT.SINGLE.CHARLOOKS 140557 . 146292) ( -\TEDIT.PUT.CHARLOOKS 146294 . 147519) (\TEDIT.PUT.CHARLOOKS1 147521 . 148572) (\TEDIT.PUT.OBJECT -148574 . 150946)) (150949 158588 (\TEDIT.PUT.PARALOOKS.LIST 150959 . 151861) ( -\TEDIT.PUT.SINGLE.PARALOOKS 151863 . 157447) (\TEDIT.PUT.PARALOOKS 157449 . 158586)) (158683 161695 ( -TEDITFROMLISPSOURCE 158693 . 160944) (SHELLSCRIPTP 160946 . 161175) (TEDITFROMSHELLSCRIPT 161177 . -161693))))) + (FILEMAP (NIL (5147 35016 (TEDIT.GET 5157 . 11489) (TEDIT.FORMATTEDFILEP 11491 . 12807) ( +TEDIT.FILEDATE 12809 . 13980) (TEDIT.INCLUDE 13982 . 22011) (TEDIT.RAW.INCLUDE 22013 . 22821) ( +TEDIT.PUT 22823 . 31181) (TEDIT.PUT.STREAM 31183 . 35014)) (35017 54896 (\TEDIT.GET.FOREIGN.FILE 35027 + . 38452) (\TEDIT.GET.UNFORMATTED.FILE 38454 . 42446) (\TEDIT.GET.FORMATTED.FILE 42448 . 45475) ( +\TEDIT.FORMATTEDSTREAMP 45477 . 48495) (\ARBIN 48497 . 49217) (\ATMIN 49219 . 49756) (\DWIN 49758 . +50137) (\STRINGIN 50139 . 50847) (\TEDIT.GET.TRAILER 50849 . 53365) (\TEDIT.CACHEFILE 53367 . 54894)) +(55062 68816 (\TEDIT.GET.PIECES3 55072 . 65578) (\TEDIT.GET.IDATE3 65580 . 66975) ( +\TEDIT.MAKE.STRINGPIECE 66977 . 68814)) (68817 81192 (\TEDIT.GET.UNFORMATTED.FILE.XCCS 68827 . 74943) +(\TEDIT.INTERPRET.XCCS.SHIFTS 74945 . 81190)) (81214 87236 (\TEDIT.GET.UNFORMATTED.FILE.UTF8 81224 . +87234)) (87259 96388 (\TEDIT.GET.CHARLOOKS.LIST 87269 . 88000) (\TEDIT.GET.SINGLE.CHARLOOKS 88002 . +93200) (\TEDIT.GET.CHARLOOKS 93202 . 94532) (\TEDIT.GET.PARALOOKS.INDEX 94534 . 95078) ( +\TEDIT.GET.CHARLOOKS.INDEX 95080 . 96386)) (96389 104046 (\TEDIT.GET.PARALOOKS.LIST 96399 . 97021) ( +\TEDIT.GET.SINGLE.PARALOOKS 97023 . 104044)) (104047 107637 (\TEDIT.GET.OBJECT 104057 . 107635)) ( +107702 139783 (\TEDIT.PUT.PCTB 107712 . 117362) (\TEDIT.PUT.PCTB.PIECEDATA 117364 . 120562) ( +\TEDIT.PUT.TRAILER 120564 . 121331) (\TEDIT.PUT.PCTB.MERGEABLE 121333 . 124767) ( +\TEDIT.PUT.UTF8.SPLITPIECES 124769 . 129471) (\TEDIT.PUT.PCTB.NEXTNEW 129473 . 133944) ( +\TEDIT.INSERT.NEWPIECES 133946 . 137381) (\TEDIT.PUTRESET 137383 . 137625) (\ARBOUT 137627 . 138351) ( +\ATMOUT 138353 . 138958) (\DWOUT 138960 . 139239) (\STRINGOUT 139241 . 139781)) (139784 151854 ( +\TEDIT.PUT.CHARLOOKS.LIST 139794 . 141466) (\TEDIT.PUT.SINGLE.CHARLOOKS 141468 . 147198) ( +\TEDIT.PUT.CHARLOOKS 147200 . 148425) (\TEDIT.PUT.CHARLOOKS1 148427 . 149478) (\TEDIT.PUT.OBJECT +149480 . 151852)) (151855 159494 (\TEDIT.PUT.PARALOOKS.LIST 151865 . 152767) ( +\TEDIT.PUT.SINGLE.PARALOOKS 152769 . 158353) (\TEDIT.PUT.PARALOOKS 158355 . 159492)) (159589 163018 ( +TEDITFROMLISPSOURCE 159599 . 162267) (SHELLSCRIPTP 162269 . 162498) (TEDITFROMSHELLSCRIPT 162500 . +163016))))) STOP diff --git a/library/tedit/TEDIT-FILE.LCOM b/library/tedit/TEDIT-FILE.LCOM index 2ea4564e26c42848242934cad50923134a471226..d23727653fbeaaf41c9457e0e572dd5d49bd0516 100644 GIT binary patch delta 2686 zcma)8-ES0C6yI(?Se8;+*g$Cvo-7}BNxJU6^SN6?I^CTuBeOHxnJG&N2&G$TYxzj2 z5iq#wiwXE3T!9BoOu!dkFt+e&pG+(3^W--r4R>3=cNV^mopjk2~l5 z&bj^gN&Nnk_-Ci~&=KS6@(9gQ1&C5m^a3S!-#OG+nX50X91F~n6^xWE+suxtM9x4m zO-b8#{Azb$&ulv?(yT1_fLNGKm zn^>=tvs*a#*L(QijltQTNrC*-pfAAW&)LaEk-=L%^p-EuHUroCc5tVrG#Lsf zpC%@SQGaZh5Y7Yj8mbWW_ z89l=X_V@&Qy)!Wsi^b3LlD=9Ool5nu*B4Vg>jN+P#zajAI(Ci0i!u0h;O>5Q#+D1A z`W)@-==^;~f|vBHalwSGsiVp?xjh&?xw3z-Ofzc%UgdlwBv7a;k>s zo1jUmki(BakwDcbo;V6B7LpqlZNv9Lr5c3MAHc65F(;FCrh&! zxI#3AK=HWY*{*xS2aT$LC8C5si2@dAISnfKBrp!Du0$)Mv6_0cobcwr6&~!wbyob{EfRL9@5reUtOOmZ1gSp5^T*OZe~LY`UU6E`*hs9V@o}ziadU0I+t=Os(CrhW@XeUPoEwAAm|(lH(f@3l zK=VUG#zyk#uBJMPGX9FdW5)Bo{>9D5mm&7yqVYVQMxpY&3l=vY zEq%z1y3pv+(wMN1aR?mt2-q*6uuTXkY`cUl=6SRfN61!go@>b1naG^Ud`*qJc)`gU zvNJ?DQc)9ZNt=u~CCJjyPD0KLBq7WB5Q@!4oBRs}WHP5W&p>e48leN>BNZyuhyf0L zYgll?n-+XtLt9*BA=0t6LZxZ##466R5mb08CEr%dO6vr2ZlFB|&DFxb{3P9why+$( z*j5pw9Dcox3m+(!YTUI;IE^`|nbySd0B?Ux5|XOLJj%x|YQ1gV_)Ap5>LX~Pxnat2n@fZ zcG%xc28NAN=_Fn(Fq~xPADl^LxGrfqRuF2B!YHtt_iG(V_S=I4Z1es_COz1b2+I!= I^B;WsFSZu2J^%m! delta 2834 zcmai0Piz!b7+=P=)U}oZRZ5Ncxgd7Y-OPLQXLpOy&hE~(BeOf(nb|H75-i)&b}0)M zj26K~<3Yg)G64@p6Y;>ogcz#l9<@X~8N(Ih)r7MrzxQT#XD}r0;qCW*@B8z6@B8!S z`fcH(+rrg@+q0?i>`ID?Q~@H7Q+ZsHzc{fc@9IUveVwnVl40uU{i>KvLOem$h=DXN z(s7ziz_FG2#;KF1mzL+}VE(<+D`#FB_s(B=uD#TPM5$()5H(Au(+QZHJ&U@J^CwA( zWPFSTE!et-5FkMxgE9f{*UNg*)DK;FZF%X~%IwOjk2ivPfWro&lANk~3!A{ZaAl{R zgz>7a&lpzCNfj{w`i~w;WQUS-35frH0OmiFjC-Vi*h>qO&z3c#Qa36^s}3cg;5sfI zq3m52?zF3YG5l?eE>@pnMD@vVZ3xu`#>Lsv7?}R)?fSN_xMay49c}cl*N3MU=iH}z z`To$H?`fpbXLHIK9&tEf|CY9!+{yHvJq{1BKF$5q2irVqz}h}D^JBlwwT2?$2iJf2 zI5tL!43oO+pQYyLcGb43Kt&07O#sPBP^|^~e2-+s|4LL9j&SvKt=eWcopue^)PX3O z&W5WWbRFGg*{-@a5GsOI)hk@g?+&tA280QCn2gdf<#!EguER5xf@wK=2~?>gbf&Dj zqnjXkzx3>A=X~^?x+2*O3J`!FiDZJ)b@yd|-^#xUM9M-(kA|d3pkV5njSwL#L0&g1 zlPT6aShkAHy)$b`21LK+^tMXgy#rVG3cv1*#e}z5K3|w?4)?8ZeK0t|Q?Yf^mI-(; z0r$6lIO2U~%A2Qr`Px6`8KF%mL~cvXWuatM+*+lo*^UlsM&-PZA6Wubt#Du;sF*jV zSTHrm0Y$~@FCErdMiq&6X*q}a3gogXhBTD}x?Kec^U+a~l+airp)ti$=;%-x6BIb5 z1oINmBooSs9Qq`bbais*Mzixq1u}>jsWy_5Pa;KftTKYq!I7cnFd0*tZCcg=2UM&+ z8&|?sMF9g;OlKKa0(nqz-i0@!62-5KR8%HLG?Xm!-R?M7WHk~>A!3A+Gjf!}x(Pwa zB8_koLJapLDe8shqFyMb12x6qY?NjqhO8GuH$=&W+}fYh^_RB^Z{Sc6{5sP3r0`0s zv%NlbYjxKvoZ9HW^QynQ(SLNX`EYHQHQ4*am)0P!%i9xy<%89cqk&rdn?Se`=TqnN z34i*mcmI9GyMsf`hu^gzcCi@<1d$1bx`K@Xuhrk>yvcLpZI0<~4>TX%T)x;f>_Nku z%M)E*h%p|zd>`kBLY~|Ahdj6M>GA?1ySXfcJnDaY;$rhJ@BX=3Tgg1qZ;FbIkhf|s zC<<1xPsvKOB^61D6eTD)Dgr$$F`tqYzp(f?lQ5I4<~YN9g?pt~q(|~?7K%z33TvO! zA~sDxF$E@L+3)O=Or(*x3$B5M73hi`5LjKlC`-fmY?f+nnc1i^irWD$1l);$r|q^# zXY5EFD71SikvqV~lyM$}1uCQO2#38N;cy&T$YNk=Z z$&2|h@l621|p@#cMfVdvW4=gk2xbz|h25)dfrC9P(< zOg#y)MojQN_;knf)n%CGz4-@!;tPJK3%sQly`Mj&BRRYQt9mHS9>TP1rH!&SspG5b zy|{h*7*fXIeyGQVx3E&@rIR6r*`Lm71rPcx@*7jU3ZXO;xJ-aY}d}a3JJRE1#a$|BhnM6gS gVz|EMKG+X&uXVk?g`Jk+TEDIT>TEDIT-FIND.;155 43772 +(FILECREATED "21-Apr-2025 22:42:57" {WMEDLEY}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}tedit>TEDIT-FIND.;153) + :PREVIOUS-DATE "20-Apr-2025 23:44:49" {WMEDLEY}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 diff --git a/library/tedit/TEDIT-FIND.LCOM b/library/tedit/TEDIT-FIND.LCOM index ab0bf432b1d70af21dbb05e243d4e852a1651eaa..a66c3560923b2958353e53923151b00eb5abb0ae 100644 GIT binary patch delta 2436 zcmZuzPfQe77-vBc*QEkl1qIJW<=B#xpugPS~foWg2~CpWhS zYNhh2l4Ce!M@I`wh{=}odDQI7vMhrtvuoAL&OuaWG(M6w@_M?cYmS~lFCc|n7({=H z4R=Z+B7!JObUyYb*FYXcDZ8kjF|2ZFECWFx2G?{RAw@`vsPu=}NUMZ5|BPK~>vKvD z;1y67VF49&JFlhnf^Ir=u04DB!NHD}n4A2i1%7V1$uHbwhd12r>!2I$$rwxjXzz#5 z|JvUgW__p4L6_a*x!iTxiZK4{!LKfxi+hGS_7j(-nT{JnUs-+aZQr+jy3z8PX>|ty z6N^uuoU>lLv(fSo{kNmP?X;VuUAz0JvO9I6<_Em9@%+PF;M}_L{G)j<=CcR3OYT_% zu>fK_asJ>Vm-Uz2aoI=KNi=~HgRs#zml?e%zt&J)8IjZ4oq({9p-vXIri9k-4=vCz{1qvpfW`N+Gf-?` z?599soLbx$&OnK2I5?PusC0-5v(mBVn(@0ctXvrF828j&{AuAC#Hd*$x z7hP<`2^xTY8&A;ldk5C}Fj_r65#dPL8Qn`MA<>D`^*{tGs63X|N;)FYO{SAe=d>as ze3<14-7!qK7eqL2=fn$Ygju%ViP9@bFCI*I6&x!9H50>gGTxzjFeIX0Js8fA4@hDn zqJmyHr5B<3)%v!GBZf@X_wXtgotu|1{XH?X4ts+Vv=NUZ(gm$Jsihs`jE;Ct*nx@i z3Jz2)U`C}1Ck+ZOA|lGo4xo|>VAJbeC??R`T|?_|=|y8A=OCG=$S_NK(J?F&$s91$ zK~MdeB=K+>dm2g5NP)XZ_$CJt==u&sme4dJkTH*wb?P)oEkW-gK@pLyn;Gc33{;Jv za6udc32^TXBmwTWF~g9$#*ByCfthXSY3KxAkeX()Nc~3wL?D2N@~Mk- zL2w->-A+t^_F?~Q)KmpjS7%rkhu&WgoojD zb(Pr#B`VXAeP|x?#w;w&`_C7KL@?$u15YCi0Q)2ifgYo+E}{$7i_0rjRGpoxK_qxV z5wm*r!s^<>+SN4xRwcw#s+X(Yn1^vGTm$Mn&(VAPMpLSSnD?~{%Pa6oo@0o86a^$yZ>FB|_l_RwsNZ7qCvn_laEJGM&i!si72 zt@qvasDhj28H+qJ3fhDY_2Mfo7UYJ(&sSYf>#C5pGCCxw$;lHHUL{Stc!`7pew+3!jRY^c#|0hl4I+gPveLG0I!kWC_$dTyBz6F_Ps_D+x!34jgqL<5@$` zXG-NP=&^sZ{v5t)cypO=ZVPCepu0d5n(98PX0LKRsrvlDk%R~pdF}Xh@BWp|jRQ;j F{s+@SY`Fjc delta 2437 zcmZuz-A^1<6lXywEVO(TQkv49PNf#yU1#omZz*Njon;1gXV%@J3$>&!WeW=wD$obh zG(_LjXxhw!`ef1GKW5rGrptQ=?AdyB6|Z7pTkL+%<)8)hnYo)g7>2s1?5W5CB* z5+};NM<+T>ZPJFyGBD|hOa@%7dw+M$9nj`^raycxZDh1$UQ1vAV8}}_FmSt=)lwO4 z>dxR&WoEUs`mTp&KPC`(Stibn(Ag-3&=2ukUb|#i6NP9B-2=m^djNBBBE|)gfv__i z>Z=v`tv^Exb;t5rE|W-VStHsJr;& zr_JYW3+<&YeY`SnW)HhguQK;HYd&(?8`&NoK-JN_b;Xi2RQ zv#pr#L=pC?*P}jBoyX1H-3nm?JKZXxEhwz&oDTPPDQs|+HYVwfta45w+%?SYH<1yI zAAKT6`!bd>OsxQtB2>?FR!+M_8&HyE=R))GHzY}|-t8hzTDd8Z#K4;$SP}>Z?i`mm zrD~JZZ7Y`qQQf0!ra+X$sz$-jM(c z33v?V*OXR;!X}dFoNnn0iOxGsM@@nN{e~gD0vQh&Au?pO?1+{JLb(072**`zI2n=n zxpIQweARMl18u#A$pOdm)$rLwems%1jY}G~*-JWCJ`hHd080@xCuX*bFE5e(=<4I04Q#f=fEH*C@*Uy*@Jh#^o!AH33 zmS7oocbq8Doi~5LVPov>B#x$4%L|xQZy6H>l^1}itSqm=jnZtH!MT@#!9SIgy#EN9 z-uu^zO0PNmDhjT93>6s_!Cb*b;CNuB%4;aGiqqZ-WdRQ=%X6_Un z=ulOGNvtixO!@lCY8lF6F1q4QB>{m`&W z{q2cYeC9v?c--aH%d=bA4kYh?44>o;r?I2A)$nNCz+VwcxlUh4 zEc|ikp;;SxRQdLDj@eIbo zAOED4(%ibfXocew9ANDND|faz9@+Yc7u-AGcuL2094k7XcJ}t+ldiIPm6ZcFsFE?| z;?ARDz$XF4h|cewr#GTEDIT>TEDIT-FIXFILES.;14 9776 + + :EDIT-BY rmk + + :CHANGES-TO (FNS CR-LF-FONTFIX) + (VARS TEDIT-FIXFILESCOMS) + (ADVICE ELT) + + :PREVIOUS-DATE "12-Dec-2024 21:50:29" {WMEDLEY}TEDIT>TEDIT-FIXFILES.;10) + + +(PRETTYCOMPRINT TEDIT-FIXFILESCOMS) + +(RPAQQ TEDIT-FIXFILESCOMS ( + (* ;; "Hacks that may help in fixing broken Tedit files") + + (FILES TEDIT-DEBUG) + (FNS CRLFSWAP CHANGEPLEN) + (FNS CR-LF-FONTFIX) + (P (MOVD 'CR-LF-FONTFIX '\TEDIT.GET.SINGLE.CHARLOOKS)) + (ADVISE ELT))) + + + +(* ;; "Hacks that may help in fixing broken Tedit files") + + +(FILESLOAD TEDIT-DEBUG) +(DEFINEQ + +(CRLFSWAP + [LAMBDA (INFILE OUTFILE) (* ; "Edited 12-Dec-2024 08:25 by rmk") + (* ; "Edited 9-Dec-2024 13:33 by rmk") + (CL:WITH-OPEN-FILE (INSTREAM INFILE :DIRECTION :INPUT) + (CL:UNLESS OUTFILE + (SETQ OUTFILE (PACKFILENAME 'VERSION NIL 'NAME (CONCAT (FILENAMEFIELD INSTREAM + 'NAME) + "-SWAPPED") + 'BODY INSTREAM))) + (CL:WITH-OPEN-FILE (OUTSTREAM OUTFILE :DIRECTION :OUTPUT) + (for I B from 1 to (GETEOFPTR INSTREAM) + do (BOUT OUTSTREAM (SELCHARQ (SETQ B (BIN INSTREAM)) + (LF (CHARCODE CR)) + (CR (CHARCODE LF)) + B))) + (FULLNAME OUTSTREAM]) + +(CHANGEPLEN + [LAMBDA (PC DELTA ARG) (* ; "Edited 11-Dec-2024 15:18 by rmk") + + (* ;; "Change the length of piece PC by DELTA (negative = shorter).") + + (LET [(PC (SP PC 1 NIL (GTO ARG] + (CL:WHEN (EQ 'Y (ASKUSER NIL NIL (CONCAT "Confirm changing PLEN by " DELTA " from " + (PLEN PC) + " to " + (IPLUS (PLEN PC) + DELTA) + " ? "))) + (FSETPC PC PLEN (IPLUS (PLEN PC) + DELTA)) + (SP PC 1 NIL (GTO ARG)))]) +) +(DEFINEQ + +(CR-LF-FONTFIX + [LAMBDA (FILE TEXTOBJ) (* ; "Edited 14-Dec-2024 14:31 by rmk") + (* ; "Edited 12-Dec-2024 21:50 by rmk") + (SI::%%WITH-CHANGED-CALLS + ((|TEXTPROP in INTERLISP::\TEDIT.GET.SINGLE.CHARLOOKS| . TEXTPROP)) + (* ; "Edited 12-Dec-2024 20:51 by rmk") + (* ; "Edited 11-Dec-2024 17:11 by rmk") + (* ; "Edited 9-Dec-2024 20:11 by rmk") + (* ; "Edited 13-Aug-2024 08:49 by rmk") + (* ; "Edited 31-Jul-2024 00:04 by rmk") + (* ; "Edited 7-Apr-2024 17:21 by rmk") + (* ; "Edited 16-Jan-2024 22:46 by rmk") + (* ; "Edited 21-Dec-2023 23:54 by rmk") + (* ; "Edited 19-Dec-2023 10:13 by rmk") + (* ; "Edited 25-Nov-2023 23:21 by rmk") + (* ; "Edited 24-Aug-2023 15:05 by rmk") + (* ; "Edited 20-Feb-2022 12:42 by larry") + (* ; "Edited 30-May-91 20:25 by jds") + + (* ;; "Read one CHARLOOKS from FILE. This gets and then sets the file pointer, based on the stored length. But that won't work if the file is not random access. Maybe that's not necessary?") + + (* ;; "TEXTOBJ only for printing in the local promptwindow, if necessary.") + + (PROG* ((LOOKS (create CHARLOOKS)) + (FILEPOS (GETFILEPTR FILE)) + (LOOKSLEN (\WIN FILE)) + FONT NAME FACE SIZE SUPER PROPS STYLESTR) + (SETQ NAME (\ARBIN FILE)) (* ; "The font name") + (SETQ SIZE (\WIN FILE)) (* ; "Size of the type, in points") + (SETQ SUPER (\SMALLPIN FILE)) (* ; + "Superscripting distance, could be negative") + (FSETCLOOKS LOOKS CLSTYLE (OR (\ARBIN FILE) + 0)) + (FSETCLOOKS LOOKS CLUSERINFO (\ARBIN FILE)) + (SETQ PROPS (\WIN FILE)) + (with CHARLOOKS LOOKS [SETQ CLSELBEFORE (NOT (ZEROP (LOGAND 8192 PROPS] + [SETQ CLUNBREAKABLE (NOT (ZEROP (LOGAND 4096 PROPS] + [SETQ CLLEADER (NOT (ZEROP (LOGAND 2048 PROPS] + [SETQ CLINVERTED (NOT (ZEROP (LOGAND 1024 PROPS] + [SETQ CLBOLD (NOT (ZEROP (LOGAND 512 PROPS] + [SETQ CLITAL (NOT (ZEROP (LOGAND 256 PROPS] + [SETQ CLULINE (NOT (ZEROP (LOGAND 128 PROPS] + [SETQ CLOLINE (NOT (ZEROP (LOGAND 64 PROPS] + [SETQ CLSTRIKE (NOT (ZEROP (LOGAND 32 PROPS] + [SETQ CLSMALLCAP (NOT (ZEROP (LOGAND 16 PROPS] + [SETQ CLPROTECTED (NOT (ZEROP (LOGAND 8 PROPS] + [SETQ CLINVISIBLE (NOT (ZEROP (LOGAND 4 PROPS] + [SETQ CLSELAFTER (NOT (ZEROP (LOGAND 2 PROPS] + [SETQ CLCANCOPY (NOT (ZEROP (LOGAND 1 PROPS] + (SETQ CLSIZE SIZE) + (SETQ CLOFFSET SUPER)) + (SETQ FACE (PACK* (CL:IF (FGETCLOOKS LOOKS CLBOLD) + 'B + 'M) + (CL:IF (FGETCLOOKS LOOKS CLITAL) + 'I + 'R) + 'R)) + (if (LISTP NAME) + then (* ; + "This was a font class. Restore it.") + (SETQ FONT (FONTCLASS (pop NAME) + NAME)) + elseif (OR (NOT NAME) + (ZEROP SIZE)) + then + (* ;; "This was a test in the original, seems bogus") + + elseif (SETQ FONT (FONTCREATE NAME SIZE FACE NIL NIL T)) + elseif [AND (EQ SIZE 13) + (SETQ FONT (FONTCREATE NAME 10 FACE NIL NIL T)) + (SELECTQ (STREAMPROP FILE 'COERCEFONT) + (YES T) + (NO NIL) + (SELECTQ [U-CASE (MKATOM (CL:IF TEXTOBJ + (TEDIT.GETINPUT TEXTOBJ + "Change font size 13 to 10 ? ") + (ASKUSER NIL NIL + "Change font size 13 to 10 ? "))] + ((Y YES) + (STREAMPROP FILE 'COERCEFONT 'YES) + T) + (PROGN (STREAMPROP FILE 'COERCEFONT 'NO) + NIL] + then + (* ;; "A hack to deal with files that have CR-LF corruption") + + (SETQ SIZE 10) + (FSETCLOOKS LOOKS CLSIZE 10) + else (SETQ FONT (FONTCREATE NAME SIZE FACE))) + (FSETCLOOKS LOOKS CLNAME (if (type? FONTCLASS FONT) + then + (* ;; + "Put the display family in the CLNAME spot. Better than NIL.") + + (CL:WHEN [SETQ NAME (FONTCOPY FONT + '(DEVICE DISPLAY NOERROR T] + (FONTPROP NAME 'FAMILY)) + else NAME)) + (FSETCLOOKS LOOKS CLFONT FONT) + (SETFILEPTR FILE (IPLUS FILEPOS LOOKSLEN)) + (RETURN LOOKS]) +) + +(MOVD 'CR-LF-FONTFIX '\TEDIT.GET.SINGLE.CHARLOOKS) + +[XCL:REINSTALL-ADVICE 'ELT :BEFORE '((:LAST (CL:WHEN (AND (EQ N 13) + (ILESSP (ARRAYSIZE A) + 13)) + (SETQ N 10] + +(READVISE ELT) +(DECLARE%: DONTCOPY + (FILEMAP (NIL (912 2760 (CRLFSWAP 922 . 1990) (CHANGEPLEN 1992 . 2758)) (2761 9403 (CR-LF-FONTFIX 2771 + . 9401))))) +STOP diff --git a/library/tedit/TEDIT-FIXFILES.LCOM b/library/tedit/TEDIT-FIXFILES.LCOM new file mode 100644 index 0000000000000000000000000000000000000000..c8396a9ffacc86ca4b2d2d1a8977d78a46158a45 GIT binary patch literal 4504 zcmbVQ-)|dP6`t5>2xc3SV!BmT%8?1HakP$R#^awwkg+|Ery0*oW+rLf?PAh6X`Hx8 zN%OFUMHC4MX~om7V5JI#KtkdHp>5gn>Ia?*LcH+M6;CVhdk}v>`R*OtGieLkrB$!* zJ@=b)&-w1T=bl@!rq>Ni&(sZ5&lpzSri+eNUD1|xN*R`~yQbkeDZ1$DTFuug<}>1o z=IJC$=|nSoM(rfyq4bWj&d)z?guqDCz)E~conaRgIdq&X|6(l6!G%ez3OLLpCO=3u7MqQhHz zlqgplnzgKZ8Q&(cZh0pyPm{Q=xgK#+#&lHeriU4=wr*5)(oH{2WyjUm4SUVY)IdLT zND1jzbY)`Uz&**)vhM44-SORY!ZOT+_yX6nf$McR6}49$+dCt~ z1i`t<7GC`vYi9*fmZ@r%tETPgh@>2qwTkWf=svT+C(}Ay2h>K_|L+tl%u050o~IiG z7fT@cFb0C%M-n%AhqoSYIe7=n1>Os0PERqx<|H5ShCA7vi%sxRxG@brHuyB#p)l&0OdaL_6O{PXGTIFM(Ee!uUS&fEepHARg^Iiw)#*kc7R?AvR-6pMLKU z!(e+9!vvWuEyKO_BaB@11 zKRnmyJf6~?B&QlDRKaz`j^|J@OUp>j2o%j*S@U$41f0MZ5H|`RTqUg=VGcNKfR`Of8 z34NDkS%r{u9glTo^41(!g)U3D*L3s{v~>+P1A4_EY|$$ayA7EvPo{0Jc#La|a{SOZ zHq#~rGn{T;zv|nS%bf5aj^ckghdBBcWAMwJ-Q-k%?&Fyy&i>rQ=a=Z?C3-UV?NC=z)K58%Y8v*W7d^b5g8YB~=k6!OLc*e0`-zQ{Wy?eWVotX_0v%=sS5SM|t93o;;h?o`zZ|ojFI=yl#{^9fr$Lt&@UkL$| z!r(eom{4JcDyAZf#Du|{Ks149hKR`sVnP^v69@|kD}oTltMu*-+B3Vyzq4mf#oxDQ zA{YuWOM~_-!^|?wYy=a!)1yKA48xpZm>|J&Qeu&{W(Vyg!z39d8S0seV5SG{vkY^V zVa`S{5ql;F?Q;xsj$zJ4FcEuVgZ6obInOZXLrg4WXK&EHz#tbGVfbNTiiW<_kr+t zTRauNZ;O0ojQ?!U+oJv2PNy4OZS536n^n};m-YD0tczlOC%?M99SN> zo$5F2)F0W2eE20h6)xYN@BED0#f|xaJ)ev*WK!ra*%xhk!o>|Fxl+DFp3Z9p6hKr$ zzGrEIr57q?6+WoiPK!!XkU)a^o{G4ygR+f7i+SWBUeg6br9f+$Dtj3ek*u04nr}C$ zh#WLZqD3he6t#<}zJfcUfGawpqmV;pf+@oV3(Co%glevSO=ouI3&?j2X=uyzNQ&i05sik}PMKu}`LkkzfpB5F0D06HqU*y6<9u-)K&0{BA%I753sw!@TJR+k> zc~sOD%1fvP8k)=R6w1Nh$Ox=NMu>`Vq?TaN_&XJAL`HBr9A$9_M@G0`BO_L1kF_YQ zbPPvo^gHE*oiZL`AyQVs+4wtIiu$0^+mrF}q~CJ%ue{B!`4YSlYj||wqOIYDY-%lV zsJpK15*}nlS;0Ne?)NR)KG;8^JKgVW5h4!-0qP)D9~33&6ChXz?>gUa;l<~;c#Oa3 zA(#+dM_XNe!4!$&0$sX9sm8|U-W@vH**KzG8+U1Et9P5diMP9NvEt*#;lbY4KKWan z?h$0Ytve~aE?LBRln7p)HNCR7%!K@b8r0^DF}z$^=`x;)lrE4tBsT5!8i}iGcp;(~ zJUJam6W93?EDtPthP73=Si5U--p zb#+!vYo?hQKCXwR2XE{Oj+Cp9+!4hx5{^$IzPr*uF(qmieAQRU!al=rMj+}#QFC3b d#Y;0SonTX#L(b(m2|jVR*#EAK{p9b^{{V63GR6P^ literal 0 HcmV?d00001 diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index 8b1b8553d..28eb93159 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 10:13:53" {WMEDLEY}tedit>TEDIT-FNKEYS.;250 100100 +(FILECREATED "22-Apr-2025 21:05:38" {WMEDLEY}tedit>TEDIT-FNKEYS.;284 109589 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.WRITE.SEL \TEDIT.SHOWCARETLOOKS) + :CHANGES-TO (FNS CHARNAME \TEDIT.KEY.TRANSFORM) - :PREVIOUS-DATE "26-Mar-2025 10:37:43" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;248) + :PREVIOUS-DATE "21-Apr-2025 22:42:44" {WMEDLEY}tedit>TEDIT-FNKEYS.;281) (PRETTYCOMPRINT TEDIT-FNKEYSCOMS) @@ -16,7 +16,8 @@ (COMS (* ;  "Public functions (binding data below)") (FNS TEDIT.INSTALL.CHARBINDINGS TEDIT.CLEAR.CHARBINDINGS TEDIT.GET.CHARACTION - TEDIT.GET.CHARBINDING TEDIT.GET.ALL.CHARBINDINGS TEDIT.GET.ALL.CHARACTIONS)) + TEDIT.GET.CHARBINDING TEDIT.GET.ALL.CHARBINDINGS TEDIT.CHARBINDINGS.INVERT + TEDIT.GET.ALL.CHARACTIONS TEDIT.CONFLICTING.CHARBINDINGS)) (COMS (* ;; "Functions that implement the key actions:") @@ -32,6 +33,8 @@ \TEDIT.LINE.END \TEDIT.DOCUMENT.BEGIN \TEDIT.DOCUMENT.END) (FNS \TEDIT.LINEDELETE.FORWARD \TEDIT.LINEDELETE.BACKWARD) (FNS \TEDIT.KEY.NEST) + (FNS \TEDIT.KEY.WRAP) + (* ; "From TEDITDORADOKEYS") (INITVARS (TEDIT.NESTWIDTH 36)) (* ; "Find") (FNS \TEDIT.KEY.FIND \TEDIT.KEY.FIND.SEARCHSTRING \TEDIT.GET.TARGET.STRING) @@ -42,14 +45,16 @@ (VARS (TEDIT.FNKEY.VERBOSE T)) (COMS (* ; "Read-table Utilities") (GLOBALVARS TEDIT.READTABLE TEDIT.WORDBOUND.READTABLE) - (ALISTS (CHARACTERNAMES EMQUAD ENQUAD THINSPACE FIGURESPACE)) + (ALISTS (CHARACTERNAMES EMQUAD ENQUAD THINSPACE FIGURESPACE LEFT-DOUBLEQUOTE + RIGHT-DOUBLEQUOTE)) (FNS \TEDIT.READTABLE \TEDIT.WORDBOUND.READTABLE TEDIT.GETSYNTAX TEDIT.SETSYNTAX TEDIT.GETFUNCTION TEDIT.SETFUNCTION TEDIT.WORDGET TEDIT.WORDSET TEDIT.ATOMBOUND.READTABLE)) (* ; "Keybindings") (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (CONSTANTS \TEDIT.TTCCODES) (MACROS \TEDIT.TTC))) - (VARS TEDIT.CHARACTIONS TEDIT.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS) + (VARS TEDIT.CHARACTIONS TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS + (TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS))) (* ; "Installation") [DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (TEDIT.READTABLE (\TEDIT.READTABLE)) (TEDIT.WORDBOUND.READTABLE (\TEDIT.WORDBOUND.READTABLE] @@ -63,7 +68,8 @@ (DEFINEQ (CHARNAME - [LAMBDA (CODE OCTALCHARS) (* ; "Edited 26-Mar-2025 10:37 by rmk") + [LAMBDA (CODE OCTALCHARS NONCHARIDENTITY) (* ; "Edited 22-Apr-2025 21:02 by rmk") + (* ; "Edited 26-Mar-2025 10:37 by rmk") (* ; "Edited 23-Mar-2025 14:57 by rmk") (* ; "Edited 18-Mar-2025 20:55 by rmk") (* ; "Edited 6-Dec-2023 20:30 by rmk") @@ -75,6 +81,8 @@ (* ;; "If not OCTALCHARS, the character-name part is constructed from the name of its Ascii equivalent, modified by ^ or #. %"0,%" is suppressed in front of the names for character-set 0.") + (* ;; "If NONCHARIDENTITY, returns CODE if it isn't something that can be interpreted as a character code.") + (DECLARE (USEDFREE CHARACTERSETNAMES CHARACTERNAMES)) (* ;; "") @@ -91,7 +99,9 @@ elseif (NULL CODE) then NIL elseif (NOT (CHARCODEP CODE)) - then (\ILLEGAL.ARG CODE) + then (CL:IF NONCHARIDENTITY + CODE + (\ILLEGAL.ARG CODE)) elseif [CAR (find CN in CHARACTERNAMES suchthat (if (CHARCODEP (CADR CN)) then (IEQP CODE (CADR CN)) else (IEQP CODE (CHARCODE.DECODE (CADR CN] @@ -138,7 +148,10 @@ (DEFINEQ (TEDIT.INSTALL.CHARBINDINGS - [LAMBDA (CHARBINDINGS RDTBL CHARACTIONS) (* ; "Edited 18-Mar-2025 11:15 by rmk") + [LAMBDA (CHARBINDINGS RDTBL CHARACTIONS) (* ; "Edited 7-Apr-2025 20:01 by rmk") + (* ; "Edited 5-Apr-2025 11:36 by rmk") + (* ; "Edited 1-Apr-2025 00:19 by rmk") + (* ; "Edited 18-Mar-2025 11:15 by rmk") (* ; "Edited 17-Mar-2025 09:34 by rmk") (* ; "Edited 15-Mar-2025 15:20 by rmk") (* ; "Edited 13-Mar-2025 23:25 by rmk") @@ -149,55 +162,60 @@ (* ;; "This will overwrite previous assignments in RDTBL, possibly add new ones. ") (CL:UNLESS CHARBINDINGS (SETQ CHARBINDINGS TEDIT.CHARBINDINGS)) - (SETQ RDTBL (if (NULL RDTBL) - then TEDIT.READTABLE - elseif (TEXTSTREAM RDTBL T) - then (OR (GETTOBJ (TEXTOBJ RDTBL) - TXTRTBL) - TEDIT.READTABLE) - elseif (type? READTABLEP RDTBL) - then RDTBL - else (\ILLEGAL.ARG RDTBL))) + (CL:UNLESS (LISTP CHARBINDINGS) + (\ILLEGAL.ARG CHARBINDINGS)) + (CL:UNLESS (READTABLEP RDTBL) + (SETQ RDTBL (if (NULL RDTBL) + then TEDIT.READTABLE + elseif (TEXTSTREAM RDTBL T) + then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) + TXTRTBL) + TEDIT.READTABLE) + else (\ILLEGAL.ARG RDTBL)))) (CL:UNLESS CHARACTIONS (SETQ CHARACTIONS TEDIT.CHARACTIONS)) - [for CB A ACTION in CHARBINDINGS when (LISTP CB) unless (EQ '* (CAR CB)) - when (AND [SETQ ACTION (find PAIR in CHARACTIONS suchthat - - (* ;; - "An ASSOC that allows synonym keys") - - (EQMEMB (CAR CB) - (CAR PAIR] - (SETQ A (CADR ACTION))) do (for CHAR in (CDR CB) - do (CL:UNLESS (CHARCODEP CHAR) - (SETQ CHAR (CHARCODE.DECODE CHAR))) - (CL:WHEN (EQ (CAR ACTION) - 'CHARDELETE.FORWARD)) - (TEDIT.SETFUNCTION CHAR A RDTBL) + (TEDIT.CONFLICTING.CHARBINDINGS (APPEND CHARBINDINGS (TEDIT.GET.ALL.CHARBINDINGS RDTBL))) + [for CB A ACTION in CHARBINDINGS first (TEDIT.CONFLICTING.CHARBINDINGS (APPEND CHARBINDINGS + ( + TEDIT.GET.ALL.CHARBINDINGS + RDTBL))) + when (LISTP CB) unless (EQ '* (CAR CB)) when (AND [SETQ ACTION + (find PAIR in CHARACTIONS + suchthat + + (* ;; + "An ASSOC that allows synonym keys") + + (EQMEMB (CAR CB) + (CAR PAIR] + (SETQ A (CADR ACTION))) + do (for CHAR in (CDR CB) do (CL:UNLESS (CHARCODEP CHAR) + (SETQ CHAR (CHARCODE.DECODE CHAR))) + (TEDIT.SETFUNCTION CHAR A RDTBL) (* ; "Set the method") - (CL:WHEN NIL - (ASSOC (CAR ACTION) - \TEDIT.TTCCODES) + (CL:WHEN NIL + (ASSOC (CAR ACTION) + \TEDIT.TTCCODES) (* ;  "A tag like NEXT, UNDO. Setup the termtable FWIW ") - (TEDIT.SETSYNTAX CHAR (CAR ACTION) - RDTBL))] + (TEDIT.SETSYNTAX CHAR (CAR ACTION) + RDTBL))] RDTBL]) (TEDIT.CLEAR.CHARBINDINGS - [LAMBDA (RDTBL BINDINGS) (* ; "Edited 18-Mar-2025 11:10 by rmk") + [LAMBDA (RDTBL BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + (* ; "Edited 18-Mar-2025 11:10 by rmk") (* ; "Edited 15-Mar-2025 12:02 by rmk") (* ;; "Removes the Tedit function bindings to the characters in BINDINGS, or all current bindings if BINDINGS is NIL") - (SETQ RDTBL (if (NULL RDTBL) - then TEDIT.READTABLE - elseif (TEXTSTREAM RDTBL T) - then (OR (GETTOBJ (TEXTOBJ RDTBL) - TXTRTBL) - TEDIT.READTABLE) - elseif (type? READTABLEP RDTBL) - then RDTBL - else (\ILLEGAL.ARG RDTBL))) + (CL:UNLESS (READTABLEP RDTBL) + (SETQ RDTBL (if (NULL RDTBL) + then TEDIT.READTABLE + elseif (TEXTSTREAM RDTBL T) + then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) + TXTRTBL) + TEDIT.READTABLE) + else (\ILLEGAL.ARG RDTBL)))) (CL:WHEN (fetch READMACRODEFS of RDTBL) [if (EQ BINDINGS T) then [MAPHASH (fetch READMACRODEFS of RDTBL) @@ -223,7 +241,8 @@ RDTBL))])]) (TEDIT.GET.CHARACTION - [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 19-Mar-2025 14:51 by rmk") + [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + (* ; "Edited 19-Mar-2025 14:51 by rmk") (* ; "Edited 18-Mar-2025 11:07 by rmk") (* ; "Edited 17-Mar-2025 09:43 by rmk") @@ -249,7 +268,7 @@ then (OR (GETTOBJ (TEXTOBJ BINDINGS) TXTRTBL) TEDIT.READTABLE) - elseif (type? READTABLEP BINDINGS) + elseif (READTABLEP BINDINGS) else (\ILLEGAL.ARG BINDINGS] [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) @@ -264,7 +283,8 @@ NIL]) (TEDIT.GET.CHARBINDING - [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 18-Mar-2025 20:40 by rmk") + [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 5-Apr-2025 11:37 by rmk") + (* ; "Edited 18-Mar-2025 20:40 by rmk") (* ;; "Returns the bindings for ACTION in BINDINGS, a binding list or a read-table specification. If BINDINGS is a readtable, looks at all currently installed bindings in that readtable. If NIL, uses TEDIT.READTABLE.") @@ -280,7 +300,7 @@ then (OR (GETTOBJ (TEXTOBJ BINDINGS) TXTRTBL) TEDIT.READTABLE) - elseif (type? READTABLEP BINDINGS) + elseif (READTABLEP BINDINGS) else (\ILLEGAL.ARG BINDINGS))) [IMPL (CADR (find CA in TEDIT.CHARACTIONS suchthat (EQMEMB ACTION (CAR CA] CHARS) @@ -295,43 +315,76 @@ CHARS)]) (TEDIT.GET.ALL.CHARBINDINGS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 18-Mar-2025 20:41 by rmk") - (SETQ RDTBL (if (NULL RDTBL) - then TEDIT.READTABLE - elseif (TEXTSTREAM RDTBL T) - then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) - TXTRTBL) - TEDIT.READTABLE) - elseif (type? READTABLEP RDTBL) - else (\ILLEGAL.ARG RDTBL))) - (LET (BINDINGS) + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 7-Apr-2025 22:11 by rmk") + (* ; "Edited 5-Apr-2025 11:37 by rmk") + (* ; "Edited 18-Mar-2025 20:51 by rmk") + + (* ;; "Returns the charbindings instantiated in RDTBL, in the form of TEDIT.CHARBINDINGS: (action . chars)") + + (CL:UNLESS (READTABLEP RDTBL) + (SETQ RDTBL (if (NULL RDTBL) + then TEDIT.READTABLE + elseif (TEXTSTREAM RDTBL T) + then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) + TXTRTBL) + TEDIT.READTABLE) + else (\ILLEGAL.ARG RDTBL)))) + (LET (ACTIONS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) (\SYNCODE (fetch READSA of RDTBL) CCODE)) - [for CA in TEDIT.CHARACTIONS when (LISTP CA) + (for CA ANAME in TEDIT.CHARACTIONS when (LISTP CA) unless (EQ '* (CAR CA)) when (EQUAL (CADR CA) (CADR VAL)) - do (PUSH BINDINGS (LIST (CL:IF RETURNCODES - CCODE - (CHARNAME CCODE)) - (CAR (CL:IF (LISTP (CAR CA)) - (CAR CA) - CA)])] - (SORT BINDINGS T) - BINDINGS]) + do (SETQ ANAME (CAR (CL:IF (LISTP (CAR CA)) + (CAR CA) + CA))) + (PUSH [CDR (OR (ASSOC ANAME ACTIONS) + (CAR (PUSH ACTIONS (CONS ANAME] + CCODE)))] + (SORT ACTIONS T) + [for A S in ACTIONS do (SETQ S (SORT (CDR A))) + (RPLACD A (CL:IF RETURNCODES + S + (CHARNAME S))] + ACTIONS]) + +(TEDIT.CHARBINDINGS.INVERT + [LAMBDA (CHARBINDINGS RETURNCODES) (* ; "Edited 7-Apr-2025 22:39 by rmk") + (* ; "Edited 4-Apr-2025 09:58 by rmk") + (* ; "Edited 1-Apr-2025 15:09 by rmk") + + (* ;; "Inverts CHARBINDINGS to return a list of (char/code . actions), usually a single action unless there is a conflict.. ") + + (for CB ACTIONSPERCHAR CA in CHARBINDINGS when (CDR (LISTP CB)) unless (EQ '* (CAR CB)) + do [for CHAR CODE CACTIONS in (CDR CB) do (SETQ CODE (CHARCODE.DECODE CHAR)) + (SETQ CACTIONS (ASSOC CODE ACTIONSPERCHAR)) + (CL:UNLESS CACTIONS + (push ACTIONSPERCHAR (SETQ CACTIONS (CONS CODE)) + )) + (CL:UNLESS (MEMB (CAR CB) + (CDR CACTIONS)) + (push (CDR CACTIONS) + (CAR CB)))] + finally (SORT ACTIONSPERCHAR T) + (CL:UNLESS RETURNCODES + (for APC in ACTIONSPERCHAR do (change (CAR APC) + (CHARNAME DATUM)))) + (RETURN ACTIONSPERCHAR]) (TEDIT.GET.ALL.CHARACTIONS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 18-Mar-2025 20:51 by rmk") - (SETQ RDTBL (if (NULL RDTBL) - then TEDIT.READTABLE - elseif (TEXTSTREAM RDTBL T) - then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) - TXTRTBL) - TEDIT.READTABLE) - elseif (type? READTABLEP RDTBL) - else (\ILLEGAL.ARG RDTBL))) + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 5-Apr-2025 11:37 by rmk") + (* ; "Edited 18-Mar-2025 20:51 by rmk") + (CL:UNLESS (READTABLEP RDTBL) + (SETQ RDTBL (if (NULL RDTBL) + then TEDIT.READTABLE + elseif (TEXTSTREAM RDTBL T) + then (OR (GETTOBJ (GETTSTR RDTBL TEXTOBJ) + TXTRTBL) + TEDIT.READTABLE) + else (\ILLEGAL.ARG RDTBL)))) (LET (ACTIONS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) @@ -353,6 +406,24 @@ S (CHARNAME S))] ACTIONS]) + +(TEDIT.CONFLICTING.CHARBINDINGS + [LAMBDA (CHARBINDINGS NOERROR) (* ; "Edited 7-Apr-2025 22:40 by rmk") + (* ; "Edited 4-Apr-2025 09:58 by rmk") + (* ; "Edited 1-Apr-2025 15:09 by rmk") + + (* ;; "Returns a list of the character names that bind to conflicting actions. Each element in the return is of the form") + + (* ;; " (CHARNAMES . ACTIONAMES) where CHARNAMES is a list of different synonyms for a given charcode, or a single code if they are all the same, and ACTIONNAMES are the names of the different actions assigned to those characters. ") + + (* ;; "where CHARNAME is the result of APPP") + + (for CA in (TEDIT.CHARBINDINGS.INVERT CHARBINDINGS) when (CDDR CA) collect + (* ; "Multiple actions") + CA + finally (CL:WHEN (AND $$VAL (NOT NOERROR)) (* ; + "RETURN from error break returns conflicts") + (ERROR "Conflicting key bindings" $$VAL))]) ) @@ -362,25 +433,27 @@ (DEFINEQ (\TEDIT.KEY.CHARLOOKS - [LAMBDA (TSTREAM PROP NEWVALUE) (* ; "Edited 15-Mar-2025 15:40 by rmk") + [LAMBDA (TSTREAM PROP NEWVALUE) (* ; "Edited 5-Apr-2025 17:26 by rmk") + (* ; "Edited 15-Mar-2025 15:40 by rmk") (* ; "Edited 13-Mar-2025 23:58 by rmk") (* ;; "Generic key action function for changing individual character looks. ") - (* ;; "Example actions:") - (* ;; " (BOLD-ON (\TEDIT.CHANGE.CHARLOOKS 'BOLD 'ON) ") (* ;; " (BOLD-OFF (\TEDIT.CHANGE.CHARLOOKS 'BOLD 'OFF") - (* ; "Bound in COMMAND.LOOP") - (CL:WHEN (EQ NEWVALUE 'TOGGLE) - (SETQ NEWVALUE (CL:IF (EQ 'ON) - (LISTGET (TEDIT.GET.LOOKS TSTREAM) - PROP) - 'OFF - 'ON))) - (\TEDIT.CHANGE.CHARLOOKS TSTREAM (LIST PROP NEWVALUE)) - (\TEDIT.SHOWCARETLOOKS TSTREAM]) + + (LET ((CURLOOKS (TEDIT.GET.LOOKS TSTREAM))) + (CL:WHEN (EQ NEWVALUE 'TOGGLE) + (SETQ NEWVALUE (CL:IF (EQ 'ON (LISTGET CURLOOKS PROP)) + 'OFF + 'ON))) + (if (EQ 0 (GETSEL (TEXTSEL (GETTSTR TSTREAM TEXTOBJ)) + DCH)) + then (* ; "Point selection") + (TEDIT.CARETLOOKS TSTREAM (LIST PROP NEWVALUE)) + else (\TEDIT.CHANGE.CHARLOOKS TSTREAM (LIST PROP NEWVALUE))) + (\TEDIT.SHOWCARETLOOKS TSTREAM]) (\TEDIT.KEY.QUAD [LAMBDA (TSTREAM REVERSE) (* ; "Edited 16-Mar-2025 00:03 by rmk") @@ -458,7 +531,8 @@ SEL]) (\TEDIT.KEY.TRANSFORM - [LAMBDA (TSTREAM CHARFN) (* ; "Edited 19-Mar-2025 14:57 by rmk") + [LAMBDA (TSTREAM CHARFN) (* ; "Edited 22-Apr-2025 00:07 by rmk") + (* ; "Edited 19-Mar-2025 14:57 by rmk") (* ; "Edited 16-Mar-2025 18:49 by rmk") (* ; "Edited 7-Jul-2024 09:04 by rmk") (* ; "Edited 15-Mar-2024 13:57 by rmk") @@ -469,17 +543,18 @@ (* ;; "This changes the :Replace THACTION to :Transform and adds CHARFN to the event, so that REDO can perform the action again. ") - (LET* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (SEL (TEXTSEL TEXTOBJ))) (CL:WHEN (IGREATERP (TEXTLEN TEXTOBJ) 0) (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.CHARTRANSFORM (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES SEL NIL - TEXTOBJ)) - CHARFN NIL TEXTOBJ) - TEXTOBJ SEL) - (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) + TEXTOBJ) + NIL TSTREAM) + CHARFN NIL TSTREAM) + TSTREAM SEL) + (\TEDIT.RESET.EXTEND.PENDING.DELETE TSTREAM) + (\TEDIT.SHOWSEL SEL T TSTREAM) (CL:UNLESS (FGETTOBJ TEXTOBJ TXTHISTORYINACTIVE) (SETTH (\TEDIT.LASTEVENT TEXTOBJ) THACTION :Transform) @@ -535,7 +610,8 @@ (DEFINEQ (\TEDIT.SHOWCARETLOOKS - [LAMBDA (TSTREAM) (* ; "Edited 27-Mar-2025 08:04 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 15-Apr-2025 16:44 by rmk") + (* ; "Edited 27-Mar-2025 08:04 by rmk") (* ; "Edited 15-Mar-2025 20:40 by rmk") (* ; "Edited 13-Mar-2025 23:52 by rmk") (* ; "Edited 5-Mar-2025 14:55 by rmk") @@ -560,6 +636,9 @@ "") (CL:IF (GETCLOOKS LOOKS CLUNBREAKABLE) " unbreakable" + "") + (CL:IF (GETCLOOKS LOOKS CLCOLOR) + (CONCAT " color " (L-CASE (GETCLOOKS LOOKS CLCOLOR))) "")) T]) @@ -592,7 +671,8 @@ (DEFINEQ (\TEDIT.ONECHAR.BACKWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 17-Feb-2025 09:12 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:46 by rmk") + (* ; "Edited 17-Feb-2025 09:12 by rmk") (* ; "Edited 24-Jan-2025 15:25 by rmk") (* ; "Edited 21-Nov-2024 20:31 by rmk") (* ; "Edited 1-Sep-2024 10:39 by rmk") @@ -606,15 +686,14 @@ TEXTOBJ))) (IMAGEOBJPROP OBJ 'FIELDPREFIX] (FSETTOBJ TEXTOBJ LASTARROWX NIL) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL (SUB1 PT) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM (SUB1 PT) 0 - 'LEFT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))]) + 'LEFT))]) (\TEDIT.ONECHAR.FORWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 17-Feb-2025 09:11 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:40 by rmk") + (* ; "Edited 17-Feb-2025 09:11 by rmk") (* ; "Edited 15-Feb-2025 08:50 by rmk") (* ; "Edited 24-Jan-2025 15:27 by rmk") (* ; "Edited 21-Nov-2024 20:31 by rmk") @@ -631,10 +710,8 @@ (SETQ OBJ (POBJ (\TEDIT.CHTOPC PT TEXTOBJ))) (IMAGEOBJPROP OBJ 'FIELDSUFFIX] (FSETTOBJ TEXTOBJ LASTARROWX NIL) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL PT 0 'RIGHT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))]) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM PT 0 'RIGHT))]) (\TEDIT.ONELINE.UP [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 13-Feb-2025 22:04 by rmk") @@ -702,7 +779,8 @@ TSTREAM))]) (\TEDIT.ONELINE.MOVE - [LAMBDA (SEL CHNO TSTREAM) (* ; "Edited 16-Feb-2025 16:20 by rmk") + [LAMBDA (SEL CHNO TSTREAM) (* ; "Edited 6-Apr-2025 11:04 by rmk") + (* ; "Edited 16-Feb-2025 16:20 by rmk") (* ; "Edited 14-Feb-2025 09:49 by rmk") (* ;; @@ -731,14 +809,13 @@ (add CHNO 1) finally (* ;  "TARGETLINE must have been shorter than X") (SETQ CHNO (FGETLD TARGETLINE LCHARLAST))) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL CHNO 0 'LEFT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) + (\TEDIT.SHOWSEL SEL NIL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM CHNO 0 'LEFT) (\TEDIT.SCROLL.CARET TSTREAM))]) (\TEDIT.ONEWORD.BACKWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 13:47 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 11:03 by rmk") + (* ; "Edited 19-Mar-2025 13:47 by rmk") (* ; "Edited 5-Mar-2025 17:37 by rmk") (* gbn "20-Mar-85 00:49") @@ -751,14 +828,13 @@  "End of word, maybe after whitespace") (SETQ LAST (IMIN HERE (\TEDIT.WORD.LAST TSTREAM FIRST))) (* ; "In case we started in white space") - (\TEDIT.UPDATE.SEL SEL FIRST (ADD1 (IDIFFERENCE LAST FIRST)) + (\TEDIT.UPDATE.SEL TSTREAM FIRST (ADD1 (IDIFFERENCE LAST FIRST)) 'LEFT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) (TEDIT.NORMALIZECARET TEXTOBJ]) (\TEDIT.ONEWORD.FORWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 13:47 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 10:59 by rmk") + (* ; "Edited 19-Mar-2025 13:47 by rmk") (* ; "Edited 5-Mar-2025 17:33 by rmk") (* gbn "20-Mar-85 00:48") @@ -771,14 +847,13 @@  "End of word, maybe after whitespace") (SETQ FIRST (IMAX HERE (\TEDIT.WORD.FIRST TSTREAM LAST))) (* ; "In case we started in white space") - (\TEDIT.UPDATE.SEL SEL FIRST (ADD1 (IDIFFERENCE LAST FIRST)) + (\TEDIT.UPDATE.SEL TSTREAM FIRST (ADD1 (IDIFFERENCE LAST FIRST)) 'RIGHT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) (TEDIT.NORMALIZECARET TEXTOBJ]) (\TEDIT.LINE.BEGIN - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 13:16 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 10:58 by rmk") + (* ; "Edited 19-Mar-2025 13:16 by rmk") (* ; "Edited 15-Mar-2025 22:55 by rmk") (* ; "Edited 9-Mar-2025 19:50 by rmk") (* ; "Edited 5-Mar-2025 00:05 by rmk") @@ -790,14 +865,13 @@ TEXTOBJ))) (CL:WHEN L1 (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL (FGETLD L1 LCHAR1) + (\TEDIT.UPDATE.SEL TSTREAM (FGETLD L1 LCHAR1) 0 - 'LEFT) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))]) + 'LEFT))]) (\TEDIT.LINE.END - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 13:16 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 10:59 by rmk") + (* ; "Edited 19-Mar-2025 13:16 by rmk") (* ; "Edited 15-Mar-2025 22:54 by rmk") (* ; "Edited 9-Mar-2025 19:49 by rmk") (* ; "Edited 5-Mar-2025 14:07 by rmk") @@ -811,13 +885,11 @@ (* ;; "Put the caret in front of the terminating EOL so it stays on LN.") - (\TEDIT.UPDATE.SEL SEL (FGETLD LN LCHARLAST) + (\TEDIT.UPDATE.SEL TSTREAM (FGETLD LN LCHARLAST) 0 (CL:IF (FGETLD LN FORCED-END) 'LEFT - 'RIGHT)) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))]) + 'RIGHT)))]) (\TEDIT.DOCUMENT.BEGIN [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 15-Mar-2025 23:08 by rmk") @@ -845,7 +917,8 @@ (DEFINEQ (\TEDIT.LINEDELETE.FORWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 15-Mar-2025 23:02 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:41 by rmk") + (* ; "Edited 15-Mar-2025 23:02 by rmk") (* ; "Edited 9-Mar-2025 22:11 by rmk") (* ; "Edited 4-Mar-2025 17:22 by rmk") (* gbn "13-Dec-84 11:56") @@ -856,13 +929,14 @@ HERE) (CL:WHEN LINE (SETQ HERE (TEDIT.GETPOINT TSTREAM)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (\TEDIT.UPDATE.SEL SEL HERE (IDIFFERENCE (FGETLD LINE LCHARLIM) HERE)) - (TEDIT.DELETE TEXTOBJ SEL))]) + (TEDIT.DELETE TSTREAM SEL))]) (\TEDIT.LINEDELETE.BACKWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 15-Mar-2025 23:02 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:41 by rmk") + (* ; "Edited 15-Mar-2025 23:02 by rmk") (* ; "Edited 9-Mar-2025 22:11 by rmk") (* ; "Edited 4-Mar-2025 17:22 by rmk") (* gbn "13-Dec-84 11:56") @@ -874,7 +948,7 @@ HERE) (CL:WHEN LINE (SETQ HERE (TEDIT.GETPOINT TSTREAM)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (\TEDIT.UPDATE.SEL SEL HERE (IDIFFERENCE (FGETLD LINE LCHAR1) HERE)) (TEDIT.DELETE TEXTOBJ SEL))]) @@ -882,7 +956,10 @@ (DEFINEQ (\TEDIT.KEY.NEST - [LAMBDA (TSTREAM OUTFLAG) (* ; "Edited 16-Mar-2025 13:06 by rmk") + [LAMBDA (TSTREAM OUTFLAG) (* ; "Edited 21-Apr-2025 20:18 by rmk") + (* ; "Edited 6-Apr-2025 14:42 by rmk") + (* ; "Edited 5-Apr-2025 13:16 by rmk") + (* ; "Edited 16-Mar-2025 13:06 by rmk") (* ; "Edited 7-Mar-2025 22:18 by rmk") (* ;; "This moves the left margin of each selected paragraph in TEDITKEY.NESTWIDTH points. It has to go paragraph by paragraph because the paragraphs may have different margins to begin with.") @@ -894,7 +971,7 @@ (TARGETSEL _ (\TEDIT.COPYSEL SEL)) in (\TEDIT.PARACHNOS SEL NIL TEXTOBJ) first (CL:WHEN OUTFLAG (SETQ DELTA (IMINUS DELTA))) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (FSETSEL SEL SET NIL) do (SETQ LOOKS (TEDIT.GET.PARALOOKS TSTREAM CHNO)) (LISTPUT LOOKS 'LEFTMARGIN (IPLUS (LISTGET LOOKS 'LEFTMARGIN) @@ -909,10 +986,41 @@ (\TEDIT.UPDATE.SEL TARGETSEL CHNO 1) (\TEDIT.CHANGE.PARALOOKS TSTREAM LOOKS TARGETSEL) finally (FSETSEL SEL SET T) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) + (\TEDIT.SHOWSEL SEL T TSTREAM) (TEDIT.PROMPTCLEAR TSTREAM]) ) +(DEFINEQ + +(\TEDIT.KEY.WRAP + [LAMBDA (TSTREAM LEFT RIGHT) (* ; "Edited 4-Apr-2025 11:12 by rmk") + (LET* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (SEL (TEXTSEL TEXTOBJ)) + (CH# (FGETSEL SEL CH#)) + (DCH (FGETSEL SEL DCH)) + (POINT (FGETSEL SEL POINT)) + UNDOEVENT) + + (* ;; "The wrap event includes the 2 insert-events and the original selection, undo just undoes them all. But it als has the LEFT and RIGHT so that Redo knows what to do.") + + (TEDIT.INSERT TSTREAM RIGHT (FGETSEL SEL CHLIM) + (\TEDIT.NTHCHARLOOKS TSTREAM (FGETSEL SEL CHLAST))) + (TEDIT.INSERT TSTREAM LEFT CH#) + (TEDIT.SETSEL TSTREAM CH# (IPLUS (NCHARS LEFT) + DCH + (NCHARS RIGHT)) + POINT) + (\TEDIT.HISTORYADD.COMPOSITE TEXTOBJ (LIST (\TEDIT.POPEVENT TEXTOBJ) + (\TEDIT.POPEVENT TEXTOBJ) + (\TEDIT.HISTORY.EVENT TEXTOBJ :Sel CH# DCH POINT + )) + :Wrap + (LIST LEFT RIGHT]) +) + + + +(* ; "From TEDITDORADOKEYS") + (RPAQ? TEDIT.NESTWIDTH 36) @@ -923,7 +1031,9 @@ (DEFINEQ (\TEDIT.KEY.FIND - [LAMBDA (TSTREAM AGAIN BACKWARD SEARCHSTRING) (* ; "Edited 19-Mar-2025 11:20 by rmk") + [LAMBDA (TSTREAM AGAIN BACKWARD SEARCHSTRING) (* ; "Edited 21-Apr-2025 13:58 by rmk") + (* ; "Edited 6-Apr-2025 14:42 by rmk") + (* ; "Edited 19-Mar-2025 11:20 by rmk") (* ; "Edited 16-Mar-2025 21:42 by rmk") (* ; "Edited 11-Mar-2025 15:09 by rmk") (* ; "Edited 26-Nov-2024 23:47 by rmk") @@ -947,52 +1057,49 @@ (SETQ TSTREAM (TEXTSTREAM TSTREAM)) (RESETLST - (LET ((TEXTOBJ (TEXTOBJ TSTREAM)) - (SEL (TEXTSEL TEXTOBJ)) - CH) - [RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ "Find") - '(PROGN (\TEDIT.MARKINACTIVE OLDVALUE] - (CL:UNLESS SEARCHSTRING - (SETQ SEARCHSTRING (\TEDIT.KEY.FIND.SEARCHSTRING TEXTOBJ AGAIN BACKWARD))) - (CL:WHEN (AND SEARCHSTRING (IGEQ (NCHARS SEARCHSTRING) - 1)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (SETQ CH (if BACKWARD - then (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Searching backward for %"" - SEARCHSTRING "%"") - T) - (\TEDIT.FIND.BACKWARD TSTREAM (MKSTRING SEARCHSTRING) - T) - else (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Searching for %"" SEARCHSTRING - "%"") - T) - (\TEDIT.FIND TSTREAM (MKSTRING SEARCHSTRING) - T))) - (if CH - then (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "%"" SEARCHSTRING "%" found") - T) (* ; "We found the target text.") - (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) + [LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (SEL (TEXTSEL TEXTOBJ)) + CH) + [RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ "Find") + '(PROGN (\TEDIT.MARKINACTIVE OLDVALUE] + (CL:UNLESS SEARCHSTRING + (SETQ SEARCHSTRING (\TEDIT.KEY.FIND.SEARCHSTRING TEXTOBJ AGAIN BACKWARD))) + (CL:WHEN (AND SEARCHSTRING (IGEQ (NCHARS SEARCHSTRING) + 1)) + (\TEDIT.NOSEL TSTREAM) + (SETQ CH (if BACKWARD + then (TEDIT.PROMPTPRINT TSTREAM (CONCAT "Searching backward for %"" + SEARCHSTRING "%"") + T) + (\TEDIT.FIND.BACKWARD TSTREAM (MKSTRING SEARCHSTRING) + T) + else (TEDIT.PROMPTPRINT TSTREAM (CONCAT "Searching for %"" SEARCHSTRING + "%"") + T) + (\TEDIT.FIND TSTREAM (MKSTRING SEARCHSTRING) + T))) + (if CH + then (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "%"" SEARCHSTRING "%" found") + T) (* ; "We found the target text.") + (\TEDIT.RESET.EXTEND.PENDING.DELETE TSTREAM) (* ;  "Set up SELECTION to be the found text") - (\TEDIT.UPDATE.SEL SEL (CAR CH) - (CADR CH) - (CL:IF BACKWARD - 'LEFT - 'RIGHT) - (CL:IF (FGETTOBJ TEXTOBJ TXTREADONLY) - 'PENDINGDEL - 'NORMAL)) - (SETSEL SEL SELKIND (CL:IF (IGREATERP (CADR CH) - 1) - 'WORD - 'CHAR)) - (\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 (CONCAT "%"" SEARCHSTRING "%" not found") - T)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))))]) + (SETSEL SEL SELKIND (CL:IF (IGREATERP (CADR CH) + 1) + 'WORD + 'CHAR)) + (\TEDIT.UPDATE.SEL TSTREAM (CAR CH) + (CADR CH) + (CL:IF BACKWARD + 'LEFT + 'RIGHT) + (CL:IF (FGETTOBJ TEXTOBJ TXTREADONLY) + 'PENDINGDEL + 'NORMAL)) + (FSETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ SEL)) + (TEDIT.NORMALIZECARET TSTREAM) + else (TEDIT.PROMPTPRINT TSTREAM (CONCAT "%"" SEARCHSTRING "%" not found") + T)))])]) (\TEDIT.KEY.FIND.SEARCHSTRING [LAMBDA (TEXTOBJ AGAIN BACKWARD) (* ; "Edited 22-Jun-2024 10:17 by rmk") @@ -1218,7 +1325,9 @@ (ADDTOVAR CHARACTERNAMES (EMQUAD "357,55") (ENQUAD "357,54") (THINSPACE "357,57") - (FIGURESPACE "357,56")) + (FIGURESPACE "357,56") + (LEFT-DOUBLEQUOTE "0,252") + (RIGHT-DOUBLEQUOTE "0,272")) (DEFINEQ (\TEDIT.READTABLE @@ -1333,7 +1442,8 @@ (\TEDIT.TTC NONE))))]) (TEDIT.GETFUNCTION - [LAMBDA (CHARCODE RDTBL) (* ; "Edited 13-Mar-2025 22:56 by rmk") + [LAMBDA (CHARCODE RDTBL) (* ; "Edited 5-Apr-2025 11:37 by rmk") + (* ; "Edited 13-Mar-2025 22:56 by rmk") (* ; "Edited 7-Mar-2025 12:02 by rmk") (* jds "19-Sep-85 17:06") @@ -1348,7 +1458,7 @@ TXTRTBL) TEDIT.READTABLE) else RDTBL)) - (CL:WHEN (AND RDTBL (type? READTABLEP RDTBL) + (CL:WHEN (AND (READTABLEP RDTBL) (EQ (\TEDIT.TTC FUNCTIONCALL) (\SYNCODE (fetch READSA of RDTBL) CHARCODE)) @@ -1410,7 +1520,8 @@ (\TEDIT.TTC TEXT]) (TEDIT.ATOMBOUND.READTABLE - [LAMBDA (READTABLE) (* ; "Edited 14-Mar-2025 18:13 by rmk") + [LAMBDA (READTABLE) (* ; "Edited 5-Apr-2025 11:47 by rmk") + (* ; "Edited 14-Mar-2025 18:13 by rmk") (* ; "Edited 25-Dec-2023 13:10 by rmk") (* ; "Edited 5-Dec-2023 23:47 by rmk") @@ -1418,12 +1529,11 @@ (* ;; "Could cache this for common readtables (interlisp, commonlisp)") + (CL:UNLESS READTABLE (SETQ READTABLE *READTABLE*)) (LET ((TABLE (\TEDIT.WORDBOUND.READTABLE))) (* ;  "\TEDIT.WORDBOUND.READTABLE creates a new one each time.") - (for CODE IN (GETSYNTAX 'OTHER (OR READTABLE *READTABLE*)) do (TEDIT.WORDSET CODE - 'TEXT TABLE)) - (for CODE IN (GETSYNTAX 'BREAK (OR READTABLE *READTABLE*)) do (TEDIT.WORDSET CODE - 'PUNCT TABLE)) + (for CODE IN (GETSYNTAX 'OTHER READTABLE) do (TEDIT.WORDSET CODE 'TEXT TABLE)) + (for CODE IN (GETSYNTAX 'BREAK READTABLE) do (TEDIT.WORDSET CODE 'PUNCT TABLE)) (TEDIT.WORDSET (CHARCODE %:) 'TEXT TABLE) TABLE]) @@ -1467,7 +1577,8 @@ ) (RPAQQ TEDIT.CHARACTIONS - ( + ((TEDIT-PF PF-TEDIT-FROM-TEXT) + (* ;; "This defines the implementation of the named actions. They are activated by keybinding specifications given to TEDIT.INSTALL.KEYBINDINGS.") @@ -1584,6 +1695,16 @@ (* ;; "") + (* ;; "From TEDITDORADOKEYS") + + (WRAP.PARENS (\TEDIT.KEY.WRAP TSTREAM "(" ")")) + (WRAP.NEUTRAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM "%"" "%"")) + [WRAP.REAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM (CHARACTER (CHARCODE LEFT-DOUBLEQUOTE)) + (CHARACTER (CHARCODE RIGHT-DOUBLEQUOTE] + + (* ;; "") + + (* ;; "Clipboard") (CLIPBOARD-PASTE PASTEFROMCLIPBOARD) @@ -1600,7 +1721,7 @@ (WHEELSCROLL-LEFT (WHEELSCROLL 'HORIZONTAL)) (WHEELSCROLL-RIGHT (WHEELSCROLL 'HORIZONTAL T)))) -(RPAQQ TEDIT.CHARBINDINGS +(RPAQQ TEDIT.BASIC.CHARBINDINGS ( (* ;; "Establishes key bindings for particular Tedit key actions. Function,xxx roughly correspond to Koto release notes, but this preserves the immediately preceding assignments if those drifted away from the Koto notes. There is no obvious way of typing Function. Maybe Meta,^xxx instead, as in DORADO.KEYBINDINGS. (But CTRL collapses upper and lower case).") @@ -1728,24 +1849,48 @@ (RPAQQ TEDIT.DORADO.CHARBINDINGS ( - (* ;; "Taken from lispusers>TKDORADO, these make the indicatedd Tedit commands available from the Dorado keyboard.") + (* ;; "Taken from lispusers>TKDORADO, these make the indicated Tedit commands available from the Dorado keyboard.") (DEFAULTS "Meta,^V") - (BOLD.ON "Meta,^B") - (BOLD.OFF "Meta,^N") + (BOLD.ON "Meta,^B" "Meta,b") + (BOLD.OFF "Meta,^N" "Meta,B") (ITALIC.ON "Meta,^I") (ITALIC.OFF "Meta,^O") (OVERLINE.ON "Meta,^D") (OVERLINE.OFF "Meta,^F") (STRIKEOUT.ON "Meta,^G") (STRIKEOUT.OFF "Meta,^H") - (UNDERLINE.ON "Meta,^J") + (* (UNDERLINE.ON "Meta,^J") + conflicts with LINE.DOWN) (UNDERLINE.OFF "Meta,^K") (SMALLER "Meta,^[") (LARGER "Meta,^^]") (SUBSCRIPT "Meta,^^") (SUPERSCRIPT "Meta,^_") - (QUAD "Meta,^C"))) + (QUAD "Meta,^C") + + (* ;; "Mappings from lispusers>TEDITDORADOKEYS") + + (* ("Meta,c" QUAD) + ("Meta,C" QUAD) + ("Meta,x" EXPAND) + ("Meta,X" EXPAND) + conflict with clipboard) + (* ("Meta,^" SUBSCRIPT) + conflicts with LINE.UP) + (BOLD.ON "Meta,b") + (BOLD.OFF "Meta,B") + (ITALIC.ON "Meta,i") + (ITALIC.OFF "Meta,I") + (STRIKEOUT.ON "Meta,=") + (STRIKEOUT.OFF "Meta,+") + (UNDERLINE.ON "Meta,-") + (UNDERLINE.OFF "Meta,_") + (WRAP.PARENS "Meta,(" "Meta,Nine") + (WRAP.NEUTRAL.DOUBLEQUOTES "Meta,%"") + (WRAP.REAL.DOUBLEQUOTES "Meta,'"))) + +(RPAQ TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS)) @@ -1880,27 +2025,29 @@ (RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3704 7717 (CHARNAME 3714 . 7715)) (7773 21650 (TEDIT.INSTALL.CHARBINDINGS 7783 . 10966) - (TEDIT.CLEAR.CHARBINDINGS 10968 . 13559) (TEDIT.GET.CHARACTION 13561 . 16208) (TEDIT.GET.CHARBINDING -16210 . 18134) (TEDIT.GET.ALL.CHARBINDINGS 18136 . 19790) (TEDIT.GET.ALL.CHARACTIONS 19792 . 21648)) ( -21710 31328 (\TEDIT.KEY.CHARLOOKS 21720 . 22662) (\TEDIT.KEY.QUAD 22664 . 24757) (\TEDIT.DEFAULTSSEL -24759 . 25370) (\TEDIT.SETDEFAULT.FROM.SEL 25372 . 26049) (\TEDIT.KEY.SIZE 26051 . 27247) ( -\TEDIT.SUBSCRIPTSEL 27249 . 27452) (\TEDIT.SUPERSCRIPTSEL 27454 . 27658) (\TEDIT.KEY.TRANSFORM 27660 - . 29470) (\TEDIT.KEY.OPENLINE 29472 . 29926) (\TEDIT.KEY.FAMILYN 29928 . 31326)) (31329 31618 ( -CAP-CASECODE 31339 . 31616)) (31652 34582 (\TEDIT.SHOWCARETLOOKS 31662 . 33675) (\TEDIT.DESCRIBEFONT -33677 . 34580)) (34613 49349 (\TEDIT.ONECHAR.BACKWARD 34623 . 35752) (\TEDIT.ONECHAR.FORWARD 35754 . -36972) (\TEDIT.ONELINE.UP 36974 . 39935) (\TEDIT.ONELINE.DOWN 39937 . 41594) (\TEDIT.ONELINE.MOVE -41596 . 43810) (\TEDIT.ONEWORD.BACKWARD 43812 . 44964) (\TEDIT.ONEWORD.FORWARD 44966 . 46117) ( -\TEDIT.LINE.BEGIN 46119 . 47170) (\TEDIT.LINE.END 47172 . 48381) (\TEDIT.DOCUMENT.BEGIN 48383 . 48742) - (\TEDIT.DOCUMENT.END 48744 . 49347)) (49350 51194 (\TEDIT.LINEDELETE.FORWARD 49360 . 50260) ( -\TEDIT.LINEDELETE.BACKWARD 50262 . 51192)) (51195 53453 (\TEDIT.KEY.NEST 51205 . 53451)) (53507 61462 -(\TEDIT.KEY.FIND 53517 . 58602) (\TEDIT.KEY.FIND.SEARCHSTRING 58604 . 59744) (\TEDIT.GET.TARGET.STRING - 59746 . 61460)) (61493 64125 (\TEDIT.KEY.SUBSTITUTE 61503 . 61724) (\TEDIT.MANPAGE 61726 . 62973) ( -\TEDIT.CALL.ED 62975 . 63805) (\TEDIT.SELECT.ALL 63807 . 64123)) (64152 69842 (\TEDIT.CLIPBOARD 64162 - . 65917) (\TEDIT.COPYTOCLIPBOARD 65919 . 66699) (\TEDIT.EXTRACTTOCLIPBOARD 66701 . 66896) ( -\TEDIT.WRITE.SEL 66898 . 69840)) (70194 81909 (\TEDIT.READTABLE 70204 . 71140) ( -\TEDIT.WORDBOUND.READTABLE 71142 . 73771) (TEDIT.GETSYNTAX 73773 . 75292) (TEDIT.SETSYNTAX 75294 . -76499) (TEDIT.GETFUNCTION 76501 . 77673) (TEDIT.SETFUNCTION 77675 . 79661) (TEDIT.WORDGET 79663 . -79924) (TEDIT.WORDSET 79926 . 80557) (TEDIT.ATOMBOUND.READTABLE 80559 . 81907)) (92497 99036 ( -TEDIT.BUTTONS.BUILD 92507 . 97304) (TEDIT.BUTTONBITMAP.FILL 97306 . 99034))))) + (FILEMAP (NIL (4062 8365 (CHARNAME 4072 . 8363)) (8421 26879 (TEDIT.INSTALL.CHARBINDINGS 8431 . 12322) + (TEDIT.CLEAR.CHARBINDINGS 12324 . 15002) (TEDIT.GET.CHARACTION 15004 . 17750) (TEDIT.GET.CHARBINDING +17752 . 19775) (TEDIT.GET.ALL.CHARBINDINGS 19777 . 21977) (TEDIT.CHARBINDINGS.INVERT 21979 . 23593) ( +TEDIT.GET.ALL.CHARACTIONS 23595 . 25565) (TEDIT.CONFLICTING.CHARBINDINGS 25567 . 26877)) (26939 36994 +(\TEDIT.KEY.CHARLOOKS 26949 . 28141) (\TEDIT.KEY.QUAD 28143 . 30236) (\TEDIT.DEFAULTSSEL 30238 . 30849 +) (\TEDIT.SETDEFAULT.FROM.SEL 30851 . 31528) (\TEDIT.KEY.SIZE 31530 . 32726) (\TEDIT.SUBSCRIPTSEL +32728 . 32931) (\TEDIT.SUPERSCRIPTSEL 32933 . 33137) (\TEDIT.KEY.TRANSFORM 33139 . 35136) ( +\TEDIT.KEY.OPENLINE 35138 . 35592) (\TEDIT.KEY.FAMILYN 35594 . 36992)) (36995 37284 (CAP-CASECODE +37005 . 37282)) (37318 40585 (\TEDIT.SHOWCARETLOOKS 37328 . 39678) (\TEDIT.DESCRIBEFONT 39680 . 40583) +) (40616 55544 (\TEDIT.ONECHAR.BACKWARD 40626 . 41773) (\TEDIT.ONECHAR.FORWARD 41775 . 43011) ( +\TEDIT.ONELINE.UP 43013 . 45974) (\TEDIT.ONELINE.DOWN 45976 . 47633) (\TEDIT.ONELINE.MOVE 47635 . +49877) (\TEDIT.ONEWORD.BACKWARD 49879 . 51067) (\TEDIT.ONEWORD.FORWARD 51069 . 52256) ( +\TEDIT.LINE.BEGIN 52258 . 53337) (\TEDIT.LINE.END 53339 . 54576) (\TEDIT.DOCUMENT.BEGIN 54578 . 54937) + (\TEDIT.DOCUMENT.END 54939 . 55542)) (55545 57587 (\TEDIT.LINEDELETE.FORWARD 55555 . 56554) ( +\TEDIT.LINEDELETE.BACKWARD 56556 . 57585)) (57588 60116 (\TEDIT.KEY.NEST 57598 . 60114)) (60117 61399 +(\TEDIT.KEY.WRAP 60127 . 61397)) (61490 69538 (\TEDIT.KEY.FIND 61500 . 66678) ( +\TEDIT.KEY.FIND.SEARCHSTRING 66680 . 67820) (\TEDIT.GET.TARGET.STRING 67822 . 69536)) (69569 72201 ( +\TEDIT.KEY.SUBSTITUTE 69579 . 69800) (\TEDIT.MANPAGE 69802 . 71049) (\TEDIT.CALL.ED 71051 . 71881) ( +\TEDIT.SELECT.ALL 71883 . 72199)) (72228 77918 (\TEDIT.CLIPBOARD 72238 . 73993) ( +\TEDIT.COPYTOCLIPBOARD 73995 . 74775) (\TEDIT.EXTRACTTOCLIPBOARD 74777 . 74972) (\TEDIT.WRITE.SEL +74974 . 77916)) (78375 90157 (\TEDIT.READTABLE 78385 . 79321) (\TEDIT.WORDBOUND.READTABLE 79323 . +81952) (TEDIT.GETSYNTAX 81954 . 83473) (TEDIT.SETSYNTAX 83475 . 84680) (TEDIT.GETFUNCTION 84682 . +85947) (TEDIT.SETFUNCTION 85949 . 87935) (TEDIT.WORDGET 87937 . 88198) (TEDIT.WORDSET 88200 . 88831) ( +TEDIT.ATOMBOUND.READTABLE 88833 . 90155)) (101986 108525 (TEDIT.BUTTONS.BUILD 101996 . 106793) ( +TEDIT.BUTTONBITMAP.FILL 106795 . 108523))))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index dc1f405fa898f93c6b7c65ddfb399d61c6e61599..52814e5a57dee81539403201f5c5a978dd4ecb22 100644 GIT binary patch delta 7207 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 delta 5103 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.;170 33842 +(FILECREATED "21-Apr-2025 19:07:23" {WMEDLEY}tedit>TEDIT-HCPY.;176 32823 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.HARDCOPY.DISPLAYLINE \TEDIT.HARDCOPY.FORMATLINE.HEADINGS - \TEDIT.HCPYFMTSPEC) + :CHANGES-TO (FNS \TEDIT.HARDCOPY.DISPLAYLINE) - :PREVIOUS-DATE " 8-Feb-2025 23:42:18" {WMEDLEY}tedit>TEDIT-HCPY.;169) + :PREVIOUS-DATE "17-Apr-2025 13:35:29" {WMEDLEY}tedit>TEDIT-HCPY.;174) (PRETTYCOMPRINT TEDIT-HCPYCOMS) @@ -134,7 +133,11 @@ else (TEDIT.PROMPTPRINT TSTREAM "No hardcopy file--aborted" T T)))]) (\TEDIT.HARDCOPY.DISPLAYLINE - [LAMBDA (TEXTOBJ LINE REGION PRSTREAM FORMATTINGSTATE) (* ; "Edited 19-Feb-2025 13:34 by rmk") + [LAMBDA (TSTREAM LINE REGION PRSTREAM FORMATTINGSTATE) (* ; "Edited 21-Apr-2025 19:02 by rmk") + (* ; "Edited 17-Apr-2025 13:35 by rmk") + (* ; "Edited 15-Apr-2025 15:19 by rmk") + (* ; "Edited 11-Apr-2025 17:30 by rmk") + (* ; "Edited 19-Feb-2025 13:34 by rmk") (* ; "Edited 8-Feb-2025 23:39 by rmk") (* ; "Edited 13-Dec-2024 23:49 by rmk") (* ; "Edited 13-Jun-2024 17:13 by rmk") @@ -152,131 +155,117 @@ (* ;; "If possible, use the information cached in THISLINE") - (TEXTOBJ! TEXTOBJ) - (\DTEST LINE 'LINEDESCRIPTOR) + (LINEDESCRIPTOR! LINE) (* ;; "Only display the line if it appears before the end of the text!") - (CL:UNLESS (IGREATERP (FGETLD LINE LCHAR1 LINE) - (FGETTOBJ TEXTOBJ TEXTLEN)) - [LET ((THISLINE (FGETTOBJ TEXTOBJ THISLINE))) - (CL:UNLESS (EQ LINE (fetch DESC of THISLINE)) - (\TEDIT.FORMATLINE (FGETTOBJ TEXTOBJ STREAMHINT) - (FGETLD LINE LCHAR1) - LINE REGION PRSTREAM FORMATTINGSTATE)) - - (* ;; "Use the characters cached in THISLINE.") - - (for CHARSLOT CLOOKS CURY LOOKSTARTX SCALESPACES (SPACEFACTOR _ (fetch (THISLINE - TLSPACEFACTOR - ) - of THISLINE)) - (FIRST-SCALEDSPACE-SLOT _ (ffetch (THISLINE TLFIRSTSPACE) of THISLINE)) - (SCALE _ (DSPSCALE NIL PRSTREAM)) - (TX _ (FGETLD LINE LX1)) incharslots THISLINE first (DSPSPACEFACTOR 1 PRSTREAM) - (DSPXPOSITION TX PRSTREAM) - do - (* ;; - "Display the line character by character. CHAR and CHARW are bound to CHARSLOT values") - - (SELCHARQ CHAR - (SPACE (CL:WHEN (EQ CHARSLOT FIRST-SCALEDSPACE-SLOT) + (PROG* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (THISLINE (FGETTOBJ TEXTOBJ THISLINE))) + (CL:WHEN (IGREATERP (FGETLD LINE LCHAR1 LINE) + (FGETTOBJ TEXTOBJ TEXTLEN)) + (RETURN NIL)) + (CL:UNLESS (EQ LINE (fetch DESC of THISLINE)) + (\TEDIT.FORMATLINE TSTREAM (FGETLD LINE LCHAR1) + LINE REGION PRSTREAM FORMATTINGSTATE)) + + (* ;; "Use the characters cached in THISLINE.") + + (for CHARSLOT OLDCLOOKS CURY LOOKSTARTX SCALESPACES OLDCOLOR (SPACEFACTOR + _ + (fetch (THISLINE + TLSPACEFACTOR) + of THISLINE)) + (FIRST-SCALEDSPACE-SLOT _ (ffetch (THISLINE TLFIRSTSPACE) of THISLINE)) + (SCALE _ (DSPSCALE NIL PRSTREAM)) + (TX _ (FGETLD LINE LX1)) incharslots THISLINE first (DSPSPACEFACTOR 1 PRSTREAM) + (DSPXPOSITION TX PRSTREAM) + do + (* ;; + "Display the line character by character. CHAR, CHARW, and CHARCL are bound to CHARSLOT values") + + (* ;; "Underline/overline/strike the just-finished looks run") + (* ; "DISPLAY ALSO PASES LINE DESCENT") + (\TEDIT.HARDCOPY.MODIFYLOOKS LINE LOOKSTARTX TX OLDCLOOKS PRSTREAM) + (DSPFONT (FGETCLOOKS CHARCL CLFONT) + PRSTREAM) + (CL:UNLESS (EQ OLDCOLOR (SETQ OLDCOLOR (FGETCLOOKS CHARCL CLCOLOR))) + (DSPCOLOR OLDCOLOR PRSTREAM)) + [SETQ CURY (COND + [(AND (FGETCLOOKS CHARCL CLOFFSET) + (NEQ 0 (FGETCLOOKS CHARCL CLOFFSET))) + (IPLUS (FGETLD LINE YBASE) + (HCSCALE SCALE (FGETCLOOKS CHARCL CLOFFSET] + (T (FGETLD LINE YBASE] + (DSPYPOSITION CURY PRSTREAM) + + (* ;; "LOOKSTARTX: Starting X position for this CLOOKS.") + + (SETQ LOOKSTARTX TX) + (SELCHARQ CHAR + (SPACE (CL:WHEN (EQ CHARSLOT FIRST-SCALEDSPACE-SLOT) (* ; "Time to turn on space scaling.") - (DSPSPACEFACTOR SPACEFACTOR PRSTREAM) - (SETQ SCALESPACES T)) - (\OUTCHAR PRSTREAM (CHARCODE SPACE)) - (add TX (CL:IF SCALESPACES - (HCSCALE SPACEFACTOR CHARW) - CHARW))) - ((TAB Meta,TAB) (* ; + (DSPSPACEFACTOR SPACEFACTOR PRSTREAM) + (SETQ SCALESPACES T)) + (\OUTCHAR PRSTREAM (CHARCODE SPACE)) + (add TX (CL:IF SCALESPACES + (HCSCALE SPACEFACTOR CHARW) + CHARW))) + ((TAB Meta,TAB) (* ;  "Dotted leaders are meta-TAB, or are DOTTEDLEADER.") - (CL:WHEN (OR (EQ CHAR (CHARCODE Meta,TAB)) - (fetch CLLEADER of CLOOKS) - (EQ (fetch CLUSERINFO of CLOOKS) - 'DOTTEDLEADER)) - (LET* [(DOTWIDTH (CHARWIDTH (CHARCODE %.) - (FONTCOPY (fetch (CHARLOOKS CLFONT) - of CLOOKS) - 'DEVICE PRSTREAM))) - (TTX (IPLUS TX DOTWIDTH (IDIFFERENCE DOTWIDTH - (IREMAINDER TX DOTWIDTH] - (DSPXPOSITION (IDIFFERENCE TTX DOTWIDTH) - PRSTREAM) (* ; + (CL:WHEN (OR (EQ CHAR (CHARCODE Meta,TAB)) + (FGETCLOOKS CHARCL CLLEADER) + (EQ (FGETCLOOKS CHARCL CLUSERINFO) + 'DOTTEDLEADER)) + (LET* [(DOTWIDTH (CHARWIDTH (CHARCODE %.) + (FONTCOPY (FGETCLOOKS CHARCL CLFONT) + 'DEVICE PRSTREAM))) + (TTX (IPLUS TX DOTWIDTH (IDIFFERENCE DOTWIDTH (IREMAINDER + TX DOTWIDTH] + (DSPXPOSITION (IDIFFERENCE TTX DOTWIDTH) + PRSTREAM) (* ;  "Move over to the next even multiple of a dot's width.") - (while (ILEQ TTX (IPLUS TX CHARW)) - do (\OUTCHAR PRSTREAM (CHARCODE %.)) - (add TTX DOTWIDTH)))) - (add TX CHARW) - (DSPXPOSITION TX PRSTREAM)) - ((EOL LF CR) - NIL) - (NIL - (* ;; - "LOOKS. Line-start looks are guaranteed to come before any character/object") - - (if (type? CHARLOOKS CHARW) - then (CL:WHEN CLOOKS - - (* ;; - "Underline/overline/strike the just-finished looks run") - (* ; "DISPLAY ALSO PASES LINE DESCENT") - (\TEDIT.HARDCOPY.MODIFYLOOKS LINE LOOKSTARTX TX - (FGETLD LINE YBASE) - CLOOKS PRSTREAM)) - (SETQ CLOOKS CHARW) - (DSPFONT (fetch CLFONT of CLOOKS) - PRSTREAM) - [SETQ CURY (COND - [(AND (fetch (CHARLOOKS CLOFFSET) of CLOOKS) - (NEQ 0 (fetch (CHARLOOKS CLOFFSET) - of CLOOKS))) - (IPLUS (FGETLD LINE YBASE) - (HCSCALE SCALE (fetch (CHARLOOKS CLOFFSET - ) - of CLOOKS] - (T (FGETLD LINE YBASE] - (DSPYPOSITION CURY PRSTREAM) - - (* ;; "LOOKSTARTX: Starting X position for this CLOOKS.") - - (SETQ LOOKSTARTX TX))) - (PROGN (if (IMAGEOBJP CHAR) - then - (* ;; "Go to the base line, left edge of the image region.") - - (SETQ CURY (DSPYPOSITION NIL PRSTREAM)) - (APPLY* (IMAGEOBJPROP CHAR 'DISPLAYFN) - CHAR PRSTREAM (IMAGESTREAMTYPE PRSTREAM) - (ffetch (TEXTOBJ STREAMHINT) of TEXTOBJ)) - (DSPFONT (fetch CLFONT of CLOOKS) - PRSTREAM) (* ; + (while (ILEQ TTX (IPLUS TX CHARW)) + do (\OUTCHAR PRSTREAM (CHARCODE %.)) + (add TTX DOTWIDTH)))) + (add TX CHARW) + (DSPXPOSITION TX PRSTREAM)) + ((EOL LF CR) + NIL) + (PROGN (if (IMAGEOBJP CHAR) + then + (* ;; "Go to the base line, left edge of the image region.") + + (SETQ CURY (DSPYPOSITION NIL PRSTREAM)) + (APPLY* (IMAGEOBJPROP CHAR 'DISPLAYFN) + CHAR PRSTREAM (IMAGESTREAMTYPE PRSTREAM) + TSTREAM) + (DSPFONT (FGETCLOOKS CHARCL CLFONT) + PRSTREAM) (* ;  "Restore the font, move to after the object's image") - (MOVETO (IPLUS TX CHARW) - CURY PRSTREAM) - elseif (DIACRITICP CHAR) - then - (* ;; "Special placement for diacritics") - - (SETQ CHARW (\TEDIT.DISPLAY.DIACRITIC CHARSLOT THISLINE - PRSTREAM)) - elseif (EQ 'KERN CHAR) - then (RELMOVETO 0 CHARW PRSTREAM) - else (\OUTCHAR PRSTREAM CHAR)) - (add TX CHARW))) finally + (MOVETO (IPLUS TX CHARW) + CURY PRSTREAM) + elseif (DIACRITICP CHAR) + then + (* ;; "Special placement for diacritics") + + (SETQ CHARW (\TEDIT.DISPLAY.DIACRITIC CHARSLOT THISLINE + PRSTREAM)) + elseif (EQ 'KERN CHAR) + then (RELMOVETO 0 CHARW PRSTREAM) + else (\OUTCHAR PRSTREAM CHAR)) + (add TX CHARW))) finally (* ;; "Do any last-minute underlining or similar looks fix-ups, and print a revision mark, if one is needed:") - (CL:WHEN CLOOKS - (\TEDIT.HARDCOPY.MODIFYLOOKS LINE - LOOKSTARTX TX (FGETLD LINE YBASE) - CLOOKS PRSTREAM)) - (CL:WHEN (GETPLOOKS (FGETLD LINE LPARALOOKS) - FMTREVISED) + (\TEDIT.HARDCOPY.MODIFYLOOKS LINE LOOKSTARTX TX + CHARCL PRSTREAM) + (CL:WHEN (GETPLOOKS (FGETLD LINE LPARALOOKS) + FMTREVISED) (* ;  "This paragraph has been revised, so mark it.") - (\TEDIT.MARK.REVISION TEXTOBJ - (FGETLD LINE LPARALOOKS) - PRSTREAM LINE))])]) + (\TEDIT.MARK.REVISION TEXTOBJ + (FGETLD LINE LPARALOOKS) + PRSTREAM LINE))]) (\TEDIT.HARDCOPY.FORMATLINE.HEADINGS [LAMBDA (TEXTOBJ TSTREAM LINE PARALOOKS CHNO IMAGESTREAM FORMATTINGSTATE) @@ -307,45 +296,41 @@ NIL]) (\TEDIT.HARDCOPY.MODIFYLOOKS - [LAMBDA (LINE STARTX CURX CURY LOOKS PRSTREAM) (* ; "Edited 27-May-2023 12:16 by rmk") + [LAMBDA (LINE STARTX CURX CLOOKS PRSTREAM) (* ; "Edited 11-Apr-2025 17:37 by rmk") + (* ; "Edited 27-May-2023 12:16 by rmk") (* ; "Edited 30-May-91 21:17 by jds") (* ;; "Do underlining, overlining, etc. for hardcopy files") - [PROG ((STREAMSCALE (DSPSCALE NIL PRSTREAM)) - [RULEWIDTH (FIXR (FTIMES 0.75 (DSPSCALE NIL PRSTREAM] - (ONEPOINT (FIXR (DSPSCALE NIL PRSTREAM))) - YOFFSET) - (COND - ((fetch (CHARLOOKS CLULINE) of LOOKS) (* ; "It's underlined.") - (DRAWLINE STARTX (IDIFFERENCE (GETLD LINE YBASE) - (GETLD LINE LTRUEDESCENT LINE)) - CURX - (IDIFFERENCE (GETLD LINE YBASE) - (GETLD LINE LTRUEDESCENT LINE)) - RULEWIDTH - 'PAINT PRSTREAM) (* ; "A 1/2-pt underline") - )) - (COND - ((fetch (CHARLOOKS CLOLINE) of LOOKS) (* ; "Over-line") - (DRAWLINE STARTX (IPLUS (GETLD LINE YBASE) - (GETLD LINE LTRUEASCENT LINE)) - CURX - (IPLUS (GETLD LINE YBASE LINE) - (GETLD LINE LTRUEASCENT LINE)) - RULEWIDTH - 'PAINT PRSTREAM))) - (COND - ((fetch (CHARLOOKS CLSTRIKE) of LOOKS) (* ; "Struch-thru") - (DRAWLINE STARTX (SETQ YOFFSET (IPLUS (GETLD LINE YBASE LINE) - (IQUOTIENT - [FIXR (FTIMES STREAMSCALE - (FONTPROP (fetch (CHARLOOKS CLFONT) - of LOOKS) - 'ASCENT] - 3))) - CURX YOFFSET RULEWIDTH 'PAINT PRSTREAM] - (MOVETO CURX CURY PRSTREAM]) + (LINEDESCRIPTOR! LINE) + (CL:WHEN CLOOKS + (LET ((STREAMSCALE (DSPSCALE NIL PRSTREAM)) + [RULEWIDTH (FIXR (FTIMES 0.75 (DSPSCALE NIL PRSTREAM] + (ONEPOINT (FIXR (DSPSCALE NIL PRSTREAM))) + (YBASE (FGETLD LINE YBASE)) + YOFFSET) + (CL:WHEN (FGETCLOOKS CLOOKS CLULINE) (* ; "Underlined") + (DRAWLINE STARTX (IDIFFERENCE YBASE (FGETLD LINE LTRUEDESCENT LINE)) + CURX + (IDIFFERENCE YBASE (FGETLD LINE LTRUEDESCENT LINE)) + RULEWIDTH + 'PAINT PRSTREAM)) + (CL:WHEN (FGETCLOOKS CLOOKS CLOLINE) (* ; "Over-line") + (DRAWLINE STARTX (IPLUS YBASE (GETLD LINE LTRUEASCENT LINE)) + CURX + (IPLUS YBASE (GETLD LINE LTRUEASCENT LINE)) + RULEWIDTH + 'PAINT PRSTREAM)) + (CL:WHEN (FGETCLOOKS CLOOKS CLSTRIKE) (* ; "Struch-thru") + (DRAWLINE STARTX (SETQ YOFFSET + (IPLUS YBASE (IQUOTIENT [FIXR (FTIMES STREAMSCALE + (FONTPROP (fetch (CHARLOOKS + CLFONT) + of CLOOKS) + 'ASCENT] + 3))) + CURX YOFFSET RULEWIDTH 'PAINT PRSTREAM)) + (MOVETO CURX YBASE PRSTREAM)))]) (\TEDIT.HCPYFMTSPEC [LAMBDA (DISPLAYFMT IMAGESTREAM) (* ; "Edited 19-Feb-2025 13:34 by rmk") @@ -563,11 +548,11 @@ (CLOSEF DOC]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3554 27051 (TEDIT.HARDCOPY 3564 . 4697) (\TEDIT.PRINT.MENU 4699 . 5665) (TEDIT.HCPYFILE - 5667 . 7841) (\TEDIT.HARDCOPY.DISPLAYLINE 7843 . 17953) (\TEDIT.HARDCOPY.FORMATLINE.HEADINGS 17955 . -19684) (\TEDIT.HARDCOPY.MODIFYLOOKS 19686 . 21920) (\TEDIT.HCPYFMTSPEC 21922 . 25380) ( -\TEDIT.INTEGER.IMAGEBOX 25382 . 26053) (\TEDIT.DISPLAY.DIACRITIC 26055 . 27049)) (27126 27956 ( -\TEDIT.SCALEREGION 27136 . 27954)) (28215 31755 (TEDIT.HARDCOPYFN 28225 . 29530) ( -\TEDIT.HARDCOPYFILEFN 29532 . 30093) (\TEDIT.POSTSCRIPT.HARDCOPY 30095 . 31026) (\TEDIT.PRESS.HARDCOPY - 31028 . 31753)) (33018 33819 (TEDIT-BOOK 33028 . 33817))))) + (FILEMAP (NIL (3475 26032 (TEDIT.HARDCOPY 3485 . 4618) (\TEDIT.PRINT.MENU 4620 . 5586) (TEDIT.HCPYFILE + 5588 . 7762) (\TEDIT.HARDCOPY.DISPLAYLINE 7764 . 16987) (\TEDIT.HARDCOPY.FORMATLINE.HEADINGS 16989 . +18718) (\TEDIT.HARDCOPY.MODIFYLOOKS 18720 . 20901) (\TEDIT.HCPYFMTSPEC 20903 . 24361) ( +\TEDIT.INTEGER.IMAGEBOX 24363 . 25034) (\TEDIT.DISPLAY.DIACRITIC 25036 . 26030)) (26107 26937 ( +\TEDIT.SCALEREGION 26117 . 26935)) (27196 30736 (TEDIT.HARDCOPYFN 27206 . 28511) ( +\TEDIT.HARDCOPYFILEFN 28513 . 29074) (\TEDIT.POSTSCRIPT.HARDCOPY 29076 . 30007) (\TEDIT.PRESS.HARDCOPY + 30009 . 30734)) (31999 32800 (TEDIT-BOOK 32009 . 32798))))) STOP diff --git a/library/tedit/TEDIT-HCPY.LCOM b/library/tedit/TEDIT-HCPY.LCOM index 62c40ed7f4c5d237e5ba4097225a3ea55335444b..f9405b1f382780f898578fcf952b6a814ebd566c 100644 GIT binary patch delta 2323 zcmZuzO>7fa5MDbW5JMnNTnK4G2P;i&1g`gg9aJgL>vglqI?vkOkVK8TLJcB-MSs*o zFO>xsE_8Ayk|=q4we&s-7x!-dj6PP<_~)zc({) ze!lgKi+{ZT7~^e{NKr3G9615ZO1ZQi}+UI6{9e=T)PoT9n?UU3`wqSM9!zv zFjaP~3pQQw&K2++Bt?Bs%JP(~Vq!^%t$#jwP)Wzovt1*n6I)+I(|uI~e18ebAn8z` z{-Ry*XBek}jW5vvbB4I4!)Tq;i;UDb$tV@5Q!uGRUB)TknZ&WYGBGWW31o06o%4L+ z@*tuF=7PJ-G$KFfyv5Xv&vKWZLw)2hDVCESx}bFdbUu&hIqn5Hqa`&AuSf zu|E_{Hm-&C4LaB%5=|k122C`hL6W_Cg9&`m$rk32Cv=n!(&Og90T!h}Cz?X%+$m%R zgHx@0^i)SQ(d^qSp}6mAYs(_dD6Jl4+z*dudp6I;v&UyQ-mqu?>}RfmRD+&*)K61u zqrusmG&LEVX+(P-y`X1@Zgp(7Z=#Q2q~m=s7;R8ktw3w@3T8Op`l{4cT?xh-W(9a9 z@Md)EZawlDP4;XKs`2Sjn%sDEH4-R|5>3`#9v-hgr_xY8l1Dbor5@2L{jK}x`+B6m zb+<0uz&MQD8piaG+{Z`kGE2I(d7+X)PT-t*n8|q1c;s~qt8G(_y`DeYjz`9*LA7U{ z+zpf`w|BM@W+hW?=ZX5KfwA#&c$g`l2JMd2h3_f@SbX7I3Y8cmzGk=PqT9T7n`XP~ z!3ZYGbKx$3q+qUci|I=5+_9tk+Qs725tegR5H<+9JP_GD-KhLTVQ1?Ei}2gd_gGdZ zyjGCh7;pP--MLDWq4btXyH#c>84I z!E!;wV(mhsh*#?}**zLv?j5()cEB@Bs z$1X*N6VP#;D&UF7;QzkYt3jp(QE$N3y6ASWNx}S^eoSxHeb!cz(IDtffiY`m_&rBXBk8TTkn!Z{xK3YH5?fc z*J)RZqqs{exzIr2Lmf_o+?iQESfNa;cE<&)Eb0bMhK&m+s%VYl-faSk!f$9eHX{CA hX`ABbdVjz0Yx`;o!4TW#`!$DncR^CN?8Ke1{{W7DP!#|G delta 2679 zcmZuyOKclO7+%|H+N5nBj!E0dHG|cpX_Q*~ww)rB&3cVDu`|o=risi1cMMAxBAoVHY))R;Wu}u#=B!jqME^z1}g`Rpss0W7=7bO0f-L;*hK6wB6U-Lh| z`Qyg(o1d-5xa{Tp?OT_5mX{DG%n9P0klwzVImcc?gGnyaBV^}5&a>M;@YU4tq2I4uC!}hA4vkThOzMi`kh)@)iG)Qe6#<>4_Er(wa7ZJnDWd`E3OG{r#fgat z5mB#sMYXXBTo%~{-74zKT6K2dimR>JcwzApio7wwFvsTm8TcvQe`|cc72bbXi(H&< zWk$J(QlR`6({7B-w^B-LTvZE9@lTgHiioE&KtFuUAmJz6qRC`}3l&yy;9d)e53l zf(tzHs1}~XiAY@`{OPBq2?a_}AEyIsFlN%^emTPI`g zD-h4j9-bkeXHWM=L*sZB&pZv%oCSVjZ@&>!D=9yI5I=EdcmEn2BeExsUy@qrM&&dV zA+(0$l|e#aQVq(=J&tVEm@jaGmibXFB;r^-rr@*K9a36h98>)k;e_Ky&IA$o=l=TD zAd~((?S>9!%N@pd-!4Y#v!m>}#obr+MZb!vCT5|EDX1d9g;P@wON#g$^U()^&fb;_ zew^{(t|8}ajoG11s4x06;*3L8Y3*qK-{ZKtPBmb@Dt$}CL(L$JPROKWcw9Y63cjmA z6^@1KuQe+_;`n~!3@OTQ`(ML^6hOlT6(_NK-oK)~a|b6p!v`vkcP56E87wM&zdO;| ze;)|L;zcmxt>shkh`i9Ky~*dLeqLq(B|$*AWeZuP&Fj*y=nqH0q`!sLsit2oMs|{ z&GgvufzP+e1AsUH`~a{K^sP(x@S(gNz94mJNS@Ror&+408wCGB=plY%X1Ed>5KtNC z^Oj~;zZ^-Omylt4a|Tb9=)FKdLB{a*R9}oB_n$t7>EF=k>by(m-=jTL@C9^%N5>*L zx-h@?A%GN7@t&4e*#AbKE*#c z+hS;Nznt(QuSEXbySA`&(81V(s!^DM9p{BCtfxzNmglo5XDX|twD7F^yTr-R?|{p( z@b(7>LH1@|0G?%d Mz$!F;itfb!2VzT_+yDRo diff --git a/library/tedit/TEDIT-HISTORY b/library/tedit/TEDIT-HISTORY index 1d249bbbe..203f5572b 100644 --- a/library/tedit/TEDIT-HISTORY +++ b/library/tedit/TEDIT-HISTORY @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 14:23:18" {WMEDLEY}TEDIT>TEDIT-HISTORY.;227 53951 +(FILECREATED "21-Apr-2025 22:42:33" {WMEDLEY}tedit>TEDIT-HISTORY.;250 58952 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.UNDO.REPLACECODE \TEDIT.UNDO1) + :CHANGES-TO (FNS \TEDIT.UNDO.DELETE \TEDIT.REDO.INSERT \TEDIT.REDO.REPLACE \TEDIT.UNDO.REPLACE + \TEDIT.UNDO.CHARLOOKS \TEDIT.UNDO.PARALOOKS TEDIT.UNDO) - :PREVIOUS-DATE "16-Mar-2025 18:50:43" {WMEDLEY}tedit>TEDIT-HISTORY.;225) + :PREVIOUS-DATE "20-Apr-2025 23:30:57" {WMEDLEY}tedit>TEDIT-HISTORY.;247) (PRETTYCOMPRINT TEDIT-HISTORYCOMS) @@ -31,7 +32,7 @@ (FNS TEDIT.UNDO \TEDIT.UNDO1 TEDIT.REDO \TEDIT.UNDO.UNDO) (FNS \TEDIT.UNDO.INSERT \TEDIT.UNDO.DELETE \TEDIT.UNDO.MOVE \TEDIT.UNDO.REPLACE \TEDIT.UNDO.CHARLOOKS \TEDIT.UNDO.PARALOOKS \TEDIT.UNDO.PAGELOOKS - \TEDIT.UNDO.COMPOSITE \TEDIT.UNDO.REPLACECODE) + \TEDIT.UNDO.COMPOSITE \TEDIT.UNDO.REPLACECODE \TEDIT.UNDO.WRAP \TEDIT.UNDO.SEL) (FNS \TEDIT.REDO.INSERT \TEDIT.REDO.REPLACE \TEDIT.REDO.COMPOSITE)))) (DECLARE%: EVAL@COMPILE DONTCOPY (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE @@ -153,7 +154,8 @@ (DEFINEQ (\TEDIT.HISTORYADD - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 8-Dec-2024 17:32 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 11:22 by rmk") + (* ; "Edited 8-Dec-2024 17:32 by rmk") (* ; "Edited 29-Aug-2024 12:30 by rmk") (* ; "Edited 11-Aug-2024 21:57 by rmk") (* ; "Edited 30-Apr-2024 22:51 by rmk") @@ -171,61 +173,64 @@ (* ;; "Not sure what should happen if the second one is to the right of the first, deleting forwards. Old code seemed to treat those as separate events, and only the second/right one could be undone.") - (if (GETTOBJ TEXTOBJ TXTHISTORYINACTIVE) - then - (* ;; "Maybe the first event after setting the textprop--now's the time to flush") + [LET [(TEXTOBJ (FTEXTOBJ TSTREAM (type? TEXTOBJ TSTREAM] + (if (GETTOBJ TEXTOBJ TXTHISTORYINACTIVE) + then + (* ;; "Maybe the first event after setting the textprop--now's the time to flush") - (FSETTOBJ TEXTOBJ TXTHISTORY NIL) - (FSETTOBJ TEXTOBJ TXTHISTORYUNDONE NIL) - else (if (type? TEDITHISTORYEVENT EVENT) - then (CL:WHEN (MEMB (GETTH EVENT THACTION) - (CONSTANT (LIST :Put :Get))) + (FSETTOBJ TEXTOBJ TXTHISTORY NIL) + (FSETTOBJ TEXTOBJ TXTHISTORYUNDONE NIL) + else (if (type? TEDITHISTORYEVENT EVENT) + then (CL:WHEN (MEMB (GETTH EVENT THACTION) + (CONSTANT (LIST :Put :Get))) (* ;  "Can't back up over Put/Get, flush the history.") - (FSETTOBJ TEXTOBJ TXTHISTORY NIL)) + (FSETTOBJ TEXTOBJ TXTHISTORY NIL)) - (* ;; "Somebody may have already done there own fixup.") + (* ;; "Somebody may have already done there own fixup.") - (LET ((OLDEVENT (\TEDIT.LASTEVENT TEXTOBJ))) - (CL:WHEN (AND (type? TEDITHISTORYEVENT OLDEVENT) - (EQ :Delete (GETTH EVENT THACTION)) - (EQ :Delete (GETTH OLDEVENT THACTION))) + (LET ((OLDEVENT (\TEDIT.LASTEVENT TEXTOBJ))) + (CL:WHEN (AND (type? TEDITHISTORYEVENT OLDEVENT) + (EQ :Delete (GETTH EVENT THACTION)) + (EQ :Delete (GETTH OLDEVENT THACTION))) - (* ;; + (* ;;  "Repeated successive deletions, we can combine them if they are adjacent.") - (CL:WHEN (IEQP (GETTH EVENT THCHLIM) - (GETTH OLDEVENT THCH#)) + (CL:WHEN (IEQP (GETTH EVENT THCHLIM) + (GETTH OLDEVENT THCH#)) (* ;  "OLDEVENT is first, EVENT is still delete") - (SETQ EVENT (\TEDIT.CUMULATE.EVENTS EVENT OLDEVENT TEXTOBJ)) - (\TEDIT.POPEVENT TEXTOBJ) (* ; "Pop OLDEVENT before repushing") - (SETQ OLDEVENT (\TEDIT.LASTEVENT TEXTOBJ))) + (SETQ EVENT (\TEDIT.CUMULATE.EVENTS EVENT OLDEVENT TEXTOBJ)) + (\TEDIT.POPEVENT TEXTOBJ) + (* ; "Pop OLDEVENT before repushing") + (SETQ OLDEVENT (\TEDIT.LASTEVENT TEXTOBJ))) - (* ;; "This may have created a new adjacency, if the accumulation of later deletes comes into with an earlier accumulation") + (* ;; "This may have created a new adjacency, if the accumulation of later deletes comes into with an earlier accumulation") - (CL:WHEN [AND OLDEVENT (type? TEDITHISTORYEVENT OLDEVENT) - (EQ :Delete (GETTH OLDEVENT THACTION)) - (IEQP (GETTH OLDEVENT THCHLIM) - (IPLUS (GETTH EVENT THCH#) - (GETTH OLDEVENT THLEN] + (CL:WHEN [AND OLDEVENT (type? TEDITHISTORYEVENT OLDEVENT) + (EQ :Delete (GETTH OLDEVENT THACTION)) + (IEQP (GETTH OLDEVENT THCHLIM) + (IPLUS (GETTH EVENT THCH#) + (GETTH OLDEVENT THLEN] (* ;; "The OLDEEVENT deleted in front of EVENT, and itsTCHLIM are in its original coordinates. EVENT came later, with its TCH# in a coordinate system reduced by THLEN. So we have to add it back.") - (SETQ EVENT (\TEDIT.CUMULATE.EVENTS OLDEVENT EVENT)) - (\TEDIT.POPEVENT TEXTOBJ))) - (\TEDIT.HISTORYADD1 TEXTOBJ EVENT)) - elseif (LISTP EVENT) - then - (* ;; "A monolithic sequence of undoable events") + (SETQ EVENT (\TEDIT.CUMULATE.EVENTS OLDEVENT EVENT)) + (\TEDIT.POPEVENT TEXTOBJ))) + (\TEDIT.HISTORYADD1 TEXTOBJ EVENT)) + elseif (LISTP EVENT) + then + (* ;; "A monolithic sequence of undoable events") - (* ;; "SHOULDNT HAPPEN ?") + (* ;; "SHOULDNT HAPPEN ?") - (\TEDIT.HISTORYADD1 TEXTOBJ EVENT))) + (\TEDIT.HISTORYADD1 TEXTOBJ EVENT] EVENT]) (\TEDIT.HISTORYADD.COMPOSITE - [LAMBDA (TEXTOBJ EVENTS) (* ; "Edited 6-Feb-2025 15:31 by rmk") + [LAMBDA (TEXTOBJ EVENTS ACTION EXTRA) (* ; "Edited 1-Apr-2025 17:50 by rmk") + (* ; "Edited 6-Feb-2025 15:31 by rmk") (* ; "Edited 8-Dec-2024 19:31 by rmk") (* ; "Edited 22-Sep-2024 18:47 by rmk") (* ; "Edited 3-Jul-2024 08:02 by rmk") @@ -233,8 +238,8 @@ (SETQ EVENTS (REMOVE NIL EVENTS)) (CL:WHEN EVENTS (\TEDIT.HISTORYADD TEXTOBJ (CL:IF (CDR EVENTS) - (\TEDIT.HISTORY.EVENT TEXTOBJ :Composite NIL NIL NIL NIL - EVENTS) + (\TEDIT.HISTORY.EVENT TEXTOBJ (OR ACTION :Composite) + NIL NIL NIL NIL EVENTS EXTRA) (CAR EVENTS))))]) (\TEDIT.CUMULATE.EVENTS @@ -294,13 +299,15 @@ (\ILLEGAL.ARG NEWVALUE))))]) (\TEDIT.HISTORY.EVENT - [LAMBDA (TEXTOBJ ACTION CH# LEN POINT FIRSTPIECE OLDINFO DELETEDPIECES) + [LAMBDA (TSTREAM ACTION CH# LEN POINT FIRSTPIECE OLDINFO DELETEDPIECES) + (* ; "Edited 6-Apr-2025 11:20 by rmk") (* ; "Edited 26-Sep-2024 15:44 by rmk") (* ; "Edited 23-Sep-2024 16:47 by rmk") (* ;; "Don't create if it's inactive") - (CL:UNLESS (GETTOBJ TEXTOBJ TXTHISTORYINACTIVE) + (CL:UNLESS (GETTOBJ (FTEXTOBJ TSTREAM) + TXTHISTORYINACTIVE) (CL:WHEN (AND (NULL LEN) (type? SELPIECES CH#)) (SETQ LEN (fetch (SELPIECES SPLEN) of CH#)) @@ -326,7 +333,10 @@ (DEFINEQ (TEDIT.UNDO - [LAMBDA (TSTREAM NOUNDOUNDO) (* ; "Edited 13-Mar-2025 15:47 by rmk") + [LAMBDA (TSTREAM NOUNDOUNDO) (* ; "Edited 21-Apr-2025 20:16 by rmk") + (* ; "Edited 6-Apr-2025 14:42 by rmk") + (* ; "Edited 5-Apr-2025 13:49 by rmk") + (* ; "Edited 13-Mar-2025 15:47 by rmk") (* ; "Edited 8-Dec-2024 19:41 by rmk") (* ; "Edited 25-Nov-2024 13:17 by rmk") (* ; "Edited 12-Aug-2024 10:49 by rmk") @@ -362,6 +372,7 @@ (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "You can't undo a " (GETTH EVENT THACTION)) T) (RETURN)) + (TEDIT.PROMPTCLEAR TEXTOBJ) (SETQ EVENT (\TEDIT.POPEVENT TEXTOBJ)) (SETQ PREVEVENT (\TEDIT.LASTEVENT TEXTOBJ)) (* ;  "So we can test for the undoundo event.") @@ -375,7 +386,7 @@ (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) (TEDIT.PROMPTCLEAR TSTREAM) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (\TEDIT.UNDO1 TSTREAM EVENT) (* ;; "Get the event that undid EVENT--if it was pushed in front of PREVENT ") @@ -392,11 +403,12 @@ (push (FGETTOBJ TEXTOBJ TXTHISTORYUNDONE) (LIST PREVEVENT UNDOEVENT EVENT))) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ]) + (\TEDIT.SHOWSEL SEL T TSTREAM]) (\TEDIT.UNDO1 - [LAMBDA (TSTREAM EVENT) (* ; "Edited 28-Mar-2025 14:22 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 14:42 by rmk") + (* ; "Edited 1-Apr-2025 21:22 by rmk") + (* ; "Edited 28-Mar-2025 14:22 by rmk") (* ; "Edited 16-Mar-2025 18:46 by rmk") (* ; "Edited 25-Nov-2024 13:56 by rmk") (* ; "Edited 29-Sep-2024 13:51 by rmk") @@ -408,57 +420,55 @@ (* ; "Edited 16-Jul-2023 11:14 by rmk") (* ; "Edited 30-May-2023 23:50 by rmk") (* ; "Edited 25-May-2023 00:33 by rmk") - (LET ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ))) - (CL:WHEN (GETTH EVENT THCH#) - (\TEDIT.SHOWSEL NIL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL (TEXTSEL TEXTOBJ) - EVENT) - (\TEDIT.SHOWSEL NIL T TEXTOBJ) - (\TEDIT.SCROLL.CARET TSTREAM)) - (PROG1 (SELECTC (GETTH EVENT THACTION) - ((LIST :Insert :Copy) - (\TEDIT.UNDO.INSERT TEXTOBJ EVENT)) - (:Move (\TEDIT.UNDO.MOVE TSTREAM EVENT)) - (:Delete (* ; "Deletion or case-shift") - (\TEDIT.UNDO.DELETE TEXTOBJ EVENT)) - (:CharLooks (* ; "Character-looks change") - (\TEDIT.UNDO.CHARLOOKS TEXTOBJ EVENT)) - (:ParaLooks (* ; "PARA looks change") - (\TEDIT.UNDO.PARALOOKS TEXTOBJ EVENT)) - (:PageFormat (* ; "Pageframe change") - (\TEDIT.UNDO.PAGELOOKS TEXTOBJ EVENT)) - ((LIST :Replace :Transform) - - (* ;; "He replaced one portion of text with another ; Transforms have the same undo event but different REDO's.") - - (\TEDIT.UNDO.REPLACE TEXTOBJ EVENT (GETTH EVENT THACTION))) - (:ReplaceCode (\TEDIT.UNDO.REPLACECODE TSTREAM EVENT)) - (:Closefile (* ; "Closes an included file") - (CL:WHEN (STREAMP (GETTH EVENT THOLDINFO)) - (CLOSEF? (GETTH EVENT THOLDINFO)))) - (:Composite (\TEDIT.UNDO.COMPOSITE TSTREAM EVENT)) - ((LIST :Get :Put) (* ; + (CL:WHEN (GETTH EVENT THCH#) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM EVENT) + (\TEDIT.SCROLL.CARET TSTREAM)) + (PROG1 (SELECTC (GETTH EVENT THACTION) + ((LIST :Insert :Copy) + (\TEDIT.UNDO.INSERT TSTREAM EVENT)) + (:Move (\TEDIT.UNDO.MOVE TSTREAM EVENT)) + (:Delete (* ; "Deletion or case-shift") + (\TEDIT.UNDO.DELETE TSTREAM EVENT)) + (:CharLooks (* ; "Character-looks change") + (\TEDIT.UNDO.CHARLOOKS TSTREAM EVENT)) + (:ParaLooks (* ; "PARA looks change") + (\TEDIT.UNDO.PARALOOKS TSTREAM EVENT)) + (:PageFormat (* ; "Pageframe change") + (\TEDIT.UNDO.PAGELOOKS TSTREAM EVENT)) + ((LIST :Replace :Transform) + (* ;; "He replaced one portion of text with another ; Transforms have the same undo event but different REDO's.") + + (\TEDIT.UNDO.REPLACE TSTREAM EVENT (GETTH EVENT THACTION))) + (:ReplaceCode (\TEDIT.UNDO.REPLACECODE TSTREAM EVENT)) + (:Closefile (* ; "Closes an included file") + (CL:WHEN (STREAMP (GETTH EVENT THOLDINFO)) + (CLOSEF? (GETTH EVENT THOLDINFO)))) + (:Composite (\TEDIT.UNDO.COMPOSITE TSTREAM EVENT)) + (:Wrap (\TEDIT.UNDO.WRAP TSTREAM EVENT)) + (:Sel (\TEDIT.UNDO.SEL TSTREAM EVENT)) + ((LIST :Get :Put) (* ;  "He did a GET or PUT-- not undoable.") - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "You can't undo a " (GETTH EVENT THACTION - )) - T)) - (LET [(UNDOFN (CADDR (ASSOC (GETTH EVENT THACTION) - TEDIT.HISTORY.TYPELST] - (COND - (UNDOFN - - (* ;; - "TEDIT.HISTORY.TYPELST is an ALST of form (type redofn undofn)") - - (APPLY* UNDOFN TEXTOBJ EVENT (GETTH EVENT THLEN) - (GETTH EVENT THCH#) - (GETTH EVENT THFIRSTPIECE))) - (T (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "UNDO not implemented for " - (GETTH EVENT THACTION)) - T]) + (TEDIT.PROMPTPRINT TSTREAM (CONCAT "You can't undo a " (GETTH EVENT THACTION)) + T)) + (LET [(UNDOFN (CADDR (ASSOC (GETTH EVENT THACTION) + TEDIT.HISTORY.TYPELST] + (COND + (UNDOFN + + (* ;; "TEDIT.HISTORY.TYPELST is an ALST of form (type redofn undofn)") + + (APPLY* UNDOFN TSTREAM EVENT (GETTH EVENT THLEN) + (GETTH EVENT THCH#) + (GETTH EVENT THFIRSTPIECE))) + (T (TEDIT.PROMPTPRINT TSTREAM (CONCAT "UNDO not implemented for " + (GETTH EVENT THACTION)) + T]) (TEDIT.REDO - [LAMBDA (TSTREAM) (* ; "Edited 16-Mar-2025 18:48 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 6-Apr-2025 14:43 by rmk") + (* ; "Edited 1-Apr-2025 21:42 by rmk") + (* ; "Edited 16-Mar-2025 18:48 by rmk") (* ; "Edited 2-Feb-2025 11:28 by rmk") (* ; "Edited 8-Dec-2024 17:53 by rmk") (* ; "Edited 27-Nov-2024 23:11 by rmk") @@ -478,74 +488,74 @@ (* ;; "REDO the last thing this guy did.") (SETQ TSTREAM (TEXTSTREAM TSTREAM)) - (PROG* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) - (SEL (GETTOBJ TEXTOBJ SEL)) + (PROG* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (SEL (FGETTOBJ TEXTOBJ SEL)) (EVENT (\TEDIT.LASTEVENT TEXTOBJ)) CH) - (CL:WHEN (\TEDIT.READONLY TEXTOBJ) + (CL:WHEN (\TEDIT.READONLY TSTREAM) (RETURN NIL)) (CL:UNLESS EVENT - (TEDIT.PROMPTPRINT TEXTOBJ "Nothing to redo" T) + (TEDIT.PROMPTPRINT TSTREAM "Nothing to redo" T) (RETURN)) (CL:UNLESS (GETSEL SEL SET) - (TEDIT.PROMPTPRINT TEXTOBJ "Please select a target for the repeated action" T) + (TEDIT.PROMPTPRINT TSTREAM "Please select a target for the repeated action" T) (RETURN)) (* ;; "There really is something to redo and something to do it to.") - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (SELECTC (GETTH EVENT THACTION) ((LIST :Insert :Copy :Move) (* ; "It was an insertion") - (\TEDIT.REDO.INSERT TEXTOBJ EVENT SEL)) + (\TEDIT.REDO.INSERT TSTREAM EVENT SEL)) (:Delete (* ; "It was a deletion") - (\TEDIT.DELETE TEXTOBJ SEL)) + (\TEDIT.DELETE TSTREAM SEL)) (:Replace (* ;  "It was a replacement (a del/insert combo)") - (\TEDIT.REDO.REPLACE TEXTOBJ EVENT (GETTH EVENT THACTION))) + (\TEDIT.REDO.REPLACE TSTREAM EVENT (GETTH EVENT THACTION))) (:Transform (\TEDIT.KEY.TRANSFORM TSTREAM (GETTH EVENT THOLDINFO))) (:LowerCase (* ; "He lower-cased something") - (\TEDIT.LCASE.SEL TSTREAM TEXTOBJ SEL)) + (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION L-CASECODE))) (:UpperCase (* ; "He upper-cased something") - (\TEDIT.UCASE.SEL TSTREAM TEXTOBJ SEL)) - (:InitialCap (\TEDIT.KEY.INITIALCAP TSTREAM TEXTOBJ SEL)) + (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION U-CASECODE))) + (:InitialCap (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION CAP-CASECODE))) (:CharLooks (* ; "It was a character looks change") (\TEDIT.CHANGE.CHARLOOKS TSTREAM (CAR (GETTH EVENT THOLDINFO)) SEL)) (:ParaLooks (* ; "It was a Paragraph looks change") (\TEDIT.CHANGE.PARALOOKS TSTREAM (CAR (GETTH EVENT THOLDINFO)) SEL)) - (:PageFormat (TEDIT.PROMPTPRINT TEXTOBJ "You can't redo a page-format change" T T)) + (:PageFormat (TEDIT.PROMPTPRINT TSTREAM "You can't redo a page-format change" T T)) (:Find (* ; "EXACT-MATCH SEARCH COMMAND") (* (* ;; "RESTLST ?")  (AND NIL (RESETSAVE (CURSOR  WAITINGCURSOR))) (TEDIT.PROMPTPRINT - TEXTOBJ "Searching..." T) - (SETQ SEL (fetch (TEXTOBJ SEL) of - TEXTOBJ)) (\TEDIT.SHOWSEL SEL NIL NIL - TEXTOBJ) (SETQ CH (TEDIT.FIND TEXTOBJ + TSTREAM "Searching..." T) + (SETQ SEL (TEXTSEL TEXTOBJ)) + (\TEDIT.NOSEL TSTREAM) + (SETQ CH (TEDIT.FIND TEXTOBJ  (GETTH EVENT THAUXINFO))) - (COND (CH (TEDIT.PROMPTPRINT TEXTOBJ - "done.") (\TEDIT.UPDATE.SEL SEL CH - (NCHARS (GETTH EVENT THAUXINFO)) - (QUOTE RIGHT)) (\TEDIT.FIXSEL SEL - TEXTOBJ) (TEDIT.NORMALIZECARET TEXTOBJ) - (\TEDIT.SHOWSEL SEL T NIL TEXTOBJ)) - (T (TEDIT.PROMPTPRINT TEXTOBJ - "[Not found]")))) + (if CH then (\TEDIT.UPDATE.SEL TSTREAM + CH (NCHARS (GETTH EVENT THAUXINFO)) + (QUOTE RIGHT)) (TEDIT.NORMALIZECARET + TSTREAM) (TEDIT.PROMPTPRINT TSTREAM + "done.") else (TEDIT.PROMPTPRINT + TSTREAM "[Not found]"))) ) (:Move (* ;; "It doesn't make sense to do the deletion part of a move in the same place or a different place. The insert part is probably OK--that maps to the :Insert clause above.") - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "You can't redo a " (GETTH EVENT THACTION)) + (TEDIT.PROMPTPRINT TSTREAM (CONCAT "You can't redo a " (GETTH EVENT THACTION)) T T)) - (:Composite (\TEDIT.REDO.COMPOSITE TEXTOBJ EVENT SEL)) + (:Composite (\TEDIT.REDO.COMPOSITE TSTREAM EVENT SEL)) + (:Wrap (\TEDIT.KEY.WRAP TSTREAM (CAR (GETTH EVENT THDELETEDPIECES)) + (CADR (GETTH EVENT THDELETEDPIECES)))) ((LIST :Get :Put NIL) (* ; "Why can't you redo a get or put ?") - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "You can't redo a " (GETTH EVENT THACTION)) + (TEDIT.PROMPTPRINT TSTREAM (CONCAT "You can't redo a " (GETTH EVENT THACTION)) T T)) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Redoing the action " (GETTH EVENT THACTION) + (TEDIT.PROMPTPRINT TSTREAM (CONCAT "Redoing the action " (GETTH EVENT THACTION) " isn't implemented.") T)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ]) + (\TEDIT.SHOWSEL SEL T TSTREAM]) (\TEDIT.UNDO.UNDO [LAMBDA (TSTREAM) (* ; "Edited 8-Dec-2024 18:24 by rmk") @@ -591,7 +601,8 @@ (DEFINEQ (\TEDIT.UNDO.INSERT - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 8-Jul-2024 00:07 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 12:15 by rmk") + (* ; "Edited 8-Jul-2024 00:07 by rmk") (* ; "Edited 30-May-2023 22:54 by rmk") (* ; "Edited 26-May-2023 23:49 by rmk") (* ; "Edited 24-May-2023 23:53 by rmk") @@ -600,12 +611,16 @@ (* ;; "UNDO a prior Insert, Copy, or Include. ") - (\TEDIT.DELETE TEXTOBJ (\TEDIT.FIXSEL (\TEDIT.UPDATE.SEL (TEXTSEL TEXTOBJ) + (* ;; "If it is OK to show, we don't need the FIX or the TEXTSEL--use the stream") + + (\TEDIT.DELETE TSTREAM (\TEDIT.FIXSEL (\TEDIT.UPDATE.SEL (TEXTSEL (FTEXTOBJ TSTREAM)) EVENT) - TEXTOBJ]) + TSTREAM]) (\TEDIT.UNDO.DELETE - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 29-Sep-2024 00:23 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 21-Apr-2025 22:22 by rmk") + (* ; "Edited 6-Apr-2025 11:49 by rmk") + (* ; "Edited 29-Sep-2024 00:23 by rmk") (* ; "Edited 15-Mar-2024 13:54 by rmk") (* ; "Edited 30-May-2023 23:31 by rmk") (* ; "Edited 27-May-2023 23:39 by rmk") @@ -614,12 +629,13 @@ (* ;; "UNDO a prior deletion ") (\TEDIT.INSERT.SELPIECES (\TEDIT.SELPIECES.COPY (GETTH EVENT THDELETEDPIECES) - 'INSERT TEXTOBJ) - TEXTOBJ + 'INSERT TSTREAM) + TSTREAM (GETTH EVENT THCH#]) (\TEDIT.UNDO.MOVE - [LAMBDA (TSTREAM EVENT) (* ; "Edited 8-Dec-2024 19:38 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 11:51 by rmk") + (* ; "Edited 8-Dec-2024 19:38 by rmk") (* ; "Edited 25-Nov-2024 14:12 by rmk") (* ; "Edited 29-Sep-2024 00:23 by rmk") (* ; "Edited 7-Jul-2024 11:50 by rmk") @@ -629,7 +645,7 @@ (* ;; "This event includes a deletion and an insert/replace both within TEXTOBJ. (The deletion from a from a foreign textobj is in that document's history.)") - (LET* [(TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (LET* [(TEXTOBJ (FTEXTOBJ TSTREAM)) (SEL (TEXTSEL TEXTOBJ)) (REPLACE (EQ :Replace (GETTH (CAR (GETTH EVENT THOLDINFO)) THACTION] @@ -638,11 +654,12 @@ then (FSETTOBJ TEXTOBJ BLUEPENDINGDELETE T) 'PENDINGDEL else 'NORMAL)) - (\TEDIT.FIXSEL SEL TSTREAM) (\TEDIT.SHOWSEL SEL T TSTREAM]) (\TEDIT.UNDO.REPLACE - [LAMBDA (TEXTOBJ EVENT ACTION) (* ; "Edited 15-Mar-2025 22:35 by rmk") + [LAMBDA (TSTREAM EVENT ACTION) (* ; "Edited 21-Apr-2025 22:22 by rmk") + (* ; "Edited 6-Apr-2025 11:58 by rmk") + (* ; "Edited 15-Mar-2025 22:35 by rmk") (* ; "Edited 13-Sep-2024 23:50 by rmk") (* ; "Edited 7-Jul-2024 11:59 by rmk") (* ; "Edited 15-Mar-2024 13:54 by rmk") @@ -652,16 +669,20 @@ (* ;; "This undoes the replacement, but tracks for REDO whether the action was replace, lowercase, uppercase, or initialcap.") - (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY (GETTH EVENT THDELETEDPIECES) - NIL TEXTOBJ) - TEXTOBJ - (\TEDIT.UPDATE.SEL (TEXTSEL TEXTOBJ) - EVENT)) - (SETTH (\TEDIT.LASTEVENT TEXTOBJ) - THACTION ACTION]) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY (GETTH EVENT THDELETEDPIECES) + NIL TSTREAM) + TSTREAM + (\TEDIT.UPDATE.SEL (TEXTSEL TEXTOBJ) + EVENT)) + (SETTH (\TEDIT.LASTEVENT TEXTOBJ) + THACTION ACTION]) (\TEDIT.UNDO.CHARLOOKS - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 25-Nov-2024 21:59 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 21-Apr-2025 20:31 by rmk") + (* ; "Edited 20-Apr-2025 13:39 by rmk") + (* ; "Edited 6-Apr-2025 14:44 by rmk") + (* ; "Edited 25-Nov-2024 21:59 by rmk") (* ; "Edited 28-Sep-2024 22:37 by rmk") (* ; "Edited 26-Sep-2024 16:06 by rmk") (* ; "Edited 11-Aug-2024 22:11 by rmk") @@ -675,54 +696,60 @@ (* ;; "Undo the setting of character looks. The undolist is a list of (NEXTCHNO . OLDCHARLOOKS) pairs, where OLDCHARLOOKS NIL means nothing changed. We have to track the character numbers because pieces may have been split by future events that were then undone. NEXTCHNO is the first character number of the next original piece") - (for U OLDLOOKS NEWUNDOLIST NEXTCHNO (PC _ (\TEDIT.CHTOPC (GETTH EVENT THCH#) - TEXTOBJ)) - (CHNO _ (GETTH EVENT THCH#)) - (SEL _ (FGETTOBJ TEXTOBJ SEL)) - (CARETPC _ (\TEDIT.CARETPIECE TEXTOBJ)) in (CDR (GETTH EVENT THOLDINFO)) - do - (* ;; "Revert changes until we see the character number of the next changed piece. The initial NEXTCHNO is ") - - (* ;; "Perhaps we should also save the CHNO of the CARETPC") - - (SETQ NEXTCHNO (CAR U)) - (SETQ OLDLOOKS (CDR U)) - (CL:WHEN (AND OLDLOOKS (EQ PC CARETPC)) - (FSETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.CARETLOOKS.VERIFY TEXTOBJ OLDLOOKS))) - [push NEWUNDOLIST (CONS NEXTCHNO (CL:IF OLDLOOKS (PLOOKS PC] - - (* ;; "U starts at the first piece. We want CHNO to be the start of the next piece, i.e. initialize to (CAR(CDR ...)) But then, what about the last piece. Maybe we have to do our own popping, or look at UTAIL. Or end in (NEXTPC-CHNO . NIL ). Or text for IGEQ THCHLIM") - - (for P inpieces PC do (FSETPC P PLOOKS OLDLOOKS) - (add CHNO (PLEN P)) - (CL:WHEN (IEQP CHNO NEXTCHNO)(* ; "First piece of the next run") - (SETQ PC P) - (RETURN))) finally - - (* ;; + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (for U OLDLOOKS NEWUNDOLIST NEXTCHNO (PC _ (\TEDIT.CHTOPC (GETTH EVENT THCH#) + TEXTOBJ)) + (CHNO _ (GETTH EVENT THCH#)) + (SEL _ (FGETTOBJ TEXTOBJ SEL)) + (CARETPC _ (\TEDIT.CARETPIECE TEXTOBJ)) in (CDR (GETTH EVENT THOLDINFO)) + do + (* ;; "Revert changes until we see the character number of the next changed piece. The initial NEXTCHNO is ") + + (* ;; "Perhaps we should also save the CHNO of the CARETPC") + + (SETQ NEXTCHNO (CAR U)) + (SETQ OLDLOOKS (CDR U)) + (CL:WHEN (AND OLDLOOKS (EQ PC CARETPC)) + (FSETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.CARETLOOKS.VERIFY TEXTOBJ OLDLOOKS))) + [push NEWUNDOLIST (CONS NEXTCHNO (CL:IF OLDLOOKS (PLOOKS PC] + + (* ;; "U starts at the first piece. We want CHNO to be the start of the next piece, i.e. initialize to (CAR(CDR ...)) But then, what about the last piece. Maybe we have to do our own popping, or look at UTAIL. Or end in (NEXTPC-CHNO . NIL ). Or text for IGEQ THCHLIM") + + (for P inpieces PC do (FSETPC P PLOOKS OLDLOOKS) + (add CHNO (PLEN P)) + (CL:WHEN (IEQP CHNO NEXTCHNO) + (* ; "First piece of the next run") + (SETQ PC P) + (RETURN))) finally + + (* ;;  "Remember the previous looks in case we UNDO the UNDO. (CAR DATUM) is for redo.") - (CL:WHEN NEWUNDOLIST - (change (GETTH EVENT THOLDINFO) - (CONS (CAR DATUM) - (DREVERSE NEWUNDOLIST))) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL EVENT NIL NIL - 'NORMAL) - (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS - (GETTH EVENT THCH#) - (GETTH EVENT THLEN)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) - (TEDIT.PROMPTPRINT TEXTOBJ - "Character looks restored" T)) - - (* ;; + (CL:WHEN NEWUNDOLIST + (change (GETTH EVENT THOLDINFO) + (CONS (CAR DATUM) + (DREVERSE NEWUNDOLIST))) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL SEL EVENT NIL NIL + 'NORMAL) + (\TEDIT.UPDATE.LINES TSTREAM + 'LOOKS + (GETTH EVENT THCH#) + (GETTH EVENT THLEN)) + (\TEDIT.SHOWSEL SEL T TSTREAM) + (TEDIT.PROMPTPRINT TEXTOBJ + "Character looks restored" T)) + + (* ;;  "Save the event for REDO, even if these pieces didn't change") - (\TEDIT.HISTORYADD TEXTOBJ EVENT]) + (\TEDIT.HISTORYADD TEXTOBJ EVENT]) (\TEDIT.UNDO.PARALOOKS - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 25-Nov-2024 22:00 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 21-Apr-2025 20:31 by rmk") + (* ; "Edited 20-Apr-2025 13:38 by rmk") + (* ; "Edited 6-Apr-2025 14:44 by rmk") + (* ; "Edited 25-Nov-2024 22:00 by rmk") (* ; "Edited 28-Sep-2024 22:38 by rmk") (* ; "Edited 27-Sep-2024 12:23 by rmk") (* ; "Edited 11-Aug-2024 22:10 by rmk") @@ -737,60 +764,62 @@ (* ;; "Undo the setting of paragraph looks.") - (for U OLDLOOKS NEWUNDOLIST (PC _ (\TEDIT.CHTOPC (GETTH EVENT THCH#) - TEXTOBJ)) - (CHNO _ (GETTH EVENT THCH#)) - (SEL _ (FGETTOBJ TEXTOBJ SEL)) in (CDR (GETTH EVENT THOLDINFO)) - do - (* ;; "Find the first piece of the next changed paragraph") - - (for P inpieces PC do (CL:WHEN (IEQP CHNO (CAR U)) - (SETQ PC P) - (RETURN)) - (add CHNO (PLEN P))) - (SETQ OLDLOOKS (CDR U)) - (push NEWUNDOLIST (CONS CHNO (PPARALOOKS PC))) (* ; "Save for UNDO UNDO") - - (* ;; "Change all the pieces in this paragraph") - - (for P inpieces PC do (FSETPC P PPARALOOKS OLDLOOKS) - (CL:WHEN (PPARALAST P) - (SETQ PC P) - (RETURN)) - (add CHNO (PLEN P))) finally - - (* ;; - "Remember the previous looks in case we UNDO the UNDO. (CAR DATUM) is for redo.") - - (CL:WHEN NEWUNDOLIST - (change (GETTH EVENT THOLDINFO) - (CONS (CAR DATUM) - (DREVERSE NEWUNDOLIST))) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) - (\TEDIT.UPDATE.SEL SEL EVENT NIL NIL - 'NORMAL) - (\TEDIT.UPDATE.LINES TEXTOBJ - 'LOOKS - (GETTH EVENT THCH#) - (GETTH EVENT THLEN)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) - (TEDIT.PROMPTPRINT TEXTOBJ - "Paragraph looks restored" T)) - - (* ;; - "Save the event for REDO, even if these pieces didn't change") - - (\TEDIT.HISTORYADD TEXTOBJ EVENT]) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (for U OLDLOOKS NEWUNDOLIST (PC _ (\TEDIT.CHTOPC (GETTH EVENT THCH#) + TEXTOBJ)) + (CHNO _ (GETTH EVENT THCH#)) + (SEL _ (FGETTOBJ TEXTOBJ SEL)) in (CDR (GETTH EVENT THOLDINFO)) + do + (* ;; "Find the first piece of the next changed paragraph") + + (for P inpieces PC do (CL:WHEN (IEQP CHNO (CAR U)) + (SETQ PC P) + (RETURN)) + (add CHNO (PLEN P))) + (SETQ OLDLOOKS (CDR U)) + (push NEWUNDOLIST (CONS CHNO (PPARALOOKS PC))) + (* ; "Save for UNDO UNDO") + + (* ;; "Change all the pieces in this paragraph") + + (for P inpieces PC do (FSETPC P PPARALOOKS OLDLOOKS) + (CL:WHEN (PPARALAST P) + (SETQ PC P) + (RETURN)) + (add CHNO (PLEN P))) + finally + + (* ;; + "Remember the previous looks in case we UNDO the UNDO. (CAR DATUM) is for redo.") + + (CL:WHEN NEWUNDOLIST + (change (GETTH EVENT THOLDINFO) + (CONS (CAR DATUM) + (DREVERSE NEWUNDOLIST))) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL SEL EVENT NIL NIL 'NORMAL) + (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS (GETTH EVENT THCH#) + (GETTH EVENT THLEN)) + (\TEDIT.SHOWSEL SEL T TSTREAM) + (TEDIT.PROMPTPRINT TEXTOBJ "Paragraph looks restored" T)) + + (* ;; "Save the event for REDO, even if these pieces didn't change") + + (\TEDIT.HISTORYADD TEXTOBJ EVENT]) (\TEDIT.UNDO.PAGELOOKS - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 12-Aug-2024 10:28 by rmk") - [SETTOBJ TEXTOBJ TXTPAGEFRAMES (PROG1 (COPYALL (GETTH EVENT THOLDINFO)) - (SETTH EVENT THOLDINFO (GETTOBJ TEXTOBJ TXTPAGEFRAMES)))] + [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 6-Apr-2025 11:49 by rmk") + (* ; "Edited 12-Aug-2024 10:28 by rmk") + (SETQ TEXTOBJ (FTEXTOBJ TEXTOBJ)) + [FSETTOBJ TEXTOBJ TXTPAGEFRAMES (PROG1 (COPYALL (GETTH EVENT THOLDINFO)) + (SETTH EVENT THOLDINFO (GETTOBJ TEXTOBJ TXTPAGEFRAMES)))] (TEDIT.PROMPTPRINT TEXTOBJ "Page formats restored" T) (\TEDIT.HISTORYADD TEXTOBJ EVENT]) (\TEDIT.UNDO.COMPOSITE - [LAMBDA (TSTREAM EVENT) (* ; "Edited 8-Dec-2024 15:47 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 14:44 by rmk") + (* ; "Edited 1-Apr-2025 17:34 by rmk") + (* ; "Edited 8-Dec-2024 15:47 by rmk") (* ; "Edited 25-Nov-2024 22:27 by rmk") (* ; "Edited 15-Aug-2024 10:14 by rmk") (* ; "Edited 7-May-2024 23:17 by rmk") @@ -802,7 +831,9 @@ (\TEDIT.UNDO1 TSTREAM E) (CL:UNLESS (EQ CUREVENT (\TEDIT.LASTEVENT TEXTOBJ))(* ; "Something changed") (push EVENTS (\TEDIT.POPEVENT TEXTOBJ))) - (\TEDIT.SHOWSEL NIL NIL TSTREAM) finally (\TEDIT.HISTORYADD.COMPOSITE TEXTOBJ EVENTS)) + (\TEDIT.NOSEL TSTREAM) finally (\TEDIT.HISTORYADD.COMPOSITE TEXTOBJ EVENTS (GETTH EVENT + THACTION) + )) (\TEDIT.SCROLL.CARET TSTREAM]) (\TEDIT.UNDO.REPLACECODE @@ -810,21 +841,57 @@ (* ; "Edited 23-Sep-2024 00:45 by rmk") (\TEDIT.RPLCHARCODE TSTREAM (GETTH EVENT THCH#) (GETTH EVENT THOLDINFO]) + +(\TEDIT.UNDO.WRAP + [LAMBDA (TSTREAM EVENT) (* ; "Edited 4-Apr-2025 11:01 by rmk") + + (* ;; "Undo the deletions and restore the original selection. But also update the undo event so that undo-undo will select the whole span.") + + (LET* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (SEL (TEXTSEL TEXTOBJ)) + (CH# (GETSEL SEL CH#)) + (DCH (FGETSEL SEL DCH)) + (POINT (FGETSEL SEL POINT)) + UNDOEVENT) + (\TEDIT.UNDO.COMPOSITE TSTREAM EVENT) + (SETQ UNDOEVENT (\TEDIT.LASTEVENT TEXTOBJ)) + (CL:WHEN (AND UNDOEVENT (EQ :Sel (GETTH (CAR (GETTH UNDOEVENT THOLDINFO)) + THACTION))) + (change (GETTH UNDOEVENT THOLDINFO) + (NCONC1 (CDR DATUM) + (\TEDIT.HISTORY.EVENT TEXTOBJ :Sel CH# DCH POINT))))]) + +(\TEDIT.UNDO.SEL + [LAMBDA (TSTREAM EVENT) (* ; "Edited 6-Apr-2025 14:45 by rmk") + (* ; "Edited 4-Apr-2025 10:55 by rmk") + (LET* ((SEL (TEXTSEL (FTEXTOBJ TSTREAM))) + (CH# (GETSEL SEL CH#)) + (DCH (FGETSEL SEL DCH)) + (POINT (FGETSEL SEL POINT))) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL TSTREAM (GETTH EVENT THCH#) + (GETTH EVENT THLEN) + (GETTH EVENT THPOINT)) + (\TEDIT.HISTORYADD TSTREAM (\TEDIT.HISTORY.EVENT TSTREAM :Sel CH# DCH POINT]) ) (DEFINEQ (\TEDIT.REDO.INSERT - [LAMBDA (TEXTOBJ EVENT SEL) (* ; "Edited 15-Aug-2024 10:47 by rmk") + [LAMBDA (TSTREAM EVENT SEL) (* ; "Edited 21-Apr-2025 22:19 by rmk") + (* ; "Edited 6-Apr-2025 12:09 by rmk") + (* ; "Edited 15-Aug-2024 10:47 by rmk") (* ; "Edited 15-Mar-2024 13:54 by rmk") (* ; "Edited 31-May-2023 10:26 by rmk") (* ; "Edited 18-May-2023 19:24 by rmk") (* ; "Edited 21-Apr-93 01:06 by jds") - (\TEDIT.INSERT.SELPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES EVENT NIL TEXTOBJ) - 'INSERT TEXTOBJ) - TEXTOBJ SEL]) + (\TEDIT.INSERT.SELPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES EVENT NIL (FTEXTOBJ TSTREAM)) + 'INSERT TSTREAM) + TSTREAM SEL]) (\TEDIT.REDO.REPLACE - [LAMBDA (TEXTOBJ EVENT ACTION) (* ; "Edited 7-Jul-2024 11:59 by rmk") + [LAMBDA (TSTREAM EVENT ACTION) (* ; "Edited 21-Apr-2025 22:22 by rmk") + (* ; "Edited 6-Apr-2025 12:14 by rmk") + (* ; "Edited 7-Jul-2024 11:59 by rmk") (* ; "Edited 15-Mar-2024 13:54 by rmk") (* ; "Edited 2-Oct-2023 11:43 by rmk") (* ; "Edited 31-May-2023 10:25 by rmk") @@ -834,28 +901,31 @@ (* ;; "We get the replacement from where EVENT just installed it in the text (assume that it is still there unchanged), and then we use it to replace what is now at the current selection. EVENT's deleted pieces are not relevant.") - (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES EVENT NIL TEXTOBJ) - NIL TEXTOBJ) - TEXTOBJ - (\TEDIT.UPDATE.SEL (GETTOBJ TEXTOBJ SEL) - EVENT)) - (SETTH (\TEDIT.LASTEVENT TEXTOBJ) - THACTION ACTION]) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (\TEDIT.UPDATE.SEL (TEXTSEL TEXTOBJ) + EVENT) + (\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES EVENT NIL TEXTOBJ) + NIL TSTREAM) + TSTREAM) + (SETTH (\TEDIT.LASTEVENT TEXTOBJ) + THACTION ACTION]) (\TEDIT.REDO.COMPOSITE - [LAMBDA (TEXTOBJ EVENT SEL) (* ; "Edited 21-Oct-2024 00:26 by rmk") + [LAMBDA (TSTREAM EVENT SEL) (* ; "Edited 6-Apr-2025 12:12 by rmk") + (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 7-May-2024 23:12 by rmk") (\TEDIT.THELP 'Redo-composite]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4922 5943 (\TEDIT.HISTORYEVENT.DEFPRINT 4932 . 5941)) (7033 17618 (\TEDIT.HISTORYADD -7043 . 11904) (\TEDIT.HISTORYADD.COMPOSITE 11906 . 12812) (\TEDIT.CUMULATE.EVENTS 12814 . 14408) ( -\TEDIT.COMPOSITE.EVENT 14410 . 15146) (\TEDIT.HISTORY.PROP 15148 . 16511) (\TEDIT.HISTORY.EVENT 16513 - . 17442) (\TEDIT.POPEVENT 17444 . 17616)) (17671 36249 (TEDIT.UNDO 17681 . 22240) (\TEDIT.UNDO1 22242 - . 26663) (TEDIT.REDO 26665 . 33403) (\TEDIT.UNDO.UNDO 33405 . 36247)) (36250 51567 ( -\TEDIT.UNDO.INSERT 36260 . 37173) (\TEDIT.UNDO.DELETE 37175 . 37969) (\TEDIT.UNDO.MOVE 37971 . 39560) -(\TEDIT.UNDO.REPLACE 39562 . 40779) (\TEDIT.UNDO.CHARLOOKS 40781 . 45355) (\TEDIT.UNDO.PARALOOKS 45357 - . 49589) (\TEDIT.UNDO.PAGELOOKS 49591 . 50000) (\TEDIT.UNDO.COMPOSITE 50002 . 51229) ( -\TEDIT.UNDO.REPLACECODE 51231 . 51565)) (51568 53928 (\TEDIT.REDO.INSERT 51578 . 52311) ( -\TEDIT.REDO.REPLACE 52313 . 53644) (\TEDIT.REDO.COMPOSITE 53646 . 53926))))) + (FILEMAP (NIL (5074 6095 (\TEDIT.HISTORYEVENT.DEFPRINT 5084 . 6093)) (7185 18439 (\TEDIT.HISTORYADD +7195 . 12457) (\TEDIT.HISTORYADD.COMPOSITE 12459 . 13491) (\TEDIT.CUMULATE.EVENTS 13493 . 15087) ( +\TEDIT.COMPOSITE.EVENT 15089 . 15825) (\TEDIT.HISTORY.PROP 15827 . 17190) (\TEDIT.HISTORY.EVENT 17192 + . 18263) (\TEDIT.POPEVENT 18265 . 18437)) (18492 37479 (TEDIT.UNDO 18502 . 23378) (\TEDIT.UNDO1 23380 + . 27718) (TEDIT.REDO 27720 . 34633) (\TEDIT.UNDO.UNDO 34635 . 37477)) (37480 55955 ( +\TEDIT.UNDO.INSERT 37490 . 38615) (\TEDIT.UNDO.DELETE 38617 . 39629) (\TEDIT.UNDO.MOVE 39631 . 41284) +(\TEDIT.UNDO.REPLACE 41286 . 42796) (\TEDIT.UNDO.CHARLOOKS 42798 . 48035) (\TEDIT.UNDO.PARALOOKS 48037 + . 51866) (\TEDIT.UNDO.PAGELOOKS 51868 . 52426) (\TEDIT.UNDO.COMPOSITE 52428 . 54028) ( +\TEDIT.UNDO.REPLACECODE 54030 . 54364) (\TEDIT.UNDO.WRAP 54366 . 55295) (\TEDIT.UNDO.SEL 55297 . 55953 +)) (55956 58929 (\TEDIT.REDO.INSERT 55966 . 56928) (\TEDIT.REDO.REPLACE 56930 . 58536) ( +\TEDIT.REDO.COMPOSITE 58538 . 58927))))) STOP diff --git a/library/tedit/TEDIT-HISTORY.LCOM b/library/tedit/TEDIT-HISTORY.LCOM index 58449eb91289f04b1e367c64c48499c52ccf31f1..87faaa78ce8acf4aab3f6f54a6dea3454d5faefb 100644 GIT binary patch literal 15293 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 bj<2(J^PqWcOr-@>zGY~Hyu3!8_(=XgfMI*C literal 13365 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.;403 156185 +(FILECREATED "22-Apr-2025 20:41:05" {WMEDLEY}tedit>TEDIT-LOOKS.;423 159512 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.TRANSLATE.ASCIICHARS) + :CHANGES-TO (FNS TEDIT.SUBLOOKS \TEDIT.CHARLOOKS.FEATURE.CHECK \TEDIT.CHANGE.CHARLOOKS + \TEDIT.GET.INSERT.CHARLOOKS \TEDIT.CHANGE.PARALOOKS) + (VARS TEDIT-LOOKSCOMS) - :PREVIOUS-DATE "28-Mar-2025 14:24:25" {WMEDLEY}TEDIT>TEDIT-LOOKS.;402) + :PREVIOUS-DATE "21-Apr-2025 20:28:55" {WMEDLEY}tedit>TEDIT-LOOKS.;415) (PRETTYCOMPRINT TEDIT-LOOKSCOMS) @@ -42,7 +44,7 @@ (VARS TEDIT.CHARLOOKS.FEATURES (TEDIT.DEFAULT.FMTSPEC (\TEDIT.CREATE.DEFAULT.FMTSPEC)) (TEDIT.FACE.MENU (\TEDIT.CREATE.FACE.MENU)) (TEDIT.SIZE.MENU (\TEDIT.CREATE.SIZE.MENU))) - (FNS \TEDIT.CHARLOOK.FEATUREP) + (FNS \TEDIT.CHARLOOKS.FEATURE.CHECK) (GLOBALVARS TEDIT.CHARLOOKS.FEATURES TEDIT.KNOWN.FONTS TEDIT.FACE.MENU TEDIT.SIZE.MENU TEDIT.DEFAULT.FMTSPEC) (ADDVARS (FONTVARS (TEDIT.PROMPT.FONT DEFAULTFONT) @@ -145,8 +147,10 @@ (CLSELBEFORE FLAG) (* ;  "T if TEDIT can put selection before this char (for menu fields).") - ) - CLOFFSET _ 0 (INIT (DEFPRINT 'CHARLOOKS (FUNCTION \TEDIT.CHARLOOKS.DEFPRINT))) + CLCOLOR) + CLOFFSET _ 0 CLCOLOR _ 'BLACK (INIT (DEFPRINT 'CHARLOOKS (FUNCTION + \TEDIT.CHARLOOKS.DEFPRINT + ))) (ACCESSFNS (CLNAME (fetch (CHARLOOKS CLFONTUNPARSE) of DATUM) (replace (CHARLOOKS CLFONTUNPARSE) of DATUM with NEWVALUE)))) @@ -204,7 +208,7 @@ (/DECLAREDATATYPE 'CHARLOOKS '(POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG - POINTER POINTER POINTER POINTER FLAG FLAG) + POINTER POINTER POINTER POINTER FLAG FLAG POINTER) '((CHARLOOKS 0 POINTER) (CHARLOOKS 2 POINTER) (CHARLOOKS 4 POINTER) @@ -226,8 +230,9 @@ (CHARLOOKS 12 POINTER) (CHARLOOKS 14 POINTER) (CHARLOOKS 14 (FLAGBITS . 0)) - (CHARLOOKS 14 (FLAGBITS . 16))) - '16) + (CHARLOOKS 14 (FLAGBITS . 16)) + (CHARLOOKS 16 POINTER)) + '18) (DEFPRINT 'CHARLOOKS (FUNCTION \TEDIT.CHARLOOKS.DEFPRINT)) @@ -341,7 +346,7 @@ (/DECLAREDATATYPE 'CHARLOOKS '(POINTER POINTER POINTER FLAG FLAG FLAG FLAG FLAG POINTER FLAG FLAG FLAG FLAG FLAG FLAG FLAG - POINTER POINTER POINTER POINTER FLAG FLAG) + POINTER POINTER POINTER POINTER FLAG FLAG POINTER) '((CHARLOOKS 0 POINTER) (CHARLOOKS 2 POINTER) (CHARLOOKS 4 POINTER) @@ -363,8 +368,9 @@ (CHARLOOKS 12 POINTER) (CHARLOOKS 14 POINTER) (CHARLOOKS 14 (FLAGBITS . 0)) - (CHARLOOKS 14 (FLAGBITS . 16))) - '16) + (CHARLOOKS 14 (FLAGBITS . 16)) + (CHARLOOKS 16 POINTER)) + '18) (DEFPRINT 'CHARLOOKS (FUNCTION \TEDIT.CHARLOOKS.DEFPRINT)) @@ -505,11 +511,11 @@ (Helvetica 'HELVETICA) (Times% Roman 'TIMESROMAN))) -(RPAQQ TEDIT.CHARLOOKS.FEATURES (DEVICE FAMILY SIZE FACE ITALIC WEIGHT SLOPE BOLD EXPANSION FONT - INVERTED INVISIBLE OFFSET OFFSETINCREMENT OVERLINE PROTECTED - SELECTPOINT SELAFTER SELBEFORE SIZEINCREMENT SMALLCAPS - STRIKEOUT STYLE SUBSCRIPT SUPERSCRIPT UNBREAKABLE UNDERLINE - USERINFO OFFSETTYPE)) +(RPAQQ TEDIT.CHARLOOKS.FEATURES + (DEVICE FAMILY SIZE FACE ITALIC WEIGHT SLOPE BOLD EXPANSION FONT INVERTED INVISIBLE OFFSET + OFFSETINCREMENT OVERLINE PROTECTED SELECTPOINT SELAFTER SELBEFORE SIZEINCREMENT + SMALLCAPS STRIKEOUT STYLE SUBSCRIPT SUPERSCRIPT UNBREAKABLE UNDERLINE USERINFO + OFFSETTYPE COLOR)) (RPAQ TEDIT.DEFAULT.FMTSPEC (\TEDIT.CREATE.DEFAULT.FMTSPEC)) @@ -518,9 +524,31 @@ (RPAQ TEDIT.SIZE.MENU (\TEDIT.CREATE.SIZE.MENU)) (DEFINEQ -(\TEDIT.CHARLOOK.FEATUREP - [LAMBDA (P) (* ; "Edited 27-Jul-2024 17:33 by rmk") - (MEMB P TEDIT.CHARLOOKS.FEATURES]) +(\TEDIT.CHARLOOKS.FEATURE.CHECK + [LAMBDA (LOOKSLIST TSTREAM) (* ; "Edited 22-Apr-2025 20:38 by rmk") + + (* ;; "Checks to see whether LOOKSLIST contains any invalid character properties. If so, then if TSTREAM is provided, prints a message in its prompt window and returns the (non-NIL) list of offenders. Otherwise, causes an error.") + + (CL:UNLESS (OR (type? CHARLOOKS LOOKSLIST) + (FONTP LOOKSLIST)) + [for FTAIL on (MKLIST LOOKSLIST) by (CDDR FTAIL) unless (MEMB (CAR FTAIL) + TEDIT.CHARLOOKS.FEATURES) + collect (CAR FTAIL) finally (CL:WHEN $$VAL + (if TSTREAM + then (TEDIT.PROMPTPRINT TSTREAM + (CL:IF (CDR $$VAL) + (CONCAT $$VAL + " are not valid character properties--aborted" + ) + (CONCAT (CAR $$VAL) + + " is not a valid character property--aborted" + )) + T) + elseif (CDR $$VAL) + then (ERROR "Invalid character properties" $$VAL) + else (ERROR "Invalid character property" (CAR $$VAL))))]) + ]) ) (DECLARE%: DOEVAL@COMPILE DONTCOPY @@ -565,7 +593,8 @@ CLNAME _ (FONTUNPARSE FONT]) (\TEDIT.EQCLOOKS - [LAMBDA (CLOOK1 CLOOK2) (* ; "Edited 2-Jan-2025 21:01 by rmk") + [LAMBDA (CLOOK1 CLOOK2) (* ; "Edited 15-Apr-2025 16:45 by rmk") + (* ; "Edited 2-Jan-2025 21:01 by rmk") (* ; "Edited 18-Oct-2024 22:29 by rmk") (* ; "Edited 11-Aug-2024 20:41 by rmk") (* ; "Edited 31-Jul-2024 00:05 by rmk") @@ -604,6 +633,8 @@ (FGETCLOOKS CLOOK2 CLOFFSET)) (EQ (FGETCLOOKS CLOOK1 CLSMALLCAP) (FGETCLOOKS CLOOK2 CLSMALLCAP)) + (EQ (FGETCLOOKS CLOOK1 CLCOLOR) + (FGETCLOOKS CLOOK2 CLCOLOR)) (EQUAL (FGETCLOOKS CLOOK1 CLSTYLE) (FGETCLOOKS CLOOK2 CLSTYLE)) (EQ (FGETCLOOKS CLOOK1 CLUNBREAKABLE) @@ -612,7 +643,8 @@ (FGETCLOOKS CLOOK2 CLUSERINFO]) (\TEDIT.SAMECLOOKS - [LAMBDA (CLOOK1 CLOOK2 FEATURES) (* ; "Edited 2-Jan-2025 20:31 by rmk") + [LAMBDA (CLOOK1 CLOOK2 FEATURES) (* ; "Edited 15-Apr-2025 16:42 by rmk") + (* ; "Edited 2-Jan-2025 20:31 by rmk") (* ; "Edited 31-Dec-2024 23:59 by rmk") (* ; "Edited 31-Jul-2024 00:06 by rmk") (* ; "Edited 24-Jul-2023 17:17 by rmk") @@ -649,6 +681,8 @@ (FGETCLOOKS CLOOK2 CLULINE))) (UNBREAKABLE (FGETCLOOKS CLOOK1 CLUNBREAKABLE) (FGETCLOOKS CLOOK2 CLUNBREAKABLE)) + (COLOR (FGETCLOOKS CLOOK1 CLCOLOR) + (FGETCLOOKS CLOOK2 CLCOLOR)) (FACE (EQUAL (FONTPROP FONT1 'FACE) (FONTPROP FONT2 'FACE))) (ERROR (CONCAT F @@ -727,7 +761,8 @@ DEST]) (\TEDIT.UNPARSE.CHARLOOKS.LIST - [LAMBDA (LOOKS) (* ; "Edited 29-Dec-2024 12:14 by rmk") + [LAMBDA (LOOKS) (* ; "Edited 15-Apr-2025 16:41 by rmk") + (* ; "Edited 29-Dec-2024 12:14 by rmk") (* ; "Edited 31-Jul-2024 00:06 by rmk") (* ; "Edited 24-Jul-2023 17:28 by rmk") (* ; "Edited 11-Feb-2023 14:51 by rmk") @@ -738,23 +773,31 @@ (\DTEST LOOKS 'CHARLOOKS) (LET (NEWLOOKS (OFFSET (FGETCLOOKS LOOKS CLOFFSET)) (FONT (FGETCLOOKS LOOKS CLFONT))) - [SETQ NEWLOOKS - (NCONC (if (ILESSP OFFSET 0) - then (LIST 'SUBSCRIPT (IMINUS OFFSET)) - else (IGREATERP OFFSET 0) - then (LIST 'SUPERSCRIPT OFFSET)) - (for PVAL in (LIST (ONOFF (FGETCLOOKS LOOKS CLINVERTED)) - (ONOFF (FGETCLOOKS LOOKS CLULINE)) - (ONOFF (FGETCLOOKS LOOKS CLSTRIKE)) - (ONOFF (FGETCLOOKS LOOKS CLOLINE)) - (ONOFF (FGETCLOOKS LOOKS CLUNBREAKABLE)) - (ONOFF (FGETCLOOKS LOOKS CLPROTECTED)) - (ONOFF (FGETCLOOKS LOOKS CLSELAFTER)) - (ONOFF (FGETCLOOKS LOOKS CLINVISIBLE)) - (FGETCLOOKS LOOKS CLSTYLE) - (FGETCLOOKS LOOKS CLUSERINFO LOOKS)) as PNAME - in '(INVERTED UNDERLINE STRIKEOUT OVERLINE UNBREAKABLE PROTECTED SELECTPOINT - INVISIBLE STYLE USERINFO) join (LIST PNAME PVAL] + [SETQ NEWLOOKS (NCONC (if (ILESSP OFFSET 0) + then (LIST 'SUBSCRIPT (IMINUS OFFSET)) + else (IGREATERP OFFSET 0) + then (LIST 'SUPERSCRIPT OFFSET)) + `(INVERTED ,(ONOFF (FGETCLOOKS LOOKS CLINVERTED)) + UNDERLINE + ,(ONOFF (FGETCLOOKS LOOKS CLULINE)) + STRIKEOUT + ,(ONOFF (FGETCLOOKS LOOKS CLSTRIKE)) + OVERLINE + ,(ONOFF (FGETCLOOKS LOOKS CLOLINE)) + UNBREAKABLE + ,(ONOFF (FGETCLOOKS LOOKS CLUNBREAKABLE)) + COLOR + ,(FGETCLOOKS LOOKS CLCOLOR) + STYLE + ,(FGETCLOOKS LOOKS CLSTYLE) + INVISIBLE + ,(ONOFF (FGETCLOOKS LOOKS CLINVISIBLE)) + PROTECTED + ,(ONOFF (FGETCLOOKS LOOKS CLPROTECTED)) + SELECTPOINT + ,(ONOFF (FGETCLOOKS LOOKS CLSELAFTER)) + USERINFO + ,(FGETCLOOKS LOOKS CLUSERINFO LOOKS] (* ;; "Font properties. Don't show the separate properties if a font class, just the class. And if not a class, just show the properties, not the font. So there is always a consistent picture.") @@ -771,39 +814,41 @@ NEWLOOKS]) (\TEDIT.MODIFYLOOKS - [LAMBDA (LINE STARTX DS LOOKS LINEBASEY) (* ; "Edited 20-Nov-2023 14:18 by rmk") + [LAMBDA (LINE STARTX DS CLOOKS LINEBASEY) (* ; "Edited 11-Apr-2025 17:32 by rmk") + (* ; "Edited 20-Nov-2023 14:18 by rmk") (* ; "Edited 27-May-2023 12:11 by rmk") (* ; "Edited 24-Sep-2022 11:12 by rmk") (* ; "Edited 30-May-91 21:45 by jds") (* ;; "Modify the screen to allow for underlining, etc. Also, restore the vertical offset to the baseline.") - (LET ((CURX (DSPXPOSITION NIL DS)) - (CURY (DSPYPOSITION NIL DS)) - (FONT (fetch (CHARLOOKS CLFONT) of LOOKS))) - (CL:WHEN (fetch (CHARLOOKS CLULINE) of LOOKS) (* ; "It's underlined.") - (MOVETO STARTX (ADD1 (IDIFFERENCE (IPLUS CURY) - (GETLD LINE LTRUEDESCENT))) - DS) - (RELDRAWTO (IDIFFERENCE CURX STARTX) - 0 1 'PAINT DS)) - (CL:WHEN (fetch (CHARLOOKS CLOLINE) of LOOKS) (* ; "Over-line") - (MOVETO STARTX [IPLUS CURY (SUB1 (FONTPROP FONT 'ASCENT] - DS) - (RELDRAWTO (IDIFFERENCE CURX STARTX) - 0 1 'PAINT DS)) - (CL:WHEN (fetch (CHARLOOKS CLSTRIKE) of LOOKS) (* ; "Struck-thru") - (MOVETO STARTX (IPLUS CURY (IQUOTIENT (FONTPROP FONT 'ASCENT) - 3)) - DS) - (RELDRAWTO (IDIFFERENCE CURX STARTX) - 0 1 'PAINT DS)) - (CL:WHEN (fetch (CHARLOOKS CLINVERTED) of LOOKS) (* ; "Inverse video") - (BLTSHADE BLACKSHADE DS STARTX (IDIFFERENCE CURY (FONTPROP FONT 'DESCENT)) - (IDIFFERENCE CURX STARTX) - (FONTPROP FONT 'HEIGHT) - 'INVERT)) - (MOVETO CURX LINEBASEY DS]) + (CL:WHEN CLOOKS + (LET ((CURX (DSPXPOSITION NIL DS)) + (CURY (DSPYPOSITION NIL DS)) + (FONT (FGETCLOOKS CLOOKS CLFONT))) + (CL:WHEN (FGETCLOOKS CLOOKS CLULINE) (* ; "Underlined.") + (MOVETO STARTX (ADD1 (IDIFFERENCE (IPLUS CURY) + (GETLD LINE LTRUEDESCENT))) + DS) + (RELDRAWTO (IDIFFERENCE CURX STARTX) + 0 1 'PAINT DS)) + (CL:WHEN (FGETCLOOKS CLOOKS CLOLINE) (* ; "Over-line") + (MOVETO STARTX [IPLUS CURY (SUB1 (FONTPROP FONT 'ASCENT] + DS) + (RELDRAWTO (IDIFFERENCE CURX STARTX) + 0 1 'PAINT DS)) + (CL:WHEN (FGETCLOOKS CLOOKS CLSTRIKE) (* ; "Struck-thru") + (MOVETO STARTX (IPLUS CURY (IQUOTIENT (FONTPROP FONT 'ASCENT) + 3)) + DS) + (RELDRAWTO (IDIFFERENCE CURX STARTX) + 0 1 'PAINT DS)) + (CL:WHEN (FGETCLOOKS CLOOKS CLINVERTED) (* ; "Inverse video") + (BLTSHADE BLACKSHADE DS STARTX (IDIFFERENCE CURY (FONTPROP FONT 'DESCENT)) + (IDIFFERENCE CURX STARTX) + (FONTPROP FONT 'HEIGHT) + 'INVERT)) + (MOVETO CURX LINEBASEY DS)))]) (TEDIT.NEW.FONT [LAMBDA (TEXTOBJ) (* ; "Edited 29-Jun-2024 16:31 by rmk") @@ -836,7 +881,8 @@ TEXTOBJ]) (\TEDIT.GET.INSERT.CHARLOOKS - [LAMBDA (TEXTOBJ SEL/CHNO) (* ; "Edited 26-Nov-2024 04:58 by rmk") + [LAMBDA (TEXTOBJ SEL/CHNO) (* ; "Edited 22-Apr-2025 10:28 by rmk") + (* ; "Edited 26-Nov-2024 04:58 by rmk") (* ; "Edited 23-Oct-2024 00:04 by rmk") (* ; "Edited 31-Jul-2024 12:10 by rmk") (* ; "Edited 17-Mar-2024 00:27 by rmk") @@ -849,8 +895,6 @@ (* ;; "We want to get the looks of a selected character. If point is RIGHT, that's the last character of the selection. If LEFT, the first character of the selection.") - (* ;; "Return the looks at SEL, or defaults. Reset CLPROTECTED if need be.") - (LET ((PC (\TEDIT.CHTOPC (IMAX 1 (IMIN (TEXTLEN TEXTOBJ) (if (type? SELECTION SEL/CHNO) then (SELECTQ (GETSEL SEL/CHNO POINT) @@ -862,6 +906,9 @@ else SEL/CHNO))) TEXTOBJ)) LOOKS) + (CL:WHEN (AND (PPARALAST PC) + (PREVPIECE PC)) (* ; "Get the looks before the EOL") + (SETQ PC (PREVPIECE PC))) (SETQ LOOKS (if PC then (PCHARLOOKS PC) elseif (FGETTOBJ TEXTOBJ DEFAULTCHARLOOKS) @@ -1047,7 +1094,8 @@ (\TEDIT.UNIQUIFY.ALL TEXTOBJ))))]) (\TEDIT.CONVERT.TO.FORMATTED - [LAMBDA (TSTREAM START END) (* ; "Edited 28-Mar-2025 14:11 by rmk") + [LAMBDA (TSTREAM START END) (* ; "Edited 20-Apr-2025 13:25 by rmk") + (* ; "Edited 28-Mar-2025 14:11 by rmk") (* ; "Edited 7-Jul-2024 09:06 by rmk") (* ; "Edited 10-May-2024 22:42 by rmk") (* ; "Edited 6-May-2024 23:49 by rmk") @@ -1119,9 +1167,10 @@ repeatuntil (IGEQ CHNO END) finally (FSETTOBJ TEXTOBJ FORMATTEDP T) (CL:WHEN CHANGED (FSETTOBJ TEXTOBJ \DIRTY T) - (\TEDIT.UPDATE.LINES (CL:IF CRLF - 'DELETION - 'CHANGED) + (\TEDIT.UPDATE.LINES TSTREAM + (CL:IF CRLF + 'DELETION + 'CHANGED) START (ADD1 (IDIFFERENCE END START))))]))]) ) @@ -1316,22 +1365,27 @@ TEXTOBJ]) (TEDIT.SUBLOOKS - [LAMBDA (TEXTSTREAM OLDLOOKSLIST NEWLOOKSLIST) (* ; "Edited 25-Nov-2024 21:57 by rmk") + [LAMBDA (TSTREAM OLDLOOKSLIST NEWLOOKSLIST) (* ; "Edited 22-Apr-2025 20:41 by rmk") + (* ; "Edited 20-Apr-2025 13:26 by rmk") + (* ; "Edited 6-Apr-2025 14:27 by rmk") + (* ; "Edited 5-Apr-2025 13:31 by rmk") + (* ; "Edited 25-Nov-2024 21:57 by rmk") (* ; "Edited 5-Jul-2024 22:54 by rmk") - (* ; "Edited 25-Jun-2024 11:59 by rmk") (* ; "Edited 18-May-2024 16:22 by rmk") - (* ; "Edited 10-May-2024 22:42 by rmk") - (* ; "Edited 17-Mar-2024 17:17 by rmk") - (* ; "Edited 6-May-2024 17:27 by rmk") - (* ; "Edited 16-Mar-2024 10:03 by rmk") (* ; "Edited 13-Nov-2023 00:26 by rmk") (* ; "Edited 18-Apr-2023 23:53 by rmk") (* ; "Edited 22-Aug-2022 13:06 by rmk") (* ; "Edited 26-Apr-93 14:53 by jds") -(* ;;; "User entry to substitute one set of looks for another. Goes through the whole textstream and whenever the looks match the characteristics of OLDLOOKSLIST which are specified, the characteristics listed in NEWLOOKSLIST are substituted.") + (* ;; "User entry to substitute one set of looks for another. Goes through the whole textstream and whenever the looks match the characteristics of OLDLOOKSLIST which are specified, the characteristics listed in NEWLOOKSLIST are substituted.") - (LET ((TEXTOBJ (TEXTOBJ TEXTSTREAM))) (* ; "Turn off the selection, first.") + (* ;; "") + + (* ;; "Note: might be more useful to provide SEL/CH# and LEN arguments, create the selpieces, and do inselpieces.") + + (\TEDIT.CHARLOOKS.FEATURE.CHECK OLDLOOKSLIST) (* ; "Error if invalid") + (\TEDIT.CHARLOOKS.FEATURE.CHECK NEWLOOKSLIST) + (LET ((TEXTOBJ (TEXTOBJ TSTREAM))) (CL:UNLESS (ZEROP (FGETTOBJ TEXTOBJ TEXTLEN)) (for PC CHANGEMADE SEL FIRSTCHANGEDCHNO (NCHARSCHANGED _ 0) (OLDLOOKS _ (\TEDIT.PARSE.CHARLOOKS.LIST OLDLOOKSLIST NIL TEXTOBJ)) @@ -1341,8 +1395,9 @@ when (\TEDIT.SAMECLOOKS OLDLOOKS (PLOOKS PC) FEATURELIST) do (CL:UNLESS CHANGEMADE (SETQ CHANGEMADE T) - (SETQ SEL (FGETTOBJ TEXTOBJ SEL)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (SETQ SEL (TEXTSEL TEXTOBJ)) + (\TEDIT.NOSEL TSTREAM) + (* ; "Turn off the selection, first.") (FSETTOBJ TEXTOBJ \DIRTY T)) (* ;; @@ -1361,8 +1416,8 @@ (add NCHARSCHANGED (PLEN PC)) finally (CL:WHEN (AND CHANGEMADE (\TEDIT.PRIMARYPANE TEXTOBJ)) (* ; "Update the screen image") - (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS FIRSTCHANGEDCHNO NCHARSCHANGED) - (\TEDIT.SHOWSEL SEL T TEXTOBJ)) + (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS FIRSTCHANGEDCHNO NCHARSCHANGED) + (\TEDIT.SHOWSEL SEL T TSTREAM)) (RETURN CHANGEMADE)))]) (TEDIT.FINDLOOKS @@ -1409,18 +1464,19 @@ (DEFINEQ (\TEDIT.CHANGE.CHARLOOKS - [LAMBDA (TSTREAM NEWLOOKS TARGETSEL) (* ; "Edited 21-Mar-2025 23:15 by rmk") + [LAMBDA (TSTREAM NEWLOOKS TARGETSEL) (* ; "Edited 22-Apr-2025 20:17 by rmk") + (* ; "Edited 21-Apr-2025 20:17 by rmk") + (* ; "Edited 20-Apr-2025 13:27 by rmk") + (* ; "Edited 16-Apr-2025 09:03 by rmk") + (* ; "Edited 6-Apr-2025 14:28 by rmk") + (* ; "Edited 21-Mar-2025 23:15 by rmk") (* ; "Edited 19-Mar-2025 12:55 by rmk") (* ; "Edited 31-Jan-2025 10:31 by rmk") (* ; "Edited 1-Jan-2025 18:11 by rmk") (* ; "Edited 29-Dec-2024 20:08 by rmk") (* ; "Edited 26-Nov-2024 23:50 by rmk") (* ; "Edited 22-Oct-2024 23:37 by rmk") - (* ; "Edited 2-Oct-2024 14:22 by rmk") - (* ; "Edited 28-Sep-2024 17:58 by rmk") (* ; "Edited 16-Aug-2024 22:41 by rmk") - (* ; "Edited 11-Aug-2024 21:12 by rmk") - (* ; "Edited 6-Aug-2024 09:33 by rmk") (* ; "Edited 31-Jul-2024 12:05 by rmk") (* ; "Edited 25-Jun-2024 11:59 by rmk") (* ; "Edited 15-Mar-2024 14:23 by rmk") @@ -1449,19 +1505,7 @@ elseif (FONTP NEWLOOKS) then (SETQ NEWLOOKS (\TEDIT.UNIQUIFY.CHARLOOKS (\TEDIT.CHARLOOKS.FROM.FONT NEWLOOKS T) TEXTOBJ)) - elseif (for PTAIL on NEWLOOKS by (CDDR PTAIL) unless (OR (\TEDIT.CHARLOOK.FEATUREP - (CAR PTAIL)) - (NULL (CADR PTAIL))) - do - (* ;; - "OK if a known property or NIL value. Caller can delete temporary properties.") - - (TEDIT.PROMPTPRINT TSTREAM (CONCAT (CAR PTAIL) - - " is not a valid character property--aborted" - ) - T T) - (RETURN T)) + elseif (\TEDIT.CHARLOOKS.FEATURE.CHECK NEWLOOKS TSTREAM) then (RETURN) elseif (AND (SETQ FONT (LISTGET NEWLOOKS 'FONT)) (for PTAIL on NEWLOOKS by (CDDR PTAIL) @@ -1510,8 +1554,8 @@ NIL NIL (CONS NEWLOOKS (AND DIRTY (DREVERSE UNDOLIST] (CL:WHEN DIRTY (* ; "Something changed") - (CL:WHEN (\TEDIT.PRIMARYPANE TEXTOBJ) - (\TEDIT.SHOWSEL NIL NIL TEXTOBJ) + (CL:WHEN (\TEDIT.PRIMARYPANE TSTREAM) + (\TEDIT.NOSEL TSTREAM) (SELECTQ (LISTGET NEWLOOKS 'INVISIBLE) (ON (* ;; @@ -1537,13 +1581,15 @@ TEXTOBJ))) TEXTOBJ))) (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) - (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS SELPIECES) - (\TEDIT.SHOWSEL NIL T TEXTOBJ) + (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS (GETSPC SELPIECES SPFIRSTCHAR) + (GETSPC SELPIECES SPLEN)) + (\TEDIT.SHOWSEL NIL T TSTREAM) (\TEDIT.TEXTSETFILEPTR TSTREAM ORIGFILEPTR)))] (RETURN DIRTY]) (\TEDIT.CHANGE.CHARLOOKS.NEW - [LAMBDA (NEWLOOKS OLDCHARLOOKS TEXTOBJ) (* ; "Edited 2-Jan-2025 15:49 by rmk") + [LAMBDA (NEWLOOKS OLDCHARLOOKS TEXTOBJ) (* ; "Edited 15-Apr-2025 16:47 by rmk") + (* ; "Edited 2-Jan-2025 15:49 by rmk") (* ; "Edited 1-Jan-2025 09:04 by rmk") (* ; "Edited 2-Dec-2024 23:52 by rmk") (* ; "Edited 29-Aug-2024 11:12 by rmk") @@ -1581,6 +1627,7 @@ (UNDERLINE (FSETCLOOKS NEWCHARLOOKS CLULINE VAL)) (STYLE (FSETCLOOKS NEWCHARLOOKS CLSTYLE VAL)) (UNBREAKABLE (FSETCLOOKS NEWCHARLOOKS CLUNBREAKABLE VAL)) + (COLOR (FSETCLOOKS NEWCHARLOOKS CLCOLOR VAL)) (STRIKEOUT (FSETCLOOKS NEWCHARLOOKS CLSTRIKE VAL)) (INVERTED (FSETCLOOKS NEWCHARLOOKS CLINVERTED VAL)) ((SELECTPOINT SELAFTER) @@ -2129,20 +2176,17 @@ then (\TEDIT.CHANGE.PARALOOKS TSTREAM NEWLOOKS TARGETSEL)))]) (\TEDIT.CHANGE.PARALOOKS - [LAMBDA (TSTREAM NEWLOOKS TARGETSEL) (* ; "Edited 19-Mar-2025 13:09 by rmk") + [LAMBDA (TSTREAM NEWLOOKS TARGETSEL) (* ; "Edited 21-Apr-2025 23:27 by rmk") + (* ; "Edited 20-Apr-2025 13:27 by rmk") + (* ; "Edited 16-Apr-2025 09:05 by rmk") + (* ; "Edited 6-Apr-2025 14:29 by rmk") + (* ; "Edited 19-Mar-2025 13:09 by rmk") (* ; "Edited 8-Feb-2025 22:30 by rmk") (* ; "Edited 31-Jan-2025 09:45 by rmk") (* ; "Edited 6-Jan-2025 23:41 by rmk") - (* ; "Edited 5-Jan-2025 16:01 by rmk") (* ; "Edited 26-Nov-2024 23:51 by rmk") (* ; "Edited 27-Sep-2024 16:06 by rmk") (* ; "Edited 16-Aug-2024 14:21 by rmk") - (* ; "Edited 11-Aug-2024 21:59 by rmk") - (* ; "Edited 4-Aug-2024 23:19 by rmk") - (* ; "Edited 2-Aug-2024 00:39 by rmk") - (* ; "Edited 1-Aug-2024 00:12 by rmk") - (* ; "Edited 29-Jul-2024 11:20 by rmk") - (* ; "Edited 26-Jul-2024 16:17 by rmk") (* ; "Edited 13-Jul-2024 22:55 by rmk") (* ;; "Apply new looks to the piece that begins the paragraph containing the first selected character, the piece that ends the paragraph containing the last piece of the selection, and all pieces in between. All the pieces within a paragraph have the same looks.") @@ -2195,7 +2239,7 @@ (* ;; "First piece of a new paragraph, get the NEWFMTSPEC for all its pieces") - (CL:UNLESS UNDOLIST (\TEDIT.SHOWSEL NIL NIL TEXTOBJ)) + (CL:UNLESS UNDOLIST (\TEDIT.NOSEL TSTREAM)) (SETQ OLDPARALOOKS (PPARALOOKS PC)) (SETQ NEWPARALOOKS (CL:IF (type? PARALOOKS NEWLOOKS) NEWLOOKS @@ -2228,10 +2272,10 @@ (CL:WHEN (\TEDIT.PRIMARYPANE TEXTOBJ) (\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ) - (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS PARAPIECES) - (* ; + (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS (GETSPC PARAPIECES SPFIRSTCHAR) + (GETSPC PARAPIECES SPLEN)) (* ;  "Update the screen image, showing the original selection") - (\TEDIT.SHOWSEL NIL T TEXTOBJ))) + (\TEDIT.SHOWSEL NIL T TSTREAM))) (\TEDIT.TEXTSETFILEPTR TSTREAM ORIGFILEPTR]) (\TEDIT.CHANGE.PARALOOKS.NEW @@ -2365,7 +2409,10 @@ (DEFINEQ (TEDIT.SUBPARALOOKS - [LAMBDA (TEXTSTREAM OLDLOOKSLIST NEWLOOKSLIST) (* ; "Edited 25-Nov-2024 22:00 by rmk") + [LAMBDA (TSTREAM OLDLOOKSLIST NEWLOOKSLIST) (* ; "Edited 21-Apr-2025 20:15 by rmk") + (* ; "Edited 20-Apr-2025 13:27 by rmk") + (* ; "Edited 6-Apr-2025 14:31 by rmk") + (* ; "Edited 25-Nov-2024 22:00 by rmk") (* ; "Edited 5-Jul-2024 22:54 by rmk") (* ; "Edited 25-Jun-2024 11:59 by rmk") (* ; "Edited 18-May-2024 16:22 by rmk") @@ -2380,7 +2427,8 @@ (* ;;; "User entry to substitute one set of looks for another. Goes through the whole textstream and whenever the looks match the characteristics of OLDLOOKSLIST which are specified, the characteristics listed in NEWLOOKSLIST are substituted.") - (LET ((TEXTOBJ (TEXTOBJ TEXTSTREAM))) + (SETQ TSTREAM (TEXTSTREAM TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) (for PC CHANGEMADE SEL FIRSTCHANGEDCHNO (NCHARSCHANGED _ 0) (OLDLOOKS _ (\TEDIT.PARSE.PARALOOKS.LIST OLDLOOKSLIST)) (NEWLOOKS _ (\TEDIT.PARSE.PARALOOKS.LIST NEWLOOKSLIST)) @@ -2391,7 +2439,7 @@  "First change, turn off the selection") (SETQ CHANGEMADE T) (SETQ SEL (FGETTOBJ TEXTOBJ SEL)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (FSETTOBJ TEXTOBJ \DIRTY T)) (FSETPC PC PPARALOOKS (\TEDIT.UNIQUIFY.PARALOOKS (\TEDIT.PARSE.PARALOOKS.LIST @@ -2404,10 +2452,10 @@ (CL:UNLESS FIRSTCHANGEDCHNO (SETQ FIRSTCHANGEDCHNO CH#)) (add NCHARSCHANGED (PLEN PC)) - finally (CL:WHEN (AND CHANGEMADE (\TEDIT.PRIMARYPANE TEXTOBJ)) + finally (CL:WHEN (AND CHANGEMADE (\TEDIT.PRIMARYPANE TSTREAM)) (* ; "Update the screen image") - (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS FIRSTCHANGEDCHNO NCHARSCHANGED) - (\TEDIT.SHOWSEL SEL T TEXTOBJ)) + (\TEDIT.UPDATE.LINES TSTREAM 'LOOKS FIRSTCHANGEDCHNO NCHARSCHANGED) + (\TEDIT.SHOWSEL SEL T TSTREAM)) (RETURN CHANGEMADE]) (SAMEPARALOOKS @@ -2484,26 +2532,26 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (22577 24519 (\TEDIT.CHARLOOKS.DEFPRINT 22587 . 23723) (\TEDIT.PARALOOKS.DEFPRINT 23725 - . 24517)) (24623 25719 (\TEDIT.CREATE.DEFAULT.FMTSPEC 24633 . 25341) (\TEDIT.CREATE.FACE.MENU 25343 - . 25515) (\TEDIT.CREATE.SIZE.MENU 25517 . 25717)) (26620 26809 (\TEDIT.CHARLOOK.FEATUREP 26630 . -26807)) (27111 50383 (\TEDIT.CHARLOOKS.FROM.FONT 27121 . 29334) (\TEDIT.EQCLOOKS 29336 . 31958) ( -\TEDIT.SAMECLOOKS 31960 . 34630) (TEDIT.CARETLOOKS 34632 . 36178) (TEDIT.COPY.LOOKS 36180 . 39463) ( -\TEDIT.UNPARSE.CHARLOOKS.LIST 39465 . 42432) (\TEDIT.MODIFYLOOKS 42434 . 44428) (TEDIT.NEW.FONT 44430 - . 44877) (\TEDIT.CARETLOOKS.VERIFY 44879 . 45716) (\TEDIT.CARETPIECE 45718 . 46023) ( -\TEDIT.GET.INSERT.CHARLOOKS 46025 . 48761) (\TEDIT.GET.TERMSA.WIDTHS 48763 . 49179) ( -\TEDIT.PARSE.CHARLOOKS.LIST 49181 . 50381)) (50384 67283 (\TEDIT.TRANSLATE.ASCIICHARS 50394 . 61173) ( -\TEDIT.CONVERT.TO.FORMATTED 61175 . 67281)) (68295 75406 (\TEDIT.UNIQUIFY.CHARLOOKS 68305 . 69965) ( -\TEDIT.UNIQUIFY.PARALOOKS 69967 . 71234) (\TEDIT.UNIQUIFY.ALL 71236 . 73211) ( -\TEDIT.FLUSH.UNUSED.LOOKS 73213 . 75404)) (75439 86535 (TEDIT.LOOKS 75449 . 77838) (TEDIT.GET.LOOKS -77840 . 79869) (TEDIT.SUBLOOKS 79871 . 83899) (TEDIT.FINDLOOKS 83901 . 86533)) (86610 116528 ( -\TEDIT.CHANGE.CHARLOOKS 86620 . 95856) (\TEDIT.CHANGE.CHARLOOKS.NEW 95858 . 99483) ( -\TEDIT.CHARLOOKS.CHANGE.FONT 99485 . 107792) (\TEDIT.FONT.NEXTSIZE 107794 . 109415) (\TEDIT.LOOKS -109417 . 112746) (\TEDIT.FONTCOPY 112748 . 114249) (\TEDIT.COERCE.FONTCLASS 114251 . 115402) ( -\TEDIT.FONTCLASS.TO.FONT 115404 . 116526)) (116571 147845 (\TEDIT.EQFMTSPEC 116581 . 119796) ( -TEDIT.GET.PARALOOKS 119798 . 123845) (\TEDIT.PARSE.PARALOOKS.LIST 123847 . 131189) (TEDIT.PARALOOKS -131191 . 132231) (\TEDIT.CHANGE.PARALOOKS 132233 . 139518) (\TEDIT.CHANGE.PARALOOKS.NEW 139520 . -143503) (TEDIT.COPY.PARALOOKS 143505 . 146179) (\TEDIT.PARABOUNDS 146181 . 147843)) (147905 155303 ( -TEDIT.SUBPARALOOKS 147915 . 151699) (SAMEPARALOOKS 151701 . 155301)) (155304 155991 ( -\TEDIT.MARK.REVISION 155314 . 155989))))) + (FILEMAP (NIL (23002 24944 (\TEDIT.CHARLOOKS.DEFPRINT 23012 . 24148) (\TEDIT.PARALOOKS.DEFPRINT 24150 + . 24942)) (25048 26144 (\TEDIT.CREATE.DEFAULT.FMTSPEC 25058 . 25766) (\TEDIT.CREATE.FACE.MENU 25768 + . 25940) (\TEDIT.CREATE.SIZE.MENU 25942 . 26142)) (26943 28832 (\TEDIT.CHARLOOKS.FEATURE.CHECK 26953 + . 28830)) (29134 53717 (\TEDIT.CHARLOOKS.FROM.FONT 29144 . 31357) (\TEDIT.EQCLOOKS 31359 . 34181) ( +\TEDIT.SAMECLOOKS 34183 . 37069) (TEDIT.CARETLOOKS 37071 . 38617) (TEDIT.COPY.LOOKS 38619 . 41902) ( +\TEDIT.UNPARSE.CHARLOOKS.LIST 41904 . 45398) (\TEDIT.MODIFYLOOKS 45400 . 47560) (TEDIT.NEW.FONT 47562 + . 48009) (\TEDIT.CARETLOOKS.VERIFY 48011 . 48848) (\TEDIT.CARETPIECE 48850 . 49155) ( +\TEDIT.GET.INSERT.CHARLOOKS 49157 . 52095) (\TEDIT.GET.TERMSA.WIDTHS 52097 . 52513) ( +\TEDIT.PARSE.CHARLOOKS.LIST 52515 . 53715)) (53718 70771 (\TEDIT.TRANSLATE.ASCIICHARS 53728 . 64507) ( +\TEDIT.CONVERT.TO.FORMATTED 64509 . 70769)) (71783 78894 (\TEDIT.UNIQUIFY.CHARLOOKS 71793 . 73453) ( +\TEDIT.UNIQUIFY.PARALOOKS 73455 . 74722) (\TEDIT.UNIQUIFY.ALL 74724 . 76699) ( +\TEDIT.FLUSH.UNUSED.LOOKS 76701 . 78892)) (78927 90234 (TEDIT.LOOKS 78937 . 81326) (TEDIT.GET.LOOKS +81328 . 83357) (TEDIT.SUBLOOKS 83359 . 87598) (TEDIT.FINDLOOKS 87600 . 90232)) (90309 119817 ( +\TEDIT.CHANGE.CHARLOOKS 90319 . 98976) (\TEDIT.CHANGE.CHARLOOKS.NEW 98978 . 102772) ( +\TEDIT.CHARLOOKS.CHANGE.FONT 102774 . 111081) (\TEDIT.FONT.NEXTSIZE 111083 . 112704) (\TEDIT.LOOKS +112706 . 116035) (\TEDIT.FONTCOPY 116037 . 117538) (\TEDIT.COERCE.FONTCLASS 117540 . 118691) ( +\TEDIT.FONTCLASS.TO.FONT 118693 . 119815)) (119860 150817 (\TEDIT.EQFMTSPEC 119870 . 123085) ( +TEDIT.GET.PARALOOKS 123087 . 127134) (\TEDIT.PARSE.PARALOOKS.LIST 127136 . 134478) (TEDIT.PARALOOKS +134480 . 135520) (\TEDIT.CHANGE.PARALOOKS 135522 . 142490) (\TEDIT.CHANGE.PARALOOKS.NEW 142492 . +146475) (TEDIT.COPY.PARALOOKS 146477 . 149151) (\TEDIT.PARABOUNDS 149153 . 150815)) (150877 158630 ( +TEDIT.SUBPARALOOKS 150887 . 155026) (SAMEPARALOOKS 155028 . 158628)) (158631 159318 ( +\TEDIT.MARK.REVISION 158641 . 159316))))) STOP diff --git a/library/tedit/TEDIT-LOOKS.LCOM b/library/tedit/TEDIT-LOOKS.LCOM index 7830009dc1f1dc77e6cb631d746fb0eb1538e698..953f1340029a5615cd34ea47dc24efeeee01f8da 100644 GIT binary patch delta 5682 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 SxufT1H&mJ5JU)0VY5gx}*7@WB delta 5186 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 diff --git a/library/tedit/TEDIT-MENU b/library/tedit/TEDIT-MENU index 69c71b061..9cfaa7f7b 100644 --- a/library/tedit/TEDIT-MENU +++ b/library/tedit/TEDIT-MENU @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Mar-2025 14:56:57" {WMEDLEY}tedit>TEDIT-MENU.;464 162009 +(FILECREATED "20-Apr-2025 23:44:58" {WMEDLEY}tedit>TEDIT-MENU.;471 175952 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.CHARMENU.SPEC \TEDIT.CHARMENU.FILLIN) + :CHANGES-TO (FNS \TEDIT.SHOW.CHARLOOKS \TEDIT.SHOW.PARALOOKS \TEDIT.SHOW.PAGELOOKS) - :PREVIOUS-DATE "19-Mar-2025 10:01:40" {WMEDLEY}tedit>TEDIT-MENU.;461) + :PREVIOUS-DATE "15-Apr-2025 16:48:16" {WMEDLEY}tedit>TEDIT-MENU.;470) (PRETTYCOMPRINT TEDIT-MENUCOMS) @@ -26,6 +26,16 @@ (* ;; "") + (* ; "Middle button in title") + [COMS (* ; "Menu interfacing") + (FNS TEDIT.ADD.MENUITEM TEDIT.DEFAULT.MENUFN TEDIT.REMOVE.MENUITEM \TEDIT.CREATEMENU + \TEDIT.MENU.WHENHELDFN \TEDIT.MENU.WHENSELECTEDFN) + (GLOBALVARS TEDIT.DEFAULT.MENU) + (VARS \TEDIT.DEFAULTMENU.ITEMS) + (DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (TEDIT.DEFAULT.MENU (\TEDIT.CREATEMENU + (COPY + \TEDIT.DEFAULTMENU.ITEMS + ] [COMS (* ; "MARGINBAR") (FNS DRAWMARGINSCALE MARGINBAR MARGINBAR.CREATE MB.MARGINBAR.BUTTONEVENTINFN MB.MARGINBAR.SELFN.TABS MB.MARGINBAR.SELFN.TABS.KIND MARGINBAR.GETSTATEFN @@ -137,6 +147,212 @@ +(* ; "Middle button in title") + + + + +(* ; "Menu interfacing") + +(DEFINEQ + +(TEDIT.ADD.MENUITEM + [LAMBDA (MENU ITEM) (* ; "Edited 13-Apr-2025 19:53 by rmk") + (* jds " 9-AUG-83 09:55") + (CL:UNLESS (MEMBER ITEM (fetch ITEMS of MENU)) (* ; "Do nothing--it's already there ") + (LET (OLDITM) + (if [AND (LISTP ITEM) + (SETQ OLDITM (SASSOC (CAR ITEM) + (fetch ITEMS of MENU] + then (* ; + "The menu item exists. Make sure the thing behind it is right.") + (RPLACD OLDITM (CDR ITEM)) + else (* ; "Not there, add it") + (replace ITEMS of MENU with (NCONC1 (fetch ITEMS of MENU) + ITEM)) + (if (EQ (fetch MENUCOLUMNS of MENU) + 1) + then (* ; + "If there is only one column, force a re-figuring of the number of rows") + (replace MENUROWS of MENU with NIL) + elseif (EQ (fetch MENUROWS of MENU) + 1) + then (* ; + "There's only one row, so recompute # of columns.") + (replace MENUCOLUMNS of MENU with NIL)) + (replace ITEMWIDTH of MENU with 10000) + (replace ITEMHEIGHT of MENU with 10000) + (replace IMAGE of MENU with NIL) (* ; + "Force it to create a new menu image.") + (UPDATE/MENU/IMAGE MENU))))]) + +(TEDIT.DEFAULT.MENUFN + [LAMBDA (PANE) (* ; "Edited 14-Apr-2025 22:09 by rmk") + (* ; "Edited 13-Apr-2025 13:28 by rmk") + (* ; "Edited 17-Mar-2025 17:28 by rmk") + (* ; "Edited 14-Mar-2025 16:40 by rmk") + (* ; "Edited 12-Feb-2025 16:26 by rmk") + (* ; "Edited 9-Feb-2025 21:28 by rmk") + (* ; "Edited 7-Jan-2025 23:46 by rmk") + (* ; "Edited 27-Jul-2024 20:24 by rmk") + (* ; "Edited 30-Jun-2024 12:38 by rmk") + (* ; "Edited 18-May-2024 16:50 by rmk") + (* ; "Edited 24-Apr-2024 09:47 by rmk") + (* ; "Edited 15-Mar-2024 18:35 by rmk") + (* ; "Edited 22-Sep-2023 20:14 by rmk") + (* ; "Edited 6-May-2023 17:28 by rmk") + (* ; "Edited 30-May-91 23:35 by jds") + + (* ;; + "Default MENU Fn for editor windows--displays a menu of items & acts on the commands received.") + + (PROG* ((TSTREAM (TEXTSTREAM PANE)) + (TEXTOBJ (FTEXTOBJ TSTREAM)) + (WMENU (WINDOWPROP PANE 'TEDIT.MENU)) + THISMENU ITEM) + (CL:WHEN (FGETTOBJ TEXTOBJ EDITOPACTIVE) + + (* ;; "We're busy doing something, tell him to wait. Unfortunately, this string will overwrite whatever may be in the Tedit promptwindow (e.g. a GETINPUT calling TTYINPROMPTFORWORD for a meta-F command), obscuring what the user has already typed. Maybe an interface that tests to see if the promptwindow is in use, and enlarges it with an extra line above the current type-in?") + + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (CL:IF (EQ T (FGETTOBJ TEXTOBJ EDITOPACTIVE)) + "Edit" + (FGETTOBJ TEXTOBJ EDITOPACTIVE)) + " operation in progress; please wait") + T) + (RETURN NIL)) + (SETQ THISMENU (if WMENU + elseif (SETQ WMENU (WINDOWPROP PANE 'TEDIT.MENU.COMMANDS)) + then (PROG1 (SETQ WMENU (\TEDIT.CREATEMENU WMENU)) + (WINDOWPROP PANE 'TEDIT.MENU WMENU)) + else TEDIT.DEFAULT.MENU)) + (SETQ ITEM (CAR (MENU THISMENU))) + (ERSETQ (RESETLST + [SELECTQ ITEM + ((Put |Put Formatted Document|) + (TEDIT.PUT TEXTOBJ NIL NIL (GETTEXTPROP TEXTOBJ 'CLEARPUT))) + (Plain-Text (TEDIT.PUT TEXTOBJ NIL NIL T)) + ((Get |Get Formatted Document|) (* ; + "Get a new file (overwriting the one being edited.)") + (TEDIT.GET TEXTOBJ NIL (GETTEXTPROP TEXTOBJ 'CLEARGET))) + (Unformatted% Get + (TEDIT.GET TEXTOBJ NIL T)) + (Include (* ; "Insert a file where the caret is") + (TEDIT.INCLUDE TEXTOBJ)) + (Quit (* ; "OK to stop this session?") + (\TEDIT.FINISHEDIT? TEXTOBJ)) + (Substitute (* ; "Search-and-replace") + (RESETLST + (RESETSAVE (CURSOR WAITINGCURSOR)) + (TEDIT.SUBSTITUTE TEXTOBJ))) + (Find (* ; + "Case sensitive search, with * and # wildcards") + (\TEDIT.KEY.FIND TSTREAM)) + (Hardcopy (* ; "Print this document") + (TEDIT.HARDCOPY TEXTOBJ)) + (Expanded% Menu (* ; + "Open the expanded operations menu.") + (\TEDIT.EXPANDEDMENU.START TEXTOBJ)) + (Character% Looks (* ; + "Open the menu for setting character looks") + (\TEDIT.CHARMENU.START TEXTOBJ)) + (Paragraph% Formatting (* ; + "Open the paragraph formatting menu") + (\TEDIT.PARAMENU.START TEXTOBJ)) + (Page% Layout (* ; "Open the page-layout menu") + (\TEDIT.MENU.START (\TEDIT.PAGEMENU.CREATE) + TSTREAM "Page Layout Menu" 150 'PAGE)) + (Buttons (TEDIT.BUTTONS.BUILD)) + (Split% Window (\TEDIT.SPLITW (OR (GETTOBJ TEXTOBJ SELPANE) + PANE) + T)) + (Unsplit% Window + (\TEDIT.UNSPLITW (OR (GETTOBJ TEXTOBJ SELPANE) + PANE))) + (CL:WHEN ITEM (* ; + "Apply a user-supplied function to the text stream") + [RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ T) + '(PROGN (\TEDIT.MARKINACTIVE OLDVALUE] + (APPLY* ITEM (TEXTSTREAM PANE)))])]) + +(TEDIT.REMOVE.MENUITEM + [LAMBDA (MENU ITEM) (* gbn "26-Apr-84 04:06") + (PROG (ITEMLIST) + [COND + ((OR (LITATOM ITEM) + (STRINGP ITEM)) + (for X in (fetch ITEMS of MENU) do (COND + ((AND (LISTP X) + (EQUAL (CAR X) + ITEM)) + (RETURN (SETQ ITEM X] + (RETURN (COND + ((MEMBER ITEM (SETQ ITEMLIST (fetch ITEMS of MENU))) + (replace ITEMS of MENU with (REMOVE ITEM ITEMLIST)) + (replace MENUCOLUMNS of MENU with NIL) + (replace MENUROWS of MENU with NIL) + (UPDATE/MENU/IMAGE MENU)) + (T NIL]) + +(\TEDIT.CREATEMENU + [LAMBDA (ITEMS) (* ; "Edited 3-Apr-2024 13:30 by rmk") + (* ; "Edited 16-Oct-87 14:21 by jds") + + (* ;; "Create a TEdit command menu, given a list of menu items.") + + (create MENU + ITEMS _ ITEMS + CENTERFLG _ T + MENUFONT _ (FONTCREATE 'HELVETICA 10 'BOLD) + WHENHELDFN _ (FUNCTION \TEDIT.MENU.WHENHELDFN) + WHENSELECTEDFN _ (FUNCTION \TEDIT.MENU.WHENSELECTEDFN]) + +(\TEDIT.MENU.WHENHELDFN + [LAMBDA (ITEM MENU BUTTON) (* ; "Edited 4-Oct-2022 09:17 by rmk") + (* jds "10-Apr-84 15:14") + (COND + ((ATOM ITEM) + (CLRPROMPT) + (PROMPTPRINT (SELECTQ ITEM + (Put "Sends the document to a file") + (Get "Gets a new file as the document to edit.") + (Looks "Changes the font/size/etc. of characters") + (Find "Searches for a string") + (Quit "Ends the edit session") + (Hardcopy "Formats and sends the file to a printer.") + (Hardcopy% File + "Creates a hardcopy-format file of the document.") + ""))) + (T (DEFAULTMENUHELDFN ITEM]) + +(\TEDIT.MENU.WHENSELECTEDFN + [LAMBDA (ITEM MENU BUTTON) (* ; "Edited 16-Oct-87 14:21 by jds") + + (* ;; "A Selection fn for preserving the button pressed, for special handling in PUT, e.g.") + + (CONS (DEFAULTWHENSELECTEDFN ITEM MENU BUTTON) + BUTTON]) +) +(DECLARE%: DOEVAL@COMPILE DONTCOPY + +(GLOBALVARS TEDIT.DEFAULT.MENU) +) + +(RPAQQ \TEDIT.DEFAULTMENU.ITEMS + ((Put 'Put NIL (SUBITEMS |Put Formatted Document| Plain-Text)) + (Get 'Get NIL (SUBITEMS |Get Formatted Document| Unformatted% Get)) + Include Find Substitute (Buttons 'Buttons "Display action buttons") + (Split% Window 'Split% Window "Split the last-selected window") + (Unsplit% Window 'Unsplit% Window "Unsplit the last-selected window") + Quit + (Expanded% Menu 'Expanded% Menu NIL (SUBITEMS Expanded% Menu Character% Looks + Paragraph% Formatting Page% Layout)))) +(DECLARE%: DONTEVAL@LOAD DOCOPY + +(RPAQ TEDIT.DEFAULT.MENU (\TEDIT.CREATEMENU (COPY \TEDIT.DEFAULTMENU.ITEMS))) +) + + + (* ; "MARGINBAR") (DEFINEQ @@ -1343,7 +1559,8 @@ (RETURN 'DON'T]) (\TEDIT.EXPANDEDMENU.ACTIONFN - [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM MAINSTREAM) (* ; "Edited 18-Mar-2025 23:54 by rmk") + [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM MAINSTREAM) (* ; "Edited 6-Apr-2025 14:39 by rmk") + (* ; "Edited 18-Mar-2025 23:54 by rmk") (* ; "Edited 16-Mar-2025 21:43 by rmk") (* ; "Edited 14-Mar-2025 15:43 by rmk") (* ; "Edited 5-Mar-2025 20:51 by rmk") @@ -1369,7 +1586,7 @@ (* ; "Edited 30-Mar-94 16:04 by jds") (* ;  "MBFN for TEdit default menu item buttons.") - (LET ((MENUTEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of MENUSTREAM))) + (LET ((MENUTEXTOBJ (FTEXTOBJ MENUSTREAM)) STATE) [ERSETQ (RESETLST [RESETSAVE (PROG1 OBJ @@ -1378,22 +1595,22 @@ (SELECTQ (IMAGEOBJPROP OBJ 'IDENTIFIER) (PUT (* ;  "Only try this if he really typed a file name") - (SETQ STATE (MB.GET 'PUTFILE MENUTEXTOBJ 'STATE MENUSEL)) + (SETQ STATE (MB.GET 'PUTFILE MENUSTREAM 'STATE MENUSEL)) (if STATE then (TEDIT.PUT MAINSTREAM STATE NIL (GETTEXTPROP MAINSTREAM 'UNFORMATTEDPUT/GET)) else (TEDIT.PROMPTPRINT MAINSTREAM "Put file not specified" T))) - (GET (SETQ STATE (MB.GET 'GETFILE MENUTEXTOBJ 'STATE MENUSEL)) + (GET (SETQ STATE (MB.GET 'GETFILE MAINSTREAM 'STATE MENUSEL)) (if STATE then (TEDIT.GET MAINSTREAM STATE (GETTEXTPROP MAINSTREAM 'UNFORMATTEDPUT/GET)) else (TEDIT.PROMPTPRINT MAINSTREAM "Get file not specified" T))) - (INCLUDE (SETQ STATE (MB.GET 'INCLUDEFILE MENUTEXTOBJ 'STATE MENUSEL)) + (INCLUDE (SETQ STATE (MB.GET 'INCLUDEFILE MENUSTREAM 'STATE MENUSEL)) (if STATE then (TEDIT.INCLUDE MAINSTREAM STATE) else (TEDIT.PROMPTPRINT MAINSTREAM "Include file not specified" T ))) - (FIND (SETQ STATE (MB.GET 'FINDPATTERN MENUTEXTOBJ 'STATE MENUSEL)) + (FIND (SETQ STATE (MB.GET 'FINDPATTERN MENUSTREAM 'STATE MENUSEL)) (if (IGEQ (NCHARS STATE) 1) then (\TEDIT.KEY.FIND MAINSTREAM NIL NIL STATE) @@ -1401,15 +1618,16 @@ )) (SUBSTITUTE [LET* [(STATES (MB.GET '(REPLACEMENT PATTERN CONFIRM USENEWLOOKS ) - MENUTEXTOBJ + MENUSTREAM 'STATE MENUSEL)) (REPLACEMENT (LISTGET STATES 'REPLACEMENT)) (PATTERN (LISTGET STATES 'PATTERN] (CL:UNLESS (ZEROP (NCHARS PATTERN)) (SETQ REPLACEMENT (CL:IF (EQ 'ON (LISTGET STATES 'USENEWLOOKS)) - (\TEDIT.SELPIECES REPLACEMENT - NIL MENUTEXTOBJ) + (\TEDIT.SELPIECES MENUTEXTOBJ + REPLACEMENT NIL + MENUTEXTOBJ) (TEDIT.SEL.AS.STRING MENUSTREAM REPLACEMENT))) [TEDIT.SUBSTITUTE MAINSTREAM PATTERN (OR REPLACEMENT @@ -1430,7 +1648,7 @@ (TEDIT.SETSEL MAINSTREAM 1 (TEXTLEN (TEXTOBJ MAINSTREAM)) 'LEFT)) (HARDCOPY (LET* ((STATES (MB.GET '(SERVER COPIES SIDES MESSAGE/PHONE#) - MENUTEXTOBJ + MENUSTREAM 'STATE MENUSEL)) (SERVER (LISTGET STATES 'SERVER)) (COPIES (LISTGET STATES 'COPIES)) @@ -1455,7 +1673,7 @@ (SETSEL MENUSEL SET T) (* ;  "Now turn the menu button highlighting off.") (SETSEL MENUSEL ONFLG T) - (\TEDIT.SHOWSEL MENUSEL NIL MENUTEXTOBJ) (* ; + (\TEDIT.NOSEL MENUTSTREAM) (* ;  "And forget that anything is selected.") (SETSEL MENUSEL SET NIL]) ) @@ -1608,7 +1826,8 @@ (TEDIT.BACKTOMAIN MENUSTREAM]) (\TEDIT.SHOW.PARALOOKS - [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 20-Oct-2024 11:11 by rmk") + [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 20-Apr-2025 23:40 by rmk") + (* ; "Edited 20-Oct-2024 11:11 by rmk") (* ; "Edited 29-Sep-2024 14:59 by rmk") (* ; "Edited 25-Aug-2024 09:15 by rmk") (* ; "Edited 3-Aug-2024 19:05 by rmk") @@ -1642,7 +1861,7 @@ (\TEDIT.UPDATE.SEL (TEXTSEL MENUTEXTOBJ) 1 0 'LEFT) (\TEDIT.FIXSEL (TEXTSEL MENUTEXTOBJ) - MENUTEXTOBJ) + MENUSTREAM) (TEDIT.BACKTOMAIN MENUSTREAM))]) (\TEDIT.PARAMENU.FILLIN @@ -1910,7 +2129,8 @@ NEWLOOKS]) (\TEDIT.CHARMENU.FILLIN - [LAMBDA (STARTINGPC CHARLOOKS MENUSTREAM) (* ; "Edited 22-Mar-2025 23:27 by rmk") + [LAMBDA (STARTINGPC CHARLOOKS MENUSTREAM) (* ; "Edited 15-Apr-2025 16:47 by rmk") + (* ; "Edited 22-Mar-2025 23:27 by rmk") (* ; "Edited 1-Jan-2025 15:24 by rmk") (* ; "Edited 28-Dec-2024 12:48 by rmk") (* ; "Edited 20-Dec-2024 12:18 by rmk") @@ -1953,6 +2173,7 @@ (STRIKEOUT (FGETCLOOKS CHARLOOKS CLSTRIKE)) (OVERLINE (FGETCLOOKS CHARLOOKS CLOLINE)) (UNBREAKABLE (FGETCLOOKS CHARLOOKS CLUNBREAKABLE)) + (COLOR (FGETCLOOKS CHARLOOKS CLCOLOR)) (OFFSETTYPE (CL:WHEN (SETQ VAL (FGETCLOOKS CHARLOOKS CLOFFSET)) (if (IGREATERP VAL 0) then 'SUPERSCRIPT @@ -1973,7 +2194,8 @@ (TEDIT.OBJECT.CHANGED MENUSTREAM OBJ PC)))) finally (RETURN PC)))]) (\TEDIT.SHOW.CHARLOOKS - [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 31-Dec-2024 21:25 by rmk") + [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 20-Apr-2025 23:40 by rmk") + (* ; "Edited 31-Dec-2024 21:25 by rmk") (* ; "Edited 2-Nov-2024 20:16 by rmk") (* ; "Edited 20-Oct-2024 09:55 by rmk") (* ; "Edited 29-Sep-2024 14:59 by rmk") @@ -1996,7 +2218,7 @@ (* ;; "OBJ is unused, presumably to have a standard interface with other menu functions that update image objects.") - (LET* ((MENUTEXTOBJ (GETTSTR MENUSTREAM TEXTOBJ)) + (LET* ((MENUTEXTOBJ (FTEXTOBJ MENUSTREAM)) (MAINTEXTOBJ (GETTSTR (\TEDIT.MAINSTREAM MENUSTREAM) TEXTOBJ)) (MAINCH# (GETSEL (TEXTSEL MAINTEXTOBJ) @@ -2011,7 +2233,7 @@ MENUSTREAM)) (FSETSEL MENUSEL ONFLG T) (\TEDIT.UPDATE.SEL MENUSEL 1 0 'LEFT) - (\TEDIT.FIXSEL MENUSEL MENUTEXTOBJ)) + (\TEDIT.FIXSEL MENUSEL MENUSTREAM)) (TEDIT.BACKTOMAIN MENUSTREAM]) (\TEDIT.APPLY.CHARLOOKS @@ -2271,7 +2493,8 @@ ,@(\TEDIT.CHARMENU.SPEC TSTREAM]) (\TEDIT.SHOW.PAGELOOKS - [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 22-Oct-2024 11:04 by rmk") + [LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM) (* ; "Edited 20-Apr-2025 23:41 by rmk") + (* ; "Edited 22-Oct-2024 11:04 by rmk") (* ; "Edited 20-Oct-2024 17:32 by rmk") (* ; "Edited 29-Sep-2024 15:10 by rmk") (* ; "Edited 30-Aug-2024 23:58 by rmk") @@ -2294,7 +2517,7 @@ PAGEID))) (FSETSEL MENUSEL ONFLG T) (\TEDIT.UPDATE.SEL MENUSEL 1 0 'LEFT) - (\TEDIT.FIXSEL MENUSEL (GETTSTR MENUSTREAM TEXTOBJ)) + (\TEDIT.FIXSEL MENUSEL MENUSTREAM) (TEDIT.BACKTOMAIN MENUSTREAM]) (\TEDIT.PAGEMENU.FILLIN @@ -2634,29 +2857,31 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5138 51509 (DRAWMARGINSCALE 5148 . 8607) (MARGINBAR 8609 . 15734) (MARGINBAR.CREATE -15736 . 19155) (MB.MARGINBAR.BUTTONEVENTINFN 19157 . 26796) (MB.MARGINBAR.SELFN.TABS 26798 . 32038) ( -MB.MARGINBAR.SELFN.TABS.KIND 32040 . 32975) (MARGINBAR.GETSTATEFN 32977 . 36855) (MARGINBAR.SETSTATEFN - 36857 . 37067) (MARGINBAR.NEUTRALIZE 37069 . 37482) (MARGINBAR.LOOKS 37484 . 40590) ( -MB.MARGINBAR.SIZEFN 40592 . 41195) (MB.MARGINBAR.DISPLAYFN 41197 . 44258) (MDESCALE 44260 . 44800) ( -MSCALE 44802 . 45132) (MB.MARGINBAR.SHOWTAB 45134 . 47457) (MB.MARGINBAR.TABTRACK 47459 . 48844) ( -MARGINBAR.INIT 48846 . 50239) (\TEDIT.PARALOOKS.TO.MARBAR 50241 . 51507)) (52334 59240 ( -TEDIT.MENUSTREAM 52344 . 53344) (TEDITMENUP 53346 . 54315) (\TEDIT.MENU.START 54317 . 58664) ( -\TEDIT.MENU.BUTTONEVENTFN 58666 . 59238)) (59559 67481 (\TEDIT.MENU.CREATE 59569 . 61380) ( -\TEDIT.MENU.PARSE 61382 . 65071) (\TEDIT.MENU.NEUTRALIZE 65073 . 67144) (\TEDITMENU.RECORD.UNFORMATTED - 67146 . 67479)) (67547 87539 (\TEDIT.EXPANDEDMENU.CREATE 67557 . 72959) (\TEDIT.EXPANDEDMENU.START -72961 . 74391) (\TEDIT.EXPANDEDMENU.FN 74393 . 77648) (\TEDIT.EXPANDEDMENU.ACTIONFN 77650 . 87537)) ( -87601 103158 (\TEDIT.PARAMENU.CREATE 87611 . 93632) (\TEDIT.PARAMENU.START 93634 . 94566) ( -\TEDIT.APPLY.PARALOOKS 94568 . 95620) (\TEDIT.SHOW.PARALOOKS 95622 . 98405) (\TEDIT.PARAMENU.FILLIN -98407 . 103156)) (103363 129548 (\TEDIT.CHARMENU.CREATE 103373 . 105977) (\TEDIT.CHARMENU.START 105979 - . 107076) (\TEDIT.CHARMENU.SPEC 107078 . 111761) (\TEDIT.CHARMENU.PARSE 111763 . 114931) ( -\TEDIT.CHARMENU.FILLIN 114933 . 119387) (\TEDIT.SHOW.CHARLOOKS 119389 . 122646) ( -\TEDIT.APPLY.CHARLOOKS 122648 . 123809) (\TEDIT.OFFSETTYPE.STATEFN 123811 . 125774) ( -\TEDIT.OTHER.STATECHANGEFN 125776 . 127421) (\TEDIT.OTHER.SELECTFN 127423 . 129546)) (129610 156049 ( -\TEDIT.PAGEMENU.CREATE 129620 . 136814) (\TEDIT.SHOW.PAGELOOKS 136816 . 138611) ( -\TEDIT.PAGEMENU.FILLIN 138613 . 140163) (\TEDIT.PAGEREGION.UNPARSE 140165 . 149355) ( -\TEDIT.APPLY.PAGELOOKS 149357 . 151284) (\TEDIT.CHANGE.PAGELOOKS 151286 . 155205) ( -\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 155207 . 156047)) (156050 161853 (\TEDIT.PAGEMENU.CREATE.HEADINGS -156060 . 158872) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 158874 . 160299) ( -\TEDIT.PAGEMENU.HEADINGS.STATEFN 160301 . 161851))))) + (FILEMAP (NIL (6008 17639 (TEDIT.ADD.MENUITEM 6018 . 8135) (TEDIT.DEFAULT.MENUFN 8137 . 14851) ( +TEDIT.REMOVE.MENUITEM 14853 . 15850) (\TEDIT.CREATEMENU 15852 . 16417) (\TEDIT.MENU.WHENHELDFN 16419 + . 17324) (\TEDIT.MENU.WHENSELECTEDFN 17326 . 17637)) (18453 64824 (DRAWMARGINSCALE 18463 . 21922) ( +MARGINBAR 21924 . 29049) (MARGINBAR.CREATE 29051 . 32470) (MB.MARGINBAR.BUTTONEVENTINFN 32472 . 40111) + (MB.MARGINBAR.SELFN.TABS 40113 . 45353) (MB.MARGINBAR.SELFN.TABS.KIND 45355 . 46290) ( +MARGINBAR.GETSTATEFN 46292 . 50170) (MARGINBAR.SETSTATEFN 50172 . 50382) (MARGINBAR.NEUTRALIZE 50384 + . 50797) (MARGINBAR.LOOKS 50799 . 53905) (MB.MARGINBAR.SIZEFN 53907 . 54510) (MB.MARGINBAR.DISPLAYFN +54512 . 57573) (MDESCALE 57575 . 58115) (MSCALE 58117 . 58447) (MB.MARGINBAR.SHOWTAB 58449 . 60772) ( +MB.MARGINBAR.TABTRACK 60774 . 62159) (MARGINBAR.INIT 62161 . 63554) (\TEDIT.PARALOOKS.TO.MARBAR 63556 + . 64822)) (65649 72555 (TEDIT.MENUSTREAM 65659 . 66659) (TEDITMENUP 66661 . 67630) (\TEDIT.MENU.START + 67632 . 71979) (\TEDIT.MENU.BUTTONEVENTFN 71981 . 72553)) (72874 80796 (\TEDIT.MENU.CREATE 72884 . +74695) (\TEDIT.MENU.PARSE 74697 . 78386) (\TEDIT.MENU.NEUTRALIZE 78388 . 80459) ( +\TEDITMENU.RECORD.UNFORMATTED 80461 . 80794)) (80862 101006 (\TEDIT.EXPANDEDMENU.CREATE 80872 . 86274) + (\TEDIT.EXPANDEDMENU.START 86276 . 87706) (\TEDIT.EXPANDEDMENU.FN 87708 . 90963) ( +\TEDIT.EXPANDEDMENU.ACTIONFN 90965 . 101004)) (101068 116733 (\TEDIT.PARAMENU.CREATE 101078 . 107099) +(\TEDIT.PARAMENU.START 107101 . 108033) (\TEDIT.APPLY.PARALOOKS 108035 . 109087) ( +\TEDIT.SHOW.PARALOOKS 109089 . 111980) (\TEDIT.PARAMENU.FILLIN 111982 . 116731)) (116938 143400 ( +\TEDIT.CHARMENU.CREATE 116948 . 119552) (\TEDIT.CHARMENU.START 119554 . 120651) (\TEDIT.CHARMENU.SPEC +120653 . 125336) (\TEDIT.CHARMENU.PARSE 125338 . 128506) (\TEDIT.CHARMENU.FILLIN 128508 . 133138) ( +\TEDIT.SHOW.CHARLOOKS 133140 . 136498) (\TEDIT.APPLY.CHARLOOKS 136500 . 137661) ( +\TEDIT.OFFSETTYPE.STATEFN 137663 . 139626) (\TEDIT.OTHER.STATECHANGEFN 139628 . 141273) ( +\TEDIT.OTHER.SELECTFN 141275 . 143398)) (143462 169992 (\TEDIT.PAGEMENU.CREATE 143472 . 150666) ( +\TEDIT.SHOW.PAGELOOKS 150668 . 152554) (\TEDIT.PAGEMENU.FILLIN 152556 . 154106) ( +\TEDIT.PAGEREGION.UNPARSE 154108 . 163298) (\TEDIT.APPLY.PAGELOOKS 163300 . 165227) ( +\TEDIT.CHANGE.PAGELOOKS 165229 . 169148) (\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 169150 . 169990)) (169993 +175796 (\TEDIT.PAGEMENU.CREATE.HEADINGS 170003 . 172815) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 172817 + . 174242) (\TEDIT.PAGEMENU.HEADINGS.STATEFN 174244 . 175794))))) STOP diff --git a/library/tedit/TEDIT-MENU.LCOM b/library/tedit/TEDIT-MENU.LCOM index b5d5821883b12090a68ddef530b43f67e880d4a3..d4ec57dc4d0fc9eb969bb04035b38f64b26e9e1f 100644 GIT binary patch delta 6871 zcma)B-E$k)b;k!qD~K(V7DdW*Djh*l1ZYYMyVwOlwu!j}7Q{;UB6dMYvfK$wKmsfV zq)AZzs5Iz!GUIXEnMB@L8P`n{J#?CfJkW&HnNB*zOw**J_N960wEZ92VWxR#Uef;V zy}RI&Vm;OaxcA(9&pr3t^YJ@Jzx`FD=GOx}(xRabt zN>K`hWzVdn&MS#|MSAeJzhg&UJ7J%>KN+Bq{pdTVUZZx0!r5v*Pu>l)v$J7p)Vs|F z9mOaSj)o#xBd@0`x@PH_gNqzlQV;&{;+K*VNlA51mF-RcMf+>_PuLr~$GHqY`p(qX zXue$0SBz5CoXLO>q?XkEJ4p~ZH7_N=re;ECYcg531_LQh_SmhE>uTi8r-9y^FsF-J*!po7T15asKsJ2 ziT%jzCvHD@@ArGAF+YE)qMN#vEmaEUCCcJOEd82QTD*d{AYZ`ezs;`uP4>et-kP3n zO_!%veak`*zKA@BE$pq$>Y`~GRu!fpDU_~O%o4lp9Mv?#GKx!rLihoI- zextn~JAZel24<^aaw4~q=h-Y3}BK0tYB3WYhx z9vbdaZOneO@RgoBz4Cdh4{iSZ;qEKPnPe;L?04-Uzvv6c*uc5u-opW3!G_Fr_I6JV zOyPi6o&>9Hu9Y#NwcV4R86l$em^f=wEQEp7PE4zm)Icf0M*ZDc!%(k)D_cAJ}6zrNnP15Q$c^mjJuokp{9feOve zHgcLox%y^fb$#Pql3+4fhzBJ@AOxxdkD$Qax8K<6w!7QiCgP|}%iHZP)R!cqv%0q3 zXwuvqRXewY80?6pW|ts+I#htu4wtH9*u&zYM)y< zIdNo2)NB9sl6Y;eq1lCNQtw%Ew&-SBCngs2i15qVytZ_S$_Sd5AW~Y_Gc#$;)DiVz zOkBfa-3*rqM1?E_PL|m)h>PG`CYfpuiKmJl%N3Z10XfdilDQL~Q-_a2Qu*<5zt1m{ z==iul_cIoV9^^jAiGXvO|M{DR{ct>fZp3){joq&rji=ve?|sZe&HJG6j}Q-7BG9(R zt~@#A*?8m0>^B+nn>-Nte>y&PjE`$$)8pgM6*=`K5!D_CTVs5DL+ro8BllqE7c9re z3GdBZzf|LnC#gec2B4CV{kcA*IP}HClJ|+6ybHs0^7>rL{+Fv0e%aQ3bh4LB5JLx= zMGE&>aZ1(HE5gOOQwp`hoFvuta&aJn%6t)dTgxMm$le$9zAs5JH&S>7qd8c(ke6|r zO_vGl9{v>~)7p8yvFm@+JU?8v?^Lpq2Sf-4dBP?iRTC0 zK-WV254XzkfIrtTCdLLY38*mfl>z%e;+~k~U-+QGn~hHIe;dff)6>p|(17J(nX;v# zC8U5{0F~)HGqyt6BAAyOq?kq2a(dC!Q8nN(5mJ=YGqX88&t?!77fU^sfnx;Hif$Qc z4bkJ?NRVCBx?a}L-}5SgQ8{~ufujkTL_+6v0auZ$9Vq9I;mN^;?=8fS@80KVWx+v8 z-yiTu(A%jCUw+7kJLaMJoy7yw%Hiqr2d14k;)I)TbC%o?$M%gTu9D+WOje|Ht_(>| zksz)?KR{nbx5I9OyseIB66QH$I>OTWnAPV3Cu-mk>HNu zFi&{l^k%c(>o&KjPDrynea?u)N4MAs>$j-eYEr|=ZYUO|7<^TvF6=^*-D-9kTYMGY z(On0xjm>rk8GAMyqErg5?XGCT$FX5+tG(U{GoufiIDd1s1qpC0c5ZdC^>&z9R2Z4R za~m^Ef?MmI?&Yoad(F$u?&>U)Yt_XCTVYaSAqpcQvwL)!ZwuM$Vy7!RK{9qe?jR@F z!LCp}?}|F#i#YT-_WVVRj=}!mg0{#VZ*dw9lyu+xpm#(=$BITi6zRVZ_=l^bB23!< zR!Dr=jgu67&OTjy-~W>RY4NB2hjy)`Mqf9M1;1}_v+6JBxcyxeR`_Y{%#~K{46iyq zs7?0!rMLWNWYQ~@QiYOmS`lA|*fpuB_QvvLAem%oC6Gwi+Va#TmU0$n8PZXKd&Cw1 z0r)f?WAJZ2P{UZHP{||0_J>>tM{pXF}Jt5HF=ndm(;8*?E?O!%x$2iIMHz!`@UumAl z(;^DW;NUxG@*RRJ*2;aUYX#BizoNB5Kcv$v`*`lI&t_ILds z+oN}{_%GYbcPIU)?bh8h{@>Ui+&%mHzdOn8(}DI+BlPB8Ywt7P&pot&PtZQ|&_-f{ z_5%+s;LtvFXde%>r(^c7@Ahur&s|wu3toNk#G;WCX!qJ@zio3(<73GeQHM1p06sv# zER4Ungzlj#sjf{~NO~w9kkfeU3kzWyC>)T|v_%t;Az}Z=+fREa*5ICLxEP!bzF0&E zG2nX&%A*YGXsw7j1@(Ff3@cf!VC1jER}x|ji%pS(a~1Y92qx)@0l=aFaG2GyUUA2$ zA4}ORVjRO96i3CJF6B%9O8@0|qrq4Hbky$~89GW@n4Bm$?9x55-@Lcf6IM2G%nZ93++Y&7~~D!Kw$lA)a+}`aFik_IZTR# z#41+*bGUJyU8rU+jedG-?E;xOz#-{ceXBdO)m&?$In|)Ic|VLX zsvc^QIWim~GhPnq2yVS0JKmg%9BOwtEDur-t1@(O`cNYcmBG@xqeyFTdM-Migs=Z~4$ZYw0EwzWSHehk09 zY+@pmAFUG)Y^_y$M|x#t)KKFAUKh`@E_zUdHO!(}L z{-1m@G+XQ36dEqqx&u0Kn%m0*bzR#94WVK#x}T{Kw^X#9G0 zu5S6DssbE|{Y^4V!)jQ>q@W5sn1#$B^+Cz6u>z3|S!nEE1 zSy9=e$(?(|Ra8cXcz7!&Gzc;;1)>ETAsHKPwY72BfwL6vgQ@Dy{<^b^oX-4W`7%1eNWBMFqO z3Kdds6koxz8?=n|P!u4@Pz7HUmddd0VGk5hg0MV|9ah~5Al zdj`zu6KB&Pi*m3svopD|9}?s3T%w)*J5LXi*-FGNvOeV4{0}=5OY>7tW}j?J^l7Ut z^eT2Oq=O_gVPqG}Jlr@!c%BzfR9O+rg1Yi`1gm6QHgf9;=I-hFyk#J<4h0)z;wi01p z?y981T``i+wpm0jh#_r5WfVwp*tbohTX@eZOUwFbn2x}&GP>%7s?LN~4RIq>mm<`v z719(`4UU*2hVJ=EP{o^%I@$R7Zb1m;7XufN5>e}O&uxnK;(LO}=dW+&y4cj^MeY*& z`|=P6?9GKvu7lMUy1C!jxrJA(m8n?wx0lGuI+({!+)LbVv9%>)+m|i2b$o2Q(Xf4r zv2Br!{k2ek^?GHfa6CD@bxT2yd%ZMz@7aZ@cDNWx^eLjq_TB9qPcgQFu?7eE3szV?z>dQUvXy(i9C=4W$cp;aysH zEqMWbhV0ykZ_tNP*PhAE%{c|L$vHD~{xf%e|1-ajiYH%-$Ilj|ti+>(iVUQIAgXFp z4eZIAhZQMkT&ijiR)s0U!QSrsx1-_y-T?MKjP{4S!^8cL%hmCt+Vc2Y?fm%1-OJ-& zD~m3G;X5dAY_(dzh1S;A$}o6&h~;HIo^2q5$*B1K%EIfVLZP@*z~Ak`EC07}{paM? zwHKvS1hCO*_qW>JIO#ROL|I->8gU;}9l`d-^G4F?f>E=nR^01>j%Y?(Jzu3|IFD5% zDK?g38RT&aGNfXusaOgs7LLY+X5(y)UlJ#^W*e-@BPC|h>ZKJMXsADllUAp**#i?A zX!he)+N^_d25OzwIvA|La_>s8&JK*Q?M+sEK|se=9J?5%808-`+&Zekw+!?}F>S;bBY=z~izl%9= zMCQFwp8_|680b*VS844i#&hM>YNnKW?TfTwD-p{s6 zyxr6pmg)>kCAf?Xxs24gj91C2PfjaG7Z=Z!;6KO*?oTPje&kK<5YhA_vZi(jgQb>r zvSpoYB{4G*F*Amk8A-r3wp7L}?Sf`_H1<&rQ{m^$V?)^dCE)4SK?P(piH}j+-(nB) zi-_y}MgmgVY_;#0Tux$TwmJoYZMNO(C(ZU_d=PvmvCPqT2{V6*Kwx9!T2?_9+Y5c; z&~oG(hs`|mhr{LUv2fTPQyW=|GXK7^3=hOI$yF5kmgdmr V-K)(;y)kzSz7fll&-edc_y-6(tsVdX delta 1628 zcmY*ZyKWOv5cOI}JRB$}0ucp+rAVZ3wD-Lmpx8KTV#TtpwIjqs0zxbii9i%6A_}$* z9brom-s~Ujy_)R8q4=0R+E=R$$GaB#+H$kMYMA1wh0ZiH>0FC7;KHeI1Alz)JwZ~(p)i0kw#=l&C*b_l=N$X&sYKpTXF|NSJVooMY!=T~}g7P_xbR0&i5(ZJG zr>*0Q3-!N11RuHI^%OnFjq8w**^%eQb@=owwal%Sxz$Qy$OOcY(ZrAuM6X8M%o$3D zpcxq&y;4%A@G@1biKP6>c)AUcA&E-j!0G1{ji9`C)E>tPNa>1dbVUg#uybCW;_yS1 z(KzY$@1yB+x3J97y@al&4G6SBiDfhlqxKf6#G$}QB@PW+sKH@58wd`~FdG!shAHc? wig^=E$eA^$W5PD5PRjBb$}&6<%LGSJs8ZTPQ4h~`<93X5V0rrG?w|Aj0r;n&V*mgE diff --git a/library/tedit/TEDIT-PAGE b/library/tedit/TEDIT-PAGE index 06aae89f5..3c9b26b82 100644 --- a/library/tedit/TEDIT-PAGE +++ b/library/tedit/TEDIT-PAGE @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Feb-2025 10:06:16" {WMEDLEY}TEDIT>TEDIT-PAGE.;208 133418 +(FILECREATED "22-Apr-2025 08:12:43" {WMEDLEY}tedit>TEDIT-PAGE.;220 134749 :EDIT-BY rmk - :CHANGES-TO (FNS TEDIT.FORMAT.HARDCOPY) + :CHANGES-TO (FNS TEDIT.FORMAT.HARDCOPY \TEDIT.HARDCOPY.PAGEHEADINGS) - :PREVIOUS-DATE "19-Feb-2025 13:33:12" {WMEDLEY}TEDIT>TEDIT-PAGE.;207) + :PREVIOUS-DATE "21-Apr-2025 22:42:22" {WMEDLEY}tedit>TEDIT-PAGE.;216) (PRETTYCOMPRINT TEDIT-PAGECOMS) @@ -19,7 +19,7 @@ (* ;; "Replaces CL:MULTIPLE-VALUE-SETQ, to avoid CL:VALUES") - (MACROS TEDIT.SETQS TEDIT.VALUES)) + (EXPORT (MACROS TEDIT.SETQS TEDIT.VALUES))) (INITRECORDS PAGEREGION) [COMS (* ;; "Page-numbering font specification/default. ") @@ -190,11 +190,10 @@ (EQ 'FIRST (FGETPLOOKS PARALOOKS FMTCOLUMN]) ) -(DECLARE%: EVAL@COMPILE +(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE (PUTPROPS TEDIT.SETQS MACRO - [ARGS `(LET (($$VALUES ,(CADR ARGS)) - ($$PRIMARY)) + [ARGS `(LET [($$VALUES ,(CADR ARGS] (DECLARE (LOCALVARS $$VALUES)) (PROG1 (CAR $$VALUES) ,@[FOR V IN (CAR ARGS) collect (COND @@ -203,6 +202,9 @@ (PUTPROPS TEDIT.VALUES MACRO [ARGS `(LIST ,@ARGS]) ) + +(* "END EXPORTED DEFINITIONS") + ) (/DECLAREDATATYPE 'PAGEREGION '(POINTER POINTER POINTER FULLXPOINTER POINTER POINTER) @@ -630,7 +632,8 @@ (TEDIT.FORMAT.HARDCOPY [LAMBDA (TEXTSTREAM FILE DONTSEND BREAKPAGETITLE SERVER PRINTOPTIONS IMAGETYPE FIRSTPG# STARTPG - ENDPG QUIET) (* ; "Edited 23-Feb-2025 09:59 by rmk") + ENDPG QUIET) (* ; "Edited 22-Apr-2025 08:12 by rmk") + (* ; "Edited 23-Feb-2025 09:59 by rmk") (* ; "Edited 30-Aug-2024 15:45 by rmk") (* ; "Edited 10-Jul-2024 23:34 by rmk") (* ; "Edited 29-Jun-2024 10:32 by rmk") @@ -658,7 +661,7 @@ `(PROGN (CLOSEF? OLDVALUE]) TEXTSTREAM else (ERROR TEXTSTREAM "is not a Tedit stream"))) - (PROG ((TEXTOBJ (FGETTSTR TEXTSTREAM TEXTOBJ)) + (PROG ((TEXTOBJ (FTEXTOBJ TEXTSTREAM)) [FORMATTINGSTATE (create PAGEFORMATTINGSTATE PAGE# _ (FIXP FIRSTPG#) FIRSTPAGE _ T @@ -730,7 +733,7 @@ do (* ;; "Format pages according to the existing layout:") - (\TEDIT.FORMATBOX TEXTOBJ PRSTREAM (GETPFS FORMATTINGSTATE CHNO) + (\TEDIT.FORMATBOX TEXTSTREAM PRSTREAM (GETPFS FORMATTINGSTATE CHNO) PAGEREGION FORMATTINGSTATE IMAGETYPE) (CL:WHEN (EQ (GETPFS FORMATTINGSTATE STATE) :NEW-PAGE-LAYOUT) @@ -778,7 +781,8 @@ (DEFINEQ (\TEDIT.FORMATBOX - [LAMBDA (TEXTOBJ PRSTREAM STARTINGCHNO PAGEREGION FORMATTINGSTATE) + [LAMBDA (TSTREAM PRSTREAM STARTINGCHNO PAGEREGION FORMATTINGSTATE) + (* ; "Edited 21-Apr-2025 18:50 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") (* ; "Edited 17-Nov-2024 19:10 by rmk") (* ; "Edited 21-Oct-2024 00:33 by rmk") @@ -790,151 +794,155 @@ (* ; "Edited 15-Feb-2023 23:47 by rmk") (* ; "Edited 30-May-91 12:51 by jds") - (* ;; "Grab text from the TEXTOBJ, starting with STARTINGCHNO, and use it to fill REGION on a page. Return a list of line descriptors which, taken together, fill the region.") + (* ;; "Grab text from the TSTREAM, starting with STARTINGCHNO, and use it to fill REGION on a page. Return a list of line descriptors which, taken together, fill the region.") (* ;; "This updates the CHNO field of the PAGEFORMATTINGSTATE") - (LET ((REGION (fetch (PAGEREGION REGIONSPEC) of PAGEREGION)) - CHNO LINES LAST-CHNO SUBREGIONSPEC (TEXTLEN (FGETTOBJ TEXTOBJ TEXTLEN))) - (SELECTQ (fetch REGIONFILLMETHOD of PAGEREGION) - (TEXT (* ; + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (REGION (fetch (PAGEREGION REGIONSPEC) of PAGEREGION)) + (TEXTLEN (TEXTLEN TEXTOBJ)) + CHNO LINES LAST-CHNO SUBREGIONSPEC) + (SELECTQ (fetch REGIONFILLMETHOD of PAGEREGION) + (TEXT (* ;  "A normal text region. Fill it with text formatted the usual way.") - (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) + (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) (* ;  "Only format if we're not looking for something else.") - (TEDIT.SETQS (LINES NIL LAST-CHNO) - (\TEDIT.FORMATTEXTBOX TEXTOBJ PRSTREAM STARTINGCHNO PAGEREGION - FORMATTINGSTATE)))) - (FOLIO (* ; + (TEDIT.SETQS (LINES NIL LAST-CHNO) + (\TEDIT.FORMATTEXTBOX TSTREAM PRSTREAM STARTINGCHNO PAGEREGION + FORMATTINGSTATE)))) + (FOLIO (* ;  "A Page Number. Fill it in according to the instructions") - (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) + (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) (* ;  "Only format if we're not looking for something else.") - (SETQ LINES (\TEDIT.FORMATFOLIO TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION)))) - (HEADING (* ; + (SETQ LINES (\TEDIT.FORMATFOLIO TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) + ))) + (HEADING (* ;  "A Page heading. Fill it in from a text source we saved for the occasion.") - (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) + (CL:WHEN (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) (* ;  "Only format if we're not looking for something else.") - (SETQ LINES (\TEDIT.FORMATHEADING TEXTOBJ PRSTREAM FORMATTINGSTATE - PAGEREGION)))) - (PAGE - (* ;; "This box is really a PAGE FRAME, no lines here. Fill it in and do whatever other processing is needful for end of page.") + (SETQ LINES (\TEDIT.FORMATHEADING TEXTOBJ PRSTREAM FORMATTINGSTATE + PAGEREGION)))) + (PAGE + (* ;; "This box is really a PAGE FRAME, no lines here. Fill it in and do whatever other processing is needful for end of page.") - (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) + (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) (* ;  "So that if this is the box he's looking for, we'll spot it and stop searching") - (\TEDIT.FORMATPAGE TEXTOBJ PRSTREAM STARTINGCHNO PAGEREGION FORMATTINGSTATE)) - ((RECURSIVE SEQUENCE ALTERNATE SELECTION REPEAT) + (\TEDIT.FORMATPAGE TSTREAM PRSTREAM STARTINGCHNO PAGEREGION FORMATTINGSTATE)) + ((RECURSIVE SEQUENCE ALTERNATE SELECTION REPEAT) (* ;  "This box is really a list of boxes. Fill them.") - (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) + (\TEDIT.FORMAT.FOUNDBOX? PAGEREGION FORMATTINGSTATE) (* ;  "So that if this is the box he's looking for, we'll spot it and stop searching") - (SELECTQ (fetch REGIONFILLMETHOD of PAGEREGION) - ((SEQUENCE RECURSIVE) (* ; + (SELECTQ (fetch REGIONFILLMETHOD of PAGEREGION) + ((SEQUENCE RECURSIVE) (* ;  "Just run thru filling in the sub-boxes in order.") - (bind SUBREGIONSPEC for SUBREGION in (fetch (PAGEREGION REGIONSUBBOXES) - of PAGEREGION) - while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) - TEXTLEN) - (OR (NOT (GETPFS FORMATTINGSTATE PAGE#)) - (NOT (GETPFS FORMATTINGSTATE MAXPAGE#)) - (ILEQ (GETPFS FORMATTINGSTATE PAGE#) - (GETPFS FORMATTINGSTATE MAXPAGE#))) - (NEQ (GETPFS FORMATTINGSTATE STATE) - :NEW-PAGE-LAYOUT)) - do [SETQ SUBREGIONSPEC (create REGION - using (fetch REGIONSPEC of SUBREGION) - LEFT _ - (IPLUS (fetch (REGION LEFT) - of (fetch REGIONSPEC - of SUBREGION)) - (fetch (REGION LEFT) - of REGION)) - BOTTOM _ - (IPLUS (fetch (REGION BOTTOM) - of (fetch REGIONSPEC - of SUBREGION)) - (fetch (REGION BOTTOM) - of REGION] - (\TEDIT.FORMATBOX TEXTOBJ PRSTREAM (GETPFS FORMATTINGSTATE CHNO) - (create PAGEREGION using SUBREGION REGIONSPEC _ SUBREGIONSPEC - ) - FORMATTINGSTATE))) - (ALTERNATE (* ; + (bind SUBREGIONSPEC for SUBREGION in (fetch (PAGEREGION REGIONSUBBOXES) + of PAGEREGION) + while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) + TEXTLEN) + (OR (NOT (GETPFS FORMATTINGSTATE PAGE#)) + (NOT (GETPFS FORMATTINGSTATE MAXPAGE#)) + (ILEQ (GETPFS FORMATTINGSTATE PAGE#) + (GETPFS FORMATTINGSTATE MAXPAGE#))) + (NEQ (GETPFS FORMATTINGSTATE STATE) + :NEW-PAGE-LAYOUT)) + do [SETQ SUBREGIONSPEC (create REGION + using (fetch REGIONSPEC of SUBREGION) + LEFT _ + (IPLUS (fetch (REGION LEFT) + of (fetch REGIONSPEC + of SUBREGION)) + (fetch (REGION LEFT) + of REGION)) + BOTTOM _ + (IPLUS (fetch (REGION BOTTOM) + of (fetch REGIONSPEC + of SUBREGION)) + (fetch (REGION BOTTOM) + of REGION] + (\TEDIT.FORMATBOX TSTREAM PRSTREAM (GETPFS FORMATTINGSTATE CHNO) + (create PAGEREGION using SUBREGION REGIONSPEC _ + SUBREGIONSPEC) + FORMATTINGSTATE))) + (ALTERNATE (* ;  "Run through the sub-boxes repeatedly in sequence.") - (while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) - TEXTLEN) - (NEQ :NEW-PAGE-LAYOUT (GETPFS FORMATTINGSTATE STATE))) - do (bind SUBREGIONSPEC for SUBREGION - in (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION) - while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) - TEXTLEN) - (NEQ (GETPFS FORMATTINGSTATE STATE) - :NEW-PAGE-LAYOUT)) - do [SETQ SUBREGIONSPEC - (create REGION - using (fetch REGIONSPEC of SUBREGION) - LEFT _ (IPLUS (fetch (REGION LEFT) - of (fetch REGIONSPEC - of SUBREGION)) - (fetch (REGION LEFT) - of REGION)) - BOTTOM _ (IPLUS (fetch (REGION BOTTOM) - of (fetch REGIONSPEC - of SUBREGION)) - (fetch (REGION BOTTOM) - of REGION] - (\TEDIT.FORMATBOX TEXTOBJ PRSTREAM (GETPFS + (while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) + TEXTLEN) + (NEQ :NEW-PAGE-LAYOUT (GETPFS FORMATTINGSTATE STATE))) + do (bind SUBREGIONSPEC for SUBREGION + in (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION) + while (AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) + TEXTLEN) + (NEQ (GETPFS FORMATTINGSTATE STATE) + :NEW-PAGE-LAYOUT)) + do [SETQ SUBREGIONSPEC + (create REGION + using (fetch REGIONSPEC of SUBREGION) + LEFT _ (IPLUS (fetch (REGION LEFT) + of (fetch REGIONSPEC + of SUBREGION)) + (fetch (REGION LEFT) + of REGION)) + BOTTOM _ (IPLUS (fetch (REGION BOTTOM) + of (fetch REGIONSPEC + of SUBREGION)) + (fetch (REGION BOTTOM) + of REGION] + (\TEDIT.FORMATBOX TSTREAM PRSTREAM (GETPFS FORMATTINGSTATE - CHNO) - (create PAGEREGION using SUBREGION REGIONSPEC _ - SUBREGIONSPEC) - FORMATTINGSTATE)))) - (SELECTION (* ; + CHNO) + (create PAGEREGION using SUBREGION REGIONSPEC _ + SUBREGIONSPEC) + FORMATTINGSTATE)))) + (SELECTION (* ;  "Do one or another box, depending on some criterion.")) - (\TEDIT.THELP)) (* ; - "For now, draw a box around it, too.") - ) - NIL) - (for LINE LTEXTOBJ in LINES when LINE do (* ; + (\TEDIT.THELP))) + NIL) + (for LINE LTEXTSTREAM in LINES when LINE do (* ;  "Run thru the lines displaying them all.") - (BLOCK) - (SETQ LTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) - of (FGETLD LINE LTEXTSTREAM))) - (CL:WHEN (OR (NOT (GETPFS FORMATTINGSTATE MINPAGE#) - ) - (IGEQ (GETPFS FORMATTINGSTATE PAGE#) - (GETPFS FORMATTINGSTATE MINPAGE# - ))) + (BLOCK) + (CL:WHEN (OR (NOT (GETPFS FORMATTINGSTATE + MINPAGE#)) + (IGEQ (GETPFS FORMATTINGSTATE + PAGE#) + (GETPFS FORMATTINGSTATE + MINPAGE#))) (* ;  "We're beyond the min page number -- go ahead and print the line") - (\TEDIT.HARDCOPY.DISPLAYLINE - LTEXTOBJ LINE (SCALEREGION (DSPSCALE NIL - PRSTREAM) - REGION) - PRSTREAM FORMATTINGSTATE)) - (CL:WHEN (EQ TEXTOBJ LTEXTOBJ) - - (* ;; + (SETQ LTEXTSTREAM (FGETLD LINE LTEXTSTREAM) + ) + (\TEDIT.HARDCOPY.DISPLAYLINE + (FGETLD LINE LTEXTSTREAM) + LINE + (SCALEREGION (DSPSCALE NIL PRSTREAM) + REGION) + PRSTREAM FORMATTINGSTATE)) + (CL:WHEN (EQ TSTREAM LTEXTSTREAM) + + (* ;;  "This line refers back to the main text, so update the current-char pointer.") - (* ;; + (* ;;  "[NB that footnotes could cause the count to be non-monotonic; hence the IMAX.]") - (SETQ CHNO (IMAX (OR CHNO 0) - (FGETLD LINE LCHARLIM)))) - (push (GETPFS FORMATTINGSTATE PAGELINECACHE) - LINE) - (FSETLD LINE LTEXTSTREAM NIL)) - (COND - (LAST-CHNO (* ; + (SETQ CHNO (IMAX (OR CHNO 0) + (FGETLD LINE LCHARLIM)))) + (push (GETPFS FORMATTINGSTATE PAGELINECACHE) + LINE) + (FSETLD LINE LTEXTSTREAM NIL)) + (if LAST-CHNO + then (* ;  "We got a definite last chno from FORMATTEXTBOX.") - (SETPFS FORMATTINGSTATE CHNO LAST-CHNO)) - (CHNO (* ; + (SETPFS FORMATTINGSTATE CHNO LAST-CHNO) + elseif CHNO + then (* ;  "Otherwise, use the new char no if we computed one.") - (SETPFS FORMATTINGSTATE CHNO CHNO]) + (SETPFS FORMATTINGSTATE CHNO CHNO]) (\TEDIT.FORMATHEADING [LAMBDA (TEXTOBJ PRSTREAM FORMATTINGSTATE PAGEREGION) (* ; "Edited 9-Jan-2025 22:27 by rmk") @@ -1005,7 +1013,8 @@ LINE))]) (\TEDIT.FORMATPAGE - [LAMBDA (TEXTOBJ PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 19-Feb-2025 13:32 by rmk") + [LAMBDA (TSTREAM PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 21-Apr-2025 22:41 by rmk") + (* ; "Edited 19-Feb-2025 13:32 by rmk") (* ; "Edited 8-Feb-2025 21:13 by rmk") (* ; "Edited 11-Dec-2024 22:39 by rmk") (* ; "Edited 17-Mar-2024 00:24 by rmk") @@ -1034,110 +1043,112 @@ (* ;; "Only do real page formatting work if we're not trying to get ourselves to an equivalent page frame spec (having switched page layouts in mid-document).") - [PROG ((PAGE# (GETPFS FORMATTINGSTATE PAGE#)) - (PAGEPROPS (fetch (PAGEREGION REGIONLOCALINFO) of PAGEREGION)) - (REGION (\TEDIT.SCALEREGION (DSPSCALE NIL PRSTREAM) - (fetch (PAGEREGION REGIONSPEC) of PAGEREGION))) - (END-OF-PAGE-FN (GETTEXTPROP TEXTOBJ 'END-OF-PAGE-FN)) - (PRE-EXISTING-FONT (DSPFONT NIL PRSTREAM)) - (TEXTLEN (TEXTLEN TEXTOBJ)) - END-OF-PAGE-MARKER STARTING-FILEPTR PC NEWPARALOOKS) + [PROG* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (PAGE# (GETPFS FORMATTINGSTATE PAGE#)) + (PAGEPROPS (fetch (PAGEREGION REGIONLOCALINFO) of PAGEREGION)) + (REGION (\TEDIT.SCALEREGION (DSPSCALE NIL PRSTREAM) + (fetch (PAGEREGION REGIONSPEC) of PAGEREGION))) + (END-OF-PAGE-FN (GETTEXTPROP TEXTOBJ 'END-OF-PAGE-FN)) + (PRE-EXISTING-FONT (DSPFONT NIL PRSTREAM)) + (TEXTLEN (TEXTLEN TEXTOBJ)) + END-OF-PAGE-MARKER STARTING-FILEPTR PC NEWPARALOOKS) (* ;; "For real page independence, we need to reset the font to where it was as of the beginning of the page before calling DSPNEWPAGE. This avoids font creation in a page prolog, which might get missed otherwise.") (* ;  "Print in the usual region on the page") - (CL:UNLESS (ILEQ CHNO TEXTLEN) - (RETURN)) - (SETQ PC (\TEDIT.ALIGNEDPIECE CHNO TEXTOBJ)) - (SETQ NEWPARALOOKS (\TEDIT.APPLY.PARASTYLES (PPARALOOKS PC) - PC TEXTOBJ)) (* ; + (CL:UNLESS (ILEQ CHNO TEXTLEN) + (RETURN)) + (SETQ PC (\TEDIT.ALIGNEDPIECE CHNO TEXTOBJ)) + (SETQ NEWPARALOOKS (\TEDIT.APPLY.PARASTYLES (PPARALOOKS PC) + PC TEXTOBJ)) (* ;  "RMK: Why both 'NEWPAGELAYOUT and :NEW-PAGE-LAYOUT ?") - (CL:WHEN (EQ 'NEWPAGELAYOUT (GETPLOOKS NEWPARALOOKS FMTPARATYPE)) + (CL:WHEN (EQ 'NEWPAGELAYOUT (GETPLOOKS NEWPARALOOKS FMTPARATYPE)) - (* ;; "The first paragra ph on this page starts a new page layout.") + (* ;; "The first paragra ph on this page starts a new page layout.") - (SETPFS FORMATTINGSTATE STATE :NEW-PAGE-LAYOUT) + (SETPFS FORMATTINGSTATE STATE :NEW-PAGE-LAYOUT) - (* ;; "The first character of the paragraph after the one containing PC:") + (* ;; "The first character of the paragraph after the one containing PC:") - [SETPFS FORMATTINGSTATE CHNO (ADD1 (CAR (\TEDIT.PARA.LAST TEXTOBJ PC] - [SETPFS FORMATTINGSTATE NEWPAGELAYOUT (\TEDIT.PARSE.PAGEFRAMES (LISTGET - (GETPLOOKS + [SETPFS FORMATTINGSTATE CHNO (ADD1 (CAR (\TEDIT.PARA.LAST TEXTOBJ PC] + [SETPFS FORMATTINGSTATE NEWPAGELAYOUT (\TEDIT.PARSE.PAGEFRAMES (LISTGET + (GETPLOOKS NEWPARALOOKS - FMTUSERINFO) - 'NEWPAGELAYOUT] - (RETURN)) + FMTUSERINFO + ) + 'NEWPAGELAYOUT] + (RETURN)) (* ;; "") - (CL:UNLESS PAGE# + (CL:UNLESS PAGE# - (* ;; "If this page template specifies a starting page number, use it.") + (* ;; "If this page template specifies a starting page number, use it.") - (SETQ PAGE# (OR (LISTGET PAGEPROPS 'STARTINGPAGE#) - 1)) - (SETPFS FORMATTINGSTATE PAGE# PAGE#)) - (CL:WHEN (LISTGET PAGEPROPS 'LANDSCAPE?) (* ; "This is a landscape page.") - (STREAMPROP PRSTREAM 'PRINTERMODE 'LANDSCAPE) + (SETQ PAGE# (OR (LISTGET PAGEPROPS 'STARTINGPAGE#) + 1)) + (SETPFS FORMATTINGSTATE PAGE# PAGE#)) + (CL:WHEN (LISTGET PAGEPROPS 'LANDSCAPE?) (* ; "This is a landscape page.") + (STREAMPROP PRSTREAM 'PRINTERMODE 'LANDSCAPE) (* ; "Put the info. into stream ") - (DSPPUSHSTATE PRSTREAM) - (DSPROTATE 90 PRSTREAM) - (DSPTRANSLATE 0 (IMINUS (ffetch (REGION HEIGHT) of REGION)) - PRSTREAM)) - (DSPCLIPPINGREGION REGION PRSTREAM) (* ; "Clip to the whole sheet.") - (DSPRIGHTMARGIN (fetch (REGION WIDTH) of REGION) - PRSTREAM) + (DSPPUSHSTATE PRSTREAM) + (DSPROTATE 90 PRSTREAM) + (DSPTRANSLATE 0 (IMINUS (ffetch (REGION HEIGHT) of REGION)) + PRSTREAM)) + (DSPCLIPPINGREGION REGION PRSTREAM) (* ; "Clip to the whole sheet.") + (DSPRIGHTMARGIN (fetch (REGION WIDTH) of REGION) + PRSTREAM) (* ;; "Go thru any leading page heading paras on the page, collecting copies of those pieces in the FORMATTINGSTATE. The value is the first CHNO of the start of the first non-heading piece.") - (SETQ CHNO (\TEDIT.HARDCOPY.PAGEHEADINGS TEXTOBJ CHNO FORMATTINGSTATE)) + (SETQ CHNO (\TEDIT.HARDCOPY.PAGEHEADINGS TSTREAM CHNO FORMATTINGSTATE PAGEREGION)) (* ;; "") (* ;; "We now fill up the next complete page. Afterwards, we either continue to the next page (DPSNEWPAGE) or finish up. TEDIT.FORMATBOX is responsible for setting up NEWPAGEBEFORFE and NEWPAGEAFTER") - (SETPFS FORMATTINGSTATE CHNO CHNO) - (for SUBREGION in (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION) - while (ILEQ (GETPFS FORMATTINGSTATE CHNO) - TEXTLEN) do - (* ;; + (SETPFS FORMATTINGSTATE CHNO CHNO) + (for SUBREGION in (fetch (PAGEREGION REGIONSUBBOXES) of PAGEREGION) + while (ILEQ (GETPFS FORMATTINGSTATE CHNO) + TEXTLEN) do + (* ;;  "Now format the subregions of the page. The CHNO field may be updated by each call.") - (\TEDIT.FORMATBOX TEXTOBJ PRSTREAM (GETPFS FORMATTINGSTATE - CHNO) - SUBREGION FORMATTINGSTATE)) + (\TEDIT.FORMATBOX TSTREAM PRSTREAM (GETPFS FORMATTINGSTATE + CHNO) + SUBREGION FORMATTINGSTATE)) (* ;; "") - (DSPFONT PRE-EXISTING-FONT PRSTREAM) - (CL:WHEN (LISTGET PAGEPROPS 'LANDSCAPE?) (* ; "This is a landscape page.") - (STREAMPROP PRSTREAM 'PRINTERMODE NIL) - (DSPTRANSLATE 0 (ffetch (REGION HEIGHT) of REGION) - PRSTREAM) - (DSPROTATE 0 PRSTREAM) - (DSPPOPSTATE PRSTREAM)) - [COND - ([AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) - TEXTLEN) - [NOT (AND END-OF-PAGE-FN (EQ 'DON'T (SETQ END-OF-PAGE-MARKER - (APPLY* END-OF-PAGE-FN TEXTOBJ - FORMATTINGSTATE] - [NOT (AND (GETPFS FORMATTINGSTATE MINPAGE#) - (ILESSP PAGE# (GETPFS FORMATTINGSTATE MINPAGE#] - (NOT (AND (GETPFS FORMATTINGSTATE MAXPAGE#) - (IEQ PAGE# (GETPFS FORMATTINGSTATE MAXPAGE#] + (DSPFONT PRE-EXISTING-FONT PRSTREAM) + (CL:WHEN (LISTGET PAGEPROPS 'LANDSCAPE?) (* ; "This is a landscape page.") + (STREAMPROP PRSTREAM 'PRINTERMODE NIL) + (DSPTRANSLATE 0 (ffetch (REGION HEIGHT) of REGION) + PRSTREAM) + (DSPROTATE 0 PRSTREAM) + (DSPPOPSTATE PRSTREAM)) + [COND + ([AND (ILEQ (GETPFS FORMATTINGSTATE CHNO) + TEXTLEN) + [NOT (AND END-OF-PAGE-FN (EQ 'DON'T (SETQ END-OF-PAGE-MARKER + (APPLY* END-OF-PAGE-FN TEXTOBJ + FORMATTINGSTATE] + [NOT (AND (GETPFS FORMATTINGSTATE MINPAGE#) + (ILESSP PAGE# (GETPFS FORMATTINGSTATE MINPAGE#] + (NOT (AND (GETPFS FORMATTINGSTATE MAXPAGE#) + (IEQ PAGE# (GETPFS FORMATTINGSTATE MAXPAGE#] (* ; "There is more to print....") (* ; "Force the new page") - (DSPNEWPAGE PRSTREAM)) - ((OR (AND (GETPFS FORMATTINGSTATE MAXPAGE#) - (IGEQ PAGE# (GETPFS FORMATTINGSTATE MAXPAGE#))) - (EQ END-OF-PAGE-MARKER 'DON'T)) (* ; + (DSPNEWPAGE PRSTREAM)) + ((OR (AND (GETPFS FORMATTINGSTATE MAXPAGE#) + (IGEQ PAGE# (GETPFS FORMATTINGSTATE MAXPAGE#))) + (EQ END-OF-PAGE-MARKER 'DON'T)) (* ;  "We've run past the last page to be formatted. or were told to stop. .") - (SETPFS FORMATTINGSTATE CHNO (ADD1 TEXTLEN] - (add (GETPFS FORMATTINGSTATE PAGE#) - 1) - (SETPFS FORMATTINGSTATE FIRSTPAGE NIL) - (SETPFS FORMATTINGSTATE PAGE#TEXT (pop (GETPFS FORMATTINGSTATE PAGE#GENERATOR]) + (SETPFS FORMATTINGSTATE CHNO (ADD1 TEXTLEN] + (add (GETPFS FORMATTINGSTATE PAGE#) + 1) + (SETPFS FORMATTINGSTATE FIRSTPAGE NIL) + (SETPFS FORMATTINGSTATE PAGE#TEXT (pop (GETPFS FORMATTINGSTATE PAGE#GENERATOR]) (* ;; "Some things happen regardless of whether we're searching or not: Need to count pages we pass over to find an equivalent page in the new layout:") @@ -1145,7 +1156,8 @@ 1]) (\TEDIT.FORMATTEXTBOX - [LAMBDA (TEXTOBJ PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 19-Feb-2025 13:32 by rmk") + [LAMBDA (TSTREAM PRSTREAM CHNO PAGEREGION FORMATTINGSTATE) (* ; "Edited 21-Apr-2025 14:05 by rmk") + (* ; "Edited 19-Feb-2025 13:32 by rmk") (* ; "Edited 8-Feb-2025 23:39 by rmk") (* ; "Edited 11-Dec-2024 22:37 by rmk") (* ; "Edited 24-Nov-2024 11:46 by rmk") @@ -1173,7 +1185,8 @@ (* ;; "Only format text if we're really formatting.") - (LET* ((REGION (SCALEREGION (DSPSCALE NIL PRSTREAM) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (REGION (SCALEREGION (DSPSCALE NIL PRSTREAM) (ffetch (PAGEREGION REGIONSPEC) of PAGEREGION))) (COLUMNBOTTOM (fetch (REGION BOTTOM) of REGION)) (RTOP (fetch (REGION TOP) of REGION)) @@ -1216,8 +1229,8 @@ (SETQ LINE (pop (GETPFS FORMATTINGSTATE PAGELINECACHE))) (* ;  "Format the line, noting any form-feeds") - (SETQ LINE (\TEDIT.FORMATLINE (FGETTOBJ TEXTOBJ STREAMHINT) - CHNO LINE REGION PRSTREAM FORMATTINGSTATE)) + (SETQ LINE (\TEDIT.FORMATLINE TSTREAM CHNO LINE REGION PRSTREAM + FORMATTINGSTATE)) (SETQ FORCENEXTPAGE (AND (EQ (CHARCODE FORM) (FGETLD LINE FORCED-END)) 'USERBREAK)) @@ -1238,7 +1251,7 @@ (CL:WHEN FORCENEXTPAGE (* ;  "HELP in original code. SHOULDNT ?") (\TEDIT.THELP)) - (SETQ FOOTNOTELINES (\TEDIT.FORMAT.FOOTNOTE TEXTOBJ PRSTREAM LINE REGION + (SETQ FOOTNOTELINES (\TEDIT.FORMAT.FOOTNOTE TSTREAM PRSTREAM LINE REGION FORMATTINGSTATE)) (SETQ CHNO (FGETLD (CAR (FLAST FOOTNOTELINES)) LCHARLIM)) (* ; "Grab the lines of this footnote") @@ -1517,7 +1530,8 @@ (DEFINEQ (\TEDIT.HARDCOPY.PAGEHEADINGS - [LAMBDA (TEXTOBJ CHNO FORMATTINGSTATE) (* ; "Edited 19-Feb-2025 13:32 by rmk") + [LAMBDA (TSTREAM CHNO FORMATTINGSTATE PAGEREGION) (* ; "Edited 22-Apr-2025 08:11 by rmk") + (* ; "Edited 19-Feb-2025 13:32 by rmk") (* ; "Edited 12-Jan-2025 17:31 by rmk") (* ; "Edited 10-Jan-2025 15:42 by rmk") (* ; "Edited 21-Oct-2024 00:33 by rmk") @@ -1532,7 +1546,8 @@ (CL:UNLESS FORMATTINGSTATE (* ;  "If it isn't there, we would loose the headings") (\TEDIT.THELP "NIL FORMATTINGSTATE")) - (bind HEADINGSUBTYPE (PC _ (\TEDIT.CHTOPC CHNO TEXTOBJ)) + (bind HEADINGSUBTYPE PC (TEXTOBJ _ (FTEXTOBJ TSTREAM)) first (SETQ PC (\TEDIT.CHTOPC CHNO TEXTOBJ + )) while (AND PC (EQ 'PAGEHEADING (GETPLOOKS (PPARALOOKS PC) FMTPARATYPE))) do (SETQ HEADINGSUBTYPE (GETPLOOKS (PPARALOOKS PC) @@ -1548,7 +1563,8 @@ (add CHNO (PLEN P)) finally (LISTPUT (fetch PAGEHEADINGS of FORMATTINGSTATE) HEADINGSUBTYPE (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES START - CHNO TEXTOBJ))) + CHNO TEXTOBJ) + NIL TSTREAM)) (* ;;  "Set PC to continue looking for the next headingtype.") @@ -1567,7 +1583,7 @@ [SETQ FOLIOSTREAM (OPENTEXTSTREAM NIL NIL `(PARALOOKS ,(LISTGET FOLIOINFO 'PARALOOKS) LOOKS ,(LISTGET FOLIOINFO 'CHARLOOKS] - (SETQ FOLIOTEXTOBJ (GETTSTR FOLIOSTREAM TEXTOBJ)) + (SETQ FOLIOTEXTOBJ (FTEXTOBJ FOLIOSTREAM)) (CL:WHEN (CADR INFOLIST) (TEDIT.INSERT FOLIOSTREAM (MKSTRING (CADR INFOLIST)))) (TEDIT.INSERT.OBJECT (TEDIT.PAGENO.CREATE (CAR INFOLIST)) @@ -1577,7 +1593,8 @@ (LISTPUT (fetch PAGEHEADINGS of FORMATTINGSTATE) '\TEDIT.PAGENO (\TEDIT.SELPIECES.COPY (\TEDIT.SELPIECES 1 (TEXTLEN FOLIOTEXTOBJ) - FOLIOTEXTOBJ))))] + (FTEXTOBJ TSTREAM)) + NIL TSTREAM)))] CHNO]) ) @@ -2044,7 +2061,8 @@ (DEFINEQ (\TEDIT.FORMAT.FOOTNOTE - [LAMBDA (TEXTOBJ PRSTREAM LINE REGION FORMATTINGSTATE) (* ; "Edited 20-Nov-2024 12:37 by rmk") + [LAMBDA (TSTREAM PRSTREAM LINE REGION FORMATTINGSTATE) (* ; "Edited 21-Apr-2025 14:03 by rmk") + (* ; "Edited 20-Nov-2024 12:37 by rmk") (* ; "Edited 17-Nov-2024 19:22 by rmk") (* ; "Edited 13-Jun-2024 17:13 by rmk") (* ; "Edited 15-Mar-2024 19:24 by rmk") @@ -2054,21 +2072,19 @@ (* ; "Edited 7-Mar-2023 13:11 by rmk") (* ; "Edited 30-May-91 12:52 by jds") - (* ;; "Grab text from the TEXTOBJ, starting with CHNO, and use it to fill REGION on a page. Return a list of line descriptors which, taken together, fill the region.") + (* ;; "Grab text from the TSTREAM, starting with CHNO, and use it to fill REGION on a page. Return a list of line descriptors which, taken together, fill the region.") (BLOCK) (* ;  "Footnotes aren't so long, but why not?") (bind PREVLINE (LEFT _ (fetch (REGION LEFT) of REGION)) - (TEXTLEN _ (TEXTLEN TEXTOBJ)) + (TEXTLEN _ (TEXTLEN (FTEXTOBJ TSTREAM))) (CHNO _ (GETLD LINE LCHAR1)) while (ILEQ CHNO TEXTLEN) until (AND PREVLINE (GETLD PREVLINE LSTLN)) collect (* ;; "Grab a line descriptor from the formatting list, or create a new one.") - (SETQ LINE (\TEDIT.FORMATLINE (FGETTOBJ TEXTOBJ STREAMHINT) - CHNO - (GETPFS FORMATTINGSTATE PAGELINECACHE) + (SETQ LINE (\TEDIT.FORMATLINE TSTREAM CHNO (GETPFS FORMATTINGSTATE PAGELINECACHE) REGION PRSTREAM FORMATTINGSTATE)) (* ;  "Format the line, noting any form-feeds") @@ -2084,18 +2100,18 @@ (RETURN (DREMOVE NIL $$VAL]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12098 15710 (\TEDIT.PARSE.PAGEFRAMES 12108 . 13887) (\TEDIT.PUT.PAGEFRAMES 13889 . -14713) (\TEDIT.UNPARSE.PAGEFRAMES 14715 . 15708)) (15773 37671 (TEDIT.SINGLE.PAGEFORMAT 15783 . 26657) - (TEDIT.COMPOUND.PAGEFORMAT 26659 . 27638) (TEDIT.PAGEFORMAT 27640 . 34929) (TEDIT.GET.PAGEFORMAT -34931 . 37669)) (37958 48639 (TEDIT.FORMAT.HARDCOPY 37968 . 48637)) (48726 101203 (\TEDIT.FORMATBOX -48736 . 61839) (\TEDIT.FORMATHEADING 61841 . 66487) (\TEDIT.FORMATPAGE 66489 . 75356) ( -\TEDIT.FORMATTEXTBOX 75358 . 91739) (\TEDIT.FORMATFOLIO 91741 . 97058) (\TEDIT.FORMAT.FOUNDBOX? 97060 - . 99099) (\TEDIT.SKIP.SPECIALCOND 99101 . 101201)) (101283 105992 (\TEDIT.HARDCOPY.PAGEHEADINGS -101293 . 105990)) (106101 114152 (\TEDIT.HARDCOPY-COLUMN-END 106111 . 114150)) (114197 119138 ( -SCALEPAGEUNITS 114207 . 115348) (SCALEPAGEXUNITS 115350 . 116120) (SCALEPAGEYUNITS 116122 . 116893) ( -\TEDIT.PAPERHEIGHT 116895 . 117830) (\TEDIT.PAPERWIDTH 117832 . 119136)) (119554 123122 (ROMANNUMERALS - 119564 . 123120)) (123161 130427 (TEDIT.PAGENO.CREATE 123171 . 123547) (\TEDIT.PAGENO.OBJINIT 123549 - . 124832) (\TEDIT.PAGENO.BUTTONEVENTINFN 124834 . 125900) (\TEDIT.PAGENO.IMAGEBOXFN 125902 . 128052) -(\TEDIT.PAGENO.DISPLAYFN 128054 . 129704) (\TEDIT.PAGENO.GETFN 129706 . 130098) (\TEDIT.PAGENO.PUTFN -130100 . 130425)) (130492 133395 (\TEDIT.FORMAT.FOOTNOTE 130502 . 133393))))) + (FILEMAP (NIL (12168 15780 (\TEDIT.PARSE.PAGEFRAMES 12178 . 13957) (\TEDIT.PUT.PAGEFRAMES 13959 . +14783) (\TEDIT.UNPARSE.PAGEFRAMES 14785 . 15778)) (15843 37741 (TEDIT.SINGLE.PAGEFORMAT 15853 . 26727) + (TEDIT.COMPOUND.PAGEFORMAT 26729 . 27708) (TEDIT.PAGEFORMAT 27710 . 34999) (TEDIT.GET.PAGEFORMAT +35001 . 37739)) (38028 48813 (TEDIT.FORMAT.HARDCOPY 38038 . 48811)) (48900 102152 (\TEDIT.FORMATBOX +48910 . 62334) (\TEDIT.FORMATHEADING 62336 . 66982) (\TEDIT.FORMATPAGE 66984 . 76173) ( +\TEDIT.FORMATTEXTBOX 76175 . 92688) (\TEDIT.FORMATFOLIO 92690 . 98007) (\TEDIT.FORMAT.FOUNDBOX? 98009 + . 100048) (\TEDIT.SKIP.SPECIALCOND 100050 . 102150)) (102232 107287 (\TEDIT.HARDCOPY.PAGEHEADINGS +102242 . 107285)) (107396 115447 (\TEDIT.HARDCOPY-COLUMN-END 107406 . 115445)) (115492 120433 ( +SCALEPAGEUNITS 115502 . 116643) (SCALEPAGEXUNITS 116645 . 117415) (SCALEPAGEYUNITS 117417 . 118188) ( +\TEDIT.PAPERHEIGHT 118190 . 119125) (\TEDIT.PAPERWIDTH 119127 . 120431)) (120849 124417 (ROMANNUMERALS + 120859 . 124415)) (124456 131722 (TEDIT.PAGENO.CREATE 124466 . 124842) (\TEDIT.PAGENO.OBJINIT 124844 + . 126127) (\TEDIT.PAGENO.BUTTONEVENTINFN 126129 . 127195) (\TEDIT.PAGENO.IMAGEBOXFN 127197 . 129347) +(\TEDIT.PAGENO.DISPLAYFN 129349 . 130999) (\TEDIT.PAGENO.GETFN 131001 . 131393) (\TEDIT.PAGENO.PUTFN +131395 . 131720)) (131787 134726 (\TEDIT.FORMAT.FOOTNOTE 131797 . 134724))))) STOP diff --git a/library/tedit/TEDIT-PAGE.LCOM b/library/tedit/TEDIT-PAGE.LCOM index 13556b021c440c1cff5f5241c401f52e40ffe967..d5d2c2f09ff410c6aae2194ca5ce858a2149db46 100644 GIT binary patch delta 7045 zcma)AZEPIJdFCFekJ1vwj}vt|)70=pQAb&1Za?meW+X1}mb~TN?JVz>qGU_iN}`*i zq{ND1v@q)QoD^u>)@UqkT04cEHV&E;X;J8SA`07T7im!x3=p&h96;%xrUiE|RVF-dx3lGq*~$un$B^6tZAy;D9tJsl%!S24%O z4v-SD$=>*aUeay_fp>JR_5_;;czHnRT8-Q+9O>&vkJYZO_Zqv|D({Ta zr`E3zyH!lz*!}!!WVvO{>R@H%@P4M+t*kK%1wPj{h6H_l!&%$)L8tJ{?17)}cEzPs z+WGBg{#%foALU55lu0zdGx~cW;oqE3kI`d)%_h9JI{NzRD4%;P!hf31*jI%YGBOSU zK0a+$XxX&*4ihDvCOK;4REsF7WV@Ik3oE4(KMy&h@B`-OyJD>BMxMy&EV*31P|~Xw z%F5k;7v_M3yAy=~Kst zBwUPG;p&~W>o47YCDu!%M5eiT>Ys$Vlpv*!eKZL+tfU(nK`BkDEA!sPteRSmiLlFo zh*fcvK{e=sjS57phuE(AJ(8rPR;{UA!Jx!c00m546@6vm$%uEoaevta#772`B!b;> zqS?6fcc)K0=N;4}={Apcb?uwu{(5)rt8<;+I`FODoL3LMU)TzLPUkvm=<@Cm< z4n8zO!j(oS=Uk14pZZim&F2m=m%r?MCLZbSsJ<3|Ez(CL-JAP|8p11r9d+~mbrP1G z$mFTf~{4#GO-HV}Fq;qaH4-(UEY-%^%*!WG;<_>_}tx z%35%ZyZ)+Er8{||JU~agH}?(Q|9inE9c??!|K#)g0MPsiC4p`IZmY~~3mTYh&z?D6 zk3DG{;h42XW1Y5*hV0SC?iW1M{^%e#xHK>prsLh4;i2+-jjp@F63Y>xU$7@Oe#Pqr zvG9$&zz5dwqkbNWj}PHR#&+)oqyF}C+28;dm~cZ?7o3+k(-a~L3fP~?!4#H z!4Cs1EoigDbb^M3XasZC!ZDYQhwSmj?ycg3!$IF7Eb5A0>W16nhBCcBv{qn9Z3>9ES5w> z11*>%A$LqK`a1@Ck|qUB%_BI0-N?i{9_V8SfnDm<3sr3^#tC!<5rJW?7nhQO3?~PE zHFoxB^Ns0`LRX(aUN+Q6(F6h4nW78c0kKf1Re-LDf1pbiESq9c)wGxp8^N$1uBok> zYDFzkT4eZ~a$ND~`Q)CN5X($JcnhOtZvIIKy`uv;Fxl8n>^}cgfZL%r`(LQjDskzd>AcN$oJ3TST+yYp*wc;{Xt6e{o@cK=pC z?JsZ|X7_o}=sc935em*fN+;sJWSCERn$xa^@b%)KEqQ{??wcRxixGFp8IzwqRbpi7 z$Eru^N}h2pgo0n3n@2!#Zp$O#!z_4of2Gm&n?r`*xa9nyJS>!)KbObru&{aCEpH4J z^0z|eBYk$*1J~yB`87=U`)<*P%q0e6!rQDG61JPqsocW*7x#oDzTVySjzB}B0i61Q zMeCgBXGeG5roP5^Sp)l{!_K;L`tT(|(AR`e#ElFM4LR>9Q6OY;FPtzaQNWLYliXnd zRSHN1swU3f;`bW21oaB_Y6;M$Dtt{fswLJeXTcJox?4F~20Sq1drG;%CP&==# zAGt+ja1%D6zF4r}%!|4KwgysPHFG81G~v&_M@reuUR@G+D;w#V!T189@mjM^jhEHPY8=j)(~9u<|r5-n9P0ZGs~M@uVZW9rhpT4g*{ z76ZGjOC}d2$fbE|F%ZfU5LmUSE?^tjsWHQtJVO{8)z#7^lQMjQo3XstS0`bg3z}Yp zcd<5{LTf#!dW@Adc&O$>Y?c%Opi|V)rUC+u9S^9qV`qlzDYBp&YRTumEHR}Ov!HUG z+vdSYXK`?}GSylqUkmOKJE#RpErVK|F@umG;^#Djc^cYa6Vm6P2h+{gmW9?z)hg*S zr}YSINQEJ1sT$izY?VdJ5Tx2Tz6Y=C0bcirzxKp8{2`2-$7t9K17UY)uTC0{AYcr9 zpUl(v&bR6C#(8>X&>pGLk={C^xc0~z9i_wbGy-Lm9OlT|&-Hr@9$H(98oNs^#_KI9 z_&zTPOB_(`ggZA+69$+rk3x20D|+kD_5<$~0D+4pwhq|}`#Bf4CH70+#RnYtS`TWC z&~H#_%MVl!SZw(pI{dqy);Sdu`;c#ko&TDdt$WMnMn~K?Xn0`kB%QbO-J1u7YK>5j zU@tK1m5=N`I=k6}-QBo?wJmsid#jrc*0vAxoqItjhCakvi-H|{?AWlodGDxwJ@Yir zOTtziW;xXh_mmN8{5qj<$c|6mH7i^OGU!t=c7a%{hafT-9i25i#3I+_J zwx6cF_#fXo_~^A8kN9SDCCzAizISMJjn3}ebLlKqzQ#VkMf;&4jQ_z$KelJtzRm7z zL}{iuyzZUbFxE&D_NZHHbo~h(Y!+$Vv%ZNF-->S$?C^|zZbRWFx5v~lgq~a9ZbrCo z^45sI$@E;rt=+!@!(z_5J%c=R^E#bHDoPV;-ZEenoed*-oPC6JEm*0y6z;;?5021; z*EeL(xi#E7m=idZowBE0dUo>|ovuagv-TOc@xOn=mcH?>d;e`ZJz<}Pq*+7yluBpF z<%Q=p7Ohi&`^yG<^pQvk(6zvWV+uT%y>*Zz!s2Ds?8VDnULr}v5a*lv(=i1PCA?i> zxsGaj&Fmq=8?Q*t&Zm#73MTYJrgHsxn#5<+BPjg(TjvS%a(5w)U~ zDSP_q)FvuH!WHL%q9S|3|2`Nl;N?~ECNVX zQ!BXwy=s(8{Q;KS)F>(I#smaEkSBW#2p{52&dKzKk8J zBl{OQm2Nf2-m5`t7-(e2q{zer&3MwtAusVVWT^HEjJCH3BT|Qs3S(#NeTd&Ipbo4% z9XvLHAZ9?0J1_;|0`3e9`&I6RQszohRpKWDsS zaLErQ$c^m>_MDTxwlexwdE(*yd$l6>M}WJSO0>{2n{d8&ZS<6c#Nsjhg9kk(a{l(( zsT=_HF){Y?F$u_bYn?&jhexbH*p#o22>Z2*CaqXbdF|wpNfPhX4IK$$j#l#3=C7?y G9{N9RUD~_= delta 6585 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 g>+4_XySY2xfUTNAIn@;Xf`8YyG@^?Jy7 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 a(V3au%Kgvw?f>+Lm0T|P{p{y=KK>t`ogQ`o delta 3260 zcma)8O>bLO5Pf!QzhDEUi4)@Rkr#(R5}ev8twL!du=3Fw)lQYTs!)VfV^U&Nl8|PB z_{giAl)wg3U5QE+5)v$61t^v(!Ghl zu5+s%zI8Lad*pgL7b}$4E6d)|?9t=(6OrzN_2*)zI>Me;|Dba)6!J_YaijiOV*612 zjiIli(cDxiKUXv-)8n15l-Jg(D=&E)%S&FlvQb@KF(0NggWkrfSH67NTfGEJb=|8h zm)EU*Y2ACFy7HopxMKR#pBp!`Xs%=`=GV;i`nTDev2fTgdS<@p z#2oqScHF76xrK%NR14VV7~Dj6oQ~4Wd?8=Voo%69G83B@Q;4iM=Z8x( z)A`ca>|C+L5d3=u?;vhpXM%|NvX(p!PnH2@)NshY4`2z)lUTG`nmO*&k|EdhZjC+z zFNDxb<30_a!n8*)-4hq5r zkRJqLw^8%cc4FWy!S2EWURnh;jGCTn=O<9hy>LKvTHL6F%q{-C!d?wOb z&gObV-glseJ`~6u*(3CA_q8a&<;shV+eMq!Zyd^?xfDZlO2E#O`v?P zVHpIbZDTR~4~ThnCzVG?77iewnn0cqM9&9gqYunf=6OLlm8kh~C)H(*p>SQAH78{^4A)~o6MVE@>H%1DY2ihF@$ha` z*d%jU+XWT!VT%Wa44x9zR`v>{C5TCo%U+b|+A+Qw*~!V&kVc8c)s!%pj>)Ic~!MBQT_M(7kS2_j`M z8bO?D)VC|mrP`~L<_dI-G~*yf$3o2daE~-T3%fu?+-VP-AMEPm^K@XVA1YG`Gg2M1 zPaxG8fB+5q4Iq!V`8*~FN7GE;Q?sXGl9W)BpFjB6172DuP{O>zvD3=6J&oeM3LhQO zCkQ78&xO@r2dhJ)UU(^zK@<>PJ_y%QpMnVp+hV9?hMDJ9y29}rw$J{df+dgn6KWNO z(fkftqi4mHIbeBIkU%ixI4u@-3OV!uDMFEakSWAFPFjFu{Ne&G1Hw%C!LcZaoJ5sI zd3n}Bqk=NIMg08>XS|gM92%}=;h!1KUb{g~NIMIQsD;Ye1pu8qj|t#@`^dzs{t^Wm zcGn7c@I{c)ye0_U&_}rqQ3V2nK?2^&2x|UH+x+^~t1}l!$|m5=lN~@<4-l|Y6Ajl! z|Akp}^Yuy>!~-9s*XY27fOPy~(7w$drhcB?aG?l)Py#+<;-l@^=!aPU1WahA8w)hd f3m{^?*iD8a_3w6Xcf|L8+jE?k&xJpF{p&vgkL=1H diff --git a/library/tedit/TEDIT-SCREEN b/library/tedit/TEDIT-SCREEN index 6811c065f..0b17b988a 100644 --- a/library/tedit/TEDIT-SCREEN +++ b/library/tedit/TEDIT-SCREEN @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "30-Mar-2025 10:02:52" {WMEDLEY}TEDIT>TEDIT-SCREEN.;871 189269 +(FILECREATED "21-Apr-2025 20:34:16" {WMEDLEY}tedit>TEDIT-SCREEN.;900 190807 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.VALID.LINES \TEDIT.PANE.CREATELINES \TEDIT.SUFFIXLINE.CREATE - \TEDIT.LASTVALIDLINE \TEDIT.LINES.ABOVE \TEDIT.UPDATE.LINES \TEDIT.FORMATLINE) - (RECORDS LINEDESCRIPTOR) + :CHANGES-TO (FNS \TEDIT.UPDATE.LINES \TEDIT.FORMATLINE) - :PREVIOUS-DATE " 6-Mar-2025 11:42:48" {WMEDLEY}TEDIT>TEDIT-SCREEN.;867) + :PREVIOUS-DATE "21-Apr-2025 12:19:13" {WMEDLEY}tedit>TEDIT-SCREEN.;898) (PRETTYCOMPRINT TEDIT-SCREENCOMS) @@ -30,10 +28,9 @@ (MACROS \TEDIT.LINE.TALLP) (COMS (* ; "Formatting slots held by THISLINE") (RECORDS THISLINE CHARSLOT) - (MACROS CHAR CHARW PREVCHARSLOT PREVCHARSLOT! NEXTCHARSLOT FIRSTCHARSLOT - NTHCHARSLOT LASTCHARSLOT FILLCHARSLOT BACKCHARS PUSHCHAR POPCHAR - CHARSLOTP) - (CONSTANTS (CELLSPERCHARSLOT 2) + (MACROS CHAR CHARW CHARCL PREVCHARSLOT NEXTCHARSLOT FIRSTCHARSLOT + NTHCHARSLOT LASTCHARSLOT FILLCHARSLOT PUSHCHAR CHARSLOTP) + (CONSTANTS (CELLSPERCHARSLOT 3) (WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (MAXCHARSLOTS 256)) @@ -50,7 +47,7 @@ \TEDIT.FORMATLINE.VERTICAL \TEDIT.FORMATLINE.JUSTIFY \TEDIT.FORMATLINE.TABS \TEDIT.SCALE.TABS \TEDIT.FORMATLINE.PURGE.SPACES \TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN \TEDIT.FORMATLINE.EMPTY \TEDIT.FORMATLINE.UPDATELOOKS \TEDIT.FORMATLINE.LASTLEGAL - \TEDIT.LINES.ABOVE) + \TEDIT.LINES.ABOVE \TEDIT.CHNO.TO.YTOP) (INITVARS (TEDIT.LINELEADING.BELOW NIL)) (GLOBALVARS TEDIT.LINELEADING.BELOW) (FNS \TLVALIDATE) @@ -66,9 +63,10 @@ (MACROS MI-TEDIT.BLTCHAR)) (FNS \TEDIT.BACKFORMAT \TEDIT.PREVIOUS.LINEBREAK \TEDIT.UPDATE.LINES \TEDIT.PANE.CREATELINES - \TEDIT.SUFFIXLINE.CREATE \TEDIT.LINES.BELOW \TEDIT.MEASURED.LINES \TEDIT.VALID.LINES - \TEDIT.LASTVALIDLINE \TEDIT.NEXTVALIDLINE \TEDIT.CLEARPANE.BELOW.LINE \TEDIT.INSERTLINE - \TEDIT.LINE.BOTTOM \TEDIT.SHOW.AT.BOTTOMP \TEDIT.SHOW.AT.TOPP))) + \TEDIT.SUFFIXLINE.CREATE \TEDIT.LINES.BELOW \TEDIT.MEASURED.LINES \TEDIT.VALID.LASTCHNOS + \TEDIT.VALID.NEXTCHNOS \TEDIT.LASTVALIDLINE \TEDIT.NEXTVALIDLINE + \TEDIT.CLEARPANE.BELOW.LINE \TEDIT.INSERTLINE \TEDIT.LINE.BOTTOM \TEDIT.SHOW.AT.BOTTOMP + \TEDIT.SHOW.AT.TOPP))) (DECLARE%: EVAL@COMPILE DONTCOPY (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE @@ -351,7 +349,7 @@ (BLOCKRECORD CHARSLOT (CHAR CHARW (* ;  "If CHAR is NIL, then CHARW is CHARLOOKS.") - )) + CHARCL)) ) (/DECLAREDATATYPE 'THISLINE '(FULLXPOINTER POINTER POINTER POINTER POINTER) @@ -369,16 +367,12 @@ (PUTPROPS CHARW MACRO ((CSLOT) (ffetch (CHARSLOT CHARW) of CSLOT))) +(PUTPROPS CHARCL MACRO ((CSLOT) + (ffetch (CHARSLOT CHARCL) of CSLOT))) + (PUTPROPS PREVCHARSLOT MACRO ((CSLOT) (\ADDBASE CSLOT (IMINUS WORDSPERCHARSLOT)))) -(PUTPROPS PREVCHARSLOT! MACRO ((CSLOT) - - (* ;; "Backs over looks and invisibles to the last character slot") - - (find CS _ (PREVCHARSLOT CSLOT) by (PREVCHARSLOT CS) while CS - suchthat (CHAR CS)))) - (PUTPROPS NEXTCHARSLOT MACRO ((CSLOT) (\ADDBASE CSLOT WORDSPERCHARSLOT))) @@ -394,24 +388,15 @@ (TIMES (SUB1 MAXCHARSLOTS) WORDSPERCHARSLOT)))) -(PUTPROPS FILLCHARSLOT MACRO ((CSLOT C W) +(PUTPROPS FILLCHARSLOT MACRO ((CSLOT C W R) (freplace (CHARSLOT CHAR) of CSLOT with C) - (freplace (CHARSLOT CHARW) of CSLOT with W))) - -(PUTPROPS BACKCHARS MACRO ((CSLOTVAR CHARVAR WIDTHVAR) - (SETQ CSLOTVAR (PREVCHARSLOT CSLOTVAR)) - (SETQ CHARVAR (fetch (CHARSLOT CHAR) of CSLOTVAR)) - (SETQ WIDTHVAR (fetch (CHARSLOT CHARW) of CSLOTVAR)))) + (freplace (CHARSLOT CHARW) of CSLOT with W) + (freplace (CHARSLOT CHARCL) of CSLOT with R))) -(PUTPROPS PUSHCHAR MACRO ((CSLOTVAR C W) - (FILLCHARSLOT CSLOTVAR C W) +(PUTPROPS PUSHCHAR MACRO ((CSLOTVAR C W CL) + (FILLCHARSLOT CSLOTVAR C W CL) (SETQ CSLOTVAR (NEXTCHARSLOT CSLOTVAR)))) -(PUTPROPS POPCHAR MACRO ((CSLOTVAR CHARVAR WIDTHVAR) - (SETQ CHARVAR (fetch (CHARSLOT CHAR) of CSLOTVAR)) - (SETQ WIDTHVAR (fetch (CHARSLOT CHARW) of CSLOTVAR)) - (SETQ CSLOTVAR (NEXTCHARSLOT CSLOTVAR)))) - (PUTPROPS CHARSLOTP MACRO [OPENLAMBDA (X TL) (* ;; "True if TL is a THISLINE and X is a pointer into its CHARSLOTS block. A tool for consistency assertions.") @@ -434,14 +419,14 @@ ) (DECLARE%: EVAL@COMPILE -(RPAQQ CELLSPERCHARSLOT 2) +(RPAQQ CELLSPERCHARSLOT 3) (RPAQ WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (RPAQQ MAXCHARSLOTS 256) -(CONSTANTS (CELLSPERCHARSLOT 2) +(CONSTANTS (CELLSPERCHARSLOT 3) (WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (MAXCHARSLOTS 256)) ) @@ -456,7 +441,7 @@ (I.S.OPR 'incharslots NIL '[SUBST (GETDUMMYVAR) '$$STARTSLOT - '(bind $$STARTSLOT _ BODY CHAR CHARW $$CHARSLOTLIMIT + '(bind $$STARTSLOT _ BODY CHAR CHARW CHARCL $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) first (SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) @@ -467,12 +452,13 @@ ) of THISLINE)) by (NEXTCHARSLOT I.V.) until (EQ I.V. $$CHARSLOTLIMIT) eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) - (SETQ CHARW (fetch (CHARSLOT CHARW) of I.V.] + (SETQ CHARW (fetch (CHARSLOT CHARW) of I.V.)) + (SETQ CHARCL (fetch (CHARSLOT CHARCL) of I.V.] T) (I.S.OPR 'backcharslots NIL '[SUBST (GETDUMMYVAR) '$$STARTSLOT - '(bind $$STARTSLOT _ BODY CHAR CHARW $$CHARSLOTLIMIT + '(bind $$STARTSLOT _ BODY CHAR CHARW CHARCL $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) first (SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) @@ -488,6 +474,9 @@ (SETQ CHARW (fetch (CHARSLOT CHARW) of I.V.)) + (SETQ CHARCL (fetch (CHARSLOT + CHARCL) + of I.V.)) repeatuntil (EQ I.V. $$CHARSLOTLIMIT] T) ) @@ -689,6 +678,8 @@ (\TEDIT.FORMATLINE [LAMBDA (TSTREAM CH#1 LINE REGION IMAGESTREAM FORMATTINGSTATE) + (* ; "Edited 21-Apr-2025 19:03 by rmk") + (* ; "Edited 11-Apr-2025 20:18 by rmk") (* ; "Edited 29-Mar-2025 11:39 by rmk") (* ; "Edited 6-Mar-2025 11:42 by rmk") (* ; "Edited 25-Feb-2025 10:39 by rmk") @@ -748,10 +739,7 @@ (CL:UNLESS IMAGESTREAM (SETQ IMAGESTREAM (WINDOWPROP (\TEDIT.PRIMARYPANE TSTREAM) 'DSP))) (* ; "For lower image objects?") - (CL:WHEN (type? TEXTOBJ TSTREAM) (* ; - "Still confused about textobj/stream. Not sure who uses TSTREAM freely ") - (SETQ TSTREAM (FGETTOBJ TSTREAM STREAMHINT))) - (PROG ((TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ))) + (PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) (OFFSET 0) (TRUEASCENT -1) (TRUEDESCENT -1) @@ -763,10 +751,10 @@ (SPACELEFT 0) (TX 0) (BOXSTREAM IMAGESTREAM) - THISLINE LINETYPE WIDTH WMARGIN SCALE PARALOOKS RIGHTMARGIN HASKERN PC CHARSLOT PREVSP - 1STLN CHNOB FORCED-END CHNO LX1 TX TXB FONT CHARSLOTB TABPENDING PREVHYPH PREVDHYPH + CHARLOOKS THISLINE LINETYPE WIDTH WMARGIN SCALE PARALOOKS RIGHTMARGIN HASKERN PC CHARSLOT + PREVSP 1STLN CHNOB FORCED-END CHNO LX1 TX TXB FONT CHARSLOTB TABPENDING PREVHYPH PREVDHYPH START-OF-PIECE UNBREAKABLE OLDPIECE OLDPCCHARSLEFT OLDCARETLOOKS FIRSTSEPR) - (DECLARE (SPECVARS TEXTOBJ LINETYPE CHARSLOT CHNO OFFSET ASCENTC DESCENTC FONT + (DECLARE (SPECVARS TEXTOBJ LINETYPE CHARLOOKS CHNO OFFSET ASCENTC DESCENTC FONT START-OF-PIECE HASKERN UNBREAKABLE)) (CL:UNLESS LINE @@ -842,7 +830,10 @@ (SETQ WIDTH (ffetch (REGION WIDTH) of REGION)) else (SETQ WMARGIN \TEDIT.LINEREGION.WIDTH) (* ;  "A little more display margin on both sides") - (SETQ WIDTH (IDIFFERENCE (FGETTOBJ TEXTOBJ WRIGHT) + (SETQ WIDTH (IDIFFERENCE (CL:IF (FGETTOBJ TEXTOBJ PRIMARYPANE) + (PANERIGHT (FGETTOBJ TEXTOBJ PRIMARYPANE)) + (FGETPLOOKS (FGETLD LINE LPARALOOKS) + RIGHTMAR)) (UNFOLD WMARGIN 2] (SETQ RIGHTMARGIN (if (ZEROP (FGETPLOOKS PARALOOKS RIGHTMAR)) then @@ -914,7 +905,7 @@ (FILLCHARSLOT CHARSLOT (CL:IF (EQ CH (CHARCODE FORM)) (CHARCODE FORM) (CHARCODE EOL)) - DX) + DX CHARLOOKS) (SETQ FORCED-END (CL:IF (MEMB CH (CHARCODE (LF CR))) (CHARCODE EOL) CH)) @@ -931,7 +922,7 @@ (* ;; "Unlikely for display--probably backs it up. The idea is to back up the starting point of CH by backing off the end of the previous character. We stick the kern inline so that various consumers (displayline, scanline...) can make the adjustments.") (SETQ KERN (\FGETLEFTKERN FONT PREVCH CH)) - (PUSHCHAR CHARSLOT 'KERN KERN) + (PUSHCHAR CHARSLOT 'KERN KERN CHARLOOKS) (add DX KERN)) (SETQ DX (\FGETCHARWIDTH FONT CH)) (SETQ PREVCH CH) @@ -972,7 +963,7 @@ (* ;; "Not including this space in the justifying chain, so it won't expand. If that looks odd, let it fall through to the PUSHCHAR below.") - (PUSHCHAR CHARSLOT CH DX) + (PUSHCHAR CHARSLOT CH DX CHARLOOKS) else (CL:UNLESS FIRSTSEPR (SETQ FIRSTSEPR CHNO)) (SPACEBREAK) (add TX DX) @@ -983,7 +974,7 @@ (PUSHCHAR CHARSLOT (CL:IF JUSTIFIED (PROG1 PREVSP (SETQ PREVSP CHARSLOT)) CH) - DX))) + DX CHARLOOKS))) (TAB (* ;; "Try to be reasonable with tabs. This will create trouble when doing fast-case insert/delete, but Pah! for now.") @@ -997,7 +988,7 @@ (* ;; "Now for this tab:") (* ;  "Start with 0 width, then set up the next tab") - (FILLCHARSLOT CHARSLOT CH 0) + (FILLCHARSLOT CHARSLOT CH 0 CHARLOOKS) (SETQ TABPENDING (\TEDIT.FORMATLINE.TABS TEXTOBJ PARALOOKS SCALE CHARSLOT LX1 TX TABPENDING)) (* ; @@ -1035,7 +1026,7 @@ (* ;;  "A good break-point not followed by spaces. NOTE: Even pending tabs go on the next line.") - (CL:UNLESS TXB (FILLCHARSLOT CH DX)) + (CL:UNLESS TXB (FILLCHARSLOT CH DX CHARLOOKS)) (DOBREAK) (RETURN)) (CL:WHEN (IGREATERP DX WIDTH) @@ -1049,7 +1040,7 @@ (add TX (IMINUS DX)) (add CHNO -1) (* ; "back up to preceding character") - (SETQ CHARSLOT (PREVCHARSLOT! CHARSLOT)) + (SETQ CHARSLOT (PREVCHARSLOT CHARSLOT)) (SETQ CH (CHAR CHARSLOT)) (SETQ DX (CHARW CHARSLOT)) @@ -1060,7 +1051,7 @@ else (* ;; "Dump it here") - (FILLCHARSLOT CHARSLOT CH DX)) + (FILLCHARSLOT CHARSLOT CH DX CHARLOOKS)) (SETQ OVERHANG 0) (SETQ SPACELEFT 0) (RETURN)) @@ -1073,12 +1064,12 @@ (* ;; "Didn't find one, the offender protrudes on this line") - (FILLCHARSLOT CHARSLOT CH DX)) + (FILLCHARSLOT CHARSLOT CH DX CHARLOOKS)) (RETURN)) (* ;; "Don't break: can't split before the first thing on the line!") - (PUSHCHAR CHARSLOT CH DX) + (PUSHCHAR CHARSLOT CH DX CHARLOOKS) (RETURN)) (* ;; "") @@ -1089,7 +1080,7 @@ (SELCHARQ CH (%. (* ;  "Check for decimal tabs, immediately after TAB") - (PUSHCHAR CHARSLOT CH DX) + (PUSHCHAR CHARSLOT CH DX CHARLOOKS) (CL:WHEN (AND TABPENDING (EQ (fetch PTTYPE of TABPENDING) 'DECIMAL)) (* ; @@ -1126,18 +1117,19 @@ (SETQ DX (\FGETCHARWIDTH FONT (CHARCODE "-")))) (SAVEBREAK)) (* ;  "Save the hyphen slot, then fill it") - (PUSHCHAR CHARSLOT CH DX)) + (PUSHCHAR CHARSLOT CH DX CHARLOOKS)) (NONBREAKING-HYPHEN (* ;;  "Switch the character code and width in case font doesn't have a glyph??") (PUSHCHAR CHARSLOT (CHARCODE -) - (\FGETCHARWIDTH FONT (CHARCODE "-")))) + (\FGETCHARWIDTH FONT (CHARCODE "-")) + CHARLOOKS)) (NONBREAKING-SPACE (* ;  "This will eventually convert to SPACE") (PUSHCHAR CHARSLOT (PROG1 PREVSP (SETQ PREVSP CHARSLOT)) - DX)) - (PUSHCHAR CHARSLOT CH DX] + DX CHARLOOKS)) + (PUSHCHAR CHARSLOT CH DX CHARLOOKS] (* ;; "BOUNDS CHECKING!") @@ -1158,9 +1150,10 @@ (* ;; "The line ended in a space that needs to be resolved. If we coded the end of a space-chain as (CHARCODE SPACE) instead of NIL, maybe this wouldn't be necessary.") (FILLCHARSLOT PREVSP (CHARCODE SPACE) - (CHARW PREVSP)) + (CHARW PREVSP) + CHARLOOKS) (SETQ PREVSP NIL)) - (SETQ CHARSLOT (PREVCHARSLOT! CHARSLOT)) + (SETQ CHARSLOT (PREVCHARSLOT CHARSLOT)) (add CHNO -1) (SETQ DX 0) (* ; "TX is already correct") (FORCEBREAK)) @@ -1650,7 +1643,8 @@ PREVSP]) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN - [LAMBDA (THISLINE PREVDHYPH CHARSLOT) (* ; "Edited 2-Sep-2024 16:09 by rmk") + [LAMBDA (THISLINE PREVDHYPH CHARSLOT) (* ; "Edited 11-Apr-2025 11:04 by rmk") + (* ; "Edited 2-Sep-2024 16:09 by rmk") (* ;; "PREVDHYPH is the THISLINE character slot of a preceding soft hyphen that is now being discarded in favor of a later potential linebreak. This function purges it from THISLINE by moving the contents of all of the slots from the one after PREDVDHYPH backwards by one slot. The value is the new (one-back) last slot") @@ -1659,11 +1653,15 @@ (CL:WHEN PREVDHYPH (for CS NEXT incharslots PREVDHYPH do (SETQ NEXT (NEXTCHARSLOT CS)) (FILLCHARSLOT CS (CHAR NEXT) - (CHARW NEXT)) repeatuntil (EQ NEXT CHARSLOT) + (CHARW NEXT) + (CHARCL NEXT)) repeatuntil (EQ NEXT CHARSLOT) finally (RETURN CS)))]) (\TEDIT.FORMATLINE.EMPTY - [LAMBDA (TEXTOBJ CH#1 LINE) (* ; "Edited 19-Feb-2025 13:37 by rmk") + [LAMBDA (TEXTOBJ CH#1 LINE) (* ; "Edited 19-Apr-2025 22:25 by rmk") + (* ; "Edited 13-Apr-2025 23:56 by rmk") + (* ; "Edited 9-Apr-2025 19:39 by rmk") + (* ; "Edited 19-Feb-2025 13:37 by rmk") (* ; "Edited 8-Feb-2025 23:37 by rmk") (* ; "Edited 7-Feb-2025 08:09 by rmk") (* ; "Edited 22-Nov-2024 22:29 by rmk") @@ -1702,7 +1700,7 @@ (SETQ FONT (GETCLOOKS CLOOKS CLFONT)) (SETQ TRUEASCENT (FONTPROP FONT 'ASCENT)) (SETQ TRUEDESCENT (FONTPROP FONT 'DESCENT)) - (SETQ LM (IPLUS \TEDIT.LINEREGION.WIDTH (FGETTOBJ TEXTOBJ WLEFT) + (SETQ LM (IPLUS \TEDIT.LINEREGION.WIDTH (PANELEFT (FGETTOBJ TEXTOBJ PRIMARYPANE)) (FGETPLOOKS PLOOKS 1STLEFTMAR))) (with LINEDESCRIPTOR LINE (SETQ LDUMMY T) (SETQ LCHAR1 CH#1) @@ -1713,16 +1711,16 @@ (SETQ LX1 LM) (SETQ LXLIM LM) (SETQ FORCED-END (CHARCODE EOL)) - (SETQ LHASPROT NIL) (SETQ LPARALOOKS PLOOKS) (SETQ LEFTMARGIN LM) (SETQ RIGHTMARGIN (CL:IF (ZEROP (FGETPLOOKS PLOOKS RIGHTMAR)) - (IDIFFERENCE (FGETTOBJ TEXTOBJ WRIGHT) + (IDIFFERENCE (PANERIGHT (FGETTOBJ TEXTOBJ PRIMARYPANE)) \TEDIT.LINEREGION.WIDTH) (FGETPLOOKS PLOOKS RIGHTMAR))) (SETQ LTRUEASCENT TRUEASCENT) (SETQ LTRUEDESCENT TRUEDESCENT) - (SETQ LHEIGHT (IPLUS TRUEASCENT TRUEDESCENT))) + (SETQ LHEIGHT (IPLUS TRUEASCENT TRUEDESCENT)) + (SETQ LFIRSTSEPR MAX.FIXP)) (SETQ CHARSLOT (FIRSTCHARSLOT THISLINE)) (FILLCHARSLOT CHARSLOT NIL CLOOKS) (replace (THISLINE NEXTAVAILABLECHARSLOT) of THISLINE with (NEXTCHARSLOT CHARSLOT)) @@ -1735,7 +1733,8 @@ LINE]) (\TEDIT.FORMATLINE.UPDATELOOKS - [LAMBDA (TSTREAM PC) (* ; "Edited 19-Dec-2024 11:50 by rmk") + [LAMBDA (TSTREAM PC) (* ; "Edited 11-Apr-2025 09:43 by rmk") + (* ; "Edited 19-Dec-2024 11:50 by rmk") (* ; "Edited 13-Dec-2024 17:09 by rmk") (* ; "Edited 4-Aug-2024 15:09 by rmk") (* ; "Edited 28-Jul-2024 20:52 by rmk") @@ -1757,30 +1756,31 @@ (* ;; "Style sheets are undocumented, I suspect that this was never really thought through.") - (DECLARE (USEDFREE LINETYPE CHARSLOT CHNO OFFSET ASCENTC DESCENTC FONT IMAGESTREAM HASKERN + (DECLARE (USEDFREE LINETYPE CHARLOOKS CHNO OFFSET ASCENTC DESCENTC FONT IMAGESTREAM HASKERN UNBREAKABLE)) (CL:UNLESS PC (* ;  "Ran off the end ? Skips the ENDOFSTREAMOP") (RETFROM (FUNCTION \TEDIT.TEXTBIN) NIL)) - (LET (PLOOKS INVISIBLERUN CLOFFSET) + (LET (INVISIBLERUN CLOFFSET) (SETQ INVISIBLERUN (for old PC inpieces PC until (VISIBLEPIECEP PC) sum (PLEN PC))) (if (EQ 0 INVISIBLERUN) - then + then (SETQ CHARLOOKS (PCHARLOOKS PC)) + (* ;; "If the looks are the same as current looks, we don't need to change anything. APPLY STYLES AT PIECE CREATION??") - (SETQ PLOOKS (PLOOKS PC)) - (CL:UNLESS (EQ PLOOKS (FGETTOBJ (ffetch (TEXTSTREAM TEXTOBJ) of TSTREAM) - CARETLOOKS)) - (FSETTOBJ (ffetch (TEXTSTREAM TEXTOBJ) of TSTREAM) - CARETLOOKS PLOOKS) + (CL:UNLESS (EQ CHARLOOKS (FGETTOBJ (FTEXTOBJ TSTREAM) + CARETLOOKS)) + (FSETTOBJ (FTEXTOBJ TSTREAM) + CARETLOOKS CHARLOOKS) (* ;; "") - (SETQ OFFSET (OR (FGETCLOOKS PLOOKS CLOFFSET) + (SETQ OFFSET (OR (FGETCLOOKS CHARLOOKS CLOFFSET) 0)) - (SETQ FONT (FGETCLOOKS PLOOKS CLFONT)) (* ; + (SETQ FONT (FGETCLOOKS CHARLOOKS CLFONT)) + (* ;  "CLFONT is a display font or a class") [if (EQ LINETYPE 'TRUEHARDCOPY) then (SETQ FONT (FONTCOPY FONT 'DEVICE IMAGESTREAM)) @@ -1798,11 +1798,10 @@ (CL:WHEN (EQ LINETYPE 'HARDCOPYDISPLAY) (* ; "Switch widths to hardcopy") (SETQ FONT (FONTCOPY FONT 'DEVICE IMAGESTREAM)))] - (SETQ HASKERN (FFETCH (FONTDESCRIPTOR FONTHASLEFTKERNS) of FONT)) + (SETQ HASKERN (ffetch (FONTDESCRIPTOR FONTHASLEFTKERNS) of FONT)) (* ;  "T if FONT contains left-kern information") - (SETQ UNBREAKABLE (FGETCLOOKS PLOOKS CLUNBREAKABLE)) - (PUSHCHAR CHARSLOT NIL PLOOKS)) + (SETQ UNBREAKABLE (FGETCLOOKS CHARLOOKS CLUNBREAKABLE))) else (* ;; "Adjust the CHNO to pass over invisible pieces--they don't show up in the THISLINE vector or on the screen. Then recurse to here for the next visible piece.") @@ -1811,7 +1810,8 @@ PC]) (\TEDIT.FORMATLINE.LASTLEGAL - [LAMBDA (THISLINE CH#1 LINETYPE IMAGESTREAM) (* ; "Edited 25-Jun-2024 15:44 by rmk") + [LAMBDA (THISLINE CH#1 LINETYPE IMAGESTREAM) (* ; "Edited 11-Apr-2025 11:24 by rmk") + (* ; "Edited 25-Jun-2024 15:44 by rmk") (* ; "Edited 1-Feb-2024 16:51 by rmk") (* ; "Edited 2-Jul-2023 14:39 by rmk") (* ; "Edited 17-Mar-2023 05:36 by rmk") @@ -1826,12 +1826,12 @@ (* ;; "Once we find the break point, we have to sweep through from the beginning in order to accurately know the lines ascent and descent at the break point.") (DECLARE (USEDFREE TX CHNO CHARSLOT TRUEASCENT TRUEDESCENT TABPENDING)) - (LET [(BESTSLOT (find SLOT PCS backcharslots (PREVCHARSLOT! CHARSLOT) + (LET [(BESTSLOT (find SLOT PCS backcharslots (PREVCHARSLOT CHARSLOT) suchthat (CL:WHEN (AND TABPENDING (EQ SLOT (fetch (PENDINGTAB PTCHARSLOT) of TABPENDING))) (SETQ TABPENDING NIL)) (OR (MEMB CHAR TEDIT.DONT.BREAK.CHARS) - (AND (SETQ PCS (PREVCHARSLOT! SLOT)) + (AND (SETQ PCS (PREVCHARSLOT SLOT)) (MEMB (CHAR PCS) TEDIT.DONT.LAST.CHARS] @@ -1863,7 +1863,8 @@ T)]) (\TEDIT.LINES.ABOVE - [LAMBDA (TSTREAM CHN BOTTOMY) (* ; "Edited 30-Mar-2025 09:09 by rmk") + [LAMBDA (TSTREAM CHN BOTTOMY) (* ; "Edited 19-Apr-2025 23:55 by rmk") + (* ; "Edited 30-Mar-2025 09:09 by rmk") (* ; "Edited 24-Nov-2024 11:47 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") (* ; "Edited 17-Nov-2024 16:02 by rmk") @@ -1887,7 +1888,7 @@ (CL:WHEN (type? LINEDESCRIPTOR CHN) (SETQ BOTTOMY (FGETLD CHN YTOP)) (SETQ CHN (SUB1 (FGETLD CHN LCHAR1)))) - (bind LTOP LBOT LINE HEIGHT CHNO (TEXTOBJ _ (GETTSTR TSTREAM TEXTOBJ)) + (bind LTOP LBOT LINE HEIGHT CHNO (TEXTOBJ _ (FTEXTOBJ TSTREAM)) first (CL:WHEN (IGREATERP CHN (TEXTLEN TEXTOBJ)) (SETQ CHN (TEXTLEN TEXTOBJ))) (SETQ CHNO (\TEDIT.PREVIOUS.LINEBREAK TSTREAM CHN)) @@ -1908,6 +1909,20 @@ (for L (YB _ BOTTOMY) backlines LBOT do (SETYBOT L YB) (add YB (FGETLD L LHEIGHT)))) (RETURN (CONS LTOP LBOT]) + +(\TEDIT.CHNO.TO.YTOP + [LAMBDA (PANE CHNO) (* ; "Edited 18-Apr-2025 14:56 by rmk") + + (* ;; "Returns the YTOP of the line containing character CHNO in PANE, NIL if CHNO is not visible in PANE.") + + (CL:UNLESS (WINDOWP PANE) + (SETQ PANE (\TEDIT.PRIMARYPANE PANE))) + (CL:UNLESS CHNO + (SETQ CHNO (TEXTSEL (TEXTOBJ PANE)))) + (CL:WHEN (type? SELECTION CHNO) + (SETQ CHNO (FGETSEL CHNO CH#))) + (for L inlines (PANETOPLINE PANE) when (FWITHINLINEP CHNO L) unless (FGETLD L LDUMMY) + do (RETURN (FGETLD L YTOP]) ) (RPAQ? TEDIT.LINELEADING.BELOW NIL) @@ -1965,194 +1980,184 @@ (DEFINEQ (\TEDIT.DISPLAYLINE - [LAMBDA (TEXTOBJ LINE PANE) (* ; "Edited 19-Feb-2025 13:35 by rmk") + [LAMBDA (TSTREAM LINE PANE) (* ; "Edited 21-Apr-2025 12:14 by rmk") + (* ; "Edited 19-Apr-2025 22:06 by rmk") + (* ; "Edited 17-Apr-2025 13:33 by rmk") + (* ; "Edited 15-Apr-2025 15:17 by rmk") + (* ; "Edited 11-Apr-2025 20:20 by rmk") + (* ; "Edited 19-Feb-2025 13:35 by rmk") (* ; "Edited 8-Feb-2025 23:37 by rmk") (* ; "Edited 13-Dec-2024 23:51 by rmk") - (* ; "Edited 11-Dec-2024 23:14 by rmk") (* ; "Edited 31-Oct-2024 09:56 by rmk") - (* ; "Edited 26-Oct-2024 10:43 by rmk") (* ; "Edited 25-Aug-2024 23:18 by rmk") - (* ; "Edited 23-Aug-2024 22:52 by rmk") (* ; "Edited 19-Jul-2024 23:17 by rmk") - (* ; "Edited 28-Jun-2024 11:43 by rmk") - (* ; "Edited 13-Jun-2024 17:08 by rmk") (* ; "Edited 10-May-2024 00:24 by rmk") (* ; "Edited 20-Mar-2024 10:57 by rmk") - (* ; "Edited 15-Mar-2024 22:04 by rmk") (* ; "Edited 24-Dec-2023 22:05 by rmk") (* ; "Edited 2-Dec-2023 11:34 by rmk") - (* ; "Edited 20-Nov-2023 13:57 by rmk") (* ; "Edited 28-Oct-2023 23:57 by rmk") - (* ; "Edited 11-Oct-2023 10:47 by rmk") (* ; "Edited 2-Aug-2023 12:50 by rmk") (* ; "Edited 22-Jun-2023 17:37 by rmk") (* ; "Edited 24-Apr-2023 00:08 by rmk") - (* ; "Edited 10-Apr-2023 12:41 by rmk") (* ; "Edited 16-Mar-2023 23:30 by rmk") - (* ; "Edited 9-Mar-2023 14:06 by rmk") (* ; "Edited 7-Mar-2023 23:11 by rmk") (* ;; "Display the line of text LINE in the edit window where it belongs. This constructs the line image in a scratch bitmap then copies it to PANE. Presumably this is to avoid the flicker of incremental updates.") (* ;; "Validate the incoming arguments so ffetch can be used consistently for all their field extractions.") - (TEXTOBJ! TEXTOBJ) - (\DTEST LINE 'LINEDESCRIPTOR) - (LET ((WINDOWDS (WINDOWPROP PANE 'DSP)) - (THISLINE (\DTEST (FGETTOBJ TEXTOBJ THISLINE) - 'THISLINE)) - (OLDCACHE (fetch (LINECACHE LCBITMAP) of (FGETTOBJ TEXTOBJ DISPLAYCACHE))) - (DS (FGETTOBJ TEXTOBJ DISPLAYCACHEDS)) - CACHE XOFFSET CLIPLEFT CLIPRIGHT DISPLAYDATA DDPILOTBBT CURY LHEIGHT) - [SETQ LHEIGHT (COND - ((FGETLD LINE PREVLINE) (* ; + (LINEDESCRIPTOR! LINE) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (WINDOWDS (WINDOWPROP PANE 'DSP)) + (THISLINE (\DTEST (FGETTOBJ TEXTOBJ THISLINE) + 'THISLINE)) + (OLDCACHE (fetch (LINECACHE LCBITMAP) of (FGETTOBJ TEXTOBJ DISPLAYCACHE))) + (DS (FGETTOBJ TEXTOBJ DISPLAYCACHEDS)) + CACHE XOFFSET CLIPLEFT CLIPRIGHT DISPLAYDATA DDPILOTBBT CURY LHEIGHT) + (SETQ LHEIGHT (if (FGETLD LINE PREVLINE) + then (* ;  "So if theres a base-to-base measure, we clear everything right.") - (IMAX (IDIFFERENCE (FGETLD (FGETLD LINE PREVLINE) - YBOT) - (FGETLD LINE YBOT)) - (FGETLD LINE LHEIGHT))) - (T (FGETLD LINE LHEIGHT] - (SETQ CACHE (\TEDIT.LINECACHE (FGETTOBJ TEXTOBJ DISPLAYCACHE) - (FGETLD LINE LXLIM) - LHEIGHT)) - (CL:UNLESS (EQ CACHE OLDCACHE) (* ; + (IMAX (IDIFFERENCE (FGETLD (FGETLD LINE PREVLINE) + YBOT) + (FGETLD LINE YBOT)) + (FGETLD LINE LHEIGHT)) + else (FGETLD LINE LHEIGHT))) + (SETQ CACHE (\TEDIT.LINECACHE (FGETTOBJ TEXTOBJ DISPLAYCACHE) + (FGETLD LINE LXLIM) + LHEIGHT)) + (CL:UNLESS (EQ CACHE OLDCACHE) (* ;  "We changed the bitmaps because this line was bigger--update the displaystream, too") - (DSPDESTINATION CACHE DS) - (DSPCLIPPINGREGION (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (fetch BITMAPWIDTH of CACHE) - HEIGHT _ (fetch BITMAPHEIGHT of CACHE)) - DS)) - (BLTSHADE WHITESHADE CACHE 0 0 NIL NIL 'REPLACE) (* ; "Clear the line cache") - (CL:WHEN (AND (IGEQ (FGETLD LINE LCHAR1) - 1) - (ILEQ (FGETLD LINE LCHAR1) - (FGETTOBJ TEXTOBJ TEXTLEN))) - - (* ;; "Only display the line if it contains text (CHAR1 > 0), appears before the end of the text. Original code also suppressed lines that were partially off-screen, which meant that large bitmaps wouldn't show.") - - (CL:UNLESS (EQ LINE (fetch (THISLINE DESC) of THISLINE)) + (DSPDESTINATION CACHE DS) + (DSPCLIPPINGREGION (create REGION + LEFT _ 0 + BOTTOM _ 0 + WIDTH _ (fetch BITMAPWIDTH of CACHE) + HEIGHT _ (fetch BITMAPHEIGHT of CACHE)) + DS)) + (BLTSHADE WHITESHADE CACHE 0 0 NIL NIL 'REPLACE) (* ; "Clear the line cache") + (CL:WHEN (AND (IGEQ (FGETLD LINE LCHAR1) + 1) + (ILEQ (FGETLD LINE LCHAR1) + (FGETTOBJ TEXTOBJ TEXTLEN))) + + (* ;; "Only display the line if it contains text (CHAR1 > 0), appears before the end of the text. Original code also suppressed lines that were partially off-screen, which meant that large bitmaps wouldn't show.") + + (CL:UNLESS (EQ LINE (fetch (THISLINE DESC) of THISLINE)) (* ;  "No image cache -- re-format and display") - (\TEDIT.FORMATLINE (FGETTOBJ TEXTOBJ STREAMHINT) - (FGETLD LINE LCHAR1) - LINE)) - (MOVETO (FGETLD LINE LX1) - (FGETLD LINE LDESCENT) - DS) - (SETQ DISPLAYDATA (ffetch (STREAM IMAGEDATA) of DS)) + (\TEDIT.FORMATLINE TSTREAM (FGETLD LINE LCHAR1) + LINE)) + (MOVETO (FGETLD LINE LX1) + (FGETLD LINE LDESCENT) + DS) + (SETQ DISPLAYDATA (ffetch (STREAM IMAGEDATA) of DS)) (* ;  "IMAGEDATA of the display stream, not textstream") - (SETQ DDPILOTBBT (ffetch DDPILOTBBT of DISPLAYDATA)) - (SETQ XOFFSET (ffetch DDXOFFSET of DISPLAYDATA)) + (SETQ DDPILOTBBT (ffetch DDPILOTBBT of DISPLAYDATA)) + (SETQ XOFFSET (ffetch DDXOFFSET of DISPLAYDATA)) - (* ;; "The X position of the left edge of the window, since \TEDIT.BLTCHAR works on the screen bitmap itself.") + (* ;; "The X position of the left edge of the window, since \TEDIT.BLTCHAR works on the screen bitmap itself.") - (SETQ CLIPLEFT (ffetch DDClippingLeft of DISPLAYDATA)) + (SETQ CLIPLEFT (ffetch DDClippingLeft of DISPLAYDATA)) (* ;  "The left and right edges of the clipping region for the text display window.") - (SETQ CLIPRIGHT (ffetch DDClippingRight of DISPLAYDATA)) + (SETQ CLIPRIGHT (ffetch DDClippingRight of DISPLAYDATA)) - (* ;; "We know that the line's first CLOOKS comes before the first CHAR") + (* ;; "We know that the line's first CLOOKS comes before the first CHAR") - [for CHARSLOT CLOOKS LOOKSTARTX (TX _ (IPLUS XOFFSET (FGETLD LINE LX1))) - (TERMSA _ (FGETTOBJ TEXTOBJ TXTTERMSA)) incharslots THISLINE - do - (* ;; - "Display the line character by character. CHAR and CHARW are bound to CHARSLOT values") + (for CHARSLOT LOOKSTARTX OLDCLOOKS OLDCOLOR (TX _ (IPLUS XOFFSET (FGETLD LINE LX1))) + (TERMSA _ (FGETTOBJ TEXTOBJ TXTTERMSA)) incharslots THISLINE + do + (* ;; + "Display the line character by character. CHAR, CHARW, and CHARCL are bound to CHARSLOT values") - (CL:WHEN (FMEMB CHAR (CHARCODE (EOL FORM))) + (CL:UNLESS (EQ OLDCLOOKS CHARCL) (* ; "New looks") + (CL:UNLESS LOOKSTARTX (* ; + "LOOKSTARTX: Starting X position for the current-looks text.") + (SETQ LOOKSTARTX (IDIFFERENCE TX XOFFSET))) + (freplace DDXPOSITION of DISPLAYDATA with (IDIFFERENCE TX XOFFSET)) + (* ; + "Make the displaystream reflect our current X position") + (\TEDIT.MODIFYLOOKS LINE LOOKSTARTX DS OLDCLOOKS (FGETLD LINE LDESCENT)) + (DSPFONT (FGETCLOOKS CHARCL CLFONT) + DS) + (CL:UNLESS (EQ OLDCOLOR (SETQ OLDCOLOR (FGETCLOOKS CHARCL CLCOLOR))) + (DSPCOLOR OLDCOLOR DS)) + (CL:UNLESS (EQ 0 (FGETCLOOKS CHARCL CLOFFSET)) + (* ; "Account for super/subscripting") + (RELMOVETO 0 (FGETCLOOKS CHARCL CLOFFSET) + DS)) + (SETQ LOOKSTARTX (IDIFFERENCE TX XOFFSET)) + (SETQ OLDCLOOKS CHARCL)) + (CL:WHEN (FMEMB CHAR (CHARCODE (EOL FORM))) (* ;  "\FORMATLINE used space-width for EOL and FORM. Display them that way.") - (SETQ CHAR (CHARCODE SPACE))) - (SELCHARQ CHAR - ((TAB Meta,TAB) - (CL:WHEN (OR (EQ CHAR (CHARCODE Meta,TAB)) - (FGETCLOOKS CLOOKS CLLEADER) - (EQ (FGETCLOOKS CLOOKS CLUSERINFO) + (SETQ CHAR (CHARCODE SPACE))) + (if (MEMB CHAR (CHARCODE (TAB Meta,TAB))) + then (CL:WHEN (OR (EQ CHAR (CHARCODE Meta,TAB)) + (FGETCLOOKS CHARCL CLLEADER) + (EQ (FGETCLOOKS CHARCL CLUSERINFO) 'DOTTEDLEADER)) (* ;; "Not just white space, have to fill in with dots.") - (\TEDIT.DISPLAYLINE.TABS CHARW DS TX TERMSA LINE CLOOKS DISPLAYDATA + (\TEDIT.DISPLAYLINE.TABS CHARW DS TX TERMSA LINE CHARCL DISPLAYDATA DDPILOTBBT CLIPRIGHT TEXTOBJ)) - (add TX CHARW)) - (NIL (* ; - "Must be looks. Line-start looks are guaranteed to come before any character/object") - (CL:WHEN (type? CHARLOOKS CHARW) - (CL:UNLESS LOOKSTARTX (* ; - "LOOKSTARTX: Starting X position for the current-looks text.") - (SETQ LOOKSTARTX (IDIFFERENCE TX XOFFSET))) - (freplace DDXPOSITION of DISPLAYDATA with (IDIFFERENCE TX XOFFSET)) - (* ; - "Make the displaystream reflect our current X position") - (CL:WHEN CLOOKS (* ; - "Underline/overline/strike the just-finished looks run") - (\TEDIT.MODIFYLOOKS LINE LOOKSTARTX DS CLOOKS (FGETLD LINE - LDESCENT))) - (SETQ CLOOKS CHARW) - (DSPFONT (FGETCLOOKS CLOOKS CLFONT) - DS) - (CL:UNLESS (EQ 0 (FGETCLOOKS CLOOKS CLOFFSET)) - (* ; "Account for super/subscripting") - (RELMOVETO 0 (FGETCLOOKS CLOOKS CLOFFSET) - DS)) - (SETQ LOOKSTARTX (IDIFFERENCE TX XOFFSET)))) - (PROGN (if (IMAGEOBJP CHAR) - then - (* ;; "Go to the base line, left edge of the image region.") - - (SETQ CURY (DSPYPOSITION NIL DS)) - (MOVETO (IDIFFERENCE TX XOFFSET) - CURY DS) - (APPLY* (IMAGEOBJPROP CHAR 'DISPLAYFN) - CHAR DS 'DISPLAY (FGETTOBJ TEXTOBJ STREAMHINT)) - (DSPFONT (FGETCLOOKS CLOOKS CLFONT) - DS) (* ; + (add TX CHARW) + elseif (IMAGEOBJP CHAR) + then + (* ;; "Go to the base line, left edge of the image region.") + + (SETQ CURY (DSPYPOSITION NIL DS)) + (MOVETO (IDIFFERENCE TX XOFFSET) + CURY DS) + (APPLY* (IMAGEOBJPROP CHAR 'DISPLAYFN) + CHAR DS 'DISPLAY TSTREAM) + (DSPFONT (FGETCLOOKS CHARCL CLFONT) + DS) (* ;  "Restore the character font, move to just after the object.") - (MOVETO (IDIFFERENCE TX XOFFSET) - CURY DS) - elseif TERMSA - then (* ; "Using special instrns from TERMSA") - (\DSPPRINTCHAR DS CHAR) - elseif (DIACRITICP CHAR) - then (MI-TEDIT.BLTCHAR CHAR DS (IPLUS TX (\TEDIT.DIACRITIC.SHIFT - CHARSLOT THISLINE DS)) - DISPLAYDATA DDPILOTBBT CLIPRIGHT) - (SETQ CHARW 0) - elseif (EQ 'KERN CHAR) - then (RELMOVETO CHARW 0) - else (* ; "Native charcodes") - (MI-TEDIT.BLTCHAR CHAR DS TX DISPLAYDATA DDPILOTBBT CLIPRIGHT)) - (add TX CHARW))) finally (replace DDXPOSITION of DISPLAYDATA - with (IDIFFERENCE TX XOFFSET)) + (MOVETO (IDIFFERENCE TX XOFFSET) + CURY DS) + (add TX CHARW) + elseif TERMSA + then (* ; "Using special instrns from TERMSA") + (\DSPPRINTCHAR DS CHAR) + elseif (DIACRITICP CHAR) + then (MI-TEDIT.BLTCHAR CHAR DS (IPLUS TX (\TEDIT.DIACRITIC.SHIFT CHARSLOT + THISLINE DS)) + DISPLAYDATA DDPILOTBBT CLIPRIGHT) + (SETQ CHARW 0) + elseif (EQ 'KERN CHAR) + then (RELMOVETO CHARW 0) + else (* ; "Native charcodes") + (MI-TEDIT.BLTCHAR CHAR DS TX DISPLAYDATA DDPILOTBBT CLIPRIGHT) + (add TX CHARW)) finally (replace DDXPOSITION of DISPLAYDATA + with (IDIFFERENCE TX XOFFSET)) (* ;  "Make any necessary looks mods to the last run of characters") - (CL:WHEN CLOOKS - (\TEDIT.MODIFYLOOKS LINE LOOKSTARTX DS - CLOOKS (FGETLD LINE LDESCENT)))]) - (BITBLT CACHE 0 0 WINDOWDS 0 (FGETLD LINE YBOT) - (FGETTOBJ TEXTOBJ WRIGHT) - LHEIGHT - 'INPUT - 'REPLACE) (* ; + (\TEDIT.MODIFYLOOKS LINE LOOKSTARTX DS OLDCLOOKS + (FGETLD LINE LDESCENT)))) + (BITBLT CACHE 0 0 WINDOWDS 0 (FGETLD LINE YBOT) + (PANERIGHT PANE) + LHEIGHT + 'INPUT + 'REPLACE) (* ;  "Paint the cached image on the screen (this lessens flicker during update)") - (CL:WHEN (GETPLOOKS (FGETLD LINE LPARALOOKS) - FMTREVISED) (* ; + (CL:WHEN (GETPLOOKS (FGETLD LINE LPARALOOKS) + FMTREVISED) (* ;  "This paragraph has been revised, so mark it.") - (\TEDIT.MARK.REVISION TEXTOBJ (FGETLD LINE LPARALOOKS) - WINDOWDS LINE)) - (SELECTQ (FGETLD LINE LMARK) - (GREY (* ; + (\TEDIT.MARK.REVISION TEXTOBJ (FGETLD LINE LPARALOOKS) + WINDOWDS LINE)) + (SELECTQ (FGETLD LINE LMARK) + (GREY (* ;  "This line has some property that isn't visible to the user. Tell him to be careful") - (BLTSHADE 42405 WINDOWDS 0 (FGETLD LINE YBASE) - 6 6 'PAINT)) - (SOLID (BLTSHADE BLACKSHADE WINDOWDS 0 (FGETLD LINE YBASE) + (BLTSHADE 42405 WINDOWDS 0 (FGETLD LINE YBASE) 6 6 'PAINT)) - (BLTSHADE WHITESHADE WINDOWDS 0 (FGETLD LINE YBASE) - 6 6 'PAINT)) - LINE]) + (SOLID (BLTSHADE BLACKSHADE WINDOWDS 0 (FGETLD LINE YBASE) + 6 6 'PAINT)) + (BLTSHADE WHITESHADE WINDOWDS 0 (FGETLD LINE YBASE) + 6 6 'PAINT)) + LINE]) (\TEDIT.DISPLAYLINE.TABS [LAMBDA (CW DS TX TERMSA LINE CLOOKS DISPLAYDATA DDPILOTBBT CLIPRIGHT TEXTOBJ) @@ -2319,7 +2324,8 @@ BOTTOMNEWLINE]) (\TEDIT.PREVIOUS.LINEBREAK - [LAMBDA (TSTREAM CHNO) (* ; "Edited 18-May-2024 18:53 by rmk") + [LAMBDA (TSTREAM CHNO) (* ; "Edited 19-Apr-2025 23:58 by rmk") + (* ; "Edited 18-May-2024 18:53 by rmk") (* ; "Edited 3-May-2024 23:33 by rmk") (* ; "Edited 17-Mar-2024 12:05 by rmk") (* ; "Edited 11-Dec-2023 21:59 by rmk") @@ -2335,7 +2341,7 @@ else (* ;; "Otherwise, move back thru the text until we find a for-sure line break. ") - (LET ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) NCHARS) (if (AND NIL (FGETTOBJ TEXTOBJ FORMATTEDP)) then @@ -2359,18 +2365,14 @@ 1)]) (\TEDIT.UPDATE.LINES - [LAMBDA (TEXTOBJ REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "Edited 30-Mar-2025 10:02 by rmk") + [LAMBDA (TSTREAM REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "Edited 21-Apr-2025 20:30 by rmk") + (* ; "Edited 9-Apr-2025 12:59 by rmk") + (* ; "Edited 6-Apr-2025 14:23 by rmk") + (* ; "Edited 30-Mar-2025 10:02 by rmk") (* ; "Edited 1-Feb-2025 10:34 by rmk") (* ; "Edited 21-Jan-2025 13:25 by rmk") (* ; "Edited 7-Jan-2025 11:55 by rmk") (* ; "Edited 7-Dec-2024 21:52 by rmk") - (* ; "Edited 29-Nov-2024 22:56 by rmk") - (* ; "Edited 26-Nov-2024 03:35 by rmk") - (* ; "Edited 22-Nov-2024 17:57 by rmk") - (* ; "Edited 20-Nov-2024 14:52 by rmk") - (* ; "Edited 17-Nov-2024 19:52 by rmk") - (* ; "Edited 11-Nov-2024 23:51 by rmk") - (* ; "Edited 1-Nov-2024 22:05 by rmk") (* ; "Edited 13-Sep-2024 22:27 by rmk") (* ; "Edited 3-Jul-2024 15:42 by rmk") (* ; "Edited 7-May-2024 10:41 by rmk") @@ -2379,50 +2381,66 @@ (* ; "Edited 22-Jun-2023 15:50 by rmk") (* ; "Edited 4-May-2023 10:29 by rmk") - (* ;; "This updates the lines in each pane given that NCHARSCHANGED characters with respect to FIRSTCHANGEDCHNO have been modified. It tries to reuse formatting information and screen bitmap images that are valid after the change.") + (* ;; " ") + + (* ;; "The last valid line for each pane is a line above the change whose layout is not affected by the change--either because it is forced-end, or we can tell that a change in the following line does not propagate further back. If the pane would not be affected, its last valid line is NIL and the pane is not further processed.") + + (* ;; "For a pane with a last valid line, the next valid line is the line somewhere after the last valid that is also not affected by the change--either because the line before it is a forced-end or we can tell that the change stops propagating at the line before it. The next value line is NIL if the change propagates through the bottom of the pane--all lower lines must be reformatted.") + + (* ;; "The character numbers of NEXTVALIDLINE and all lines below it have been adjusted to reflect the NCHARSADDED (positive or negative), but their Y positions have not yet been adjusted. The lines in the gap between the last valid and next valid have also been chopped out.") (* ;; "See line-segmentation comments in \TEDIT.VALID.LINES.") - (CL:UNLESS (GETTOBJ TEXTOBJ TXTDON'TUPDATE) - [if (type? SELECTION FIRSTCHANGEDCHNO) - then (SETQ NCHARSCHANGED (FGETSEL FIRSTCHANGEDCHNO DCH)) - (SETQ FIRSTCHANGEDCHNO (FGETSEL FIRSTCHANGEDCHNO CH#)) - elseif (type? SELPIECES FIRSTCHANGEDCHNO) - then [SETQ NCHARSCHANGED (ADD1 (IDIFFERENCE (FGETSPC FIRSTCHANGEDCHNO SPLASTCHAR) - (FGETSPC FIRSTCHANGEDCHNO SPFIRSTCHAR] - (SETQ FIRSTCHANGEDCHNO (FGETSPC FIRSTCHANGEDCHNO SPFIRSTCHAR)) - else (CL:UNLESS FIRSTCHANGEDCHNO (SETQ FIRSTCHANGEDCHNO 1)) - (CL:UNLESS NCHARSCHANGED - (SETQ NCHARSCHANGED (FGETTOBJ TEXTOBJ TEXTLEN)))] - (\TEDIT.SHOWSEL NIL NIL TEXTOBJ) - (for PANE VALIDS LASTVALID NEXTVALID LASTGAPLINE BITMAPLINES inpanes TEXTOBJ - when (SETQ VALIDS (\TEDIT.VALID.LINES PANE FIRSTCHANGEDCHNO NCHARSCHANGED REASON - (FGETTOBJ TEXTOBJ STREAMHINT))) - do - (* ;; - "Create/format/position/display new lines between LASTVALID and NEXTVALID exclusive") - - (SETQ LASTVALID (CAR VALIDS)) - (SETQ NEXTVALID (CDR VALIDS)) (* ; "MEASURED.LINES creates, measures, and links the lines from LASTVALID to the last pre-NEXTVALID character, without displaying. They may be in the bitmap.") - [SETQ LASTGAPLINE (\TEDIT.MEASURED.LINES LASTVALID PANE TEXTOBJ - (CL:IF NEXTVALID - (SUB1 (FGETLD NEXTVALID LCHAR1)) - (TEXTLEN TEXTOBJ))] - - (* ;; + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (CL:UNLESS (FGETTOBJ TEXTOBJ TXTDON'TUPDATE) + (\TEDIT.NOSEL TSTREAM) + (for PANE LASTVALID NEXTVALID LASTGAPLINE BITMAPLINES (LASTCHANGEDCHNO + _ + (SUB1 (IPLUS FIRSTCHANGEDCHNO + NCHARSCHANGED))) + (DELTA _ (SELECTQ REASON + (INSERTION NCHARSCHANGED) + (DELETION (IMINUS NCHARSCHANGED)) + ((CHANGED LOOKS) + 0) + (\TEDIT.THELP "BAD REASONS FOR VALID LINES"))) inpanes TEXTOBJ + when (SETQ LASTVALID (\TEDIT.LASTVALIDLINE FIRSTCHANGEDCHNO LASTCHANGEDCHNO PANE + TSTREAM)) + do + (* ;; + "Create/format/position/display new lines between LASTVALID and NEXTVALID exclusive") + + (SETQ NEXTVALID (\TEDIT.NEXTVALIDLINE LASTCHANGEDCHNO PANE TSTREAM)) + (CL:UNLESS (ZEROP DELTA) (* ; + "Adjust the character numbers of the lower valid lines") + (for L inlines NEXTVALID do (add (FGETLD L LCHAR1) + DELTA) + (add (FGETLD L LCHARLAST) + DELTA))) + + (* ;; "MEASURED.LINES creates, measures, and links the lines from LASTVALID to the last pre-NEXTVALID character, without displaying. They may be in the bitmap.") + + [SETQ LASTGAPLINE (\TEDIT.MEASURED.LINES LASTVALID PANE TSTREAM + (CL:IF NEXTVALID + (SUB1 (FGETLD NEXTVALID LCHAR1)) + (TEXTLEN TEXTOBJ))] + + (* ;;  "The chain that ended at LASTVALID now continues thru LASTGAPLINE to NEXVALID and below.") - (LINKLD LASTGAPLINE NEXTVALID) - (if NEXTVALID - then (SETQ BITMAPLINES (\TEDIT.BITMAPLINES PANE NEXTVALID)) - else (\TEDIT.SUFFIXLINE.CREATE PANE TEXTOBJ LASTGAPLINE)) + (LINKLD LASTGAPLINE NEXTVALID) + (if NEXTVALID + then (SETQ BITMAPLINES (\TEDIT.BITMAPLINES PANE NEXTVALID)) + else (\TEDIT.SUFFIXLINE.CREATE PANE TSTREAM LASTGAPLINE)) - (* ;; "If LASTVALID is not visible (above the pane), make sure that its NEXT is linked to the PANE's prefix") + (* ;; "If LASTVALID is not visible (above the pane), make sure that its NEXT is linked to the PANE's prefix") - (\TEDIT.SHIFTLINES LASTVALID PANE TEXTOBJ BITMAPLINES)))]) + (\TEDIT.SHIFTLINES LASTVALID PANE TSTREAM BITMAPLINES)))]) (\TEDIT.PANE.CREATELINES - [LAMBDA (TEXTOBJ PANE LCHARLAST YBOT) (* ; "Edited 28-Mar-2025 20:55 by rmk") + [LAMBDA (TSTREAM PANE LCHARLAST YBOT) (* ; "Edited 21-Apr-2025 12:02 by rmk") + (* ; "Edited 19-Apr-2025 22:07 by rmk") + (* ; "Edited 28-Mar-2025 20:55 by rmk") (* ; "Edited 8-Feb-2025 23:52 by rmk") (* ; "Edited 29-Nov-2024 09:14 by rmk") (* ; "Edited 20-Nov-2024 14:26 by rmk") @@ -2455,10 +2473,10 @@ LDUMMY _ T LCHAR1 _ 0 LCHARLAST _ (OR LCHARLAST 0) - RIGHTMARGIN _ (SUB1 (FGETTOBJ TEXTOBJ WRIGHT)) + RIGHTMARGIN _ (SUB1 (PANERIGHT PANE)) LHEIGHT _ 0 LX1 _ 0 - LXLIM _ (FGETTOBJ TEXTOBJ WRIGHT) + LXLIM _ (PANERIGHT PANE) FORCED-END _ (CHARCODE EOL) LASCENT _ 0 LDESCENT _ 0 @@ -2471,18 +2489,19 @@ (SETYBOT PREFIX (OR YBOT (PANEHEIGHT PANE))) (FSETPANEPROP (PANEPROPS PANE) PREFIXLINE PREFIX) - (\TEDIT.SUFFIXLINE.CREATE PANE TEXTOBJ PREFIX) + (\TEDIT.SUFFIXLINE.CREATE PANE TSTREAM PREFIX) PREFIX]) (\TEDIT.SUFFIXLINE.CREATE - [LAMBDA (PANE TEXTOBJ PREVLINE) (* ; "Edited 28-Mar-2025 20:56 by rmk") + [LAMBDA (PANE TSTREAM PREVLINE) (* ; "Edited 21-Apr-2025 12:00 by rmk") + (* ; "Edited 28-Mar-2025 20:56 by rmk") (* ; "Edited 29-Nov-2024 10:54 by rmk") (* ; "Edited 22-Nov-2024 10:22 by rmk") (* ; "Edited 20-Nov-2024 14:25 by rmk") (* ;; "A new suffix line is created, if needed, and linked whenever the bottom is reached. This gets the paragraph leading and height parameters from the previous line. This may already be formatted as a dummy, if LCHARLIM is past the end.") - (LET ([SUFFIX (LINEDESCRIPTOR! (\TEDIT.FORMATLINE TEXTOBJ (GETLD PREVLINE LCHARLIM) + (LET ([SUFFIX (LINEDESCRIPTOR! (\TEDIT.FORMATLINE TSTREAM (GETLD PREVLINE LCHARLIM) (PANESUFFIX PANE] EMPTYLINE) (FSETLD SUFFIX LDUMMY T) @@ -2499,7 +2518,8 @@ SUFFIX]) (\TEDIT.LINES.BELOW - [LAMBDA (PREVLINE PANE TEXTOBJ) (* ; "Edited 21-Jan-2025 13:31 by rmk") + [LAMBDA (PREVLINE PANE TSTREAM) (* ; "Edited 21-Apr-2025 11:53 by rmk") + (* ; "Edited 21-Jan-2025 13:31 by rmk") (* ; "Edited 24-Nov-2024 14:57 by rmk") (* ; "Edited 22-Nov-2024 00:53 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") @@ -2525,14 +2545,15 @@ (* ;; "Formats and displays lines after PREVLINE down to the one is at least partially visible at the bottom of PANE. Each line is positioned with respect to its predecessor and linked to it. The last visible line is set as the BOTTOMLINE of PANE, PANE's suffix is adjusted to cover the bitmap and all the unseen later characters. Returns the last displayed line.") - (for L NEXT YBOT (BOTTOM _ (\TEDIT.ONSCREEN? PANE 'BOTTOM)) inlines PREVLINE - eachtime (SETQ NEXT (\TEDIT.FORMATLINE TEXTOBJ (FGETLD L LCHARLIM))) + (for L NEXT YBOT (TEXTOBJ _ (FTEXTOBJ TSTREAM)) + (BOTTOM _ (\TEDIT.ONSCREEN? PANE 'BOTTOM)) inlines PREVLINE + eachtime (SETQ NEXT (\TEDIT.FORMATLINE TSTREAM (FGETLD L LCHARLIM))) until (FGETLD NEXT LDUMMY) do (SETQ YBOT (\TEDIT.LINE.BOTTOM L NEXT)) (SETYBOT NEXT YBOT) (CL:WHEN (ILESSP YBOT BOTTOM) (* ; "Ran off the bottom") (RETURN (if (\TEDIT.SHOW.AT.BOTTOMP NEXT PANE) - then (\TEDIT.DISPLAYLINE TEXTOBJ NEXT PANE) + then (\TEDIT.DISPLAYLINE TSTREAM NEXT PANE) (LINKLD L NEXT) (* ; "Keep NEXT with partial display") NEXT @@ -2542,7 +2563,7 @@ (CL:WHEN (FGETLD NEXT LDUMMY) (* ; "Suffix line: end of pane") (RETURN L)) - (\TEDIT.DISPLAYLINE TEXTOBJ NEXT PANE) + (\TEDIT.DISPLAYLINE TSTREAM NEXT PANE) (* ;  "Cached formatting is good for display") finally @@ -2552,7 +2573,8 @@ (RETURN L]) (\TEDIT.MEASURED.LINES - [LAMBDA (PREVLINE PANE TEXTOBJ LASTCHAR) (* ; "Edited 21-Jan-2025 13:30 by rmk") + [LAMBDA (PREVLINE PANE TSTREAM LASTCHAR) (* ; "Edited 21-Apr-2025 12:05 by rmk") + (* ; "Edited 21-Jan-2025 13:30 by rmk") (* ; "Edited 7-Dec-2024 16:55 by rmk") (* ; "Edited 1-Dec-2024 11:26 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") @@ -2562,7 +2584,7 @@ (for L NEXT NEXTCHAR1 YBOT (PBOTTOM _ (PANEBOTTOM PANE)) inlines PREVLINE eachtime (SETQ NEXTCHAR1 (FGETLD L LCHARLIM)) while (ILEQ NEXTCHAR1 LASTCHAR) - do (SETQ NEXT (\TEDIT.FORMATLINE TEXTOBJ NEXTCHAR1)) (* ; + do (SETQ NEXT (\TEDIT.FORMATLINE TSTREAM NEXTCHAR1)) (* ;  "Always a next if the while succeeds") (SETQ YBOT (\TEDIT.LINE.BOTTOM L NEXT)) (SETYBOT NEXT YBOT) @@ -2579,166 +2601,186 @@ (RETURN L]) -(\TEDIT.VALID.LINES - [LAMBDA (PANE FIRSTCHANGEDCHNO NCHARSCHANGED REASON TSTREAM) - (* ; "Edited 30-Mar-2025 09:12 by rmk") - (* ; "Edited 27-Mar-2025 12:40 by rmk") - (* ; "Edited 21-Jan-2025 15:22 by rmk") - (* ; "Edited 6-Jan-2025 15:19 by rmk") - (* ; "Edited 22-Nov-2024 16:54 by rmk") - (* ; "Edited 20-Nov-2024 12:37 by rmk") - (* ; "Edited 21-Oct-2024 00:33 by rmk") - (* ; "Edited 5-Jul-2024 22:58 by rmk") - (* ; "Edited 4-Jul-2024 10:48 by rmk") - (* ; "Edited 23-May-2024 12:48 by rmk") - (* ; "Edited 22-Feb-2024 01:05 by rmk") - (* ; "Edited 3-Nov-2023 12:07 by rmk") - (* ; "Edited 14-Jun-2023 15:55 by rmk") - (* ; "Edited 17-May-2023 09:32 by rmk") - (* ; "Edited 15-May-2023 17:51 by rmk") +(\TEDIT.VALID.LASTCHNOS + [LAMBDA (FIRSTCHANGEDCHNO TSTREAM) (* ; "Edited 18-Apr-2025 09:35 by rmk") - (* ;; "Called when changes have been made to the document that affect the lines displayed in PANE. Return NIL if the change is not visible in PANE. Otherwise, this divides the lines in PANE into 3 segments:") + (* ;; "This returns the number of the last-visible valid character in the pane that contains the change and has the most visible lines above it. If the last valid character is not visible, returns the cons of the shortest list of valid-lines ending above the topline. (We might search that backwards, but the CAR is needed to avoid collection.) ") - (* ;; " 1. a prefix of lines from the top visible line (next of PANEPREFIX) to the LASTVALID line, the line just before the first changed line.") + (* ;; " Note that all character numbers above FIRSTCHANGEDCHNO are pre-change, so it is OK to look backwards.") - (* ;; " 2. an intermediate sequence of lines that are (or may be) no longer valid because of the change.") + (LET (MOSTVISIBLE FIRSTCHANGEDLINE LASTVALIDLINE) + (CL:WHEN [SETQ MOSTVISIBLE (for PANE inpanes (FTEXTOBJ TSTREAM) + when (IBETWEENP FIRSTCHANGEDCHNO (FGETLD (PANEPREFIX PANE) + LCHARLIM) + (SUB1 (FGETLD (PANESUFFIX PANE) + LCHAR1))) + largest (IDIFFERENCE FIRSTCHANGEDCHNO (FGETLD (PANEPREFIX + PANE) + LCHARLIM] + (SETQ FIRSTCHANGEDLINE (find L inlines (PANEPREFIX MOSTVISIBLE) + suchthat (FWITHINLINEP FIRSTCHANGEDCHNO L))) - (* ;; - " 3. a suffix of post-change lines, starting with NEXTVALID, that are known still to be valid.") + (* ;; "There is a single last valid above the first change that applies to every pane. If the global lastvalid corresponds to a line in a particular pane, then that existing line is the last valid for that pane.;;\") - (* ;; "A line is %"valid%" if its line breaking is unaffected by the change and the bits in the screen bitmap that represented it before the change are still correct.") + (* ;; "We want to return a chain of lines that runs upwards from just before the changeline to the last valid. With luck, the last valid is one of the lines above the change line in the pane that has the most above-change lines.") - (* ;; "") + (* ;; "If not, then the lines of the most visible pane are totally irrelevant. We have to compute the lines from the top of the most visible pane (it's lines are totally irrelevant)") - (* ;; "The segmentation information is returned to the caller as a pair of lines (LASTVALID . NEXTVALID). Segment 1 is then the sequence of lines chained from the prefix line to LASTVALID, segment 3 is the sequence beginning at NEXTVALID. The segment 2 lines originally between LASTVALID and NEXTVALID are useless, so here we just nuke them out (by smashing the NEXTLINE of LASTVALID and PREVLINE of NEXTVALID).") + (* ;; "If we can't") - (* ;; "") + [if (ILESSP (FGETLD FIRSTCHANGEDLINE LFIRSTSEPR) + FIRSTCHANGEDCHNO) + then + (* ;; "The prev of a line containing an internal sepr is valid") - (* ;; "This assumes that the change has already been installed in the piece table after character FIRSTCHANGEDCHNO. The LCHAR1/LAST valus for lines through LASTVALID are unaffected by the change, the values for all later lines are off by NCHARSCHANGED (negative for deletions, positive for insertions). The positions for NEXTVALID and beyond are adjusted so that they are correct with respect to the revised piece table. Note that this only deals with the character numbers of lines that will persist. Although the Y positions for segment 1 lines are good,segment 3 positions cannot be adjusted until the replacements for segment 2 lines have been calculated.") + (FGETLD FIRSTCHANGEDLINE PREVLINE) + elseif (for L backlines (FGETLD FIRSTCHANGEDLINE PREVLINE) + do + (* ;; "Line with a forced end is valid") - (* ;; "") + (CL:WHEN (FGETLD L FORCED-END) + (RETURN L)) - (* ;; "Edge conditions:") + (* ;; "The prev of a line containing an internal sepr is valid") - (* ;; "If the first visible line is changed, then there are no existing segment 1 lines and no existing LASTVALID line to return. If the first changed line is also the first line of the document, then LASTVALID is NIL. Otherwise, we fabricate a new line with LCHARLAST and YBOT just above the changed top line and returned it as LASTVALID. Either way, the next of PREFIXLINE is set to NIL to indicate that there is no chain of real segment 1 lines with valid formatting and reusable bitmaps. ") + (CL:WHEN (ILESSP (FGETLD L LFIRSTSEPR) + (FGETLD L LCHARLAST)) + (RETURN (FGETLD L PREVLINE))) finally - (* ;; "") + (* ;; "We create a chain of last-valid character numbers corresponding to a chain of valid lines that descends from the latest previous forced-end to the topline of MOSTVISIBLE.") - (* ;; "If the last visible line is changed, then there is no NEXTVALID line, indicated by NEXTVALID=NIL. The next valid could be a currently non-existent line just below the pane if we are not at the end of the document. If LCHARLAST of the last visible line is TEXTLEN, there is at best a trailing line.") + (RETURN (\TEDIT.LINES.ABOVE + TSTREAM + (PANETOPLINE MOSTVISIBLE + ])]) - (* ;; "") +(\TEDIT.VALID.NEXTCHNOS + [LAMBDA (LASTCHANGEDCHNO TSTREAM DELTA) (* ; "Edited 17-Apr-2025 11:33 by rmk") - (* ;; "Note that this is mostly an optimization to avoid unnecessary reformatting and redisplaying of still-valid lines in favor of bitbltting a block of their currently visible images. Smashing all lines to NIL and refilling each pane would also give the correct behavior, but slower. Intermediate would be smashing all lines below the last valid.") - - (* ;; "LASTCHANGEDCHNO is in the before-change sequence. I.e., if FIRST is 5 and 6 were being deleted, then it is 10. But it doesn't correspond to the surviving line positions after they have been adjusted. It would have to be adjusted too.") - - (PROG ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) - (LASTCHANGEDCHNO (SUB1 (IPLUS FIRSTCHANGEDCHNO NCHARSCHANGED))) - (SUFFIXLINE (PANESUFFIX PANE)) - (DELTA (SELECTQ REASON - (INSERTION NCHARSCHANGED) - (DELETION (IMINUS NCHARSCHANGED)) - ((CHANGED LOOKS) - NIL) - (\TEDIT.THELP "BAD REASONS FOR VALID LINES"))) - FIRSTCHANGEDLINE LASTCHANGEDLINE LASTVALIDLINE NEXTVALIDLINE LINESABOVE) - (CL:WHEN (EQ 0 (TEXTLEN TEXTOBJ)) (* ; "Empty document") - (RETURN (CONS (PANEPREFIX PANE)))) - (CL:WHEN (IGEQ FIRSTCHANGEDCHNO (FGETLD SUFFIXLINE LCHAR1)) - (* ; - "Change after previously visible lines") - (CL:UNLESS (ILEQ LASTCHANGEDCHNO (TEXTLEN TEXTOBJ)) - (* ; - "Change is after PANE, nothing to do") - (RETURN NIL)) + (* ;; "This returns the number of the next-visible valid character in the pane that has the most visible lines below the change. If the last valid character is not visible, could return the shortest list of valid-lines starting below the bottomline. ") - (* ;; "Adding at the end of the document: insert a new line") - - (\TEDIT.INSERTLINE (\TEDIT.FORMATLINE TEXTOBJ FIRSTCHANGEDCHNO) - SUFFIXLINE)) - (SETQ FIRSTCHANGEDLINE (find L inlines (PANEPREFIX PANE) suchthat (FWITHINLINEP - FIRSTCHANGEDCHNO L - ))) - (CL:UNLESS FIRSTCHANGEDLINE (* ; "Change is below PANE") - (RETURN NIL)) + (* ;; " ") - (* ;; "Change starts above or inside PANE, Where does it end?") + (* ;; "We can stop when we see a forced end-- characters won't move around after that. In the usual case, the forced-end is a also the last line of a paragraph, but we can't just take the first line of the next paragraph because we can't deal here with whatever paragraph leading it might have (and the venue sysout also screwed up in that case).") - (SETQ LASTCHANGEDLINE (find L inlines FIRSTCHANGEDLINE suchthat (FWITHINLINEP - LASTCHANGEDCHNO L))) - (CL:WHEN LASTCHANGEDLINE + (* ;; "So we go for the second line of the next paragraph, if there is one") - (* ;; - "Last changed line is visible, its changes may cause character to shift to or from lower lines.") + (* ;; " Note that all character numbers below LASTCHANGEDCHNO are pre-change, so it is OK to look forward in the lines") + (* ; "") + (LET (MOSTVISIBLE LASTCHANGEDLINE LASTVALIDLINE) + (CL:WHEN (SETQ MOSTVISIBLE (for PANE inpanes (FTEXTOBJ TSTREAM) + when (IBETWEENP LASTCHANGEDCHNO (FGETLD (PANEPREFIX PANE) + LCHARLIM) + (SUB1 (FGETLD (PANESUFFIX PANE) + LCHAR1))) + largest (IDIFFERENCE (SUB1 (FGETLD (PANESUFFIX PANE) + LCHAR1)) + LASTCHANGEDCHNO))) + (SETQ LASTCHANGEDLINE (find L inlines (PANEPREFIX MOSTVISIBLE) + suchthat (FWITHINLINEP LASTCHANGEDCHNO L))) + + (* ;; "So we go for the second line of the next paragraph, if there is one") - (SETQ NEXTVALIDLINE (\TEDIT.NEXTVALIDLINE LASTCHANGEDLINE TSTREAM))) + (* ;; + "The line after a forced end is valid. But maybe we can figure out how to stop sooner?") - (* ;; "") + (for L inlines LASTCHANGEDLINE when (FGETLD L FORCED-END) + do + (* ;; "A forced end is usually the last line of a paragraph, and its next line is probably valid. But we skip that one, because we don't know how to deal here with its paragraph leading. If forced but not last, presumably it was a meta-EOL linebreak, no special leading to worry about.") - (SETQ LASTVALIDLINE (\TEDIT.LASTVALIDLINE FIRSTCHANGEDLINE FIRSTCHANGEDCHNO PANE TSTREAM)) - (CL:WHEN NEXTVALIDLINE - (FSETLD NEXTVALIDLINE PREVLINE NIL) - (CL:WHEN DELTA + (CL:WHEN (FGETLD L LSTLN) + (SETQ L (FGETLD L NEXTLINE))) + (RETURN (CL:WHEN (AND L (FGETLD L NEXTLINE)) + (FGETLD (FGETLD L NEXTLINE) + LCHAR1))) finally - (* ;; "If the modification added or substracted to the number of characters, translate the character positions of the still-valid lines that are visible later than the change. ") + (* ;; "Ran off the bottom. Should we build lines down until we fine a true valid character? Or maybe wait to see whether there is another pane that starts in a suffix of the paragraph for which this ends in a prefix.") - (for L inlines NEXTVALIDLINE do (add (FGETLD L LCHAR1) - DELTA) - (add (FGETLD L LCHARLAST) - DELTA)))) + (* ;; "") - (* ;; "") + (* ;; "We would have to add DELTA to build new lines consistent with the document, then subtract DELTA to get consistent with the current lines.") - (CL:WHEN LASTVALIDLINE - (FSETLD LASTVALIDLINE NEXTLINE NIL) (* ; "Chop out the now useless lines") - (RETURN (CONS LASTVALIDLINE NEXTVALIDLINE)))]) + NIL))]) (\TEDIT.LASTVALIDLINE - [LAMBDA (FIRSTCHANGEDLINE FIRSTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 30-Mar-2025 10:00 by rmk") - (* ; "Edited 18-Feb-2025 12:45 by rmk") - (* ; "Edited 29-Nov-2024 09:14 by rmk") - (* ; "Edited 20-Nov-2024 12:37 by rmk") - (* ; "Edited 18-Nov-2024 23:16 by rmk") - (* ; "Edited 17-Nov-2024 19:08 by rmk") - (* ; "Edited 16-Nov-2024 13:25 by rmk") - (* ; "Edited 28-Oct-2024 16:05 by rmk") - (* ; "Edited 28-Jun-2024 15:22 by rmk") - (* ; "Edited 16-Jun-2024 08:27 by rmk") - (* ; "Edited 13-Jun-2024 22:09 by rmk") - (* ; "Edited 25-May-2024 00:28 by rmk") - (* ; "Edited 23-May-2024 12:47 by rmk") - (* ; "Edited 18-May-2024 10:13 by rmk") + [LAMBDA (FIRSTCHANGEDCHNO LASTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 20-Apr-2025 00:08 by rmk") (* ;; "We hope to return an existing line in PANE that is impervious to the change at FIRSTCHARCHANGECHNO. This would be the impervious line closest to FIRSTCHANGEDLINE, usually the immediately preceding line. That line is valid: it and lines above it do not need reformatting or redisplay. But if PANE does not contain an impervious line, and we are not at the beginning of the document, we have to construct lines above PANE until we get to an impervious line, so that we can format forwards.") - (* ;; "A line L is impervious to a change in L+1 if it has a forced end, or if L has at least one separator (space, tab) prior to its change point. The change point is FIRSTCHANGEDCHNO for the first line. If we have to go to earlier lines, then any separator anywhere on the line (at or before LCHARLAST) will stop the back-propagation.") + (* ;; "Note that all character numbers above FIRSTCHANGEDCHNO are pre-change, so it is OK to look backwards.") - (if (ILESSP (FGETLD FIRSTCHANGEDLINE LFIRSTSEPR) - FIRSTCHANGEDCHNO) - then (FGETLD FIRSTCHANGEDLINE PREVLINE) - elseif (for L (TOPLINE _ (PANETOPLINE PANE)) backlines (FGETLD FIRSTCHANGEDLINE PREVLINE) - do - (* ;; "Line with a forced end is valid") + (PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) + FIRSTCHANGEDLINE) + (CL:WHEN (OR (ILEQ FIRSTCHANGEDCHNO (FGETLD (PANETOPLINE PANE) + LCHARLAST)) + (ZEROP (FGETLD (PANETOPLINE PANE) + LCHARLAST))) + + (* ;; "Change is above PANE--does it impinge?") + + (RETURN (CL:UNLESS (ILESSP (CAR (\TEDIT.PARA.LAST TEXTOBJ LASTCHANGEDCHNO)) + (FGETLD (PANEPREFIX PANE) + LCHARLIM)) + + (* ;; "The changed paragraph doesn't end above PANE--it impinges") + + (FSETLD (PANEPREFIX PANE) + LCHARLIM + (FGETLD (CDR (OR (\TEDIT.LINES.ABOVE TSTREAM (PANETOPLINE PANE)) + (RETURN NIL))) + LCHAR1)) + (PANEPREFIX PANE)))) + + (* ;; "") + + [if (IGEQ FIRSTCHANGEDCHNO (FGETLD (PANESUFFIX PANE) + LCHAR1)) + then + (* ;; "Change starts below PANE--does it propagate upwards?") - (CL:WHEN (FGETLD L FORCED-END) - (RETURN L)) + (CL:WHEN (ILESSP (FGETLD (PANEBOTTOMLINE PANE) + LCHARLIM) + (CAR (\TEDIT.PARA.FIRST TEXTOBJ LASTCHANGEDCHNO))) - (* ;; "The prev of a line containing an internal sepr is valid") + (* ;; "The changed paragraph starts before PANE--doesn't impinge") - (CL:WHEN (ILESSP (FGETLD L LFIRSTSEPR) - (FGETLD L LCHARLAST)) - (RETURN (FGETLD L PREVLINE))) finally (CL:WHEN (SETQ TOPLINE - (CDR (\TEDIT.LINES.ABOVE - TSTREAM TOPLINE))) - (FSETLD (PANEPREFIX PANE) - LCHARLIM - (FGETLD TOPLINE LCHAR1)) - (LINKLD (PANEPREFIX PANE) - TOPLINE) - (RETURN (PANEPREFIX PANE)))]) + (RETURN NIL)) + (SETQ FIRSTCHANGEDLINE (PANEBOTTOMLINE PANE)) + (* ; "LCHAR1 forces the backward scan") + (SETQ FIRSTCHANGEDCHNO (FGETLD FIRSTCHANGEDLINE LCHAR1)) + else + (* ;; "Change is within PANE") + + (SETQ FIRSTCHANGEDLINE (find L inlines (PANEPREFIX PANE) + suchthat (FWITHINLINEP FIRSTCHANGEDCHNO L] + + (* ;; "") + + (* ;; "A relevant %"change%" is now inside PANE.") + + (RETURN (if (ILESSP (FGETLD FIRSTCHANGEDLINE LFIRSTSEPR) + FIRSTCHANGEDCHNO) + then (FGETLD FIRSTCHANGEDLINE PREVLINE) + elseif [for L backlines (FGETLD FIRSTCHANGEDLINE PREVLINE) + do + (* ;; "Line with a forced end is valid") + + (CL:WHEN (FGETLD L FORCED-END) + (RETURN L)) + + (* ;; "The prev of a line containing an internal sepr is valid") + + (CL:WHEN (ILESSP (FGETLD L LFIRSTSEPR) + (FGETLD L LCHARLAST)) + (RETURN (FGETLD L PREVLINE)))] + else [\TEDIT.SETPANE.TOPLINE PANE (CDR (\TEDIT.LINES.ABOVE TSTREAM (PANETOPLINE + PANE] + (PANEPREFIX PANE]) (\TEDIT.NEXTVALIDLINE - [LAMBDA (LASTCHANGEDLINE TSTREAM) (* ; "Edited 21-Jan-2025 15:27 by rmk") + [LAMBDA (LASTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 19-Apr-2025 23:52 by rmk") + (* ; "Edited 18-Apr-2025 12:48 by rmk") + (* ; "Edited 21-Jan-2025 15:27 by rmk") (* ; "Edited 29-Nov-2024 23:31 by rmk") (* ; "Edited 16-Nov-2024 11:00 by rmk") @@ -2748,13 +2790,20 @@ (* ;; "The line after a forced end is valid. But maybe we can figure out how to stop sooner?") - (for L inlines LASTCHANGEDLINE when (FGETLD L FORCED-END) - do - (* ;; "A forced end is usually the last line of a paragraph, and its next line is probably valid. But we skip that one, because we don't know how to deal here with its paragraph leading. If forced but not last, presumably it was a meta-EOL linebreak, no special leading to worry about.") + (for L NEXTVALID inlines (find L inlines (PANETOPLINE PANE) suchthat (FWITHINLINEP + LASTCHANGEDCHNO L)) + when (FGETLD L FORCED-END) do + + (* ;; "A forced end is usually the last line of a paragraph, and its next line is probably valid. But we skip that one, because we don't know how to deal here with its paragraph leading. If forced but not last, presumably it was a meta-EOL linebreak, no special leading to worry about.") - (CL:WHEN (FGETLD L LSTLN) - (SETQ L (FGETLD L NEXTLINE))) - (RETURN (AND L (FGETLD L NEXTLINE]) + (CL:WHEN (FGETLD L LSTLN) + (SETQ L (FGETLD L NEXTLINE))) + (CL:WHEN L + (SETQ NEXTVALID (FGETLD L NEXTLINE)) + (FSETLD NEXTVALID PREVLINE NIL) + (* ; "Disconnect from above") + ) + (RETURN NEXTVALID]) (\TEDIT.CLEARPANE.BELOW.LINE [LAMBDA (LINE PANE TEXTOBJ) (* ; "Edited 1-Dec-2024 11:27 by rmk") @@ -2885,21 +2934,22 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (28178 30394 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 28188 . 30392)) (37799 121333 ( -\TEDIT.FORMATLINE 37809 . 73751) (\TEDIT.FORMATLINE.SETUP.PARA 73753 . 78919) ( -\TEDIT.FORMATLINE.HORIZONTAL 78921 . 83494) (\TEDIT.FORMATLINE.VERTICAL 83496 . 85947) ( -\TEDIT.FORMATLINE.JUSTIFY 85949 . 91970) (\TEDIT.FORMATLINE.TABS 91972 . 100000) (\TEDIT.SCALE.TABS -100002 . 100793) (\TEDIT.FORMATLINE.PURGE.SPACES 100795 . 102222) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -102224 . 103125) (\TEDIT.FORMATLINE.EMPTY 103127 . 108154) (\TEDIT.FORMATLINE.UPDATELOOKS 108156 . -114278) (\TEDIT.FORMATLINE.LASTLEGAL 114280 . 117820) (\TEDIT.LINES.ABOVE 117822 . 121331)) (121450 -123365 (\TLVALIDATE 121460 . 123363)) (123563 145101 (\TEDIT.DISPLAYLINE 123573 . 137213) ( -\TEDIT.DISPLAYLINE.TABS 137215 . 140019) (\TEDIT.LINECACHE 140021 . 140749) (\TEDIT.CREATE.LINECACHE -140751 . 141587) (\TEDIT.BLTCHAR 141589 . 144216) (\TEDIT.DIACRITIC.SHIFT 144218 . 145099)) (145716 -189246 (\TEDIT.BACKFORMAT 145726 . 148280) (\TEDIT.PREVIOUS.LINEBREAK 148282 . 151005) ( -\TEDIT.UPDATE.LINES 151007 . 155755) (\TEDIT.PANE.CREATELINES 155757 . 159008) ( -\TEDIT.SUFFIXLINE.CREATE 159010 . 160516) (\TEDIT.LINES.BELOW 160518 . 164979) (\TEDIT.MEASURED.LINES -164981 . 166881) (\TEDIT.VALID.LINES 166883 . 175396) (\TEDIT.LASTVALIDLINE 175398 . 179261) ( -\TEDIT.NEXTVALIDLINE 179263 . 180693) (\TEDIT.CLEARPANE.BELOW.LINE 180695 . 182801) (\TEDIT.INSERTLINE - 182803 . 184189) (\TEDIT.LINE.BOTTOM 184191 . 187421) (\TEDIT.SHOW.AT.BOTTOMP 187423 . 188533) ( -\TEDIT.SHOW.AT.TOPP 188535 . 189244))))) + (FILEMAP (NIL (27705 29921 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27715 . 29919)) (37326 122755 ( +\TEDIT.FORMATLINE 37336 . 73739) (\TEDIT.FORMATLINE.SETUP.PARA 73741 . 78907) ( +\TEDIT.FORMATLINE.HORIZONTAL 78909 . 83482) (\TEDIT.FORMATLINE.VERTICAL 83484 . 85935) ( +\TEDIT.FORMATLINE.JUSTIFY 85937 . 91958) (\TEDIT.FORMATLINE.TABS 91960 . 99988) (\TEDIT.SCALE.TABS +99990 . 100781) (\TEDIT.FORMATLINE.PURGE.SPACES 100783 . 102210) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN +102212 . 103289) (\TEDIT.FORMATLINE.EMPTY 103291 . 108686) (\TEDIT.FORMATLINE.UPDATELOOKS 108688 . +114869) (\TEDIT.FORMATLINE.LASTLEGAL 114871 . 118518) (\TEDIT.LINES.ABOVE 118520 . 122131) ( +\TEDIT.CHNO.TO.YTOP 122133 . 122753)) (122872 124787 (\TLVALIDATE 122882 . 124785)) (124985 145393 ( +\TEDIT.DISPLAYLINE 124995 . 137505) (\TEDIT.DISPLAYLINE.TABS 137507 . 140311) (\TEDIT.LINECACHE 140313 + . 141041) (\TEDIT.CREATE.LINECACHE 141043 . 141879) (\TEDIT.BLTCHAR 141881 . 144508) ( +\TEDIT.DIACRITIC.SHIFT 144510 . 145391)) (146008 190784 (\TEDIT.BACKFORMAT 146018 . 148572) ( +\TEDIT.PREVIOUS.LINEBREAK 148574 . 151377) (\TEDIT.UPDATE.LINES 151379 . 156991) ( +\TEDIT.PANE.CREATELINES 156993 . 160444) (\TEDIT.SUFFIXLINE.CREATE 160446 . 162061) ( +\TEDIT.LINES.BELOW 162063 . 166673) (\TEDIT.MEASURED.LINES 166675 . 168684) (\TEDIT.VALID.LASTCHNOS +168686 . 172462) (\TEDIT.VALID.NEXTCHNOS 172464 . 175938) (\TEDIT.LASTVALIDLINE 175940 . 179990) ( +\TEDIT.NEXTVALIDLINE 179992 . 182231) (\TEDIT.CLEARPANE.BELOW.LINE 182233 . 184339) (\TEDIT.INSERTLINE + 184341 . 185727) (\TEDIT.LINE.BOTTOM 185729 . 188959) (\TEDIT.SHOW.AT.BOTTOMP 188961 . 190071) ( +\TEDIT.SHOW.AT.TOPP 190073 . 190782))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index 92f63743475c53ddceff7af86ea4c699022b545d..a9f871623d4154dc99f1a713bd4d65dae32c5f94 100644 GIT binary patch literal 34767 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 delta 12388 zcma)C3vgT2nU-W*u}y4bTX7u6m>Xjp#l(&tSFaF)t{#rAE$IkJiR?5)Ar{~lfdXym z5~74smd;MwB$x6WmL{}NN*|IO@3w@XK6Ynv=@vqpZsRV~vfEj9XS-eGnH{=p7qZ_u z=gOAt>`pyn>74(({`0^8|LCnR8-Dx;{qeNfVI7FxcJF}QYIh1Y>vpSsyVHJRx_4VD z6qHjt+2=qqkO+lhgExBIwk<+qkKI+Z#6g$XJttnjMtS+cRv{wCLdikNPxgd_eQfpM z?s!m2g$CJ(pp?@al;PZlR&8*P6p@2`Ou2ebdv5X&4j9@Ui3ruF3=R(V2-(~2zdb8l z;dF>SH&Du2uo5yQ+ zd6iG;H`g%~l^b%B(y^zhf_K$Dm1}ZcN?yNKIrQoEiN-C$_IM(+M<%)?%B154-7f0FeE3Esbnag5aNQvE09PqASFVn2q7a$3i41;JP-&= ziDV=+l%g;BCc$ltnux>b~ zb?rh*^2bB5pd8yphiw8skEHyx3oJ>Do^1CDsZk2Dd(fcYZXq&iqYW39#0YIUF*^|m z1qZMn?Tc)Lt#SyqWGWJ)P&>sSw5MapNEL z$Ccx2y4HNfrw$&}9aX-&Ccdj9tcsbK$n+LamBTINhd3Qt}|p&3i|`K)T3D!-gn z*S=x2PL*dzT1;+Y$v$z698&AE-)_xVl%aapx}l>|MhrI4MK9h-KlAH}MLAJ#&UJ=~ z#UCV{O?4D}u->m)GCf&!YeopL=}!mrneI}+V9B5P@`b{VIQfbmjk! z+@m&TztcKVp1X-HQ1&*sjf2@@Kj~4PY}lOZQ4JXv=_M|l%PBEw?hH?uMbg13WX$yY zhy{oKg3*SUCl^O%F3;5d{RJRr;s=LSL(8XvL?nN<@O7V%IXriOY$g47{m+GRaUSouGtuumIS0Y=ps=;h1O=JRFOKe8wVD@CecrMdlBH~?_FJ{EjROSfgv8!b;$xM!1 z%$Q5$;nM})2Pye{`B*`ao;y1A>S$c_nysj534y%Mk~lPYCN zYTJJ(vOp+nWl{W|3IhiBcPK5K6QT> zj>(rYd$9W+y8E72M@X|gpBV*UlmbT2lD?vi>>!Vl!(7lF!*Psu{NTsv!TmF}7bqQ$ zkjE}k{BSRF__yy~z~!3ISh^nYzWmP@&g6AfbY*Lb)>4ag z7i3{mR!;=wy{oRfTKFBK>oL;ho2esvm5#MN@;+d>k7BtGXdi`K0`vWV?WeH)XUS1L zg&Opi=yBQsXLgYzHAS(-H$sl&`?C7X6D6GRxwY5l1ajoxIPZ>t%Z~!F8KHc-pnHjg zi#?0X1nH|N&M#i5Z71=s5it`lk^74t5^1zc+Fd`;4uL-NM=cJD|eg%Z^NVqy4g=$K+o5-hKg3kmvsn_Ph@_L6`@CpePrt# zc7VEMTB#D@+f*?8f;^&f$p#Jb|AcWf9iO6O-zWYTNDzeIKHCOyIzkzAc!CP%ibHah zQ>s^E0k8%}qO?$SQpO$OY}2%wEBk@$%Rn#oDrx>i{u)*H1UWFbFq!`kav=X(s*X!C z!7%D$n{6T;66p-CW%^h!K;^1u77R7ZS5|1H{~a`WW{`68Da!h)%@;Mz2Rc4NG(S+w zZ5cqH)IgOHBTSIlxX8pD%te-KR5WUfEs2dC)rVlRX{SehBg9A@TYrCA(+3SR-2D^e$a z=+OH;BOUAvb3JG0 zgt?RWiq>jJ!j(|tc0JQY(>(EMjHDd%llYtw=Uy`R`6Y9^pNQrTKXI8G@j=X&%=LaU zcw&10(Wy-Ktv(!|ohnb1{lxw}5yQ-1ywR+iDxaFhggf5q6H4R`K4I|89Tm$t`w6(s zE-q@bGTOpy0G~axH{r9R*a`2vt#$pH9<}p~fOfQ1$l1-EIQMak>pq7MgSpmEdd)_% zWA>V`>U#qJ;B#&IDYj{lTgV-y;kz!EAE%mj)<0}E`$x>Je$r#MRPcD*?=$z5NQeJT zouA|G2L-p1R$@Zz!Yqd3+ zE$O}pRI5Qo3NkJOHBwOHGEhAQ)rUz8vB>aqzI9|6F&T->vzz%%I*Z-wbSX#M)|)({ zTi7?WHs(0&w_98Za(S)vPBl)q z6Z~!8=3>JWA%LR5^c$N|B}a7bcl zp55t13bbr15nE|lAml0s`4#QRB`KMZl{r0CgXmkmEBZ+3cnXQdprO|aECP^<2s%Kc zdeG@cl2LmhTe`N@Wj zyRj$8S3wtbg;g`{&J`rKEuLY6)M*FXkPK^0w_Ulhb3>B|mWD=CP&uUc%59zNYaDKe z@?hsR22q@Srt=52${p99G6-!-gRnz?Y<5W4q&Fm5mB~%lntS2oR9yzXqzeffEOr;^ zRbJS%$%tH`EB_PajZOcFs>2E)bRtP#39_x81qoU)3${cEgkq^s0#p_~t29G&J6A1n zZC)ktq7!w5BmXDi|A-yUOt2zW0_@bHQu)qAG4DeX~lHwd7dav^6z_A`-2=XOF zP;Y>ZOKlPK&o%0GHQdYiR8PyXdS&BaPg{deHJ-T|AIC^5vgMNny-kS^ZmIF9{mSPC zZ?BmcH!J@#c>S7bVnQ~)UuoOcx3PlaSayP9F=94w2#`?j+_p)6-lz5+ptqUNKgDj7 zY0aK4eEcI?RybMs_JsU*a|jLsb2|#_go2r zJ6Q=rc_$*fmfO+Q0%r5Bk~y14RKB;r*MJ**`Nr!vud=dKvsN5tv)hzE*m6qujs|6B z;40MsZVmGZa!AkK8lZ-L=cNvhBrmI5& zyd|xR4GE~*@hzAbRcdEcsIVh-o{LLRcA~hY#&W1aVca1|Nvc2r+M#B9sRzxX6*a(J zFf6|V02Vdq7GGrP_$u0A@^ znQ1;2?R(u&Gxx8gx%IKdQJk4Jz0r+0d7?Znl)`TqP-a83r<68RjY^xtQ0ufAIz4XA zkETt`G!)x4v>2WmX2*b41vw|hPP;|%)XF>LPo%r$i{srTpESi5O9&$!qL)S)Ifqsd z<^C6HLZyIrz$zX#c`6O~@L)2|Ym+uaK#OxB38?c9As$4P+W|MGxoihyVx=pzd$0?S zS_JzpXko>@!;P{HBT_PnsBLk;1~FOY+ks`p#fVx<`HeH647%K~u%mDZRZ@!x2QFOm z&k#WPC+6w6a8iJyBAaj=bchQv9f4CEg;f5#*{G{cTTs$#(d)uzn!;IC2Vwc;T+L)_ z%WX!@fInN(WGq*YnH3{$Tr}e8{^#X%KezGqWo2T#zcj*ZB`>xWbOjmf_QMeCKEIb* zM%{60_i@k*rHR%STO(;c1E_xA)cDqM>$n|-(eXiF%Pl6-&OOM}CDKl}&*@a-xTS(k zJ=|y70xt>?vA~OVXy(wjlRr=Coz0G){GS{cam;;zOvD?ZA%;J%x|LUlvWUf^X{E%AU#lx zzK2OqU#7PN?Rb~;Dff8>^j77Rr!8kKrMHrf^9`hP9{FgNm={i?zA(NO7-vay`NSl3 zf#a6K#}{=L5zJZ?KLUY;Y%w9?0gZ8u56P0wyB|sEQkD zcvT7O;B^+;4!g48J-+!nsJPTf+#Z-E)gYn> zY@<$vemR}W-8XixbFGSAY}BKsdkt2XvN_Q+jF%Ektyazi!L~H+OGVf-6MZn!{0$NX z2@gIILj4V;JbnH_PdRgw)$l@t^4?7+^|i`pcMcgOqw>R@omag+qUv57Q4QxtV#@D# z_SMy1_(c9qrQ_ynT_~xy80sTGBh5csm|e%d%V+u`KPSyU|7c;Nd}bp+rk{PZFxSc& zKGbwl7yrtDv$#_!XPy|lU<5s?Lb0XjXgZxsE@)NaN~w=`{{s(OKwgY z!{Z%Yj(sCC(r~^GVu_yiyyg@}7Xt#kT}gp3dsTyOV4a=6&~aE5foQ0ZmSaJZ#xxnz z;!-Sx29Jn&+z=Yg(U5+NQ1j?|2qrgu60>f8RvA%sh&5T?r^eVfg~VIF)+DLj#ZG*v zI!V>d!&hfIpzIwBFQOvzFzvQu1spozPIzB-xIAmgj_`0`DjQ*&ov&@z8Z{H0_^S*@ zl(z%xbJzx(7#2yN$9OQdgv^x~rYNe;!vOs}fbsD*vq?&&w-#ojC01kRgeZ1le~_U^=BHocw0LNj zF@MeKksQdx%Xlah_vihDqgsBN^iQ!v^V_QSex7f@h)XwYtLkgJ;N<>`?1>T{DAQB; zSRf|G|0@&P4lh`0i%ez1QxI|FM5LWvgMD!JNveelQ2(<&w8P5Z3|+UGPB+XLvwYqf z?4qNwng@BiKaxs@rC><#IIT+auJ&mUs#N|FznsDdDoiN8@uFOm1m&SIZgbqIAZTFB zVkXLMbqP_J0T#C-Ybwv`L3$K2_gc+3W^9_ zM5k?WR}nucxWc_19;ZUW8=6sKtek<|i#kJ-4XYPvX>&M~cf;nK6#;89j(jC0$0UXU z>OI=NG{fO`6ZU(b982y_gt&2pSHv$cU>s@v)8j_ngGA(@;DM)SRVoi6yy86IpU$Kt!eI4s+j(;^XO&fSPIqLMrUW+2Yx^&j{b4sv44O4#BARBNMHJBVxQTBwIK8u9jo)l&yQM~l1af-e)U>IR z@tsUMH~dJF=cg~3hNmySntw-U0d-hmR&*<|WJfmcr4;~Yt z4H;HmOuC~8D;Oc@1*sba4G;zGlHwGAz9_`74U3h~LwyLNm7ZN-ExHUjINYj2Ql1bFkaA0wrU&XI1jJVz6*cbgT zOk+ym>mV$E6ImbgalWNgr8tDtw>Iz7pB*;5HX`SIk-5G2Z325`ymc-ZnY%&uMK#AL z`(g}Ul9^Rv=962l`s{2!w}R0(yGxPcPvr<3-Jkynn-DQ~mGW~mKFz;0<_}2l4BQFr zo%=$57B3mdycpfLrv@2SwBKLZmXxoW&@_TZ!JX?KuilG@U-z_aLL6IRU~=~m;(yAB zLH-tjL{b!#6Pb2Ypcf~FNje#dQ1-&IE|*i(BwVXN2%Raf=%L6=oz*?4U8TB-LML`* zB`G|Yz#N3|YcFO^XsD-z?ru^3D?QY*$m|lRRNHc(P9dWkH^NCw&%c@-##3u{%Dk3- zG?oB7n;lV3jYhk&FH4NL^v4M2_GLK-Opz$Od{k*4>$cnI`wMpgS0Dl|wUTx=<^2Qg zJ+z2cb+uL1OoYAvIOa6q8Kz_J9wWzn_Wr$h8X(wXeir!KnY=TJj^Gn^0+xqFmACKd zY@$EZq6CI)U#L|EZxwRVk{GqvYJ7PYyUH+R1<$|o+zrForx`?sObx%$hf)b-d{~Rw zG`r9>ceTtVkFLwV$rgOyFRLBXml&1y@`dln!>oIDxI(bu_y{OAatT$I@W?{(C&ngw-Guh)55RfvM%^L)GGmSIV ziydC&`2IeF)rQJnuVTowCT#G{E2I&L?FtBGtqc(TjtBkFYhtW)*d*i zSKdyVb98Nz|Mrn44vUtG!ofTsP_b4Tgj+Ybme?+M6Fv*6H%;}H18LDG!txP_{-PRk zvA~{uva&N}&cXX=iKYxG!h1y$KA+|pG3vpR+O{m=s6K~P5NXkp3M|SpkAt^$L9PiM zlK;~5yl+XiIJh>zW2v%I^5<{R+5=xHP5I~Z*RaXumje9z#Kafa3p@*YTT=D-SrTynU8m0C;j zvFwu*5d0Wv?&NBKon^N3#KP=3+TvRm>DJ$!`|HX4nF*-VNKpkgq&dG`Lx+7;4s9Q~ zXl^fQy$Y}cz>W$~?V3B^mj65~H=cH`-m~7|vMLvH?dxoaCstY)ucANNR$~)c2_k1h zmc4uiihvcL%d>Vo?Nu9h7-w45p#oR+nCMvjD&s&EW#ue*ie;c1PyxX6!ZH{@h>ll) z?1&P7d}nX+3blJ6ykhbdJq6wotITOt?_|b|M?fyTnj^sr#nNO1xjc4rp^DG7O~3;( zbSlJr2!a#@pP>ZnAogEci5kOFr}6?w;}z6adr$$+ZSF1o-bP45Mdu)9Fwz#03y7+A;2(vxMh5(d@`EksOAw=6}PQVQS#t zX3a6R6J^I~nc8EpZkf0sD0Q!Zz+^9<0#~Pr9KA>77vQK2RZXiWaT*qQTuNQ~dKjve zEXTX?D$p_yDlY4xh`n+;0)r)P(NKD+w=x*9CIoNwb`buh$tz_X^6XIV+qb0-_-|=c z-p;LS)YuHcQhs%N*KUdlxM$TPL~b$Zd|wKmsSB%JChbwLD_i`4(RozuEdD?`*?v!;`}dS<^_Ik2j;Nf~{>+1rSqI(9! w6G_3+s7Md3SHAk^b+e9#CJeQd*YtP$lqC8_<-OdXvhHZVzH#>EqsQ0$FMc_^=>Px# diff --git a/library/tedit/TEDIT-SELECTION b/library/tedit/TEDIT-SELECTION index c7f1e5592..3cbd11dcf 100644 --- a/library/tedit/TEDIT-SELECTION +++ b/library/tedit/TEDIT-SELECTION @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Mar-2025 16:27:02" {WMEDLEY}tedit>TEDIT-SELECTION.;674 154655 +(FILECREATED "22-Apr-2025 08:26:07" {WMEDLEY}tedit>TEDIT-SELECTION.;718 158150 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SELPIECES.COPY \TEDIT.SELPIECES \TEDIT.RESET.EXTEND.PENDING.DELETE) - (I.S.OPRS inselpieces) + :CHANGES-TO (FNS \TEDIT.SELPIECES.COPY \TEDIT.SELPIECES) - :PREVIOUS-DATE "16-Mar-2025 10:06:15" {WMEDLEY}tedit>TEDIT-SELECTION.;665) + :PREVIOUS-DATE "21-Apr-2025 22:52:26" {WMEDLEY}tedit>TEDIT-SELECTION.;715) (PRETTYCOMPRINT TEDIT-SELECTIONCOMS) @@ -40,8 +39,9 @@ \TEDIT.REGIONTYPE \TEDIT.XYTOSEL.INLINEP \TEDIT.XYTOSEL.LINE) (FNS \TEDIT.FIXSEL \TEDIT.CHTOLINEX) (FNS \TEDIT.RESET.EXTEND.PENDING.DELETE \TEDIT.SET.SEL.LOOKS) - (FNS \TEDIT.SHOWSEL \TEDIT.SHOWSEL.HILIGHT \TEDIT.UPDATE.SEL \TEDIT.CARETLINE - \TEDIT.SEL.L1 \TEDIT.SEL.LN \TEDIT.SEL.DELETEDCHARS) + (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (MACROS \TEDIT.NOSEL))) + (FNS \TEDIT.SHOWSEL \TEDIT.NOSEL \TEDIT.SHOWSEL.HILIGHT \TEDIT.UPDATE.SEL + \TEDIT.CARETLINE \TEDIT.SEL.L1 \TEDIT.SEL.LN \TEDIT.SEL.DELETEDCHARS) (FNS \TEDIT.COPYSEL \TEDIT.SEL.CHANGED?)) (COMS (* ; "Image objects") (FNS \TEDIT.SELECT.OBJECT \TEDIT.SHOWSEL.OBJECT \TEDIT.CLIP.OBJECT @@ -198,7 +198,7 @@ (ILEQ (FGETLD L LCHAR1) CHLAST)))) -(PUTPROPS IBETWEENP MACRO (OPENLAMBDA (X LOW HIGH) +(PUTPROPS IBETWEENP MACRO (OPENLAMBDA (X LOW HIGH) (* ; "within the closed interval") (AND (IGEQ X LOW) (ILEQ X HIGH)))) ) @@ -368,7 +368,8 @@ (DEFINEQ (\TEDIT.SELECTED.PIECES - [LAMBDA (TEXTOBJ SEL CROSSCOPY PIECEMAPFN FNARG1 FNARG2) (* ; "Edited 26-Nov-2024 10:54 by rmk") + [LAMBDA (TSTREAM SEL CROSSCOPY PIECEMAPFN FNARG1 FNARG2) (* ; "Edited 21-Apr-2025 22:45 by rmk") + (* ; "Edited 26-Nov-2024 10:54 by rmk") (* ; "Edited 15-Mar-2024 14:15 by rmk") (* ; "Edited 28-Nov-2023 23:14 by rmk") (* ; "Edited 21-Jun-2023 20:30 by rmk") @@ -381,14 +382,14 @@ (* ;; "Create a list of pieces corresponding to the selection; if FNARG, apply it to each piece, and use the result instead of the piece") (NOTUSED) - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ)) - (LET ((SELPIECES (\TEDIT.SELPIECES (OR SEL (TEXTSEL TEXTOBJ)) - NIL TEXTOBJ))) - (for PC inselpieces (CL:IF CROSSCOPY - (\TEDIT.SELPIECES.COPY SELPIECES 'COPY TEXTOBJ) - SELPIECES) collect (CL:IF PIECEMAPFN - (APPLY* PIECEMAPFN PC TEXTOBJ FNARG1 FNARG2) - PC)]) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (SELPIECES (\TEDIT.SELPIECES (OR SEL (TEXTSEL TEXTOBJ)) + NIL TEXTOBJ))) + (for PC inselpieces (CL:IF CROSSCOPY + (\TEDIT.SELPIECES.COPY SELPIECES 'COPY TSTREAM) + SELPIECES) collect (CL:IF PIECEMAPFN + (APPLY* PIECEMAPFN PC TEXTOBJ FNARG1 FNARG2) + PC)]) (\TEDIT.FIND.PROTECTED.END [LAMBDA (TEXTOBJ CH# LIMITCH#) (* ; "Edited 9-Jul-2024 18:19 by rmk") @@ -470,7 +471,8 @@ (DEFINEQ (\TEDIT.EXTEND.SEL - [LAMBDA (NEWSEL CURSEL TEXTOBJ EVENIFPROTECTED) (* ; "Edited 11-Sep-2024 23:44 by rmk") + [LAMBDA (NEWSEL CURSEL TSTREAM EVENIFPROTECTED) (* ; "Edited 21-Apr-2025 20:10 by rmk") + (* ; "Edited 11-Sep-2024 23:44 by rmk") (* ; "Edited 9-Sep-2024 09:28 by rmk") (* ; "Edited 28-Aug-2024 09:49 by rmk") (* ; "Edited 22-Aug-2024 16:06 by rmk") @@ -495,7 +497,8 @@ (CL:WHEN (AND (FGETSEL NEWSEL SET) (FGETSEL CURSEL SET)) - (LET ((CCH# (FGETSEL CURSEL CH#)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (CCH# (FGETSEL CURSEL CH#)) (CCHLIM (FGETSEL CURSEL CHLIM)) (NCH# (FGETSEL NEWSEL CH#)) (NCHLIM (FGETSEL NEWSEL CHLIM)) @@ -563,14 +566,19 @@ (* ;; "NEWSEL now describes the difference between the highlighting of the original CURSEL to the highlighting of the extended CURSEL, either putting up new highlighting or taking down old highlighting. ") - (\TEDIT.FIXSEL NEWSEL TEXTOBJ) + (\TEDIT.FIXSEL NEWSEL TSTREAM) (\TEDIT.SHOWSEL NEWSEL (NOT (FGETSEL NEWSEL ONFLG)) - TEXTOBJ) + TSTREAM) (FSETSEL NEWSEL ONFLG NIL) (* ; "Restore its generally off state.") - (\TEDIT.FIXSEL CURSEL TEXTOBJ)))]) + (\TEDIT.FIXSEL CURSEL TSTREAM)))]) (\TEDIT.SCAN.LINE - [LAMBDA (LINE X NEWSEL SELOPERATION TEXTOBJ BUTTON WORDSELFLG) + [LAMBDA (LINE X NEWSEL SELOPERATION TSTREAM BUTTON WORDSELFLG) + (* ; "Edited 21-Apr-2025 12:11 by rmk") + (* ; "Edited 13-Apr-2025 15:17 by rmk") + (* ; "Edited 11-Apr-2025 22:38 by rmk") + (* ; "Edited 10-Apr-2025 21:08 by rmk") + (* ; "Edited 5-Apr-2025 17:29 by rmk") (* ; "Edited 18-Feb-2025 22:04 by rmk") (* ; "Edited 14-Feb-2025 09:47 by rmk") (* ; "Edited 3-Feb-2025 09:31 by rmk") @@ -591,17 +599,26 @@ (* ;; "") + (* ;; "") + + (* ;; "Newer implementation (April 2025) aims for a point selection (DCH=0) between characters , at least for NORMAL operations. Thus, X0 and XLIM specify the intended caret position, to the right of the selected character if pointing to its right half, to the left if pointing to its left half.") + + (* ;; "Then, If the mouse is not pointing to or beyond the last character on the line, CH# is the character AFTER the intended caret position, CHLIM is CH#, and POINT is LEFT.") + + (* ;; "If pointing at or beyond the last line character, CH# is the last character, CHLIM is (ADD1 CH#), and POINT is RIGHT. We don't have to worry here about TEXTLEN--it's covered by LCHARLIM.") + (* ;; "Earlier versions had more complexity because it not ony figured out the character pointed at but also %"fixed%" the selection on the fly to avoid the more generic \TEDIT.FIXLINE.The generic fixline would scan through the lines of a tall window to find the line containing the selected CH#, and then apply \TEDIT.CHTOX to scan its (presumably cached) THISLINE to set up the X0 and XLIM. But not a noticeable delay for user interaction--not worth the complexity.") (LINEDESCRIPTOR! LINE) - (TEXTOBJ! TEXTOBJ) (SELECTION! NEWSEL) - (FSETSEL NEWSEL SET NIL) - (PROG (CHARSLOT CLOOKS CHNO X0 XLIM SELCHAR PASTRIGHT THISLINE MOVED) + (FSETSEL NEWSEL SELKIND 'CHAR) (* ; + " The caller's HOW and HOWHEIGHT fields are preserved") + (PROG (CHARSLOT CLOOKS CHNO X0 XLIM DCH SELCHAR PASTRIGHT THISLINE (TEXTOBJ (FTEXTOBJ TSTREAM)) + RIGHTHALF) (SETQ THISLINE (FGETTOBJ TEXTOBJ THISLINE)) (CL:UNLESS (EQ LINE (fetch DESC of THISLINE)) (* ;  "Make sure the cache describes this line") - (SETQ LINE (\TEDIT.FORMATLINE TEXTOBJ (FGETLD LINE LCHAR1) + (SETQ LINE (\TEDIT.FORMATLINE TSTREAM (FGETLD LINE LCHAR1) LINE))) (* ;  "Convert X's display units to LINE's scale") (SETQ XLIM (FGETLD LINE LX1)) (* ; @@ -620,15 +637,17 @@  (FGETLD LINE LXLIM)) 30)  (RETURN NIL))) (SETQ X (SUB1 (FGETLD LINE LXLIM)))) - [SETQ CHARSLOT (for CS incharslots THISLINE - do (if CHAR - then (add XLIM CHARW) (* ; "Start of the next character ") - (CL:WHEN (IGEQ XLIM X) - (RETURN CS)) - (add CHNO 1) - else (SETQ CLOOKS CHARW] (* ; "The running CHARLOOKS") + (SETQ CHARSLOT (for CS incharslots THISLINE do (add XLIM CHARW) + (* ; "Start of the next character ") + (CL:WHEN (IGEQ XLIM X) + (RETURN CS)) + (add CHNO 1))) + (* ; "The running CHARLOOKS") (CL:UNLESS CHARSLOT (* ; "Guardrail") (RETURN)) + [SETQ RIGHTHALF (OR PASTRIGHT (IGEQ X (IDIFFERENCE XLIM (FOLDLO (CHARW CHARSLOT) + 2] + (SETQ CLOOKS (CHARCL CHARSLOT)) (CL:WHEN (FGETCLOOKS CLOOKS CLPROTECTED) (* ;; "Extensions can't run through protected characters, and they can't be deleted.") @@ -640,91 +659,71 @@ (* ;; "Otherwise, if either CLSELAFTER or CLSELBEFORE, we move CHARSLOT, CHNO, XLIM,CLOOKS to the closest unprotected one. ") [SETQ CHARSLOT (if (FGETCLOOKS CLOOKS CLSELAFTER) - then (SETQ MOVED 'FORWARD) - (for CS incharslots (NEXTCHARSLOT CHARSLOT) - do (if CHAR - then (add XLIM CHARW) - (add CHNO 1) - (CL:UNLESS (FGETCLOOKS CLOOKS CLSELAFTER) - (RETURN CS)) - else (SETQ CLOOKS CHARW))) + then (SETQ RIGHTHALF NIL) + (find CS incharslots (NEXTCHARSLOT CHARSLOT) + suchthat (add XLIM CHARW) + (add CHNO 1) + (NOT (FGETCLOOKS CHARCL CLSELAFTER))) elseif (FGETCLOOKS CLOOKS CLSELBEFORE) then - (* ;; "We back up through the charlooks keeping track of the next previous CLSELBEFORE (BEFORESLOT) while we look for the first one that is not CLSELBEFORE. When we find that one, we know that the PREVSLOT of BEFORESLOT is the one we want.") - - (SETQ MOVED 'BACKWARD) - (for CS (BEFORECHNO _ CHNO) - (BEFOREX _ XLIM) - (BEFORELOOKSLOT _ CHARSLOT) backcharslots (PREVCHARSLOT - CHARSLOT) - do (if CHAR - then (add XLIM (IMINUS CHARW)) - (add CHNO -1) - elseif (FGETCLOOKS CHARW CLSELBEFORE) - then (SETQ BEFORECHNO CHNO) - (SETQ BEFORELOOKSLOT CS) - (SETQ BEFOREX XLIM) - elseif BEFORELOOKSLOT - then (SETQ XLIM BEFOREX) - (SETQ CHNO BEFORECHNO) - (RETURN (PREVCHARSLOT BEFORELOOKSLOT]) - (CL:UNLESS CHARSLOT (* ; "Everything was protected.") - (RETURN)) + (* ;; "We back up through the charslots looking for the first one that is not CLSELBEFORE. When we find that one, we know that the PREVSLOT of BEFORESLOT is the one we want.") + + (SETQ RIGHTHALF T) + (for CS backcharslots (PREVCHARSLOT CHARSLOT) + do (add XLIM (IMINUS CHARW)) + (add CHNO -1) + (CL:UNLESS (FGETCLOOKS CHARCL CLSELBEFORE) + (RETURN (NEXTCHARSLOT CHARSLOT)))] + (CL:UNLESS CHARSLOT (* ; "Everything was protected.") + (RETURN)) + (SETQ CLOOKS (CHARCL CHARSLOT))) (* ;; "CHNO and CHARSLOT: the character pointed to, X0 is the beginning of CHNO, XLIM the point after CHNO.") (SETQ SELCHAR (CHAR CHARSLOT)) - (* ;; "NOTE: This preserves the HOW and HOWHEIGHT fields as set by the caller") - - (FSETSEL NEWSEL SELKIND 'CHAR) - (FSETSEL NEWSEL X0 (IDIFFERENCE XLIM (CHARW CHARSLOT))) - (* ; - "Setting X0 suppresses an extra scan in FIXSEL") - (FSETSEL NEWSEL XLIM XLIM) - (FSETSEL NEWSEL CH# CHNO) - (FSETSEL NEWSEL SELOBJ NIL) - (* ;; "DCH=0 makes it a point selection, 1 picks out a single char. Original code produced 0 only for protected text and dummy lines. For copy/delete selections, it's more convenient still to select at least one character, at least until modern one-button swiping is implemented. ") (* ;; "If we end up in a protected piece, we want DCH=0. We then want to flash the caret iff we moved forward or backward") [if (FGETCLOOKS CLOOKS CLPROTECTED) - then (FSETSEL NEWSEL DCH 0) (* ; "Protected: nothing shows") - [FSETSEL NEWSEL HASCARET (AND MOVED (EQ SELOPERATION 'NORMAL] - else (FSETSEL NEWSEL DCH (if (EQ 0 (TEXTLEN TEXTOBJ)) - then 0 - elseif (OR WORDSELFLG (NEQ SELOPERATION 'NORMAL) - (FGETTOBJ TEXTOBJ TXTREADONLY) - (type? IMAGEOBJ SELCHAR)) - then 1 - else 0 (* ; - "0 = point selection, character not underlined. But extension is confusing") - 1)) + then (SETQ DCH 0) (* ; "Protected: nothing shows") + (FSETSEL NEWSEL HASCARET (EQ SELOPERATION 'NORMAL)) + else (SETQ DCH (if (EQ 0 (TEXTLEN TEXTOBJ)) + then 0 + elseif (OR WORDSELFLG (NEQ SELOPERATION 'NORMAL) + (FGETTOBJ TEXTOBJ TXTREADONLY) + (type? IMAGEOBJ SELCHAR)) + then 1 + else + (* ;; "0 = point selection, character not underlined, good for changing caret looks. But if extension is confusing, use 1") + + 0 1)) (FSETSEL NEWSEL HASCARET (EQ SELOPERATION 'NORMAL] - (FSETSEL NEWSEL CHLIM (IPLUS (FGETSEL NEWSEL CH#) - (FGETSEL NEWSEL DCH))) - (FSETSEL NEWSEL POINT (if (EQ (CHARCODE EOL) - (CHAR CHARSLOT)) + (FSETSEL NEWSEL POINT (if (AND (EQ CHNO (FGETLD LINE LCHARLAST)) + (FGETLD LINE FORCED-END)) then (* ;;  "Always go to the left of an EOL, so caret stays on its line") 'LEFT - elseif [OR PASTRIGHT (EQ MOVED 'BACKWARD) - (AND (IGEQ (CHARW CHARSLOT) - 3) - (IGEQ X (IDIFFERENCE XLIM (FOLDLO (CHARW CHARSLOT) - 2] - then - (* ;; - "Beyond the line, or towards the end of a character that is at least 3 points wide.") + elseif RIGHTHALF + then 'RIGHT + else 'LEFT)) + + (* ;; " X0 and XLIM are used in word selection, also make it unecessary for subsequenct FIXSEL.") - 'RIGHT - else 'LEFT)) (* ; - "Don't recognize an object that wasn't directly pointed at") - (FSETSEL NEWSEL SELOBJ (CL:UNLESS PASTRIGHT (IMAGEOBJP SELCHAR))) + [FSETSEL NEWSEL X0 (CL:IF (EQ DCH 0) + XLIM + (IDIFFERENCE XLIM (CHARW CHARSLOT)))] + (FSETSEL NEWSEL XLIM XLIM) + (FSETSEL NEWSEL CH# CHNO) + (FSETSEL NEWSEL DCH DCH) + (FSETSEL NEWSEL CHLIM (IPLUS DCH (FGETSEL NEWSEL CH#))) + (FSETSEL NEWSEL SELOBJ (CL:UNLESS PASTRIGHT (* ; "Must directly point to the object") + (IMAGEOBJP SELCHAR))) + (FSETSEL NEWSEL SELKIND 'CHAR) (FSETSEL NEWSEL SET T) (* ;; "Single-char selection is good") @@ -738,13 +737,14 @@ (CL:UNLESS (OR (FGETSEL NEWSEL SELOBJ) (FGETLD LINE LDUMMY) (FGETCLOOKS CLOOKS CLPROTECTED)) - (\TEDIT.SCAN.LINE.WORD X TEXTOBJ THISLINE NEWSEL CHARSLOT CLOOKS))) + (\TEDIT.SCAN.LINE.WORD X TEXTOBJ THISLINE NEWSEL CHARSLOT))) (* ;  "We now have a complete char/caret selection") (RETURN NEWSEL]) (\TEDIT.SCAN.LINE.WORD - [LAMBDA (X TEXTOBJ THISLINE NEWSEL CHARSLOT SELLOOKS) (* ; "Edited 7-Nov-2024 21:50 by rmk") + [LAMBDA (X TEXTOBJ THISLINE NEWSEL CHARSLOT) (* ; "Edited 11-Apr-2025 22:35 by rmk") + (* ; "Edited 7-Nov-2024 21:50 by rmk") (* ; "Edited 4-Oct-2024 08:39 by rmk") (* ; "Edited 28-Aug-2024 10:22 by rmk") (* ; "Edited 3-Aug-2024 12:41 by rmk") @@ -780,42 +780,22 @@ (* ;; "XLIM will become the X at the end of last char") (* ; "") - (for CSLOT (CLOOKS _ SELLOOKS) - (LASTCHAR _ (CHAR CHARSLOT)) backcharslots (PREVCHARSLOT CHARSLOT) - do (CL:UNLESS CHAR - - (* ;; "CLOOKS is the looks AFTER the preceding char. We have to go back further to see if the current char is protected.") - - (SETQ CLOOKS CHARW) - (GO $$ITERATE)) - (CL:WHEN (OR (type? IMAGEOBJ CHAR) - (\TEDIT.WORD.BOUND TEXTOBJ CHAR LASTCHAR) - (fetch (CHARLOOKS CLPROTECTED) of CLOOKS)) - (* ; "Stop at a protection bounary") - (RETURN)) - (SETQ LASTCHAR CHAR) - (ADD X0 (IMINUS CHARW)) - (ADD CH# -1)) - - (* ;; "And search forward for the end of the word") - - (for CSLOT (CLOOKS _ SELLOOKS) - (PREVCHAR _ (CHAR CHARSLOT)) incharslots (NEXTCHARSLOT CHARSLOT) - do (CL:UNLESS CHAR - (SETQ CLOOKS CHARW) - (GO $$ITERATE)) - (CL:WHEN (OR (type? IMAGEOBJ CHAR) - (\TEDIT.WORD.BOUND TEXTOBJ PREVCHAR CHAR) - (fetch (CHARLOOKS CLPROTECTED) of CLOOKS)) - - (* ;; "XLIM is now the end of the last character of the word.") - - (* ;; "CHLIM and XLIM should be OK if we run off the end.") - - (RETURN)) - (add XLIM CHARW) - (add CHLIM 1) - (SETQ PREVCHAR CHAR)) + (for CSLOT (LASTCHAR _ (CHAR CHARSLOT)) backcharslots (PREVCHARSLOT CHARSLOT) + until (OR (type? IMAGEOBJ CHAR) + (\TEDIT.WORD.BOUND TEXTOBJ CHAR LASTCHAR) + (FGETCLOOKS CHARCL CLPROTECTED)) do (* ; "Stop at a protection bounary") + (ADD X0 (IMINUS CHARW)) + (ADD CH# -1) + (SETQ LASTCHAR CHAR)) + + (* ;; "And search forward for the end of the word: XLIM is the end of the last character, CHLIM is one beyond") + + (for CSLOT (PREVCHAR _ (CHAR CHARSLOT)) incharslots (NEXTCHARSLOT CHARSLOT) + until (OR (type? IMAGEOBJ CHAR) + (\TEDIT.WORD.BOUND TEXTOBJ PREVCHAR CHAR) + (FGETCLOOKS CHARCL CLPROTECTED)) do (add XLIM CHARW) + (add CHLIM 1) + (SETQ PREVCHAR CHAR)) (FSETSEL NEWSEL SELKIND 'WORD) (FSETSEL NEWSEL CH# CH#) (FSETSEL NEWSEL CHLIM CHLIM) @@ -825,7 +805,8 @@ (* ;; "Move the point to the intended side of the word: To the right of an otherwise-protected insertion, past the middle of a selection that is wide enough to discriminate, and not at the end of an EOL-terminated line. 3 is points.") - (FSETSEL NEWSEL POINT (if [OR (fetch (CHARLOOKS CLSELAFTER) of SELLOOKS) + (FSETSEL NEWSEL POINT (if [OR (FGETCLOOKS (CHARCL CHARSLOT) + CLSELAFTER) (AND (IGEQ (IDIFFERENCE XLIM X0) 3) (IGEQ X (FOLDLO (IPLUS XLIM X0) @@ -834,7 +815,9 @@ else 'LEFT]) (\TEDIT.XYTOSEL - [LAMBDA (X Y NEWSEL TEXTOBJ SELOPERATION PANE BUTTON CURSEL REGIONTYPE) + [LAMBDA (X Y NEWSEL TSTREAM SELOPERATION PANE BUTTON CURSEL REGIONTYPE) + (* ; "Edited 21-Apr-2025 20:33 by rmk") + (* ; "Edited 6-Apr-2025 18:57 by rmk") (* ; "Edited 13-Feb-2025 11:03 by rmk") (* ; "Edited 17-Dec-2024 10:10 by rmk") (* ; "Edited 6-Dec-2024 12:00 by rmk") @@ -855,9 +838,9 @@ (* ;; "CURSEL is used to decide whether extensions go to words or paragraphs (and to turn off highlighting for objects).") (SELECTION! NEWSEL) - (TEXTOBJ! TEXTOBJ) (FSETSEL NEWSEL SET NIL) - (PROG (LINE PARAFIRSTCHNO PARALASTCHNO SELFN) + (PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) + LINE PARAFIRSTCHNO PARALASTCHNO SELFN) (CL:UNLESS (SETQ LINE (\TEDIT.XYTOSEL.LINE X Y PANE TEXTOBJ)) (RETURN)) (SELECTQ (\TEDIT.REGIONTYPE BUTTON CURSEL TEXTOBJ REGIONTYPE) @@ -872,7 +855,7 @@  "Y is below the last line of the text: force selection past the very end of that line.") (SETQ X (ADD1 (GETLD LINE LXLIM)))) - (CL:WHEN (AND (\TEDIT.SCAN.LINE LINE X NEWSEL SELOPERATION TEXTOBJ BUTTON + (CL:WHEN (AND (\TEDIT.SCAN.LINE LINE X NEWSEL SELOPERATION TSTREAM BUTTON (SELECTQ BUTTON (RIGHT (MEMB (FGETSEL CURSEL SELKIND) '(WORD PARA))) @@ -883,8 +866,8 @@ (* ;; "Run the buttonin function with CURSEL's highlighting turned off--its highlighting may be somewhere else ") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) - (\TEDIT.SELECT.OBJECT TEXTOBJ NEWSEL LINE X Y PANE SELOPERATION BUTTON))) + (\TEDIT.NOSEL TSTREAM CURSEL) + (\TEDIT.SELECT.OBJECT TSTREAM NEWSEL LINE X Y PANE SELOPERATION BUTTON))) (LINE (CL:WHEN (FGETTOBJ TEXTOBJ MENUFLG) (* ;; "Except for fields, menus are completely protected. Confusing to deal with a field that spreads across several lines, so essentially disable the line region") @@ -941,7 +924,7 @@ (FSETSEL NEWSEL SET NIL) (RETURN)) (FSETSEL NEWSEL ONFLG NIL) (* ; "New selection not yet displayed") - (\TEDIT.FIXSEL NEWSEL TEXTOBJ) + (\TEDIT.FIXSEL NEWSEL TSTREAM) (RETURN NEWSEL]) (\TEDIT.REGIONTYPE @@ -1001,29 +984,20 @@ (DEFINEQ (\TEDIT.FIXSEL - [LAMBDA (SEL TEXTOBJ AVOIDPANE ONLYPANE) (* ; "Edited 1-Dec-2024 11:28 by rmk") - (* ; "Edited 28-Nov-2024 14:30 by rmk") - (* ; "Edited 25-Nov-2024 12:57 by rmk") - (* ; "Edited 19-Nov-2024 15:52 by rmk") - (* ; "Edited 17-Nov-2024 15:58 by rmk") + [LAMBDA (SEL TSTREAM ONLYPANE) (* ; "Edited 21-Apr-2025 20:12 by rmk") + (* ; "Edited 10-Apr-2025 21:19 by rmk") + (* ; "Edited 5-Apr-2025 11:33 by rmk") + (* ; "Edited 1-Dec-2024 11:28 by rmk") (* ; "Edited 3-Oct-2024 18:47 by rmk") (* ; "Edited 9-Sep-2024 09:26 by rmk") - (* ; "Edited 3-Sep-2024 13:16 by rmk") (* ; "Edited 6-Jul-2024 22:36 by rmk") - (* ; "Edited 4-Jul-2024 15:45 by rmk") (* ; "Edited 28-Jun-2024 21:50 by rmk") - (* ; "Edited 24-Jun-2024 23:57 by rmk") - (* ; "Edited 16-Jun-2024 22:02 by rmk") (* ; "Edited 21-May-2024 09:01 by rmk") - (* ; "Edited 29-Apr-2024 12:56 by rmk") - (* ; "Edited 26-Apr-2024 00:23 by rmk") (* ; "Edited 20-Mar-2024 10:55 by rmk") - (* ; "Edited 2-Mar-2024 23:38 by rmk") (* ; "Edited 16-Dec-2023 11:44 by rmk") (* ; "Edited 3-Nov-2023 12:01 by rmk") (* ; "Edited 28-Jul-2023 15:58 by rmk") (* ; "Edited 22-Jun-2023 16:05 by rmk") - (* ; "Edited 6-Jun-2023 13:26 by rmk") (* ; "Edited 1-Jun-2023 17:41 by rmk") (* ; "Edited 31-May-91 12:26 by jds") @@ -1039,8 +1013,6 @@ (* ;; "") - (* ;; "AVOIDPANE is provided for a pane that may be skipped, e.g. the current selection pane. Its properties are already known, no point in doing extra work.") - (* ;; "ONLYPANE is specified in scrolling. to avoid disturbing and redisplaying panes that are not being scrolled.") (* ;; "") @@ -1060,80 +1032,86 @@ (* ;;  "If TXTDON'TUPDATE, the lines may not correspond to anything reasonable, don't try to find X.") - (CL:UNLESS (type? TEXTOBJ TEXTOBJ) - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ))) - (CL:UNLESS SEL - (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) - (SELECTION! SEL) - (CL:WHEN (AND (FGETTOBJ TEXTOBJ PRIMARYPANE) - (FGETSEL SEL SET) - (NOT (FGETTOBJ TEXTOBJ TXTDON'TUPDATE))) - - (* ;; "CH# is the first selected character, CHLIM is the character just after the last one, hence the SUB1. ") - - (* ;; "For a point selection, CHLIM=(ADD1 CH#) so CHNO=LASTCHNO, and the caret position is determined by POINT. Highlighting is determined separately by DCH, which is 0 for point selections.") - - (for PANE PSTARTLINE PENDLINE X0 XLIM (FIRSTCHNO _ (IMAX 1 (FGETSEL SEL CH#))) - [LASTCHNO _ (IMAX 1 (SUB1 (FGETSEL SEL CHLIM] inpanes TEXTOBJ as L1 - on (FGETSEL SEL L1) as LN on (FGETSEL SEL LN) unless (EQ PANE AVOIDPANE) - when (OR (NULL ONLYPANE) - (EQ PANE ONLYPANE)) when (SETQ PSTARTLINE (find L inlines (PANETOPLINE PANE) - first (RPLACA L1 NIL) - (RPLACA LN NIL) - suchthat - - (* ;; + [LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (CL:UNLESS SEL + (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) + (SELECTION! SEL) + (CL:WHEN (AND (FGETTOBJ TEXTOBJ PRIMARYPANE) + (FGETSEL SEL SET) + (NOT (FGETTOBJ TEXTOBJ TXTDON'TUPDATE))) + + (* ;; "CH# is the first selected character, CHLIM is the character just after the last one, hence the SUB1. ") + + (* ;; "For a point selection, CHLIM=(ADD1 CH#) so CHNO=LASTCHNO, and the caret position is determined by POINT. Highlighting is determined separately by DCH, which is 0 for point selections.") + + (for PANE PSTARTLINE PENDLINE X0 XLIM (FIRSTCHNO _ (IMAX 1 (FGETSEL SEL CH#))) + [LASTCHNO _ (IMAX 1 (SUB1 (FGETSEL SEL CHLIM] inpanes TEXTOBJ as L1 + on (FGETSEL SEL L1) as LN on (FGETSEL SEL LN) when (OR (NULL ONLYPANE) + (EQ PANE ONLYPANE)) + when (SETQ PSTARTLINE (find L inlines (PANETOPLINE PANE) + first (RPLACA L1 NIL) + (RPLACA LN NIL) suchthat + + (* ;;  "The first visible line in PANE that SEL selects. ") - (FLINESELECTEDP L FIRSTCHNO - LASTCHNO))) - do - (* ;; "For highlighting, if the PSTARTLINE for PANE is also the first line of the selection, then update the selection's X0. Similarly for XLIM and PENDLINE. For interior lines, SHOWSEL.HILIGHT uses their LX1 and LXLIM values. ") + (FLINESELECTEDP L FIRSTCHNO + LASTCHNO))) + do + (* ;; "For highlighting, if the PSTARTLINE for PANE is also the first line of the selection, then update the selection's X0. Similarly for XLIM and PENDLINE. For interior lines, SHOWSEL.HILIGHT uses their LX1 and LXLIM values. ") - (* ;; + (* ;;  "IMAX to use the first character of PSTARTLINE if it is not the first line of the selection ") - (CL:UNLESS X0 (* ; + (CL:UNLESS X0 (* ;  "May have been computed for a prior pane") - (CL:WHEN (FWITHINLINEP FIRSTCHNO PSTARTLINE) - [SETQ X0 (\TEDIT.CHTOLINEX TEXTOBJ PSTARTLINE (IMAX FIRSTCHNO (FGETLD - PSTARTLINE - LCHAR1)) - (AND (IGREATERP FIRSTCHNO (TEXTLEN TEXTOBJ)) - (GETLD (FGETLD PSTARTLINE PREVLINE) - FORCED-END] - (FSETSEL SEL X0 X0))) - [SETQ PENDLINE (for L (PBOTTOM _ (PANEBOTTOM PANE)) inlines PSTARTLINE - do - (* ;; "Stop when L is beyond the selection or below the screen. ") - - (CL:WHEN (ILESSP LASTCHNO (FGETLD L LCHARLIM)) - (RETURN L)) - (CL:WHEN (ILEQ (FGETLD L YBOT) - PBOTTOM) (* ; + (CL:WHEN (FWITHINLINEP FIRSTCHNO PSTARTLINE) + [SETQ X0 (\TEDIT.CHTOLINEX TSTREAM PSTARTLINE (IMAX FIRSTCHNO + (FGETLD PSTARTLINE + LCHAR1)) + (CL:IF (EQ 0 (FGETSEL SEL DCH)) + (EQ 'RIGHT (FGETSEL SEL POINT)) + (AND (IGREATERP FIRSTCHNO (TEXTLEN TEXTOBJ)) + (FGETLD (FGETLD PSTARTLINE PREVLINE) + FORCED-END)))] + (FSETSEL SEL X0 X0))) + [SETQ PENDLINE (for L (PBOTTOM _ (PANEBOTTOM PANE)) inlines PSTARTLINE + do + (* ;; + "Stop when L is beyond the selection or below the screen. ") + + (CL:WHEN (ILESSP LASTCHNO (FGETLD L LCHARLIM)) + (RETURN L)) + (CL:WHEN (ILEQ (FGETLD L YBOT) + PBOTTOM) + (* ;  "This can happen if LASTCHAR is not visible on the screen") - (RETURN $$PREVLINE)) finally + (RETURN $$PREVLINE)) finally (* ;;  "If $$PREVLINE is NIL, we didn't advance--so we must have ended at the start") - (RETURN (OR $$PREVLINE PSTARTLINE] - (CL:UNLESS PENDLINE (* ; + (RETURN (OR $$PREVLINE + PSTARTLINE] + (CL:UNLESS PENDLINE (* ;  "Start could be the last line in the window, it ends there too.") - (SETQ PENDLINE PSTARTLINE)) - (CL:UNLESS XLIM - (CL:WHEN (FWITHINLINEP LASTCHNO PENDLINE) - (SETQ XLIM (\TEDIT.CHTOLINEX TEXTOBJ PENDLINE LASTCHNO T)) - (FSETSEL SEL XLIM XLIM))) - - (* ;; "Fill in the selected lines that are visible in this pane") - - (RPLACA L1 PSTARTLINE) - (RPLACA LN PENDLINE))) + (SETQ PENDLINE PSTARTLINE)) + (CL:UNLESS XLIM + (CL:WHEN (FWITHINLINEP LASTCHNO PENDLINE) + (SETQ XLIM (CL:IF (EQ 0 (FGETSEL SEL DCH)) + X0 + (\TEDIT.CHTOLINEX TSTREAM PENDLINE LASTCHNO T))) + (FSETSEL SEL XLIM XLIM))) + + (* ;; "Fill in the selected lines that are visible in this pane") + + (RPLACA L1 PSTARTLINE) + (RPLACA LN PENDLINE)))] SEL]) (\TEDIT.CHTOLINEX - [LAMBDA (TEXTOBJ LINE CH# AFTER) (* ; "Edited 6-Mar-2025 11:57 by rmk") + [LAMBDA (TSTREAM LINE CH# AFTER) (* ; "Edited 20-Apr-2025 23:47 by rmk") + (* ; "Edited 6-Mar-2025 11:57 by rmk") (* ; "Edited 28-Nov-2024 14:41 by rmk") (* ; "Edited 17-Nov-2024 15:58 by rmk") (* ; "Edited 13-Jun-2024 17:12 by rmk") @@ -1150,61 +1128,63 @@ (* ;; "it is an error if CH# is before LCHAR1 or after LCHARLIM.") - (\DTEST LINE 'LINEDESCRIPTOR) - (LET (X (THISLINE (GETTOBJ TEXTOBJ THISLINE))) - (CL:UNLESS (EQ LINE (fetch DESC of THISLINE)) + (LINEDESCRIPTOR! LINE) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (THISLINE (GETTOBJ TEXTOBJ THISLINE)) + X) + (CL:UNLESS (EQ LINE (fetch DESC of THISLINE)) - (* ;; "Reformat if LINE is not cached in THISLINE. ") + (* ;; "Reformat if LINE is not cached in THISLINE. ") - (\TEDIT.FORMATLINE (FGETTOBJ TEXTOBJ STREAMHINT) - (FGETLD LINE LCHAR1) - LINE)) + (\TEDIT.FORMATLINE TSTREAM (FGETLD LINE LCHAR1) + LINE)) - (* ;; "Can avoid another loop if we are asking about the first or last characters.") + (* ;; "Can avoid another loop if we are asking about the first or last characters.") - (if (AND AFTER (IEQP CH# (FGETLD LINE LCHARLAST))) - then (FGETLD LINE LXLIM) - elseif (AND (NOT AFTER) - (IEQP CH# (FGETLD LINE LCHAR1))) - then (FGETLD LINE LX1) - else (for CHARSLOT (X _ (FGETLD LINE LX1)) - (CHNO _ (FGETLD LINE LCHAR1)) incharslots THISLINE - eachtime (CL:WHEN (AND CHAR (DIACRITICP CHAR)) + (if (AND AFTER (IEQP CH# (FGETLD LINE LCHARLAST))) + then (FGETLD LINE LXLIM) + elseif (AND (NOT AFTER) + (IEQP CH# (FGETLD LINE LCHAR1))) + then (FGETLD LINE LX1) + else (for CHARSLOT (X _ (FGETLD LINE LX1)) + (CHNO _ (FGETLD LINE LCHAR1)) incharslots THISLINE + eachtime (CL:WHEN (AND CHAR (DIACRITICP CHAR)) - (* ;; "If the diacritic CHARW is greater than the CHARW of the next slot, we should set the diacritic CHARW to (IDIFFERENCE CHARW (NEXT CHARW)). ") + (* ;; "If the diacritic CHARW is greater than the CHARW of the next slot, we should set the diacritic CHARW to (IDIFFERENCE CHARW (NEXT CHARW)). ") - (* ;; "i.e. (IMAX 0 (IDIFFERENCE CHARW (NEXT CHARW))") + (* ;; "i.e. (IMAX 0 (IDIFFERENCE CHARW (NEXT CHARW))") - (SETQ CHARW 0)) unless (type? CHARLOOKS CHARW) - do - (* ;; + (SETQ CHARW 0)) unless (type? CHARLOOKS CHARW) + do + (* ;;  "Update the running X-position in the line, skiping look-slots and skipping diacritics") - (CL:WHEN (IEQP CHNO CH#) - (if AFTER - then (add X (CHARW CHARSLOT))) + (CL:WHEN (IEQP CHNO CH#) + (if AFTER + then (add X (CHARW CHARSLOT))) - (* ;; - "Scale selection X down to points for lines in hardcopy-display mode.") + (* ;; + "Scale selection X down to points for lines in hardcopy-display mode.") - (RETURN X)) - (CL:WHEN CHAR (* ; "Ignore CHARLOOKS") - (add CHNO 1) - (add X CHARW)) finally (CL:WHEN (AND (IEQP CH# (FGETLD LINE LCHAR1)) - (IGREATERP (FGETLD LINE LCHARLIM) - (FGETTOBJ TEXTOBJ TEXTLEN)) - (EQ (FGETLD LINE LXLIM) - (FGETLD LINE LX1))) + (RETURN X)) + (CL:WHEN CHAR (* ; "Ignore CHARLOOKS") + (add CHNO 1) + (add X CHARW)) finally (CL:WHEN (AND (IEQP CH# (FGETLD LINE LCHAR1)) + (IGREATERP (FGETLD LINE LCHARLIM) + (FGETTOBJ TEXTOBJ TEXTLEN)) + (EQ (FGETLD LINE LXLIM) + (FGETLD LINE LX1))) - (* ;; + (* ;;  "CH# not found in empty final line, return left margin") - (RETURN (FGETLD LINE LX1)))]) + (RETURN (FGETLD LINE LX1)))]) ) (DEFINEQ (\TEDIT.RESET.EXTEND.PENDING.DELETE - [LAMBDA (TSTREAM) (* ; "Edited 19-Mar-2025 13:24 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 6-Apr-2025 14:19 by rmk") + (* ; "Edited 19-Mar-2025 13:24 by rmk") (* ; "Edited 26-Nov-2024 23:44 by rmk") (* ; "Edited 9-Mar-2024 11:37 by rmk") (* ; "Edited 19-Feb-2024 23:10 by rmk") @@ -1215,11 +1195,8 @@ (* ;; "Reset the 'Extend Pending Delete' status") - (LET [(TEXTOBJ (CL:IF (type? TEXTOBJ TSTREAM) - TSTREAM - (GETTSTR TSTREAM TEXTOBJ))] - (\TEDIT.SHOWSEL (TEXTSEL TEXTOBJ) - NIL TEXTOBJ) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (\TEDIT.NOSEL TSTREAM) (\TEDIT.SET.SEL.LOOKS (TEXTSEL TEXTOBJ) 'NORMAL) (SETTOBJ TEXTOBJ BLUEPENDINGDELETE NIL]) @@ -1271,11 +1248,25 @@ (NIL) (\TEDIT.THELP "UNKNOWN SELECTION OPERATION" OPERATION)) SEL]) +) +(DECLARE%: EVAL@COMPILE DONTCOPY +(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE + +(PUTPROPS \TEDIT.NOSEL MACRO ((TSTREAM SEL ONLYPANE) (* ; + "Takes down SEL in TSTREAM, where SEL defaults to the current selection") + (\TEDIT.SHOWSEL SEL NIL TSTREAM ONLYPANE))) +) + +(* "END EXPORTED DEFINITIONS") + ) (DEFINEQ (\TEDIT.SHOWSEL - [LAMBDA (SEL ON TEXTOBJ ONLYPANE) (* ; "Edited 4-Oct-2024 10:29 by rmk") + [LAMBDA (SEL ON TSTREAM ONLYPANE DONTFIX) (* ; "Edited 21-Apr-2025 20:35 by rmk") + (* ; "Edited 6-Apr-2025 13:55 by rmk") + (* ; "Edited 5-Apr-2025 13:00 by rmk") + (* ; "Edited 4-Oct-2024 10:29 by rmk") (* ; "Edited 2-Oct-2024 14:20 by rmk") (* ; "Edited 21-Aug-2024 16:11 by rmk") (* ; "Edited 19-Jul-2024 23:46 by rmk") @@ -1292,44 +1283,51 @@ (* ; "Edited 14-Oct-2023 12:10 by rmk") (* ; "Edited 5-Apr-2023 09:13 by rmk") (* ; "Edited 22-May-92 16:11 by jds") - (CL:WHEN (TEXTSTREAMP TEXTOBJ) - (SETQ TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TEXTOBJ))) - (TEXTOBJ! TEXTOBJ) - (CL:UNLESS SEL - (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) - (SELECTION! SEL) (* ;; "Highlight the selection SEL, according to HOW, turning it on or off according to ON. ONLYPANE is specified in calls from \TEDIT.SCROLLFN to confine operations to only the pane currently being scrolled. Other panes are neither unhighlighted or rehighlighted.") (* ;; "The selection's lines [L1...LN] are the subset of lines selected globally by CH# to CHLIM that are visible within each pane.") - (CL:WHEN (AND (FGETSEL SEL SET) - (NEQ ON (FGETSEL SEL ONFLG)) - (NOT (FGETTOBJ TEXTOBJ TXTDON'TUPDATE)) - (FGETTOBJ TEXTOBJ PRIMARYPANE)) - - (* ;; "This operation only makes sense if the selection is set, it is not currently in the intended ON state, we are allowed to update, and there is at least one pane to highlight in.") - - (if (FGETSEL SEL SELOBJ) - then - (* ;; "SELOBJ if the selection consisted only of a single image object. It presumably did its own buttonevent operations when it was selected, but is otherwise immune to normal highlighting. But it acts just as a normal character in all panes if it is part of a longer selection. ") - - (* ;; "This does the WHENOPERATEDONFN once no matter how many panes the object appears in, and that function controls the highlighting. Not sure what happens in other panes. If we do the ordinary highlighting, then e.g. a whole NWAY image object gets underlines, even though only one toggle was selected.") - - (\TEDIT.OPERATE.OBJECT (FGETTOBJ TEXTOBJ STREAMHINT) - SEL - (FGETTOBJ TEXTOBJ SELPANE) - (CL:IF ON - 'HIGHLIGHTED - 'UNHIGHLIGHTED)) - else (for PANE inpanes (PROGN TEXTOBJ) as L1 in (FGETSEL SEL L1) as LN - in (FGETSEL SEL LN) when (OR (NULL ONLYPANE) - (EQ PANE ONLYPANE)) - do (CL:WHEN (AND L1 LN (NEQ 0 (FGETSEL SEL DCH))) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM))) + (CL:UNLESS SEL + (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) + (SELECTION! SEL) + (CL:WHEN (AND (FGETSEL SEL SET) + (NEQ ON (FGETSEL SEL ONFLG)) + (NOT (FGETTOBJ TEXTOBJ TXTDON'TUPDATE)) + (FGETTOBJ TEXTOBJ PRIMARYPANE)) + + (* ;; "This operation only makes sense if the selection is set, it is not currently in the intended ON state, we are allowed to update, and there is at least one pane to highlight in.") + + (CL:WHEN (AND ON (NOT DONTFIX)) (* ; + "If we're ON, make sure we're fixed.") + (\TEDIT.FIXSEL SEL TSTREAM ONLYPANE)) + (if (FGETSEL SEL SELOBJ) + then + (* ;; "SELOBJ if the selection consisted only of a single image object. It presumably did its own buttonevent operations when it was selected, but is otherwise immune to normal highlighting. But it acts just as a normal character in all panes if it is part of a longer selection. ") + + (* ;; "This does the WHENOPERATEDONFN once no matter how many panes the object appears in, and that function controls the highlighting. Not sure what happens in other panes. If we do the ordinary highlighting, then e.g. a whole NWAY image object gets underlines, even though only one toggle was selected.") + + (\TEDIT.OPERATE.OBJECT TSTREAM SEL (FGETTOBJ TEXTOBJ SELPANE) + (CL:IF ON + 'HIGHLIGHTED + 'UNHIGHLIGHTED)) + else (for PANE inpanes (PROGN TEXTOBJ) as L1 in (FGETSEL SEL L1) as LN + in (FGETSEL SEL LN) when (OR (NULL ONLYPANE) + (EQ PANE ONLYPANE)) + do (CL:WHEN (AND L1 LN (NEQ 0 (FGETSEL SEL DCH))) (* ; "Hilight if not a point selection") - (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L1 LN PANE SEL)) - (\TEDIT.SETCARET SEL PANE TEXTOBJ ON))) - (FSETSEL SEL ONFLG ON))]) + (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L1 LN PANE SEL)) + (\TEDIT.SETCARET SEL PANE TEXTOBJ ON))) + (FSETSEL SEL ONFLG ON))]) + +(\TEDIT.NOSEL + [LAMBDA (TSTREAM SEL ONLYPANE) (* ; "Edited 15-Apr-2025 15:20 by rmk") + + (* ;; + "A function along side the macro so Masterscope doesn't show NOSEL and SHOWSEL at the same time.") + + (\TEDIT.SHOWSEL SEL NIL TSTREAM ONLYPANE]) (\TEDIT.SHOWSEL.HILIGHT [LAMBDA (TEXTOBJ L1 LN PANE SEL) (* ; "Edited 1-Dec-2024 11:28 by rmk") @@ -1384,64 +1382,76 @@ 'INVERT) repeatuntil (EQ L LN]) (\TEDIT.UPDATE.SEL - [LAMBDA (SEL CH# DCH POINT LOOKS CHLIM) (* ; "Edited 10-Jul-2024 17:25 by rmk") + [LAMBDA (TSTREAM/SEL CH# DCH POINT LOOKS CHLIM) (* ; "Edited 21-Apr-2025 22:50 by rmk") + (* ; "Edited 6-Apr-2025 11:47 by rmk") + (* ; "Edited 10-Jul-2024 17:25 by rmk") (* ; "Edited 8-Jul-2024 00:11 by rmk") - (* ; "Edited 21-Jun-2024 14:21 by rmk") (* ; "Edited 29-Apr-2024 13:28 by rmk") (* ; "Edited 15-Mar-2024 13:36 by rmk") - (* ; "Edited 5-Mar-2024 14:45 by rmk") - (* ; "Edited 25-Feb-2024 17:30 by rmk") - (* ; "Edited 16-Feb-2024 23:49 by rmk") (* ; "Edited 17-Sep-2023 00:05 by rmk") - (* ; "Edited 12-Aug-2023 08:27 by rmk") (* ; "Edited 6-Jun-2023 13:24 by rmk") (* ; "Edited 7-May-2023 19:03 by rmk") - (* ;; "Translates the selection SEL to new positions. DCH=0 means point selection with caret blinking either before or after CH#, depending on POINT. If CH# is a history event, that defines the new selection parameters. Otherwise, if any of the variables are NIL, the value for that field in SEL is not changed.") + (* ;; "Translates a selection to new positions. If TSTREAM/SEL is a stream, then its selection is the target SEL. And in that case the selection is fixed and shown after the adjustment.") + + (* ;; " DCH=0 means point selection with caret blinking either before or after CH#, depending on POINT. If CH# is a history event, that defines the new selection parameters. Otherwise, if any of the variables are NIL, the value for that field in SEL is not changed.") (* ;; "For convenience, If DCH is NIL and CHLIM is provided, DCH is computed from CH# and CHLIM instead of being left alone.") - [if (type? TEDITHISTORYEVENT CH#) - then (* ; "History is a pseudo-selection") - (CL:UNLESS DCH - (SETQ DCH (GETTH CH# THLEN))) - (CL:UNLESS POINT - (SETQ POINT (GETTH CH# THPOINT CH#))) - (SETQ CH# (GETTH CH# THCH#)) - else - (* ;; "Get defaults from SEL (either a selection or a textobj whose SEL is indicated)") - - (CL:WHEN (type? TEXTOBJ SEL) - (SETQ SEL (TEXTSEL SEL))) - (CL:UNLESS CH# - (SETQ CH# (GETSEL SEL CH#))) - (CL:UNLESS DCH - (SETQ DCH (if CHLIM - then (IDIFFERENCE CHLIM CH#) - else (FGETSEL SEL DCH)))) - (CL:UNLESS POINT - (SETQ POINT (FGETSEL SEL POINT)))] + (LET (TSTREAM SEL) + (if (type? TEXTSTREAM TSTREAM/SEL) + then (SETQ TSTREAM TSTREAM/SEL) + (SETQ SEL (TEXTSEL (FTEXTOBJ TSTREAM))) + elseif (type? SELECTION TSTREAM/SEL) + then (SETQ SEL TSTREAM/SEL) + elseif (type? TEXTOBJ TSTREAM/SEL) + then (SETQ TSTREAM TSTREAM/SEL) (* ; "Maybe not allow this") + (SETQ SEL (TEXTSEL TSTREAM/SEL)) + else (\TEDIT.THELP "Not a text stream or selection" SEL)) + + (* ;; "We now have a selection SEL, maybe also have a TSTREAM") + + [if (type? TEDITHISTORYEVENT CH#) + then (* ; "History is a pseudo-selection") + (CL:UNLESS DCH + (SETQ DCH (GETTH CH# THLEN))) + (CL:UNLESS POINT + (SETQ POINT (GETTH CH# THPOINT CH#))) + (SETQ CH# (GETTH CH# THCH#)) + else + (* ;; + "Get defaults from SEL (either a selection or a textobj whose SEL is indicated)") + + (CL:UNLESS CH# + (SETQ CH# (GETSEL SEL CH#))) + (CL:UNLESS DCH + (SETQ DCH (if CHLIM + then (IDIFFERENCE CHLIM CH#) + else (FGETSEL SEL DCH)))) + (CL:UNLESS POINT + (SETQ POINT (FGETSEL SEL POINT)))] - (* ;; + (* ;;  "If below 1, left of 1. We don't know TEXTLEN without the TEXTOBJ, so we can't test the length.") - (CL:WHEN (ILESSP CH# 1) - (SETQ CH# 1) - (SETQ POINT 'LEFT)) + (CL:WHEN (ILESSP CH# 1) + (SETQ CH# 1) + (SETQ POINT 'LEFT)) - (* ;; "POINT=LEFT means before CH#, POINT=RIGHT means before CHLIM. If DCH=0, caret is between (and CHLIM - CH# is not DCH=0).") + (* ;; "POINT=LEFT means before CH#, POINT=RIGHT means before CHLIM. If DCH=0, caret is between (and CHLIM - CH# is not DCH=0).") - (SETSEL SEL CH# CH#) - (FSETSEL SEL DCH DCH) - (FSETSEL SEL CHLIM (CL:IF (EQ DCH 0) - (ADD1 CH#) - (IPLUS CH# DCH))) - (FSETSEL SEL POINT POINT) - (FSETSEL SEL SELOBJ NIL) (* ; + (SETSEL SEL CH# CH#) + (FSETSEL SEL DCH DCH) + (FSETSEL SEL CHLIM (CL:IF (EQ DCH 0) + (ADD1 CH#) + (IPLUS CH# DCH))) + (FSETSEL SEL POINT POINT) + (FSETSEL SEL SELOBJ NIL) (* ;  "If we are moving around, we are moving away from any old object") - (FSETSEL SEL SET T) - (CL:WHEN LOOKS (\TEDIT.SET.SEL.LOOKS SEL LOOKS)) - SEL]) + (FSETSEL SEL SET T) + (CL:WHEN LOOKS (\TEDIT.SET.SEL.LOOKS SEL LOOKS)) + (CL:WHEN TSTREAM (\TEDIT.SHOWSEL SEL T TSTREAM)) + SEL]) (\TEDIT.CARETLINE [LAMBDA (SEL PANE TEXTOBJ) (* ; "Edited 7-Nov-2024 21:50 by rmk") @@ -1644,7 +1654,10 @@ (DEFINEQ (\TEDIT.SELECT.OBJECT - [LAMBDA (TEXTOBJ NEWSEL LINE X Y SELPANE SELOPERATION BUTTON) + [LAMBDA (TSTREAM NEWSEL LINE X Y SELPANE SELOPERATION BUTTON) + (* ; "Edited 21-Apr-2025 20:16 by rmk") + (* ; "Edited 14-Apr-2025 23:47 by rmk") + (* ; "Edited 5-Apr-2025 13:05 by rmk") (* ; "Edited 6-Dec-2024 11:09 by rmk") (* ; "Edited 30-Nov-2024 00:01 by rmk") (* ; "Edited 26-Nov-2024 03:45 by rmk") @@ -1662,7 +1675,8 @@ (* ; "Edited 14-Oct-2023 11:38 by rmk") (* ; "Edited 10-Apr-2023 08:38 by rmk") (* ; "Edited 29-Mar-94 13:28 by jds") - (LET ((OBJ (FGETSEL NEWSEL SELOBJ)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (OBJ (FGETSEL NEWSEL SELOBJ)) RESULT) (RESETLST (\TEDIT.CLIP.OBJECT OBJ (FGETSEL NEWSEL X0) @@ -1677,7 +1691,7 @@ (IDIFFERENCE X (FGETSEL NEWSEL X0)) (IDIFFERENCE Y (FGETLD LINE YBASE)) SELPANE - (fetch (TEXTWINDOW WTEXTSTREAM) of SELPANE) + (PANETEXTSTREAM SELPANE) BUTTON SELOPERATION)))) (* ;; "The clipping region is now restored.") @@ -1696,9 +1710,9 @@ then (* ;; "The object may have updated its own image, within its coordinate system. But its box may have changed, and if so, the document also needs to reformat and the selection has to be adjusted. We know that CURSEL is currently displayed, we get it out of the way here, expecting that \TEDIT.BUTTONEVENTFN will synchronize CURSEL with NEWSEL.") - (\TEDIT.UPDATE.LINES TEXTOBJ 'CHANGED (FGETSEL NEWSEL CH#) + (\TEDIT.UPDATE.LINES TSTREAM 'CHANGED (FGETSEL NEWSEL CH#) 1) - (\TEDIT.SHOWSEL NIL T TEXTOBJ) + (\TEDIT.SHOWSEL NIL T TSTREAM NIL T) (FSETTOBJ TEXTOBJ \DIRTY T) elseif (NULL (CAR RESULT)) then @@ -1712,7 +1726,8 @@ (CAR RESULT]) (\TEDIT.SHOWSEL.OBJECT - [LAMBDA (TEXTOBJ SEL L1 ON PANE) (* ; "Edited 1-Dec-2024 11:52 by rmk") + [LAMBDA (TSTREAM SEL L1 ON PANE) (* ; "Edited 21-Apr-2025 19:07 by rmk") + (* ; "Edited 1-Dec-2024 11:52 by rmk") (* ; "Edited 21-Aug-2024 15:31 by rmk") (* ; "Edited 19-Jul-2024 23:15 by rmk") (* ; "Edited 18-Jul-2024 12:19 by rmk") @@ -1726,6 +1741,7 @@ (* ;; "We are hilighting (or dehilighting) a selection containing only a single image object if it appears in PANE ") + (NOTUSED) (LET [(OBJ (FGETSEL SEL SELOBJ)) (IMAGEFN (IMAGEOBJPROP (FGETSEL SEL SELOBJ) 'WHENOPERATEDONFN] @@ -1741,8 +1757,7 @@ (ERSETQ (APPLY* IMAGEFN OBJ PANE (CL:IF ON 'HIGHLIGHTED 'UNHIGHLIGHTED) - SEL - (FGETTOBJ TEXTOBJ STREAMHINT)))))]) + SEL TSTREAM))))]) (\TEDIT.CLIP.OBJECT [LAMBDA (OBJ X LINE PANE) (* ; "Edited 1-Dec-2024 11:54 by rmk") @@ -1778,7 +1793,10 @@ `(PROGN (DSPCLIPPINGREGION OLDVALUE ,DS]) (\TEDIT.OPERATE.OBJECT - [LAMBDA (TSTREAM SEL PANE OPERATION) (* ; "Edited 31-Dec-2024 17:24 by rmk") + [LAMBDA (TSTREAM SEL PANE OPERATION) (* ; "Edited 21-Apr-2025 20:22 by rmk") + (* ; "Edited 6-Apr-2025 14:21 by rmk") + (* ; "Edited 5-Apr-2025 13:13 by rmk") + (* ; "Edited 31-Dec-2024 17:24 by rmk") (* ; "Edited 1-Dec-2024 11:55 by rmk") (* ; "Edited 18-Oct-2024 13:44 by rmk") (* ; "Edited 6-Oct-2024 23:09 by rmk") @@ -1799,7 +1817,7 @@ (LET* ((OBJ (FGETSEL SEL SELOBJ)) (WHENOPERATEDONFN (IMAGEOBJPROP OBJ 'WHENOPERATEDONFN)) - (TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (TEXTOBJ (FTEXTOBJ TSTREAM)) LINE) (CL:WHEN WHENOPERATEDONFN (SELECTQ OPERATION @@ -1807,14 +1825,14 @@ (* ;; "Called from BUTTONEVENTFN.DOOPERATION. Execute once, in PANE. SHOWSEL and FIXSEL do the updates across other panes. This runs in PANE's coordinate system. We can't do it if we can't determine from SEL where OBJ is located in PANE.") (CL:WHEN (SETQ LINE (\TEDIT.SEL.L1 SEL PANE TEXTOBJ)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (MOVETO (FGETSEL SEL X0) (FGETLD LINE YBASE) PANE) (ERSETQ (APPLY* WHENOPERATEDONFN OBJ (WINDOWPROP PANE 'DSP) OPERATION SEL TSTREAM)) - (\TEDIT.FIXSEL SEL TEXTOBJ) (* ; "Restore highlighting") - (\TEDIT.SHOWSEL SEL T TEXTOBJ))) + (* ; "Restore highlighting") + (\TEDIT.SHOWSEL SEL T TSTREAM))) ((HIGHLIGHTED UNHIGHLIGHTED DESELECTED) (* ;; "Execute in each pane where OBJ is visible, in OBJ's coordinate system. This may be duplicating the pane iteration in SHOWSEL?") @@ -1907,7 +1925,8 @@ SPLASTCHAR _ LASTCHAR))]) (\TEDIT.SELPIECES.COPY - [LAMBDA (SELPIECES OPERATION TOTEXTOBJ FROMTEXTOBJ CHARLOOKS) + [LAMBDA (SELPIECES OPERATION TOTSTREAM FROMTSTREAM CHARLOOKS) + (* ; "Edited 22-Apr-2025 08:26 by rmk") (* ; "Edited 19-Mar-2025 16:26 by rmk") (* ; "Edited 26-Nov-2024 23:31 by rmk") (* ; "Edited 22-Nov-2024 15:38 by rmk") @@ -1919,18 +1938,20 @@ (* ;; "Produces a copy of SELPIECES where the pieces from first to last are chained-together copies of the original pieces so that later inpieces can run from first to last. OPERATION determines which imageobject functions will be invoked, if any.") - (* ;; "FROMTEXTOBJ is optional. Providing a FROMTEXTOBJ that is different from TOTEXTOBJ is a signal that this is a cross-copy needing to create private copies of strings and files. ") + (* ;; "FROMTEXTOBJ is optional. Providing a FROMTSTREAM that is different from TOTSTREAM is a signal that this is a cross-copy needing to create private copies of strings and files. ") + + (* ;; "DO NOT RUN THIS INTERPRETED: DWIM SOMEHOW SCREWS UP THIS INSELPIECES LOOP") (CL:WHEN SELPIECES - (CL:UNLESS FROMTEXTOBJ (SETQ FROMTEXTOBJ TOTEXTOBJ)) + (CL:UNLESS FROMTSTREAM (SETQ FROMTSTREAM TOTSTREAM)) (for PC NPC PREVPC NEWFIRSTPIECE inselpieces (PROGN SELPIECES) - do (SETQ NPC (\TEDIT.COPYPIECE PC FROMTEXTOBJ TOTEXTOBJ NIL OPERATION)) + do (SETQ NPC (\TEDIT.COPYPIECE PC FROMTSTREAM TOTSTREAM NIL OPERATION)) (CL:UNLESS NPC (* ; "Was an object-copy disallowed?") - (RETURN)) + (RETURN)) + (CL:WHEN CHARLOOKS (FSETPC NPC PCHARLOOKS CHARLOOKS)) (* ;; "Linke the new pieces together") - (CL:WHEN CHARLOOKS (FSETPC NPC PCHARLOOKS CHARLOOKS)) (if PREVPC then (SETPC PREVPC NEXTPIECE NPC) else (SETQ NEWFIRSTPIECE NPC)) @@ -1967,7 +1988,8 @@ SPLASTCHAR _ (ffetch (SELPIECES SPLASTCHAR) of SP2]) (\TEDIT.SELPIECES.CHARTRANSFORM - [LAMBDA (SELPIECES CHARFN OBJECTSTOO TEXTOBJ) (* ; "Edited 16-Mar-2025 10:03 by rmk") + [LAMBDA (SELPIECES CHARFN OBJECTSTOO TSTREAM) (* ; "Edited 20-Apr-2025 23:23 by rmk") + (* ; "Edited 16-Mar-2025 10:03 by rmk") (* ; "Edited 7-Nov-2024 21:50 by rmk") (* ; "Edited 4-Oct-2024 08:41 by rmk") (* ; "Edited 28-Apr-2024 08:52 by rmk") @@ -1979,7 +2001,8 @@ (* ;;  "This smashes the pieces, use crosscopy \TEDIT.SELPIECES.COPY first to protect the document pieces.") - [for PC PCONTENTS (INDEX _ 0) inselpieces SELPIECES + [for PC PCONTENTS (TEXTOBJ _ (FTEXTOBJ TSTREAM)) + (INDEX _ 0) inselpieces SELPIECES do (SETQ PCONTENTS (PCONTENTS PC)) (SELECTC (PTYPE PC) (STRING.PTYPES (for I CH (STR _ PCONTENTS) from 1 while (SETQ CH (NTHCHARCODE STR I)) @@ -2132,7 +2155,9 @@ (DEFINEQ (TEDIT.XYTOCH - [LAMBDA (X Y PANE) (* ; "Edited 6-Dec-2024 11:55 by rmk") + [LAMBDA (X Y PANE) (* ; "Edited 20-Apr-2025 13:43 by rmk") + (* ; "Edited 18-Apr-2025 15:07 by rmk") + (* ; "Edited 6-Dec-2024 11:55 by rmk") (* ; "Edited 1-Dec-2024 11:28 by rmk") (* ; "Edited 29-Nov-2024 09:14 by rmk") (* ; "Edited 20-Nov-2024 11:27 by rmk") @@ -2162,10 +2187,8 @@ (SUB1 (PANEHEIGHT PANE))) (BOTTOM (PANEBOTTOM PANE)) Y)) - (\TEDIT.XYTOSEL X Y SCRSEL (PANETOBJ PANE) - PANE - 'NORMAL - 'LEFT NIL 'TEXT) + (\TEDIT.XYTOSEL X Y SCRSEL (PANETEXTSTREAM PANE) + 'NORMAL PANE 'LEFT NIL 'TEXT) (CL:WHEN (FGETSEL SCRSEL SET) (FGETSEL SCRSEL CH#]) @@ -2308,7 +2331,8 @@ (FGETSEL SEL DCH))]) (TEDIT.SET.SEL.LOOKS - [LAMBDA (SEL OPERATION) (* ; "Edited 18-May-2024 16:20 by rmk") + [LAMBDA (SEL OPERATION) (* ; "Edited 21-Apr-2025 20:27 by rmk") + (* ; "Edited 18-May-2024 16:20 by rmk") (* ; "Edited 29-Apr-2024 13:03 by rmk") (* ; "Edited 9-Mar-2024 12:04 by rmk") (* ; "Edited 15-Mar-2024 13:34 by rmk") @@ -2321,14 +2345,16 @@ (* ;; "Set what the selection should be displayed like, given what it's for (NORMAL, COPY, MOVE, etc.). This is a documented entry.") (LET ((WASON (GETSEL SEL ONFLG)) - (TEXTOBJ (TEXTOBJ SEL))) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (TSTREAM (TEXTSTREAM SEL))) + (\TEDIT.NOSEL TSTREAM SEL) (\TEDIT.SET.SEL.LOOKS SEL OPERATION) - (\TEDIT.SHOWSEL SEL WASON TEXTOBJ) + (\TEDIT.SHOWSEL SEL WASON TSTREAM) SEL]) (TEDIT.SETSEL [LAMBDA (TSTREAM CH# LEN POINT PENDINGDELFLG LEAVECARETLOOKS OPERATION) + (* ; "Edited 6-Apr-2025 17:52 by rmk") + (* ; "Edited 5-Apr-2025 13:43 by rmk") (* ; "Edited 17-Feb-2025 12:26 by rmk") (* ; "Edited 31-Jan-2025 12:43 by rmk") (* ; "Edited 19-Jan-2025 08:32 by rmk") @@ -2352,11 +2378,11 @@ (SETQ TSTREAM (TEXTSTREAM TSTREAM)) (CL:WHEN (AND LEN (ILESSP LEN 0)) (ERROR "Selection length cannot be negative" LEN)) - (LET* ((TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ))) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (SEL (TEXTSEL TEXTOBJ)) (TEXTLEN (TEXTLEN TEXTOBJ)) PC) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) (* ; "First turn the old sel off.") + (\TEDIT.NOSEL TSTREAM) (* ; "First turn the old sel off.") [if (type? SELECTION CH#) then (* ;  "He gave us a selection; just plug it in") @@ -2388,13 +2414,13 @@ (CL:UNLESS LEAVECARETLOOKS (* ;  "Set the insertion looks to follow.") (SETTOBJ TEXTOBJ CARETLOOKS (\TEDIT.GET.INSERT.CHARLOOKS TEXTOBJ SEL))) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ) + (\TEDIT.SHOWSEL SEL T TSTREAM) (FSETTOBJ TEXTOBJ LASTARROWX NIL) (TEDIT.GETSEL TSTREAM]) (TEDIT.SHOWSEL - [LAMBDA (TSTREAM ONFLG SEL) (* ; "Edited 7-Jul-2024 11:25 by rmk") + [LAMBDA (TSTREAM ONFLG SEL) (* ; "Edited 6-Apr-2025 23:31 by rmk") + (* ; "Edited 7-Jul-2024 11:25 by rmk") (* ; "Edited 18-May-2024 16:28 by rmk") (* ; "Edited 29-Apr-2024 12:27 by rmk") (* ; "Edited 9-Mar-2024 12:06 by rmk") @@ -2404,14 +2430,14 @@ (* ;  "Edited 21-Oct-2022 18:36 by rmk; Edited 30-May-91 23:04 by jds") - (* ;; "He's giving us a selection to highlight and to connect it to this textobj.") + (* ;; "He's giving us a selection to highligh. Original comment said that it would :connect%" SEL to this stream. But that didn't mean making installing the indicated selection into the stream, it meant adding the stream to the selection (now the SELTEXTSTREAM field). The old code did not take down the current selection, so you could end up with highlighting in 2 places. Her at least we take it down.") - (LET ((TEXTOBJ (TEXTOBJ TSTREAM))) - (CL:UNLESS SEL - (SETQ SEL (FGETTOBJ TEXTOBJ SEL))) - (CL:WHEN SEL - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL ONFLG TEXTOBJ))]) + (* ;; "But generally, this is a bogus interface, should be dedocumented and removed. TEDIT.SETSEL is more reasonable") + + (CL:WHEN ONFLG (* ; + "If SEL is going on, we better take down what's there") + (\TEDIT.NOSEL TSTREAM)) + (\TEDIT.SHOWSEL SEL ONFLG TSTREAM]) (TEDIT.SEL.AS.STRING [LAMBDA (TSTREAM SEL/CH# LEN CODEFOROBJECT) (* ; "Edited 15-Feb-2025 12:47 by rmk") @@ -2485,25 +2511,25 @@ (ADDTOVAR LAMA TEDIT.SELPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (15676 17497 (\TEDIT.SELECTION.DEFPRINT 15686 . 17495)) (17534 19039 ( -\TEDIT.SET.GLOBAL.SELECTIONS 17544 . 19037)) (19040 24892 (\TEDIT.SELECTED.PIECES 19050 . 20570) ( -\TEDIT.FIND.PROTECTED.END 20572 . 22241) (\TEDIT.FIND.PROTECTED.START 22243 . 24101) ( -\TEDIT.WORD.BOUND 24103 . 24890)) (25026 59225 (\TEDIT.EXTEND.SEL 25036 . 32124) (\TEDIT.SCAN.LINE -32126 . 43904) (\TEDIT.SCAN.LINE.WORD 43906 . 49267) (\TEDIT.XYTOSEL 49269 . 56378) (\TEDIT.REGIONTYPE - 56380 . 57399) (\TEDIT.XYTOSEL.INLINEP 57401 . 57856) (\TEDIT.XYTOSEL.LINE 57858 . 59223)) (59226 -72850 (\TEDIT.FIXSEL 59236 . 68849) (\TEDIT.CHTOLINEX 68851 . 72848)) (72851 76834 ( -\TEDIT.RESET.EXTEND.PENDING.DELETE 72861 . 74170) (\TEDIT.SET.SEL.LOOKS 74172 . 76832)) (76835 95235 ( -\TEDIT.SHOWSEL 76845 . 81305) (\TEDIT.SHOWSEL.HILIGHT 81307 . 85928) (\TEDIT.UPDATE.SEL 85930 . 89429) - (\TEDIT.CARETLINE 89431 . 90145) (\TEDIT.SEL.L1 90147 . 90830) (\TEDIT.SEL.LN 90832 . 91515) ( -\TEDIT.SEL.DELETEDCHARS 91517 . 95233)) (95236 99942 (\TEDIT.COPYSEL 95246 . 97712) ( -\TEDIT.SEL.CHANGED? 97714 . 99940)) (99973 112702 (\TEDIT.SELECT.OBJECT 99983 . 104489) ( -\TEDIT.SHOWSEL.OBJECT 104491 . 106653) (\TEDIT.CLIP.OBJECT 106655 . 108659) (\TEDIT.OPERATE.OBJECT -108661 . 112700)) (112730 131910 (\TEDIT.SELPIECES 112740 . 117021) (\TEDIT.SELPIECES.COPY 117023 . -119310) (\TEDIT.SELPIECES.CONCAT 119312 . 121191) (\TEDIT.SELPIECES.CHARTRANSFORM 121193 . 124402) ( -\TEDIT.SELPIECES.FROM.STRING 124404 . 129545) (\TEDIT.SELPIECES.TO.STRING 129547 . 131908)) (131963 -154486 (TEDIT.XYTOCH 131973 . 134357) (TEDIT.SELPROP 134359 . 138389) (TEDIT.GETPOINT 138391 . 140311) - (TEDIT.GETSEL 140313 . 141047) (TEDIT.GETSEL.PARA 141049 . 141998) (TEDIT.SCANSEL 142000 . 142948) ( -TEDIT.SET.SEL.LOOKS 142950 . 144329) (TEDIT.SETSEL 144331 . 149095) (TEDIT.SHOWSEL 149097 . 150377) ( -TEDIT.SEL.AS.STRING 150379 . 152864) (TEDIT.SEL.AS.SEXPR 152866 . 154152) (TEDIT.SELECTALL 154154 . -154484))))) + (FILEMAP (NIL (15741 17562 (\TEDIT.SELECTION.DEFPRINT 15751 . 17560)) (17599 19104 ( +\TEDIT.SET.GLOBAL.SELECTIONS 17609 . 19102)) (19105 25076 (\TEDIT.SELECTED.PIECES 19115 . 20754) ( +\TEDIT.FIND.PROTECTED.END 20756 . 22425) (\TEDIT.FIND.PROTECTED.START 22427 . 24285) ( +\TEDIT.WORD.BOUND 24287 . 25074)) (25210 59317 (\TEDIT.EXTEND.SEL 25220 . 32460) (\TEDIT.SCAN.LINE +32462 . 44135) (\TEDIT.SCAN.LINE.WORD 44137 . 49130) (\TEDIT.XYTOSEL 49132 . 56470) (\TEDIT.REGIONTYPE + 56472 . 57491) (\TEDIT.XYTOSEL.INLINEP 57493 . 57948) (\TEDIT.XYTOSEL.LINE 57950 . 59315)) (59318 +72443 (\TEDIT.FIXSEL 59328 . 68298) (\TEDIT.CHTOLINEX 68300 . 72441)) (72444 76396 ( +\TEDIT.RESET.EXTEND.PENDING.DELETE 72454 . 73732) (\TEDIT.SET.SEL.LOOKS 73734 . 76394)) (76794 96623 ( +\TEDIT.SHOWSEL 76804 . 81780) (\TEDIT.NOSEL 81782 . 82083) (\TEDIT.SHOWSEL.HILIGHT 82085 . 86706) ( +\TEDIT.UPDATE.SEL 86708 . 90817) (\TEDIT.CARETLINE 90819 . 91533) (\TEDIT.SEL.L1 91535 . 92218) ( +\TEDIT.SEL.LN 92220 . 92903) (\TEDIT.SEL.DELETEDCHARS 92905 . 96621)) (96624 101330 (\TEDIT.COPYSEL +96634 . 99100) (\TEDIT.SEL.CHANGED? 99102 . 101328)) (101361 114810 (\TEDIT.SELECT.OBJECT 101371 . +106222) (\TEDIT.SHOWSEL.OBJECT 106224 . 108455) (\TEDIT.CLIP.OBJECT 108457 . 110461) ( +\TEDIT.OPERATE.OBJECT 110463 . 114808)) (114838 134369 (\TEDIT.SELPIECES 114848 . 119129) ( +\TEDIT.SELPIECES.COPY 119131 . 121620) (\TEDIT.SELPIECES.CONCAT 121622 . 123501) ( +\TEDIT.SELPIECES.CHARTRANSFORM 123503 . 126861) (\TEDIT.SELPIECES.FROM.STRING 126863 . 132004) ( +\TEDIT.SELPIECES.TO.STRING 132006 . 134367)) (134422 157981 (TEDIT.XYTOCH 134432 . 137008) ( +TEDIT.SELPROP 137010 . 141040) (TEDIT.GETPOINT 141042 . 142962) (TEDIT.GETSEL 142964 . 143698) ( +TEDIT.GETSEL.PARA 143700 . 144649) (TEDIT.SCANSEL 144651 . 145599) (TEDIT.SET.SEL.LOOKS 145601 . +147086) (TEDIT.SETSEL 147088 . 152006) (TEDIT.SHOWSEL 152008 . 153872) (TEDIT.SEL.AS.STRING 153874 . +156359) (TEDIT.SEL.AS.SEXPR 156361 . 157647) (TEDIT.SELECTALL 157649 . 157979))))) STOP diff --git a/library/tedit/TEDIT-SELECTION.LCOM b/library/tedit/TEDIT-SELECTION.LCOM index 2fb5bba0289e51c53e9562c1c86565e3c9b767c9..b7c4b00a234dd8fe77bcf137d6caf52e079ade9f 100644 GIT binary patch delta 9927 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 diff --git a/library/tedit/TEDIT-STREAM b/library/tedit/TEDIT-STREAM index 6134bd72a..40f670dc2 100644 --- a/library/tedit/TEDIT-STREAM +++ b/library/tedit/TEDIT-STREAM @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 18:32:27" {WMEDLEY}TEDIT>TEDIT-STREAM.;872 187180 +(FILECREATED "22-Apr-2025 15:48:58" {WMEDLEY}tedit>TEDIT-STREAM.;895 189896 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.NTHCHARCODE \TEDIT.TEXTBOUT \TEDIT.RPLCHARCODE) - (VARS TEDIT-STREAMCOMS) + :CHANGES-TO (FNS \TEDIT.TEXTCOLOR \TEDIT.DELETE.SELPIECES COPYTEXTSTREAM) - :PREVIOUS-DATE "26-Mar-2025 00:29:46" {WMEDLEY}TEDIT>TEDIT-STREAM.;865) + :PREVIOUS-DATE "21-Apr-2025 22:45:03" {WMEDLEY}tedit>TEDIT-STREAM.;891) (PRETTYCOMPRINT TEDIT-STREAMCOMS) @@ -56,12 +55,12 @@ (FNS \TEDIT.TEXTCLOSEF \TEDIT.TEXTDSPFONT \TEDIT.TEXTEOFP \TEDIT.TEXTGETEOFPTR \TEDIT.TEXTSETEOFPTR \TEDIT.TEXTGETFILEPTR \TEDIT.TEXTSETFILEINFO \TEDIT.TEXTOPENF \TEDIT.TEXTSETEOF \TEDIT.TEXTSETFILEPTR \TEDIT.TEXTDSPXPOSITION \TEDIT.TEXTDSPYPOSITION - \TEDIT.TEXTLEFTMARGIN \TEDIT.TEXTRIGHTMARGIN \TEDIT.TEXTDSPCHARWIDTH + \TEDIT.TEXTLEFTMARGIN \TEDIT.TEXTCOLOR \TEDIT.TEXTRIGHTMARGIN \TEDIT.TEXTDSPCHARWIDTH \TEDIT.TEXTDSPSTRINGWIDTH \TEDIT.TEXTDSPLINEFEED) (* ;; "Access by character") - (FNS \TEDIT.NTHCHARCODE \TEDIT.PIECE.NTHCHARCODE \TEDIT.RPLCHARCODE) + (FNS \TEDIT.NTHCHARCODE \TEDIT.PIECE.NTHCHARCODE \TEDIT.RPLCHARCODE \TEDIT.NTHCHARLOOKS) (COMS (* ;; "Editing support") @@ -75,7 +74,8 @@  "Deprecated, maybe still external callers") (FNS \TEDIT.INSTALL.PIECE) [COMS (* ; "Support for TEXTPROP") - (FNS TEXTPROP GETTEXTPROP PUTTEXTPROP GETTEXTPROPS PUTTEXTPROPS \TEDIT.TEXTPROP) + (FNS TEXTPROP GETTEXTPROP PUTTEXTPROP GETTEXTPROPS PUTTEXTPROPS TEXTPROP.ADD + \TEDIT.TEXTPROP) (FNS \TEDIT.TEXTOBJ.PROPNAMES \TEDIT.TEXTOBJ.PROPFETCHFN \TEDIT.TEXTOBJ.PROPSTOREFN) (* ; "For TEXTOBJ inspection") (DECLARE%: DONTCOPY (* ; "Only if the declaration is loaded") @@ -134,124 +134,125 @@ (freplace (PIECE PCHARLOOKS) of DATUM with NEWVALUE] PFPOS _ 0 PLEN _ 0 PBYTELEN _ 0 PPARALOOKS _ TEDIT.DEFAULT.FMTSPEC) -(DATATYPE TEXTOBJ - ( - (* ;; +(DATATYPE TEXTOBJ ( + (* ;;  "This is where TEdit stores its state information, and internal data about the text being edited.") - PCTB (* ; "The piece table") - TEXTLEN (* ; "# of chars in the text") - PRIMARYPANE (* ; "A sequence of panes (split subwindows) that are open on this document. Was INSERTPC: The string-piece that received the last insertion. Now HINTPC") - SUFFIXPIECE (* ; + PCTB (* ; "The piece table") + TEXTLEN (* ; "# of chars in the text") + PRIMARYPANE (* ; "A sequence of panes (split subwindows) that are open on this document. Was INSERTPC: The string-piece that received the last insertion. Now HINTPC") + SUFFIXPIECE (* ;  "The last (end-of-stream) piece of the textstream, for easy insertion at the end") - CHARFN (* ; + CHARFN (* ;  "Was: INSERTNEXTCH CH# of next char which is typed into that piece. Taken over by HINTPCSTARTCH#") - HINTPC (* ; + HINTPC (* ;  "Was: Space left in the type-in piece") - HINTPCSTARTCH# (* ; + HINTPCSTARTCH# (* ;  "Was # of characters already in the piece.") - INSERTSTRING (* ; + INSERTSTRING (* ;  "A substring of storage that is available for an insertion.") - TXTHISTORYUNDONE (* ; "Events that result from undoing other events, for revoking the UNDO. Was: CH# of first char in the piece.") - (NIL FLAG) (* ; " Was \INSERTPCVALID. T if it's OK to use the cached piece. Set to NIL by people who require that the next insertion/deletion use a different piece. Now just set HINTPC to NIL.") - (TXTREADONLYQUIET FLAG) (* ; + TXTHISTORYUNDONE (* ; "Events that result from undoing other events, for revoking the UNDO. Was: CH# of first char in the piece.") + (NIL FLAG) (* ; " Was \INSERTPCVALID. T if it's OK to use the cached piece. Set to NIL by people who require that the next insertion/deletion use a different piece. Now just set HINTPC to NIL.") + (TXTREADONLYQUIET FLAG) (* ;  "T => don't print READONLY abort messages") - PARABREAKCHARS (* ; "Characters that cause a paragraph break.Was \WINDOW. The window-pane where this textobj is displayed. Now chained through PRIMARYPANE") - MOUSEREGION (* ; + PARABREAKCHARS (* ; "Characters that cause a paragraph break.Was \WINDOW. The window-pane where this textobj is displayed. Now chained through PRIMARYPANE") + MOUSEREGION (* ;  "Section of the window the mouse is in.") - LOOPFN (* ; "Was: A list of lines (parallel to the panes in \WINDOW) each of which is the top of chain of line descriptors for the part of the text that is visible in the corresponding pane. Now: each PANE has its own PLINES.") - DS (* ; + LOOPFN (* ; "Was: A list of lines (parallel to the panes in \WINDOW) each of which is the top of chain of line descriptors for the part of the text that is visible in the corresponding pane. Now: each PANE has its own PLINES.") + DS (* ;  "NOTE: THIS IS ONLY USED INCORRECTLY BY TEDIT-CHAT Display stream where this textobj is displayed") - SEL (* ; + SEL (* ;  "The current selection within the text") - LASTARROWX (* ; + LASTARROWX (* ;  "X for next arrow up or arrow down. Was: Scratch space for the selection code") - NIL (* ; + NIL (* ;  "Was MOVESEL: Source for the next MOVE of text") - NIL (* ; + NIL (* ;  "Was SHIFTEDSEL: Source for the next COPY") - NIL (* ; + NIL (* ;  "Was DELETESEL: Text to be deleted imminently") - WRIGHT (* ; - "Right edge of the window (or subregion) where this is displayed") - WTOP (* ; "Top of the window/region") - WBOTTOM (* ; "Bottom of the window/region") - WLEFT (* ; "Left edge of the window/region") - TXTFILE (* ; + NIL (* ; + "Was WRIGHT: Right edge of the window (or subregion) where this is displayed") + WTOP (* ; "Top of the window/region") + NIL (* ; + "Was WBOTTOM: Bottom of the window/region") + NIL (* ; + "Was WLEFT: Left edge of the window/region") + TXTFILE (* ;  "The original text file we're editing") - (\XDIRTY FLAG) (* ; "T => changed since last saved.") - (STREAMHINT FULLXPOINTER) (* ; + (\XDIRTY FLAG) (* ; "T => changed since last saved.") + (STREAMHINT FULLXPOINTER) (* ;  "-> the TEXTOFD stream which gives access to this textobj") - EDITFINISHEDFLG (* ; + EDITFINISHEDFLG (* ;  "T => The guy has asked the editor to go way") - NIL (* ; + NIL (* ;  "Was CARET: Describes the flashing caret for the editing window") - CARETLOOKS (* ; + CARETLOOKS (* ;  "Font to be used for inserted text.") - WINDOWTITLE (* ; + WINDOWTITLE (* ;  "Original title for this window, of there was one.") - THISLINE (* ; + THISLINE (* ;  "Cache of line-related info, to speed up selection &c") - (MENUFLG FLAG) (* ; + (MENUFLG FLAG) (* ;  "T if this TEXTOBJ is a tedit-style menu") - DEFAULTPARALOOKS (* ; + DEFAULTPARALOOKS (* ;  "Default Formatting Spec to be used when formatting paragraphs") - (FORMATTEDP FLAG) (* ; + (FORMATTEDP FLAG) (* ;  "Flag for paragraph formatting. T if this document is to contain paragraph formatting information.") - (TXTREADONLY FLAG) (* ; + (TXTREADONLY FLAG) (* ;  "This is only available for shift selection.") - (TXTEDITING FLAG) (* ; "T => This document is in a window and there is an edit process behind it. For example, it only makes sense to have a caret show up if you are editing.") - (TXTNOTSPLITTABLE FLAG) (* ; "Can't split into panes, split-region not show. Was TXTNONSCHARS: T => If TEdit rns into a 255, it won't attempt to convert to NS characters. Used for REALLY plain-text manipulation.") - TXTTERMSA (* ; + (TXTEDITING FLAG) (* ; "T => This document is in a window and there is an edit process behind it. For example, it only makes sense to have a caret show up if you are editing.") + (TXTNOTSPLITTABLE FLAG) (* ; "Can't split into panes, split-region not show. Was TXTNONSCHARS: T => If TEdit rns into a 255, it won't attempt to convert to NS characters. Used for REALLY plain-text manipulation.") + TXTTERMSA (* ;  "Special instructions for displaying characters on the screen") - EDITOPACTIVE (* ; + EDITOPACTIVE (* ;  "T if there is an editing operation in progress. Used to interlock the TEdit menu") - DEFAULTCHARLOOKS (* ; "The default character looks -- if any -- to be applied to characters coming into the file from outside.") - TXTRTBL (* ; + DEFAULTCHARLOOKS (* ; "The default character looks -- if any -- to be applied to characters coming into the file from outside.") + TXTRTBL (* ;  "The READTABLE to be used by the command loop for command dispatch") - TXTWTBL (* ; + TXTWTBL (* ;  "The READTABLE to be used to decide on word breaks") - EDITPROPS (* ; + EDITPROPS (* ;  "The PROPS that were passed into this edit session") - (BLUEPENDINGDELETE FLAG) (* ; "T if the next insertion in this document is to be preceded by a deletion of the then-current selection") - (TXTHISTORYINACTIVE FLAG) (* ; + (BLUEPENDINGDELETE FLAG) (* ; "T if the next insertion in this document is to be preceded by a deletion of the then-current selection") + (TXTHISTORYINACTIVE FLAG) (* ;  "T if history events are not recorded (e.g. for transcript files)") - TXTHISTORY (* ; + TXTHISTORY (* ;  "The history list for this edit session.") - (SELPANE FULLXPOINTER) (* ; + (SELPANE FULLXPOINTER) (* ;  "The pane in which the last 'real' selection got made for this edit; used by TEDIT.NORMALIZECAREET") - PROMPTWINDOW (* ; + PROMPTWINDOW (* ;  "A window to be used for unscheduled interactions; normally a small window above the edit window") - DISPLAYCACHE (* ; + DISPLAYCACHE (* ;  "The bitmap to be used when building the image of a line for display") - DISPLAYCACHEDS (* ; + DISPLAYCACHEDS (* ;  "The DISPLAYSTREAM that is used to build line images") - DISPLAYHCPYDS (* ; "The DISPLAYSTREAM used to build line images of lines that are displayed in 'hardcopy' simulation mode") - TXTPAGEFRAMES (* ; + DISPLAYHCPYDS (* ; "The DISPLAYSTREAM used to build line images of lines that are displayed in 'hardcopy' simulation mode") + TXTPAGEFRAMES (* ;  "A tree of page frames, specifying how the document is to be laid out.") - TXTCHARLOOKSLIST (* ; + TXTCHARLOOKSLIST (* ;  "List of all the CHARLOOKSs in the document, so they can be kept unique") - TXTPARALOOKSLIST (* ; + TXTPARALOOKSLIST (* ;  "List of all the PARALOOKS in the document, so they can be kept unique") - (TXTAPPENDONLY FLAG) (* ; "Allows updates only at the end of the stream. Was TXTNEEDSUPDATE: T => Screen invalid, need to run updater") - (TXTDON'TUPDATE FLAG) (* ; "T if we're holding off on screen updates until later. Used, e.g., by the menu-SHOW code so that you don't get piecemeal updates, but only one at the end of the SHOW.") - TXTRAWINCLUDESTREAM (* ; + (TXTAPPENDONLY FLAG) (* ; "Allows updates only at the end of the stream. Was TXTNEEDSUPDATE: T => Screen invalid, need to run updater") + (TXTDON'TUPDATE FLAG) (* ; "T if we're holding off on screen updates until later. Used, e.g., by the menu-SHOW code so that you don't get piecemeal updates, but only one at the end of the SHOW.") + TXTRAWINCLUDESTREAM (* ;  "NODIRCORE stream used to cache RAW includes (and maybe later, all includes?)") - DOCPROPS (* ; + DOCPROPS (* ;  "Document properties that are stored with the document (not used yet)") - TXTSTYLESHEET (* ; + TXTSTYLESHEET (* ;  "Style sheet local to this document. Not currently saved as part of the file.") - ) - [ACCESSFNS TEXTOBJ ((\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) - (PROGN (FSETTOBJ DATUM LASTARROWX NIL) - (CL:UNLESS (EQ NEWVALUE (ffetch (TEXTOBJ \XDIRTY) - of DATUM)) - (\TEDIT.WINDOW.TITLE DATUM NEWVALUE) - (freplace \XDIRTY OF DATUM WITH NEWVALUE))] - SEL _ (create SELECTION) - TEXTLEN _ 0 WRIGHT _ 0 WTOP _ 0 WLEFT _ 0 WBOTTOM _ 0 MOUSEREGION _ 'TEXT THISLINE _ - (create THISLINE) - DEFAULTPARALOOKS _ TEDIT.DEFAULT.FMTSPEC PARABREAKCHARS _ (CHARCODE (EOL FORM LF CR))) + ) + [ACCESSFNS TEXTOBJ ((\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) + (PROGN (FSETTOBJ DATUM LASTARROWX NIL) + (CL:UNLESS (EQ NEWVALUE (ffetch (TEXTOBJ \XDIRTY) + of DATUM)) + (\TEDIT.WINDOW.TITLE DATUM NEWVALUE) + (freplace \XDIRTY OF DATUM WITH NEWVALUE))] + SEL _ (create SELECTION) + TEXTLEN _ 0 WTOP _ 0 MOUSEREGION _ 'TEXT THISLINE _ (create THISLINE) + DEFAULTPARALOOKS _ TEDIT.DEFAULT.FMTSPEC PARABREAKCHARS _ + (CHARCODE (EOL FORM LF CR))) (ACCESSFNS TEXTSTREAM ( @@ -498,8 +499,8 @@ (PUTPROPS TEXTLEN MACRO ((TOBJ) (ffetch (TEXTOBJ TEXTLEN) of TOBJ))) -(PUTPROPS TEXTSEL MACRO ((TOBJ) - (fetch (TEXTOBJ SEL) of TOBJ))) +(PUTPROPS TEXTSEL MACRO ((TEXTOBJ) + (SELECTION! (GETTOBJ TEXTOBJ SEL)))) (PUTPROPS TEXTOBJ! MACRO ((TOBJ) (\DTEST TOBJ 'TEXTOBJ))) @@ -1024,7 +1025,8 @@ (\TEDIT.THELP "UNKNOWN PIECE TYPE")))]) (\TEDIT.TEXTBOUT - [LAMBDA (TSTREAM CHAR) (* ; "Edited 28-Mar-2025 10:13 by rmk") + [LAMBDA (TSTREAM CHAR) (* ; "Edited 20-Apr-2025 13:24 by rmk") + (* ; "Edited 28-Mar-2025 10:13 by rmk") (* ; "Edited 17-Nov-2024 10:05 by rmk") (* ; "Edited 6-Sep-2024 13:06 by rmk") (* ; "Edited 27-Aug-2024 14:50 by rmk") @@ -1057,7 +1059,7 @@ (CL:UNLESS (OR (\CHARCODEP CHAR) (IMAGEOBJP CHAR)) (\ILLEGAL.ARG CHAR)) - (PROG [(TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (PROG [(TEXTOBJ (FTEXTOBJ TSTREAM)) (CHNO (ADD1 (\TEDIT.TEXTGETFILEPTR TSTREAM] (CL:WHEN [OR (FGETTOBJ TEXTOBJ TXTREADONLY) (AND (FGETTOBJ TEXTOBJ TXTAPPENDONLY) @@ -1071,7 +1073,7 @@ elseif (AND (\TEDIT.INSERTCH CHAR CHNO TEXTOBJ (MEMB CHAR (FGETTOBJ TEXTOBJ PARABREAKCHARS))) (\TEDIT.PRIMARYPANE TEXTOBJ)) - then (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION CHNO 1)) + then (\TEDIT.UPDATE.LINES TSTREAM 'INSERTION CHNO 1)) (* ;; ";; We inserted 1 char. Whether or not we introduced a new piece or extended an old one, we want to be positioned so that the next BOUT will insert after this one (if nothing else is changed). Do this after potential redisplay, in case the BINS in reformatting change the position.") @@ -1366,7 +1368,8 @@ TSTREAM))]) (COPYTEXTSTREAM - [LAMBDA (ORIGINAL CROSSCOPY) (* ; "Edited 8-Feb-2025 20:10 by rmk") + [LAMBDA (ORIGINAL CROSSCOPY) (* ; "Edited 21-Apr-2025 23:48 by rmk") + (* ; "Edited 8-Feb-2025 20:10 by rmk") (* ; "Edited 12-Jan-2025 12:16 by rmk") (* ; "Edited 17-Mar-2024 12:41 by rmk") (* ; "Edited 16-Mar-2024 10:03 by rmk") @@ -1383,29 +1386,29 @@ (* ;; "Given a stream, textobj or window, returns a new textstream with the same contents. CROSSCOPY is a documented argument, but it doesn't control what happens. It is supposed to force a copy of a file piece to a new underlying source (a string or nodircore piece), so that there is no sharing between the original and the copy so that future edits in one stream are independent and safe even if the original file is deleted or modified by operations on the other stream. But edit operations don't change the source file until the file is saved, and tne you get a new version anyway. In any event, CROSSCOPY is T in all calls within TEDIT (e.g. for installing edit menus).") - (LET ((TEXTOBJ (TEXTOBJ ORIGINAL)) - NEWSTREAM NEWTEXTOBJ) (* ; + (LET* ((TSTREAM (TEXTSTREAM ORIGINAL)) + (TEXTOBJ (FTEXTOBJ TSTREAM)) + [NEWSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL (COPY (FGETTOBJ TEXTOBJ EDITPROPS] + (NEWTEXTOBJ (FTEXTOBJ NEWSTREAM))) (* ;  "Create an empty textstream into which the pieces can be hammered") - [SETQ NEWSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL (COPY (FGETTOBJ TEXTOBJ EDITPROPS] - (SETQ NEWTEXTOBJ (TEXTOBJ NEWSTREAM)) - (for PC NEWPC inpieces (\TEDIT.FIRSTPIECE TEXTOBJ) - do (SETQ NEWPC (\TEDIT.COPYPIECE PC TEXTOBJ NEWTEXTOBJ NIL 'COPY)) - (CL:UNLESS NEWPC - (CL:IF (EQ OBJECT.PTYPE (PTYPE PC)) - (ERROR "Image object does not allow copying" (POBJ PC)) - (ERROR "Piece cannot be copied " PC))) - (\TEDIT.INSERTPIECE NEWPC NIL NEWTEXTOBJ)) - (FSETTOBJ NEWTEXTOBJ FORMATTEDP (FGETTOBJ TEXTOBJ FORMATTEDP)) - (FSETTOBJ NEWTEXTOBJ DEFAULTCHARLOOKS (FGETTOBJ TEXTOBJ DEFAULTCHARLOOKS)) - (FSETTOBJ NEWTEXTOBJ DEFAULTPARALOOKS (FGETTOBJ TEXTOBJ DEFAULTPARALOOKS)) - (FSETTOBJ NEWTEXTOBJ TXTRTBL (FGETTOBJ TEXTOBJ TXTRTBL)) - (FSETTOBJ NEWTEXTOBJ TXTWTBL (FGETTOBJ TEXTOBJ TXTWTBL)) - (FSETTOBJ NEWTEXTOBJ TXTSTYLESHEET (FGETTOBJ TEXTOBJ TXTSTYLESHEET)) - (FSETTOBJ NEWTEXTOBJ TXTPAGEFRAMES (FGETTOBJ TEXTOBJ TXTPAGEFRAMES)) - (FSETTOBJ NEWTEXTOBJ TXTPARALOOKSLIST (FGETTOBJ TEXTOBJ TXTPARALOOKSLIST)) - (FSETTOBJ NEWTEXTOBJ TXTCHARLOOKSLIST (FGETTOBJ TEXTOBJ TXTCHARLOOKSLIST)) - (FSETTOBJ NEWTEXTOBJ MENUFLG (FGETTOBJ TEXTOBJ MENUFLG)) - NEWSTREAM]) + (for PC NEWPC inpieces (\TEDIT.FIRSTPIECE TEXTOBJ) + do (SETQ NEWPC (\TEDIT.COPYPIECE PC TSTREAM NEWSTREAM NIL 'COPY)) + (CL:UNLESS NEWPC + (CL:IF (EQ OBJECT.PTYPE (PTYPE PC)) + (ERROR "Image object does not allow copying" (POBJ PC)) + (ERROR "Piece cannot be copied " PC))) + (\TEDIT.INSERTPIECE NEWPC NIL NEWTEXTOBJ)) + (FSETTOBJ NEWTEXTOBJ FORMATTEDP (FGETTOBJ TEXTOBJ FORMATTEDP)) + (FSETTOBJ NEWTEXTOBJ DEFAULTCHARLOOKS (FGETTOBJ TEXTOBJ DEFAULTCHARLOOKS)) + (FSETTOBJ NEWTEXTOBJ DEFAULTPARALOOKS (FGETTOBJ TEXTOBJ DEFAULTPARALOOKS)) + (FSETTOBJ NEWTEXTOBJ TXTRTBL (FGETTOBJ TEXTOBJ TXTRTBL)) + (FSETTOBJ NEWTEXTOBJ TXTWTBL (FGETTOBJ TEXTOBJ TXTWTBL)) + (FSETTOBJ NEWTEXTOBJ TXTSTYLESHEET (FGETTOBJ TEXTOBJ TXTSTYLESHEET)) + (FSETTOBJ NEWTEXTOBJ TXTPAGEFRAMES (FGETTOBJ TEXTOBJ TXTPAGEFRAMES)) + (FSETTOBJ NEWTEXTOBJ TXTPARALOOKSLIST (FGETTOBJ TEXTOBJ TXTPARALOOKSLIST)) + (FSETTOBJ NEWTEXTOBJ TXTCHARLOOKSLIST (FGETTOBJ TEXTOBJ TXTCHARLOOKSLIST)) + (FSETTOBJ NEWTEXTOBJ MENUFLG (FGETTOBJ TEXTOBJ MENUFLG)) + NEWSTREAM]) (TEDIT.STREAMCHANGEDP [LAMBDA (STREAM RESET?) (* ; "Edited 31-May-91 13:57 by jds") @@ -1518,7 +1521,9 @@ (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS TEXTOBJ]) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL - [LAMBDA (TSTREAM) (* ; "Edited 17-Feb-2025 08:56 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 21-Apr-2025 20:14 by rmk") + (* ; "Edited 6-Apr-2025 14:24 by rmk") + (* ; "Edited 17-Feb-2025 08:56 by rmk") (* ; "Edited 25-Nov-2024 14:33 by rmk") (* ; "Edited 20-Nov-2024 23:56 by rmk") (* ; "Edited 29-Sep-2024 10:51 by rmk") @@ -1537,13 +1542,13 @@ (* ;; "This sets up the initial SEL for TEXTOBJ according to the SEL PROPS entry. If SELPROP is NIL, the default is 1-0-LEFT--just before the first character. This doesn't show the selection--this stream may not yet have a window.") - (LET* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (SEL (TEXTSEL TEXTOBJ)) SELPROP) (CL:UNLESS (AND SEL (GETSEL SEL SET)) (SETQ SELPROP (GETTEXTPROP TEXTOBJ 'SEL)) (FSETSEL SEL SET T) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) (CL:UNLESS (EQ SELPROP 'DON'T) (FSETSEL SEL SELKIND 'CHAR) (* ; "Default, maybe reset below") (if (type? SELECTION SELPROP) @@ -1554,12 +1559,12 @@ then (* ;; "Default to POINT selection") + (FSETSEL SEL SELKIND 'CHAR) (\TEDIT.UPDATE.SEL SEL (CAR SELPROP) (OR (CADR SELPROP) 0) (OR (CADDR SELPROP) 'LEFT)) - (FSETSEL SEL SELKIND 'CHAR) elseif (FIXP SELPROP) then (\TEDIT.UPDATE.SEL SEL SELPROP 0 'LEFT) elseif (FGETTOBJ TEXTOBJ TXTAPPENDONLY) @@ -1585,12 +1590,14 @@ (* ;  "Don't blink for read-only, but do highlighting") (FSETSEL SEL HASCARET NIL)) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.SHOWSEL SEL T TEXTOBJ))) + (\TEDIT.SHOWSEL SEL T TSTREAM))) SEL]) (\TEDIT.OPENTEXTSTREAM.WINDOW - [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 21-Nov-2024 00:18 by rmk") + [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 21-Apr-2025 20:14 by rmk") + (* ; "Edited 6-Apr-2025 14:25 by rmk") + (* ; "Edited 5-Apr-2025 13:10 by rmk") + (* ; "Edited 21-Nov-2024 00:18 by rmk") (* ; "Edited 1-Sep-2024 09:06 by rmk") (* ; "Edited 28-Jun-2024 23:06 by rmk") (* ; "Edited 16-Jun-2024 15:40 by rmk") @@ -1605,16 +1612,12 @@ (* ;; "Associates WINDOW with TSTREAM. Brute force, doesn't let this window stuff change the fileptr. Maybe should unsplit all panes if WINDOW is split.") - (LET ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) (FILEPTR (\TEDIT.TEXTGETFILEPTR TSTREAM))) [if WINDOW then (\TEDIT.WINDOW.SETUP WINDOW TSTREAM PROPS) - (\TEDIT.SHOWSEL (FGETTOBJ TEXTOBJ SEL) - NIL TEXTOBJ) - (\TEDIT.FIXSEL (FGETTOBJ TEXTOBJ SEL) - TEXTOBJ) - (\TEDIT.SHOWSEL (FGETTOBJ TEXTOBJ SEL) - T TEXTOBJ) + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.SHOWSEL NIL T TSTREAM) (CL:WHEN (FGETTOBJ TEXTOBJ TXTREADONLY) (for PANE inpanes TEXTOBJ do (\TEDIT.UPCARET (GETPANEPROP (PANEPROPS PANE) PCARET)))) @@ -1754,7 +1757,8 @@ NEWSTREAM]) (\TEDIT.TEXTINIT - [LAMBDA NIL (* ; "Edited 4-Sep-2024 22:05 by rmk") + [LAMBDA NIL (* ; "Edited 15-Apr-2025 23:10 by rmk") + (* ; "Edited 4-Sep-2024 22:05 by rmk") (* ; "Edited 22-May-2024 14:53 by rmk") (* ; "Edited 19-Mar-2024 18:16 by rmk") (* ; "Edited 17-Mar-2024 12:25 by rmk") @@ -1788,7 +1792,7 @@ (* ;; "(FW8 WORD)") - [SETQ \TEXTIMAGEOPS (create IMAGEOPS + (SETQ \TEXTIMAGEOPS (create IMAGEOPS IMAGETYPE _ 'TEXT IMXPOSITION _ (FUNCTION \TEDIT.TEXTDSPXPOSITION) IMYPOSITION _ (FUNCTION \TEDIT.TEXTDSPYPOSITION) @@ -1800,7 +1804,8 @@ IMLINEFEED _ (FUNCTION \TEDIT.TEXTDSPLINEFEED) IMCHARWIDTH _ (FUNCTION \TEDIT.TEXTDSPCHARWIDTH) IMSTRINGWIDTH _ (FUNCTION \TEDIT.TEXTDSPSTRINGWIDTH) - IMSCALE _ (FUNCTION (LAMBDA NIL 1] + IMSCALE _ [FUNCTION (LAMBDA NIL 1] + IMCOLOR _ (FUNCTION \TEDIT.TEXTCOLOR))) (FONTPROFILE.ADDDEVICE 'TEXT 'DISPLAY) (ADDTOVAR IMAGESTREAMTYPES (TEXT (FONTCREATE \CREATEDISPLAYFONT) (FONTSAVAILABLE \SEARCHDISPLAYFONTFILES) @@ -1965,15 +1970,17 @@ TEXTLEN]) (\TEDIT.TEXTSETEOFPTR - [LAMBDA (TSTREAM LEN) (* ; "Edited 25-Nov-2024 20:13 by rmk") + [LAMBDA (TSTREAM LEN) (* ; "Edited 20-Apr-2025 23:44 by rmk") + (* ; "Edited 6-Apr-2025 12:29 by rmk") + (* ; "Edited 25-Nov-2024 20:13 by rmk") (* ; "Edited 7-Jul-2024 11:43 by rmk") (* ; "Edited 23-May-2024 08:33 by rmk") (* ;; "Eliminate all trailing bytes so the file contains the first LEN characters") - (LET* ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) - (TEXTLEN (FGETTOBJ TEXTOBJ TEXTLEN)) - (SEL (FGETTOBJ TEXTOBJ SEL)) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (TEXTLEN (TEXTLEN TEXTOBJ)) + (SEL (TEXTSEL TEXTOBJ)) (TAILSEL (\TEDIT.COPYSEL SEL))) (CL:UNLESS (IGEQ LEN TEXTLEN) (RESETLST @@ -1982,8 +1989,8 @@ (FSETTOBJ TEXTOBJ TXTAPPENDONLY NIL) (\TEDIT.UPDATE.SEL TAILSEL (ADD1 LEN) (IDIFFERENCE TEXTLEN LEN)) - (\TEDIT.FIXSEL SEL TEXTOBJ) - (\TEDIT.DELETE TEXTOBJ TAILSEL)))]) + (\TEDIT.FIXSEL SEL TSTREAM) + (\TEDIT.DELETE TSTREAM TAILSEL)))]) (\TEDIT.TEXTGETFILEPTR [LAMBDA (TSTREAM) (* ; "Edited 7-Feb-2025 08:12 by rmk") @@ -2063,7 +2070,8 @@ (replace (STREAM EOFFSET) of TSTREAM with (fetch (BYTEPTR OFFSET) of EOFPTR]) (\TEDIT.TEXTSETFILEPTR - [LAMBDA (TSTREAM FILEPOS) (* ; "Edited 20-Mar-2024 10:58 by rmk") + [LAMBDA (TSTREAM FILEPOS) (* ; "Edited 20-Apr-2025 00:02 by rmk") + (* ; "Edited 20-Mar-2024 10:58 by rmk") (* ; "Edited 17-Mar-2024 00:27 by rmk") (* ; "Edited 23-Dec-2023 12:14 by rmk") (* ; "Edited 22-Oct-2023 16:14 by rmk") @@ -2075,7 +2083,7 @@ (* ;; "FILEPOS is known to be a positive number. For other filedevices there is no error if the ptr is set beyond the EOF, and GETFILEPTR will return the new position. But the length of an input file doesn't change and a BIN at any position after the EOF causes the error. An output file grows. Filepos is a %"byte%" position, have to add 1 to get to the notion of character in a Tedit selection.") - (LET ((TEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM))) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) START-OF-PIECE PC CH#) (DECLARE (SPECVARS START-OF-PIECE)) (CL:WHEN (IGREATERP FILEPOS (FGETTOBJ TEXTOBJ TEXTLEN)) @@ -2128,8 +2136,21 @@ DEFAULTPARALOOKS) LEFTMAR]) +(\TEDIT.TEXTCOLOR + [LAMBDA (TSTREAM VALUE) (* ; "Edited 22-Apr-2025 15:48 by rmk") + (* ; "Edited 15-Apr-2025 16:59 by rmk") + + (* ;; "Changes the caret looks, not the document") + + (LET ((CARETLOOKS (FGETTOBJ (FTEXTOBJ TSTREAM) + CARETLOOKS))) + (PROG1 (FGETCLOOKS CARETLOOKS CLCOLOR) + (CL:WHEN (AND VALUE (NEQ VALUE (FGETCLOOKS CARETLOOKS CLCOLOR))) + [TEDIT.CARETLOOKS TSTREAM `(COLOR ,VALUE]))]) + (\TEDIT.TEXTRIGHTMARGIN - [LAMBDA (TSTREAM XPOSITION) (* ; "Edited 19-Feb-2025 13:39 by rmk") + [LAMBDA (TSTREAM XPOSITION) (* ; "Edited 19-Apr-2025 22:24 by rmk") + (* ; "Edited 19-Feb-2025 13:39 by rmk") (* ; "Edited 8-Feb-2025 22:35 by rmk") (* ; "Edited 28-Jun-2024 22:07 by rmk") (* ; "Edited 21-Sep-2023 12:38 by rmk") @@ -2151,7 +2172,7 @@ (RIGHTMAR (FGETPLOOKS PARALOOKS RIGHTMAR)) LEFTMAR NEWPOS) (CL:WHEN (ZEROP RIGHTMAR) - (SETQ RIGHTMAR (FGETTOBJ TEXTOBJ WRIGHT))) + (SETQ RIGHTMAR (PANERIGHT (FGETTOBJ TEXTOBJ PRIMARYPANE)))) (CL:WHEN (AND XPOSITION (NEQ XPOSITION RIGHTMAR)) (* ; "Changing the default PARALOOKS") (SETQ LEFTMAR (FGETPLOOKS PARALOOKS LEFTMAR)) @@ -2280,7 +2301,8 @@ (\TEDIT.THELP '\TEDIT.PIECE.NTHCHARCODE])]) (\TEDIT.RPLCHARCODE - [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 28-Mar-2025 10:04 by rmk") + [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 20-Apr-2025 13:25 by rmk") + (* ; "Edited 28-Mar-2025 10:04 by rmk") (* ;; "Replaces the Nth charcode (or object) in TSTREAM with NEWCHARCODE (or object) with NEWCHARLOOKS. This is accomplished by isolating the target character into a length 1 piece, then converting that into a string (or object) piece containing NEWCHAR.") @@ -2377,8 +2399,16 @@ (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :ReplaceCode N NIL NIL NIL OLDCHAR)) (CL:UNLESS (OR DONTDISPLAY (NOT (\TEDIT.PRIMARYPANE TEXTOBJ))) - (\TEDIT.UPDATE.LINES TEXTOBJ 'CHANGED N 1)) + (\TEDIT.UPDATE.LINES TSTREAM 'CHANGED N 1)) (RETURN TSTREAM)))]) + +(\TEDIT.NTHCHARLOOKS + [LAMBDA (TSTREAM N) (* ; "Edited 6-Apr-2025 23:36 by rmk") + (* ; "Edited 4-Apr-2025 11:11 by rmk") + + (* ;; "Returns the charlooks of character N") + + (PCHARLOOKS (\TEDIT.CHTOPC N (FTEXTOBJ TSTREAM]) ) @@ -2413,7 +2443,8 @@ (DEFINEQ (\TEDIT.DELETE.SELPIECES - [LAMBDA (TEXTOBJ FIRSTCHAR LEN DONTCHECK) (* ; "Edited 5-Feb-2025 23:33 by rmk") + [LAMBDA (TSTREAM FIRSTCHAR LEN DONTCHECK) (* ; "Edited 22-Apr-2025 09:17 by rmk") + (* ; "Edited 5-Feb-2025 23:33 by rmk") (* ; "Edited 26-Nov-2024 22:31 by rmk") (* ; "Edited 22-Sep-2024 18:34 by rmk") (* ; "Edited 7-Jul-2024 09:09 by rmk") @@ -2431,36 +2462,37 @@ (CL:UNLESS LEN (SETQ LEN (FGETSEL FIRSTCHAR DCH))) (SETQ FIRSTCHAR (FGETSEL FIRSTCHAR CH#))) - (CL:UNLESS (GETTOBJ TEXTOBJ TXTREADONLY) - (\TEDIT.BTVALIDATE '\TEDIT.DELETE.SELPIECES 'START TEXTOBJ) - (LET (SELPIECES PREVPC) - (CL:WHEN [AND (SETQ SELPIECES (\TEDIT.SELPIECES FIRSTCHAR (IPLUS FIRSTCHAR LEN -1) - TEXTOBJ)) - (OR DONTCHECK (for PC inselpieces (PROGN SELPIECES) - always (OBJECT.ALLOWS PC 'DELETE TEXTOBJ] - (SETQ PREVPC (PREVPIECE (FGETSPC SELPIECES SPFIRST))) - (\TEDIT.DELETEPIECES SELPIECES TEXTOBJ) - - (* ;; "If the the effect of the deletion is to concatenate a (non-empty) prefix of one paragraph with a (non-empty) suffix of another, propagate the prefix PARALOOKS all the way through to the end of the newly combined paragraph. All the pieces of a paragraph must have the same PARALOOKS.") - - (CL:WHEN (AND PREVPC (NOT (PPARALAST PREVPC))) - (* ; "Retained a non-empty prefix") - (for PC (PARALOOKS _ (PPARALOOKS PREVPC)) inpieces (NEXTPIECE PREVPC) - do - (* ;; - "(NEXTPIECE PREVPC) is the first retained piece linked in after the deletion") + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + SELPIECES PREVPC) + (CL:WHEN [AND (NOT (FGETTOBJ TEXTOBJ TXTREADONLY)) + (SETQ SELPIECES (\TEDIT.SELPIECES FIRSTCHAR (IPLUS FIRSTCHAR LEN -1) + TEXTOBJ)) + (OR DONTCHECK (for PC inselpieces (PROGN SELPIECES) + always (OR (NEQ OBJECT.PTYPE (PTYPE PC)) + (\TEDIT.APPLY.OBJFN (PCONTENTS PC) + 'DELETE TSTREAM] + (SETQ PREVPC (PREVPIECE (FGETSPC SELPIECES SPFIRST))) + (\TEDIT.DELETEPIECES SELPIECES TEXTOBJ) + + (* ;; "If the the effect of the deletion is to concatenate a (non-empty) prefix of one paragraph with a (non-empty) suffix of another, propagate the prefix PARALOOKS all the way through to the end of the newly combined paragraph. All the pieces of a paragraph must have the same PARALOOKS.") + + (CL:WHEN (AND PREVPC (NOT (PPARALAST PREVPC))) (* ; "Retained a non-empty prefix") + (for PC (PARALOOKS _ (PPARALOOKS PREVPC)) inpieces (NEXTPIECE PREVPC) + do + (* ;; + "(NEXTPIECE PREVPC) is the first retained piece linked in after the deletion") - (FSETPC PC PPARALOOKS PARALOOKS) repeatuntil (PPARALAST PC))) - (\TEDIT.BTVALIDATE '\TEDIT.DELETE.SELPIECES 'END TEXTOBJ) + (FSETPC PC PPARALOOKS PARALOOKS) repeatuntil (PPARALAST PC))) + (\TEDIT.BTVALIDATE '\TEDIT.DELETE.SELPIECES 'END TEXTOBJ) - (* ;; "") + (* ;; "") - (* ;; "The pieces are now properly linked with the proper looks. SELPIECE holds the deleted pieces needed for undoing.") + (* ;; "The pieces are now properly linked with the proper looks. SELPIECE holds the deleted pieces needed for undoing.") - (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :Delete FIRSTCHAR - (FGETSPC SELPIECES SPLEN) - NIL NIL NIL SELPIECES)) - T)))]) + (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :Delete FIRSTCHAR + (FGETSPC SELPIECES SPLEN) + NIL NIL NIL SELPIECES)) + T)]) (\TEDIT.INSERTCH [LAMBDA (CH CH# TEXTOBJ PARALAST) (* ; "Edited 26-Mar-2025 00:29 by rmk") @@ -2903,6 +2935,12 @@ T (CADR PTAIL]) +(TEXTPROP.ADD + [LAMBDA (TSTREAM PROP NEWITEM) (* ; "Edited 17-Apr-2025 13:24 by rmk") + (LET ((OLDITEMS (GETTEXTPROP TSTREAM PROP))) + (PUTTEXTPROP TSTREAM PROP (CONS NEWITEM OLDITEMS)) + OLDITEMS]) + (\TEDIT.TEXTPROP [LAMBDA (TEXTOBJ PROP SETNEWVALUE NEWVALUE) (* ; "Edited 16-Feb-2025 23:27 by rmk") (* ; "Edited 15-Feb-2025 14:02 by rmk") @@ -3069,32 +3107,33 @@ (ADDTOVAR LAMA TEXTPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (37315 68029 (\TEDIT.TEXTBIN 37325 . 48075) (\TEDIT.TEXTPEEKBIN 48077 . 53627) ( -\TEDIT.TEXTBACKFILEPTR 53629 . 59302) (\TEDIT.TEXTBOUT 59304 . 63819) (\TEDIT.INSTALL.FILEBUFFER 63821 - . 68027)) (68927 72975 (\TEDIT.TEXTOUTCHARFN 68937 . 70493) (\TEDIT.TEXTINCCODEFN 70495 . 71234) ( -\TEDIT.TEXTBACKCCODEFN 71236 . 71828) (\TEDIT.TEXTFORMATBYTESTREAM 71830 . 72533) ( -\TEDIT.TEXTFORMATBYTESTRING 72535 . 72973)) (73022 84543 (OPENTEXTSTREAM 73032 . 79984) ( -COPYTEXTSTREAM 79986 . 83766) (TEDIT.STREAMCHANGEDP 83768 . 84070) (TXTFILE 84072 . 84541)) (84544 -114404 (\TEDIT.REOPENTEXTSTREAM 84554 . 85906) (\TEDIT.OPENTEXTSTREAM.PIECES 85908 . 90338) ( -\TEDIT.OPENTEXTSTREAM.PROPS 90340 . 91442) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 91444 . 96530) ( -\TEDIT.OPENTEXTSTREAM.WINDOW 96532 . 99213) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 99215 . 102185) ( -\TEDIT.OPENTEXTFILE 102187 . 103900) (\TEDIT.CREATE.TEXTSTREAM 103902 . 104947) (\TEDIT.REOPEN.STREAM -104949 . 107285) (\TEDIT.TEXTINIT 107287 . 114402)) (114442 115630 (\TEDIT.TTYBOUT 114452 . 115628)) ( -115748 134540 (\TEDIT.TEXTCLOSEF 115758 . 117082) (\TEDIT.TEXTDSPFONT 117084 . 118054) ( -\TEDIT.TEXTEOFP 118056 . 119811) (\TEDIT.TEXTGETEOFPTR 119813 . 120136) (\TEDIT.TEXTSETEOFPTR 120138 - . 121228) (\TEDIT.TEXTGETFILEPTR 121230 . 124065) (\TEDIT.TEXTSETFILEINFO 124067 . 124575) ( -\TEDIT.TEXTOPENF 124577 . 125508) (\TEDIT.TEXTSETEOF 125510 . 126126) (\TEDIT.TEXTSETFILEPTR 126128 . -128169) (\TEDIT.TEXTDSPXPOSITION 128171 . 129188) (\TEDIT.TEXTDSPYPOSITION 129190 . 129931) ( -\TEDIT.TEXTLEFTMARGIN 129933 . 130524) (\TEDIT.TEXTRIGHTMARGIN 130526 . 133689) ( -\TEDIT.TEXTDSPCHARWIDTH 133691 . 133995) (\TEDIT.TEXTDSPSTRINGWIDTH 133997 . 134303) ( -\TEDIT.TEXTDSPLINEFEED 134305 . 134538)) (134578 145928 (\TEDIT.NTHCHARCODE 134588 . 135938) ( -\TEDIT.PIECE.NTHCHARCODE 135940 . 139741) (\TEDIT.RPLCHARCODE 139743 . 145926)) (146975 167848 ( -\TEDIT.DELETE.SELPIECES 146985 . 150498) (\TEDIT.INSERTCH 150500 . 158430) (\TEDIT.INSERTCH.HISTORY -158432 . 161896) (\TEDIT.INSERTEOL 161898 . 163723) (\TEDIT.INSERTCH.INSERTION 163725 . 166562) ( -\TEDIT.INSERTCH.EXTEND 166564 . 167846)) (167849 169353 (\TEDIT.NEXTCHANGEABLE.CHNO 167859 . 168574) ( -\TEDIT.LASTCHANGEABLE.CHNO 168576 . 169351)) (169354 171058 (\SETUPGETCH 169364 . 171056)) (171116 -175574 (\TEDIT.INSTALL.PIECE 171126 . 175572)) (175612 184361 (TEXTPROP 175622 . 175969) (GETTEXTPROP -175971 . 176215) (PUTTEXTPROP 176217 . 176474) (GETTEXTPROPS 176476 . 176920) (PUTTEXTPROPS 176922 . -177826) (\TEDIT.TEXTPROP 177828 . 184359)) (184362 186432 (\TEDIT.TEXTOBJ.PROPNAMES 184372 . 185324) ( -\TEDIT.TEXTOBJ.PROPFETCHFN 185326 . 185842) (\TEDIT.TEXTOBJ.PROPSTOREFN 185844 . 186430))))) + (FILEMAP (NIL (37548 68364 (\TEDIT.TEXTBIN 37558 . 48308) (\TEDIT.TEXTPEEKBIN 48310 . 53860) ( +\TEDIT.TEXTBACKFILEPTR 53862 . 59535) (\TEDIT.TEXTBOUT 59537 . 64154) (\TEDIT.INSTALL.FILEBUFFER 64156 + . 68362)) (69262 73310 (\TEDIT.TEXTOUTCHARFN 69272 . 70828) (\TEDIT.TEXTINCCODEFN 70830 . 71569) ( +\TEDIT.TEXTBACKCCODEFN 71571 . 72163) (\TEDIT.TEXTFORMATBYTESTREAM 72165 . 72868) ( +\TEDIT.TEXTFORMATBYTESTRING 72870 . 73308)) (73357 84998 (OPENTEXTSTREAM 73367 . 80319) ( +COPYTEXTSTREAM 80321 . 84221) (TEDIT.STREAMCHANGEDP 84223 . 84525) (TXTFILE 84527 . 84996)) (84999 +115304 (\TEDIT.REOPENTEXTSTREAM 85009 . 86361) (\TEDIT.OPENTEXTSTREAM.PIECES 86363 . 90793) ( +\TEDIT.OPENTEXTSTREAM.PROPS 90795 . 91897) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 91899 . 97140) ( +\TEDIT.OPENTEXTSTREAM.WINDOW 97142 . 99933) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 99935 . 102905) ( +\TEDIT.OPENTEXTFILE 102907 . 104620) (\TEDIT.CREATE.TEXTSTREAM 104622 . 105667) (\TEDIT.REOPEN.STREAM +105669 . 108005) (\TEDIT.TEXTINIT 108007 . 115302)) (115342 116530 (\TEDIT.TTYBOUT 115352 . 116528)) ( +116648 136417 (\TEDIT.TEXTCLOSEF 116658 . 117982) (\TEDIT.TEXTDSPFONT 117984 . 118954) ( +\TEDIT.TEXTEOFP 118956 . 120711) (\TEDIT.TEXTGETEOFPTR 120713 . 121036) (\TEDIT.TEXTSETEOFPTR 121038 + . 122325) (\TEDIT.TEXTGETFILEPTR 122327 . 125162) (\TEDIT.TEXTSETFILEINFO 125164 . 125672) ( +\TEDIT.TEXTOPENF 125674 . 126605) (\TEDIT.TEXTSETEOF 126607 . 127223) (\TEDIT.TEXTSETFILEPTR 127225 . +129335) (\TEDIT.TEXTDSPXPOSITION 129337 . 130354) (\TEDIT.TEXTDSPYPOSITION 130356 . 131097) ( +\TEDIT.TEXTLEFTMARGIN 131099 . 131690) (\TEDIT.TEXTCOLOR 131692 . 132275) (\TEDIT.TEXTRIGHTMARGIN +132277 . 135566) (\TEDIT.TEXTDSPCHARWIDTH 135568 . 135872) (\TEDIT.TEXTDSPSTRINGWIDTH 135874 . 136180) + (\TEDIT.TEXTDSPLINEFEED 136182 . 136415)) (136455 148267 (\TEDIT.NTHCHARCODE 136465 . 137815) ( +\TEDIT.PIECE.NTHCHARCODE 137817 . 141618) (\TEDIT.RPLCHARCODE 141620 . 147912) (\TEDIT.NTHCHARLOOKS +147914 . 148265)) (149314 170299 (\TEDIT.DELETE.SELPIECES 149324 . 152949) (\TEDIT.INSERTCH 152951 . +160881) (\TEDIT.INSERTCH.HISTORY 160883 . 164347) (\TEDIT.INSERTEOL 164349 . 166174) ( +\TEDIT.INSERTCH.INSERTION 166176 . 169013) (\TEDIT.INSERTCH.EXTEND 169015 . 170297)) (170300 171804 ( +\TEDIT.NEXTCHANGEABLE.CHNO 170310 . 171025) (\TEDIT.LASTCHANGEABLE.CHNO 171027 . 171802)) (171805 +173509 (\SETUPGETCH 171815 . 173507)) (173567 178025 (\TEDIT.INSTALL.PIECE 173577 . 178023)) (178063 +187077 (TEXTPROP 178073 . 178420) (GETTEXTPROP 178422 . 178666) (PUTTEXTPROP 178668 . 178925) ( +GETTEXTPROPS 178927 . 179371) (PUTTEXTPROPS 179373 . 180277) (TEXTPROP.ADD 180279 . 180542) ( +\TEDIT.TEXTPROP 180544 . 187075)) (187078 189148 (\TEDIT.TEXTOBJ.PROPNAMES 187088 . 188040) ( +\TEDIT.TEXTOBJ.PROPFETCHFN 188042 . 188558) (\TEDIT.TEXTOBJ.PROPSTOREFN 188560 . 189146))))) STOP diff --git a/library/tedit/TEDIT-STREAM.LCOM b/library/tedit/TEDIT-STREAM.LCOM index 27e64ff2f42b2b829012ca3cf8cb6e5fd303dec4..1ea60199a5d78c23e0b09589fb59d871c4e6e1cf 100644 GIT binary patch delta 3833 zcmaJ^Yit`?6`pa@B=sh4oVdGb(yngOmL`3;p0URsyW7+gd+eEbJTn?k;-oEo;RPqz zm#S(}L5pd(QY5rm=w2ZqAy(T(zzPXS;|8gvT?-+ECMv2H@uNa3R!D$gkx=*p5?Tc3 z-tpK;x5YoM@8jHi&;8DK9`mDjeGlLBePeErKO((y@dzK`1;h!dn3xj8>r4BNUV6T= zaB0$(v#NchWLvUS3?CDd!UXb<@mzZgA5BHX6enDNe^1Sp=j@E385UZ23614uG!1PQ z4Tr;HsB#_-e(V{1WNgAeo>MhB1GmA&XpDc1Ze!@n<)WO`k@VlN~PIr-xGerOJK;J1gjbG~9NXXYETXsf)IUW_|;uPW{qPJ+7T1JtqjFFX5l1H*- zfmH+!_XQGsj7RQX)zDE)Km-P3Y8pjFLS_0{E*~}ml#S#4z z$b`4sL@_dKo?s%*I|Ae*sEIRDVLoFSr4qp(MiFFKYF^bPZ33~u9)|Iyw-bPKBnR&4#kjo(Y|S)(+Xw&V}Znoej-`79wbI zW9h4lryht*qd*SP`k8Sq238060$&Uh;7nD{$YAakS6q9#)5&Dh++y5gLr%3ywz~@a zGE7--Qy;~mh#JEsLen4onP=kwcXogC0Q69M`C1NcL#}giN1hF+41*we@3iJSKcS?viJ5ewi_&4G>4#6dI z#wO0pMJ(Q(PjV=0=m%^R2k1cwxS%Z-1#`9bY&KKdXF-XkCkuFVB!o}y-hq$qH%IPw zGE9f$T1Z-UeZ>oCZ|pbwsuigTcy&R-|J+~h`V!DLnIr+OMgtts3Lalp^{i1Q&xhAV zJb-4*jAY61V4%?>LTy|<6gjT7uQe5EO}Q6@OR_y@S+l_alLC`3Q(@S>pe{ zF@E=zzWVPEe0Dp_*Pr9Q#t!hHk-*VdE75+W{#)MeV1c9YyY)ZC|Ja3pb9@l);}bm6 zRg#)PX}2Q)L$j7tHVth)Z|LE?tjm^~K|CY}B7uXGv-p+CP%#D(1#)jWJf%V6A@l<( zxifP{E(c&kGJ+gLW#+w^w&@6{Zh-*C!yg1 z>BdX)@t#?mdbV9(k$193%iS#Fdvd67e7CoR3;ba&JSs*|Nlm3JnXp193_%HCMsZeC zOEv-;;``a*84_#Tp_b_2ACC*4+6fVHlM}VV8dN+jlRoN1I|DoFU(bKBBQOJLtF1hK zs!;Tak+&9~&c@r(L$M7=vI6LrJ1G-Ci30dw3^^}pVadvqu<^vJ>h}sCv%@absjTQ9 zCpnnji4zO5jNQ34LT;jRb-gJ-)z&>isjqhfUahY4;cs&;5SX* zQISHO4TW|?sYU@W=_5~9;Xpbw&#FEj`|!p8KK$9r+xQLrfDU<%lw-ipybX0%954kh zD63gA5+Yj`Nm^|$f)8X%W=2y@Q`Pg9oQH5-|C@fkhfUXu<$tj?-ByUWYaWUSDV20u zBDIQC27%^2>G8CuIy=22fwdV-SwyJP4m2Eanbz~*Va)_R;m3zY{5U&5Gznp?S>Z{R zD>~Aoglydi>`6!CJF~K&&6?xlT7(d}r!=lGA&kvmrTM7krJ! zzkuZU^;G}j#;uO4H<@osl_>(gLKE{momatcTZmeb+3j?=~s}AG%PpYo*r`JR(NE`P;rQ%XvbvmKqRQup9 z3_~$q=y!VPO{Z7BwH|=lWA&HQPJb}iJ-zY_%cxT{iYFs67#QvEAQa@ zCtn?GXFCWVE`oURlyU;{a2A*a-yR(2l~`N^G6}8ql8}!*aRdc?({L#28FTe?dhj5b zCHW~VWwWT|_l5>_qg*Tjmmu`ZWir4&esL)I3DM= z1-P;)ZQ}DjvYgO{HrU6@JE;Z_&-+;!|sWzyU8aSK67<^z~2nTZhvHNJ}}4y2rpgB!LfgMJy!qowS4dY0HcW9ZvX%Q delta 3112 zcmZ`*TWlLy8J=+*Crz6+-b^mdrJQEdZBknATznb3wDs5?XU4HTgFU(R648~Tb&_@$ z6;$m*C8OPxRER~C1G~~nTWJ>-!2{rA5@1tQKOi0^JQT!BS&(=@@UW^NeOV-gwEX9c z?K(^G!}0n5^UwLu`M&>h9{tGkllMK}p6`{<iCP6n$oTF zbUahE3aXL|oRuTuB-oPId5r6O(`Uel!}&LL1XEeY!TkT%$4Z8K=W>mOJ);jt5tW2r`dvuqW|1*Lv|%r6*G` zvyEd-qKR3hP(-cQN*cK$+$v@k)LGq_DV|AzYw+B1NuH01(O57{JP$n6b2wxVdv>}` zU=PE1lu|qUz1oWM)eNX{Vc?7lRjy-Wms^$_{1#q}=oU+!ThgrJ1) zzA-Q?NFj8YIt$F0z-V5Cy!^-FHlo8q0dVs1~fGh6G+lIW?C+(IBp_aR(zZ zQVRv6fTReHzcGM^52F!LMy|bXf)B2bC_R~owj}qv+564E0hn}tKjaESL-zqWGuq0H2>WD}h*#RnS{Bn@-H)YVE-Md2oGF3z9^Z75u)BG{xY ztrv=xyDCWy6d_-bVXAooY8_*dM`U|oqmDF?B}hPHPMJ~(B~jTmkfYs*?nl@pVRCEe zq$kAN9}F#Z7W&&5hHXTk|F}nUgK_A?@{WE_r@}4=*L;72`KKG3l#v~M^&!X9^s?si zlA-ADeP@Gl@Ry%Q$1`lk!)~{&WIXWKK^NVK*6ExZ#2e4wtY|K~`m(zV0Z)uH!7FOU zTu~*Zq6uAEpQoCqIgnHes+Bd2>0)43E$Hb5Bmyw?1esE;fQxp3q&hW2LNr=m$G;r! z_Q*lJG0w3eTpjQ8NFoTmm8M02AWS@l|L0V}D1z+?^k%^@0a_7KsLllV2%@Z-wvZ5s zqJlo9!7S8JNl`>j15`v@qo{zuhnloV?#Ut=r^^umrHuSZ3k8E@nI>h^N(kdmmqzhN zBS-MV6K3~sy$sW)H0ns~1#?Jqh8oG>oCw+RIM2kMFcDi_o4l$ zB8hJW83_{9tNscJblAsK@+vtm)IKOqEmBx)l|uU@NRS3efGd2SGwWAJElbe!_AP~; z*2Bpz{D+Z#`?ZOc1FT^GRrm&bm=~fFEqMyeM7ttcZTQdOEta?ML>~J(@;d2v5&YyF zHz)}Z&JuD}5E1Sq7{d3?58wyqtxl>Cpr`mR^aUk=FQ=yF0*NftaT+oJI@Qb@=`QKtX2!t*>_sad@0`2q|DA*lC%jgKXc z+HY#Fx3y=X=6mpHHs=A_kF*b*YG!OwvkYi1L5Py{MU@02B*|p}P@Ph;0i`g7|GhM3 zf0X^0#Ru08;cpooCjdm~OGXhGkZ3;T04Vs*%{x~R@Qxu>-XU)5O^9VQ$Gf=<)!r|7 zb;o-V+R03&y=_}pw!N92%%1%p-SOPdOh0L~Y3)nUHW;@dmlV!hbCZgT)iTN-uPJc~ z>z~}eTJ-_#Vw+o}|EZzQO#AmTfx3X~p*=Rw*SOUH|lv zE6-E2J4svD{KvhSZEy7pv>eqk4nrsRGmeK&epQ*S_hxR|Vcadtv^l(2UY{;y_coKY z<>$7}X%6FbEod&F`nLSp6U0kYqX3Wap3u5G2|bjAt$rUbUAZ~&wDL6}L!oALC#+c|tCL3;{>K$949}z# zFbU5>K>)aELl<}`H*^Ly;pra12viWI0BIxQk;S9-&BY77_~S1gv{N^J?kAyqwBE8v zaY_}V^J{rrSsP@#uyApxQ9bv+Uddw>O`Jk!&m#QywavarHGH NKCvFLPv1Fx=)ZL7Go1hc diff --git a/library/tedit/TEDIT-TFBRAVO.LCOM b/library/tedit/TEDIT-TFBRAVO.LCOM index 95bbb468e649712d159fc8f8701a791164748878..2efe7b61e7541d44a9af65a29f247e656f2791be 100644 GIT binary patch delta 324 zcmaEHnX&x}}dd|LjKK}mR!3vpq3QBIFK0XS_rs?VFDJi5RmZVCgV714{V6zls88>6WWbTXd@E^Cm%;=Zv{i6$%5Kq Ko1gJA#Q*?RPgV5* delta 253 zcmZp_!uaAc!p7?~;<8e16{Ss7Ut6cwvlDTKJXc!szI`TIHrIfnTwWacR-xrO@pC?K1lr>Cc+kdjye z)P~JyV`C*vE)6$NA6MrfSI5mpj9J`_>67R3h)>?j6Ut<6IeBHYG?Tf(WJ6wQCNsmy ze!P;*rlty$8IvWMO)M2AS8K~oUd$_{VQB_*Ohkyklb3>pIh<*1q2QLESE68K4xtT= OCL3srZD!?TiU9zsi$f>? diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 1ac472f13..1957c9e39 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,27 +1,27 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "31-Mar-2025 22:43:28" {WMEDLEY}tedit>TEDIT-WINDOW.;790 237200 +(FILECREATED "21-Apr-2025 20:34:07" {WMEDLEY}tedit>TEDIT-WINDOW.;824 226360 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.WINDOW.GETREGION) + :CHANGES-TO (FNS \TEDIT.BUTTONEVENTFN.DOOPERATION \TEDIT.BUTTONEVENTFN \TEDIT.SPLITW + \TEDIT.FILL.PANES \TEDIT.BUTTONEVENTFN.CURSEL.INIT) - :PREVIOUS-DATE "31-Mar-2025 12:04:14" {WMEDLEY}tedit>TEDIT-WINDOW.;789) + :PREVIOUS-DATE "21-Apr-2025 12:03:17" {WMEDLEY}tedit>TEDIT-WINDOW.;821) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) (RPAQQ TEDIT-WINDOWCOMS - [(DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (RECORDS TEDITCARET TEXTWINDOW PANEPROPS) - (MACROS FGETPANEPROP GETPANEPROP SETPANEPROP - FSETPANEPROP) - (MACROS PANEPROPS PANEPREFIX PANESUFFIX PANETOPLINE - PANECARET PANESTREAM PANETOBJ PANEBOTTOMLINE - \TEDIT.PREFIX.LCHARLIM) - (MACROS PANETOP PANEWIDTH PANELEFT PANERIGHT - PANEBOTTOM PANEHEIGHT PANEREGION) - (I.S.OPRS inpanes backpanes) - (MACROS ALLBUTTONSUP))) + [(DECLARE%: EVAL@COMPILE DONTCOPY + (EXPORT (RECORDS TEDITCARET TEXTWINDOW PANEPROPS) + (MACROS FGETPANEPROP GETPANEPROP SETPANEPROP FSETPANEPROP) + (MACROS PANEWINDOW PANEPROPS PANEPREFIX PANESUFFIX PANETOPLINE PANECARET + PANECARETY PANETEXTSTREAM PANETEXTOBJ PANEBOTTOMLINE NEXTPANE PREVPANE) + (MACROS PANETOP PANEPTOP PANEWIDTH PANELEFT PANERIGHT PANEBOTTOM PANEHEIGHT + PANEREGION) + (I.S.OPRS inpanes backpanes) + (MACROS ALLBUTTONSUP))) (INITRECORDS TEDITCARET PANEPROPS) (FILES ATTACHEDWINDOW) (FNS TEDIT.DEFER.UPDATES) @@ -39,9 +39,9 @@ (FNS \TEDIT.PANE.SPLIT \TEDIT.SPLITW \TEDIT.UNSPLITW \TEDIT.LINKPANES \TEDIT.UNLINKPANE) (P (MOVD? 'NILL 'GRAB-TYPED-REGION) (MOVD? 'NILL 'REGISTER-TYPED-REGION)) - (INITVARS (\TEDIT.OP.WIDTH 12) - (\TEDIT.OP.BOTTOM 12) - (\TEDIT.LINEREGION.WIDTH 12)) + (INITVARS (\TEDIT.OP.WIDTH 0) + (\TEDIT.OP.BOTTOM 14) + (\TEDIT.LINEREGION.WIDTH 16)) (DECLARE%: DONTEVAL@LOAD DOCOPY (GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM \TEDIT.LINEREGION.WIDTH)) (CURSORS BXCARET BXHICARET \TEDIT.LINECURSOR \TEDIT.SPLITCURSOR \TEDIT.MOVESPLITCURSOR @@ -61,7 +61,7 @@ (FNS \TEDIT.FILENAME \TEDIT.DEFAULT.TITLE \TEDIT.WINDOW.TITLE \TEDIT.LIKELY.FILENAME \TEDIT.UPDATE.TITLE)) (COMS (* ; "Screen updating utilities") - (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.RESHAPEFN \TEDIT.REPAINTFN) + (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.RESHAPEFN \TEDIT.REPAINTFN \TEDIT.CLOSEPANES) (FNS \TEDIT.SCROLLFN \TEDIT.SCROLLCH.TOP \TEDIT.SCROLLCH.BOTTOM \TEDIT.SCROLLUP \TEDIT.TOPLINE.YTOP \TEDIT.SCROLLDOWN \TEDIT.SCROLL.CARET \TEDIT.VISIBLECARETP \TEDIT.VISIBLECHARP \TEDIT.BITMAPLINES \TEDIT.SETPANE.TOPLINE \TEDIT.SHIFTLINES) @@ -72,33 +72,11 @@ (* ; "Caret handler; stolen from CHAT.") (FNS \TEDIT.DOWNCARET \TEDIT.FLASHCARET \TEDIT.UPCARET TEDIT.NORMALIZECARET \TEDIT.SETCARET \TEDIT.CARET)) - [COMS (* ; "Menu interfacing") - (FNS TEDIT.ADD.MENUITEM TEDIT.DEFAULT.MENUFN TEDIT.REMOVE.MENUITEM \TEDIT.CREATEMENU - \TEDIT.MENU.WHENHELDFN \TEDIT.MENU.WHENSELECTEDFN) - (GLOBALVARS TEDIT.DEFAULT.MENU) - [DECLARE%: DONTEVAL@LOAD DOCOPY - (VARS (TEDIT.DEFAULT.MENU (\TEDIT.CREATEMENU '((Put 'Put NIL (SUBITEMS - |Put Formatted Document| - Plain-Text)) - (Get 'Get NIL (SUBITEMS - |Get Formatted Document| - - Unformatted% Get - )) - Include Find Looks Substitute - (Buttons 'Buttons - "Display action buttons") - Quit - (Expanded% Menu 'Expanded% Menu - NIL - (SUBITEMS Expanded% Menu - Character% Looks - Paragraph% Formatting - Page% Layout] + [COMS (* ; "Background menu") (DECLARE%: DONTEVAL@LOAD DOCOPY (P [OR (SASSOC 'TEdit BackgroundMenuCommands) (NCONC1 BackgroundMenuCommands '(TEdit '(TEDIT) - "Opens a TEdit window for use."] + "Opens an empty TEdit window"] (SETQ BackgroundMenu NIL] (COMS (* ; "titled icon info, ") (FILES ICONW) @@ -162,13 +140,16 @@ (TYPENAMEP (fetch (TEXTWINDOW PTEXTOBJ) of DATUM) 'TEXTOBJ]) -(DATATYPE PANEPROPS ((PWINDOW FULLXPOINTER) (* ; "The window with these PANEPROPS") - PREFIXLINE (* ; +(DATATYPE PANEPROPS + ((PWINDOW FULLXPOINTER) (* ; "The window with these PANEPROPS") + PREFIXLINE (* ;  "Dummy line that covers all the characters above the first visible line") - SUFFIXLINE (* ; + SUFFIXLINE (* ;  "Dummy line that covers all the characters below the last visible line") - PCARET NEXTPANE (PREVPANE XPOINTER) - PANEHEIGHT PANEWIDTH PANELEFT PANERIGHT PANEBOTTOM PANETOP PANEREGION)) + PCARET NEXTPANE (PREVPANE XPOINTER) + PANEHEIGHT PANEWIDTH PANELEFT PANERIGHT PANEBOTTOM PANETOP PANEREGION OTHERPAMEPROPS) + PANELEFT _ 0 PANERIGHT _ 0 PANEBOTTOM _ 0 PANETOP _ 0 PANEWIDTH _ 0 PANEHEIGHT _ 0 + PANEREGION _ (CREATEREGION 0 0 0 0)) ) (/DECLAREDATATYPE 'TEDITCARET '(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER @@ -188,7 +169,7 @@ (/DECLAREDATATYPE 'PANEPROPS '(FULLXPOINTER POINTER POINTER POINTER POINTER XPOINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER) + POINTER POINTER POINTER POINTER) '((PANEPROPS 0 FULLXPOINTER) (PANEPROPS 2 POINTER) (PANEPROPS 4 POINTER) @@ -201,8 +182,9 @@ (PANEPROPS 18 POINTER) (PANEPROPS 20 POINTER) (PANEPROPS 22 POINTER) - (PANEPROPS 24 POINTER)) - '26) + (PANEPROPS 24 POINTER) + (PANEPROPS 26 POINTER)) + '28) (DECLARE%: EVAL@COMPILE (PUTPROPS FGETPANEPROP MACRO ((P FIELD) @@ -219,6 +201,9 @@ ) (DECLARE%: EVAL@COMPILE +(PUTPROPS PANEWINDOW MACRO ((PANE) + PANE)) + (PUTPROPS PANEPROPS MACRO ((PANE) (fetch (TEXTWINDOW PANEPROPS) of PANE))) @@ -239,26 +224,36 @@ PCARET) 'TEDITCARET))) -(PUTPROPS PANESTREAM MACRO ((PANE) - (fetch (TEXTWINDOW WTEXTSTREAM) of PANE))) +(PUTPROPS PANECARETY MACRO ((PANE) + (fetch (TEDITCARET TCCARETY) of (GETPANEPROP (PANEPROPS PANE) + PCARET)))) + +(PUTPROPS PANETEXTSTREAM MACRO ((PANE) + (fetch (TEXTWINDOW WTEXTSTREAM) of PANE))) -(PUTPROPS PANETOBJ MACRO [(PANE) - (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of (fetch (TEXTWINDOW WTEXTSTREAM) - of PANE]) +(PUTPROPS PANETEXTOBJ MACRO ((PANE) + (FTEXTOBJ (PANETEXTSTREAM PANE)))) (PUTPROPS PANEBOTTOMLINE MACRO ((PANE) (GETLD (PANESUFFIX PANE) PREVLINE))) -(PUTPROPS \TEDIT.PREFIX.LCHARLIM MACRO ((PANE CHNO) - (FSETLD (PANEPREFIX PANE) - LCHARLAST CHNO))) +(PUTPROPS NEXTPANE MACRO ((PANE) + (GETPANEPROP (PANEPROPS PANE) + NEXTPANE))) + +(PUTPROPS PREVPANE MACRO ((PANE) + (GETPANEPROP (PANEPROPS PANE) + PREVPANE))) ) (DECLARE%: EVAL@COMPILE (PUTPROPS PANETOP MACRO [(PANE PREG) (fetch (REGION TOP) of (OR PREG (DSPCLIPPINGREGION NIL PANE]) +(PUTPROPS PANEPTOP MACRO [(PANE PREG) + (fetch (REGION PTOP) of (OR PREG (DSPCLIPPINGREGION NIL PANE]) + (PUTPROPS PANEWIDTH MACRO [(PANE PREG) (fetch (REGION WIDTH) of (OR PREG (DSPCLIPPINGREGION NIL PANE]) @@ -271,11 +266,14 @@ (PUTPROPS PANEBOTTOM MACRO [(PANE PREG) (fetch (REGION BOTTOM) of (OR PREG (DSPCLIPPINGREGION NIL PANE]) -(PUTPROPS PANEHEIGHT MACRO [(PANE PREG) - (fetch (REGION HEIGHT) of (OR PREG (DSPCLIPPINGREGION NIL PANE]) +(PUTPROPS PANEHEIGHT MACRO ((PANE PREG) + (GETPANEPROP (PANEPROPS PANE) + PANEHEIGHT))) -(PUTPROPS PANEREGION MACRO ((PANE PREG) - (OR PREG (DSPCLIPPINGREGION NIL PANE)))) +(PUTPROPS PANEREGION MACRO [(PANE PREG) + (OR PREG (GETPANEPROP (PANEPROPS PANE) + PANEREGION) + (DSPCLIPPINGREGION NIL (PANEWINDOW PANE]) ) (DECLARE%: EVAL@COMPILE @@ -320,7 +318,7 @@ (/DECLAREDATATYPE 'PANEPROPS '(FULLXPOINTER POINTER POINTER POINTER POINTER XPOINTER POINTER POINTER POINTER POINTER - POINTER POINTER POINTER) + POINTER POINTER POINTER POINTER) '((PANEPROPS 0 FULLXPOINTER) (PANEPROPS 2 POINTER) (PANEPROPS 4 POINTER) @@ -333,8 +331,9 @@ (PANEPROPS 18 POINTER) (PANEPROPS 20 POINTER) (PANEPROPS 22 POINTER) - (PANEPROPS 24 POINTER)) - '26) + (PANEPROPS 24 POINTER) + (PANEPROPS 26 POINTER)) + '28) (FILESLOAD ATTACHEDWINDOW) (DEFINEQ @@ -357,7 +356,8 @@ (DEFINEQ (\TEDIT.WINDOW.CREATE - [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 18-Feb-2025 09:49 by rmk") + [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 20-Apr-2025 15:21 by rmk") + (* ; "Edited 18-Feb-2025 09:49 by rmk") (* ; "Edited 1-Jul-2024 22:55 by rmk") (* ; "Edited 29-Jun-2024 23:16 by rmk") (* ; "Edited 5-May-2024 21:54 by rmk") @@ -380,7 +380,7 @@ (* ;; "If the region/window is typed, we grab (or create) a region of that type. The usual entry (TEDIT) defaults to type Tedit, giving a stack of regions in TYPED-REGIONS. The effect is that the next (Tedit) window will open where the last Tedit window closed. It's a little tricky for REGIONMANAGER to compensate for the prompt window, but it means that the user can reshape what is initially offered.") - (LET ((TEXTOBJ (TEXTOBJ TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) (PHEIGHT 0) TITLE REGIONTYPE PROMPTPROP REGION FILE PWINDOW PREPROMPT WTEXTOBJ) (CL:WHEN (WINDOWP WINDOW) @@ -452,12 +452,14 @@ (* ;; "Make the window's dimensions available thru TSTREAM even though it hasn't yet been configured for the text") - (\TEDIT.MINIMAL.WINDOW.SETUP WINDOW TSTREAM PROPS) + (FSETTOBJ TEXTOBJ PRIMARYPANE (\TEDIT.MINIMAL.WINDOW.SETUP WINDOW TSTREAM PROPS)) + (* ; "This should be PANE") (WINDOWPROP WINDOW 'TITLE TITLE) WINDOW]) (\TEDIT.WINDOW.GETREGION - [LAMBDA (TSTREAM REGIONTYPE PHEIGHT) (* ; "Edited 31-Mar-2025 22:43 by rmk") + [LAMBDA (TSTREAM REGIONTYPE PHEIGHT) (* ; "Edited 14-Apr-2025 00:05 by rmk") + (* ; "Edited 31-Mar-2025 22:43 by rmk") (* ; "Edited 24-Mar-2025 11:29 by rmk") (* ; "Edited 18-Mar-2025 21:52 by rmk") (* ; "Edited 19-Feb-2025 16:48 by rmk") @@ -473,20 +475,24 @@ (if (IGREATERP (TEXTLEN TEXTOBJ) 0) then - (* ;; "Explict user properties cover everything, otherwise allow for extra stuff") + (* ;; "Explict user properties covers content") [SETQ WIDTH (OR (GETTEXTPROP TEXTOBJ 'OPENWIDTH) (for PARALOOKS in (FGETTOBJ TEXTOBJ TXTPARALOOKSLIST) largest (GETPLOOKS PARALOOKS RIGHTMAR) finally (CL:UNLESS (AND $$EXTREME (IGREATERP $$EXTREME 0)) - (SETQ $$EXTREME (TIMES 6 PTSPERINCH))) - (* ; "36 for right margin selection") - (RETURN (IPLUS $$EXTREME \TEDIT.LINEREGION.WIDTH 36 - (ADD1 (TIMES 2 WBorder) - 1) - (CL:IF (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) - 0 - \TEDIT.OP.WIDTH)] + (SETQ $$EXTREME (TIMES 6 PTSPERINCH))) + (RETURN $$EXTREME] + + (* ;; "Allow for extra stuff. 36 to allow for some spacing.") + + [add WIDTH (IPLUS \TEDIT.LINEREGION.WIDTH (ADD1 (TIMES 2 WBorder) + 1) + (CL:IF (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) + 0 + (CL:IF (EQ 0 \TEDIT.OP.WIDTH) + \TEDIT.LINEREGION.WIDTH + (IPLUS \TEDIT.OP.WIDTH 36)))] [SETQ HEIGHT (if (GETTEXTPROP TEXTOBJ 'OPENHEIGHT) elseif (ZEROP (TEXTLEN TEXTOBJ)) then 50 @@ -504,11 +510,11 @@ (IMAX 100 (ADD1 (TIMES 2 WBorder]) (\TEDIT.WINDOW.SETUP - [LAMBDA (PANE TSTREAM PROPS AFTERPANE LCHAR1) (* ; "Edited 25-Nov-2024 20:10 by rmk") + [LAMBDA (PANE TSTREAM PROPS AFTERPANE LCHAR1) (* ; "Edited 21-Apr-2025 12:02 by rmk") + (* ; "Edited 6-Apr-2025 18:56 by rmk") + (* ; "Edited 5-Apr-2025 14:07 by rmk") + (* ; "Edited 25-Nov-2024 20:10 by rmk") (* ; "Edited 21-Nov-2024 21:12 by rmk") - (* ; "Edited 18-Nov-2024 21:14 by rmk") - (* ; "Edited 4-Nov-2024 19:47 by rmk") - (* ; "Edited 3-Nov-2024 07:49 by rmk") (* ; "Edited 5-Jul-2024 11:38 by rmk") (* ; "Edited 18-May-2024 16:50 by rmk") (* ; "Edited 15-Mar-2024 13:36 by rmk") @@ -540,17 +546,17 @@ (* ;; "") - (\TEDIT.PANE.CREATELINES TEXTOBJ PANE (AND LCHAR1 (SUB1 LCHAR1))) + (\TEDIT.PANE.CREATELINES TSTREAM PANE (AND LCHAR1 (SUB1 LCHAR1))) (CL:UNLESS (OR LCHAR1 (EQ 0 (TEXTLEN TEXTOBJ))) (LINKLD (PANEPREFIX PANE) - (\TEDIT.FORMATLINE TEXTOBJ 1))) + (\TEDIT.FORMATLINE TSTREAM 1))) (CL:WHEN (PANETOPLINE PANE) [SETYBOT (PANEPREFIX PANE) (IPLUS (FGETLD (PANETOPLINE PANE) LLEADBEFORE) (fetch (REGION HEIGHT) of (DSPCLIPPINGREGION NIL PANE]) (\TEDIT.CLEARPANE PANE) - (\TEDIT.SUFFIXLINE.CREATE PANE TEXTOBJ (\TEDIT.LINES.BELOW NIL PANE TEXTOBJ)) + (\TEDIT.SUFFIXLINE.CREATE PANE TSTREAM (\TEDIT.LINES.BELOW NIL PANE TSTREAM)) (CL:WHEN AFTERPANE (for PANE inpanes (PROGN TEXTOBJ) as L1 on (GETSEL SEL L1) as LN on (GETSEL SEL LN) when (EQ PANE AFTERPANE) do (push (CDR L1) @@ -558,13 +564,15 @@ (push (CDR LN) NIL))) (FSETSEL SEL HASCARET (NOT (FGETTOBJ TEXTOBJ TXTREADONLY))) - (\TEDIT.FIXSEL SEL TEXTOBJ NIL (AND AFTERPANE PANE)) - (\TEDIT.SHOWSEL SEL NIL TEXTOBJ (AND AFTERPANE PANE)) - (\TEDIT.SHOWSEL SEL T TEXTOBJ (AND AFTERPANE PANE)) + (\TEDIT.FIXSEL SEL TSTREAM (AND AFTERPANE PANE)) (* ; + "If not fixed, the highlight in the lower pane will disappear") + (\TEDIT.NOSEL TSTREAM NIL (AND AFTERPANE PANE)) + (\TEDIT.SHOWSEL SEL T TSTREAM (AND AFTERPANE PANE)) (\TEDIT.SET.WINDOW.EXTENT TEXTOBJ PANE]) (\TEDIT.MINIMAL.WINDOW.SETUP - [LAMBDA (PANE TSTREAM PROPS AFTERPANE) (* ; "Edited 30-Nov-2024 13:32 by rmk") + [LAMBDA (PANEWINDOW TSTREAM PROPS) (* ; "Edited 20-Apr-2025 15:19 by rmk") + (* ; "Edited 30-Nov-2024 13:32 by rmk") (* ; "Edited 4-Nov-2024 19:46 by rmk") (* ; "Edited 26-Oct-2024 11:10 by rmk") (* ; "Edited 27-Aug-2024 10:11 by rmk") @@ -583,34 +591,36 @@ (* ; "Edited 18-Sep-2023 23:44 by rmk") (* ; "Edited 30-May-91 23:33 by jds") - (* ;; "Do the minimum setup so that the window PANE becomes a pane of TSTREAM and TSTREAM and PANE know about each other. Does NOT include mouse interface or scrolling/lines") + (* ;; "Do the minimum setup so that the window PANEWINDOW becomes the window of a pane of TSTREAM and TSTREAM and PANE know about each other. Does NOT include mouse interface or scrolling/lines.") - (* ;; "If AFTERPANE is non-NIL, the new pnae will be placed after AFTERPANE in the TEXTOBJ's pane list. This maintains an ordering of panes, for splitting and unsplitting.") + (* ;; "") - (\DTEST PANE 'WINDOW) - (LET ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + (* ;; "THIS SHOULD RETURN A PANE, NOT PANEWINDOW") + + (\DTEST PANEWINDOW 'WINDOW) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) [PANEPROPS (create PANEPROPS - PWINDOW _ PANE + PWINDOW _ PANEWINDOW PCARET _ (create TEDITCARET TCFORCEUP _ T - TCCARETDS _ (WINDOWPROP PANE 'DSP] - DS PREG OLDPANES) (* ; "The displaystream for flashing the caret. Caret starts off, so it doesn't flash before its position is known") - (replace (TEXTWINDOW PANEPROPS) of PANE with PANEPROPS) - (SETQ DS (WINDOWPROP PANE 'DSP)) - (FSETTOBJ TEXTOBJ SELPANE PANE) - (WINDOWPROP PANE 'PROCESS NIL) (* ; + TCCARETDS _ (WINDOWPROP PANEWINDOW 'DSP] + DS PREG) (* ; "The displaystream for flashing the caret. Caret starts off, so it doesn't flash before its position is known") + (replace (TEXTWINDOW PANEPROPS) of PANEWINDOW with PANEPROPS) + (SETQ DS (WINDOWPROP PANEWINDOW 'DSP)) + (FSETTOBJ TEXTOBJ SELPANE PANEWINDOW) + (WINDOWPROP PANEWINDOW 'PROCESS NIL) (* ;  "For the moment, this pane has no process") - (replace (TEXTWINDOW WTEXTSTREAM) of PANE with TSTREAM) + (replace (TEXTWINDOW WTEXTSTREAM) of PANEWINDOW with TSTREAM) (* ; "TSTREAM is accessible from WINDOW") - (replace (TEXTWINDOW CURSORREGION) of PANE with (CREATEREGION 0 0 0 0)) + (replace (TEXTWINDOW CURSORREGION) of PANEWINDOW with (CREATEREGION 0 0 0 0)) (* ; "Used by CursorMovedFn") (DSPRIGHTMARGIN 32767 DS) (* ;  "So we don't get spurious RETURNs printed out by the system") (FSETTOBJ TEXTOBJ DISPLAYCACHE (CAR (\TEDIT.CREATE.LINECACHE 1))) (* ;  "A CACHE for creating line images for display") - [FSETTOBJ TEXTOBJ DISPLAYCACHEDS (DSPCREATE (fetch LCBITMAP of (GETTOBJ TEXTOBJ DISPLAYCACHE - ] + [FSETTOBJ TEXTOBJ DISPLAYCACHEDS (DSPCREATE (fetch LCBITMAP of (FGETTOBJ TEXTOBJ + DISPLAYCACHE] (* ;  "A displaystream for changing the image caches") (DSPOPERATION 'PAINT (FGETTOBJ TEXTOBJ DISPLAYCACHEDS)) @@ -632,51 +642,37 @@ (SETQ PANEBOTTOM (fetch (REGION BOTTOM) of PREG)) (SETQ PANETOP (fetch (REGION TOP) of PREG)) (SETQ PANEREGION PREG)) - (WITH TEXTOBJ TEXTOBJ (SETQ WTOP (fetch (REGION PTOP) of PREG)) - (SETQ WRIGHT (fetch (REGION RIGHT) of PREG)) - (SETQ WBOTTOM (fetch (REGION BOTTOM) of PREG)) - (SETQ WLEFT (fetch (REGION LEFT) of PREG))) (* ;; "") - (WINDOWPROP PANE 'CURSORMOVEDFN (FUNCTION \TEDIT.CURSORMOVEDFN)) - (WINDOWPROP PANE 'CURSOROUTFN (FUNCTION \TEDIT.CURSOROUTFN)) - (WINDOWPROP PANE 'BUTTONEVENTFN (FUNCTION \TEDIT.BUTTONEVENTFN)) - (WINDOWPROP PANE 'RIGHTBUTTONFN (FUNCTION \TEDIT.BUTTONEVENTFN)) - (WINDOWPROP PANE 'HARDCOPYFN (FUNCTION TEDIT.HARDCOPYFN)) - (WINDOWPROP PANE 'HARDCOPYFILEFN (FUNCTION \TEDIT.HARDCOPYFILEFN)) - (WINDOWPROP PANE 'COPYINSERTFN (FUNCTION \TEDIT.COPYINSERTFN)) - (WINDOWPROP PANE 'REPAINTFN (FUNCTION \TEDIT.REPAINTFN)) - (WINDOWPROP PANE 'AFTERMOVEFN (FUNCTION \TEDIT.AFTERMOVEFN)) - (WINDOWPROP PANE 'WINDOWENTRYFN (FUNCTION \TEDIT.PROCIDLEFN)) - (WINDOWPROP PANE 'OFFSCREEN (OFFSCREENP PANE)) - (WINDOWPROP PANE 'SCROLLFN (OR (WINDOWPROP PANE 'SCROLLFN) - (FUNCTION \TEDIT.SCROLLFN))) - (WINDOWPROP PANE 'ICONFN (OR (WINDOWPROP PANE 'ICONFN) - (FUNCTION \TEDIT.SHRINK.ICONCREATE))) - (WINDOWPROP PANE 'TEDIT.TITLEMENUFN (OR (WINDOWPROP PANE 'TEDIT.TITLEMENUFN) - (LISTGET PROPS 'TITLEMENUFN) - (FUNCTION TEDIT.DEFAULT.MENUFN))) - (WINDOWADDPROP PANE 'SHRINKFN (FUNCTION \TEDIT.SHRINKFN)) - (WINDOWADDPROP PANE 'EXPANDFN (FUNCTION \TEDIT.EXPANDFN)) - (WINDOWADDPROP PANE 'RESHAPEFN (FUNCTION \TEDIT.RESHAPEFN)) - (WINDOWADDPROP PANE 'NEWREGIONFN (FUNCTION \TEDIT.NEWREGIONFN)) + (WINDOWPROP PANEWINDOW 'CURSORMOVEDFN (FUNCTION \TEDIT.CURSORMOVEDFN)) + (WINDOWPROP PANEWINDOW 'CURSOROUTFN (FUNCTION \TEDIT.CURSOROUTFN)) + (WINDOWPROP PANEWINDOW 'BUTTONEVENTFN (FUNCTION \TEDIT.BUTTONEVENTFN)) + (WINDOWPROP PANEWINDOW 'RIGHTBUTTONFN (FUNCTION \TEDIT.BUTTONEVENTFN)) + (WINDOWPROP PANEWINDOW 'HARDCOPYFN (FUNCTION TEDIT.HARDCOPYFN)) + (WINDOWPROP PANEWINDOW 'HARDCOPYFILEFN (FUNCTION \TEDIT.HARDCOPYFILEFN)) + (WINDOWPROP PANEWINDOW 'COPYINSERTFN (FUNCTION \TEDIT.COPYINSERTFN)) + (WINDOWPROP PANEWINDOW 'REPAINTFN (FUNCTION \TEDIT.REPAINTFN)) + (WINDOWPROP PANEWINDOW 'AFTERMOVEFN (FUNCTION \TEDIT.AFTERMOVEFN)) + (WINDOWPROP PANEWINDOW 'WINDOWENTRYFN (FUNCTION \TEDIT.PROCIDLEFN)) + (WINDOWPROP PANEWINDOW 'OFFSCREEN (OFFSCREENP PANEWINDOW)) + (WINDOWPROP PANEWINDOW 'SCROLLFN (OR (WINDOWPROP PANEWINDOW 'SCROLLFN) + (FUNCTION \TEDIT.SCROLLFN))) + (WINDOWPROP PANEWINDOW 'ICONFN (OR (WINDOWPROP PANEWINDOW 'ICONFN) + (FUNCTION \TEDIT.SHRINK.ICONCREATE))) + (WINDOWPROP PANEWINDOW 'TEDIT.TITLEMENUFN (OR (WINDOWPROP PANEWINDOW 'TEDIT.TITLEMENUFN) + (LISTGET PROPS 'TITLEMENUFN) + (FUNCTION TEDIT.DEFAULT.MENUFN))) + (WINDOWADDPROP PANEWINDOW 'SHRINKFN (FUNCTION \TEDIT.SHRINKFN)) + (WINDOWADDPROP PANEWINDOW 'EXPANDFN (FUNCTION \TEDIT.EXPANDFN)) + (WINDOWADDPROP PANEWINDOW 'RESHAPEFN (FUNCTION \TEDIT.RESHAPEFN)) + (WINDOWADDPROP PANEWINDOW 'NEWREGIONFN (FUNCTION \TEDIT.NEWREGIONFN)) (* ;; "Our CLOSEFN must be first in order to stop closing if the stream is busy.") - (WINDOWADDPROP PANE 'CLOSEFN (CL:IF AFTERPANE - [FUNCTION (LAMBDA (P) - (PUTWINDOWPROP P 'CLOSEFN NIL) - (\TEDIT.UNSPLITW P] - (FUNCTION TEDIT.DEACTIVATE.WINDOW)) + (WINDOWADDPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW) T) - (CL:UNLESS (thereis P inpanes TEXTOBJ suchthat (EQ P PANE)) - (* ; "Don't re-add ") - (if AFTERPANE - then (* ; "Link it in after AFTERPANE ") - (\TEDIT.LINKPANES AFTERPANE PANE) - else (FSETTOBJ TEXTOBJ PRIMARYPANE PANE))) - PANE]) + PANEWINDOW]) (\TEDIT.CLEARPANE [LAMBDA (PANE PBOTTOM) (* ; "Edited 1-Dec-2024 11:43 by rmk") @@ -694,17 +690,11 @@ 'REPLACE]) (\TEDIT.FILL.PANES - [LAMBDA (TSTREAM ONLYPANE) (* ; "Edited 29-Nov-2024 13:29 by rmk") - (* ; "Edited 27-Nov-2024 13:51 by rmk") - (* ; "Edited 21-Nov-2024 21:10 by rmk") - (* ; "Edited 19-Nov-2024 23:27 by rmk") - (* ; "Edited 18-Nov-2024 21:14 by rmk") + [LAMBDA (TSTREAM ONLYPANE) (* ; "Edited 21-Apr-2025 20:22 by rmk") + (* ; "Edited 5-Apr-2025 13:40 by rmk") + (* ; "Edited 29-Nov-2024 13:29 by rmk") (* ; "Edited 28-Oct-2024 16:29 by rmk") - (* ; "Edited 26-Oct-2024 15:38 by rmk") (* ; "Edited 6-Jul-2024 16:57 by rmk") - (* ; "Edited 30-Jun-2024 17:12 by rmk") - (* ; "Edited 25-Jun-2024 08:53 by rmk") - (* ; "Edited 17-Jun-2024 09:36 by rmk") (* ; "Edited 12-May-2024 21:36 by rmk") (* ; "Edited 15-Mar-2024 13:36 by rmk") (* ; "Edited 30-Nov-2023 10:02 by rmk") @@ -717,7 +707,7 @@  "If called with a pane, the window system has cleared the bitmap, but we don't count on that.") (SETQ TSTREAM (TEXTSTREAM TSTREAM)) - (LET ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) SEL WASON) (CL:WHEN TEXTOBJ (SETQ SEL (FGETTOBJ TEXTOBJ SEL)) @@ -733,15 +723,15 @@ (\TEDIT.SETCARET SEL P TEXTOBJ 'OFF) (\TEDIT.CLEARPANE P) - (\TEDIT.SUFFIXLINE.CREATE P TEXTOBJ (\TEDIT.LINES.BELOW NIL P TEXTOBJ)) - (\TEDIT.FIXSEL SEL TEXTOBJ NIL P) + (\TEDIT.SUFFIXLINE.CREATE P TSTREAM (\TEDIT.LINES.BELOW NIL P TSTREAM)) (\TEDIT.SET.WINDOW.EXTENT TEXTOBJ P)) - (CL:WHEN WASON (\TEDIT.SHOWSEL SEL T TEXTOBJ ONLYPANE)))]) + (CL:WHEN WASON (\TEDIT.SHOWSEL SEL T TSTREAM ONLYPANE)))]) ) (DEFINEQ (\TEDIT.CURSORMOVEDFN - [LAMBDA (PANE) (* ; "Edited 1-Dec-2024 11:55 by rmk") + [LAMBDA (PANE) (* ; "Edited 19-Apr-2025 22:22 by rmk") + (* ; "Edited 1-Dec-2024 11:55 by rmk") (* ; "Edited 22-Nov-2024 23:53 by rmk") (* ; "Edited 16-Nov-2024 20:18 by rmk") (* ; "Edited 28-Jun-2024 15:07 by rmk") @@ -755,15 +745,15 @@ (PROG ((X (LASTMOUSEX PANE)) (Y (LASTMOUSEY PANE)) - (TEXTOBJ (TEXTOBJ! (fetch (TEXTWINDOW WTEXTOBJ) of PANE))) - (CURSORREG (fetch (TEXTWINDOW CURSORREGION) of PANE)) + (TEXTOBJ (PANETEXTOBJ PANE)) + (CURSORREG (fetch (TEXTWINDOW CURSORREGION) of (PANEWINDOW PANE))) LINE LEFT) (CL:UNLESS (INSIDE? (PANEREGION PANE) X Y) (CURSOR T) (RETURN)) (CL:UNLESS (INSIDE? CURSORREG X Y) - [if (AND (IGEQ X (SETQ LEFT (IDIFFERENCE (FGETTOBJ TEXTOBJ WRIGHT) + [if (AND (IGEQ X (SETQ LEFT (IDIFFERENCE (PANERIGHT PANE) \TEDIT.OP.WIDTH))) (IGEQ Y (IPLUS (PANEBOTTOM PANE) \TEDIT.OP.BOTTOM)) @@ -791,7 +781,7 @@ (* ;; "The line region gets wider if the paragraph is indented") (SETQ LEFT (OR (AND LINE (FGETLD LINE LEFTMARGIN)) - (IPLUS (FGETTOBJ TEXTOBJ WLEFT) + (IPLUS (PANELEFT PANE) \TEDIT.LINEREGION.WIDTH))) (if (ILESSP X LEFT) then @@ -808,8 +798,7 @@ (CURSOR T) (FSETTOBJ TEXTOBJ MOUSEREGION 'TEXT) (replace (REGION LEFT) of CURSORREG with LEFT) - (replace (REGION WIDTH) of CURSORREG with (IDIFFERENCE (FGETTOBJ TEXTOBJ - WRIGHT) + (replace (REGION WIDTH) of CURSORREG with (IDIFFERENCE (PANERIGHT PANE) (IPLUS LEFT \TEDIT.LINEREGION.WIDTH ])]) @@ -867,10 +856,10 @@ PRIM]) (\TEDIT.MAINSTREAM - [LAMBDA (TSTREAM) (* ; "Edited 20-Oct-2024 09:31 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 18-Apr-2025 15:02 by rmk") + (* ; "Edited 20-Oct-2024 09:31 by rmk") (LET ((MAINW (\TEDIT.MAINW TSTREAM))) - (CL:WHEN MAINW - (fetch (TEXTWINDOW WTEXTSTREAM) of MAINW))]) + (CL:WHEN MAINW (PANETEXTSTREAM MAINW]) (\TEDIT.PRIMARYPANE [LAMBDA (TSTREAM) (* ; "Edited 28-Jun-2024 21:36 by rmk") @@ -1112,7 +1101,10 @@ (DEFINEQ (\TEDIT.BUTTONEVENTFN - [LAMBDA (PANE) (* ; "Edited 13-Feb-2025 11:53 by rmk") + [LAMBDA (PANE) (* ; "Edited 21-Apr-2025 20:19 by rmk") + (* ; "Edited 13-Apr-2025 13:33 by rmk") + (* ; "Edited 6-Apr-2025 18:59 by rmk") + (* ; "Edited 13-Feb-2025 11:53 by rmk") (* ; "Edited 6-Dec-2024 11:33 by rmk") (* ; "Edited 1-Dec-2024 12:03 by rmk") (* ; "Edited 27-Nov-2024 20:21 by rmk") @@ -1141,7 +1133,7 @@ (RESETLST (* ;  "Getting TTYPROC here allows HELP in debugging") (bind (TTYPROC _ (TTY.PROCESS)) - (TSTREAM _ (PANESTREAM PANE)) + (TSTREAM _ (PANETEXTSTREAM PANE)) (X _ (LASTMOUSEX PANE)) (Y _ (LASTMOUSEY PANE)) (DS _ (WINDOWPROP PANE 'DSP)) @@ -1181,7 +1173,7 @@ READONLY NIL)) (CL:UNLESS (SETQ CURSEL (  \TEDIT.BUTTONEVENTFN.CURSEL.INIT - NEWOPERATION TEXTOBJ)) + NEWOPERATION TSTREAM)) (RETURN)) (SETQ NEWSEL (\TEDIT.COPYSEL CURSEL)) (* ; @@ -1208,8 +1200,8 @@  "The mouse left the window: cleanup and leave. ") (CL:UNLESS (EQ CUROPERATION 'NORMAL) (* ;  "Take down the copy/delete/copylooks highlight") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) - (\TEDIT.SHOWSEL NIL T TEXTOBJ)) (* ; "Go back to original selection?") + (\TEDIT.NOSEL TSTREAM CURSEL) + (\TEDIT.SHOWSEL NIL T TSTREAM)) (* ; "Go back to original selection?") (* ;;  "Scroll if mouse moved to scroll bar (and scroll bar doesn't overlap the window)") @@ -1225,16 +1217,16 @@ (SETQ OLDX X) (SETQ OLDY Y) (CL:UNLESS (EQ NEWOPERATION CUROPERATION) (* ; "Keys changed ") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) (* ; "Switch to new highlighting") + (\TEDIT.NOSEL TSTREAM CURSEL) (* ; "Switch to new highlighting") (\TEDIT.SET.SEL.LOOKS CURSEL NEWOPERATION) (\TEDIT.SET.SEL.LOOKS NEWSEL NEWOPERATION) (CL:WHEN (EQ NEWOPERATION 'NORMAL) (* ;; "Switching from e.g. COPY to NORMAL with button down. Since we didn't start out NORMAL, the original normal selection is still on the screen. We take it down here, and establish the current (off) CURSEL as the new restoration selection") - (\TEDIT.SHOWSEL NIL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM CURSEL) (\TEDIT.COPYSEL CURSEL (TEXTSEL TEXTOBJ))) - (\TEDIT.SHOWSEL CURSEL T TEXTOBJ) + (\TEDIT.SHOWSEL CURSEL T TSTREAM) (SETQ CUROPERATION NEWOPERATION)) (* ;; "Update NEWSEL each time around. Note that \TEDIT.XYTOSEL fixes but doesn't show the selection, we do that here. MOUSEREGION is set by \TEDITCURSORMOVEDFN, below.") @@ -1242,7 +1234,7 @@ (if (\TEDIT.MOUSESTATE RIGHT) then (* ;  "Right button: NEWSEL extends last CURSEL") - (\TEDIT.XYTOSEL X Y NEWSEL TEXTOBJ CUROPERATION PANE 'RIGHT CURSEL) + (\TEDIT.XYTOSEL X Y NEWSEL TSTREAM CUROPERATION PANE 'RIGHT CURSEL) (CL:WHEN (FGETSEL NEWSEL SET) (CL:WHEN (AND TEDIT.EXTEND.PENDING.DELETE (NOT PENDINGDEL) (EQ CUROPERATION 'NORMAL) @@ -1250,22 +1242,22 @@ (* ;; "Switch to simulation of Laurel bluependingdelete: Black, deletes on type-in. Coerce CURSEL and display for pending looks. Otherwise, CURSEL is already BPD and stays on to avoid flicker in extending") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM CURSEL) (* ;  "Take down old looks, change, re-show") (\TEDIT.SET.SEL.LOOKS CURSEL 'PENDINGDEL) (\TEDIT.SET.SEL.LOOKS NEWSEL 'PENDINGDEL) - (\TEDIT.SHOWSEL CURSEL T TEXTOBJ) + (\TEDIT.SHOWSEL CURSEL T TSTREAM) (SETQ PENDINGDEL T)) - [\TEDIT.EXTEND.SEL NEWSEL CURSEL TEXTOBJ (MEMB CUROPERATION + [\TEDIT.EXTEND.SEL NEWSEL CURSEL TSTREAM (MEMB CUROPERATION '(COPY COPYLOOKS]) (* ; "No valid selection, go to cleanup") else (if (\TEDIT.MOUSESTATE LEFT) then (* ; "Left selects char/point. ") - (\TEDIT.XYTOSEL X Y NEWSEL TEXTOBJ CUROPERATION PANE 'LEFT CURSEL) + (\TEDIT.XYTOSEL X Y NEWSEL TSTREAM CUROPERATION PANE 'LEFT CURSEL) elseif (\TEDIT.MOUSESTATE MIDDLE) then (* ; "Middle selects word/line") - (\TEDIT.XYTOSEL X Y NEWSEL TEXTOBJ CUROPERATION PANE 'MIDDLE CURSEL + (\TEDIT.XYTOSEL X Y NEWSEL TSTREAM CUROPERATION PANE 'MIDDLE CURSEL )) (CL:WHEN (AND (FGETSEL NEWSEL SET) (\TEDIT.SEL.CHANGED? NEWSEL CURSEL) @@ -1274,9 +1266,9 @@ (* ;; "Selection has changed while at least one button is down. Take down current CURSEL highlighting, switch to NEWSEL. If the mouse condition is removed, the secondary selection can be lost if the mouse moves while the operation keys are still down. But if the copy isn't done when NEWSEL picks out an object, the object will be lost. ") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM CURSEL) (\TEDIT.COPYSEL NEWSEL CURSEL) - (\TEDIT.SHOWSEL CURSEL T TEXTOBJ))) + (\TEDIT.SHOWSEL CURSEL T TSTREAM))) (* ;; "CURSEL now matches the display and CUROPERATION.") finally @@ -1287,15 +1279,18 @@ (* ;; ".Here to restore when no valid selection, maybe an unhappy image object?") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) (* ; "Turn off CURSEL") + (\TEDIT.SHOWSEL CURSEL NIL TSTREAM) (* ; "Turn off CURSEL") (\TEDIT.SET.SEL.LOOKS (TEXTSEL TEXTOBJ) 'NORMAL) (* ; "Restore TEXTSEL") - (\TEDIT.SHOWSEL NIL T TEXTOBJ) + (\TEDIT.SHOWSEL NIL T TSTREAM) (RETURN)) (\TEDIT.BUTTONEVENTFN.DOOPERATION CURSEL CUROPERATION TSTREAM PANE PENDINGDEL TTYPROC))))]) (\TEDIT.BUTTONEVENTFN.DOOPERATION [LAMBDA (CURSEL CUROPERATION TSTREAM PANE PENDINGDEL TTYPROC) + (* ; "Edited 21-Apr-2025 20:32 by rmk") + (* ; "Edited 8-Apr-2025 10:03 by rmk") + (* ; "Edited 6-Apr-2025 18:02 by rmk") (* ; "Edited 25-Nov-2024 22:22 by rmk") (* ; "Edited 4-Nov-2024 13:09 by rmk") (* ; "Edited 3-Nov-2024 07:20 by rmk") @@ -1318,10 +1313,10 @@ (* ;; "On entry, CURSEL's highlighting is on the screen") (CL:WHEN (FGETSEL CURSEL SET) - (LET* ((TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM)) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) (TTYW (PROCESSPROP TTYPROC 'WINDOW)) (TTYSTREAM (AND TTYW (fetch (TEXTWINDOW WTEXTSTREAM) of TTYW))) - [TTYSEL (AND TTYSTREAM (TEXTSEL (GETTSTR TTYSTREAM TEXTOBJ] + [TTYSEL (AND TTYSTREAM (TEXTSEL (FTEXTOBJ TTYSTREAM] (SELFN (GETTEXTPROP TEXTOBJ 'SELFN)) (TEXTSEL (TEXTSEL TEXTOBJ))) @@ -1339,7 +1334,7 @@ (* ;; "\TEDIT.DELETE converts TTYSEL (= TEXTSEL) to a point-caret.") (\TEDIT.COPYSEL CURSEL TEXTSEL) - (CL:WHEN (\TEDIT.DELETE TEXTOBJ TEXTSEL) + (CL:WHEN (\TEDIT.DELETE TSTREAM TEXTSEL) (* ;  "Make sure the caret blinks in the position of a successful deletion") (FSETSEL TEXTSEL HASCARET T)) @@ -1347,8 +1342,8 @@ (COPY (CL:IF TTYSEL (\TEDIT.COPY CURSEL TTYSEL TSTREAM TTYSTREAM) (\TEDIT.FOREIGN.COPY TTYW CURSEL TSTREAM)) - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ)) - (MOVE (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) + (\TEDIT.NOSEL TSTREAM NIL CURSEL)) + (MOVE (\TEDIT.NOSEL TSTREAM NIL CURSEL) (if TTYSEL then (\TEDIT.MOVE CURSEL TTYSEL TSTREAM TTYSTREAM) else (\TEDIT.FOREIGN.COPY TTYW CURSEL TSTREAM) @@ -1356,9 +1351,9 @@ (\TEDIT.UPDATE.SEL TEXTSEL (FGETSEL CURSEL CH#) 0 'RIGHT) - (\TEDIT.DELETE TEXTOBJ CURSEL) - (\TEDIT.SHOWSEL TEXTSEL T TEXTOBJ))) - (COPYLOOKS (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) + (\TEDIT.DELETE TSTREAM CURSEL) + (\TEDIT.SHOWSEL TEXTSEL T TSTREAM))) + (COPYLOOKS (\TEDIT.NOSEL TSTREAM NIL CURSEL) (if TTYSEL then (if (EQ 'PARA (FGETSEL CURSEL SELKIND)) then (\TEDIT.CHANGE.PARALOOKS TTYSTREAM @@ -1379,6 +1374,7 @@ TEXTOBJ)) CURSEL)))) (\TEDIT.THELP "Bad selection operation" CUROPERATION)) + (FSETTOBJ TEXTOBJ SELPANE PANE) (CL:UNLESS PENDINGDEL (\TEDIT.SET.SEL.LOOKS (TEXTSEL TEXTOBJ) 'NORMAL)) @@ -1424,7 +1420,10 @@ 'NORMAL]) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT - [LAMBDA (NEWOPERATION TEXTOBJ) (* ; "Edited 30-Nov-2024 15:45 by rmk") + [LAMBDA (NEWOPERATION TSTREAM) (* ; "Edited 21-Apr-2025 20:01 by rmk") + (* ; "Edited 6-Apr-2025 18:57 by rmk") + (* ; "Edited 5-Apr-2025 13:20 by rmk") + (* ; "Edited 30-Nov-2024 15:45 by rmk") (* ; "Edited 27-Nov-2024 20:23 by rmk") (* ; "Edited 22-Oct-2024 23:10 by rmk") (* ; "Edited 20-Oct-2024 23:38 by rmk") @@ -1435,50 +1434,51 @@ (* ;; "NILvalue signals abort") - (PROG [(CURSEL (\TEDIT.COPYSEL (TEXTSEL TEXTOBJ] - (SELECTQ NEWOPERATION - (NORMAL - (* ;; + (PROG* [(TEXTOBJ (FTEXTOBJ TSTREAM)) + (CURSEL (\TEDIT.COPYSEL (TEXTSEL TEXTOBJ] + (SELECTQ NEWOPERATION + (NORMAL + (* ;;  "Operating in this document. Our initial CURSEL is consistent with TEXTSEL and display.") - (FSETSEL (TEXTSEL TEXTOBJ) - ONFLG NIL) (* ; + (FSETSEL (TEXTSEL TEXTOBJ) + ONFLG NIL) (* ;  "Transferred display status to CURSEL, restore later if needed") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) (* ; "Take down current hilight") - (if (\TEDIT.MOUSESTATE RIGHT) - then - (* ;; "Extending the current selection: coerce to PENDINGDEL/black") - - (\TEDIT.SET.SEL.LOOKS CURSEL 'PENDINGDEL) - elseif (FGETTOBJ TEXTOBJ BLUEPENDINGDELETE) - then - (* ;; + (\TEDIT.NOSEL TSTREAM CURSEL) (* ; "Take down current hilight") + (if (\TEDIT.MOUSESTATE RIGHT) + then + (* ;; "Extending the current selection: coerce to PENDINGDEL/black") + + (\TEDIT.SET.SEL.LOOKS CURSEL 'PENDINGDEL) + elseif (FGETTOBJ TEXTOBJ BLUEPENDINGDELETE) + then + (* ;;  "Not extending: turn off BPD highlighting and reduce to a point selection at the caret.") - (FSETTOBJ TEXTOBJ BLUEPENDINGDELETE NIL) - (\TEDIT.UPDATE.SEL CURSEL (TEDIT.GETPOINT TEXTOBJ CURSEL) - 0 NIL 'NORMAL) - (\TEDIT.FIXSEL CURSEL TEXTOBJ) - (\TEDIT.SHOWSEL CURSEL T TEXTOBJ)) - (\TEDIT.SHOWSEL CURSEL T TEXTOBJ)) - (DELETE - (* ;; + (FSETTOBJ TEXTOBJ BLUEPENDINGDELETE NIL) + (\TEDIT.UPDATE.SEL CURSEL (TEDIT.GETPOINT TEXTOBJ CURSEL) + 0 NIL 'NORMAL) + (\TEDIT.SHOWSEL CURSEL T TSTREAM)) + (\TEDIT.SHOWSEL CURSEL T TSTREAM)) + (DELETE + (* ;;  "Deleting (CTRL) somewhere else. Turn off CURSEL's highlighting, which was transferred from TEXTSEL") - (\TEDIT.SHOWSEL CURSEL NIL TEXTOBJ) - (\TEDIT.SET.SEL.LOOKS CURSEL 'DELETE)) - ((MOVE COPY COPYLOOKS) - (* ;; "Source text from here, TTY target maythat be here, another Tedit, or foreign. TEXTSEL remains visible ") + (\TEDIT.NOSEL TSTREAM CURSEL) + (\TEDIT.SET.SEL.LOOKS CURSEL 'DELETE)) + ((MOVE COPY COPYLOOKS) + (* ;; "Source text from here, TTY target maythat be here, another Tedit, or foreign. TEXTSEL remains visible ") - (CL:WHEN (\TEDIT.MOUSESTATE RIGHT) (* ; "Funny to copy while extending") - (RETURN)) - (\TEDIT.SET.SEL.LOOKS CURSEL NEWOPERATION) - (FSETSEL CURSEL SET NIL)) - (FSETSEL CURSEL SET NIL)) - (RETURN CURSEL]) + (CL:WHEN (\TEDIT.MOUSESTATE RIGHT) (* ; "Funny to copy while extending") + (RETURN)) + (\TEDIT.SET.SEL.LOOKS CURSEL NEWOPERATION) + (FSETSEL CURSEL SET NIL)) + (FSETSEL CURSEL SET NIL)) + (RETURN CURSEL]) (\TEDIT.BUTTONEVENTFN.INACTIVE - [LAMBDA (TEXTOBJ PANE) (* ; "Edited 24-Apr-2024 09:45 by rmk") + [LAMBDA (TEXTOBJ PANE) (* ; "Edited 18-Apr-2025 15:14 by rmk") + (* ; "Edited 24-Apr-2024 09:45 by rmk") (* ; "Edited 16-Mar-2024 00:22 by rmk") (* ; "Edited 9-Feb-2024 00:00 by rmk") (* ; "Edited 27-Jan-2024 11:40 by rmk") @@ -1514,7 +1514,7 @@ (* ;; "Why do we need a Middle-button menu to restart a dead window. If it's clicked in, just restart it.") (SETTOBJ TEXTOBJ EDITOPACTIVE NIL) - (TEDIT (fetch (TEXTWINDOW WTEXTSTREAM) of PANE) + (TEDIT (PANETEXTSTREAM PANE) PANE) NIL]) @@ -1601,7 +1601,8 @@ (DEFINEQ (\TEDIT.PANE.SPLIT - [LAMBDA (TEXTOBJ WINDOWTOSPLIT) (* ; "Edited 23-Oct-2024 09:50 by rmk") + [LAMBDA (TEXTOBJ PANE) (* ; "Edited 19-Apr-2025 22:17 by rmk") + (* ; "Edited 23-Oct-2024 09:50 by rmk") (* ; "Edited 21-Oct-2024 00:33 by rmk") (* ; "Edited 27-Jan-2024 11:39 by rmk") (* ; "Edited 1-Oct-2023 23:30 by rmk") @@ -1609,52 +1610,47 @@ (* ;; "If in the split region, determine and execute the splitting operations for PANE.") + (* ;; "This will not be called if splitting is always invoked from the menu.") + (CL:WHEN (EQ (GETTOBJ TEXTOBJ MOUSEREGION) 'PANE) (* ; "In the split/ops region") - [LET ([WINDOWOPREGION (create REGION - LEFT _ (DIFFERENCE (fetch (TEXTOBJ WRIGHT) of TEXTOBJ) + [LET ((PANEWINDOW (PANEWINDOW PANE)) + (WINDOWOPREGION (create REGION + LEFT _ (DIFFERENCE (PANERIGHT PANE) \TEDIT.OP.WIDTH) BOTTOM _ \TEDIT.OP.BOTTOM WIDTH _ \TEDIT.OP.WIDTH - HEIGHT _ (fetch (REGION HEIGHT) of (WINDOWPROP WINDOWTOSPLIT - 'REGION] + HEIGHT _ (PANEHEIGHT PANE))) Y OPERATION) [while [AND (MOUSESTATE (OR LEFT MIDDLE RIGHT)) - (INSIDE? WINDOWOPREGION (LASTMOUSEX WINDOWTOSPLIT) - (SETQ Y (LASTMOUSEY WINDOWTOSPLIT] do + (INSIDE? WINDOWOPREGION (LASTMOUSEX PANEWINDOW) + (SETQ Y (LASTMOUSEY PANEWINDOW] do (* ;;  "Wait until he lets up on a button, and signal which button was last pushed.") - (BLOCK) - (COND - ((MOUSESTATE MIDDLE) - (CURSOR - \TEDIT.MAKESPLITCURSOR - ) - (SETQ OPERATION - 'SPLIT)) - ((MOUSESTATE LEFT) - (CURSOR - \TEDIT.MOVESPLITCURSOR - ) - (SETQ OPERATION - 'MOVE)) - ((MOUSESTATE RIGHT) - (CURSOR - \TEDIT.UNSPLITCURSOR - ) - (SETQ OPERATION - 'UNSPLIT] + (BLOCK) + (COND + ((MOUSESTATE MIDDLE) + (CURSOR \TEDIT.MAKESPLITCURSOR + ) + (SETQ OPERATION 'SPLIT)) + ((MOUSESTATE LEFT) + (CURSOR \TEDIT.MOVESPLITCURSOR + ) + (SETQ OPERATION 'MOVE)) + ((MOUSESTATE RIGHT) + (CURSOR \TEDIT.UNSPLITCURSOR) + (SETQ OPERATION 'UNSPLIT] (COND - ((INSIDE? WINDOWOPREGION (LASTMOUSEX WINDOWTOSPLIT) - (SETQ Y (LASTMOUSEY WINDOWTOSPLIT))) + ((INSIDE? WINDOWOPREGION (LASTMOUSEX PANEWINDOW) + (SETQ Y (LASTMOUSEY PANEWINDOW))) (CURSOR \TEDIT.SPLITCURSOR) (SELECTQ OPERATION (SPLIT (* ; "Splitting the window") - (\TEDIT.SPLITW WINDOWTOSPLIT Y)) + (\TEDIT.SPLITW PANE Y)) (UNSPLIT (* ; "Rejoining two panes") - (\TEDIT.UNSPLITW WINDOWTOSPLIT)) + (\TEDIT.UNSPLITW PANE)) (MOVE (* ;  "Moving the divider between two panes.") (TEDIT.PROMPTPRINT TEXTOBJ "Split-point moving is not yet implemented" T T @@ -1664,19 +1660,15 @@ T)]) (\TEDIT.SPLITW - [LAMBDA (OLDPANE Y) (* ; "Edited 1-Dec-2024 11:27 by rmk") + [LAMBDA (OLDPANE Y) (* ; "Edited 21-Apr-2025 20:20 by rmk") + (* ; "Edited 20-Apr-2025 15:20 by rmk") + (* ; "Edited 13-Apr-2025 15:21 by rmk") + (* ; "Edited 5-Apr-2025 13:04 by rmk") + (* ; "Edited 1-Dec-2024 11:27 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") - (* ; "Edited 17-Nov-2024 18:59 by rmk") (* ; "Edited 5-Jul-2024 11:37 by rmk") - (* ; "Edited 30-Jun-2024 21:59 by rmk") - (* ; "Edited 28-Jun-2024 21:08 by rmk") - (* ; "Edited 21-Jun-2024 22:47 by rmk") - (* ; "Edited 19-Jun-2024 08:57 by rmk") - (* ; "Edited 17-Jun-2024 09:01 by rmk") - (* ; "Edited 13-Jun-2024 17:34 by rmk") (* ; "Edited 18-May-2024 16:24 by rmk") (* ; "Edited 24-Apr-2024 09:42 by rmk") - (* ; "Edited 5-May-2024 23:13 by rmk") (* ; "Edited 20-Mar-2024 11:01 by rmk") (* ; "Edited 8-Feb-2024 23:38 by rmk") (* ; "Edited 2-Jan-2024 19:21 by rmk") @@ -1690,89 +1682,97 @@ (* ;; "Original code was goofy: after carefully setting things up, attached menus and prompts would move into the main-window space. Setting and reseting the ATTACHEDWINDOWS property seems to fix that.") - (LET* ((WREG (WINDOWPROP OLDPANE 'REGION)) - (TSTREAM (fetch (TEXTWINDOW WTEXTSTREAM) of OLDPANE)) - (TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) - (SEL (TEXTSEL TEXTOBJ)) - (NEXTPANE (GETPANEPROP (PANEPROPS OLDPANE) - NEXTPANE)) - ATTACHEDWINDOWS NEWPANE PROPS NEXTCHAR1) - (CL:UNLESS Y (* ; + (SELECTQ Y + (T (SETQ Y (PANECARETY OLDPANE))) + (NIL (* ;  "Y-position of the split, either supplied or mouse.") - (SETQ Y (LASTMOUSEY OLDPANE))) - (CL:WHEN NEXTPANE (* ; + (SETQ Y (LASTMOUSEY OLDPANE))) + NIL) + (CL:WHEN (AND (FIXP Y) + (IGREATERP Y 0)) + [PROG* ((TSTREAM (PANETEXTSTREAM OLDPANE)) + (TEXTOBJ (FTEXTOBJ TSTREAM)) + (PREG (WINDOWPROP OLDPANE 'REGION)) + (SEL (TEXTSEL TEXTOBJ)) + (NEXTPANE (NEXTPANE OLDPANE)) + ATTACHEDWINDOWS NEWPANE PROPS NEXTCHAR1) + (CL:WHEN (ZEROP (TEXTLEN TEXTOBJ)) + (RETURN)) + (CL:WHEN NEXTPANE (* ;  "If there's already a pane below this one, detach it for the moment.") - (DETACHWINDOW NEXTPANE)) - (SETQ ATTACHEDWINDOWS (WINDOWPROP OLDPANE 'ATTACHEDWINDOWS NIL)) + (DETACHWINDOW NEXTPANE)) + (SETQ ATTACHEDWINDOWS (WINDOWPROP OLDPANE 'ATTACHEDWINDOWS NIL)) - (* ;; "Reshape the original window to form the upper pane. This fixes/displays the current selection in all existing panes") + (* ;; "Reshape the original window to form the upper pane. This fixes/displays the current selection in all existing panes. ") - (SHAPEW OLDPANE (create REGION using WREG BOTTOM _ (IPLUS (fetch BOTTOM of WREG) - Y) - HEIGHT _ (IDIFFERENCE (fetch HEIGHT of WREG) - Y))) + (SHAPEW OLDPANE (create REGION using PREG BOTTOM _ (IPLUS (fetch BOTTOM of PREG) + Y) + HEIGHT _ (IDIFFERENCE (fetch HEIGHT of PREG) + Y))) - (* ;; + (* ;;  "OLDPANE has now been shrunk, redisplayed with new lines, and highlighted. The selection is on.") - (* ;; "Attach the new window, without disturbing the pre-existing attached windows") + (* ;; "Attach the new window, without disturbing the pre-existing attached windows") - (SETQ NEWPANE (CREATEW (create REGION using WREG HEIGHT _ Y))) - (ATTACHWINDOW NEWPANE OLDPANE 'BOTTOM 'JUSTIFY 'MAIN) + (SETQ NEWPANE (CREATEW (create REGION using PREG HEIGHT _ Y))) + (ATTACHWINDOW NEWPANE OLDPANE 'BOTTOM 'JUSTIFY 'MAIN) (* ; "and attach a lower pane.") - [WINDOWPROP OLDPANE 'ATTACHEDWINDOWS (APPEND ATTACHEDWINDOWS (WINDOWPROP OLDPANE - 'ATTACHEDWINDOWS] + [WINDOWPROP OLDPANE 'ATTACHEDWINDOWS (APPEND ATTACHEDWINDOWS (WINDOWPROP OLDPANE + 'ATTACHEDWINDOWS] - (* ;; "[end of attached-window hackery to prevent disturbance while short]") + (* ;; "[end of attached-window hackery to prevent disturbance while short]") - (* ;; "") + (* ;; "") - (WINDOWPROP NEWPANE 'TEDITCREATED T) - (DSPFONT (GETCLOOKS (FGETTOBJ TEXTOBJ CARETLOOKS) - CLFONT) - NEWPANE) (* ; + (WINDOWPROP NEWPANE 'TEDITCREATED T) + (DSPFONT (GETCLOOKS (FGETTOBJ TEXTOBJ CARETLOOKS) + CLFONT) + NEWPANE) (* ;  "Set the font on the display stream to be the current one from CARETLOOKS") - (* ;; - "Not sure if same PROPS as for OLDPANE (which this would inherit from primary window)") + (* ;; "Not sure if same PROPS as for OLDPANE (which this would inherit from primary window)") - [SETQ PROPS (APPEND '(NOTITLE T PROMPTWINDOW DON'T TITLEMENUFN NILL) - (COPY (FGETTOBJ TEXTOBJ EDITPROPS] - (\TEDIT.MINIMAL.WINDOW.SETUP NEWPANE TSTREAM PROPS OLDPANE) + [SETQ PROPS (APPEND '(NOTITLE T PROMPTWINDOW DON'T TITLEMENUFN NILL) + (COPY (FGETTOBJ TEXTOBJ EDITPROPS] + (\TEDIT.LINKPANES OLDPANE (\TEDIT.MINIMAL.WINDOW.SETUP NEWPANE TSTREAM PROPS OLDPANE)) - (* ;; "Insert L1 and LN cells for NEWPANEafter OLDPANE's cells in each selection. The selections were created when the original textsteam was opened.") + (* ;; "Insert L1 and LN cells for NEWPANEafter OLDPANE's cells in each selection. The selections were created when the original textsteam was opened.") - (* ;; "Create the first line of NEWPANE starting at the character just after the last line of the now-shrunken OLDPANE. ") + (* ;; "Create the first line of NEWPANE starting at the character just after the last line of the now-shrunken OLDPANE. ") - [SETQ NEXTCHAR1 (for L (BOTTOM _ (PANEBOTTOM OLDPANE)) inlines (PANEPREFIX OLDPANE) - unless (AND (FGETLD L NEXTLINE) - (IGEQ (FGETLD (FGETLD L NEXTLINE) - YBOT) - BOTTOM)) - do - (* ;; + [SETQ NEXTCHAR1 (for L (BOTTOM _ (PANEBOTTOM OLDPANE)) inlines (PANEPREFIX OLDPANE) + unless (AND (FGETLD L NEXTLINE) + (IGEQ (FGETLD (FGETLD L NEXTLINE) + YBOT) + BOTTOM)) + do + (* ;;  "If we run off the end of the text, start with at least the last line (which may just be EOL's).") - (RETURN (if (AND (IGEQ (FGETLD L LCHAR1) - (TEXTLEN TEXTOBJ)) - (FGETLD L PREVLINE)) - then (FGETLD (FGETLD L PREVLINE) - LCHAR1) - else (FGETLD L LCHARLIM] - (\TEDIT.WINDOW.SETUP NEWPANE TSTREAM PROPS OLDPANE NEXTCHAR1) + (RETURN (if (AND (IGEQ (FGETLD L LCHAR1) + (TEXTLEN TEXTOBJ)) + (FGETLD L PREVLINE)) + then (FGETLD (FGETLD L PREVLINE) + LCHAR1) + else (FGETLD L LCHARLIM] + (\TEDIT.WINDOW.SETUP NEWPANE TSTREAM PROPS OLDPANE NEXTCHAR1) (* ; " OLDPANE covers everything before") - (WINDOWPROP NEWPANE 'PROCESS (WINDOWPROP OLDPANE 'PROCESS)) - (CL:WHEN (GETSEL SEL ONFLG) - (SETSEL SEL ONFLG NIL) (* ; + (WINDOWPROP NEWPANE 'PROCESS (WINDOWPROP OLDPANE 'PROCESS)) + (CL:WHEN (GETSEL SEL ONFLG) + (SETSEL SEL ONFLG NIL) (* ;  "Turn it off, so we can turn it on for NEWPANE") - (\TEDIT.SHOWSEL SEL T TEXTOBJ NEWPANE)) (* ; + (\TEDIT.SHOWSEL SEL T TSTREAM NEWPANE T)) (* ;  "Tell NEWPANE about the old pane below it") - (CL:WHEN NEXTPANE (* ; + (CL:WHEN NEXTPANE (* ;  "There was already a pane below this one. Attach it to the new lower pane.") - (ATTACHWINDOW NEXTPANE NEWPANE 'BOTTOM 'JUSTIFY 'MAIN))]) + (ATTACHWINDOW NEXTPANE NEWPANE 'BOTTOM 'JUSTIFY 'MAIN))])]) (\TEDIT.UNSPLITW - [LAMBDA (PANE) (* ; "Edited 1-Jul-2024 08:50 by rmk") + [LAMBDA (PANE CLOSING) (* ; "Edited 20-Apr-2025 15:34 by rmk") + (* ; "Edited 19-Apr-2025 11:54 by rmk") + (* ; "Edited 13-Apr-2025 13:31 by rmk") + (* ; "Edited 1-Jul-2024 08:50 by rmk") (* ; "Edited 29-Jun-2024 09:00 by rmk") (* ; "Edited 18-May-2024 16:21 by rmk") (* ; "Edited 12-May-2024 20:58 by rmk") @@ -1786,49 +1786,52 @@ (* ; "Edited 2-Sep-2023 16:18 by rmk") (* ; "Edited 18-Apr-2023 23:41 by rmk") (* ; "Edited 6-Nov-2022 00:06 by rmk") - (PROG* ((TSTREAM (fetch (TEXTWINDOW WTEXTSTREAM) of PANE)) - (TEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM))) - (SEL (FGETTOBJ TEXTOBJ SEL)) - PREVPANE NEXTPANE ATTACHEDWINDOWS) - (CL:WHEN (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) - (RETURN)) - (SETQ PREVPANE (GETPANEPROP (PANEPROPS PANE) - PREVPANE)) - (SETQ NEXTPANE (GETPANEPROP (PANEPROPS PANE) - NEXTPANE)) - (FSETTOBJ TEXTOBJ SELPANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) - (for P inpanes TEXTOBJ as SL1 in (GETSEL SEL L1) as SLN in (GETSEL SEL LN) - when (EQ PANE P) do (change (GETSEL SEL L1) - (DREMOVE SL1 DATUM)) - (change (GETSEL SEL LN) - (DREMOVE SLN DATUM)) - (RETURN)) - (WINDOWPROP PANE 'CURSOROUTFN NIL) - (WINDOWPROP PANE 'CURSORMOVEDFN NIL) - (\TEDIT.UNLINKPANE PANE) (* ; "Disconnect") + (PROG ((TEXTOBJ (TEXTOBJ PANE T)) + SEL PREVPANE NEXTPANE ATTACHEDWINDOWS PANEWINDOW PREVPANEWINDOW NEXTPANEWINDOW) + (CL:UNLESS TEXTOBJ (RETURN)) + (CL:WHEN (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) + (TEDIT.PROMPTPRINT TEXTOBJ "Cannot remove the primary window-pane") + (RETURN)) + (SETQ SEL (TEXTSEL TEXTOBJ)) + (SETQ PREVPANE (PREVPANE PANE)) + (SETQ PREVPANEWINDOW PREVPANE) + (SETQ NEXTPANEWINDOW (PANEWINDOW (NEXTPANE PANE))) + (FSETTOBJ TEXTOBJ SELPANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) + (* ; "Go back to the top window") + (for P inpanes TEXTOBJ as SL1 in (GETSEL SEL L1) as SLN in (GETSEL SEL LN) + when (EQ PANE P) do (change (GETSEL SEL L1) + (DREMOVE SL1 DATUM)) + (change (GETSEL SEL LN) + (DREMOVE SLN DATUM)) + (RETURN)) + (SETQ PANEWINDOW (PANEWINDOW PANE)) + (WINDOWPROP PANEWINDOW 'CURSOROUTFN NIL) + (WINDOWPROP PANEWINDOW 'CURSORMOVEDFN NIL) + (DETACHWINDOW PANEWINDOW) + (\TEDIT.UNLINKPANE PANE) (* ; "Disconnect") (* ;; "") - (* ;; "Done with the deleted pane, assign its region to the pane above and redisplay. ") + (* ;; "Done with the deleted PANE, assign its region to the pane above and redisplay. ") (* ;;  "Now rearrange the pane window-attachment linkages. This gives PANE's region to its prior pane.") (* ;; "Original code moved the promptwindow and attached menus down into the region of the main window, shrinking the overall footprint. This code only unsplits the target pane, leaving everything else unchanged.") - (DETACHWINDOW PANE) - (SETQ ATTACHEDWINDOWS (WINDOWPROP PREVPANE 'ATTACHEDWINDOWS NIL)) - [SHAPEW PREVPANE (UNIONREGIONS (WINDOWPROP PANE 'REGION) - (WINDOWPROP PREVPANE 'REGION] - (WINDOWPROP PREVPANE 'ATTACHEDWINDOWS ATTACHEDWINDOWS) - (CL:WHEN NEXTPANE + (SETQ ATTACHEDWINDOWS (WINDOWPROP PREVPANEWINDOW 'ATTACHEDWINDOWS NIL)) + [SHAPEW PREVPANEWINDOW (UNIONREGIONS (WINDOWPROP PANEWINDOW 'REGION) + (WINDOWPROP PREVPANEWINDOW 'REGION] + (WINDOWPROP PREVPANEWINDOW 'ATTACHEDWINDOWS ATTACHEDWINDOWS) + (CL:WHEN NEXTPANEWINDOW - (* ;; + (* ;;  "PANE had a yet lower pane attached to it. Promote it to PANE's position in the attachment chain") - (DETACHWINDOW NEXTPANE) - (ATTACHWINDOW NEXTPANE PREVPANE 'BOTTOM 'JUSTIFY 'MAIN)) - (CLOSEW PANE]) + (DETACHWINDOW NEXTPANEWINDOW) + (ATTACHWINDOW NEXTPANEWINDOW PREVPANEWINDOW 'BOTTOM 'JUSTIFY 'MAIN)) + (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW)) + (CLOSEW PANE]) (\TEDIT.LINKPANES [LAMBDA (PANE1 PANE2) (* ; "Edited 1-Jul-2024 08:39 by rmk") @@ -1870,11 +1873,11 @@ (MOVD? 'NILL 'REGISTER-TYPED-REGION) -(RPAQ? \TEDIT.OP.WIDTH 12) +(RPAQ? \TEDIT.OP.WIDTH 0) -(RPAQ? \TEDIT.OP.BOTTOM 12) +(RPAQ? \TEDIT.OP.BOTTOM 14) -(RPAQ? \TEDIT.LINEREGION.WIDTH 12) +(RPAQ? \TEDIT.LINEREGION.WIDTH 16) (DECLARE%: DONTEVAL@LOAD DOCOPY (DECLARE%: DOEVAL@COMPILE DONTCOPY @@ -2221,7 +2224,8 @@ TITLE)))]) (\TEDIT.LIKELY.FILENAME - [LAMBDA (TSTREAM UNFORMATTED?) (* ; "Edited 14-Mar-2025 11:46 by rmk") + [LAMBDA (TSTREAM UNFORMATTED?) (* ; "Edited 7-Apr-2025 23:13 by rmk") + (* ; "Edited 14-Mar-2025 11:46 by rmk") (* ; "Edited 18-Jan-2024 09:03 by rmk") (* ; "Edited 29-Dec-2023 00:33 by rmk") (* ; "Edited 18-Dec-2023 14:06 by rmk") @@ -2234,9 +2238,10 @@ (* ;; "returns the name of the file associated with this stream if there is one. NIL otherwise. Version numbers suppressed.") (LET* ((TEXTOBJ (TEXTOBJ TSTREAM)) - (DEFAULTEXT (CL:IF UNFORMATTED? - 'TXT - 'TEDIT)) + [DEFAULTEXT (OR (GETTEXTPROP TSTREAM 'DEFAULTPUTEXTENSION) + (CL:IF UNFORMATTED? + 'TXT + 'TEDIT)] (TXTFILE (GETTOBJ TEXTOBJ TXTFILE)) EXT) (CL:WHEN (type? STREAM TXTFILE) @@ -2294,7 +2299,8 @@ (DEFINEQ (TEDIT.DEACTIVATE.WINDOW - [LAMBDA (PANE) (* ; "Edited 14-Mar-2025 16:22 by rmk") + [LAMBDA (PANE) (* ; "Edited 20-Apr-2025 15:10 by rmk") + (* ; "Edited 14-Mar-2025 16:22 by rmk") (* ; "Edited 18-Feb-2025 23:56 by rmk") (* ; "Edited 29-Nov-2024 13:10 by rmk") (* ; "Edited 1-Jul-2024 17:42 by rmk") @@ -2312,18 +2318,23 @@ (* ;; "If the session is or can be finished, deactivate this Tedit window and process, and all attached Tedit menus. This disconnects the window and process from the textstream, which persists. This is not used to unsplit panes. The actual window-closing is done by setting the flag EDITFINISHEDFLG to T and giving control to the edit process. The flag causes the command loop to exit.") - (PROG* [(TSTREAM (TEXTSTREAM PANE T)) - (TEXTOBJ (AND TSTREAM (GETTSTR TSTREAM TEXTOBJ] + (PROG* ((TSTREAM (TEXTSTREAM PANE T)) + (TEXTOBJ (AND TSTREAM (FTEXTOBJ TSTREAM))) + (PANEWINDOW (PANEWINDOW PANE)) + PROC) (CL:UNLESS TEXTOBJ (* ;  "Return NIL if not an editing window (rather than error?)") (RETURN)) - (TEXTOBJ! TEXTOBJ) (* ;; "Return DON'T to signal (to CLOSEW) that the window shouldn't be closed. if previously quit, the window is closed already, and would be reopened to reclose it.") (CL:WHEN (\TEDIT.FINISHEDIT? TSTREAM T) (RETURN 'DON'T)) - (CL:WHEN (AND (GETTOBJ TEXTOBJ PROMPTWINDOW) + (CL:UNLESS (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) + (* ; "Must be a lower split window") + (\TEDIT.UNSPLITW PANE) + (RETURN)) + (CL:WHEN (AND (FGETTOBJ TEXTOBJ PROMPTWINDOW) (OPENWP (GETTOBJ TEXTOBJ PROMPTWINDOW))) (CLEARW (GETTOBJ TEXTOBJ PROMPTWINDOW))) (\TEDIT.SETCARET (TEXTSEL TEXTOBJ) @@ -2338,28 +2349,31 @@  "Reset the window's title to a known 'inactive' value, in case somebody else also has the window.") (\TEDIT.WINDOW.TITLE TEXTOBJ NIL "Edit Window [Inactive]")) - (for PANE backpanes TEXTOBJ do (\TEDIT.UNSPLITW PANE)) - (SETTOBJ TEXTOBJ PRIMARYPANE NIL) - (CL:WHEN (type? STREAM (GETTOBJ TEXTOBJ TXTFILE)) (* ; + + (* ;; "Detach and close all panes") + + (\TEDIT.CLOSEPANES TSTREAM) + (CL:WHEN (type? STREAM (FGETTOBJ TEXTOBJ TXTFILE))(* ;  "Close the file that this window was open on.") - (CL:UNLESS (fetch (TEXTWINDOW CLOSINGFILE) of PANE) - (replace (TEXTWINDOW CLOSINGFILE) of PANE with T) - (CLOSEF? (GETTOBJ TEXTOBJ TXTFILE)))) - (WINDOWPROP PANE 'PROCESS.EXITFN NIL) - (WINDOWPROP PANE 'PROCESS.IDLEFN NIL) - (WINDOWPROP PANE 'BUTTONEVENTFN (FUNCTION TOTOPW))(* ; "And the button functions") - (WINDOWPROP PANE 'RIGHTBUTTONFN (FUNCTION DOWINDOWCOM)) - (WINDOWDELPROP PANE 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW)) - (* ; "To avoid a loop") - (WINDOWPROP PANE 'SCROLLFN NIL) - (WINDOWPROP PANE 'AFTERMOVEFN NIL) - (WINDOWDELPROP PANE 'RESHAPEFN (FUNCTION \TEDIT.RESHAPEFN)) - (\TEDIT.INTERRUPT.SETUP (WINDOWPROP PANE 'PROCESS) + (CL:UNLESS (fetch (TEXTWINDOW CLOSINGFILE) of PANEWINDOW) + (replace (TEXTWINDOW CLOSINGFILE) of PANEWINDOW with T) + (CLOSEF? (FGETTOBJ TEXTOBJ TXTFILE)))) + (WINDOWPROP PANEWINDOW 'PROCESS.EXITFN NIL) + (WINDOWPROP PANEWINDOW 'PROCESS.IDLEFN NIL) + (WINDOWPROP PANEWINDOW 'BUTTONEVENTFN (FUNCTION TOTOPW)) + (* ; "And the button functions") + (WINDOWPROP PANEWINDOW 'RIGHTBUTTONFN (FUNCTION DOWINDOWCOM)) + (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW)) + (* ; "Remove to avoid a loop") + (WINDOWPROP PANEWINDOW 'SCROLLFN NIL) + (WINDOWPROP PANEWINDOW 'AFTERMOVEFN NIL) + (WINDOWDELPROP PANEWINDOW 'RESHAPEFN (FUNCTION \TEDIT.RESHAPEFN)) + (\TEDIT.INTERRUPT.SETUP (WINDOWPROP PANEWINDOW 'PROCESS) T) (* ; "Restore any disarmed interrupts.") (for MENUW MTEXTOBJ in (ATTACHEDWINDOWS PANE) when (AND (SETQ MTEXTOBJ (TEXTOBJ MENUW T)) (FGETTOBJ MTEXTOBJ MENUFLG)) do (* ; "Detach all the TEDITMENU windows.") - (SETTOBJ MTEXTOBJ EDITFINISHEDFLG T) (* ; + (FSETTOBJ MTEXTOBJ EDITFINISHEDFLG T) (* ;  "Mark it finished so it closes itself") (WINDOWPROP MENUW 'TEDITMENU NIL) (* ;  "And mark it no longer a menu window") @@ -2368,13 +2382,15 @@ (DISMISS 300)) (* ; "This closes up the other menus") (GIVE.TTY.PROCESS PANE) (* ; "Now kill this one") (DISMISS 300) - (WINDOWPROP PANE 'CURSOROUTFN NIL) - (WINDOWPROP PANE 'CURSORMOVEDFN NIL) + (WINDOWPROP PANEWINDOW 'CURSOROUTFN NIL) + (WINDOWPROP PANEWINDOW 'CURSORMOVEDFN NIL) (\TEDIT.UNLINKPANE PANE) (* ; "Disconnect") (replace (TEXTWINDOW WTEXTSTREAM) of PANE with NIL]) (\TEDIT.RESHAPEFN - [LAMBDA (PANE BITS OLDREGION) (* ; "Edited 30-Nov-2024 13:30 by rmk") + [LAMBDA (PANE BITS OLDREGION) (* ; "Edited 20-Apr-2025 12:55 by rmk") + (* ; "Edited 18-Apr-2025 15:03 by rmk") + (* ; "Edited 30-Nov-2024 13:30 by rmk") (* ; "Edited 4-Nov-2024 17:44 by rmk") (* ; "Edited 6-Jul-2024 17:00 by rmk") (* ; "Edited 28-Jun-2024 15:14 by rmk") @@ -2382,8 +2398,7 @@ (* ;;  "This tries to display the current top line at the same position relative to the top of PANE.")  (* ; "Edited 25-Jun-2024 15:53 by rmk") - (LET* ((TEXTOBJ (GETTSTR (fetch (TEXTWINDOW WTEXTSTREAM) of PANE) - TEXTOBJ)) + (LET* ((TEXTOBJ (PANETEXTOBJ PANE)) (PREG (DSPCLIPPINGREGION NIL PANE)) (PANEPREFIX (PANEPREFIX PANE)) (PANEPROPS (PANEPROPS PANE))) @@ -2398,9 +2413,6 @@ (SETQ PANEBOTTOM (fetch (REGION BOTTOM) of PREG)) (SETQ PANETOP (fetch (REGION TOP) of PREG)) (SETQ PANEREGION PREG)) - (WITH TEXTOBJ TEXTOBJ (SETQ WRIGHT (fetch (REGION WIDTH) of PREG)) - (SETQ WLEFT (fetch (REGION LEFT) of PREG)) - (SETQ WBOTTOM (fetch (REGION BOTTOM) of PREG))) [SETYBOT PANEPREFIX (IPLUS (FGETLD PANEPREFIX YBOT) (IDIFFERENCE (PANEHEIGHT PANE) (fetch (REGION HEIGHT) of OLDREGION] @@ -2415,12 +2427,51 @@ (* ;; "Ignores REGION, repaints all the panes") (\TEDIT.FILL.PANES WINDOW]) + +(\TEDIT.CLOSEPANES + [LAMBDA (TSTREAM) (* ; "Edited 20-Apr-2025 13:46 by rmk") + + (* ;; "This closes the panes associated with TSTREAM. It also breaks the link from TSTREAM to its primary pane and additional split panes, but otherwise leaves the document alone. Someone with a pointer to the closed window can see a window with its region but otherwise is clean. ") + + (* ;; "It would be nice to be able to just close the window and leave alone the pointers from the window to the stream and the stream to the windows. But then neither would ever be collected.") + + (* ;; "So the window in its pre-split size is let loose, the stream remains until the user drops all pointers to it. But holding on by the TEXTOBJ won't work--the user should never rely on that.") + + (* ;; "") + + (* ;; "When panes-as-windows are replaced by the paneprops data that points to the window, we can break the link by smashing out the window, but keep all the other information--enough to recreate a new window-datum with the same look as the original. In that case we would keep the split regions too and recreate them") + + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + REGIONS) + (SETQ REGIONS (for PANE PANEWINDOW inpanes TEXTOBJ eachtime (SETQ PANEWINDOW (PANEWINDOW + PANE)) + collect + + (* ;; + "Avoid closing loop through TEDIT.DEACTIVATE.WINDOW, and detach") + + (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW) + ) + (WINDOWREGION PANEWINDOW))) + + (* ;; "Save the overall shape of the unsplit primary window as the SAVE-TYPED-REGION property, for subsequent reuse of that typed-region. ") + + (WINDOWPROP (PANEWINDOW (FGETTOBJ TEXTOBJ PRIMARYPANE)) + 'SAVED-TYPED-REGION + (APPLY (FUNCTION UNIONREGIONS) + REGIONS)) + (for PANE inpanes TEXTOBJ do (CLOSEW (PANEWINDOW PANE)) + (replace (TEXTWINDOW WTEXTSTREAM) of (PANEWINDOW PANE) + with NIL)) + (FSETTOBJ TEXTOBJ PRIMARYPANE NIL]) ) (DEFINEQ (\TEDIT.SCROLLFN [LAMBDA (PANE DX DY) + (* ;; "Edited 18-Apr-2025 15:04 by rmk") + (* ;; "Edited 29-Apr-2024 15:04 by rmk") (* ;; "Edited 27-Apr-2024 11:31 by rmk") @@ -2439,8 +2490,8 @@  "Edited 18-Feb-2022 14:53 by rmk: Repaint after scrolling for panes that are partially off-screen") (TOTOPW PANE) - (PROG* [(TSTREAM (fetch (TEXTWINDOW WTEXTSTREAM) of PANE)) - (TEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM] + (PROG* ((TSTREAM (PANETEXTSTREAM PANE)) + (TEXTOBJ (FTEXTOBJ TSTREAM))) (if (ZEROP (FGETTOBJ TEXTOBJ TEXTLEN)) then (* ;; "Don't scroll a zero-length file") @@ -2564,7 +2615,8 @@ (\TEDIT.SCROLLCH.TOP TSTREAM PANE (FGETLD TOPLINE LCHARLAST]) (\TEDIT.SCROLLUP - [LAMBDA (TSTREAM PANE DY) (* ; "Edited 1-Feb-2025 10:20 by rmk") + [LAMBDA (TSTREAM PANE DY) (* ; "Edited 20-Apr-2025 23:36 by rmk") + (* ; "Edited 1-Feb-2025 10:20 by rmk") (* ; "Edited 1-Dec-2024 11:32 by rmk") (* ; "Edited 29-Nov-2024 09:14 by rmk") (* ; "Edited 22-Nov-2024 17:33 by rmk") @@ -2635,7 +2687,7 @@ (\TEDIT.SETPANE.TOPLINE PANE NEWTOPLINE NEWPANEYBOT) (\TEDIT.SHIFTLINES (PANEPREFIX PANE) - PANE TEXTOBJ (\TEDIT.BITMAPLINES PANE NEWTOPLINE) + PANE TSTREAM (\TEDIT.BITMAPLINES PANE NEWTOPLINE) T) (\TEDIT.SETCARET (TEXTSEL TEXTOBJ) PANE TEXTOBJ 'ON]) @@ -2670,7 +2722,8 @@ (RETURN (IPLUS NEWBOT (FGETLD NEWTOPLINE LHEIGHT]) (\TEDIT.SCROLLDOWN - [LAMBDA (TSTREAM PANE DY) (* ; "Edited 1-Feb-2025 10:20 by rmk") + [LAMBDA (TSTREAM PANE DY) (* ; "Edited 20-Apr-2025 23:37 by rmk") + (* ; "Edited 1-Feb-2025 10:20 by rmk") (* ; "Edited 1-Dec-2024 20:46 by rmk") (* ; "Edited 29-Nov-2024 09:14 by rmk") (* ; "Edited 22-Nov-2024 17:33 by rmk") @@ -2769,7 +2822,7 @@ (* ;; "All needed lines have been constructed and linked, although there may still be some unneeded lines at the bottom. ") (\TEDIT.SHIFTLINES (PANEPREFIX PANE) - PANE TEXTOBJ (\TEDIT.BITMAPLINES PANE OLDTOPLINE) + PANE TSTREAM (\TEDIT.BITMAPLINES PANE OLDTOPLINE) T) (\TEDIT.SETCARET (TEXTSEL TEXTOBJ) PANE TEXTOBJ 'ON]) @@ -2932,19 +2985,20 @@ ]))]) (\TEDIT.SETPANE.TOPLINE - [LAMBDA (PANE TOPLINE PREFIXYBOT) (* ; "Edited 7-Nov-2024 08:50 by rmk") + [LAMBDA (PANE TOPLINE PREFIXYBOT) (* ; "Edited 18-Apr-2025 23:38 by rmk") + (* ; "Edited 7-Nov-2024 08:50 by rmk") (* ; "Edited 4-Nov-2024 23:05 by rmk") - - (* ;; "Install TOPLINE as the PANETOPLINE of PANE, setting PANE's YBOT to PREFIXYBOT if given or the YTOP of TOPLINE. In the PREFIXYBOT case, the pane will be inconsistent until either the line or the pane is adjusted. But before that, the difference between the PANE YBOT and TOPLINE YTOP may be useful.") - - (LET ((PREFIX (PANEPREFIX PANE))) - (SETLD PREFIX YBOT (OR PREFIXYBOT (FGETLD TOPLINE YTOP))) - (LINKLD PREFIX TOPLINE) - (\TEDIT.PREFIX.LCHARLIM PANE (SUB1 (FGETLD TOPLINE LCHAR1))) - TOPLINE]) + (CL:WHEN TOPLINE + (LET ((PREFIX (PANEPREFIX PANE))) + (SETLD PREFIX YBOT (OR PREFIXYBOT (FGETLD TOPLINE YTOP))) + (LINKLD PREFIX TOPLINE) + (FSETLD PREFIX LCHARLIM (FGETLD TOPLINE LCHAR1)) + TOPLINE))]) (\TEDIT.SHIFTLINES - [LAMBDA (PREVLINE PANE TEXTOBJ BITMAPLINES SCROLLING) (* ; "Edited 1-Feb-2025 10:22 by rmk") + [LAMBDA (PREVLINE PANE TSTREAM BITMAPLINES SCROLLING) (* ; "Edited 21-Apr-2025 12:02 by rmk") + (* ; "Edited 5-Apr-2025 11:30 by rmk") + (* ; "Edited 1-Feb-2025 10:22 by rmk") (* ; "Edited 7-Jan-2025 11:54 by rmk") (* ; "Edited 17-Dec-2024 23:40 by rmk") (* ; "Edited 3-Dec-2024 16:08 by rmk") @@ -2959,123 +3013,125 @@ (* ;; "Take down the caret, but importantly, don't take down the selection--that would wipe out the bitmap-highlighting that we want to translate.") - (LET ((SEL (TEXTSEL TEXTOBJ)) - LASTVISIBLE) - (\TEDIT.SETCARET SEL PANE TEXTOBJ 'OFF) - (if BITMAPLINES - then [LET* ((NEXTLINE (FGETLD PREVLINE NEXTLINE)) - (VLEFT (\TEDIT.ONSCREEN? PANE 'LEFT)) - (PBOTTOM (PANEBOTTOM PANE)) - (BMTOPL (CAR BITMAPLINES)) - (BMTOPY (FGETLD BMTOPL YTOP)) - (BMBOTL (CDR BITMAPLINES)) - (BMBOTY (FGETLD BMBOTL YBOT)) - DELTA) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (SEL (TEXTSEL TEXTOBJ)) + LASTVISIBLE) + (\TEDIT.SETCARET SEL PANE TEXTOBJ 'OFF) + (if BITMAPLINES + then [LET* ((NEXTLINE (FGETLD PREVLINE NEXTLINE)) + (VLEFT (\TEDIT.ONSCREEN? PANE 'LEFT)) + (PBOTTOM (PANEBOTTOM PANE)) + (BMTOPL (CAR BITMAPLINES)) + (BMTOPY (FGETLD BMTOPL YTOP)) + (BMBOTL (CDR BITMAPLINES)) + (BMBOTY (FGETLD BMBOTL YBOT)) + DELTA) (* ;;; " REPOSITION all lines in the chain properly with respect to PREVLINE. ") - [for L (Y _ (FGETLD PREVLINE YBOT)) inlines NEXTLINE - do (SETYTOP L Y) - (SETQ Y (IDIFFERENCE Y (FGETLD L LHEIGHT] + [for L (Y _ (FGETLD PREVLINE YBOT)) inlines NEXTLINE + do (SETYTOP L Y) + (SETQ Y (IDIFFERENCE Y (FGETLD L LHEIGHT] (* ;;; "TRANSLATE the bitmap to be consistent with its new line positions. This is done before any display operations, to be sure that the bitmap isn't corrupted.") - (SETQ DELTA (IDIFFERENCE (FGETLD BMTOPL YTOP) - BMTOPY)) - (BITBLT PANE VLEFT BMBOTY PANE VLEFT (IPLUS BMBOTY DELTA) - (PANEWIDTH PANE) - (IDIFFERENCE BMTOPY BMBOTY) - 'INPUT - 'REPLACE) - (SETQ BMTOPY (FGETLD BMTOPL YTOP)) + (SETQ DELTA (IDIFFERENCE (FGETLD BMTOPL YTOP) + BMTOPY)) + (BITBLT PANE VLEFT BMBOTY PANE VLEFT (IPLUS BMBOTY DELTA) + (PANEWIDTH PANE) + (IDIFFERENCE BMTOPY BMBOTY) + 'INPUT + 'REPLACE) + (SETQ BMTOPY (FGETLD BMTOPL YTOP)) (* ;;; "Display any lines ABOVE the top of the translated bitmap, presumably for scroll down and insertion. Lines exist and have been formatted and positioned, but not yet displayed.") - (for L inlines NEXTLINE while (IGEQ (FGETLD L YBOT) - BMTOPY) - do (\TEDIT.DISPLAYLINE TEXTOBJ L PANE)) + (for L inlines NEXTLINE while (IGEQ (FGETLD L YBOT) + BMTOPY) + do (\TEDIT.DISPLAYLINE TSTREAM L PANE)) (* ;;; "Deal with lines BELOW the bitmap. First. clear to the bottom--important to clear before displaying") - (for L backlines BMBOTL while (AND (ILESSP (FGETLD BMBOTL YBOT) - PBOTTOM) - (NOT (\TEDIT.SHOW.AT.BOTTOMP BMBOTL PANE)) - ) do (SETQ BMBOTL (FGETLD BMBOTL PREVLINE) - )) - (\TEDIT.CLEARPANE.BELOW.LINE BMBOTL PANE TEXTOBJ) - [SETQ LASTVISIBLE (if (EQ BMBOTL (PANESUFFIX PANE)) - then (PANEBOTTOMLINE PANE) - elseif (IGEQ (FGETLD BMBOTL YBOT) - PBOTTOM) - then - (* ;; + (for L backlines BMBOTL while (AND (ILESSP (FGETLD BMBOTL YBOT) + PBOTTOM) + (NOT (\TEDIT.SHOW.AT.BOTTOMP BMBOTL PANE) + )) do (SETQ BMBOTL (FGETLD BMBOTL + PREVLINE)) + ) + (\TEDIT.CLEARPANE.BELOW.LINE BMBOTL PANE TEXTOBJ) + [SETQ LASTVISIBLE (if (EQ BMBOTL (PANESUFFIX PANE)) + then (PANEBOTTOMLINE PANE) + elseif (IGEQ (FGETLD BMBOTL YBOT) + PBOTTOM) + then + (* ;;  "Bitmap didn't fill the pane. Maybe more lines needed below (scroll up or deletion).") - (\TEDIT.LINES.BELOW BMBOTL PANE TEXTOBJ) - else - (* ;; + (\TEDIT.LINES.BELOW BMBOTL PANE TSTREAM) + else + (* ;;  "Bit map went below the bottom, back up to the previous visible line. (scroll down or insertion)") - (find L backlines BMBOTL - suchthat (IGREATERP (FGETLD L YBOT) - PBOTTOM] - (\TEDIT.SUFFIXLINE.CREATE PANE TEXTOBJ LASTVISIBLE) + (find L backlines BMBOTL + suchthat (IGREATERP (FGETLD L YBOT) + PBOTTOM] + (\TEDIT.SUFFIXLINE.CREATE PANE TSTREAM LASTVISIBLE) - (* ;; "Lines are now properly linked, positioned, and displayed.") + (* ;; "Lines are now properly linked, positioned, and displayed.") (* ;;; "") (* ;;; "The part of the current SELECTION within the bitmap retains its correct highlighting, but highlighting has to be applied to lines above or below.") - (\TEDIT.FIXSEL SEL TEXTOBJ NIL PANE) - (CL:WHEN (AND (FGETSEL SEL ONFLG) - (NEQ 0 (FGETSEL SEL DCH))) + (\TEDIT.FIXSEL SEL TSTREAM PANE) + (CL:WHEN (AND (FGETSEL SEL ONFLG) + (NEQ 0 (FGETSEL SEL DCH))) - (* ;; "Restore the highlighting for selected lines that are above or below the bitmap. The lines within the bitmap retained their proper highlighting. Above is first.") + (* ;; "Restore the highlighting for selected lines that are above or below the bitmap. The lines within the bitmap retained their proper highlighting. Above is first.") - (for L (L1 _ (\TEDIT.SEL.L1 SEL PANE TEXTOBJ)) - (SEL1 _ (FGETSEL SEL CH#)) - (SELN _ (FGETSEL SEL CHLAST)) backlines (FGETLD BMTOPL PREVLINE) - first (CL:UNLESS (AND L1 (NEQ L1 BMTOPL) - (IGREATERP (FGETLD L1 YTOP) - BMTOPY)) + (for L (L1 _ (\TEDIT.SEL.L1 SEL PANE TEXTOBJ)) + (SEL1 _ (FGETSEL SEL CH#)) + (SELN _ (FGETSEL SEL CHLAST)) backlines (FGETLD BMTOPL PREVLINE) + first (CL:UNLESS (AND L1 (NEQ L1 BMTOPL) + (IGREATERP (FGETLD L1 YTOP) + BMTOPY)) - (* ;; "Selection's L1 is below the bitmap's new top.") + (* ;; "Selection's L1 is below the bitmap's new top.") - (RETURN)) when (FLINESELECTEDP L SEL1 SELN) - do (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L1 L PANE SEL) - (RETURN) repeatuntil (EQ L L1)) - (for L (LN _ (\TEDIT.SEL.LN SEL PANE TEXTOBJ)) - (SEL1 _ (FGETSEL SEL CH#)) - (SELN _ (FGETSEL SEL CHLAST)) inlines (FGETLD BMBOTL NEXTLINE) - first (CL:UNLESS (AND LN (ILESSP (FGETLD LN YBOT) - (IPLUS BMBOTY DELTA))) + (RETURN)) when (FLINESELECTEDP L SEL1 SELN) + do (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L1 L PANE SEL) + (RETURN) repeatuntil (EQ L L1)) + (for L (LN _ (\TEDIT.SEL.LN SEL PANE TEXTOBJ)) + (SEL1 _ (FGETSEL SEL CH#)) + (SELN _ (FGETSEL SEL CHLAST)) inlines (FGETLD BMBOTL NEXTLINE) + first (CL:UNLESS (AND LN (ILESSP (FGETLD LN YBOT) + (IPLUS BMBOTY DELTA))) - (* ;; "Selection's LN is above the bitmap's new bottom") + (* ;; "Selection's LN is above the bitmap's new bottom") - (RETURN)) when (FLINESELECTEDP L SEL1 SELN) - do (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L LN PANE SEL) - (RETURN) repeatuntil (EQ L LN)))] - else - (* ;; "No useful bitmap bits, just create/display lines below PREVLINE") + (RETURN)) when (FLINESELECTEDP L SEL1 SELN) + do (\TEDIT.SHOWSEL.HILIGHT TEXTOBJ L LN PANE SEL) + (RETURN) repeatuntil (EQ L LN)))] + else + (* ;; "No useful bitmap bits, just create/display lines below PREVLINE") - (\TEDIT.CLEARPANE.BELOW.LINE PREVLINE PANE TEXTOBJ) - (SETQ LASTVISIBLE (\TEDIT.LINES.BELOW PREVLINE PANE TEXTOBJ)) - (\TEDIT.SUFFIXLINE.CREATE PANE TEXTOBJ LASTVISIBLE) - (\TEDIT.FIXSEL NIL TEXTOBJ NIL PANE)) - (CL:WHEN SCROLLING + (\TEDIT.CLEARPANE.BELOW.LINE PREVLINE PANE TEXTOBJ) + (SETQ LASTVISIBLE (\TEDIT.LINES.BELOW PREVLINE PANE TSTREAM)) + (\TEDIT.SUFFIXLINE.CREATE PANE TSTREAM LASTVISIBLE) + (\TEDIT.FIXSEL NIL TSTREAM PANE)) + (CL:WHEN SCROLLING - (* ;; "If scrolling up or down, we brute force wipe out whatever is above PREVLINE. If not scrolling, those are the lines from the top to lastvalid that are preserved.") + (* ;; "If scrolling up or down, we brute force wipe out whatever is above PREVLINE. If not scrolling, those are the lines from the top to lastvalid that are preserved.") - (BLTSHADE WHITESHADE PANE (PANELEFT PANE) - (FGETLD PREVLINE YBOT) - (PANEWIDTH PANE) - (PANEHEIGHT PANE) - 'REPLACE)) + (BLTSHADE WHITESHADE PANE (PANELEFT PANE) + (FGETLD PREVLINE YBOT) + (PANEWIDTH PANE) + (PANEHEIGHT PANE) + 'REPLACE)) - (* ;; "Caller is responsible for turning the caret back on") + (* ;; "Caller is responsible for turning the caret back on") - (\TEDIT.SET.WINDOW.EXTENT TEXTOBJ PANE]) + (\TEDIT.SET.WINDOW.EXTENT TEXTOBJ PANE]) ) (DEFINEQ @@ -3282,16 +3338,16 @@ (\TEDIT.INTERRUPT.SETUP NEWPROCESS]) (\TEDIT.PROCEXITFN - [LAMBDA (THISP NEWP) (* ; "Edited 27-Mar-2024 15:23 by rmk") + [LAMBDA (THISP NEWP) (* ; "Edited 18-Apr-2025 15:15 by rmk") + (* ; "Edited 27-Mar-2024 15:23 by rmk") (* jds " 5-Apr-84 10:40") (* ;; "Re-arm any interrupts that TEdit turned off, so the poor user has them available in other parts of the system.") - (* Re-arm any interrupts that TEdit turned off, so the poor user has them - available in other parts of the system.) + (* ;; "Re-arm any interrupts that TEdit turned off, so the poor user has them available in other parts of the system.") - (AND (fetch (TEXTWINDOW WTEXTSTREAM) of (PROCESSPROP THISP 'WINDOW)) - (\TEDIT.INTERRUPT.SETUP THISP T]) + (CL:WHEN (PANETEXTSTREAM (PROCESSPROP THISP 'WINDOW)) + (\TEDIT.INTERRUPT.SETUP THISP T]) ) (RPAQ? \CARETRATE 333) @@ -3407,7 +3463,8 @@ TSTREAM))]) (\TEDIT.SETCARET - [LAMBDA (SEL PANE TEXTOBJ DISPOSITION) (* ; "Edited 1-Dec-2024 11:51 by rmk") + [LAMBDA (SEL PANE TEXTOBJ DISPOSITION) (* ; "Edited 10-Apr-2025 21:14 by rmk") + (* ; "Edited 1-Dec-2024 11:51 by rmk") (* ; "Edited 22-Nov-2024 11:39 by rmk") (* ; "Edited 20-Nov-2024 12:37 by rmk") (* ; "Edited 17-Nov-2024 19:01 by rmk") @@ -3458,7 +3515,7 @@ (RETURN)) (if LINE then (SETQ Y (FGETLD LINE YBASE)) - (if (AND (ILESSP Y (fetch (REGION PTOP) of (PANEREGION PANE))) + (if (AND (ILEQ Y (PANETOP PANE)) (IGEQ (FGETLD LINE YBOT) (PANEBOTTOM PANE))) then (* ; @@ -3491,214 +3548,13 @@ -(* ; "Menu interfacing") - -(DEFINEQ +(* ; "Background menu") -(TEDIT.ADD.MENUITEM - [LAMBDA (MENU ITEM) (* jds " 9-AUG-83 09:55") - (* Adds ITEM to the MENU, and updates - all the stuff.) - (PROG (OLDITM) - (COND - ((MEMBER ITEM (fetch ITEMS of MENU)) (* Do nothing--it's already in the - menu) - ) - ([AND (LISTP ITEM) - (SETQ OLDITM (SASSOC (CAR ITEM) - (fetch ITEMS of MENU] (* The menu item exists. - Make sure the thing behind it is - right.) - (RPLACD OLDITM (CDR ITEM))) - (T (* It isn't in the menu, so go ahead - and add it.) - (replace ITEMS of MENU with (NCONC1 (fetch ITEMS of MENU) - ITEM)) - (COND - ((EQ (fetch MENUCOLUMNS of MENU) - 1) (* If there is only one column, force - a re-figuring of the number of rows) - (replace MENUROWS of MENU with NIL)) - ((EQ (fetch MENUROWS of MENU) - 1) (* There's only one row, so recompute - %# of columns.) - (replace MENUCOLUMNS of MENU with NIL))) - (replace ITEMWIDTH of MENU with 10000) - (replace ITEMHEIGHT of MENU with 10000) - (replace IMAGE of MENU with NIL) (* Force it to create a new menu - image.) - (UPDATE/MENU/IMAGE MENU]) - -(TEDIT.DEFAULT.MENUFN - [LAMBDA (PANE) (* ; "Edited 17-Mar-2025 17:28 by rmk") - (* ; "Edited 14-Mar-2025 16:40 by rmk") - (* ; "Edited 12-Feb-2025 16:26 by rmk") - (* ; "Edited 9-Feb-2025 21:28 by rmk") - (* ; "Edited 7-Jan-2025 23:46 by rmk") - (* ; "Edited 27-Jul-2024 20:24 by rmk") - (* ; "Edited 30-Jun-2024 12:38 by rmk") - (* ; "Edited 25-Jun-2024 11:59 by rmk") - (* ; "Edited 18-May-2024 16:50 by rmk") - (* ; "Edited 12-May-2024 21:38 by rmk") - (* ; "Edited 20-Mar-2024 11:02 by rmk") - (* ; "Edited 24-Apr-2024 09:47 by rmk") - (* ; "Edited 15-Mar-2024 18:35 by rmk") - (* ; "Edited 9-Mar-2024 11:35 by rmk") - (* ; "Edited 29-Feb-2024 17:02 by rmk") - (* ; "Edited 27-Feb-2024 07:55 by rmk") - (* ; "Edited 22-Sep-2023 20:14 by rmk") - (* ; "Edited 19-Sep-2023 11:55 by rmk") - (* ; "Edited 16-Sep-2023 22:16 by rmk") - (* ; "Edited 6-May-2023 17:28 by rmk") - (* ; "Edited 30-May-91 23:35 by jds") - - (* ;; - "Default MENU Fn for editor windows--displays a menu of items & acts on the commands received.") - - (PROG* ((TSTREAM (TEXTSTREAM PANE)) - (TEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM))) - (WMENU (WINDOWPROP PANE 'TEDIT.MENU)) - THISMENU ITEM) - (CL:WHEN (FGETTOBJ TEXTOBJ EDITOPACTIVE) - - (* ;; "We're busy doing something, tell him to wait. Unfortunately, this string will overwrite whatever may be in the Tedit promptwindow (e.g. a GETINPUT calling TTYINPROMPTFORWORD for a meta-F command), obscuring what the user has already typed. Maybe an interface that tests to see if the promptwindow is in use, and enlarges it with an extra line above the current type-in?") - - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (CL:IF (EQ T (FGETTOBJ TEXTOBJ EDITOPACTIVE)) - "Edit" - (FGETTOBJ TEXTOBJ EDITOPACTIVE)) - " operation in progress; please wait") - T) - (RETURN NIL)) - (SETQ THISMENU (if WMENU - elseif (SETQ WMENU (WINDOWPROP PANE 'TEDIT.MENU.COMMANDS)) - then (PROG1 (SETQ WMENU (\TEDIT.CREATEMENU WMENU)) - (WINDOWPROP PANE 'TEDIT.MENU WMENU)) - else TEDIT.DEFAULT.MENU)) - (SETQ ITEM (CAR (MENU THISMENU))) - (ERSETQ (RESETLST - [SELECTQ ITEM - ((Put |Put Formatted Document|) - (TEDIT.PUT TEXTOBJ NIL NIL (GETTEXTPROP TEXTOBJ 'CLEARPUT))) - (Plain-Text (TEDIT.PUT TEXTOBJ NIL NIL T)) - ((Get |Get Formatted Document|) (* ; - "Get a new file (overwriting the one being edited.)") - (TEDIT.GET TEXTOBJ NIL (GETTEXTPROP TEXTOBJ 'CLEARGET))) - (Unformatted% Get - (TEDIT.GET TEXTOBJ NIL T)) - (Include (* ; "Insert a file where the caret is") - (TEDIT.INCLUDE TEXTOBJ)) - (Quit (* ; "OK to stop this session?") - (\TEDIT.FINISHEDIT? TEXTOBJ)) - (Substitute (* ; "Search-and-replace") - (RESETLST - (RESETSAVE (CURSOR WAITINGCURSOR)) - (TEDIT.SUBSTITUTE TEXTOBJ))) - (Find (* ; - "Case sensitive search, with * and # wildcards") - (\TEDIT.KEY.FIND TSTREAM)) - (Looks (* ; - "He wants to set the font for the current selection") - (\TEDIT.LOOKS TEXTOBJ)) - (Hardcopy (* ; "Print this document") - (TEDIT.HARDCOPY TEXTOBJ)) - (Expanded% Menu (* ; - "Open the expanded operations menu.") - (\TEDIT.EXPANDEDMENU.START TEXTOBJ)) - (Character% Looks (* ; - "Open the menu for setting character looks") - (\TEDIT.CHARMENU.START TEXTOBJ)) - (Paragraph% Formatting (* ; - "Open the paragraph formatting menu") - (\TEDIT.PARAMENU.START TEXTOBJ)) - (Page% Layout (* ; "Open the page-layout menu") - (\TEDIT.MENU.START (\TEDIT.PAGEMENU.CREATE) - TSTREAM "Page Layout Menu" 150 'PAGE)) - (Buttons (TEDIT.BUTTONS.BUILD)) - (CL:WHEN ITEM (* ; - "Apply a user-supplied function to the text stream") - [RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ T) - '(PROGN (\TEDIT.MARKINACTIVE OLDVALUE] - (APPLY* ITEM (TEXTSTREAM PANE)))])]) - -(TEDIT.REMOVE.MENUITEM - [LAMBDA (MENU ITEM) (* gbn "26-Apr-84 04:06") - (PROG (ITEMLIST) - [COND - ((OR (LITATOM ITEM) - (STRINGP ITEM)) - (for X in (fetch ITEMS of MENU) do (COND - ((AND (LISTP X) - (EQUAL (CAR X) - ITEM)) - (RETURN (SETQ ITEM X] - (RETURN (COND - ((MEMBER ITEM (SETQ ITEMLIST (fetch ITEMS of MENU))) - (replace ITEMS of MENU with (REMOVE ITEM ITEMLIST)) - (replace MENUCOLUMNS of MENU with NIL) - (replace MENUROWS of MENU with NIL) - (UPDATE/MENU/IMAGE MENU)) - (T NIL]) - -(\TEDIT.CREATEMENU - [LAMBDA (ITEMS) (* ; "Edited 3-Apr-2024 13:30 by rmk") - (* ; "Edited 16-Oct-87 14:21 by jds") - - (* ;; "Create a TEdit command menu, given a list of menu items.") - - (create MENU - ITEMS _ ITEMS - CENTERFLG _ T - MENUFONT _ (FONTCREATE 'HELVETICA 10 'BOLD) - WHENHELDFN _ (FUNCTION \TEDIT.MENU.WHENHELDFN) - WHENSELECTEDFN _ (FUNCTION \TEDIT.MENU.WHENSELECTEDFN]) - -(\TEDIT.MENU.WHENHELDFN - [LAMBDA (ITEM MENU BUTTON) (* ; "Edited 4-Oct-2022 09:17 by rmk") - (* jds "10-Apr-84 15:14") - (COND - ((ATOM ITEM) - (CLRPROMPT) - (PROMPTPRINT (SELECTQ ITEM - (Put "Sends the document to a file") - (Get "Gets a new file as the document to edit.") - (Looks "Changes the font/size/etc. of characters") - (Find "Searches for a string") - (Quit "Ends the edit session") - (Hardcopy "Formats and sends the file to a printer.") - (Hardcopy% File - "Creates a hardcopy-format file of the document.") - ""))) - (T (DEFAULTMENUHELDFN ITEM]) - -(\TEDIT.MENU.WHENSELECTEDFN - [LAMBDA (ITEM MENU BUTTON) (* ; "Edited 16-Oct-87 14:21 by jds") - - (* ;; "A Selection fn for preserving the button pressed, for special handling in PUT, e.g.") - - (CONS (DEFAULTWHENSELECTEDFN ITEM MENU BUTTON) - BUTTON]) -) -(DECLARE%: DOEVAL@COMPILE DONTCOPY - -(GLOBALVARS TEDIT.DEFAULT.MENU) -) -(DECLARE%: DONTEVAL@LOAD DOCOPY - -(RPAQ TEDIT.DEFAULT.MENU - [\TEDIT.CREATEMENU '((Put 'Put NIL (SUBITEMS |Put Formatted Document| Plain-Text)) - (Get 'Get NIL (SUBITEMS |Get Formatted Document| Unformatted% Get)) - Include Find Looks Substitute (Buttons 'Buttons "Display action buttons") - Quit - (Expanded% Menu 'Expanded% Menu NIL (SUBITEMS Expanded% Menu - Character% Looks - Paragraph% Formatting - Page% Layout]) -) (DECLARE%: DONTEVAL@LOAD DOCOPY [OR (SASSOC 'TEdit BackgroundMenuCommands) (NCONC1 BackgroundMenuCommands '(TEdit '(TEDIT) - "Opens a TEdit window for use."] + "Opens an empty TEdit window"] (SETQ BackgroundMenu NIL) ) @@ -3723,38 +3579,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (18637 19533 (TEDIT.DEFER.UPDATES 18647 . 19531)) (19534 45844 (\TEDIT.WINDOW.CREATE -19544 . 26156) (\TEDIT.WINDOW.GETREGION 26158 . 29527) (\TEDIT.WINDOW.SETUP 29529 . 33642) ( -\TEDIT.MINIMAL.WINDOW.SETUP 33644 . 41846) (\TEDIT.CLEARPANE 41848 . 42565) (\TEDIT.FILL.PANES 42567 - . 45842)) (45845 68752 (\TEDIT.CURSORMOVEDFN 45855 . 50728) (\TEDIT.CURSOROUTFN 50730 . 51175) ( -\TEDIT.ACTIVE.WINDOWP 51177 . 52228) (\TEDIT.EXPANDFN 52230 . 52793) (\TEDIT.MAINW 52795 . 54075) ( -\TEDIT.MAINSTREAM 54077 . 54344) (\TEDIT.PRIMARYPANE 54346 . 55116) (\TEDIT.PANELIST 55118 . 55614) ( -\TEDIT.NEWREGIONFN 55616 . 58132) (\TEDIT.SET.WINDOW.EXTENT 58134 . 63388) (\TEDIT.SHRINK.ICONCREATE -63390 . 66123) (\TEDIT.SHRINKFN 66125 . 66534) (\TEDIT.PANEREGION 66536 . 68750)) (68784 100358 ( -\TEDIT.BUTTONEVENTFN 68794 . 81356) (\TEDIT.BUTTONEVENTFN.DOOPERATION 81358 . 88081) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 88083 . 89925) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89927 . 93164) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 93166 . 95508) (\TEDIT.BUTTONEVENTFN.INTITLE 95510 . 97345) ( -\TEDIT.COPYINSERTFN 97347 . 98479) (\TEDIT.FOREIGN.COPY 98481 . 100356)) (100359 117468 ( -\TEDIT.PANE.SPLIT 100369 . 104848) (\TEDIT.SPLITW 104850 . 112309) (\TEDIT.UNSPLITW 112311 . 116125) ( -\TEDIT.LINKPANES 116127 . 116890) (\TEDIT.UNLINKPANE 116892 . 117466)) (118825 119716 (TEDITWINDOWP -118835 . 119714)) (119753 122856 (TEDIT.GETINPUT 119763 . 122206) (\TEDIT.MAKEFILENAME 122208 . 122854 -)) (122905 131206 (TEDIT.PROMPTWINDOW 122915 . 123229) (TEDIT.PROMPTPRINT 123231 . 125858) ( -TEDIT.PROMPTCLEAR 125860 . 127579) (TEDIT.PROMPTFLASH 127581 . 129513) (\TEDIT.PROMPT.PAGEFULLFN -129515 . 131204)) (131444 141085 (\TEDIT.FILENAME 131454 . 132226) (\TEDIT.DEFAULT.TITLE 132228 . -134607) (\TEDIT.WINDOW.TITLE 134609 . 136778) (\TEDIT.LIKELY.FILENAME 136780 . 138567) ( -\TEDIT.UPDATE.TITLE 138569 . 141083)) (141128 149656 (TEDIT.DEACTIVATE.WINDOW 141138 . 147256) ( -\TEDIT.RESHAPEFN 147258 . 149428) (\TEDIT.REPAINTFN 149430 . 149654)) (149657 192036 (\TEDIT.SCROLLFN -149667 . 151912) (\TEDIT.SCROLLCH.TOP 151914 . 154025) (\TEDIT.SCROLLCH.BOTTOM 154027 . 158357) ( -\TEDIT.SCROLLUP 158359 . 163976) (\TEDIT.TOPLINE.YTOP 163978 . 165647) (\TEDIT.SCROLLDOWN 165649 . -172579) (\TEDIT.SCROLL.CARET 172581 . 175419) (\TEDIT.VISIBLECARETP 175421 . 177715) ( -\TEDIT.VISIBLECHARP 177717 . 178808) (\TEDIT.BITMAPLINES 178810 . 182730) (\TEDIT.SETPANE.TOPLINE -182732 . 183523) (\TEDIT.SHIFTLINES 183525 . 192034)) (192037 202906 (\TEDIT.ONSCREEN? 192047 . 196598 -) (\TEDIT.ONSCREEN.REGION 196600 . 200251) (\TEDIT.AFTERMOVEFN 200253 . 201150) (OFFSCREENP 201152 . -202904)) (202948 205565 (\TEDIT.PROCIDLEFN 202958 . 204495) (\TEDIT.PROCENTRYFN 204497 . 204942) ( -\TEDIT.PROCEXITFN 204944 . 205563)) (205644 218798 (\TEDIT.DOWNCARET 205654 . 206447) ( -\TEDIT.FLASHCARET 206449 . 208560) (\TEDIT.UPCARET 208562 . 209666) (TEDIT.NORMALIZECARET 209668 . -212886) (\TEDIT.SETCARET 212888 . 218168) (\TEDIT.CARET 218170 . 218796)) (218832 231159 ( -TEDIT.ADD.MENUITEM 218842 . 221133) (TEDIT.DEFAULT.MENUFN 221135 . 228371) (TEDIT.REMOVE.MENUITEM -228373 . 229370) (\TEDIT.CREATEMENU 229372 . 229937) (\TEDIT.MENU.WHENHELDFN 229939 . 230844) ( -\TEDIT.MENU.WHENSELECTEDFN 230846 . 231157))))) + (FILEMAP (NIL (17335 18231 (TEDIT.DEFER.UPDATES 17345 . 18229)) (18232 43479 (\TEDIT.WINDOW.CREATE +18242 . 25088) (\TEDIT.WINDOW.GETREGION 25090 . 28580) (\TEDIT.WINDOW.SETUP 28582 . 32804) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32806 . 40217) (\TEDIT.CLEARPANE 40219 . 40936) (\TEDIT.FILL.PANES 40938 + . 43477)) (43480 66421 (\TEDIT.CURSORMOVEDFN 43490 . 48330) (\TEDIT.CURSOROUTFN 48332 . 48777) ( +\TEDIT.ACTIVE.WINDOWP 48779 . 49830) (\TEDIT.EXPANDFN 49832 . 50395) (\TEDIT.MAINW 50397 . 51677) ( +\TEDIT.MAINSTREAM 51679 . 52013) (\TEDIT.PRIMARYPANE 52015 . 52785) (\TEDIT.PANELIST 52787 . 53283) ( +\TEDIT.NEWREGIONFN 53285 . 55801) (\TEDIT.SET.WINDOW.EXTENT 55803 . 61057) (\TEDIT.SHRINK.ICONCREATE +61059 . 63792) (\TEDIT.SHRINKFN 63794 . 64203) (\TEDIT.PANEREGION 64205 . 66419)) (66453 99078 ( +\TEDIT.BUTTONEVENTFN 66463 . 79335) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79337 . 86391) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 86393 . 88235) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88237 . 91802) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 91804 . 94228) (\TEDIT.BUTTONEVENTFN.INTITLE 94230 . 96065) ( +\TEDIT.COPYINSERTFN 96067 . 97199) (\TEDIT.FOREIGN.COPY 97201 . 99076)) (99079 116160 ( +\TEDIT.PANE.SPLIT 99089 . 103037) (\TEDIT.SPLITW 103039 . 110397) (\TEDIT.UNSPLITW 110399 . 114817) ( +\TEDIT.LINKPANES 114819 . 115582) (\TEDIT.UNLINKPANE 115584 . 116158)) (117516 118407 (TEDITWINDOWP +117526 . 118405)) (118444 121547 (TEDIT.GETINPUT 118454 . 120897) (\TEDIT.MAKEFILENAME 120899 . 121545 +)) (121596 129897 (TEDIT.PROMPTWINDOW 121606 . 121920) (TEDIT.PROMPTPRINT 121922 . 124549) ( +TEDIT.PROMPTCLEAR 124551 . 126270) (TEDIT.PROMPTFLASH 126272 . 128204) (\TEDIT.PROMPT.PAGEFULLFN +128206 . 129895)) (130135 139967 (\TEDIT.FILENAME 130145 . 130917) (\TEDIT.DEFAULT.TITLE 130919 . +133298) (\TEDIT.WINDOW.TITLE 133300 . 135469) (\TEDIT.LIKELY.FILENAME 135471 . 137449) ( +\TEDIT.UPDATE.TITLE 137451 . 139965)) (140010 151389 (TEDIT.DEACTIVATE.WINDOW 140020 . 146617) ( +\TEDIT.RESHAPEFN 146619 . 148704) (\TEDIT.REPAINTFN 148706 . 148930) (\TEDIT.CLOSEPANES 148932 . +151387)) (151390 194189 (\TEDIT.SCROLLFN 151400 . 153631) (\TEDIT.SCROLLCH.TOP 153633 . 155744) ( +\TEDIT.SCROLLCH.BOTTOM 155746 . 160076) (\TEDIT.SCROLLUP 160078 . 165804) (\TEDIT.TOPLINE.YTOP 165806 + . 167475) (\TEDIT.SCROLLDOWN 167477 . 174516) (\TEDIT.SCROLL.CARET 174518 . 177356) ( +\TEDIT.VISIBLECARETP 177358 . 179652) (\TEDIT.VISIBLECHARP 179654 . 180745) (\TEDIT.BITMAPLINES 180747 + . 184667) (\TEDIT.SETPANE.TOPLINE 184669 . 185281) (\TEDIT.SHIFTLINES 185283 . 194187)) (194190 +205059 (\TEDIT.ONSCREEN? 194200 . 198751) (\TEDIT.ONSCREEN.REGION 198753 . 202404) (\TEDIT.AFTERMOVEFN + 202406 . 203303) (OFFSCREENP 203305 . 205057)) (205101 207792 (\TEDIT.PROCIDLEFN 205111 . 206648) ( +\TEDIT.PROCENTRYFN 206650 . 207095) (\TEDIT.PROCEXITFN 207097 . 207790)) (207871 221096 ( +\TEDIT.DOWNCARET 207881 . 208674) (\TEDIT.FLASHCARET 208676 . 210787) (\TEDIT.UPCARET 210789 . 211893) + (TEDIT.NORMALIZECARET 211895 . 215113) (\TEDIT.SETCARET 215115 . 220466) (\TEDIT.CARET 220468 . +221094))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 8a517239093727a4106683b5ce42ef787fbb88a4..a15d197aa879de9fd7e7a2d301e2987333e473b9 100644 GIT binary patch delta 19165 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 LqMrX>*LVDXM_dK6 delta 22691 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 hfw|7J2U&XD$iqQIkT@>?Jh-;Qbd#5b#_Ub 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 BKHLBR delta 7404 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 diff --git a/library/tedit/TOPLINE.TEDIT b/library/tedit/TOPLINE.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..ff8c340890cf8be626ff3b46779d1c874a774f1f GIT binary patch literal 1685 zcmeHHO>fgc5Ow+iQn|u?Bskbo6eS^~DL3P6Qmc-g`U5DpC7v{voVD@V4egyj#gz+4 z{31@w+EE)2QcoO^uw{F8X5O25_$kusP690w^H3?E8no_7|2ejb@)u$UV%pN$Q$PECIs38Fdk1IxGP zArS@kI|jWjOw5_>T)@m5Gv5X8HS-(ij!9%AW4j116m{gf6i_Zo z8x7!iFn|GFci51<4Qrs9tx7o=!r;XahTU#MZxGUSXcDd&-tz`(ihpImB&$E_!+^Fz ze`g+leU`WT_5ZZ)-FXHb^*`WH+tYfrwY}}Pv}e2PKiM^)^;LUB!GryS`vHpNfGR!K z9yFh_c67`8M0;pCW)Rrcj#EYV=+v}t%516I*6~A`tucKwFO%<|Y_h*-hc};p0_yvv A`~Uy| literal 0 HcmV?d00001 diff --git a/library/tedit/TSTREAMS,TEDIT b/library/tedit/TSTREAMS,TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..88bd399b2b05e78bc3b9a08c0ef72def5cb3c161 GIT binary patch literal 1286 zcmd^9!A{&T5H(9tCDbeTIrNYmSg{L)v^Q@u*`2Oq8+)=q)!usPFZ4h9GyRGFQpZkU zL8ukt+C)h_Z=S}J_cWfv&BlRs3@frN*)?$FfVzi98x!FRV@o_Ae5)DfhAc*K1N(s? zXO4@B5zrgm;5?%7gpJUqgaFv^+^s&z=N=>*G4OM8?{-)ot8^U}5w8cd4T2?;pW+Pi zT|!ZKy&e;?@)#n0&Y`3drCKcE>ccV-8E<)C;Y#o&TvRnw7j>ENvJ{p!jKRt;?wPOI zt8<1#O=(xU3fefgjZj<HAgwnHy{JC)5RLN) z0oQ}k0r1vq8_C%RgzQda#1>rF!C<9QawtdQB5hHu%8|&rPYre@4sZ3!jMT;%7joB; z?*vQzOJ$05&+x&qxHoMyI_e$SvG^cflI`-3m(aP;Yu?92lKirQWnII0HA)UIbLGVz z|3mkX^!z`CUtYdac^Qc^&)|_dP>Z~pUWW(j{p0v=>o;nqPSo4R=oqO{<3uO&H?L>i~wgK Son;@t|33XH(NA^skaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;209 53312 +(FILECREATED "21-Apr-2025 23:06:12"  +{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;228 53892 :EDIT-BY rmk - :PREVIOUS-DATE "16-Mar-2025 00:20:08" {WMEDLEY}TEDIT>tedit-exports.all;208) + :PREVIOUS-DATE "20-Apr-2025 00:13:59" {WMEDLEY}TEDIT>tedit-exports.all;227) (PRETTYCOMPRINT ((E (MAPC (MKLIST FROMFILES) (FUNCTION (LAMBDA (F) (MAPC (IMPORTFILE F FLG) (FUNCTION @@ -14,11 +14,10 @@ PRINT)))))))) (PUTPROPS TEDIT-ASSERT MACRO (ARGS (COND (CHECK-TEDIT-ASSERTIONS (BQUOTE (CL:UNLESS (\, (CAR ARGS)) ( \TEDIT.THELP "TEDIT-ASSERT FAILURE" (\, (KWOTE (CAR ARGS))))))) (T (BQUOTE (* (TEDIT-ASSERT (\,@ ARGS) ))))))) +(PUTPROPS FTEXTOBJ MACRO ((X) (TEXTOBJ! (CL:IF (type? TEXTOBJ X) X (GETTSTR X TEXTOBJ))))) (GLOBALVARS CHECK-TEDIT-ASSERTIONS) (RPAQ? CHECK-TEDIT-ASSERTIONS T) -(PUTPROPS OBJECT.ALLOWS MACRO ((PC OPERATION FROMTOBJ TOTOBJ) (OR (NOT (EQ OBJECT.PTYPE (PTYPE PC))) ( -\TEDIT.APPLY.OBJFN (PCONTENTS PC) OPERATION FROMTOBJ TOTOBJ)))) -(PUTPROP (QUOTE TEDIT) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:10:12")) +(PUTPROP (QUOTE TEDIT) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:54:33")) (RPAQQ \BTREEWORDSPERSLOT 4) (RPAQQ \BTREEMAXCOUNT 8) (CONSTANTS (\BTREEWORDSPERSLOT 4) (\BTREEMAXCOUNT 8)) @@ -98,7 +97,8 @@ FGETLD L LCHAR1) CHLAST)))) (PUTPROPS FLINESELECTEDP MACRO (OPENLAMBDA (L CH# CHLAST) (* ; "True if a CH#..CHLAST selection would include L") (AND (IGREATERP (FGETLD L LCHARLIM) CH#) (ILEQ ( FGETLD L LCHAR1) CHLAST)))) -(PUTPROPS IBETWEENP MACRO (OPENLAMBDA (X LOW HIGH) (AND (IGEQ X LOW) (ILEQ X HIGH)))) +(PUTPROPS IBETWEENP MACRO (OPENLAMBDA (X LOW HIGH) (* ; "within the closed interval") (AND (IGEQ X LOW +) (ILEQ X HIGH)))) (PUTPROPS GETSEL MACRO ((S FIELD) (fetch (SELECTION FIELD) of S))) (PUTPROPS SETSEL MACRO ((S FIELD NEWVALUE) (replace (SELECTION FIELD) of S with NEWVALUE))) (PUTPROPS FGETSEL MACRO ((S FIELD) (ffetch (SELECTION FIELD) of S))) @@ -118,7 +118,10 @@ $$SELPIECES)) REPEATUNTIL (EQ I.V. $$SPLAST) BY (\DTEST (NEXTPIECE I.V.) (QUOTE (GLOBALVARS TEDIT.EXTEND.PENDING.DELETE) (GLOBALVARS TEDIT.SELECTION TEDIT.SHIFTEDSELECTION TEDIT.MOVESELECTION TEDIT.COPYLOOKSSELECTION TEDIT.DELETESELECTION) -(PUTPROP (QUOTE TEDIT-SELECTION) (QUOTE IMPORTDATE) (IDATE "19-Mar-2025 16:27:02")) +(PUTPROPS \TEDIT.NOSEL MACRO ((TSTREAM SEL ONLYPANE) (* ; +"Takes down SEL in TSTREAM, where SEL defaults to the current selection") (\TEDIT.SHOWSEL SEL NIL +TSTREAM ONLYPANE))) +(PUTPROP (QUOTE TEDIT-SELECTION) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:52:26")) (RECORD TAB (TABX . TABKIND)) (RECORD TABSPEC (DEFAULTTAB . TABS)) (DATATYPE LINECACHE ((* ;; "Image cache for display lines.") LCBITMAP (* ; @@ -215,54 +218,49 @@ FULLXPOINTER) (* ; "Line descriptor for the line this describes now") TLSPACEFAC "Pointer block holdomg char/width slots MAXCHARSLOTS (with an extra slot so that there is always storage behind NEXTAVAILABLECHARSLOT" ) NEXTAVAILABLECHARSLOT) (* ; "The last used CHARSLOT is at (PREVCHARSLOT NEXTAVAILABLECHARSLOT)") CHARSLOTS _ (\ALLOCBLOCK (ITIMES (ADD1 MAXCHARSLOTS) CELLSPERCHARSLOT) PTRBLOCK.GCT)) -(BLOCKRECORD CHARSLOT (CHAR CHARW (* ; "If CHAR is NIL, then CHARW is CHARLOOKS."))) +(BLOCKRECORD CHARSLOT (CHAR CHARW (* ; "If CHAR is NIL, then CHARW is CHARLOOKS.") CHARCL)) (PUTPROPS CHAR MACRO ((CSLOT) (ffetch (CHARSLOT CHAR) of CSLOT))) (PUTPROPS CHARW MACRO ((CSLOT) (ffetch (CHARSLOT CHARW) of CSLOT))) +(PUTPROPS CHARCL MACRO ((CSLOT) (ffetch (CHARSLOT CHARCL) of CSLOT))) (PUTPROPS PREVCHARSLOT MACRO ((CSLOT) (\ADDBASE CSLOT (IMINUS WORDSPERCHARSLOT)))) -(PUTPROPS PREVCHARSLOT! MACRO ((CSLOT) (* ;; -"Backs over looks and invisibles to the last character slot") (find CS _ (PREVCHARSLOT CSLOT) by ( -PREVCHARSLOT CS) while CS suchthat (CHAR CS)))) (PUTPROPS NEXTCHARSLOT MACRO ((CSLOT) (\ADDBASE CSLOT WORDSPERCHARSLOT))) (PUTPROPS FIRSTCHARSLOT MACRO ((TLINE) (fetch (THISLINE CHARSLOTS) of TLINE))) (PUTPROPS NTHCHARSLOT MACRO ((TLINE N) (\ADDBASE (fetch (THISLINE CHARSLOTS) of TLINE) (ITIMES N WORDSPERCHARSLOT)))) (PUTPROPS LASTCHARSLOT MACRO ((TLINE) (\ADDBASE (fetch (THISLINE CHARSLOTS) of TLINE) (TIMES (SUB1 MAXCHARSLOTS) WORDSPERCHARSLOT)))) -(PUTPROPS FILLCHARSLOT MACRO ((CSLOT C W) (freplace (CHARSLOT CHAR) of CSLOT with C) (freplace ( -CHARSLOT CHARW) of CSLOT with W))) -(PUTPROPS BACKCHARS MACRO ((CSLOTVAR CHARVAR WIDTHVAR) (SETQ CSLOTVAR (PREVCHARSLOT CSLOTVAR)) (SETQ -CHARVAR (fetch (CHARSLOT CHAR) of CSLOTVAR)) (SETQ WIDTHVAR (fetch (CHARSLOT CHARW) of CSLOTVAR)))) -(PUTPROPS PUSHCHAR MACRO ((CSLOTVAR C W) (FILLCHARSLOT CSLOTVAR C W) (SETQ CSLOTVAR (NEXTCHARSLOT -CSLOTVAR)))) -(PUTPROPS POPCHAR MACRO ((CSLOTVAR CHARVAR WIDTHVAR) (SETQ CHARVAR (fetch (CHARSLOT CHAR) of CSLOTVAR) -) (SETQ WIDTHVAR (fetch (CHARSLOT CHARW) of CSLOTVAR)) (SETQ CSLOTVAR (NEXTCHARSLOT CSLOTVAR)))) +(PUTPROPS FILLCHARSLOT MACRO ((CSLOT C W R) (freplace (CHARSLOT CHAR) of CSLOT with C) (freplace ( +CHARSLOT CHARW) of CSLOT with W) (freplace (CHARSLOT CHARCL) of CSLOT with R))) +(PUTPROPS PUSHCHAR MACRO ((CSLOTVAR C W CL) (FILLCHARSLOT CSLOTVAR C W CL) (SETQ CSLOTVAR ( +NEXTCHARSLOT CSLOTVAR)))) (PUTPROPS CHARSLOTP MACRO (OPENLAMBDA (X TL) (* ;; "True if TL is a THISLINE and X is a pointer into its CHARSLOTS block. A tool for consistency assertions." ) (CL:WHEN (TYPE? THISLINE TL) (LET ((FIRSTSLOT (FIRSTCHARSLOT TL)) (LASTSLOT (LASTCHARSLOT TL))) (AND (OR (IGREATERP (\HILOC X) (\HILOC FIRSTSLOT)) (AND (EQ (\HILOC X) (\HILOC FIRSTSLOT)) (IGEQ (\LOLOC X ) (\LOLOC FIRSTSLOT)))) (OR (ILESSP (\HILOC X) (\HILOC LASTSLOT)) (AND (EQ (\HILOC X) (\HILOC LASTSLOT )) (ILEQ (\LOLOC X) (\LOLOC LASTSLOT))))))))) -(RPAQQ CELLSPERCHARSLOT 2) +(RPAQQ CELLSPERCHARSLOT 3) (RPAQ WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (RPAQQ MAXCHARSLOTS 256) -(CONSTANTS (CELLSPERCHARSLOT 2) (WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (MAXCHARSLOTS +(CONSTANTS (CELLSPERCHARSLOT 3) (WORDSPERCHARSLOT (TIMES CELLSPERCHARSLOT WORDSPERCELL)) (MAXCHARSLOTS 256)) (* ;; "incharslots can be used only if THISLINE is properly bound in the environment, to provide upperbound checking. Operand can be THISLINE (= FIRSTCHARSLOT) or a within-range slot pointer. The latter case is not current checked for validity (some \HILOC \LOLOC address calculations?). backcharslots runs backwards." ) (I.S.OPR (QUOTE incharslots) NIL (QUOTE (SUBST (GETDUMMYVAR) (QUOTE $$STARTSLOT) (QUOTE (bind -$$STARTSLOT _ BODY CHAR CHARW $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) first ( -SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) (FIRSTCHARSLOT $$STARTSLOT)) (T $$STARTSLOT))) (SETQ -$$CHARSLOTLIMIT (fetch (THISLINE NEXTAVAILABLECHARSLOT) of THISLINE)) by (NEXTCHARSLOT I.V.) until (EQ - I.V. $$CHARSLOTLIMIT) eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) (SETQ CHARW (fetch ( -CHARSLOT CHARW) of I.V.)))))) T) +$$STARTSLOT _ BODY CHAR CHARW CHARCL $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) +first (SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) (FIRSTCHARSLOT $$STARTSLOT)) (T $$STARTSLOT))) ( +SETQ $$CHARSLOTLIMIT (fetch (THISLINE NEXTAVAILABLECHARSLOT) of THISLINE)) by (NEXTCHARSLOT I.V.) +until (EQ I.V. $$CHARSLOTLIMIT) eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) (SETQ CHARW ( +fetch (CHARSLOT CHARW) of I.V.)) (SETQ CHARCL (fetch (CHARSLOT CHARCL) of I.V.)))))) T) (I.S.OPR (QUOTE backcharslots) NIL (QUOTE (SUBST (GETDUMMYVAR) (QUOTE $$STARTSLOT) (QUOTE (bind -$$STARTSLOT _ BODY CHAR CHARW $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) first ( -SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) (PREVCHARSLOT (fetch (THISLINE NEXTAVAILABLECHARSLOT) of - THISLINE))) (T $$STARTSLOT))) (SETQ $$CHARSLOTLIMIT (FIRSTCHARSLOT THISLINE)) by (PREVCHARSLOT I.V.) -eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) (SETQ CHARW (fetch (CHARSLOT CHARW) of I.V.)) -repeatuntil (EQ I.V. $$CHARSLOTLIMIT))))) T) -(PUTPROP (QUOTE TEDIT-SCREEN) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 17:12:44")) +$$STARTSLOT _ BODY CHAR CHARW CHARCL $$CHARSLOTLIMIT declare (LOCALVARS $$STARTSLOT $$CHARSLOTLIMIT) +first (SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) (PREVCHARSLOT (fetch (THISLINE +NEXTAVAILABLECHARSLOT) of THISLINE))) (T $$STARTSLOT))) (SETQ $$CHARSLOTLIMIT (FIRSTCHARSLOT THISLINE) +) by (PREVCHARSLOT I.V.) eachtime (SETQ CHAR (fetch (CHARSLOT CHAR) of I.V.)) (SETQ CHARW (fetch ( +CHARSLOT CHARW) of I.V.)) (SETQ CHARCL (fetch (CHARSLOT CHARCL) of I.V.)) repeatuntil (EQ I.V. +$$CHARSLOTLIMIT))))) T) +(PUTPROP (QUOTE TEDIT-SCREEN) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 20:34:16")) (DATATYPE PIECE ((* ; "The piece describes either a string or part of a file. , or a generalized OBJECT.") PCONTENTS (* ; "The background source of data for this piece (stream, string, block, object, depending on the PTYPE)." @@ -305,11 +303,11 @@ HINTPC (* ; "Was: Space left in the type-in piece") HINTPCSTARTCH# (* ; SEL (* ; "The current selection within the text") LASTARROWX (* ; "X for next arrow up or arrow down. Was: Scratch space for the selection code") NIL (* ; "Was MOVESEL: Source for the next MOVE of text") NIL (* ; "Was SHIFTEDSEL: Source for the next COPY") -NIL (* ; "Was DELETESEL: Text to be deleted imminently") WRIGHT (* ; -"Right edge of the window (or subregion) where this is displayed") WTOP (* ; -"Top of the window/region") WBOTTOM (* ; "Bottom of the window/region") WLEFT (* ; -"Left edge of the window/region") TXTFILE (* ; "The original text file we're editing") (\XDIRTY FLAG) -(* ; "T => changed since last saved.") (STREAMHINT FULLXPOINTER) (* ; +NIL (* ; "Was DELETESEL: Text to be deleted imminently") NIL (* ; +"Was WRIGHT: Right edge of the window (or subregion) where this is displayed") WTOP (* ; +"Top of the window/region") NIL (* ; "Was WBOTTOM: Bottom of the window/region") NIL (* ; +"Was WLEFT: Left edge of the window/region") TXTFILE (* ; "The original text file we're editing") ( +\XDIRTY FLAG) (* ; "T => changed since last saved.") (STREAMHINT FULLXPOINTER) (* ; "-> the TEXTOFD stream which gives access to this textobj") EDITFINISHEDFLG (* ; "T => The guy has asked the editor to go way") NIL (* ; "Was CARET: Describes the flashing caret for the editing window") CARETLOOKS (* ; @@ -352,9 +350,9 @@ TXTAPPENDONLY FLAG) (* ; "Style sheet local to this document. Not currently saved as part of the file.")) (ACCESSFNS TEXTOBJ ( (\DIRTY (ffetch (TEXTOBJ \XDIRTY) of DATUM) (PROGN (FSETTOBJ DATUM LASTARROWX NIL) (CL:UNLESS (EQ NEWVALUE (ffetch (TEXTOBJ \XDIRTY) of DATUM)) (\TEDIT.WINDOW.TITLE DATUM NEWVALUE) (freplace \XDIRTY -OF DATUM WITH NEWVALUE)))))) SEL _ (create SELECTION) TEXTLEN _ 0 WRIGHT _ 0 WTOP _ 0 WLEFT _ 0 -WBOTTOM _ 0 MOUSEREGION _ (QUOTE TEXT) THISLINE _ (create THISLINE) DEFAULTPARALOOKS _ -TEDIT.DEFAULT.FMTSPEC PARABREAKCHARS _ (CHARCODE (EOL FORM LF CR))) +OF DATUM WITH NEWVALUE)))))) SEL _ (create SELECTION) TEXTLEN _ 0 WTOP _ 0 MOUSEREGION _ (QUOTE TEXT) +THISLINE _ (create THISLINE) DEFAULTPARALOOKS _ TEDIT.DEFAULT.FMTSPEC PARABREAKCHARS _ (CHARCODE (EOL +FORM LF CR))) (ACCESSFNS TEXTSTREAM ((* ;; "Overlay for the STREAM record to allow mnemonic access to stream fields for Text streams.") (* ;; "The # of characters that have already been read from the current piece") (TEXTOBJ (fetch (STREAM F3) @@ -408,7 +406,7 @@ VISIBLEPIECEP PPC)))) (PUTPROPS FGETTOBJ MACRO ((TOBJ FIELD) (ffetch (TEXTOBJ FIELD) of TOBJ))) (PUTPROPS FSETTOBJ MACRO ((TOBJ FIELD NEWVALUE) (freplace (TEXTOBJ FIELD) of TOBJ with NEWVALUE))) (PUTPROPS TEXTLEN MACRO ((TOBJ) (ffetch (TEXTOBJ TEXTLEN) of TOBJ))) -(PUTPROPS TEXTSEL MACRO ((TOBJ) (fetch (TEXTOBJ SEL) of TOBJ))) +(PUTPROPS TEXTSEL MACRO ((TEXTOBJ) (SELECTION! (GETTOBJ TEXTOBJ SEL)))) (PUTPROPS TEXTOBJ! MACRO ((TOBJ) (\DTEST TOBJ (QUOTE TEXTOBJ)))) (PUTPROPS GETTSTR MACRO ((TSTR FIELD) (fetch (TEXTSTREAM FIELD) of TSTR))) (PUTPROPS SETTSTR MACRO ((TSTR FIELD NEWVALUE) (replace (TEXTSTREAM FIELD) of TSTR with NEWVALUE))) @@ -446,7 +444,7 @@ UTF8.PTYPE UTF16BE.PTYPE UTF16LE.PTYPE)) (STRING.PTYPES (LIST THINSTRING.PTYPE F BINABLE.PTYPES (LIST THINFILE.PTYPE THINSTRING.PTYPE)) (THIN.PTYPES (LIST THINFILE.PTYPE THINSTRING.PTYPE)) (FAT.PTYPES (LIST FATFILE2.PTYPE FATSTRING.PTYPE FATFILE1.PTYPE))) (GLOBALVARS \TEXTIMAGEOPS \TEXTFDEV) -(PUTPROP (QUOTE TEDIT-STREAM) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:26:47")) +(PUTPROP (QUOTE TEDIT-STREAM) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:45:03")) (PUTPROPS \TEDIT.MOUSESTATE MACRO (BUTTON (* ;; "Test to see if only the specified mouse button is down. DOES NOT call GETMOUSESTATE, so the mouse-button info is the same as the last time it was called." ) (SELECTQ (CAR BUTTON) (LEFT (QUOTE (EQ LASTMOUSEBUTTONS 4))) (MIDDLE (QUOTE (EQ LASTMOUSEBUTTONS 1)) @@ -460,7 +458,7 @@ I in ARGS as J on ARGS when (NOT (STRINGP I)) collect (LIST (QUOTE OR) I (LIST ( \BIN STREAM)) BITSPERWORD))) (PUTPROPS \SMALLPOUT MACRO (OPENLAMBDA (STREAM W) (* ; "Signed smallp, unlike \WOUT") (\BOUT STREAM ( LOGAND 255 (LRSH W 8))) (\BOUT STREAM (LOGAND W 255)))) -(PUTPROP (QUOTE TEDIT-FILE) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:24:34")) +(PUTPROP (QUOTE TEDIT-FILE) (QUOTE IMPORTDATE) (IDATE "19-Apr-2025 22:29:28")) (PUTPROP (QUOTE TEDIT-OLDFILE) (QUOTE IMPORTDATE) (IDATE "19-Feb-2025 12:09:40")) (DATATYPE CHARLOOKS ((* ;; "Describes the appearance (%"Looks%") of characters in a TEdit document.") (* ;; "NOTE: If fields change EQCLOOKS should change too.") CLFONT (* ; @@ -487,10 +485,10 @@ LOGAND 255 (LRSH W 8))) (\BOUT STREAM (LOGAND W 255)))) "For arbitrarily-places horizontal rules. List of pairs, of (widthinpts . offsetfrombaselineinpts). Should be taken account of in ascent/descent calcs." ) (CLMARK FLAG) (* ;; "Used for a mark-&-sweep of looks at PUT time -- T means this set of looks really IS in use in the document" -) (CLSELBEFORE FLAG) (* ; "T if TEDIT can put selection before this char (for menu fields).")) -CLOFFSET _ 0 (INIT (DEFPRINT (QUOTE CHARLOOKS) (FUNCTION \TEDIT.CHARLOOKS.DEFPRINT))) (ACCESSFNS ( -CLNAME (fetch (CHARLOOKS CLFONTUNPARSE) of DATUM) (replace (CHARLOOKS CLFONTUNPARSE) of DATUM with -NEWVALUE)))) +) (CLSELBEFORE FLAG) (* ; "T if TEDIT can put selection before this char (for menu fields).") CLCOLOR) + CLOFFSET _ 0 CLCOLOR _ (QUOTE BLACK) (INIT (DEFPRINT (QUOTE CHARLOOKS) (FUNCTION +\TEDIT.CHARLOOKS.DEFPRINT))) (ACCESSFNS (CLNAME (fetch (CHARLOOKS CLFONTUNPARSE) of DATUM) (replace ( +CHARLOOKS CLFONTUNPARSE) of DATUM with NEWVALUE)))) (DATATYPE PARALOOKS ((* ;; "Describe the paragraph formatting for a paragraph in a TEdit document.") 1STLEFTMAR (* ; "Left margin of the first line of the paragraph") LEFTMAR (* ; "Left margin of the rest of the lines in the paragraph") RIGHTMAR (* ; @@ -549,7 +547,7 @@ NEWVALUE))) (PUTPROPS FGETPARA MACRO ((PLOOKS FIELD) (ffetch (PARALOOKS FIELD) of PLOOKS))) (PUTPROPS GETPARA MACRO ((PLOOKS FIELD) (fetch (PARALOOKS FIELD) of PLOOKS))) (PUTPROPS SETPARA MACRO ((PLOOKS FIELD NEWVALUE) (replace (PARALOOKS FIELD) of PLOOKS with NEWVALUE))) -(PUTPROP (QUOTE TEDIT-LOOKS) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:24:25")) +(PUTPROP (QUOTE TEDIT-LOOKS) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 20:28:55")) (PUTPROP (QUOTE TEDIT-STYLES) (QUOTE IMPORTDATE) (IDATE "19-Feb-2025 13:31:28")) (DATATYPE TEDITCARET (TCNOWTIME (* Used to hold the current time, when checking to see if a transition is due) TCTHENTIME (* Time when the next transition is to take place) TCFORCEDDOWN (* TCFORCEDOWN = T @@ -572,22 +570,29 @@ TEXTWINDOW PTEXTOBJ) of DATUM) (QUOTE TEXTOBJ))))) (DATATYPE PANEPROPS ((PWINDOW FULLXPOINTER) (* ; "The window with these PANEPROPS") PREFIXLINE (* ; "Dummy line that covers all the characters above the first visible line") SUFFIXLINE (* ; "Dummy line that covers all the characters below the last visible line") PCARET NEXTPANE (PREVPANE -XPOINTER) PANEHEIGHT PANEWIDTH PANELEFT PANERIGHT PANEBOTTOM PANETOP PANEREGION)) +XPOINTER) PANEHEIGHT PANEWIDTH PANELEFT PANERIGHT PANEBOTTOM PANETOP PANEREGION OTHERPAMEPROPS) +PANELEFT _ 0 PANERIGHT _ 0 PANEBOTTOM _ 0 PANETOP _ 0 PANEWIDTH _ 0 PANEHEIGHT _ 0 PANEREGION _ ( +CREATEREGION 0 0 0 0)) (PUTPROPS FGETPANEPROP MACRO ((P FIELD) (ffetch (PANEPROPS FIELD) of P))) (PUTPROPS GETPANEPROP MACRO ((P FIELD) (fetch (PANEPROPS FIELD) of P))) (PUTPROPS SETPANEPROP MACRO ((P FIELD NEWVALUE) (replace (PANEPROPS FIELD) of P with NEWVALUE))) (PUTPROPS FSETPANEPROP MACRO ((P FIELD NEWVALUE) (freplace (PANEPROPS FIELD) of P with NEWVALUE))) +(PUTPROPS PANEWINDOW MACRO ((PANE) PANE)) (PUTPROPS PANEPROPS MACRO ((PANE) (fetch (TEXTWINDOW PANEPROPS) of PANE))) (PUTPROPS PANEPREFIX MACRO ((PANE) (LINEDESCRIPTOR! (GETPANEPROP (PANEPROPS PANE) PREFIXLINE)))) (PUTPROPS PANESUFFIX MACRO ((PANE) (GETPANEPROP (PANEPROPS PANE) SUFFIXLINE))) (PUTPROPS PANETOPLINE MACRO ((PANE) (FGETLD (PANEPREFIX PANE) NEXTLINE))) (PUTPROPS PANECARET MACRO ((PANE) (\DTEST (GETPANEPROP (PANEPROPS PANE) PCARET) (QUOTE TEDITCARET)))) -(PUTPROPS PANESTREAM MACRO ((PANE) (fetch (TEXTWINDOW WTEXTSTREAM) of PANE))) -(PUTPROPS PANETOBJ MACRO ((PANE) (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of (fetch (TEXTWINDOW -WTEXTSTREAM) of PANE))))) +(PUTPROPS PANECARETY MACRO ((PANE) (fetch (TEDITCARET TCCARETY) of (GETPANEPROP (PANEPROPS PANE) +PCARET)))) +(PUTPROPS PANETEXTSTREAM MACRO ((PANE) (fetch (TEXTWINDOW WTEXTSTREAM) of PANE))) +(PUTPROPS PANETEXTOBJ MACRO ((PANE) (FTEXTOBJ (PANETEXTSTREAM PANE)))) (PUTPROPS PANEBOTTOMLINE MACRO ((PANE) (GETLD (PANESUFFIX PANE) PREVLINE))) -(PUTPROPS \TEDIT.PREFIX.LCHARLIM MACRO ((PANE CHNO) (FSETLD (PANEPREFIX PANE) LCHARLAST CHNO))) +(PUTPROPS NEXTPANE MACRO ((PANE) (GETPANEPROP (PANEPROPS PANE) NEXTPANE))) +(PUTPROPS PREVPANE MACRO ((PANE) (GETPANEPROP (PANEPROPS PANE) PREVPANE))) (PUTPROPS PANETOP MACRO ((PANE PREG) (fetch (REGION TOP) of (OR PREG (DSPCLIPPINGREGION NIL PANE))))) +(PUTPROPS PANEPTOP MACRO ((PANE PREG) (fetch (REGION PTOP) of (OR PREG (DSPCLIPPINGREGION NIL PANE)))) +) (PUTPROPS PANEWIDTH MACRO ((PANE PREG) (fetch (REGION WIDTH) of (OR PREG (DSPCLIPPINGREGION NIL PANE)) ))) (PUTPROPS PANELEFT MACRO ((PANE PREG) (fetch (REGION LEFT) of (OR PREG (DSPCLIPPINGREGION NIL PANE)))) @@ -596,9 +601,9 @@ WTEXTSTREAM) of PANE))))) ))) (PUTPROPS PANEBOTTOM MACRO ((PANE PREG) (fetch (REGION BOTTOM) of (OR PREG (DSPCLIPPINGREGION NIL PANE ))))) -(PUTPROPS PANEHEIGHT MACRO ((PANE PREG) (fetch (REGION HEIGHT) of (OR PREG (DSPCLIPPINGREGION NIL PANE -))))) -(PUTPROPS PANEREGION MACRO ((PANE PREG) (OR PREG (DSPCLIPPINGREGION NIL PANE)))) +(PUTPROPS PANEHEIGHT MACRO ((PANE PREG) (GETPANEPROP (PANEPROPS PANE) PANEHEIGHT))) +(PUTPROPS PANEREGION MACRO ((PANE PREG) (OR PREG (GETPANEPROP (PANEPROPS PANE) PANEREGION) ( +DSPCLIPPINGREGION NIL (PANEWINDOW PANE))))) (I.S.OPR (QUOTE inpanes) NIL (QUOTE (bind $$BODY _ BODY declare (LOCALVARS $$BODY) first (SETQ I.V. ( OR (CL:IF (TYPENAMEP $$BODY (QUOTE TEXTOBJ)) (FGETTOBJ $$BODY PRIMARYPANE) $$BODY) (GO $$OUT))) by (OR (GETPANEPROP (PANEPROPS I.V.) NEXTPANE) (GO $$OUT))))) @@ -606,8 +611,8 @@ OR (CL:IF (TYPENAMEP $$BODY (QUOTE TEXTOBJ)) (FGETTOBJ $$BODY PRIMARYPANE) $$BOD GETPANEPROP (PANEPROPS P) NEXTPANE))) (GO $$OUT))) by (OR (GETPANEPROP (PANEPROPS I.V.) PREVPANE) (GO $$OUT))))) (PUTPROPS ALLBUTTONSUP MACRO (NIL (ZEROP (LOGAND 7 LASTMOUSEBUTTONS)))) -(PUTPROP (QUOTE TEDIT-WINDOW) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:07:08")) -(PUTPROP (QUOTE TEDIT-BUTTONS) (QUOTE IMPORTDATE) (IDATE "24-Mar-2025 09:26:13")) +(PUTPROP (QUOTE TEDIT-WINDOW) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 20:34:07")) +(PUTPROP (QUOTE TEDIT-BUTTONS) (QUOTE IMPORTDATE) (IDATE "14-Apr-2025 23:50:23")) (RPAQQ PTSPERPICA 12) (RPAQQ PTSPERINCH 72) (RPAQQ PICASPERINCH 6) @@ -618,15 +623,15 @@ $$OUT))))) (CONSTANTS (PTSPERPICA 12) (PTSPERINCH 72) (PICASPERINCH 6) (MICASPERINCH 2540) (PTSPERCM (FQUOTIENT PTSPERINCH 2.54)) (PTSPERMICA (FQUOTIENT PTSPERINCH MICASPERINCH)) (MICASPERPOINT (FQUOTIENT MICASPERINCH PTSPERINCH))) -(PUTPROP (QUOTE TEDIT-MENU) (QUOTE IMPORTDATE) (IDATE "23-Mar-2025 14:56:57")) -(PUTPROP (QUOTE TEDIT-FIND) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:07:00")) +(PUTPROP (QUOTE TEDIT-MENU) (QUOTE IMPORTDATE) (IDATE "20-Apr-2025 23:44:59")) +(PUTPROP (QUOTE TEDIT-FIND) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:42:57")) (RPAQQ \TEDIT.TTCCODES ((NONE 0) (CHARDELETE 1) (WORDDELETE 2) (DELETE 3) (FUNCTIONCALL 4) (REDO 5) ( UNDO 6) (CMD 7) (NEXT 8) (EXPAND 9) (CHARDELETE.FORWARD 10) (WORDDELETE.FORWARD 11) (PUNCT 20) (TEXT 21) (WHITESPACE 22))) (CONSTANTS \TEDIT.TTCCODES) (PUTPROPS \TEDIT.TTC MACRO ((CLASS) (CONSTANT (CADR (ASSOC (QUOTE CLASS) \TEDIT.TTCCODES))))) -(PUTPROP (QUOTE TEDIT-FNKEYS) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 10:13:53")) -(PUTPROP (QUOTE TEDIT-HCPY) (QUOTE IMPORTDATE) (IDATE "19-Feb-2025 13:34:37")) +(PUTPROP (QUOTE TEDIT-FNKEYS) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:42:44")) +(PUTPROP (QUOTE TEDIT-HCPY) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 19:07:23")) (DATATYPE TEDITHISTORYEVENT ((* ;; "Describes one event on the TEdit edit history list.") THACTION (* ; "A keyword specifying what the event was") THPOINT (* ; "Was the selection to the left or right?") THLEN (* ; "The # of chars involved") THCH# (* ; "The starting ch#") THFIRSTPIECE (* ; @@ -640,7 +645,7 @@ TEDITHISTORYEVENT THLEN) of DATUM) 0))))) (INIT (DEFPRINT (QUOTE TEDITHISTORYEVE (PUTPROPS GETTH MACRO ((EVENT FIELD) (fetch (TEDITHISTORYEVENT FIELD) of EVENT))) (PUTPROPS SETTH MACRO ((EVENT FIELD NEWVALUE) (replace (TEDITHISTORYEVENT FIELD) of EVENT with NEWVALUE))) -(PUTPROP (QUOTE TEDIT-HISTORY) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:23:18")) +(PUTPROP (QUOTE TEDIT-HISTORY) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:42:33")) (RECORD PAGEFORMATTINGSTATE ((* ;; "Contains the state for a TEdit page-formatting job.") PAGE# (* ; "The current page number. Counted from 1") FIRSTPAGE (* ;; "T if the current page is the 'first page' . Is set initially, and can be set again by the user at will. Gets reset after each page image is printed." @@ -671,8 +676,12 @@ REGIONPARENT FULLXPOINTER) (* ; "The parent node for this box, for sub-boxes") R (PUTPROPS GETPFS MACRO ((FS FIELD) (fetch (PAGEFORMATTINGSTATE FIELD) of FS))) (PUTPROPS SETPFS MACRO ((FS FIELD NEWVALUE) (replace (PAGEFORMATTINGSTATE FIELD) of FS with NEWVALUE)) ) -(PUTPROP (QUOTE TEDIT-PAGE) (QUOTE IMPORTDATE) (IDATE "23-Feb-2025 10:06:16")) -(PUTPROP (QUOTE TEDIT-ABBREV) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 10:13:36")) +(PUTPROPS TEDIT.SETQS MACRO (ARGS (BQUOTE (LET (($$VALUES (\, (CADR ARGS)))) (DECLARE (LOCALVARS +$$VALUES)) (PROG1 (CAR $$VALUES) (\,@ (FOR V IN (CAR ARGS) collect (COND (V (BQUOTE (SETQ (\, V) (POP +$$VALUES)))) (T (BQUOTE (SETQ $$VALUES (CDR $$VALUES)))))))))))) +(PUTPROPS TEDIT.VALUES MACRO (ARGS (BQUOTE (LIST (\,@ ARGS))))) +(PUTPROP (QUOTE TEDIT-PAGE) (QUOTE IMPORTDATE) (IDATE "21-Apr-2025 22:42:22")) +(PUTPROP (QUOTE TEDIT-ABBREV) (QUOTE IMPORTDATE) (IDATE "20-Apr-2025 23:30:30")) (PUTPROP (QUOTE TEDIT-TFBRAVO) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:23:07")) (DECLARE%: DONTCOPY (FILEMAP (NIL))) From 51d21b18dd9d710c66abe01294081f44c2d84cc0 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Wed, 23 Apr 2025 10:14:23 -0700 Subject: [PATCH 02/18] Rename CHARNAME to be CHARCODE.ENCODE Parallel to CHARCODE.DECODE. Definition will later be moved to CMLCHARACTER --- library/tedit/TEDIT-FNKEYS | 117 +++++++++++++++++--------------- library/tedit/TEDIT-FNKEYS.LCOM | Bin 39856 -> 40140 bytes 2 files changed, 63 insertions(+), 54 deletions(-) diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index 28eb93159..0e295824a 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,18 +1,20 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Apr-2025 21:05:38" {WMEDLEY}tedit>TEDIT-FNKEYS.;284 109589 +(FILECREATED "23-Apr-2025 10:12:10" {WMEDLEY}tedit>TEDIT-FNKEYS.;285 110441 :EDIT-BY rmk - :CHANGES-TO (FNS CHARNAME \TEDIT.KEY.TRANSFORM) + :CHANGES-TO (VARS TEDIT-FNKEYSCOMS) + (FNS CHARCODE.ENCODE TEDIT.GET.CHARBINDING TEDIT.GET.ALL.CHARBINDINGS + TEDIT.CHARBINDINGS.INVERT TEDIT.GET.ALL.CHARACTIONS) - :PREVIOUS-DATE "21-Apr-2025 22:42:44" {WMEDLEY}tedit>TEDIT-FNKEYS.;281) + :PREVIOUS-DATE "22-Apr-2025 21:05:38" {WMEDLEY}tedit>TEDIT-FNKEYS.;284) (PRETTYCOMPRINT TEDIT-FNKEYSCOMS) (RPAQQ TEDIT-FNKEYSCOMS - ((FNS CHARNAME) + ((FNS CHARCODE.ENCODE) (COMS (* ;  "Public functions (binding data below)") (FNS TEDIT.INSTALL.CHARBINDINGS TEDIT.CLEAR.CHARBINDINGS TEDIT.GET.CHARACTION @@ -67,7 +69,7 @@ (VARS TEDIT.BUTTONBITMAP))) (DEFINEQ -(CHARNAME +(CHARCODE.ENCODE [LAMBDA (CODE OCTALCHARS NONCHARIDENTITY) (* ; "Edited 22-Apr-2025 21:02 by rmk") (* ; "Edited 26-Mar-2025 10:37 by rmk") (* ; "Edited 23-Mar-2025 14:57 by rmk") @@ -88,13 +90,13 @@ (* ;; "") (if (LISTP CODE) - then (CONS (CHARNAME (CAR CODE) + then (CONS (CHARCODE.ENCODE (CAR CODE) OCTALCHARS) (AND (CDR CODE) - (CHARNAME (CDR CODE) + (CHARCODE.ENCODE (CDR CODE) OCTALCHARS))) elseif (CL:CHARACTERP CODE) - then (CHARNAME (CL:CHAR-CODE CODE) + then (CHARCODE.ENCODE (CL:CHAR-CODE CODE) OCTALCHARS) elseif (NULL CODE) then NIL @@ -108,21 +110,23 @@ else (LET ((CHARSET (LRSH CODE 8)) (CHAR (LOGAND CODE 255)) (ASCIICODE (LOGAND CODE 127)) - CSETNAME CHARNAME ASCIINAME) + CSETNAME CHARCODE.ENCODE ASCIINAME) (SETQ CSETNAME (if [CAR (find CN in CHARACTERSETNAMES suchthat (STRING.EQUAL CHARSET (CADR CN] else (OCTALSTRING CHARSET))) - [SETQ CHARNAME (if OCTALCHARS - then (OCTALSTRING CHAR) - else (CAR (for CC in CHARACTERNAMES when (EQ CHAR (CADR CC)) - smallest (NCHARS (CAR CC] - (CL:WHEN (STREQUAL CHARNAME "Tenexeol") (* ; + [SETQ CHARCODE.ENCODE (if OCTALCHARS + then (OCTALSTRING CHAR) + else (CAR (for CC in CHARACTERNAMES + when (EQ CHAR (CADR CC)) + smallest (NCHARS (CAR CC] + (CL:WHEN (STREQUAL CHARCODE.ENCODE "Tenexeol") + (* ;  "Put (%"^_%" Tenexeol) in CHARACTERNAMES ?") - (SETQ CHARNAME "^_")) + (SETQ CHARCODE.ENCODE "^_")) (* ;; "Didn't find the special character name, let's find a corresponding Asciiname to prefix with ^ and/or #") - (CL:UNLESS CHARNAME + (CL:UNLESS CHARCODE.ENCODE [SETQ ASCIINAME (if [CAR (for CC in CHARACTERNAMES when (EQ ASCIICODE (CADR CC)) smallest (NCHARS (CAR CC] @@ -132,13 +136,13 @@ (* ;; "Not named and not a control") (CONCAT (CHARACTER ASCIICODE] - (SETQ CHARNAME (CL:IF (IGEQ CHAR 128) - (CONCAT "#" ASCIINAME) - ASCIINAME))) + (SETQ CHARCODE.ENCODE (CL:IF (IGEQ CHAR 128) + (CONCAT "#" ASCIINAME) + ASCIINAME))) (CL:IF (AND (ZEROP CHARSET) (NOT OCTALCHARS)) - CHARNAME - (CONCAT CSETNAME "," CHARNAME))]) + CHARCODE.ENCODE + (CONCAT CSETNAME "," CHARCODE.ENCODE))]) ) @@ -283,7 +287,8 @@ NIL]) (TEDIT.GET.CHARBINDING - [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 5-Apr-2025 11:37 by rmk") + [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:40 by rmk") (* ;; "Returns the bindings for ACTION in BINDINGS, a binding list or a read-table specification. If BINDINGS is a readtable, looks at all currently installed bindings in that readtable. If NIL, uses TEDIT.READTABLE.") @@ -311,11 +316,12 @@ (* ; "charcode, not charname") (push CHARS (CL:IF RETURNCODES CCODE - (CHARNAME CCODE))))] + (CHARCODE.ENCODE CCODE))))] CHARS)]) (TEDIT.GET.ALL.CHARBINDINGS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 7-Apr-2025 22:11 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + (* ; "Edited 7-Apr-2025 22:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") @@ -348,11 +354,12 @@ [for A S in ACTIONS do (SETQ S (SORT (CDR A))) (RPLACD A (CL:IF RETURNCODES S - (CHARNAME S))] + (CHARCODE.ENCODE S))] ACTIONS]) (TEDIT.CHARBINDINGS.INVERT - [LAMBDA (CHARBINDINGS RETURNCODES) (* ; "Edited 7-Apr-2025 22:39 by rmk") + [LAMBDA (CHARBINDINGS RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + (* ; "Edited 7-Apr-2025 22:39 by rmk") (* ; "Edited 4-Apr-2025 09:58 by rmk") (* ; "Edited 1-Apr-2025 15:09 by rmk") @@ -371,11 +378,12 @@ finally (SORT ACTIONSPERCHAR T) (CL:UNLESS RETURNCODES (for APC in ACTIONSPERCHAR do (change (CAR APC) - (CHARNAME DATUM)))) + (CHARCODE.ENCODE DATUM)))) (RETURN ACTIONSPERCHAR]) (TEDIT.GET.ALL.CHARACTIONS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 5-Apr-2025 11:37 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") (CL:UNLESS (READTABLEP RDTBL) (SETQ RDTBL (if (NULL RDTBL) @@ -404,7 +412,7 @@ [for A S in ACTIONS do (SETQ S (SORT (CDR A))) (RPLACD A (CL:IF RETURNCODES S - (CHARNAME S))] + (CHARCODE.ENCODE S))] ACTIONS]) (TEDIT.CONFLICTING.CHARBINDINGS @@ -2025,29 +2033,30 @@ (RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4062 8365 (CHARNAME 4072 . 8363)) (8421 26879 (TEDIT.INSTALL.CHARBINDINGS 8431 . 12322) - (TEDIT.CLEAR.CHARBINDINGS 12324 . 15002) (TEDIT.GET.CHARACTION 15004 . 17750) (TEDIT.GET.CHARBINDING -17752 . 19775) (TEDIT.GET.ALL.CHARBINDINGS 19777 . 21977) (TEDIT.CHARBINDINGS.INVERT 21979 . 23593) ( -TEDIT.GET.ALL.CHARACTIONS 23595 . 25565) (TEDIT.CONFLICTING.CHARBINDINGS 25567 . 26877)) (26939 36994 -(\TEDIT.KEY.CHARLOOKS 26949 . 28141) (\TEDIT.KEY.QUAD 28143 . 30236) (\TEDIT.DEFAULTSSEL 30238 . 30849 -) (\TEDIT.SETDEFAULT.FROM.SEL 30851 . 31528) (\TEDIT.KEY.SIZE 31530 . 32726) (\TEDIT.SUBSCRIPTSEL -32728 . 32931) (\TEDIT.SUPERSCRIPTSEL 32933 . 33137) (\TEDIT.KEY.TRANSFORM 33139 . 35136) ( -\TEDIT.KEY.OPENLINE 35138 . 35592) (\TEDIT.KEY.FAMILYN 35594 . 36992)) (36995 37284 (CAP-CASECODE -37005 . 37282)) (37318 40585 (\TEDIT.SHOWCARETLOOKS 37328 . 39678) (\TEDIT.DESCRIBEFONT 39680 . 40583) -) (40616 55544 (\TEDIT.ONECHAR.BACKWARD 40626 . 41773) (\TEDIT.ONECHAR.FORWARD 41775 . 43011) ( -\TEDIT.ONELINE.UP 43013 . 45974) (\TEDIT.ONELINE.DOWN 45976 . 47633) (\TEDIT.ONELINE.MOVE 47635 . -49877) (\TEDIT.ONEWORD.BACKWARD 49879 . 51067) (\TEDIT.ONEWORD.FORWARD 51069 . 52256) ( -\TEDIT.LINE.BEGIN 52258 . 53337) (\TEDIT.LINE.END 53339 . 54576) (\TEDIT.DOCUMENT.BEGIN 54578 . 54937) - (\TEDIT.DOCUMENT.END 54939 . 55542)) (55545 57587 (\TEDIT.LINEDELETE.FORWARD 55555 . 56554) ( -\TEDIT.LINEDELETE.BACKWARD 56556 . 57585)) (57588 60116 (\TEDIT.KEY.NEST 57598 . 60114)) (60117 61399 -(\TEDIT.KEY.WRAP 60127 . 61397)) (61490 69538 (\TEDIT.KEY.FIND 61500 . 66678) ( -\TEDIT.KEY.FIND.SEARCHSTRING 66680 . 67820) (\TEDIT.GET.TARGET.STRING 67822 . 69536)) (69569 72201 ( -\TEDIT.KEY.SUBSTITUTE 69579 . 69800) (\TEDIT.MANPAGE 69802 . 71049) (\TEDIT.CALL.ED 71051 . 71881) ( -\TEDIT.SELECT.ALL 71883 . 72199)) (72228 77918 (\TEDIT.CLIPBOARD 72238 . 73993) ( -\TEDIT.COPYTOCLIPBOARD 73995 . 74775) (\TEDIT.EXTRACTTOCLIPBOARD 74777 . 74972) (\TEDIT.WRITE.SEL -74974 . 77916)) (78375 90157 (\TEDIT.READTABLE 78385 . 79321) (\TEDIT.WORDBOUND.READTABLE 79323 . -81952) (TEDIT.GETSYNTAX 81954 . 83473) (TEDIT.SETSYNTAX 83475 . 84680) (TEDIT.GETFUNCTION 84682 . -85947) (TEDIT.SETFUNCTION 85949 . 87935) (TEDIT.WORDGET 87937 . 88198) (TEDIT.WORDSET 88200 . 88831) ( -TEDIT.ATOMBOUND.READTABLE 88833 . 90155)) (101986 108525 (TEDIT.BUTTONS.BUILD 101996 . 106793) ( -TEDIT.BUTTONBITMAP.FILL 106795 . 108523))))) + (FILEMAP (NIL (4222 8753 (CHARCODE.ENCODE 4232 . 8751)) (8809 27731 (TEDIT.INSTALL.CHARBINDINGS 8819 + . 12710) (TEDIT.CLEAR.CHARBINDINGS 12712 . 15390) (TEDIT.GET.CHARACTION 15392 . 18138) ( +TEDIT.GET.CHARBINDING 18140 . 20279) (TEDIT.GET.ALL.CHARBINDINGS 20281 . 22597) ( +TEDIT.CHARBINDINGS.INVERT 22599 . 24329) (TEDIT.GET.ALL.CHARACTIONS 24331 . 26417) ( +TEDIT.CONFLICTING.CHARBINDINGS 26419 . 27729)) (27791 37846 (\TEDIT.KEY.CHARLOOKS 27801 . 28993) ( +\TEDIT.KEY.QUAD 28995 . 31088) (\TEDIT.DEFAULTSSEL 31090 . 31701) (\TEDIT.SETDEFAULT.FROM.SEL 31703 . +32380) (\TEDIT.KEY.SIZE 32382 . 33578) (\TEDIT.SUBSCRIPTSEL 33580 . 33783) (\TEDIT.SUPERSCRIPTSEL +33785 . 33989) (\TEDIT.KEY.TRANSFORM 33991 . 35988) (\TEDIT.KEY.OPENLINE 35990 . 36444) ( +\TEDIT.KEY.FAMILYN 36446 . 37844)) (37847 38136 (CAP-CASECODE 37857 . 38134)) (38170 41437 ( +\TEDIT.SHOWCARETLOOKS 38180 . 40530) (\TEDIT.DESCRIBEFONT 40532 . 41435)) (41468 56396 ( +\TEDIT.ONECHAR.BACKWARD 41478 . 42625) (\TEDIT.ONECHAR.FORWARD 42627 . 43863) (\TEDIT.ONELINE.UP 43865 + . 46826) (\TEDIT.ONELINE.DOWN 46828 . 48485) (\TEDIT.ONELINE.MOVE 48487 . 50729) ( +\TEDIT.ONEWORD.BACKWARD 50731 . 51919) (\TEDIT.ONEWORD.FORWARD 51921 . 53108) (\TEDIT.LINE.BEGIN 53110 + . 54189) (\TEDIT.LINE.END 54191 . 55428) (\TEDIT.DOCUMENT.BEGIN 55430 . 55789) (\TEDIT.DOCUMENT.END +55791 . 56394)) (56397 58439 (\TEDIT.LINEDELETE.FORWARD 56407 . 57406) (\TEDIT.LINEDELETE.BACKWARD +57408 . 58437)) (58440 60968 (\TEDIT.KEY.NEST 58450 . 60966)) (60969 62251 (\TEDIT.KEY.WRAP 60979 . +62249)) (62342 70390 (\TEDIT.KEY.FIND 62352 . 67530) (\TEDIT.KEY.FIND.SEARCHSTRING 67532 . 68672) ( +\TEDIT.GET.TARGET.STRING 68674 . 70388)) (70421 73053 (\TEDIT.KEY.SUBSTITUTE 70431 . 70652) ( +\TEDIT.MANPAGE 70654 . 71901) (\TEDIT.CALL.ED 71903 . 72733) (\TEDIT.SELECT.ALL 72735 . 73051)) (73080 + 78770 (\TEDIT.CLIPBOARD 73090 . 74845) (\TEDIT.COPYTOCLIPBOARD 74847 . 75627) ( +\TEDIT.EXTRACTTOCLIPBOARD 75629 . 75824) (\TEDIT.WRITE.SEL 75826 . 78768)) (79227 91009 ( +\TEDIT.READTABLE 79237 . 80173) (\TEDIT.WORDBOUND.READTABLE 80175 . 82804) (TEDIT.GETSYNTAX 82806 . +84325) (TEDIT.SETSYNTAX 84327 . 85532) (TEDIT.GETFUNCTION 85534 . 86799) (TEDIT.SETFUNCTION 86801 . +88787) (TEDIT.WORDGET 88789 . 89050) (TEDIT.WORDSET 89052 . 89683) (TEDIT.ATOMBOUND.READTABLE 89685 . +91007)) (102838 109377 (TEDIT.BUTTONS.BUILD 102848 . 107645) (TEDIT.BUTTONBITMAP.FILL 107647 . 109375) +)))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 52814e5a57dee81539403201f5c5a978dd4ecb22..6aa1f9a890c043ae3fabfd252e31a53bddc150d9 100644 GIT binary patch delta 446 zcmdn6o$1U@rU?v#lgeH5Is&jEoSHMn+Z!23E$# z6Zc8+IQzS}>bd%XD22&_f?|`e<^;rM<^grMh5Gm?AZydp(^FDNNi0cCQNU)Lg_0(h zhMT94t8d{+fSV>CN9cd}Ml?+v#lgeG!?j%j0}+^jjaqUtPD*j z?vwKNbM$pp$jnnvatrnG0cu02($mvZQbfFRc}Pyf(hT^FEH3aG9%vN8c86D0+%iM1MBhMHVZ&6A%o=`sTi*(}TK!ORc# zh@mme Date: Wed, 23 Apr 2025 10:21:22 -0700 Subject: [PATCH 03/18] Don't bring color if black --- library/tedit/TEDIT-FNKEYS | 71 +++++++++++++++++--------------- library/tedit/TEDIT-FNKEYS.LCOM | Bin 40140 -> 40082 bytes 2 files changed, 37 insertions(+), 34 deletions(-) diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index 0e295824a..0ed78498d 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Apr-2025 10:12:10" {WMEDLEY}tedit>TEDIT-FNKEYS.;285 110441 +(FILECREATED "23-Apr-2025 10:20:47" {WMEDLEY}tedit>TEDIT-FNKEYS.;287 110652 :EDIT-BY rmk - :CHANGES-TO (VARS TEDIT-FNKEYSCOMS) - (FNS CHARCODE.ENCODE TEDIT.GET.CHARBINDING TEDIT.GET.ALL.CHARBINDINGS - TEDIT.CHARBINDINGS.INVERT TEDIT.GET.ALL.CHARACTIONS) + :CHANGES-TO (FNS \TEDIT.SHOWCARETLOOKS CHARCODE.ENCODE TEDIT.GET.CHARBINDING + TEDIT.GET.ALL.CHARBINDINGS TEDIT.CHARBINDINGS.INVERT TEDIT.GET.ALL.CHARACTIONS + ) + (VARS TEDIT-FNKEYSCOMS) :PREVIOUS-DATE "22-Apr-2025 21:05:38" {WMEDLEY}tedit>TEDIT-FNKEYS.;284) @@ -618,7 +619,8 @@ (DEFINEQ (\TEDIT.SHOWCARETLOOKS - [LAMBDA (TSTREAM) (* ; "Edited 15-Apr-2025 16:44 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 23-Apr-2025 10:20 by rmk") + (* ; "Edited 15-Apr-2025 16:44 by rmk") (* ; "Edited 27-Mar-2025 08:04 by rmk") (* ; "Edited 15-Mar-2025 20:40 by rmk") (* ; "Edited 13-Mar-2025 23:52 by rmk") @@ -627,7 +629,7 @@ (* ; "Edited 30-May-91 21:09 by jds") (LET ((LOOKS (FGETTOBJ (TEXTOBJ TSTREAM) CARETLOOKS))) - (TEDIT.PROMPTPRINT TSTREAM (CONCAT (\TEDIT.DESCRIBEFONT (GETCLOOKS LOOKS CLFONT)) + (TEDIT.PROMPTPRINT TSTREAM [CONCAT (\TEDIT.DESCRIBEFONT (GETCLOOKS LOOKS CLFONT)) (CL:IF (AND (GETCLOOKS LOOKS CLOFFSET) (NEQ (GETCLOOKS LOOKS CLOFFSET) 0)) @@ -645,9 +647,10 @@ (CL:IF (GETCLOOKS LOOKS CLUNBREAKABLE) " unbreakable" "") - (CL:IF (GETCLOOKS LOOKS CLCOLOR) - (CONCAT " color " (L-CASE (GETCLOOKS LOOKS CLCOLOR))) - "")) + (CL:IF (EQ 'BLACK (GETCLOOKS LOOKS CLCOLOR)) + "" + (CONCAT " color " (L-CASE (GETCLOOKS LOOKS CLCOLOR)))) + ] T]) (\TEDIT.DESCRIBEFONT @@ -2033,30 +2036,30 @@ (RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4222 8753 (CHARCODE.ENCODE 4232 . 8751)) (8809 27731 (TEDIT.INSTALL.CHARBINDINGS 8819 - . 12710) (TEDIT.CLEAR.CHARBINDINGS 12712 . 15390) (TEDIT.GET.CHARACTION 15392 . 18138) ( -TEDIT.GET.CHARBINDING 18140 . 20279) (TEDIT.GET.ALL.CHARBINDINGS 20281 . 22597) ( -TEDIT.CHARBINDINGS.INVERT 22599 . 24329) (TEDIT.GET.ALL.CHARACTIONS 24331 . 26417) ( -TEDIT.CONFLICTING.CHARBINDINGS 26419 . 27729)) (27791 37846 (\TEDIT.KEY.CHARLOOKS 27801 . 28993) ( -\TEDIT.KEY.QUAD 28995 . 31088) (\TEDIT.DEFAULTSSEL 31090 . 31701) (\TEDIT.SETDEFAULT.FROM.SEL 31703 . -32380) (\TEDIT.KEY.SIZE 32382 . 33578) (\TEDIT.SUBSCRIPTSEL 33580 . 33783) (\TEDIT.SUPERSCRIPTSEL -33785 . 33989) (\TEDIT.KEY.TRANSFORM 33991 . 35988) (\TEDIT.KEY.OPENLINE 35990 . 36444) ( -\TEDIT.KEY.FAMILYN 36446 . 37844)) (37847 38136 (CAP-CASECODE 37857 . 38134)) (38170 41437 ( -\TEDIT.SHOWCARETLOOKS 38180 . 40530) (\TEDIT.DESCRIBEFONT 40532 . 41435)) (41468 56396 ( -\TEDIT.ONECHAR.BACKWARD 41478 . 42625) (\TEDIT.ONECHAR.FORWARD 42627 . 43863) (\TEDIT.ONELINE.UP 43865 - . 46826) (\TEDIT.ONELINE.DOWN 46828 . 48485) (\TEDIT.ONELINE.MOVE 48487 . 50729) ( -\TEDIT.ONEWORD.BACKWARD 50731 . 51919) (\TEDIT.ONEWORD.FORWARD 51921 . 53108) (\TEDIT.LINE.BEGIN 53110 - . 54189) (\TEDIT.LINE.END 54191 . 55428) (\TEDIT.DOCUMENT.BEGIN 55430 . 55789) (\TEDIT.DOCUMENT.END -55791 . 56394)) (56397 58439 (\TEDIT.LINEDELETE.FORWARD 56407 . 57406) (\TEDIT.LINEDELETE.BACKWARD -57408 . 58437)) (58440 60968 (\TEDIT.KEY.NEST 58450 . 60966)) (60969 62251 (\TEDIT.KEY.WRAP 60979 . -62249)) (62342 70390 (\TEDIT.KEY.FIND 62352 . 67530) (\TEDIT.KEY.FIND.SEARCHSTRING 67532 . 68672) ( -\TEDIT.GET.TARGET.STRING 68674 . 70388)) (70421 73053 (\TEDIT.KEY.SUBSTITUTE 70431 . 70652) ( -\TEDIT.MANPAGE 70654 . 71901) (\TEDIT.CALL.ED 71903 . 72733) (\TEDIT.SELECT.ALL 72735 . 73051)) (73080 - 78770 (\TEDIT.CLIPBOARD 73090 . 74845) (\TEDIT.COPYTOCLIPBOARD 74847 . 75627) ( -\TEDIT.EXTRACTTOCLIPBOARD 75629 . 75824) (\TEDIT.WRITE.SEL 75826 . 78768)) (79227 91009 ( -\TEDIT.READTABLE 79237 . 80173) (\TEDIT.WORDBOUND.READTABLE 80175 . 82804) (TEDIT.GETSYNTAX 82806 . -84325) (TEDIT.SETSYNTAX 84327 . 85532) (TEDIT.GETFUNCTION 85534 . 86799) (TEDIT.SETFUNCTION 86801 . -88787) (TEDIT.WORDGET 88789 . 89050) (TEDIT.WORDSET 89052 . 89683) (TEDIT.ATOMBOUND.READTABLE 89685 . -91007)) (102838 109377 (TEDIT.BUTTONS.BUILD 102848 . 107645) (TEDIT.BUTTONBITMAP.FILL 107647 . 109375) + (FILEMAP (NIL (4268 8799 (CHARCODE.ENCODE 4278 . 8797)) (8855 27777 (TEDIT.INSTALL.CHARBINDINGS 8865 + . 12756) (TEDIT.CLEAR.CHARBINDINGS 12758 . 15436) (TEDIT.GET.CHARACTION 15438 . 18184) ( +TEDIT.GET.CHARBINDING 18186 . 20325) (TEDIT.GET.ALL.CHARBINDINGS 20327 . 22643) ( +TEDIT.CHARBINDINGS.INVERT 22645 . 24375) (TEDIT.GET.ALL.CHARACTIONS 24377 . 26463) ( +TEDIT.CONFLICTING.CHARBINDINGS 26465 . 27775)) (27837 37892 (\TEDIT.KEY.CHARLOOKS 27847 . 29039) ( +\TEDIT.KEY.QUAD 29041 . 31134) (\TEDIT.DEFAULTSSEL 31136 . 31747) (\TEDIT.SETDEFAULT.FROM.SEL 31749 . +32426) (\TEDIT.KEY.SIZE 32428 . 33624) (\TEDIT.SUBSCRIPTSEL 33626 . 33829) (\TEDIT.SUPERSCRIPTSEL +33831 . 34035) (\TEDIT.KEY.TRANSFORM 34037 . 36034) (\TEDIT.KEY.OPENLINE 36036 . 36490) ( +\TEDIT.KEY.FAMILYN 36492 . 37890)) (37893 38182 (CAP-CASECODE 37903 . 38180)) (38216 41648 ( +\TEDIT.SHOWCARETLOOKS 38226 . 40741) (\TEDIT.DESCRIBEFONT 40743 . 41646)) (41679 56607 ( +\TEDIT.ONECHAR.BACKWARD 41689 . 42836) (\TEDIT.ONECHAR.FORWARD 42838 . 44074) (\TEDIT.ONELINE.UP 44076 + . 47037) (\TEDIT.ONELINE.DOWN 47039 . 48696) (\TEDIT.ONELINE.MOVE 48698 . 50940) ( +\TEDIT.ONEWORD.BACKWARD 50942 . 52130) (\TEDIT.ONEWORD.FORWARD 52132 . 53319) (\TEDIT.LINE.BEGIN 53321 + . 54400) (\TEDIT.LINE.END 54402 . 55639) (\TEDIT.DOCUMENT.BEGIN 55641 . 56000) (\TEDIT.DOCUMENT.END +56002 . 56605)) (56608 58650 (\TEDIT.LINEDELETE.FORWARD 56618 . 57617) (\TEDIT.LINEDELETE.BACKWARD +57619 . 58648)) (58651 61179 (\TEDIT.KEY.NEST 58661 . 61177)) (61180 62462 (\TEDIT.KEY.WRAP 61190 . +62460)) (62553 70601 (\TEDIT.KEY.FIND 62563 . 67741) (\TEDIT.KEY.FIND.SEARCHSTRING 67743 . 68883) ( +\TEDIT.GET.TARGET.STRING 68885 . 70599)) (70632 73264 (\TEDIT.KEY.SUBSTITUTE 70642 . 70863) ( +\TEDIT.MANPAGE 70865 . 72112) (\TEDIT.CALL.ED 72114 . 72944) (\TEDIT.SELECT.ALL 72946 . 73262)) (73291 + 78981 (\TEDIT.CLIPBOARD 73301 . 75056) (\TEDIT.COPYTOCLIPBOARD 75058 . 75838) ( +\TEDIT.EXTRACTTOCLIPBOARD 75840 . 76035) (\TEDIT.WRITE.SEL 76037 . 78979)) (79438 91220 ( +\TEDIT.READTABLE 79448 . 80384) (\TEDIT.WORDBOUND.READTABLE 80386 . 83015) (TEDIT.GETSYNTAX 83017 . +84536) (TEDIT.SETSYNTAX 84538 . 85743) (TEDIT.GETFUNCTION 85745 . 87010) (TEDIT.SETFUNCTION 87012 . +88998) (TEDIT.WORDGET 89000 . 89261) (TEDIT.WORDSET 89263 . 89894) (TEDIT.ATOMBOUND.READTABLE 89896 . +91218)) (103049 109588 (TEDIT.BUTTONS.BUILD 103059 . 107856) (TEDIT.BUTTONBITMAP.FILL 107858 . 109586) )))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 6aa1f9a890c043ae3fabfd252e31a53bddc150d9..2ece9bed42860c9b9ced175c851d1c85739d29ab 100644 GIT binary patch delta 273 zcmX@JlWEdUrU_}RMg~?U<`c867|kax)0>>ACdQnZr!d)%QI?TwayFwWRK8kE-CV)Y z(7?>pNWse0#WO_LDN>;*H(P%gLPdTLtGU$Ph&DxWxO}}l=^z}bOs>!FfAWMZIA?09&8}aNdZm}#RVdG z*+FC`H;5Eq&@eKzob0G3ENNtDtl;eL=j<4wU}Rv9U>Z%nreP*#X{rEpR*;Xszjv^L pp}DDolaHgb_hbpp8eu~VO9dr`L6-mk delta 234 zcmbQVlj+P(rU_}RhDKI~1{1Tb7)>WG)0@1Ov6NLIGf#nQ;#=9t+>E9W>B)&qT6U%i zhK2?vCWZ=Dt}dP-x=xV_MY-7uTvpB=j(+a0!MY*-3L0UKLBR?kV0kw`Z`a6RXMf*d zO$7}%zsai^D+R0qf?UHq{X>IwT^vJP6}UG0Fd3^d-k98=zMg55)MQ%?ai*61$pIRo zjK-7SJBf;$D>(c6IXi|Z7+RVlm Date: Wed, 23 Apr 2025 12:09:34 -0700 Subject: [PATCH 04/18] Change loadup order to eliminate undefined in fuller database --- library/tedit/TEDIT | 68 +++++++++++++++++++-------------------- library/tedit/TEDIT.LCOM | Bin 33043 -> 32986 bytes 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index d6d63e118..501d00b92 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Apr-2025 10:28:59" {WMEDLEY}tedit>TEDIT.;822 144773 +(FILECREATED "23-Apr-2025 11:42:58" {WMEDLEY}tedit>TEDIT.;824 144729 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.DELETE \TEDIT.MOVE \TEDIT.COPY \TEDIT.COPYPIECE) + :CHANGES-TO (VARS TEDITCOMS) - :PREVIOUS-DATE "21-Apr-2025 22:54:33" {WMEDLEY}tedit>TEDIT.;818) + :PREVIOUS-DATE "22-Apr-2025 10:28:59" {WMEDLEY}tedit>TEDIT.;822) (PRETTYCOMPRINT TEDITCOMS) @@ -19,8 +19,8 @@ (* ;; "Would be nice to just do (DOFILESLOAD (CDR TEDITFILES)). But the order for exports.all and the order for loading have to be aligned.") (VARS TEDITFILES) - (FILES TEDIT-PCTREE TEDIT-STREAM TEDIT-COMMAND TEDIT-SCREEN TEDIT-ABBREV TEDIT-LOOKS - TEDIT-STYLES) + (FILES TEDIT-PCTREE TEDIT-SELECTION TEDIT-SCREEN TEDIT-STREAM TEDIT-COMMAND + TEDIT-ABBREV TEDIT-LOOKS TEDIT-STYLES) (FNS MAKE-TEDIT-EXPORTS.ALL UPDATE-TEDIT EDIT-TEDIT) (DECLARE%: DONTEVAL@LOAD DONTCOPY DONTEVAL@COMPILE @@ -69,8 +69,8 @@ (INITVARS (\TEDIT.THELPFLG NIL))) (FNS \TEDIT.PARAPIECES \TEDIT.PARACHNOS \TEDIT.PARA.FIRST \TEDIT.PARA.LAST) (FNS \TEDIT.WORD.FIRST \TEDIT.WORD.LAST) - (FILES TEDIT-FIND TEDIT-HISTORY TEDIT-FILE TEDIT-OLDFILE TEDIT-WINDOW TEDIT-SELECTION - TEDIT-TFBRAVO TEDIT-HCPY TEDIT-PAGE TEDIT-BUTTONS TEDIT-MENU TEDIT-FNKEYS) + (FILES TEDIT-FIND TEDIT-HISTORY TEDIT-FILE TEDIT-OLDFILE TEDIT-WINDOW TEDIT-TFBRAVO + TEDIT-HCPY TEDIT-PAGE TEDIT-BUTTONS TEDIT-MENU TEDIT-FNKEYS) (COMS (* ; "TEDIT Support information") (E (SETQ TEDITSYSTEMDATE (DATE))) (VARS TEDITSYSTEMDATE)) @@ -99,8 +99,8 @@ TEDIT-MENU TEDIT-FIND TEDIT-FNKEYS TEDIT-HCPY TEDIT-HISTORY TEDIT-PAGE TEDIT-ABBREV TEDIT-TFBRAVO)) -(FILESLOAD TEDIT-PCTREE TEDIT-STREAM TEDIT-COMMAND TEDIT-SCREEN TEDIT-ABBREV TEDIT-LOOKS TEDIT-STYLES - ) +(FILESLOAD TEDIT-PCTREE TEDIT-SELECTION TEDIT-SCREEN TEDIT-STREAM TEDIT-COMMAND TEDIT-ABBREV + TEDIT-LOOKS TEDIT-STYLES) (DEFINEQ (MAKE-TEDIT-EXPORTS.ALL @@ -2296,15 +2296,15 @@ else CHNO]) ) -(FILESLOAD TEDIT-FIND TEDIT-HISTORY TEDIT-FILE TEDIT-OLDFILE TEDIT-WINDOW TEDIT-SELECTION - TEDIT-TFBRAVO TEDIT-HCPY TEDIT-PAGE TEDIT-BUTTONS TEDIT-MENU TEDIT-FNKEYS) +(FILESLOAD TEDIT-FIND TEDIT-HISTORY TEDIT-FILE TEDIT-OLDFILE TEDIT-WINDOW TEDIT-TFBRAVO TEDIT-HCPY + TEDIT-PAGE TEDIT-BUTTONS TEDIT-MENU TEDIT-FNKEYS) (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "22-Apr-2025 10:28:59") +(RPAQQ TEDITSYSTEMDATE "23-Apr-2025 11:42:58") @@ -2314,26 +2314,26 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4839 7233 (MAKE-TEDIT-EXPORTS.ALL 4849 . 5395) (UPDATE-TEDIT 5397 . 6326) (EDIT-TEDIT -6328 . 7231)) (8663 36650 (TEDIT 8673 . 11251) (TEXTSTREAM 11253 . 13173) (TEXTSTREAMP 13175 . 13559) -(COERCETEXTSTREAM 13561 . 17772) (TEDIT.CONCAT 17774 . 21076) (TEDITSTRING 21078 . 21992) (TEDIT-SEE -21994 . 22553) (TEDIT.COPY 22555 . 24700) (TEDIT.DELETE 24702 . 26063) (TEDIT.INSERT 26065 . 29439) ( -TEDIT.TERPRI 29441 . 30555) (TEDIT.KILL 30557 . 31473) (TEDIT.QUIT 31475 . 32841) (TEDIT.MOVE 32843 . -33731) (TEDIT.STRINGWIDTH 33733 . 34404) (TEDIT.CHARWIDTH 34406 . 36648)) (36651 38592 (TEXTOBJ 36661 - . 37126) (COERCETEXTOBJ 37128 . 38590)) (39992 41642 (TDRIBBLE 40002 . 41640)) (41683 54668 ( -TEDIT.INSERT.OBJECT 41693 . 46709) (TEDIT.EDIT.OBJECT 46711 . 49540) (TEDIT.OBJECT.CHANGED 49542 . -52623) (TEDIT.MAP.OBJECTS 52625 . 54196) (\TEDIT.FIRST.OBJPIECE 54198 . 54431) (\TEDIT.NEXT.OBJPIECE -54433 . 54666)) (54691 62134 (\TEDIT.CONCAT.PAGEFRAMES 54701 . 59768) (\TEDIT.GET.PAGE.HEADINGS 59770 - . 60799) (\TEDIT.CONCAT.INSTALL.HEADINGS 60801 . 62132)) (62135 65742 (\TEDIT.MOVE.MSG 62145 . 64226) - (\TEDIT.READONLY 64228 . 65740)) (65743 71407 (TEDIT.NCHARS 65753 . 66126) (TEDIT.RPLCHARCODE 66128 - . 69007) (TEDIT.NTHCHARCODE 69009 . 70936) (TEDIT.NTHCHAR 70938 . 71405)) (71453 127702 (\TEDIT1 -71463 . 73540) (\TEDIT.INSERT 73542 . 79803) (\TEDIT.MOVE 79805 . 87607) (\TEDIT.COPY 87609 . 92038) ( -\TEDIT.REPLACE.SELPIECES 92040 . 96362) (\TEDIT.INSERT.SELPIECES 96364 . 99361) (\TEDIT.RESTARTFN -99363 . 101868) (\TEDIT.CHARDELETE 101870 . 104799) (\TEDIT.COPYPIECE 104801 . 109814) ( -\TEDIT.APPLY.OBJFN 109816 . 112902) (\TEDIT.DELETE 112904 . 117272) (\TEDIT.DIFFUSE.PARALOOKS 117274 - . 119545) (\TEDIT.WORDDELETE 119547 . 121162) (\TEDIT.WORDDELETE.FORWARD 121164 . 122953) ( -\TEDIT.FINISHEDIT? 122955 . 127700)) (127703 128362 (\TEDIT.THELP 127713 . 128360)) (128396 137180 ( -\TEDIT.PARAPIECES 128406 . 130380) (\TEDIT.PARACHNOS 130382 . 131274) (\TEDIT.PARA.FIRST 131276 . -134143) (\TEDIT.PARA.LAST 134145 . 137178)) (137181 144276 (\TEDIT.WORD.FIRST 137191 . 141195) ( -\TEDIT.WORD.LAST 141197 . 144274))))) + (FILEMAP (NIL (4811 7205 (MAKE-TEDIT-EXPORTS.ALL 4821 . 5367) (UPDATE-TEDIT 5369 . 6298) (EDIT-TEDIT +6300 . 7203)) (8635 36622 (TEDIT 8645 . 11223) (TEXTSTREAM 11225 . 13145) (TEXTSTREAMP 13147 . 13531) +(COERCETEXTSTREAM 13533 . 17744) (TEDIT.CONCAT 17746 . 21048) (TEDITSTRING 21050 . 21964) (TEDIT-SEE +21966 . 22525) (TEDIT.COPY 22527 . 24672) (TEDIT.DELETE 24674 . 26035) (TEDIT.INSERT 26037 . 29411) ( +TEDIT.TERPRI 29413 . 30527) (TEDIT.KILL 30529 . 31445) (TEDIT.QUIT 31447 . 32813) (TEDIT.MOVE 32815 . +33703) (TEDIT.STRINGWIDTH 33705 . 34376) (TEDIT.CHARWIDTH 34378 . 36620)) (36623 38564 (TEXTOBJ 36633 + . 37098) (COERCETEXTOBJ 37100 . 38562)) (39964 41614 (TDRIBBLE 39974 . 41612)) (41655 54640 ( +TEDIT.INSERT.OBJECT 41665 . 46681) (TEDIT.EDIT.OBJECT 46683 . 49512) (TEDIT.OBJECT.CHANGED 49514 . +52595) (TEDIT.MAP.OBJECTS 52597 . 54168) (\TEDIT.FIRST.OBJPIECE 54170 . 54403) (\TEDIT.NEXT.OBJPIECE +54405 . 54638)) (54663 62106 (\TEDIT.CONCAT.PAGEFRAMES 54673 . 59740) (\TEDIT.GET.PAGE.HEADINGS 59742 + . 60771) (\TEDIT.CONCAT.INSTALL.HEADINGS 60773 . 62104)) (62107 65714 (\TEDIT.MOVE.MSG 62117 . 64198) + (\TEDIT.READONLY 64200 . 65712)) (65715 71379 (TEDIT.NCHARS 65725 . 66098) (TEDIT.RPLCHARCODE 66100 + . 68979) (TEDIT.NTHCHARCODE 68981 . 70908) (TEDIT.NTHCHAR 70910 . 71377)) (71425 127674 (\TEDIT1 +71435 . 73512) (\TEDIT.INSERT 73514 . 79775) (\TEDIT.MOVE 79777 . 87579) (\TEDIT.COPY 87581 . 92010) ( +\TEDIT.REPLACE.SELPIECES 92012 . 96334) (\TEDIT.INSERT.SELPIECES 96336 . 99333) (\TEDIT.RESTARTFN +99335 . 101840) (\TEDIT.CHARDELETE 101842 . 104771) (\TEDIT.COPYPIECE 104773 . 109786) ( +\TEDIT.APPLY.OBJFN 109788 . 112874) (\TEDIT.DELETE 112876 . 117244) (\TEDIT.DIFFUSE.PARALOOKS 117246 + . 119517) (\TEDIT.WORDDELETE 119519 . 121134) (\TEDIT.WORDDELETE.FORWARD 121136 . 122925) ( +\TEDIT.FINISHEDIT? 122927 . 127672)) (127675 128334 (\TEDIT.THELP 127685 . 128332)) (128368 137152 ( +\TEDIT.PARAPIECES 128378 . 130352) (\TEDIT.PARACHNOS 130354 . 131246) (\TEDIT.PARA.FIRST 131248 . +134115) (\TEDIT.PARA.LAST 134117 . 137150)) (137153 144248 (\TEDIT.WORD.FIRST 137163 . 141167) ( +\TEDIT.WORD.LAST 141169 . 144246))))) STOP diff --git a/library/tedit/TEDIT.LCOM b/library/tedit/TEDIT.LCOM index 0e030fcebcdb6e0f603e52f5a46daf594f629b88..30d6be71f0e0b6980a4a5e76aabe1fb4b67269d3 100644 GIT binary patch delta 334 zcmbQ-#B{5XX+ngsv94o5k*<+}k*R{Ap_Pe|m8r$VY-1-AO$9C`BO`>Qk&%^wft9hb zl0s5ZYI1&VL1s>Bib85dK~b@)l|o*ANk(Q~x%tJMj5#<$Dm*ZpnA^`XMf*dO$Dof zAlEQY|IlDv7oahd)fufeb27cppZu(nfAW!P&B^y`6ec?qIWTc4Y;Gz_W}occAjilx zIkQ1+vQ?E9r>lZSuxm)50@vo;DsLvJCZ)-eMe3XX*H|-)gt$2cIfnT|EY$UI4v19X QnjF{QjV-h$?`a4J0Qd)Bp#T5? delta 422 zcmccB$TYc$X+ngsk*;Gwk*<+}k*R{AiIu65m5Is3Y-4{TO$9C`BSVCwk+GG5g_WVH zl0s2xa(-?>W=?8~LTW`pPG)juNlvAzl|oF2tBYrdp0j^IWPqouv#Ua8o`RBFsE?0= zk>SJ#5=t0`85t;Pa%s4E`nWm=xjF)MPoBzX#SV0aiMhG)tV~U;jE$8PxF*&rFd15GKF|0* zfAWlKk;&_8*w})B?s4^-ysk!LvRIJ=lLFV~h@xb6m0+L~oI^bQ{S?4H)eUiT3UUnd zSKxwhJ)D8=n5^1hIH^jDlgm{>BiJ=0P+_xil{XW*$&NK5n-ACcF>@n~Fc=UM< From a8f2fcc61a2d5c734b2dc688fb02b7e2168de0d6 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Wed, 23 Apr 2025 19:10:20 -0700 Subject: [PATCH 05/18] Pass NONCHARIDENTITY in recursive calls to CHARCODE.ENCODE --- library/tedit/TEDIT-FNKEYS | 95 +++++++++++++++----------------- library/tedit/TEDIT-FNKEYS.LCOM | Bin 40082 -> 39919 bytes 2 files changed, 45 insertions(+), 50 deletions(-) diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index 0ed78498d..e15431f7d 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,15 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Apr-2025 10:20:47" {WMEDLEY}tedit>TEDIT-FNKEYS.;287 110652 +(FILECREATED "23-Apr-2025 19:09:21" {WMEDLEY}tedit>TEDIT-FNKEYS.;288 110287 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SHOWCARETLOOKS CHARCODE.ENCODE TEDIT.GET.CHARBINDING - TEDIT.GET.ALL.CHARBINDINGS TEDIT.CHARBINDINGS.INVERT TEDIT.GET.ALL.CHARACTIONS - ) - (VARS TEDIT-FNKEYSCOMS) + :CHANGES-TO (FNS CHARCODE.ENCODE) - :PREVIOUS-DATE "22-Apr-2025 21:05:38" {WMEDLEY}tedit>TEDIT-FNKEYS.;284) + :PREVIOUS-DATE "23-Apr-2025 10:20:47" {WMEDLEY}tedit>TEDIT-FNKEYS.;287) (PRETTYCOMPRINT TEDIT-FNKEYSCOMS) @@ -71,7 +68,7 @@ (DEFINEQ (CHARCODE.ENCODE - [LAMBDA (CODE OCTALCHARS NONCHARIDENTITY) (* ; "Edited 22-Apr-2025 21:02 by rmk") + [LAMBDA (CODE OCTALCHARS NONCHARIDENTITY) (* ; "Edited 23-Apr-2025 19:08 by rmk") (* ; "Edited 26-Mar-2025 10:37 by rmk") (* ; "Edited 23-Mar-2025 14:57 by rmk") (* ; "Edited 18-Mar-2025 20:55 by rmk") @@ -92,13 +89,13 @@ (if (LISTP CODE) then (CONS (CHARCODE.ENCODE (CAR CODE) - OCTALCHARS) + OCTALCHARS NONCHARIDENTITY) (AND (CDR CODE) (CHARCODE.ENCODE (CDR CODE) - OCTALCHARS))) + OCTALCHARS NONCHARIDENTITY))) elseif (CL:CHARACTERP CODE) then (CHARCODE.ENCODE (CL:CHAR-CODE CODE) - OCTALCHARS) + OCTALCHARS NONCHARIDENTITY) elseif (NULL CODE) then NIL elseif (NOT (CHARCODEP CODE)) @@ -111,23 +108,21 @@ else (LET ((CHARSET (LRSH CODE 8)) (CHAR (LOGAND CODE 255)) (ASCIICODE (LOGAND CODE 127)) - CSETNAME CHARCODE.ENCODE ASCIINAME) + CSETNAME CHARNAME ASCIINAME) (SETQ CSETNAME (if [CAR (find CN in CHARACTERSETNAMES suchthat (STRING.EQUAL CHARSET (CADR CN] else (OCTALSTRING CHARSET))) - [SETQ CHARCODE.ENCODE (if OCTALCHARS - then (OCTALSTRING CHAR) - else (CAR (for CC in CHARACTERNAMES - when (EQ CHAR (CADR CC)) - smallest (NCHARS (CAR CC] - (CL:WHEN (STREQUAL CHARCODE.ENCODE "Tenexeol") - (* ; + [SETQ CHARNAME (if OCTALCHARS + then (OCTALSTRING CHAR) + else (CAR (for CC in CHARACTERNAMES when (EQ CHAR (CADR CC)) + smallest (NCHARS (CAR CC] + (CL:WHEN (STREQUAL CHARNAME "Tenexeol") (* ;  "Put (%"^_%" Tenexeol) in CHARACTERNAMES ?") - (SETQ CHARCODE.ENCODE "^_")) + (SETQ CHARNAME "^_")) (* ;; "Didn't find the special character name, let's find a corresponding Asciiname to prefix with ^ and/or #") - (CL:UNLESS CHARCODE.ENCODE + (CL:UNLESS CHARNAME [SETQ ASCIINAME (if [CAR (for CC in CHARACTERNAMES when (EQ ASCIICODE (CADR CC)) smallest (NCHARS (CAR CC] @@ -137,13 +132,13 @@ (* ;; "Not named and not a control") (CONCAT (CHARACTER ASCIICODE] - (SETQ CHARCODE.ENCODE (CL:IF (IGEQ CHAR 128) - (CONCAT "#" ASCIINAME) - ASCIINAME))) + (SETQ CHARNAME (CL:IF (IGEQ CHAR 128) + (CONCAT "#" ASCIINAME) + ASCIINAME))) (CL:IF (AND (ZEROP CHARSET) (NOT OCTALCHARS)) - CHARCODE.ENCODE - (CONCAT CSETNAME "," CHARCODE.ENCODE))]) + CHARNAME + (CONCAT CSETNAME "," CHARNAME))]) ) @@ -2036,30 +2031,30 @@ (RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4268 8799 (CHARCODE.ENCODE 4278 . 8797)) (8855 27777 (TEDIT.INSTALL.CHARBINDINGS 8865 - . 12756) (TEDIT.CLEAR.CHARBINDINGS 12758 . 15436) (TEDIT.GET.CHARACTION 15438 . 18184) ( -TEDIT.GET.CHARBINDING 18186 . 20325) (TEDIT.GET.ALL.CHARBINDINGS 20327 . 22643) ( -TEDIT.CHARBINDINGS.INVERT 22645 . 24375) (TEDIT.GET.ALL.CHARACTIONS 24377 . 26463) ( -TEDIT.CONFLICTING.CHARBINDINGS 26465 . 27775)) (27837 37892 (\TEDIT.KEY.CHARLOOKS 27847 . 29039) ( -\TEDIT.KEY.QUAD 29041 . 31134) (\TEDIT.DEFAULTSSEL 31136 . 31747) (\TEDIT.SETDEFAULT.FROM.SEL 31749 . -32426) (\TEDIT.KEY.SIZE 32428 . 33624) (\TEDIT.SUBSCRIPTSEL 33626 . 33829) (\TEDIT.SUPERSCRIPTSEL -33831 . 34035) (\TEDIT.KEY.TRANSFORM 34037 . 36034) (\TEDIT.KEY.OPENLINE 36036 . 36490) ( -\TEDIT.KEY.FAMILYN 36492 . 37890)) (37893 38182 (CAP-CASECODE 37903 . 38180)) (38216 41648 ( -\TEDIT.SHOWCARETLOOKS 38226 . 40741) (\TEDIT.DESCRIBEFONT 40743 . 41646)) (41679 56607 ( -\TEDIT.ONECHAR.BACKWARD 41689 . 42836) (\TEDIT.ONECHAR.FORWARD 42838 . 44074) (\TEDIT.ONELINE.UP 44076 - . 47037) (\TEDIT.ONELINE.DOWN 47039 . 48696) (\TEDIT.ONELINE.MOVE 48698 . 50940) ( -\TEDIT.ONEWORD.BACKWARD 50942 . 52130) (\TEDIT.ONEWORD.FORWARD 52132 . 53319) (\TEDIT.LINE.BEGIN 53321 - . 54400) (\TEDIT.LINE.END 54402 . 55639) (\TEDIT.DOCUMENT.BEGIN 55641 . 56000) (\TEDIT.DOCUMENT.END -56002 . 56605)) (56608 58650 (\TEDIT.LINEDELETE.FORWARD 56618 . 57617) (\TEDIT.LINEDELETE.BACKWARD -57619 . 58648)) (58651 61179 (\TEDIT.KEY.NEST 58661 . 61177)) (61180 62462 (\TEDIT.KEY.WRAP 61190 . -62460)) (62553 70601 (\TEDIT.KEY.FIND 62563 . 67741) (\TEDIT.KEY.FIND.SEARCHSTRING 67743 . 68883) ( -\TEDIT.GET.TARGET.STRING 68885 . 70599)) (70632 73264 (\TEDIT.KEY.SUBSTITUTE 70642 . 70863) ( -\TEDIT.MANPAGE 70865 . 72112) (\TEDIT.CALL.ED 72114 . 72944) (\TEDIT.SELECT.ALL 72946 . 73262)) (73291 - 78981 (\TEDIT.CLIPBOARD 73301 . 75056) (\TEDIT.COPYTOCLIPBOARD 75058 . 75838) ( -\TEDIT.EXTRACTTOCLIPBOARD 75840 . 76035) (\TEDIT.WRITE.SEL 76037 . 78979)) (79438 91220 ( -\TEDIT.READTABLE 79448 . 80384) (\TEDIT.WORDBOUND.READTABLE 80386 . 83015) (TEDIT.GETSYNTAX 83017 . -84536) (TEDIT.SETSYNTAX 84538 . 85743) (TEDIT.GETFUNCTION 85745 . 87010) (TEDIT.SETFUNCTION 87012 . -88998) (TEDIT.WORDGET 89000 . 89261) (TEDIT.WORDSET 89263 . 89894) (TEDIT.ATOMBOUND.READTABLE 89896 . -91218)) (103049 109588 (TEDIT.BUTTONS.BUILD 103059 . 107856) (TEDIT.BUTTONBITMAP.FILL 107858 . 109586) + (FILEMAP (NIL (4055 8434 (CHARCODE.ENCODE 4065 . 8432)) (8490 27412 (TEDIT.INSTALL.CHARBINDINGS 8500 + . 12391) (TEDIT.CLEAR.CHARBINDINGS 12393 . 15071) (TEDIT.GET.CHARACTION 15073 . 17819) ( +TEDIT.GET.CHARBINDING 17821 . 19960) (TEDIT.GET.ALL.CHARBINDINGS 19962 . 22278) ( +TEDIT.CHARBINDINGS.INVERT 22280 . 24010) (TEDIT.GET.ALL.CHARACTIONS 24012 . 26098) ( +TEDIT.CONFLICTING.CHARBINDINGS 26100 . 27410)) (27472 37527 (\TEDIT.KEY.CHARLOOKS 27482 . 28674) ( +\TEDIT.KEY.QUAD 28676 . 30769) (\TEDIT.DEFAULTSSEL 30771 . 31382) (\TEDIT.SETDEFAULT.FROM.SEL 31384 . +32061) (\TEDIT.KEY.SIZE 32063 . 33259) (\TEDIT.SUBSCRIPTSEL 33261 . 33464) (\TEDIT.SUPERSCRIPTSEL +33466 . 33670) (\TEDIT.KEY.TRANSFORM 33672 . 35669) (\TEDIT.KEY.OPENLINE 35671 . 36125) ( +\TEDIT.KEY.FAMILYN 36127 . 37525)) (37528 37817 (CAP-CASECODE 37538 . 37815)) (37851 41283 ( +\TEDIT.SHOWCARETLOOKS 37861 . 40376) (\TEDIT.DESCRIBEFONT 40378 . 41281)) (41314 56242 ( +\TEDIT.ONECHAR.BACKWARD 41324 . 42471) (\TEDIT.ONECHAR.FORWARD 42473 . 43709) (\TEDIT.ONELINE.UP 43711 + . 46672) (\TEDIT.ONELINE.DOWN 46674 . 48331) (\TEDIT.ONELINE.MOVE 48333 . 50575) ( +\TEDIT.ONEWORD.BACKWARD 50577 . 51765) (\TEDIT.ONEWORD.FORWARD 51767 . 52954) (\TEDIT.LINE.BEGIN 52956 + . 54035) (\TEDIT.LINE.END 54037 . 55274) (\TEDIT.DOCUMENT.BEGIN 55276 . 55635) (\TEDIT.DOCUMENT.END +55637 . 56240)) (56243 58285 (\TEDIT.LINEDELETE.FORWARD 56253 . 57252) (\TEDIT.LINEDELETE.BACKWARD +57254 . 58283)) (58286 60814 (\TEDIT.KEY.NEST 58296 . 60812)) (60815 62097 (\TEDIT.KEY.WRAP 60825 . +62095)) (62188 70236 (\TEDIT.KEY.FIND 62198 . 67376) (\TEDIT.KEY.FIND.SEARCHSTRING 67378 . 68518) ( +\TEDIT.GET.TARGET.STRING 68520 . 70234)) (70267 72899 (\TEDIT.KEY.SUBSTITUTE 70277 . 70498) ( +\TEDIT.MANPAGE 70500 . 71747) (\TEDIT.CALL.ED 71749 . 72579) (\TEDIT.SELECT.ALL 72581 . 72897)) (72926 + 78616 (\TEDIT.CLIPBOARD 72936 . 74691) (\TEDIT.COPYTOCLIPBOARD 74693 . 75473) ( +\TEDIT.EXTRACTTOCLIPBOARD 75475 . 75670) (\TEDIT.WRITE.SEL 75672 . 78614)) (79073 90855 ( +\TEDIT.READTABLE 79083 . 80019) (\TEDIT.WORDBOUND.READTABLE 80021 . 82650) (TEDIT.GETSYNTAX 82652 . +84171) (TEDIT.SETSYNTAX 84173 . 85378) (TEDIT.GETFUNCTION 85380 . 86645) (TEDIT.SETFUNCTION 86647 . +88633) (TEDIT.WORDGET 88635 . 88896) (TEDIT.WORDSET 88898 . 89529) (TEDIT.ATOMBOUND.READTABLE 89531 . +90853)) (102684 109223 (TEDIT.BUTTONS.BUILD 102694 . 107491) (TEDIT.BUTTONBITMAP.FILL 107493 . 109221) )))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 2ece9bed42860c9b9ced175c851d1c85739d29ab..729a1cd242378de95ffbe6e39431ae118d94b74b 100644 GIT binary patch delta 601 zcmZuu%}T>S5N=XXsTUDMQP5$%Sg|qt6PpGPS<`JT#H6OF2N6Z72N6U>@FYHgU=4WC zmk<@igDCh2`X0W5n~-P~_cHU%&o{H*Tt2CvkLpFIzhdbXi{S3QHD(r}fCw$|!=n<> zi2)c}j9RSwJX&*>dEod}p$RWGuy+8c)^=U!t=BXSL1+7TxAQ+yB?4tKn;31Yvje7_ zp%b$lohUH%XGRgMW+2uYe!Eqw@=!$c%9v8SEsGE77}p$zF%mT;A^F?L0e71_|RJ%ySDpc^S+b2{kXr$N6Hzkz(#Fd1b!13rQrCU!$V+tIdiGm z;}VG1<4!07psWmD3|l~@Olc=2dQS~8^sI)+L@Nx$YMZ-&O%j8KcUITZh_R6LCGu89 zA}?n6JJtkDb?}{#yGdgmuq5oo3npwdTvyb&tMQ-?hTJ>7R};t&$c~4Z%&-1BXt6Mp pj?BK8P$WR+fJquOhon3@plJjYV?dh-NF3kXk`6ZRPy0r$z5xAYk~jbW delta 623 zcmZWn(P|Sx6wPc^?E0W6)wU0ESzi({Vdu_lce5bfVKa%rbvNDJ6qM3JDWagI?GN-9 znhyBbZzxs}A0*KJL4ETl3O@NFIFlwd#d*2+oVn+4@7%fgY8`&F4z|>g%nm*V^L`C% z2eB@8_Uh=O2Z*8ThHUWtkviRec<22#IPHFtXnt@p|KR_^KrNET#!U%Qz3l^~?vjUU zmw?gVjbDg7&RVh|Qxnvm4{w)iP+b*y0i|qp%X&L~DPI?H_NuUJ5cYDp+Rge!y(LNs z*E^%3>xC>(%j7BH>KA!#|8rJo9WI^Tw<LL*pYRaFWx&d)KPTH zgdguVZwxmp$LA-%Ek*V@g|+q@nP)xV%!4>fV^IQko0F6UQz-{Cn21Z61LI9d4J?46 ze^rh+Rf8T*YEWMkWiD6xA^{q31G?#cr!i){V5A$3){-Uw<0c8kTT#95Q>;Tn< z)7W=mt(zpWBa(*5JK*WQ$6M%u-tYvBSEBtiwQ_AuHM`0#RpSw-X3=-Ru?fyIM?VjO a^TYwBJ)Ct%e-h2FZ|H>jCqHk_efkS{2c10t From 1ceb1a42c23cd05d61451f5234b76d4675b44027 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Thu, 24 Apr 2025 10:05:37 -0700 Subject: [PATCH 06/18] Make the split region really go away by default --- library/tedit/TEDIT-WINDOW | 75 ++++++++++++++++---------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62351 -> 62226 bytes 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 1957c9e39..4e0073ba4 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "21-Apr-2025 20:34:07" {WMEDLEY}tedit>TEDIT-WINDOW.;824 226360 +(FILECREATED "24-Apr-2025 09:18:12" {WMEDLEY}tedit>TEDIT-WINDOW.;825 226237 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.BUTTONEVENTFN.DOOPERATION \TEDIT.BUTTONEVENTFN \TEDIT.SPLITW - \TEDIT.FILL.PANES \TEDIT.BUTTONEVENTFN.CURSEL.INIT) + :CHANGES-TO (VARS TEDIT-WINDOWCOMS) - :PREVIOUS-DATE "21-Apr-2025 12:03:17" {WMEDLEY}tedit>TEDIT-WINDOW.;821) + :PREVIOUS-DATE "21-Apr-2025 20:34:07" {WMEDLEY}tedit>TEDIT-WINDOW.;824) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -39,7 +38,7 @@ (FNS \TEDIT.PANE.SPLIT \TEDIT.SPLITW \TEDIT.UNSPLITW \TEDIT.LINKPANES \TEDIT.UNLINKPANE) (P (MOVD? 'NILL 'GRAB-TYPED-REGION) (MOVD? 'NILL 'REGISTER-TYPED-REGION)) - (INITVARS (\TEDIT.OP.WIDTH 0) + (INITVARS (\TEDIT.OP.WIDTH -1) (\TEDIT.OP.BOTTOM 14) (\TEDIT.LINEREGION.WIDTH 16)) (DECLARE%: DONTEVAL@LOAD DOCOPY (GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM @@ -1873,7 +1872,7 @@ (MOVD? 'NILL 'REGISTER-TYPED-REGION) -(RPAQ? \TEDIT.OP.WIDTH 0) +(RPAQ? \TEDIT.OP.WIDTH -1) (RPAQ? \TEDIT.OP.BOTTOM 14) @@ -3579,36 +3578,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17335 18231 (TEDIT.DEFER.UPDATES 17345 . 18229)) (18232 43479 (\TEDIT.WINDOW.CREATE -18242 . 25088) (\TEDIT.WINDOW.GETREGION 25090 . 28580) (\TEDIT.WINDOW.SETUP 28582 . 32804) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32806 . 40217) (\TEDIT.CLEARPANE 40219 . 40936) (\TEDIT.FILL.PANES 40938 - . 43477)) (43480 66421 (\TEDIT.CURSORMOVEDFN 43490 . 48330) (\TEDIT.CURSOROUTFN 48332 . 48777) ( -\TEDIT.ACTIVE.WINDOWP 48779 . 49830) (\TEDIT.EXPANDFN 49832 . 50395) (\TEDIT.MAINW 50397 . 51677) ( -\TEDIT.MAINSTREAM 51679 . 52013) (\TEDIT.PRIMARYPANE 52015 . 52785) (\TEDIT.PANELIST 52787 . 53283) ( -\TEDIT.NEWREGIONFN 53285 . 55801) (\TEDIT.SET.WINDOW.EXTENT 55803 . 61057) (\TEDIT.SHRINK.ICONCREATE -61059 . 63792) (\TEDIT.SHRINKFN 63794 . 64203) (\TEDIT.PANEREGION 64205 . 66419)) (66453 99078 ( -\TEDIT.BUTTONEVENTFN 66463 . 79335) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79337 . 86391) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 86393 . 88235) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88237 . 91802) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 91804 . 94228) (\TEDIT.BUTTONEVENTFN.INTITLE 94230 . 96065) ( -\TEDIT.COPYINSERTFN 96067 . 97199) (\TEDIT.FOREIGN.COPY 97201 . 99076)) (99079 116160 ( -\TEDIT.PANE.SPLIT 99089 . 103037) (\TEDIT.SPLITW 103039 . 110397) (\TEDIT.UNSPLITW 110399 . 114817) ( -\TEDIT.LINKPANES 114819 . 115582) (\TEDIT.UNLINKPANE 115584 . 116158)) (117516 118407 (TEDITWINDOWP -117526 . 118405)) (118444 121547 (TEDIT.GETINPUT 118454 . 120897) (\TEDIT.MAKEFILENAME 120899 . 121545 -)) (121596 129897 (TEDIT.PROMPTWINDOW 121606 . 121920) (TEDIT.PROMPTPRINT 121922 . 124549) ( -TEDIT.PROMPTCLEAR 124551 . 126270) (TEDIT.PROMPTFLASH 126272 . 128204) (\TEDIT.PROMPT.PAGEFULLFN -128206 . 129895)) (130135 139967 (\TEDIT.FILENAME 130145 . 130917) (\TEDIT.DEFAULT.TITLE 130919 . -133298) (\TEDIT.WINDOW.TITLE 133300 . 135469) (\TEDIT.LIKELY.FILENAME 135471 . 137449) ( -\TEDIT.UPDATE.TITLE 137451 . 139965)) (140010 151389 (TEDIT.DEACTIVATE.WINDOW 140020 . 146617) ( -\TEDIT.RESHAPEFN 146619 . 148704) (\TEDIT.REPAINTFN 148706 . 148930) (\TEDIT.CLOSEPANES 148932 . -151387)) (151390 194189 (\TEDIT.SCROLLFN 151400 . 153631) (\TEDIT.SCROLLCH.TOP 153633 . 155744) ( -\TEDIT.SCROLLCH.BOTTOM 155746 . 160076) (\TEDIT.SCROLLUP 160078 . 165804) (\TEDIT.TOPLINE.YTOP 165806 - . 167475) (\TEDIT.SCROLLDOWN 167477 . 174516) (\TEDIT.SCROLL.CARET 174518 . 177356) ( -\TEDIT.VISIBLECARETP 177358 . 179652) (\TEDIT.VISIBLECHARP 179654 . 180745) (\TEDIT.BITMAPLINES 180747 - . 184667) (\TEDIT.SETPANE.TOPLINE 184669 . 185281) (\TEDIT.SHIFTLINES 185283 . 194187)) (194190 -205059 (\TEDIT.ONSCREEN? 194200 . 198751) (\TEDIT.ONSCREEN.REGION 198753 . 202404) (\TEDIT.AFTERMOVEFN - 202406 . 203303) (OFFSCREENP 203305 . 205057)) (205101 207792 (\TEDIT.PROCIDLEFN 205111 . 206648) ( -\TEDIT.PROCENTRYFN 206650 . 207095) (\TEDIT.PROCEXITFN 207097 . 207790)) (207871 221096 ( -\TEDIT.DOWNCARET 207881 . 208674) (\TEDIT.FLASHCARET 208676 . 210787) (\TEDIT.UPCARET 210789 . 211893) - (TEDIT.NORMALIZECARET 211895 . 215113) (\TEDIT.SETCARET 215115 . 220466) (\TEDIT.CARET 220468 . -221094))))) + (FILEMAP (NIL (17211 18107 (TEDIT.DEFER.UPDATES 17221 . 18105)) (18108 43355 (\TEDIT.WINDOW.CREATE +18118 . 24964) (\TEDIT.WINDOW.GETREGION 24966 . 28456) (\TEDIT.WINDOW.SETUP 28458 . 32680) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32682 . 40093) (\TEDIT.CLEARPANE 40095 . 40812) (\TEDIT.FILL.PANES 40814 + . 43353)) (43356 66297 (\TEDIT.CURSORMOVEDFN 43366 . 48206) (\TEDIT.CURSOROUTFN 48208 . 48653) ( +\TEDIT.ACTIVE.WINDOWP 48655 . 49706) (\TEDIT.EXPANDFN 49708 . 50271) (\TEDIT.MAINW 50273 . 51553) ( +\TEDIT.MAINSTREAM 51555 . 51889) (\TEDIT.PRIMARYPANE 51891 . 52661) (\TEDIT.PANELIST 52663 . 53159) ( +\TEDIT.NEWREGIONFN 53161 . 55677) (\TEDIT.SET.WINDOW.EXTENT 55679 . 60933) (\TEDIT.SHRINK.ICONCREATE +60935 . 63668) (\TEDIT.SHRINKFN 63670 . 64079) (\TEDIT.PANEREGION 64081 . 66295)) (66329 98954 ( +\TEDIT.BUTTONEVENTFN 66339 . 79211) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79213 . 86267) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 86269 . 88111) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88113 . 91678) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 91680 . 94104) (\TEDIT.BUTTONEVENTFN.INTITLE 94106 . 95941) ( +\TEDIT.COPYINSERTFN 95943 . 97075) (\TEDIT.FOREIGN.COPY 97077 . 98952)) (98955 116036 ( +\TEDIT.PANE.SPLIT 98965 . 102913) (\TEDIT.SPLITW 102915 . 110273) (\TEDIT.UNSPLITW 110275 . 114693) ( +\TEDIT.LINKPANES 114695 . 115458) (\TEDIT.UNLINKPANE 115460 . 116034)) (117393 118284 (TEDITWINDOWP +117403 . 118282)) (118321 121424 (TEDIT.GETINPUT 118331 . 120774) (\TEDIT.MAKEFILENAME 120776 . 121422 +)) (121473 129774 (TEDIT.PROMPTWINDOW 121483 . 121797) (TEDIT.PROMPTPRINT 121799 . 124426) ( +TEDIT.PROMPTCLEAR 124428 . 126147) (TEDIT.PROMPTFLASH 126149 . 128081) (\TEDIT.PROMPT.PAGEFULLFN +128083 . 129772)) (130012 139844 (\TEDIT.FILENAME 130022 . 130794) (\TEDIT.DEFAULT.TITLE 130796 . +133175) (\TEDIT.WINDOW.TITLE 133177 . 135346) (\TEDIT.LIKELY.FILENAME 135348 . 137326) ( +\TEDIT.UPDATE.TITLE 137328 . 139842)) (139887 151266 (TEDIT.DEACTIVATE.WINDOW 139897 . 146494) ( +\TEDIT.RESHAPEFN 146496 . 148581) (\TEDIT.REPAINTFN 148583 . 148807) (\TEDIT.CLOSEPANES 148809 . +151264)) (151267 194066 (\TEDIT.SCROLLFN 151277 . 153508) (\TEDIT.SCROLLCH.TOP 153510 . 155621) ( +\TEDIT.SCROLLCH.BOTTOM 155623 . 159953) (\TEDIT.SCROLLUP 159955 . 165681) (\TEDIT.TOPLINE.YTOP 165683 + . 167352) (\TEDIT.SCROLLDOWN 167354 . 174393) (\TEDIT.SCROLL.CARET 174395 . 177233) ( +\TEDIT.VISIBLECARETP 177235 . 179529) (\TEDIT.VISIBLECHARP 179531 . 180622) (\TEDIT.BITMAPLINES 180624 + . 184544) (\TEDIT.SETPANE.TOPLINE 184546 . 185158) (\TEDIT.SHIFTLINES 185160 . 194064)) (194067 +204936 (\TEDIT.ONSCREEN? 194077 . 198628) (\TEDIT.ONSCREEN.REGION 198630 . 202281) (\TEDIT.AFTERMOVEFN + 202283 . 203180) (OFFSCREENP 203182 . 204934)) (204978 207669 (\TEDIT.PROCIDLEFN 204988 . 206525) ( +\TEDIT.PROCENTRYFN 206527 . 206972) (\TEDIT.PROCEXITFN 206974 . 207667)) (207748 220973 ( +\TEDIT.DOWNCARET 207758 . 208551) (\TEDIT.FLASHCARET 208553 . 210664) (\TEDIT.UPCARET 210666 . 211770) + (TEDIT.NORMALIZECARET 211772 . 214990) (\TEDIT.SETCARET 214992 . 220343) (\TEDIT.CARET 220345 . +220971))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index a15d197aa879de9fd7e7a2d301e2987333e473b9..c834c49529d648d5da20da593bad490c7d5c1576 100644 GIT binary patch delta 280 zcmeBw&OGTE^MnXt6J5uGB3&Z`BU1$fODjVQD?_7+*;bOKnhIP>M#z#DRwgDO$$etU zdHE$7nR)37nRyCIZlOLt3djoe^z@VzQW8s2Q?Q$0uB6GO;pXY%>Kx?i7~<-pfNBlY z4U+>HwJc2)jEu~TjLj9STwOdvbe$pMo5x|Mpj0aR)!`M z_lZsZWGy=R)oGsS%sd4pw@@D+1!RSKdU{F Date: Thu, 24 Apr 2025 11:23:48 -0700 Subject: [PATCH 07/18] Now with an explicit test for -1 Maybe that will really turn off the splitting region. --- library/tedit/TEDIT-WINDOW | 84 ++++++++++++++++---------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62226 -> 62253 bytes 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 4e0073ba4..a2be675ec 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,10 +1,11 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Apr-2025 09:18:12" {WMEDLEY}tedit>TEDIT-WINDOW.;825 226237 +(FILECREATED "24-Apr-2025 11:22:00" {WMEDLEY}TEDIT>TEDIT-WINDOW.;828 226565 :EDIT-BY rmk :CHANGES-TO (VARS TEDIT-WINDOWCOMS) + (FNS \TEDIT.CURSORMOVEDFN) :PREVIOUS-DATE "21-Apr-2025 20:34:07" {WMEDLEY}tedit>TEDIT-WINDOW.;824) @@ -41,8 +42,8 @@ (INITVARS (\TEDIT.OP.WIDTH -1) (\TEDIT.OP.BOTTOM 14) (\TEDIT.LINEREGION.WIDTH 16)) - (DECLARE%: DONTEVAL@LOAD DOCOPY (GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM - \TEDIT.LINEREGION.WIDTH)) + (GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM \TEDIT.LINEREGION.WIDTH \TEDIT.SPLITCURSOR + \TEDIT.LINECURSOR \TEDIT.MOVESPLITCURSOR \TEDIT.UNSPLITCURSOR \TEDIT.MAKESPLITCURSOR) (CURSORS BXCARET BXHICARET \TEDIT.LINECURSOR \TEDIT.SPLITCURSOR \TEDIT.MOVESPLITCURSOR \TEDIT.UNSPLITCURSOR \TEDIT.MAKESPLITCURSOR) (COMS (* ; @@ -729,7 +730,8 @@ (DEFINEQ (\TEDIT.CURSORMOVEDFN - [LAMBDA (PANE) (* ; "Edited 19-Apr-2025 22:22 by rmk") + [LAMBDA (PANE) (* ; "Edited 24-Apr-2025 10:35 by rmk") + (* ; "Edited 19-Apr-2025 22:22 by rmk") (* ; "Edited 1-Dec-2024 11:55 by rmk") (* ; "Edited 22-Nov-2024 23:53 by rmk") (* ; "Edited 16-Nov-2024 20:18 by rmk") @@ -752,11 +754,12 @@ (CURSOR T) (RETURN)) (CL:UNLESS (INSIDE? CURSORREG X Y) - [if (AND (IGEQ X (SETQ LEFT (IDIFFERENCE (PANERIGHT PANE) + [if [AND (IGEQ X (SETQ LEFT (IDIFFERENCE (PANERIGHT PANE) \TEDIT.OP.WIDTH))) (IGEQ Y (IPLUS (PANEBOTTOM PANE) \TEDIT.OP.BOTTOM)) - (NOT (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE))) + (NOT (OR (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) + (EQ \TEDIT.OP.WIDTH -1] then (* ;; "We're in the split region on the right") @@ -1877,11 +1880,10 @@ (RPAQ? \TEDIT.OP.BOTTOM 14) (RPAQ? \TEDIT.LINEREGION.WIDTH 16) -(DECLARE%: DONTEVAL@LOAD DOCOPY (DECLARE%: DOEVAL@COMPILE DONTCOPY -(GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM \TEDIT.LINEREGION.WIDTH) -) +(GLOBALVARS \TEDIT.OP.WIDTH \TEDIT.OP.BOTTOM \TEDIT.LINEREGION.WIDTH \TEDIT.SPLITCURSOR + \TEDIT.LINECURSOR \TEDIT.MOVESPLITCURSOR \TEDIT.UNSPLITCURSOR \TEDIT.MAKESPLITCURSOR) ) (RPAQ BXCARET (CURSORCREATE (QUOTE #*(16 16)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@CH@@CH@@FL@@FL@@LF@@ ) (QUOTE NIL) 3 4)) @@ -3578,36 +3580,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17211 18107 (TEDIT.DEFER.UPDATES 17221 . 18105)) (18108 43355 (\TEDIT.WINDOW.CREATE -18118 . 24964) (\TEDIT.WINDOW.GETREGION 24966 . 28456) (\TEDIT.WINDOW.SETUP 28458 . 32680) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32682 . 40093) (\TEDIT.CLEARPANE 40095 . 40812) (\TEDIT.FILL.PANES 40814 - . 43353)) (43356 66297 (\TEDIT.CURSORMOVEDFN 43366 . 48206) (\TEDIT.CURSOROUTFN 48208 . 48653) ( -\TEDIT.ACTIVE.WINDOWP 48655 . 49706) (\TEDIT.EXPANDFN 49708 . 50271) (\TEDIT.MAINW 50273 . 51553) ( -\TEDIT.MAINSTREAM 51555 . 51889) (\TEDIT.PRIMARYPANE 51891 . 52661) (\TEDIT.PANELIST 52663 . 53159) ( -\TEDIT.NEWREGIONFN 53161 . 55677) (\TEDIT.SET.WINDOW.EXTENT 55679 . 60933) (\TEDIT.SHRINK.ICONCREATE -60935 . 63668) (\TEDIT.SHRINKFN 63670 . 64079) (\TEDIT.PANEREGION 64081 . 66295)) (66329 98954 ( -\TEDIT.BUTTONEVENTFN 66339 . 79211) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79213 . 86267) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 86269 . 88111) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88113 . 91678) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 91680 . 94104) (\TEDIT.BUTTONEVENTFN.INTITLE 94106 . 95941) ( -\TEDIT.COPYINSERTFN 95943 . 97075) (\TEDIT.FOREIGN.COPY 97077 . 98952)) (98955 116036 ( -\TEDIT.PANE.SPLIT 98965 . 102913) (\TEDIT.SPLITW 102915 . 110273) (\TEDIT.UNSPLITW 110275 . 114693) ( -\TEDIT.LINKPANES 114695 . 115458) (\TEDIT.UNLINKPANE 115460 . 116034)) (117393 118284 (TEDITWINDOWP -117403 . 118282)) (118321 121424 (TEDIT.GETINPUT 118331 . 120774) (\TEDIT.MAKEFILENAME 120776 . 121422 -)) (121473 129774 (TEDIT.PROMPTWINDOW 121483 . 121797) (TEDIT.PROMPTPRINT 121799 . 124426) ( -TEDIT.PROMPTCLEAR 124428 . 126147) (TEDIT.PROMPTFLASH 126149 . 128081) (\TEDIT.PROMPT.PAGEFULLFN -128083 . 129772)) (130012 139844 (\TEDIT.FILENAME 130022 . 130794) (\TEDIT.DEFAULT.TITLE 130796 . -133175) (\TEDIT.WINDOW.TITLE 133177 . 135346) (\TEDIT.LIKELY.FILENAME 135348 . 137326) ( -\TEDIT.UPDATE.TITLE 137328 . 139842)) (139887 151266 (TEDIT.DEACTIVATE.WINDOW 139897 . 146494) ( -\TEDIT.RESHAPEFN 146496 . 148581) (\TEDIT.REPAINTFN 148583 . 148807) (\TEDIT.CLOSEPANES 148809 . -151264)) (151267 194066 (\TEDIT.SCROLLFN 151277 . 153508) (\TEDIT.SCROLLCH.TOP 153510 . 155621) ( -\TEDIT.SCROLLCH.BOTTOM 155623 . 159953) (\TEDIT.SCROLLUP 159955 . 165681) (\TEDIT.TOPLINE.YTOP 165683 - . 167352) (\TEDIT.SCROLLDOWN 167354 . 174393) (\TEDIT.SCROLL.CARET 174395 . 177233) ( -\TEDIT.VISIBLECARETP 177235 . 179529) (\TEDIT.VISIBLECHARP 179531 . 180622) (\TEDIT.BITMAPLINES 180624 - . 184544) (\TEDIT.SETPANE.TOPLINE 184546 . 185158) (\TEDIT.SHIFTLINES 185160 . 194064)) (194067 -204936 (\TEDIT.ONSCREEN? 194077 . 198628) (\TEDIT.ONSCREEN.REGION 198630 . 202281) (\TEDIT.AFTERMOVEFN - 202283 . 203180) (OFFSCREENP 203182 . 204934)) (204978 207669 (\TEDIT.PROCIDLEFN 204988 . 206525) ( -\TEDIT.PROCENTRYFN 206527 . 206972) (\TEDIT.PROCEXITFN 206974 . 207667)) (207748 220973 ( -\TEDIT.DOWNCARET 207758 . 208551) (\TEDIT.FLASHCARET 208553 . 210664) (\TEDIT.UPCARET 210666 . 211770) - (TEDIT.NORMALIZECARET 211772 . 214990) (\TEDIT.SETCARET 214992 . 220343) (\TEDIT.CARET 220345 . -220971))))) + (FILEMAP (NIL (17295 18191 (TEDIT.DEFER.UPDATES 17305 . 18189)) (18192 43439 (\TEDIT.WINDOW.CREATE +18202 . 25048) (\TEDIT.WINDOW.GETREGION 25050 . 28540) (\TEDIT.WINDOW.SETUP 28542 . 32764) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32766 . 40177) (\TEDIT.CLEARPANE 40179 . 40896) (\TEDIT.FILL.PANES 40898 + . 43437)) (43440 66548 (\TEDIT.CURSORMOVEDFN 43450 . 48457) (\TEDIT.CURSOROUTFN 48459 . 48904) ( +\TEDIT.ACTIVE.WINDOWP 48906 . 49957) (\TEDIT.EXPANDFN 49959 . 50522) (\TEDIT.MAINW 50524 . 51804) ( +\TEDIT.MAINSTREAM 51806 . 52140) (\TEDIT.PRIMARYPANE 52142 . 52912) (\TEDIT.PANELIST 52914 . 53410) ( +\TEDIT.NEWREGIONFN 53412 . 55928) (\TEDIT.SET.WINDOW.EXTENT 55930 . 61184) (\TEDIT.SHRINK.ICONCREATE +61186 . 63919) (\TEDIT.SHRINKFN 63921 . 64330) (\TEDIT.PANEREGION 64332 . 66546)) (66580 99205 ( +\TEDIT.BUTTONEVENTFN 66590 . 79462) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79464 . 86518) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 86520 . 88362) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88364 . 91929) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 91931 . 94355) (\TEDIT.BUTTONEVENTFN.INTITLE 94357 . 96192) ( +\TEDIT.COPYINSERTFN 96194 . 97326) (\TEDIT.FOREIGN.COPY 97328 . 99203)) (99206 116287 ( +\TEDIT.PANE.SPLIT 99216 . 103164) (\TEDIT.SPLITW 103166 . 110524) (\TEDIT.UNSPLITW 110526 . 114944) ( +\TEDIT.LINKPANES 114946 . 115709) (\TEDIT.UNLINKPANE 115711 . 116285)) (117721 118612 (TEDITWINDOWP +117731 . 118610)) (118649 121752 (TEDIT.GETINPUT 118659 . 121102) (\TEDIT.MAKEFILENAME 121104 . 121750 +)) (121801 130102 (TEDIT.PROMPTWINDOW 121811 . 122125) (TEDIT.PROMPTPRINT 122127 . 124754) ( +TEDIT.PROMPTCLEAR 124756 . 126475) (TEDIT.PROMPTFLASH 126477 . 128409) (\TEDIT.PROMPT.PAGEFULLFN +128411 . 130100)) (130340 140172 (\TEDIT.FILENAME 130350 . 131122) (\TEDIT.DEFAULT.TITLE 131124 . +133503) (\TEDIT.WINDOW.TITLE 133505 . 135674) (\TEDIT.LIKELY.FILENAME 135676 . 137654) ( +\TEDIT.UPDATE.TITLE 137656 . 140170)) (140215 151594 (TEDIT.DEACTIVATE.WINDOW 140225 . 146822) ( +\TEDIT.RESHAPEFN 146824 . 148909) (\TEDIT.REPAINTFN 148911 . 149135) (\TEDIT.CLOSEPANES 149137 . +151592)) (151595 194394 (\TEDIT.SCROLLFN 151605 . 153836) (\TEDIT.SCROLLCH.TOP 153838 . 155949) ( +\TEDIT.SCROLLCH.BOTTOM 155951 . 160281) (\TEDIT.SCROLLUP 160283 . 166009) (\TEDIT.TOPLINE.YTOP 166011 + . 167680) (\TEDIT.SCROLLDOWN 167682 . 174721) (\TEDIT.SCROLL.CARET 174723 . 177561) ( +\TEDIT.VISIBLECARETP 177563 . 179857) (\TEDIT.VISIBLECHARP 179859 . 180950) (\TEDIT.BITMAPLINES 180952 + . 184872) (\TEDIT.SETPANE.TOPLINE 184874 . 185486) (\TEDIT.SHIFTLINES 185488 . 194392)) (194395 +205264 (\TEDIT.ONSCREEN? 194405 . 198956) (\TEDIT.ONSCREEN.REGION 198958 . 202609) (\TEDIT.AFTERMOVEFN + 202611 . 203508) (OFFSCREENP 203510 . 205262)) (205306 207997 (\TEDIT.PROCIDLEFN 205316 . 206853) ( +\TEDIT.PROCENTRYFN 206855 . 207300) (\TEDIT.PROCEXITFN 207302 . 207995)) (208076 221301 ( +\TEDIT.DOWNCARET 208086 . 208879) (\TEDIT.FLASHCARET 208881 . 210992) (\TEDIT.UPCARET 210994 . 212098) + (TEDIT.NORMALIZECARET 212100 . 215318) (\TEDIT.SETCARET 215320 . 220671) (\TEDIT.CARET 220673 . +221299))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index c834c49529d648d5da20da593bad490c7d5c1576..bfc45e437ef69da9aab2087434380d28f31885fd 100644 GIT binary patch delta 618 zcmbRAjCt)d<_XChhK5!~Mpgy}6SGysLtI@vL+rq$Zn&qPi+{MDwS|$z#ATgUFl9;# z)#1LbE+7yh8%uLNpCucGmOKQ0J1uMjWP1bV`4GQ)T^7RjM zb#e3CJc}_`kxf&9aSo-Jo(`?5eYL(1>OjE#)pOasHojjF<;MkW>t?yez_KnV!)4^S{N zu$-)}dY{?E&~UOLpQN3!xtT(UYea~GF;JWXF!O5kb<$X0a!@E*w6wN z3Lqsg`wYxMM${Xb8KdhoGBs8RaP)HpSsAQgWP-voHiQ}GAD|cR=@R0hU}R_pRu6QZ z2~09Lz{fKLYL%fSTo|s$5a@DH)NJ0a_HWtb{kL=`8}Ug@_BMNFP}TV?XOI|`EnZgXsoy1hdj0Dg9~UjP6A delta 481 zcmZ9Izb^w}7{|Tspc;-)zlo=Ml~x+=-nZB5br8}!T+{T<^*Dn;Vp0AN2@{^g%zzk# zxQNv#615m45~ImL3?_*yF2S=r&-2OmdA@m`tP=b0zQ&NNCHYTl*w2j%)KD1(KJkg0t>dL>h?(4Eb4ZC)+!s8heg5XMZKhb<0O#n zh5#mFYorNJVtoT+`to?V&Wiw9tfl*pS9iE@ofB4G&IX-Ue2?`L7u)$LDWJ@!f}#__ z3Lg*c87=2WmD2;<;j;l*#^`8U7n2zLxHCcaOPa-*{RmJd!IWk@dPy}L(=tpDm5i?u zGm5t%g8BGmkSP*!Tz7(H1hBPv8yKTdyFk^-c}q8K?>Hu=zYtI*?TLE|lJH+b(*l?i zC9P&v_T2w;V%C3+VU9SuYEJ_d*q7dY9;!dYjXS`%n_dz|u9_f8+^vo_g@1n;=c>$Y jzHMu4RJD9@!qVb7Pz_wX>h$JP-dr=+Ns{is1K0Hl3TTLt From f7bb730ee3cf4a63a85552ccb7408a491ac721fb Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Fri, 25 Apr 2025 19:31:57 -0700 Subject: [PATCH 08/18] Backquote goof up in debug output --- internal/TEDIT-DEBUG | 74 +++++++++++++++++++------------------- internal/TEDIT-DEBUG.LCOM | Bin 60861 -> 60871 bytes 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/internal/TEDIT-DEBUG b/internal/TEDIT-DEBUG index acea03411..801682dc7 100644 --- a/internal/TEDIT-DEBUG +++ b/internal/TEDIT-DEBUG @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Apr-2025 19:42:02" {WMEDLEY}TEDIT-DEBUG.;157 134317 +(FILECREATED "25-Apr-2025 09:11:44" {WMEDLEY}TEDIT-DEBUG.;159 134544 :EDIT-BY rmk - :CHANGES-TO (FNS TEST.TEMPLATE) + :CHANGES-TO (FNS DEBUGOUTPUT.STREAM) - :PREVIOUS-DATE "17-Apr-2025 13:40:19" {WMEDLEY}TEDIT-DEBUG.;156) + :PREVIOUS-DATE "24-Apr-2025 16:05:31" {WMEDLEY}TEDIT-DEBUG.;158) (PRETTYCOMPRINT TEDIT-DEBUGCOMS) @@ -1314,7 +1314,8 @@ (DEFINEQ (SPPRINT - [LAMBDA (P OSTREAM TEXTOBJ NOCR) (* ; "Edited 19-Feb-2025 12:21 by rmk") + [LAMBDA (P OSTREAM TEXTOBJ NOCR) (* ; "Edited 24-Apr-2025 16:04 by rmk") + (* ; "Edited 19-Feb-2025 12:21 by rmk") (* ; "Edited 8-Feb-2025 22:41 by rmk") (* ; "Edited 5-Aug-2024 00:30 by rmk") (* ; "Edited 5-May-2024 12:55 by rmk") @@ -1403,7 +1404,7 @@ (PRIN1 "i " OSTREAM)) (PRIN1 "%"" OSTREAM) (for I C from 1 to PLEN - do (SETQ C (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ P I)) + do (SETQ C (\TEDIT.PIECE.NTHCHARCODE P I)) (PRIN1 (SELCHARQ C ((EOL CR) "[EOL]") @@ -2393,7 +2394,8 @@ (DEFINEQ (DEBUGOUTPUT.STREAM - [LAMBDA (OFILE WTYPE TITLE WIDTH FONT) (* ; "Edited 15-Apr-2025 13:55 by rmk") + [LAMBDA (OFILE WTYPE TITLE WIDTH FONT) (* ; "Edited 25-Apr-2025 09:11 by rmk") + (* ; "Edited 15-Apr-2025 13:55 by rmk") (* ; "Edited 11-Apr-2025 12:13 by rmk") (* ;; "Passed as the first argument in a call to DEBUGOUTPUT") @@ -2408,10 +2410,10 @@ (CHARCODE SPACE) FONT] (CL:WHEN WIDTH (LINELENGTH WIDTH OFILE)) + (CL:UNLESS TITLE (SETQ TITLE WTYPE)) [RESETSAVE NIL `(PROGN (CL:UNLESS RESETSTATE - [TEDIT ,OFILE ',WTYPE NIL - `(READONLY QUIET LEAVETTY T TITLE - ,(OR TITLE WTYPE] + [TEDIT ,OFILE ',WTYPE NIL '(READONLY QUIET LEAVETTY T TITLE + ,TITLE] (WINDOWPROP (WFROMDS ,OFILE) 'TEDIT-DEBUG T))] elseif OFILE @@ -2504,31 +2506,31 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5077 7636 (GTO 5087 . 5337) (GTS 5339 . 7110) (GTW 7112 . 7268) (GSEL 7270 . 7634)) ( -7669 8790 (TEST.TEMPLATE 7679 . 8788)) (8791 9726 (TESTACTION 8801 . 9724)) (9751 23566 (IPC 9761 . -11265) (ILINES 11267 . 13808) (ISEL 13810 . 14421) (ITS 14423 . 16147) (IPANES 16149 . 16384) (ITL -16386 . 16805) (IHIST 16807 . 19469) (IPCTB 19471 . 19897) (IMB 19899 . 20658) (ICL 20660 . 21361) ( -IPL 21363 . 21903) (ICARET 21905 . 22432) (INSPECTPIECES 22434 . 23564)) (23588 52256 (SP 23598 . -28642) (SL 28644 . 32479) (SSP 32481 . 34183) (SPF 34185 . 36715) (SLF 36717 . 45850) (SHOWLINE 45852 - . 49414) (SLL 49416 . 50163) (STBYTES 50165 . 51891) (SSEL 51893 . 52254)) (52257 61752 (STL 52267 . -61268) (CLEARTHISLINE 61270 . 61750)) (61753 67126 (NTHPIECE 61763 . 62895) (NPIECES 62897 . 63762) ( -NTHPIECECHAR 63764 . 65072) (SELPIECE 65074 . 65516) (PIECENUM 65518 . 66237) (PCBYTES 66239 . 67124)) - (67127 69601 (FILEBYTES 67137 . 68561) (TFILEBYTES 68563 . 69599)) (69602 70924 (TRELMOVE 69612 . -69855) (TSCROLL 69857 . 70023) (TSCROLL* 70025 . 70922)) (70925 73974 (TRY 70935 . 72204) (TEDITCLOSEW - 72206 . 72549) (PARALASTWITHOUTEOL 72551 . 73436) (FIXPARALAST 73438 . 73972)) (73975 88622 (SPPRINT -73985 . 80570) (SPPRINT.CHAR 80572 . 81556) (SPPRINT.OBJ 81558 . 84616) (SHOWPIECEBYTES 84618 . 86174) - (CHECKPLENGTHS 86176 . 86633) (SBT 86635 . 87772) (COPYPCHAIN 87774 . 88620)) (88623 90684 (POSLINE -88633 . 90682)) (90685 91568 (PRESPLIT 90695 . 91566)) (91569 93282 (ALLTL 91579 . 92832) (NTHCHARSLOT - 92834 . 93280)) (93308 103521 (PLCHAIN 93318 . 93846) (PRINTLINE 93848 . 96838) (SL.GETLINES 96840 . -100133) (CHECKLINES 100135 . 101115) (COLLECTLINES 101117 . 101369) (NTHLINE 101371 . 102376) (HEIGHT -102378 . 102666) (LINEBOTS 102668 . 103519)) (103522 105970 (IPC.DECODEARGS 103532 . 105968)) (105971 -106564 (SPF1 105981 . 106562)) (106593 108971 (SLF.FATPLEN 106603 . 107462) (FILEPIECE 107464 . 108969 -)) (109004 109772 (SELTEDIT 109014 . 109770)) (109842 115454 (PPARA 109852 . 110274) (PRUN 110276 . -111752) (ADDLINEPOSITIONS 111754 . 113181) (SBR 113183 . 113837) (SBC 113839 . 115452)) (115511 117287 - (OLDWI 115521 . 115896) (COMP 115898 . 116093) (DFR 116095 . 117285)) (117288 118321 (DFGV 117298 . -117824) (GDIRECTORIES 117826 . 118319)) (118322 124887 (TTEST 118332 . 122864) (LTEST 122866 . 124231) - (THC 124233 . 124885)) (125201 125893 (SHOWSAFE 125211 . 125891)) (125946 126393 (MYH 125956 . 126391 -)) (126638 127733 (DFVENUE 126648 . 127527) (VSEE 127529 . 127731)) (127734 128188 (PTT 127744 . -128186)) (128547 130007 (DEBUGOUTPUT.STREAM 128557 . 130005)) (130008 132324 (TEDIT-DEBUG 130018 . -132322)) (132325 134061 (TRENAME 132335 . 134059))))) + (FILEMAP (NIL (5082 7641 (GTO 5092 . 5342) (GTS 5344 . 7115) (GTW 7117 . 7273) (GSEL 7275 . 7639)) ( +7674 8795 (TEST.TEMPLATE 7684 . 8793)) (8796 9731 (TESTACTION 8806 . 9729)) (9756 23571 (IPC 9766 . +11270) (ILINES 11272 . 13813) (ISEL 13815 . 14426) (ITS 14428 . 16152) (IPANES 16154 . 16389) (ITL +16391 . 16810) (IHIST 16812 . 19474) (IPCTB 19476 . 19902) (IMB 19904 . 20663) (ICL 20665 . 21366) ( +IPL 21368 . 21908) (ICARET 21910 . 22437) (INSPECTPIECES 22439 . 23569)) (23593 52261 (SP 23603 . +28647) (SL 28649 . 32484) (SSP 32486 . 34188) (SPF 34190 . 36720) (SLF 36722 . 45855) (SHOWLINE 45857 + . 49419) (SLL 49421 . 50168) (STBYTES 50170 . 51896) (SSEL 51898 . 52259)) (52262 61757 (STL 52272 . +61273) (CLEARTHISLINE 61275 . 61755)) (61758 67131 (NTHPIECE 61768 . 62900) (NPIECES 62902 . 63767) ( +NTHPIECECHAR 63769 . 65077) (SELPIECE 65079 . 65521) (PIECENUM 65523 . 66242) (PCBYTES 66244 . 67129)) + (67132 69606 (FILEBYTES 67142 . 68566) (TFILEBYTES 68568 . 69604)) (69607 70929 (TRELMOVE 69617 . +69860) (TSCROLL 69862 . 70028) (TSCROLL* 70030 . 70927)) (70930 73979 (TRY 70940 . 72209) (TEDITCLOSEW + 72211 . 72554) (PARALASTWITHOUTEOL 72556 . 73441) (FIXPARALAST 73443 . 73977)) (73980 88728 (SPPRINT +73990 . 80676) (SPPRINT.CHAR 80678 . 81662) (SPPRINT.OBJ 81664 . 84722) (SHOWPIECEBYTES 84724 . 86280) + (CHECKPLENGTHS 86282 . 86739) (SBT 86741 . 87878) (COPYPCHAIN 87880 . 88726)) (88729 90790 (POSLINE +88739 . 90788)) (90791 91674 (PRESPLIT 90801 . 91672)) (91675 93388 (ALLTL 91685 . 92938) (NTHCHARSLOT + 92940 . 93386)) (93414 103627 (PLCHAIN 93424 . 93952) (PRINTLINE 93954 . 96944) (SL.GETLINES 96946 . +100239) (CHECKLINES 100241 . 101221) (COLLECTLINES 101223 . 101475) (NTHLINE 101477 . 102482) (HEIGHT +102484 . 102772) (LINEBOTS 102774 . 103625)) (103628 106076 (IPC.DECODEARGS 103638 . 106074)) (106077 +106670 (SPF1 106087 . 106668)) (106699 109077 (SLF.FATPLEN 106709 . 107568) (FILEPIECE 107570 . 109075 +)) (109110 109878 (SELTEDIT 109120 . 109876)) (109948 115560 (PPARA 109958 . 110380) (PRUN 110382 . +111858) (ADDLINEPOSITIONS 111860 . 113287) (SBR 113289 . 113943) (SBC 113945 . 115558)) (115617 117393 + (OLDWI 115627 . 116002) (COMP 116004 . 116199) (DFR 116201 . 117391)) (117394 118427 (DFGV 117404 . +117930) (GDIRECTORIES 117932 . 118425)) (118428 124993 (TTEST 118438 . 122970) (LTEST 122972 . 124337) + (THC 124339 . 124991)) (125307 125999 (SHOWSAFE 125317 . 125997)) (126052 126499 (MYH 126062 . 126497 +)) (126744 127839 (DFVENUE 126754 . 127633) (VSEE 127635 . 127837)) (127840 128294 (PTT 127850 . +128292)) (128653 130234 (DEBUGOUTPUT.STREAM 128663 . 130232)) (130235 132551 (TEDIT-DEBUG 130245 . +132549)) (132552 134288 (TRENAME 132562 . 134286))))) STOP diff --git a/internal/TEDIT-DEBUG.LCOM b/internal/TEDIT-DEBUG.LCOM index 95a2f29f6ba3aa8d0c3b9571c0f81cf3ce4f0f73..09a2f7afc40a74678d99945d0482bfa1942a8b2f 100644 GIT binary patch delta 904 zcmZuw&1(}u6yLQi${wVZfYyRM77GcObZ7Q^LF^_wse#Szc6YX+lpdNk*ihS))Pvwh zt5WFEvIlP-TJR!@C5K+r-W2@@(pqnxJbLr!B&M{74g>RhAM@kAH^2FG-1qgk?`0*0 z)vUeR%wh?vAek0ImZEGgDeGni1Q9EzK`dJ;wvZ-5wON~QEU(t@*A}4maJ9KMYJo%Y z@q{1KAf~y9hQuyIeFel~?7DE4C6~*IurT+4T|JK;OJYVy7fbF9QeY&MI3S)|;iH?P z2}o8{MFERAC7R7oLvwiv1gmh@_9jS_rG66p9!`T5gk-AZ$5GZ{gpBV@Q%JKU)sm42 z!uAu9H(EdW{m0je0>|}_FUasJ&k)B|xo_OgUf*!*?b9Qk&n251X?`Gizj1ru%eX%% zB!4zO^Jenl8D3X_k}wEMU|=2C=^-$Xd4eProG2*z9tGXhPf~S5I(6$ZP&*I0hEIL0 z#U86JYfvU-7ROSLRF_Z>X{LG^So5J>VCkSqa;x!ti|3W(?~CutGKfLFHeZ9qxiwg6 zK!H_3JQ|6h%Lvj)X43>D0m2#33?0OovYVe3LDSU^W<_-j)nrBwD+a?wKP-0wGUK0d zi?gBt8pf@$&7pAc7k7ahaCRrFmk#WmJ#Ie<+UCWz{H|T?KS=nGspNHA;1@e6RlnDn zbAIu9cd>)*m)KK;(rIQ$Fd3H!1%y;!qH}!DWo|Z$$=GLtLDC5_ zI}gFM28PKJqpO5Qv?D1)fr4wro=c*Ly=?O4aO{FV zrueZo*3hAV4f!8{HNd(G#IiuS9Qf5~1qdY_EXQ{OqRF6(&5FeJC+uUO@wOK))c)59|Z$2lF__=uwy%Wc`@*|k)5XCG^ zx!ha;*enZo%bLc7LdcqciKH_gXB;pl(5xp>;HDB|XnLU=HRB|Tp<+TKi{$F0eYt#( zgJnR%QpQu>*(kN3=G$55vor;2h>`8_o-z@io{z1_XP2Q+*pu&Si!Q5X6Dn|3{)z#G z(DR|-dnt!*l{D%`p+BYWCmNZ@WObMJnKQ{am-K;xd)#NTAWC2tLX%I$OqHj7ciSKR E3ypN*;{X5v From e2a3b84c7ef685fd18d6aeab24494ccc22a22b0e Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sat, 26 Apr 2025 13:37:03 -0700 Subject: [PATCH 09/18] Fix some tab menu issues, plus a few other things --- library/tedit/TEDIT | 76 ++++---- library/tedit/TEDIT-ABBREV | 15 +- library/tedit/TEDIT-ABBREV.LCOM | Bin 5021 -> 5019 bytes library/tedit/TEDIT-FILE | 62 +++---- library/tedit/TEDIT-FILE.LCOM | Bin 38677 -> 38693 bytes library/tedit/TEDIT-LOOKS | 61 ++++--- library/tedit/TEDIT-LOOKS.LCOM | Bin 39727 -> 39620 bytes library/tedit/TEDIT-MENU | 69 ++++---- library/tedit/TEDIT-MENU.LCOM | Bin 53003 -> 53040 bytes library/tedit/TEDIT-SELECTION | 53 +++--- library/tedit/TEDIT-SELECTION.LCOM | Bin 31275 -> 31275 bytes library/tedit/TEDIT-STREAM | 269 ++++++++++++++++------------- library/tedit/TEDIT-STREAM.LCOM | Bin 37976 -> 38143 bytes library/tedit/TEDIT-TFBRAVO | 39 +++-- library/tedit/TEDIT-TFBRAVO.LCOM | Bin 27143 -> 27141 bytes library/tedit/TEDIT-WINDOW | 146 +++++++--------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62253 -> 62096 bytes library/tedit/TEDIT.LCOM | Bin 32986 -> 32921 bytes lispusers/FOO.TEDIT | Bin 0 -> 19725 bytes 19 files changed, 401 insertions(+), 389 deletions(-) create mode 100644 lispusers/FOO.TEDIT diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index 501d00b92..94bb2110d 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Apr-2025 11:42:58" {WMEDLEY}tedit>TEDIT.;824 144729 +(FILECREATED "26-Apr-2025 11:46:44" {WMEDLEY}TEDIT>TEDIT.;827 144937 :EDIT-BY rmk - :CHANGES-TO (VARS TEDITCOMS) + :CHANGES-TO (FNS \TEDIT.PARA.FIRST) - :PREVIOUS-DATE "22-Apr-2025 10:28:59" {WMEDLEY}tedit>TEDIT.;822) + :PREVIOUS-DATE "25-Apr-2025 18:07:26" {WMEDLEY}TEDIT>TEDIT.;826) (PRETTYCOMPRINT TEDITCOMS) @@ -260,7 +260,8 @@ PROC]) (TEXTSTREAM - [LAMBDA (TSTREAM? NOERROR) (* ; "Edited 29-Apr-2024 12:50 by rmk") + [LAMBDA (TSTREAM? NOERROR) (* ; "Edited 25-Apr-2025 18:07 by rmk") + (* ; "Edited 29-Apr-2024 12:50 by rmk") (* ; "Edited 20-Mar-2024 08:51 by rmk") (* ; "Edited 24-Mar-2023 18:01 by rmk") (* jds "11-Jul-85 12:06") @@ -277,14 +278,13 @@ then (PROCESS.WINDOW TSTREAM?) elseif (DISPLAYSTREAMP TSTREAM?) then (WFROMDS TSTREAM?))) - then (if (type? TEXTSTREAM (SETQ X (fetch (TEXTWINDOW WTEXTSTREAM) of WINDOW))) - then X - elseif (type? TEXTOBJ (SETQ X (fetch (TEXTWINDOW WTEXTOBJ) of WINDOW))) - then (FGETTOBJ X STREAMHINT)) + then (CL:WHEN (type? TEXTSTREAM (SETQ X (fetch (TEXTWINDOW WTEXTSTREAM) + of WINDOW))) + X) elseif (AND (type? SELECTION TSTREAM?) (FGETSEL TSTREAM? SET)) - then (CL:WHEN [type? TEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) - of (SETQ X (FGETSEL TSTREAM? SELTEXTSTREAM] + then (CL:WHEN (type? TEXTOBJ (GETTSTR (SETQ X (FGETSEL TSTREAM? SELTEXTSTREAM)) + TEXTOBJ)) X))) (OR TS (CL:UNLESS NOERROR (ERROR TSTREAM? "is not a Tedit document"]) @@ -1129,7 +1129,8 @@ TEXTLEN))]) (TEDIT.RPLCHARCODE - [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 28-Mar-2025 09:58 by rmk") + [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 24-Apr-2025 17:26 by rmk") + (* ; "Edited 28-Mar-2025 09:58 by rmk") (* ; "Edited 9-Feb-2025 12:21 by rmk") (* ; "Edited 7-Feb-2025 08:02 by rmk") (* ; "Edited 23-Sep-2024 00:36 by rmk") @@ -1165,7 +1166,7 @@ (CL:WHEN [AND NEWCHARLOOKS (NOT (OR (FONTP NEWCHARLOOKS) (type? CHARLOOKS NEWCHARLOOKS] (\ILLEGAL.ARG NEWCHARLOOKS)) - (\TEDIT.RPLCHARCODE TSTREAM NEWCHARCODE NEWCHARLOOKS DONTDISPLAY]) + (\TEDIT.RPLCHARCODE TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY]) (TEDIT.NTHCHARCODE [LAMBDA (TSTREAM N) (* ; "Edited 28-Mar-2025 14:10 by rmk") @@ -2105,7 +2106,8 @@ when (PPARALAST PC) collect CHNO repeatuntil (EQ PC LASTPARAPC]) (\TEDIT.PARA.FIRST - [LAMBDA (TEXTOBJ CHNO PROTECTEDNOTOK) (* ; "Edited 30-Jan-2025 12:02 by rmk") + [LAMBDA (TEXTOBJ CHNO PROTECTEDNOTOK) (* ; "Edited 26-Apr-2025 11:33 by rmk") + (* ; "Edited 30-Jan-2025 12:02 by rmk") (* ; "Edited 11-Jan-2025 00:08 by rmk") (* ; "Edited 17-Mar-2024 00:27 by rmk") (* ; "Edited 19-Jan-2024 10:10 by rmk") @@ -2143,7 +2145,7 @@ (* ;; "If the iteration reached the beginning, there is no PREVPIECE. Otherwise, PC is the previous PARALAST, and we have to take its next") (RETURN (CONS (IDIFFERENCE START PLENTOT) - (CL:IF PC + (CL:IF (PREVPIECE PC) (NEXTPIECE PC) (\TEDIT.FIRSTPIECE TEXTOBJ))]) @@ -2304,7 +2306,7 @@ (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "23-Apr-2025 11:42:58") +(RPAQQ TEDITSYSTEMDATE "26-Apr-2025 11:46:44") @@ -2314,26 +2316,26 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4811 7205 (MAKE-TEDIT-EXPORTS.ALL 4821 . 5367) (UPDATE-TEDIT 5369 . 6298) (EDIT-TEDIT -6300 . 7203)) (8635 36622 (TEDIT 8645 . 11223) (TEXTSTREAM 11225 . 13145) (TEXTSTREAMP 13147 . 13531) -(COERCETEXTSTREAM 13533 . 17744) (TEDIT.CONCAT 17746 . 21048) (TEDITSTRING 21050 . 21964) (TEDIT-SEE -21966 . 22525) (TEDIT.COPY 22527 . 24672) (TEDIT.DELETE 24674 . 26035) (TEDIT.INSERT 26037 . 29411) ( -TEDIT.TERPRI 29413 . 30527) (TEDIT.KILL 30529 . 31445) (TEDIT.QUIT 31447 . 32813) (TEDIT.MOVE 32815 . -33703) (TEDIT.STRINGWIDTH 33705 . 34376) (TEDIT.CHARWIDTH 34378 . 36620)) (36623 38564 (TEXTOBJ 36633 - . 37098) (COERCETEXTOBJ 37100 . 38562)) (39964 41614 (TDRIBBLE 39974 . 41612)) (41655 54640 ( -TEDIT.INSERT.OBJECT 41665 . 46681) (TEDIT.EDIT.OBJECT 46683 . 49512) (TEDIT.OBJECT.CHANGED 49514 . -52595) (TEDIT.MAP.OBJECTS 52597 . 54168) (\TEDIT.FIRST.OBJPIECE 54170 . 54403) (\TEDIT.NEXT.OBJPIECE -54405 . 54638)) (54663 62106 (\TEDIT.CONCAT.PAGEFRAMES 54673 . 59740) (\TEDIT.GET.PAGE.HEADINGS 59742 - . 60771) (\TEDIT.CONCAT.INSTALL.HEADINGS 60773 . 62104)) (62107 65714 (\TEDIT.MOVE.MSG 62117 . 64198) - (\TEDIT.READONLY 64200 . 65712)) (65715 71379 (TEDIT.NCHARS 65725 . 66098) (TEDIT.RPLCHARCODE 66100 - . 68979) (TEDIT.NTHCHARCODE 68981 . 70908) (TEDIT.NTHCHAR 70910 . 71377)) (71425 127674 (\TEDIT1 -71435 . 73512) (\TEDIT.INSERT 73514 . 79775) (\TEDIT.MOVE 79777 . 87579) (\TEDIT.COPY 87581 . 92010) ( -\TEDIT.REPLACE.SELPIECES 92012 . 96334) (\TEDIT.INSERT.SELPIECES 96336 . 99333) (\TEDIT.RESTARTFN -99335 . 101840) (\TEDIT.CHARDELETE 101842 . 104771) (\TEDIT.COPYPIECE 104773 . 109786) ( -\TEDIT.APPLY.OBJFN 109788 . 112874) (\TEDIT.DELETE 112876 . 117244) (\TEDIT.DIFFUSE.PARALOOKS 117246 - . 119517) (\TEDIT.WORDDELETE 119519 . 121134) (\TEDIT.WORDDELETE.FORWARD 121136 . 122925) ( -\TEDIT.FINISHEDIT? 122927 . 127672)) (127675 128334 (\TEDIT.THELP 127685 . 128332)) (128368 137152 ( -\TEDIT.PARAPIECES 128378 . 130352) (\TEDIT.PARACHNOS 130354 . 131246) (\TEDIT.PARA.FIRST 131248 . -134115) (\TEDIT.PARA.LAST 134117 . 137150)) (137153 144248 (\TEDIT.WORD.FIRST 137163 . 141167) ( -\TEDIT.WORD.LAST 141169 . 144246))))) + (FILEMAP (NIL (4818 7212 (MAKE-TEDIT-EXPORTS.ALL 4828 . 5374) (UPDATE-TEDIT 5376 . 6305) (EDIT-TEDIT +6307 . 7210)) (8642 36598 (TEDIT 8652 . 11230) (TEXTSTREAM 11232 . 13121) (TEXTSTREAMP 13123 . 13507) +(COERCETEXTSTREAM 13509 . 17720) (TEDIT.CONCAT 17722 . 21024) (TEDITSTRING 21026 . 21940) (TEDIT-SEE +21942 . 22501) (TEDIT.COPY 22503 . 24648) (TEDIT.DELETE 24650 . 26011) (TEDIT.INSERT 26013 . 29387) ( +TEDIT.TERPRI 29389 . 30503) (TEDIT.KILL 30505 . 31421) (TEDIT.QUIT 31423 . 32789) (TEDIT.MOVE 32791 . +33679) (TEDIT.STRINGWIDTH 33681 . 34352) (TEDIT.CHARWIDTH 34354 . 36596)) (36599 38540 (TEXTOBJ 36609 + . 37074) (COERCETEXTOBJ 37076 . 38538)) (39940 41590 (TDRIBBLE 39950 . 41588)) (41631 54616 ( +TEDIT.INSERT.OBJECT 41641 . 46657) (TEDIT.EDIT.OBJECT 46659 . 49488) (TEDIT.OBJECT.CHANGED 49490 . +52571) (TEDIT.MAP.OBJECTS 52573 . 54144) (\TEDIT.FIRST.OBJPIECE 54146 . 54379) (\TEDIT.NEXT.OBJPIECE +54381 . 54614)) (54639 62082 (\TEDIT.CONCAT.PAGEFRAMES 54649 . 59716) (\TEDIT.GET.PAGE.HEADINGS 59718 + . 60747) (\TEDIT.CONCAT.INSTALL.HEADINGS 60749 . 62080)) (62083 65690 (\TEDIT.MOVE.MSG 62093 . 64174) + (\TEDIT.READONLY 64176 . 65688)) (65691 71466 (TEDIT.NCHARS 65701 . 66074) (TEDIT.RPLCHARCODE 66076 + . 69066) (TEDIT.NTHCHARCODE 69068 . 70995) (TEDIT.NTHCHAR 70997 . 71464)) (71512 127761 (\TEDIT1 +71522 . 73599) (\TEDIT.INSERT 73601 . 79862) (\TEDIT.MOVE 79864 . 87666) (\TEDIT.COPY 87668 . 92097) ( +\TEDIT.REPLACE.SELPIECES 92099 . 96421) (\TEDIT.INSERT.SELPIECES 96423 . 99420) (\TEDIT.RESTARTFN +99422 . 101927) (\TEDIT.CHARDELETE 101929 . 104858) (\TEDIT.COPYPIECE 104860 . 109873) ( +\TEDIT.APPLY.OBJFN 109875 . 112961) (\TEDIT.DELETE 112963 . 117331) (\TEDIT.DIFFUSE.PARALOOKS 117333 + . 119604) (\TEDIT.WORDDELETE 119606 . 121221) (\TEDIT.WORDDELETE.FORWARD 121223 . 123012) ( +\TEDIT.FINISHEDIT? 123014 . 127759)) (127762 128421 (\TEDIT.THELP 127772 . 128419)) (128455 137360 ( +\TEDIT.PARAPIECES 128465 . 130439) (\TEDIT.PARACHNOS 130441 . 131333) (\TEDIT.PARA.FIRST 131335 . +134323) (\TEDIT.PARA.LAST 134325 . 137358)) (137361 144456 (\TEDIT.WORD.FIRST 137371 . 141375) ( +\TEDIT.WORD.LAST 141377 . 144454))))) STOP diff --git a/library/tedit/TEDIT-ABBREV b/library/tedit/TEDIT-ABBREV index 8087b09ab..9098e61dc 100644 --- a/library/tedit/TEDIT-ABBREV +++ b/library/tedit/TEDIT-ABBREV @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Apr-2025 23:30:29" {WMEDLEY}tedit>TEDIT-ABBREV.;22 16092 +(FILECREATED "24-Apr-2025 23:45:12" {WMEDLEY}tedit>TEDIT-ABBREV.;23 16200 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.ABBREV.EXPAND) + :CHANGES-TO (FNS \TEDIT.ABBREV.PARSE) - :PREVIOUS-DATE "28-Mar-2025 10:13:36" {WMEDLEY}tedit>TEDIT-ABBREV.;21) + :PREVIOUS-DATE "20-Apr-2025 23:30:29" {WMEDLEY}tedit>TEDIT-ABBREV.;22) (PRETTYCOMPRINT TEDIT-ABBREVCOMS) @@ -97,7 +97,8 @@ else (TEDIT.PROMPTPRINT TSTREAM "No abbreviation to expand" T]) (\TEDIT.ABBREV.PARSE - [LAMBDA (TSTREAM SEL) (* ; "Edited 28-Mar-2025 10:11 by rmk") + [LAMBDA (TSTREAM SEL) (* ; "Edited 24-Apr-2025 23:45 by rmk") + (* ; "Edited 28-Mar-2025 10:11 by rmk") (* ; "Edited 23-Mar-2025 17:08 by rmk") (* ; "Edited 20-Mar-2025 22:21 by rmk") @@ -160,7 +161,7 @@ FIRST# LEN))) (* ; "Extend if a ,") [for C KEY END in CANDIDATES do - (* ;; "Comma for XCCS character names, - and / - for internal punctuation (3/4 EM-DASH). Adjacent character must be text") + (* ;; "Comma for MCCS character names, - and / - for internal punctuation (3/4 EM-DASH). Adjacent character must be text") (if [AND (MEMB (\TEDIT.NTHCHARCODE TSTREAM (SUB1 (CADR C))) (CHARCODE (%, / -))) @@ -307,6 +308,6 @@ ("DATE" . \TEDIT.EXPAND.DATE) (">>DATE<<" . \TEDIT.EXPAND.DATE))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2934 14748 (\TEDIT.ABBREV.EXPAND 2944 . 5164) (\TEDIT.ABBREV.PARSE 5166 . 12450) ( -\TEDIT.EXPAND.DATE 12452 . 13085) (\TEDIT.TRY.ABBREV 13087 . 14746))))) + (FILEMAP (NIL (2933 14856 (\TEDIT.ABBREV.EXPAND 2943 . 5163) (\TEDIT.ABBREV.PARSE 5165 . 12558) ( +\TEDIT.EXPAND.DATE 12560 . 13193) (\TEDIT.TRY.ABBREV 13195 . 14854))))) STOP diff --git a/library/tedit/TEDIT-ABBREV.LCOM b/library/tedit/TEDIT-ABBREV.LCOM index 45417e8c6d2ce1f1bf0fd5f5211ddc1107ec881b..b3b73af92cd8f6c7ea89f1ec0991f1f69899d4bb 100644 GIT binary patch delta 209 zcmbQMK3jc4gs_ROV?mLwk%5t^f|0S6iK&&L(Zp;^Nn=d~E+r#mNh2#GBP$c5iF;Kh z&*Nc>&CF9!atrnGQ9xFtr>Cc+kdj!Enu1-oxsoQAhMT94t8lZG%(j#?(p2D5GD4CxG_^7@vobN9xK|~` zH6p;#&qX0KPeI8o)W=5wS)HDqo{~aJVo7QWb_2|mG`Td~Jbhf9gIpa$TwN4UY=Jnz z$WlpR@;OEgHU&d7152aHMT~kn5IZ#$tO9~u!#w>%gLPei+JU+)bbS+{9xybpG6ed; RZ1QPFEk?u5-x!w)0sxLBIS2p% diff --git a/library/tedit/TEDIT-FILE b/library/tedit/TEDIT-FILE index d594e14b8..b8c469b5a 100644 --- a/library/tedit/TEDIT-FILE +++ b/library/tedit/TEDIT-FILE @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Apr-2025 15:58:21" {WMEDLEY}tedit>TEDIT-FILE.;614 163325 +(FILECREATED "26-Apr-2025 12:53:23" {MEDLEY}tedit>TEDIT-FILE.;38 163507 :EDIT-BY rmk - :CHANGES-TO (FNS TEDIT.PUT \TEDIT.PUT.SINGLE.CHARLOOKS \TEDIT.GET.SINGLE.CHARLOOKS) + :CHANGES-TO (FNS \TEDIT.PUT.PCTB.NEXTNEW \TEDIT.PUT.PCTB.MERGEABLE) - :PREVIOUS-DATE "19-Apr-2025 22:29:28" {WMEDLEY}tedit>TEDIT-FILE.;612) + :PREVIOUS-DATE "22-Apr-2025 15:58:21" {MEDLEY}tedit>TEDIT-FILE.;37) (PRETTYCOMPRINT TEDIT-FILECOMS) @@ -1906,7 +1906,8 @@ (\WOUT FORMATSTREAM (IPLUS 31415 VERSION]) (\TEDIT.PUT.PCTB.MERGEABLE - [LAMBDA (PREVPC PC EDITSTENTATIVE EXTFORMAT TEXTOBJ) (* ; "Edited 14-May-2024 11:55 by rmk") + [LAMBDA (PREVPC PC EDITSTENTATIVE EXTFORMAT TEXTOBJ) (* ; "Edited 26-Apr-2025 12:53 by rmk") + (* ; "Edited 14-May-2024 11:55 by rmk") (* ; "Edited 12-May-2024 21:57 by rmk") (* ; "Edited 23-Jan-2024 09:12 by rmk") (* ; "Edited 12-Jan-2024 09:46 by rmk") @@ -1948,7 +1949,7 @@ (NEQ 0 (PCHARSET PREVPC))) [AND (EQ EXTFORMAT :UTF-8) (NOT (MEMB PREVTYPE (CONSTANT (LIST THINFILE.PTYPE THINSTRING.PTYPE] - (NOT (MEMB (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PREVPC (SUB1 (PLEN PREVPC))) + (NOT (MEMB (\TEDIT.PIECE.NTHCHARCODE PREVPC (SUB1 (PLEN PREVPC))) (CHARCODE (EOL LF])])]) (\TEDIT.PUT.UTF8.SPLITPIECES @@ -2019,6 +2020,7 @@ (\TEDIT.PUT.PCTB.NEXTNEW [LAMBDA (NEXTNEW PC OLDBYTE# RUNLEN EXTFORMAT TEXTOBJ EOLC NSHIFTBYTES) + (* ; "Edited 26-Apr-2025 12:52 by rmk") (* ; "Edited 26-Mar-2025 09:27 by rmk") (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 14-May-2024 18:54 by rmk") @@ -2067,7 +2069,7 @@  "The file may have LF, but we want to restore EOL internally") (CL:WHEN [AND (EQ THINFILE.PTYPE (PTYPE NEXTNEW)) (EQ (CHARCODE EOL) - (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC (PLEN PC] + (\TEDIT.PIECE.NTHCHARCODE PC (PLEN PC] (if (EQ 1 (PLEN NEXTNEW)) then (FSETPC NEXTNEW PTYPE THINSTRING.PTYPE) (FSETPC NEXTNEW PCONTENTS (ALLOCSTRING 1 (CHARCODE EOL))) @@ -2551,28 +2553,28 @@ (RPAQ? *TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5147 35016 (TEDIT.GET 5157 . 11489) (TEDIT.FORMATTEDFILEP 11491 . 12807) ( -TEDIT.FILEDATE 12809 . 13980) (TEDIT.INCLUDE 13982 . 22011) (TEDIT.RAW.INCLUDE 22013 . 22821) ( -TEDIT.PUT 22823 . 31181) (TEDIT.PUT.STREAM 31183 . 35014)) (35017 54896 (\TEDIT.GET.FOREIGN.FILE 35027 - . 38452) (\TEDIT.GET.UNFORMATTED.FILE 38454 . 42446) (\TEDIT.GET.FORMATTED.FILE 42448 . 45475) ( -\TEDIT.FORMATTEDSTREAMP 45477 . 48495) (\ARBIN 48497 . 49217) (\ATMIN 49219 . 49756) (\DWIN 49758 . -50137) (\STRINGIN 50139 . 50847) (\TEDIT.GET.TRAILER 50849 . 53365) (\TEDIT.CACHEFILE 53367 . 54894)) -(55062 68816 (\TEDIT.GET.PIECES3 55072 . 65578) (\TEDIT.GET.IDATE3 65580 . 66975) ( -\TEDIT.MAKE.STRINGPIECE 66977 . 68814)) (68817 81192 (\TEDIT.GET.UNFORMATTED.FILE.XCCS 68827 . 74943) -(\TEDIT.INTERPRET.XCCS.SHIFTS 74945 . 81190)) (81214 87236 (\TEDIT.GET.UNFORMATTED.FILE.UTF8 81224 . -87234)) (87259 96388 (\TEDIT.GET.CHARLOOKS.LIST 87269 . 88000) (\TEDIT.GET.SINGLE.CHARLOOKS 88002 . -93200) (\TEDIT.GET.CHARLOOKS 93202 . 94532) (\TEDIT.GET.PARALOOKS.INDEX 94534 . 95078) ( -\TEDIT.GET.CHARLOOKS.INDEX 95080 . 96386)) (96389 104046 (\TEDIT.GET.PARALOOKS.LIST 96399 . 97021) ( -\TEDIT.GET.SINGLE.PARALOOKS 97023 . 104044)) (104047 107637 (\TEDIT.GET.OBJECT 104057 . 107635)) ( -107702 139783 (\TEDIT.PUT.PCTB 107712 . 117362) (\TEDIT.PUT.PCTB.PIECEDATA 117364 . 120562) ( -\TEDIT.PUT.TRAILER 120564 . 121331) (\TEDIT.PUT.PCTB.MERGEABLE 121333 . 124767) ( -\TEDIT.PUT.UTF8.SPLITPIECES 124769 . 129471) (\TEDIT.PUT.PCTB.NEXTNEW 129473 . 133944) ( -\TEDIT.INSERT.NEWPIECES 133946 . 137381) (\TEDIT.PUTRESET 137383 . 137625) (\ARBOUT 137627 . 138351) ( -\ATMOUT 138353 . 138958) (\DWOUT 138960 . 139239) (\STRINGOUT 139241 . 139781)) (139784 151854 ( -\TEDIT.PUT.CHARLOOKS.LIST 139794 . 141466) (\TEDIT.PUT.SINGLE.CHARLOOKS 141468 . 147198) ( -\TEDIT.PUT.CHARLOOKS 147200 . 148425) (\TEDIT.PUT.CHARLOOKS1 148427 . 149478) (\TEDIT.PUT.OBJECT -149480 . 151852)) (151855 159494 (\TEDIT.PUT.PARALOOKS.LIST 151865 . 152767) ( -\TEDIT.PUT.SINGLE.PARALOOKS 152769 . 158353) (\TEDIT.PUT.PARALOOKS 158355 . 159492)) (159589 163018 ( -TEDITFROMLISPSOURCE 159599 . 162267) (SHELLSCRIPTP 162269 . 162498) (TEDITFROMSHELLSCRIPT 162500 . -163016))))) + (FILEMAP (NIL (5127 34996 (TEDIT.GET 5137 . 11469) (TEDIT.FORMATTEDFILEP 11471 . 12787) ( +TEDIT.FILEDATE 12789 . 13960) (TEDIT.INCLUDE 13962 . 21991) (TEDIT.RAW.INCLUDE 21993 . 22801) ( +TEDIT.PUT 22803 . 31161) (TEDIT.PUT.STREAM 31163 . 34994)) (34997 54876 (\TEDIT.GET.FOREIGN.FILE 35007 + . 38432) (\TEDIT.GET.UNFORMATTED.FILE 38434 . 42426) (\TEDIT.GET.FORMATTED.FILE 42428 . 45455) ( +\TEDIT.FORMATTEDSTREAMP 45457 . 48475) (\ARBIN 48477 . 49197) (\ATMIN 49199 . 49736) (\DWIN 49738 . +50117) (\STRINGIN 50119 . 50827) (\TEDIT.GET.TRAILER 50829 . 53345) (\TEDIT.CACHEFILE 53347 . 54874)) +(55042 68796 (\TEDIT.GET.PIECES3 55052 . 65558) (\TEDIT.GET.IDATE3 65560 . 66955) ( +\TEDIT.MAKE.STRINGPIECE 66957 . 68794)) (68797 81172 (\TEDIT.GET.UNFORMATTED.FILE.XCCS 68807 . 74923) +(\TEDIT.INTERPRET.XCCS.SHIFTS 74925 . 81170)) (81194 87216 (\TEDIT.GET.UNFORMATTED.FILE.UTF8 81204 . +87214)) (87239 96368 (\TEDIT.GET.CHARLOOKS.LIST 87249 . 87980) (\TEDIT.GET.SINGLE.CHARLOOKS 87982 . +93180) (\TEDIT.GET.CHARLOOKS 93182 . 94512) (\TEDIT.GET.PARALOOKS.INDEX 94514 . 95058) ( +\TEDIT.GET.CHARLOOKS.INDEX 95060 . 96366)) (96369 104026 (\TEDIT.GET.PARALOOKS.LIST 96379 . 97001) ( +\TEDIT.GET.SINGLE.PARALOOKS 97003 . 104024)) (104027 107617 (\TEDIT.GET.OBJECT 104037 . 107615)) ( +107682 139965 (\TEDIT.PUT.PCTB 107692 . 117342) (\TEDIT.PUT.PCTB.PIECEDATA 117344 . 120542) ( +\TEDIT.PUT.TRAILER 120544 . 121311) (\TEDIT.PUT.PCTB.MERGEABLE 121313 . 124848) ( +\TEDIT.PUT.UTF8.SPLITPIECES 124850 . 129552) (\TEDIT.PUT.PCTB.NEXTNEW 129554 . 134126) ( +\TEDIT.INSERT.NEWPIECES 134128 . 137563) (\TEDIT.PUTRESET 137565 . 137807) (\ARBOUT 137809 . 138533) ( +\ATMOUT 138535 . 139140) (\DWOUT 139142 . 139421) (\STRINGOUT 139423 . 139963)) (139966 152036 ( +\TEDIT.PUT.CHARLOOKS.LIST 139976 . 141648) (\TEDIT.PUT.SINGLE.CHARLOOKS 141650 . 147380) ( +\TEDIT.PUT.CHARLOOKS 147382 . 148607) (\TEDIT.PUT.CHARLOOKS1 148609 . 149660) (\TEDIT.PUT.OBJECT +149662 . 152034)) (152037 159676 (\TEDIT.PUT.PARALOOKS.LIST 152047 . 152949) ( +\TEDIT.PUT.SINGLE.PARALOOKS 152951 . 158535) (\TEDIT.PUT.PARALOOKS 158537 . 159674)) (159771 163200 ( +TEDITFROMLISPSOURCE 159781 . 162449) (SHELLSCRIPTP 162451 . 162680) (TEDITFROMSHELLSCRIPT 162682 . +163198))))) STOP diff --git a/library/tedit/TEDIT-FILE.LCOM b/library/tedit/TEDIT-FILE.LCOM index d23727653fbeaaf41c9457e0e572dd5d49bd0516..0312bccebbfa70f7964c7de72c30e68ebd12cb66 100644 GIT binary patch delta 604 zcmbQbj%n#SrU?;hX1b0AMY=`?My3jeMpmZARz}833K~ku`MCv|IjJcM`FRRT3e^+q zl?;q6G!?j%j8HY0SXvoaC@CZrrNVWjRumK!t6C{c{+}T=`Q0S$$(s4RahZ8Qy>6jC zJ_^VN=;`SxDWoKp0PVqIu%VHXCYOerr;n?1kgH>es|$uAsB=Ni<21HVFf=nZH87u? z&ZsbX+9dwTy7`q#wkcrVFhwa0pjSNpbA@m)GlRSEoE delta 581 zcmZ3wj%n&TrU?;~KQM|4X(%P<=N4qf@t;tXWS_ zPe~yqu>@!hHdBoZlr*_C+&q0;or7E*LtL3$6eho8lwbrqh70Hz1w%7qVYQ+y0r5cUqIO_C0$1c2O(4~|e8A~SFDhfJ@80Ebf|?T$eFVT-Fr4)=$x z_8!?EW&#D-K{~b?I;S%L!H0Ps`5>ALL;!`QTpUtPvSr`o2Jw+)1Tq8|G>l9v6ntHM zoq#c9FaFj`JNkbj;(2js1+51Ue49f9U>Po7(l#ArCFP+HJZ v!O_RZ-#IuW$kWeV!N|xEsNY)NR3X6A)!9|S$lMafGJ}hmT5fJDoUaN1yUVmK diff --git a/library/tedit/TEDIT-LOOKS b/library/tedit/TEDIT-LOOKS index 833d26e33..c4512622a 100644 --- a/library/tedit/TEDIT-LOOKS +++ b/library/tedit/TEDIT-LOOKS @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Apr-2025 20:41:05" {WMEDLEY}tedit>TEDIT-LOOKS.;423 159512 +(FILECREATED "24-Apr-2025 23:47:54" {WMEDLEY}tedit>TEDIT-LOOKS.;425 159446 :EDIT-BY rmk - :CHANGES-TO (FNS TEDIT.SUBLOOKS \TEDIT.CHARLOOKS.FEATURE.CHECK \TEDIT.CHANGE.CHARLOOKS - \TEDIT.GET.INSERT.CHARLOOKS \TEDIT.CHANGE.PARALOOKS) - (VARS TEDIT-LOOKSCOMS) + :CHANGES-TO (FNS \TEDIT.TRANSLATE.ASCIICHARS) - :PREVIOUS-DATE "21-Apr-2025 20:28:55" {WMEDLEY}tedit>TEDIT-LOOKS.;415) + :PREVIOUS-DATE "24-Apr-2025 16:05:02" {WMEDLEY}tedit>TEDIT-LOOKS.;424) (PRETTYCOMPRINT TEDIT-LOOKSCOMS) @@ -948,7 +946,8 @@ (DEFINEQ (\TEDIT.TRANSLATE.ASCIICHARS - [LAMBDA (TSTREAM NOASCIIFONTS) (* ; "Edited 30-Mar-2025 22:00 by rmk") + [LAMBDA (TSTREAM NOASCIIFONTS) (* ; "Edited 24-Apr-2025 23:47 by rmk") + (* ; "Edited 30-Mar-2025 22:00 by rmk") (* ; "Edited 28-Mar-2025 14:24 by rmk") (* ; "Edited 2-Jan-2025 23:30 by rmk") (* ; "Edited 30-Dec-2024 21:30 by rmk") @@ -962,7 +961,7 @@ (* ; "Edited 14-Nov-2023 19:21 by rmk") (* ; "Edited 9-Nov-2023 23:56 by rmk") - (* ;; "Converts characters in Alto/Ascii font pieces to their XCCS character and font (more or less) equivalents. The affected characters are put in their own string pieces with their new CHARLOOKS. Asciifont pieces are completely replaced if NOASCIIFONTS, otherwise untranslated characters remain in their Asciifonts.") + (* ;; "Converts characters in Alto/Ascii font pieces to their MCCS character and font (more or less) equivalents. The affected characters are put in their own string pieces with their new CHARLOOKS. Asciifont pieces are completely replaced if NOASCIIFONTS, otherwise untranslated characters remain in their Asciifonts.") (* ;; "ASCIITONSTRANSLATIONS and the mapping arrays are from INTERPRESS.") @@ -1017,7 +1016,7 @@ (* ;;  "Out-of-range alone and zero newcodes alone (some arrays are not filled in).") - (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC OFFSET)) + (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE PC OFFSET)) (RPLCHARCODE STRING OFFSET (if [OR (IGREATERP OLDCODE TARRAYLAST) (ZEROP (SETQ NEWCODE (ELT MAPARRAY OLDCODE] @@ -1045,7 +1044,7 @@ (* ;; "Find the first change quickly, in piece coordinates. Then change whatever else needs it, slowly, in document coordinates. It would be more complicated to do the replacements in piece coordinates, because the pieces would get split on the fly. ") (for OFFSET OLDCODE NEWLOOKS from 1 to (PLEN PC) - eachtime (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC OFFSET)) + eachtime (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE PC OFFSET)) when (ILEQ OLDCODE 255) unless (EQ OLDCODE (ELT \ASCII2MCCS OLDCODE)) do (* ;; "First hit, scan/change the rest of PC") @@ -2532,26 +2531,26 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (23002 24944 (\TEDIT.CHARLOOKS.DEFPRINT 23012 . 24148) (\TEDIT.PARALOOKS.DEFPRINT 24150 - . 24942)) (25048 26144 (\TEDIT.CREATE.DEFAULT.FMTSPEC 25058 . 25766) (\TEDIT.CREATE.FACE.MENU 25768 - . 25940) (\TEDIT.CREATE.SIZE.MENU 25942 . 26142)) (26943 28832 (\TEDIT.CHARLOOKS.FEATURE.CHECK 26953 - . 28830)) (29134 53717 (\TEDIT.CHARLOOKS.FROM.FONT 29144 . 31357) (\TEDIT.EQCLOOKS 31359 . 34181) ( -\TEDIT.SAMECLOOKS 34183 . 37069) (TEDIT.CARETLOOKS 37071 . 38617) (TEDIT.COPY.LOOKS 38619 . 41902) ( -\TEDIT.UNPARSE.CHARLOOKS.LIST 41904 . 45398) (\TEDIT.MODIFYLOOKS 45400 . 47560) (TEDIT.NEW.FONT 47562 - . 48009) (\TEDIT.CARETLOOKS.VERIFY 48011 . 48848) (\TEDIT.CARETPIECE 48850 . 49155) ( -\TEDIT.GET.INSERT.CHARLOOKS 49157 . 52095) (\TEDIT.GET.TERMSA.WIDTHS 52097 . 52513) ( -\TEDIT.PARSE.CHARLOOKS.LIST 52515 . 53715)) (53718 70771 (\TEDIT.TRANSLATE.ASCIICHARS 53728 . 64507) ( -\TEDIT.CONVERT.TO.FORMATTED 64509 . 70769)) (71783 78894 (\TEDIT.UNIQUIFY.CHARLOOKS 71793 . 73453) ( -\TEDIT.UNIQUIFY.PARALOOKS 73455 . 74722) (\TEDIT.UNIQUIFY.ALL 74724 . 76699) ( -\TEDIT.FLUSH.UNUSED.LOOKS 76701 . 78892)) (78927 90234 (TEDIT.LOOKS 78937 . 81326) (TEDIT.GET.LOOKS -81328 . 83357) (TEDIT.SUBLOOKS 83359 . 87598) (TEDIT.FINDLOOKS 87600 . 90232)) (90309 119817 ( -\TEDIT.CHANGE.CHARLOOKS 90319 . 98976) (\TEDIT.CHANGE.CHARLOOKS.NEW 98978 . 102772) ( -\TEDIT.CHARLOOKS.CHANGE.FONT 102774 . 111081) (\TEDIT.FONT.NEXTSIZE 111083 . 112704) (\TEDIT.LOOKS -112706 . 116035) (\TEDIT.FONTCOPY 116037 . 117538) (\TEDIT.COERCE.FONTCLASS 117540 . 118691) ( -\TEDIT.FONTCLASS.TO.FONT 118693 . 119815)) (119860 150817 (\TEDIT.EQFMTSPEC 119870 . 123085) ( -TEDIT.GET.PARALOOKS 123087 . 127134) (\TEDIT.PARSE.PARALOOKS.LIST 127136 . 134478) (TEDIT.PARALOOKS -134480 . 135520) (\TEDIT.CHANGE.PARALOOKS 135522 . 142490) (\TEDIT.CHANGE.PARALOOKS.NEW 142492 . -146475) (TEDIT.COPY.PARALOOKS 146477 . 149151) (\TEDIT.PARABOUNDS 149153 . 150815)) (150877 158630 ( -TEDIT.SUBPARALOOKS 150887 . 155026) (SAMEPARALOOKS 155028 . 158628)) (158631 159318 ( -\TEDIT.MARK.REVISION 158641 . 159316))))) + (FILEMAP (NIL (22843 24785 (\TEDIT.CHARLOOKS.DEFPRINT 22853 . 23989) (\TEDIT.PARALOOKS.DEFPRINT 23991 + . 24783)) (24889 25985 (\TEDIT.CREATE.DEFAULT.FMTSPEC 24899 . 25607) (\TEDIT.CREATE.FACE.MENU 25609 + . 25781) (\TEDIT.CREATE.SIZE.MENU 25783 . 25983)) (26784 28673 (\TEDIT.CHARLOOKS.FEATURE.CHECK 26794 + . 28671)) (28975 53558 (\TEDIT.CHARLOOKS.FROM.FONT 28985 . 31198) (\TEDIT.EQCLOOKS 31200 . 34022) ( +\TEDIT.SAMECLOOKS 34024 . 36910) (TEDIT.CARETLOOKS 36912 . 38458) (TEDIT.COPY.LOOKS 38460 . 41743) ( +\TEDIT.UNPARSE.CHARLOOKS.LIST 41745 . 45239) (\TEDIT.MODIFYLOOKS 45241 . 47401) (TEDIT.NEW.FONT 47403 + . 47850) (\TEDIT.CARETLOOKS.VERIFY 47852 . 48689) (\TEDIT.CARETPIECE 48691 . 48996) ( +\TEDIT.GET.INSERT.CHARLOOKS 48998 . 51936) (\TEDIT.GET.TERMSA.WIDTHS 51938 . 52354) ( +\TEDIT.PARSE.CHARLOOKS.LIST 52356 . 53556)) (53559 70705 (\TEDIT.TRANSLATE.ASCIICHARS 53569 . 64441) ( +\TEDIT.CONVERT.TO.FORMATTED 64443 . 70703)) (71717 78828 (\TEDIT.UNIQUIFY.CHARLOOKS 71727 . 73387) ( +\TEDIT.UNIQUIFY.PARALOOKS 73389 . 74656) (\TEDIT.UNIQUIFY.ALL 74658 . 76633) ( +\TEDIT.FLUSH.UNUSED.LOOKS 76635 . 78826)) (78861 90168 (TEDIT.LOOKS 78871 . 81260) (TEDIT.GET.LOOKS +81262 . 83291) (TEDIT.SUBLOOKS 83293 . 87532) (TEDIT.FINDLOOKS 87534 . 90166)) (90243 119751 ( +\TEDIT.CHANGE.CHARLOOKS 90253 . 98910) (\TEDIT.CHANGE.CHARLOOKS.NEW 98912 . 102706) ( +\TEDIT.CHARLOOKS.CHANGE.FONT 102708 . 111015) (\TEDIT.FONT.NEXTSIZE 111017 . 112638) (\TEDIT.LOOKS +112640 . 115969) (\TEDIT.FONTCOPY 115971 . 117472) (\TEDIT.COERCE.FONTCLASS 117474 . 118625) ( +\TEDIT.FONTCLASS.TO.FONT 118627 . 119749)) (119794 150751 (\TEDIT.EQFMTSPEC 119804 . 123019) ( +TEDIT.GET.PARALOOKS 123021 . 127068) (\TEDIT.PARSE.PARALOOKS.LIST 127070 . 134412) (TEDIT.PARALOOKS +134414 . 135454) (\TEDIT.CHANGE.PARALOOKS 135456 . 142424) (\TEDIT.CHANGE.PARALOOKS.NEW 142426 . +146409) (TEDIT.COPY.PARALOOKS 146411 . 149085) (\TEDIT.PARABOUNDS 149087 . 150749)) (150811 158564 ( +TEDIT.SUBPARALOOKS 150821 . 154960) (SAMEPARALOOKS 154962 . 158562)) (158565 159252 ( +\TEDIT.MARK.REVISION 158575 . 159250))))) STOP diff --git a/library/tedit/TEDIT-LOOKS.LCOM b/library/tedit/TEDIT-LOOKS.LCOM index 953f1340029a5615cd34ea47dc24efeeee01f8da..4dbf3fdfe4f596610cbd2b00a9bb4da2417503a4 100644 GIT binary patch delta 1138 zcmZvayKmD_6vp!q74=XN3Y0!jZ%rQwQi6SbpB9K%uC185amb^hzydT*c{{Z4TC5{7ligV8Q`_B1}-+xSf*-1UWIE?aEYcmfu zhygTAL`{rdtn&iS0Y!!JA~Yd15mdpo&F1x6H(P5rnk%4rzqNU1#uUf5PF!Bw0IJ*Y zeGr!w3I!FcT)o>|QNaIrRLv<_*Yh2_>R5GW{;#G#6N$6Q+(8U<%n>4DBMHRl)_5)l z%u3Z+@`6S!KQG1oTAi30HZ?i0BF-h}l1Mxp92Vs#gWJziY%+g-I*~{f2NUwiOr=V@ zOPQ$y3+bJa)x#gskJ{;P>zOx)N}X~$^-}Cj-AfX&s-7Mw1t6GK#4EL!{3L#;pND=1 zV0U0WqmIf#LD_zHax#_tF22sV+R^r}+lj2MVGX!Jxn8LT6`*Un2Cm3Oy?UWh_AWF$ zce!B6&^TkFI6G0Ktkc{mSFCEy0i5Wdyq^sO9I>u81lmDm888;3Gnr0tcKiV|NFRmi zyhmXg`G-P{ecR5Agu!k@wc^_)t7-@H4j_a8$FBoo;BL8GFGXd{dG~KonjJoa8Sk3` zQ>`}x#t|dh1nacJM+}O5b}Wss9xj6r()&ON!X5}|wCfsyActaaZe)gn`1laZwcSfj zcm;^Gjuq6gw0bPRjdpg-g248zTFtZNl@JE5wdncF^0&+;+|mz%g_?YY6jVINmbal& z5fwN_;3x-CPp$)8N!gk OqYwt>&&#%&NL=cN;lis-PU%OxQ4_R90)!TA2IR3 zmBfo?{s863$q*tZk6yg#-N)H~LY?lW-J%5lxoZKAj?pxR1{df^Hi=KM@^7Y8Yos>&#^;i%94zrkYn5_Ab#cwCsn|dQ%uCm z91IhyYFO;CTY=u$RXu0Fk_Ulmz%pi1@UB4BTm!#&u&X7r% zNo8oMIiJV$pg-T7&Us>G=EBgAjgj5q+NnPI?C0N#otfu3L;RV!-0#+W@GlMuO3r_HxHVTrqx-)f_Z2as1gd_c8H9cS7-0e{-B7KD zd%fjW+Z9XJ$vF~uesX~`)R}HI0vXByuB*_HwaEkoI7P{F%xL>T8yL&bGfiMLwarv^ zgoF{?BVmaBM`CDQ)s9D%fg8s_&Pcj6qV>^|GC=~|9x59c(7hj8GOBfj%*q#+dt}V|} zGoWhKU9TO#BZ#}`-V%%mhYkhscq0Wk)x~b{+=M)z?jl!l24KashDW0zy(s5$nP-!|#SY}q&0Y8v9M9tedit>TEDIT-MENU.;471 175952 +(FILECREATED "26-Apr-2025 11:53:00" {WMEDLEY}TEDIT>TEDIT-MENU.;474 176155 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SHOW.CHARLOOKS \TEDIT.SHOW.PARALOOKS \TEDIT.SHOW.PAGELOOKS) + :CHANGES-TO (FNS MB.MARGINBAR.BUTTONEVENTINFN MB.MARGINBAR.SELFN.TABS + \TEDIT.EXPANDEDMENU.ACTIONFN) - :PREVIOUS-DATE "15-Apr-2025 16:48:16" {WMEDLEY}tedit>TEDIT-MENU.;470) + :PREVIOUS-DATE "20-Apr-2025 23:44:58" {WMEDLEY}TEDIT>TEDIT-MENU.;471) (PRETTYCOMPRINT TEDIT-MENUCOMS) @@ -612,7 +613,8 @@ (RETURN OBJ]) (MB.MARGINBAR.BUTTONEVENTINFN - [LAMBDA (OBJ MENUDS SEL RELX RELY MENUTSTREAM) (* ; "Edited 11-Jan-2025 21:28 by rmk") + [LAMBDA (OBJ MENUDS SEL RELX RELY MENUTSTREAM) (* ; "Edited 26-Apr-2025 11:52 by rmk") + (* ; "Edited 11-Jan-2025 21:28 by rmk") (* ; "Edited 7-Dec-2024 21:21 by rmk") (* ; "Edited 25-Aug-2024 09:12 by rmk") (* ; "Edited 1-Aug-2024 22:56 by rmk") @@ -720,7 +722,8 @@ HEIGHT _ 16) RELX RELY) then (* ; "We're in the tab ruler region") - (if (EQ 'OFF (MB.GET 'TABTYPE MENUTSTREAM 'STATE NIL T)) + (if (AND (MOUSESTATE MIDDLE) + (EQ 'OFF (MB.GET 'TABTYPE MENUTSTREAM 'STATE NIL T))) then (TEDIT.PROMPTPRINT MENUTSTREAM "Please choose one of the tab types" T) else (replace MARTABS of OBJDATUM with (MB.MARGINBAR.SELFN.TABS OBJDATUM MENUDS MENUTSTREAM] @@ -1673,7 +1676,7 @@ (SETSEL MENUSEL SET T) (* ;  "Now turn the menu button highlighting off.") (SETSEL MENUSEL ONFLG T) - (\TEDIT.NOSEL MENUTSTREAM) (* ; + (\TEDIT.NOSEL MENUSTREAM) (* ;  "And forget that anything is selected.") (SETSEL MENUSEL SET NIL]) ) @@ -2857,31 +2860,31 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6008 17639 (TEDIT.ADD.MENUITEM 6018 . 8135) (TEDIT.DEFAULT.MENUFN 8137 . 14851) ( -TEDIT.REMOVE.MENUITEM 14853 . 15850) (\TEDIT.CREATEMENU 15852 . 16417) (\TEDIT.MENU.WHENHELDFN 16419 - . 17324) (\TEDIT.MENU.WHENSELECTEDFN 17326 . 17637)) (18453 64824 (DRAWMARGINSCALE 18463 . 21922) ( -MARGINBAR 21924 . 29049) (MARGINBAR.CREATE 29051 . 32470) (MB.MARGINBAR.BUTTONEVENTINFN 32472 . 40111) - (MB.MARGINBAR.SELFN.TABS 40113 . 45353) (MB.MARGINBAR.SELFN.TABS.KIND 45355 . 46290) ( -MARGINBAR.GETSTATEFN 46292 . 50170) (MARGINBAR.SETSTATEFN 50172 . 50382) (MARGINBAR.NEUTRALIZE 50384 - . 50797) (MARGINBAR.LOOKS 50799 . 53905) (MB.MARGINBAR.SIZEFN 53907 . 54510) (MB.MARGINBAR.DISPLAYFN -54512 . 57573) (MDESCALE 57575 . 58115) (MSCALE 58117 . 58447) (MB.MARGINBAR.SHOWTAB 58449 . 60772) ( -MB.MARGINBAR.TABTRACK 60774 . 62159) (MARGINBAR.INIT 62161 . 63554) (\TEDIT.PARALOOKS.TO.MARBAR 63556 - . 64822)) (65649 72555 (TEDIT.MENUSTREAM 65659 . 66659) (TEDITMENUP 66661 . 67630) (\TEDIT.MENU.START - 67632 . 71979) (\TEDIT.MENU.BUTTONEVENTFN 71981 . 72553)) (72874 80796 (\TEDIT.MENU.CREATE 72884 . -74695) (\TEDIT.MENU.PARSE 74697 . 78386) (\TEDIT.MENU.NEUTRALIZE 78388 . 80459) ( -\TEDITMENU.RECORD.UNFORMATTED 80461 . 80794)) (80862 101006 (\TEDIT.EXPANDEDMENU.CREATE 80872 . 86274) - (\TEDIT.EXPANDEDMENU.START 86276 . 87706) (\TEDIT.EXPANDEDMENU.FN 87708 . 90963) ( -\TEDIT.EXPANDEDMENU.ACTIONFN 90965 . 101004)) (101068 116733 (\TEDIT.PARAMENU.CREATE 101078 . 107099) -(\TEDIT.PARAMENU.START 107101 . 108033) (\TEDIT.APPLY.PARALOOKS 108035 . 109087) ( -\TEDIT.SHOW.PARALOOKS 109089 . 111980) (\TEDIT.PARAMENU.FILLIN 111982 . 116731)) (116938 143400 ( -\TEDIT.CHARMENU.CREATE 116948 . 119552) (\TEDIT.CHARMENU.START 119554 . 120651) (\TEDIT.CHARMENU.SPEC -120653 . 125336) (\TEDIT.CHARMENU.PARSE 125338 . 128506) (\TEDIT.CHARMENU.FILLIN 128508 . 133138) ( -\TEDIT.SHOW.CHARLOOKS 133140 . 136498) (\TEDIT.APPLY.CHARLOOKS 136500 . 137661) ( -\TEDIT.OFFSETTYPE.STATEFN 137663 . 139626) (\TEDIT.OTHER.STATECHANGEFN 139628 . 141273) ( -\TEDIT.OTHER.SELECTFN 141275 . 143398)) (143462 169992 (\TEDIT.PAGEMENU.CREATE 143472 . 150666) ( -\TEDIT.SHOW.PAGELOOKS 150668 . 152554) (\TEDIT.PAGEMENU.FILLIN 152556 . 154106) ( -\TEDIT.PAGEREGION.UNPARSE 154108 . 163298) (\TEDIT.APPLY.PAGELOOKS 163300 . 165227) ( -\TEDIT.CHANGE.PAGELOOKS 165229 . 169148) (\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 169150 . 169990)) (169993 -175796 (\TEDIT.PAGEMENU.CREATE.HEADINGS 170003 . 172815) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 172817 - . 174242) (\TEDIT.PAGEMENU.HEADINGS.STATEFN 174244 . 175794))))) + (FILEMAP (NIL (6048 17679 (TEDIT.ADD.MENUITEM 6058 . 8175) (TEDIT.DEFAULT.MENUFN 8177 . 14891) ( +TEDIT.REMOVE.MENUITEM 14893 . 15890) (\TEDIT.CREATEMENU 15892 . 16457) (\TEDIT.MENU.WHENHELDFN 16459 + . 17364) (\TEDIT.MENU.WHENSELECTEDFN 17366 . 17677)) (18493 65027 (DRAWMARGINSCALE 18503 . 21962) ( +MARGINBAR 21964 . 29089) (MARGINBAR.CREATE 29091 . 32510) (MB.MARGINBAR.BUTTONEVENTINFN 32512 . 40314) + (MB.MARGINBAR.SELFN.TABS 40316 . 45556) (MB.MARGINBAR.SELFN.TABS.KIND 45558 . 46493) ( +MARGINBAR.GETSTATEFN 46495 . 50373) (MARGINBAR.SETSTATEFN 50375 . 50585) (MARGINBAR.NEUTRALIZE 50587 + . 51000) (MARGINBAR.LOOKS 51002 . 54108) (MB.MARGINBAR.SIZEFN 54110 . 54713) (MB.MARGINBAR.DISPLAYFN +54715 . 57776) (MDESCALE 57778 . 58318) (MSCALE 58320 . 58650) (MB.MARGINBAR.SHOWTAB 58652 . 60975) ( +MB.MARGINBAR.TABTRACK 60977 . 62362) (MARGINBAR.INIT 62364 . 63757) (\TEDIT.PARALOOKS.TO.MARBAR 63759 + . 65025)) (65852 72758 (TEDIT.MENUSTREAM 65862 . 66862) (TEDITMENUP 66864 . 67833) (\TEDIT.MENU.START + 67835 . 72182) (\TEDIT.MENU.BUTTONEVENTFN 72184 . 72756)) (73077 80999 (\TEDIT.MENU.CREATE 73087 . +74898) (\TEDIT.MENU.PARSE 74900 . 78589) (\TEDIT.MENU.NEUTRALIZE 78591 . 80662) ( +\TEDITMENU.RECORD.UNFORMATTED 80664 . 80997)) (81065 101209 (\TEDIT.EXPANDEDMENU.CREATE 81075 . 86477) + (\TEDIT.EXPANDEDMENU.START 86479 . 87909) (\TEDIT.EXPANDEDMENU.FN 87911 . 91166) ( +\TEDIT.EXPANDEDMENU.ACTIONFN 91168 . 101207)) (101271 116936 (\TEDIT.PARAMENU.CREATE 101281 . 107302) +(\TEDIT.PARAMENU.START 107304 . 108236) (\TEDIT.APPLY.PARALOOKS 108238 . 109290) ( +\TEDIT.SHOW.PARALOOKS 109292 . 112183) (\TEDIT.PARAMENU.FILLIN 112185 . 116934)) (117141 143603 ( +\TEDIT.CHARMENU.CREATE 117151 . 119755) (\TEDIT.CHARMENU.START 119757 . 120854) (\TEDIT.CHARMENU.SPEC +120856 . 125539) (\TEDIT.CHARMENU.PARSE 125541 . 128709) (\TEDIT.CHARMENU.FILLIN 128711 . 133341) ( +\TEDIT.SHOW.CHARLOOKS 133343 . 136701) (\TEDIT.APPLY.CHARLOOKS 136703 . 137864) ( +\TEDIT.OFFSETTYPE.STATEFN 137866 . 139829) (\TEDIT.OTHER.STATECHANGEFN 139831 . 141476) ( +\TEDIT.OTHER.SELECTFN 141478 . 143601)) (143665 170195 (\TEDIT.PAGEMENU.CREATE 143675 . 150869) ( +\TEDIT.SHOW.PAGELOOKS 150871 . 152757) (\TEDIT.PAGEMENU.FILLIN 152759 . 154309) ( +\TEDIT.PAGEREGION.UNPARSE 154311 . 163501) (\TEDIT.APPLY.PAGELOOKS 163503 . 165430) ( +\TEDIT.CHANGE.PAGELOOKS 165432 . 169351) (\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 169353 . 170193)) (170196 +175999 (\TEDIT.PAGEMENU.CREATE.HEADINGS 170206 . 173018) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 173020 + . 174445) (\TEDIT.PAGEMENU.HEADINGS.STATEFN 174447 . 175997))))) STOP diff --git a/library/tedit/TEDIT-MENU.LCOM b/library/tedit/TEDIT-MENU.LCOM index d4ec57dc4d0fc9eb969bb04035b38f64b26e9e1f..5f44fa98a123c8ed03ddc8113162ce0ee108bc5a 100644 GIT binary patch delta 754 zcmZvY&ubGw6vw-XibhePEkvaH*lsl~WZBux%qFWSyWL4y*kA5$YEyb>Yg34=8dC*D zq|}2RL{aD7f{GU}*5E-eE#k?8|Al8gdh8@Qq|(gcF>l`ce&1)_^Ud_9&Gf68L6SEc z&Ah6p7!WeBW+=+*70F7d?Ic$^G4D~oB3~-#g>lG;YN01kH3O>#A|fm{Yd7xPYSdS2 zOHg~zXs(SJ?1go1y?z_Sa>aFFzf6{85i&~)_jq$3KUEROGr6+k(#eRL9Dz6Wp%mfK zb&uLEtv7~G#_?(_fendU<1+#!kBFdz+PG-?8$DHsnbJD{*gJAF~W#WJ3%GR z+k6(Q3KPTq{*GE<>fd=mV~+SOJ0F~;#|HT6#^del+wGLY&W=9Ke(zfpKC-W)&x9>z zO2bE%y~F7*vusYv4*faW7Vpfr} z0x9afQkAEum-0@cz!dH3;)HJn2-bR9RD!uud6q^&2m~SMtV<4~zzdTwa{L5vu>_ta za}U6n{O{GG7h1w{5fQKh|6&5Vs`X}Dl_UxLm=lnLkGNETpj_te2)bBU$B>v-QVl6! Sq8^YiC%2X+3U2M>+z)%lLC5d_ delta 739 zcmZutOKTHR6z(J{HpN;gtq&9r)2NA%VP-P--efA3naoWbI*&9nF|AajZ2~5ZwWP)R zKm-@MP^fZUxGE^ct&d&i869`d}^kXmU_a z8H=ryDys<8w61A7%08Zto6EIoeR(XTmK~;C>XoHYjVMWoiRuo3f^-e*nj*q%t2TG_ z%3{4)t3vJiVr%Jy&K6dN+2;@Y*!*hmG{mO=a!J8CzakZl0(E?UJb?NFi21VPz)o68 zl0>M^a0}2)4vWcHB5yl1SE2@IWxs{fN4xq3g`g}_*-Zi1rPU!e_Hi$}w$jgC?XUcE zkOaM0qUUYD9HcDH#xGP*ClZC9m(dk0!mWx+Er(9sKGUqvwq{y4#=1$$?a|1u<6KS? z-w7`JE)ENr?HRczyyWkpi13uHkK9KO{X@MyyxupQpU<4T4d=_n#*cR3?vB1KG^+kU zBqB5iE+65Qv--9cpTF+;%9i5lt_{CmV14mpkvC7+r}+9|l2u_lSkuUjhrVmr9uSOy zZEhaC14P5%8l{5mnMMhSssWuS0?uT>wP=tt9LgI793u!_o&cQ$OwwR`fo;*VfN`et zHN{)C)ACJCfdbve1>sh7IIVTCvJ8FG`3tn<7Xf8ec3^HWhKLNVDRET0e6lS}kSqbq z_fCaCWUa$(mc!8Z0tedit>TEDIT-SELECTION.;718 158150 +(FILECREATED "24-Apr-2025 16:05:22" {WMEDLEY}TEDIT>TEDIT-SELECTION.;719 158243 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SELPIECES.COPY \TEDIT.SELPIECES) + :CHANGES-TO (FNS \TEDIT.SELPIECES.CHARTRANSFORM) - :PREVIOUS-DATE "21-Apr-2025 22:52:26" {WMEDLEY}tedit>TEDIT-SELECTION.;715) + :PREVIOUS-DATE "22-Apr-2025 08:26:07" {WMEDLEY}TEDIT>TEDIT-SELECTION.;718) (PRETTYCOMPRINT TEDIT-SELECTIONCOMS) @@ -1988,7 +1988,8 @@ SPLASTCHAR _ (ffetch (SELPIECES SPLASTCHAR) of SP2]) (\TEDIT.SELPIECES.CHARTRANSFORM - [LAMBDA (SELPIECES CHARFN OBJECTSTOO TSTREAM) (* ; "Edited 20-Apr-2025 23:23 by rmk") + [LAMBDA (SELPIECES CHARFN OBJECTSTOO TSTREAM) (* ; "Edited 24-Apr-2025 16:02 by rmk") + (* ; "Edited 20-Apr-2025 23:23 by rmk") (* ; "Edited 16-Mar-2025 10:03 by rmk") (* ; "Edited 7-Nov-2024 21:50 by rmk") (* ; "Edited 4-Oct-2024 08:41 by rmk") @@ -2014,7 +2015,7 @@ [for I from 1 to (PLEN PC) do (RPLCHARCODE STR I (APPLY* CHARFN (\TEDIT.PIECE.NTHCHARCODE - TEXTOBJ PC I) + PC I) (add INDEX 1] (if (fetch (STRINGP FATSTRINGP) of STR) then (FSETPC PC PTYPE FATSTRING.PTYPE) @@ -2511,25 +2512,25 @@ (ADDTOVAR LAMA TEDIT.SELPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (15741 17562 (\TEDIT.SELECTION.DEFPRINT 15751 . 17560)) (17599 19104 ( -\TEDIT.SET.GLOBAL.SELECTIONS 17609 . 19102)) (19105 25076 (\TEDIT.SELECTED.PIECES 19115 . 20754) ( -\TEDIT.FIND.PROTECTED.END 20756 . 22425) (\TEDIT.FIND.PROTECTED.START 22427 . 24285) ( -\TEDIT.WORD.BOUND 24287 . 25074)) (25210 59317 (\TEDIT.EXTEND.SEL 25220 . 32460) (\TEDIT.SCAN.LINE -32462 . 44135) (\TEDIT.SCAN.LINE.WORD 44137 . 49130) (\TEDIT.XYTOSEL 49132 . 56470) (\TEDIT.REGIONTYPE - 56472 . 57491) (\TEDIT.XYTOSEL.INLINEP 57493 . 57948) (\TEDIT.XYTOSEL.LINE 57950 . 59315)) (59318 -72443 (\TEDIT.FIXSEL 59328 . 68298) (\TEDIT.CHTOLINEX 68300 . 72441)) (72444 76396 ( -\TEDIT.RESET.EXTEND.PENDING.DELETE 72454 . 73732) (\TEDIT.SET.SEL.LOOKS 73734 . 76394)) (76794 96623 ( -\TEDIT.SHOWSEL 76804 . 81780) (\TEDIT.NOSEL 81782 . 82083) (\TEDIT.SHOWSEL.HILIGHT 82085 . 86706) ( -\TEDIT.UPDATE.SEL 86708 . 90817) (\TEDIT.CARETLINE 90819 . 91533) (\TEDIT.SEL.L1 91535 . 92218) ( -\TEDIT.SEL.LN 92220 . 92903) (\TEDIT.SEL.DELETEDCHARS 92905 . 96621)) (96624 101330 (\TEDIT.COPYSEL -96634 . 99100) (\TEDIT.SEL.CHANGED? 99102 . 101328)) (101361 114810 (\TEDIT.SELECT.OBJECT 101371 . -106222) (\TEDIT.SHOWSEL.OBJECT 106224 . 108455) (\TEDIT.CLIP.OBJECT 108457 . 110461) ( -\TEDIT.OPERATE.OBJECT 110463 . 114808)) (114838 134369 (\TEDIT.SELPIECES 114848 . 119129) ( -\TEDIT.SELPIECES.COPY 119131 . 121620) (\TEDIT.SELPIECES.CONCAT 121622 . 123501) ( -\TEDIT.SELPIECES.CHARTRANSFORM 123503 . 126861) (\TEDIT.SELPIECES.FROM.STRING 126863 . 132004) ( -\TEDIT.SELPIECES.TO.STRING 132006 . 134367)) (134422 157981 (TEDIT.XYTOCH 134432 . 137008) ( -TEDIT.SELPROP 137010 . 141040) (TEDIT.GETPOINT 141042 . 142962) (TEDIT.GETSEL 142964 . 143698) ( -TEDIT.GETSEL.PARA 143700 . 144649) (TEDIT.SCANSEL 144651 . 145599) (TEDIT.SET.SEL.LOOKS 145601 . -147086) (TEDIT.SETSEL 147088 . 152006) (TEDIT.SHOWSEL 152008 . 153872) (TEDIT.SEL.AS.STRING 153874 . -156359) (TEDIT.SEL.AS.SEXPR 156361 . 157647) (TEDIT.SELECTALL 157649 . 157979))))) + (FILEMAP (NIL (15733 17554 (\TEDIT.SELECTION.DEFPRINT 15743 . 17552)) (17591 19096 ( +\TEDIT.SET.GLOBAL.SELECTIONS 17601 . 19094)) (19097 25068 (\TEDIT.SELECTED.PIECES 19107 . 20746) ( +\TEDIT.FIND.PROTECTED.END 20748 . 22417) (\TEDIT.FIND.PROTECTED.START 22419 . 24277) ( +\TEDIT.WORD.BOUND 24279 . 25066)) (25202 59309 (\TEDIT.EXTEND.SEL 25212 . 32452) (\TEDIT.SCAN.LINE +32454 . 44127) (\TEDIT.SCAN.LINE.WORD 44129 . 49122) (\TEDIT.XYTOSEL 49124 . 56462) (\TEDIT.REGIONTYPE + 56464 . 57483) (\TEDIT.XYTOSEL.INLINEP 57485 . 57940) (\TEDIT.XYTOSEL.LINE 57942 . 59307)) (59310 +72435 (\TEDIT.FIXSEL 59320 . 68290) (\TEDIT.CHTOLINEX 68292 . 72433)) (72436 76388 ( +\TEDIT.RESET.EXTEND.PENDING.DELETE 72446 . 73724) (\TEDIT.SET.SEL.LOOKS 73726 . 76386)) (76786 96615 ( +\TEDIT.SHOWSEL 76796 . 81772) (\TEDIT.NOSEL 81774 . 82075) (\TEDIT.SHOWSEL.HILIGHT 82077 . 86698) ( +\TEDIT.UPDATE.SEL 86700 . 90809) (\TEDIT.CARETLINE 90811 . 91525) (\TEDIT.SEL.L1 91527 . 92210) ( +\TEDIT.SEL.LN 92212 . 92895) (\TEDIT.SEL.DELETEDCHARS 92897 . 96613)) (96616 101322 (\TEDIT.COPYSEL +96626 . 99092) (\TEDIT.SEL.CHANGED? 99094 . 101320)) (101353 114802 (\TEDIT.SELECT.OBJECT 101363 . +106214) (\TEDIT.SHOWSEL.OBJECT 106216 . 108447) (\TEDIT.CLIP.OBJECT 108449 . 110453) ( +\TEDIT.OPERATE.OBJECT 110455 . 114800)) (114830 134462 (\TEDIT.SELPIECES 114840 . 119121) ( +\TEDIT.SELPIECES.COPY 119123 . 121612) (\TEDIT.SELPIECES.CONCAT 121614 . 123493) ( +\TEDIT.SELPIECES.CHARTRANSFORM 123495 . 126954) (\TEDIT.SELPIECES.FROM.STRING 126956 . 132097) ( +\TEDIT.SELPIECES.TO.STRING 132099 . 134460)) (134515 158074 (TEDIT.XYTOCH 134525 . 137101) ( +TEDIT.SELPROP 137103 . 141133) (TEDIT.GETPOINT 141135 . 143055) (TEDIT.GETSEL 143057 . 143791) ( +TEDIT.GETSEL.PARA 143793 . 144742) (TEDIT.SCANSEL 144744 . 145692) (TEDIT.SET.SEL.LOOKS 145694 . +147179) (TEDIT.SETSEL 147181 . 152099) (TEDIT.SHOWSEL 152101 . 153965) (TEDIT.SEL.AS.STRING 153967 . +156452) (TEDIT.SEL.AS.SEXPR 156454 . 157740) (TEDIT.SELECTALL 157742 . 158072))))) STOP diff --git a/library/tedit/TEDIT-SELECTION.LCOM b/library/tedit/TEDIT-SELECTION.LCOM index b7c4b00a234dd8fe77bcf137d6caf52e079ade9f..9502b28aa1b826e8c64b90f4dfd7671f3adc5119 100644 GIT binary patch delta 411 zcmZ4eg>m&4#t9L^Cc2IVMY=`?My3jeW>yBKRz^k>vsG9_TwOdvCMPnANLp$ta48uf zDKoIJGBL3-G@5u&WAbf(-ulcu1tqsoA0Gu|MS6OAN(x*li6yBi3fOd;D`|3RxOw`x zItRHr0xd&T1apa!LUp*WtBa3oWUWn3W>QgNQKcQ&We`#~*wx2%at0nqEBOqyJi?Fu9} z8#9^vF=kKB4p3pVpFANTn(^M`Hvx)_(_&9qw208n?xGET0noX7n@?|uioEGH8 LXuNr2P?b6WjEQho delta 432 zcmZ4eg>m&4#t9L^M!Jp#MY=`?My3h|7FI@PRt6RmvsH{rQd2TZ>_S{!JVSJYU42}g zLp=Tc^sLPdEi@Ill#C1!x{Qp0TC5CBCmz&@_Ya6v$jnnvatrnGQ9xFtr>Cc+kdg>A z6{~I|10_u^4L47qJwdLHKwA}*j4&N$J~@z4L=m^k6bwx*3{4Ftw=o(`Rw)q)*Ho|y z2yzYc^bZZzbpe_RG!)t0MpmXqKo2V^a8-xElO=+D87(HK O1$i-=Y~C1Dr49hAv30}% diff --git a/library/tedit/TEDIT-STREAM b/library/tedit/TEDIT-STREAM index 40f670dc2..2c34e46e1 100644 --- a/library/tedit/TEDIT-STREAM +++ b/library/tedit/TEDIT-STREAM @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "22-Apr-2025 15:48:58" {WMEDLEY}tedit>TEDIT-STREAM.;895 189896 +(FILECREATED "26-Apr-2025 12:47:53" {WMEDLEY}tedit>TEDIT-STREAM.;899 191250 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.TEXTCOLOR \TEDIT.DELETE.SELPIECES COPYTEXTSTREAM) + :CHANGES-TO (FNS \TEDIT.OPENTEXTSTREAM.PIECES) - :PREVIOUS-DATE "21-Apr-2025 22:45:03" {WMEDLEY}tedit>TEDIT-STREAM.;891) + :PREVIOUS-DATE "24-Apr-2025 23:51:12" {WMEDLEY}tedit>TEDIT-STREAM.;898) (PRETTYCOMPRINT TEDIT-STREAMCOMS) @@ -60,7 +60,8 @@ (* ;; "Access by character") - (FNS \TEDIT.NTHCHARCODE \TEDIT.PIECE.NTHCHARCODE \TEDIT.RPLCHARCODE \TEDIT.NTHCHARLOOKS) + (FNS \TEDIT.NTHCHARCODE \TEDIT.PIECE.NTHCHARCODE \TEDIT.RPLCHARCODE \TEDIT.PIECE.RPLCHARCODE + \TEDIT.NTHCHARLOOKS) (COMS (* ;; "Editing support") @@ -1213,19 +1214,21 @@ (\TEDIT.TEXTBACKFILEPTR STREAM]) (\TEDIT.TEXTFORMATBYTESTREAM - [LAMBDA (STREAM BYTESTREAM) (* ; "Edited 21-Oct-2024 00:26 by rmk") + [LAMBDA (STREAM BYTESTREAM) (* ; "Edited 24-Apr-2025 23:49 by rmk") + (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 19-Mar-2024 16:13 by rmk") (* ; "Edited 24-Jun-2021 16:47 by rmk:") - (* ;; "BYTESTREAM might come in with a textstream external format, but that's presumably a mistake. If STREAM is a text stream, then it traffics in XCCS characters, it's format should be relatively vanilla.") + (* ;; "BYTESTREAM might come in with a textstream external format, but that's presumably a mistake. If STREAM is a text stream, then it traffics in MCCS characters, it's format should be relatively vanilla.") - (\TEDIT.THELP) + (\TEDIT.THELP "TEXT FORMATBYTESTREAM?") (REPLACE (STREAM CHARSET) OF BYTESTREAM WITH (FETCH (STREAM CHARSET) OF STREAM]) (\TEDIT.TEXTFORMATBYTESTRING - [LAMBDA (TSTREAM STRING SCRATCHSTREAM) (* ; "Edited 19-Mar-2024 18:22 by rmk") + [LAMBDA (TSTREAM STRING SCRATCHSTREAM) (* ; "Edited 24-Apr-2025 23:50 by rmk") + (* ; "Edited 19-Mar-2024 18:22 by rmk") - (* ;; "The FORMATBYTESTRINGFN for Text streams. STRING is presumably in internal XCCS character codes, and those are the codes that TSTREAM will match against, independent of however its backing stream characters might be encoded. So we can just return STRING") + (* ;; "The FORMATBYTESTRINGFN for Text streams. STRING is presumably in internal MCCS character codes, and those are the codes that TSTREAM will match against, independent of however its backing stream characters might be encoded. So we can just return STRING") (MKSTRING STRING]) ) @@ -1448,7 +1451,9 @@ TSTREAM]) (\TEDIT.OPENTEXTSTREAM.PIECES - [LAMBDA (TEXT TSTREAM START END PROPS) (* ; "Edited 26-Sep-2024 22:27 by rmk") + [LAMBDA (TEXT TSTREAM START END PROPS) (* ; "Edited 26-Apr-2025 12:47 by rmk") + (* ; "Edited 24-Apr-2025 17:09 by rmk") + (* ; "Edited 26-Sep-2024 22:27 by rmk") (* ; "Edited 20-Mar-2024 10:58 by rmk") (* ; "Edited 27-Dec-2023 13:33 by rmk") (* ; "Edited 23-Oct-2023 13:47 by rmk") @@ -1497,6 +1502,9 @@ elseif (\TEDIT.GET.FORMATTED.FILE TEXT TSTREAM START END PROPS) elseif (\TEDIT.GET.FOREIGN.FILE TEXT TSTREAM START END PROPS) else (\TEDIT.GET.UNFORMATTED.FILE TEXT TSTREAM START END)) + (CL:WHEN [AND NIL (EQ :XCCS (STREAMPROP TEXT 'FORMAT] + (* ; "XCCS was read as MCCS") + (\TEDIT.CONVERT.MCCSTOXCCS TSTREAM)) (FSETTOBJ TEXTOBJ TXTREADONLY READONLY) (FSETTOBJ TEXTOBJ TXTHISTORY NIL) (FSETTOBJ TEXTOBJ TXTHISTORYUNDONE NIL) @@ -2225,7 +2233,8 @@ (DEFINEQ (\TEDIT.NTHCHARCODE - [LAMBDA (TSTREAM N) (* ; "Edited 28-Mar-2025 18:31 by rmk") + [LAMBDA (TSTREAM N) (* ; "Edited 24-Apr-2025 16:03 by rmk") + (* ; "Edited 28-Mar-2025 18:31 by rmk") (* ; "Edited 7-Jul-2024 11:09 by rmk") (* ; "Edited 29-Apr-2024 13:06 by rmk") (* ; "Edited 17-Mar-2024 00:27 by rmk") @@ -2240,12 +2249,13 @@ (DECLARE (SPECVARS START-OF-PIECE)) (CL:WHEN (AND (IGEQ N 1) (ILEQ N (FGETTOBJ TEXTOBJ TEXTLEN))) - (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ (\TEDIT.CHTOPC N TEXTOBJ T) + (\TEDIT.PIECE.NTHCHARCODE (\TEDIT.CHTOPC N TEXTOBJ T) (IDIFFERENCE (ADD1 N) START-OF-PIECE)))]) (\TEDIT.PIECE.NTHCHARCODE - [LAMBDA (TEXTOBJ PC OFFSET) (* ; "Edited 21-Oct-2024 00:26 by rmk") + [LAMBDA (PC OFFSET) (* ; "Edited 24-Apr-2025 16:04 by rmk") + (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 29-Apr-2024 08:46 by rmk") (* ; "Edited 22-Mar-2024 00:02 by rmk") (* ; "Edited 1-Feb-2024 09:55 by rmk") @@ -2301,106 +2311,120 @@ (\TEDIT.THELP '\TEDIT.PIECE.NTHCHARCODE])]) (\TEDIT.RPLCHARCODE - [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 20-Apr-2025 13:25 by rmk") + [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 24-Apr-2025 17:24 by rmk") + (* ; "Edited 20-Apr-2025 13:25 by rmk") (* ; "Edited 28-Mar-2025 10:04 by rmk") - (* ;; "Replaces the Nth charcode (or object) in TSTREAM with NEWCHARCODE (or object) with NEWCHARLOOKS. This is accomplished by isolating the target character into a length 1 piece, then converting that into a string (or object) piece containing NEWCHAR.") + (* ;; "Replaces the Nth charcode (or object) in TSTREAM with NEWCHARCODE (or object) with NEWCHARLOOKS. ") (* ;; "If DONTDISPLAY, this doesn't update the display. ") (* ;; "NOTE: this may introduce new pieces, so must be used carefully with other piece-based or BIN-based iterations.") - (SETQ TSTREAM (TEXTSTREAM TSTREAM)) (CL:UNLESS (\TEDIT.READONLY TSTREAM) - (PROG ((TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ))) - PC OFFSET START-OF-PIECE OLDCHAR PARALAST) - (DECLARE (SPECVARS START-OF-PIECE)) - (replace (STREAM BINABLE) of TSTREAM with NIL) - (SETQ PC (\TEDIT.CHTOPC N TEXTOBJ T)) - (SETQ OFFSET (ADD1 (IDIFFERENCE N START-OF-PIECE))) - (* ; "Change is at OFFSET 1") - (SETQ PARALAST (MEMB NEWCHARCODE (FGETTOBJ TEXTOBJ PARABREAKCHARS))) - [if (AND (SMALLP NEWCHARCODE) - (MEMB (PTYPE PC) - STRING.PTYPES) - (OR (NULL NEWCHARLOOKS) - (EQ NEWCHARLOOKS (PLOOKS PC))) - (NEQ PC (FGETTOBJ TEXTOBJ SUFFIXPIECE)) - (NOT PARALAST)) - then - (* ;; + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + START-OF-PIECE OLDCHAR) + (DECLARE (SPECVARS START-OF-PIECE)) + (replace (STREAM BINABLE) of TSTREAM with NIL) + (SETQ OLDCHAR (\TEDIT.PIECE.RPLCHARCODE TEXTOBJ (\TEDIT.CHTOPC N TEXTOBJ T) + (ADD1 (IDIFFERENCE N START-OF-PIECE)) + NEWCHARCODE NEWCHARLOOKS)) + (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :ReplaceCode N NIL NIL NIL + OLDCHAR)) + (CL:UNLESS (OR DONTDISPLAY (NOT (\TEDIT.PRIMARYPANE TEXTOBJ))) + (\TEDIT.UPDATE.LINES TSTREAM 'CHANGED N 1)) + TSTREAM))]) + +(\TEDIT.PIECE.RPLCHARCODE + [LAMBDA (TEXTOBJ PC OFFSET NEWCHARCODE NEWCHARLOOKS) (* ; "Edited 24-Apr-2025 16:30 by rmk") + (* ; "Edited 20-Apr-2025 13:25 by rmk") + (* ; "Edited 28-Mar-2025 10:04 by rmk") + + (* ;; "Replaces the charcode (or object) at OFFSET in PC with NEWCHARCODE (or object) with NEWCHARLOOKS. This is accomplished by isolating the target character into a length 1 piece, then converting that into a string (or object) piece containing NEWCHAR.") + + (* ;; "Returns OLDCHAR so caller and update history") + + (* ;; "NOTE: this may introduce new pieces, so must be used carefully with other piece-based or BIN-based iterations.") + + (LET (OLDCHAR PARALAST) + (SETQ PARALAST (MEMB NEWCHARCODE (FGETTOBJ TEXTOBJ PARABREAKCHARS))) + [if (AND (SMALLP NEWCHARCODE) + (MEMB (PTYPE PC) + STRING.PTYPES) + (OR (NULL NEWCHARLOOKS) + (EQ NEWCHARLOOKS (PLOOKS PC))) + (NEQ PC (FGETTOBJ TEXTOBJ SUFFIXPIECE)) + (NOT PARALAST)) + then + (* ;;  "Fast case: Smash a new character code into an existing string piece with same looks. ") - (SETQ OLDCHAR (NTHCHARCODE (PCONTENTS PC) - OFFSET)) - (RPLCHARCODE (PCONTENTS PC) - OFFSET NEWCHARCODE) (* ; + (SETQ OLDCHAR (NTHCHARCODE (PCONTENTS PC) + OFFSET)) + (RPLCHARCODE (PCONTENTS PC) + OFFSET NEWCHARCODE) (* ;  "May upgrade string from thin to fat") - (CL:WHEN (AND (EQ THINSTRING.PTYPE (PTYPE PC)) - (IGREATERP NEWCHARCODE 255)) - (FSETPC PC PTYPE FATSTRING.PTYPE) - (FSETPC PC PBINABLE NIL) - (FSETPC PC PBYTESPERCHAR 2) - (FSETPC PC PBYTELEN (UNFOLD (PLEN PC) - 2))) - elseif [AND (IMAGEOBJP NEWCHARCODE) - (EQ OBJECT.PTYPE (PTYPE PC)) - (OR (NULL NEWCHARLOOKS) - (EQ NEWCHARLOOKS (PLOOKS PC] - then (SETQ OLDCHAR (POBJ PC)) (* ; "We know PLEN is 1") - (FSETPC PC PCONTENTS NEWCHARCODE) - else - (* ;; - "The PC that contained character N becomes the suffix of characters after N, ") - - (CL:UNLESS (IEQP OFFSET (PLEN PC)) (* ; "No suffix for the last character") + (CL:WHEN (AND (EQ THINSTRING.PTYPE (PTYPE PC)) + (IGREATERP NEWCHARCODE 255)) + (FSETPC PC PTYPE FATSTRING.PTYPE) + (FSETPC PC PBINABLE NIL) + (FSETPC PC PBYTESPERCHAR 2) + (FSETPC PC PBYTELEN (UNFOLD (PLEN PC) + 2))) + elseif [AND (IMAGEOBJP NEWCHARCODE) + (EQ OBJECT.PTYPE (PTYPE PC)) + (OR (NULL NEWCHARLOOKS) + (EQ NEWCHARLOOKS (PLOOKS PC] + then (SETQ OLDCHAR (POBJ PC)) (* ; "We know PLEN is 1") + (FSETPC PC PCONTENTS NEWCHARCODE) + else + (* ;; + "PC contained character OFFSET now becomes the suffix of characters after offset.") - (* ;; + (CL:UNLESS (IEQP OFFSET (PLEN PC)) (* ; "No suffix for the last character") + + (* ;;  "Chop off the suffix (essentially (\TEDIT.ALIGNEDPIECE CHNO ..) but we already have the piece") - (\TEDIT.SPLITPIECE PC OFFSET TEXTOBJ) - (SETQ PC (PREVPIECE PC))) (* ; + (\TEDIT.SPLITPIECE PC OFFSET TEXTOBJ) + (SETQ PC (PREVPIECE PC))) (* ;  "Original PC holds the suffix, new PC ends with change position.") - (CL:UNLESS (EQ OFFSET 1) - (SETQ PC (\TEDIT.SPLITPIECE PC (SUB1 OFFSET) - TEXTOBJ))) (* ; + (CL:UNLESS (EQ OFFSET 1) + (SETQ PC (\TEDIT.SPLITPIECE PC (SUB1 OFFSET) + TEXTOBJ))) (* ;  "Chop off the prefix. PC is now the singleton target ") - (* ;; "N is now isolated into a one-character new piece which we smash. ") + (* ;; "OFFSET is now isolated into a one-character new piece which we smash. ") - (SETQ OLDCHAR (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC 1)) - (if (IMAGEOBJP NEWCHARCODE) - then (FSETPC PC PBINABLE NIL) - (FSETPC PC PCONTENTS NEWCHARCODE) - (FSETPC PC PTYPE OBJECT.PTYPE) - (FSETPC PC PBYTESPERCHAR NIL) (* ; "Doesn't make sense for objects") - (FSETPC PC PBYTELEN NIL) - else (FSETPC PC PCONTENTS (MKSTRING (CHARACTER NEWCHARCODE))) + (SETQ OLDCHAR (\TEDIT.PIECE.NTHCHARCODE PC 1)) + (if (IMAGEOBJP NEWCHARCODE) + then (FSETPC PC PBINABLE NIL) + (FSETPC PC PCONTENTS NEWCHARCODE) + (FSETPC PC PTYPE OBJECT.PTYPE) + (FSETPC PC PBYTESPERCHAR NIL) (* ; "Doesn't make sense for objects") + (FSETPC PC PBYTELEN NIL) + else (FSETPC PC PCONTENTS (MKSTRING (CHARACTER NEWCHARCODE))) (* ;  "Use the extend-string in INSERTCH for repeated calls?") - (if (IGREATERP NEWCHARCODE 255) - then (FSETPC PC PTYPE FATSTRING.PTYPE) - (FSETPC PC PBINABLE NIL) - (FSETPC PC PBYTESPERCHAR 2) - (FSETPC PC PBYTELEN 2) - else (FSETPC PC PTYPE THINSTRING.PTYPE) - (FSETPC PC PBINABLE T) - (FSETPC PC PBYTESPERCHAR 1) - (FSETPC PC PBYTELEN 1) - (FSETPC PC PCHARSET 0))) - (FSETPC PC PFPOS NIL) - (CL:WHEN NEWCHARLOOKS - (FSETPC PC PLOOKS (CL:IF (FONTP NEWCHARLOOKS) - (\TEDIT.UNIQUIFY.CHARLOOKS (\TEDIT.CHARLOOKS.FROM.FONT - NEWCHARLOOKS) - TEXTOBJ) - NEWCHARLOOKS)))] - (CL:WHEN PARALAST (FSETPC PC PPARALAST T)) - (\TEDIT.HISTORYADD TEXTOBJ (\TEDIT.HISTORY.EVENT TEXTOBJ :ReplaceCode N NIL NIL NIL - OLDCHAR)) - (CL:UNLESS (OR DONTDISPLAY (NOT (\TEDIT.PRIMARYPANE TEXTOBJ))) - (\TEDIT.UPDATE.LINES TSTREAM 'CHANGED N 1)) - (RETURN TSTREAM)))]) + (if (IGREATERP NEWCHARCODE 255) + then (FSETPC PC PTYPE FATSTRING.PTYPE) + (FSETPC PC PBINABLE NIL) + (FSETPC PC PBYTESPERCHAR 2) + (FSETPC PC PBYTELEN 2) + else (FSETPC PC PTYPE THINSTRING.PTYPE) + (FSETPC PC PBINABLE T) + (FSETPC PC PBYTESPERCHAR 1) + (FSETPC PC PBYTELEN 1) + (FSETPC PC PCHARSET 0))) + (FSETPC PC PFPOS NIL) + (CL:WHEN NEWCHARLOOKS + (FSETPC PC PLOOKS (CL:IF (FONTP NEWCHARLOOKS) + (\TEDIT.UNIQUIFY.CHARLOOKS (\TEDIT.CHARLOOKS.FROM.FONT + NEWCHARLOOKS) + TEXTOBJ) + NEWCHARLOOKS)))] + (CL:WHEN PARALAST (FSETPC PC PPARALAST T)) + OLDCHAR]) (\TEDIT.NTHCHARLOOKS [LAMBDA (TSTREAM N) (* ; "Edited 6-Apr-2025 23:36 by rmk") @@ -3107,33 +3131,34 @@ (ADDTOVAR LAMA TEXTPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (37548 68364 (\TEDIT.TEXTBIN 37558 . 48308) (\TEDIT.TEXTPEEKBIN 48310 . 53860) ( -\TEDIT.TEXTBACKFILEPTR 53862 . 59535) (\TEDIT.TEXTBOUT 59537 . 64154) (\TEDIT.INSTALL.FILEBUFFER 64156 - . 68362)) (69262 73310 (\TEDIT.TEXTOUTCHARFN 69272 . 70828) (\TEDIT.TEXTINCCODEFN 70830 . 71569) ( -\TEDIT.TEXTBACKCCODEFN 71571 . 72163) (\TEDIT.TEXTFORMATBYTESTREAM 72165 . 72868) ( -\TEDIT.TEXTFORMATBYTESTRING 72870 . 73308)) (73357 84998 (OPENTEXTSTREAM 73367 . 80319) ( -COPYTEXTSTREAM 80321 . 84221) (TEDIT.STREAMCHANGEDP 84223 . 84525) (TXTFILE 84527 . 84996)) (84999 -115304 (\TEDIT.REOPENTEXTSTREAM 85009 . 86361) (\TEDIT.OPENTEXTSTREAM.PIECES 86363 . 90793) ( -\TEDIT.OPENTEXTSTREAM.PROPS 90795 . 91897) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 91899 . 97140) ( -\TEDIT.OPENTEXTSTREAM.WINDOW 97142 . 99933) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 99935 . 102905) ( -\TEDIT.OPENTEXTFILE 102907 . 104620) (\TEDIT.CREATE.TEXTSTREAM 104622 . 105667) (\TEDIT.REOPEN.STREAM -105669 . 108005) (\TEDIT.TEXTINIT 108007 . 115302)) (115342 116530 (\TEDIT.TTYBOUT 115352 . 116528)) ( -116648 136417 (\TEDIT.TEXTCLOSEF 116658 . 117982) (\TEDIT.TEXTDSPFONT 117984 . 118954) ( -\TEDIT.TEXTEOFP 118956 . 120711) (\TEDIT.TEXTGETEOFPTR 120713 . 121036) (\TEDIT.TEXTSETEOFPTR 121038 - . 122325) (\TEDIT.TEXTGETFILEPTR 122327 . 125162) (\TEDIT.TEXTSETFILEINFO 125164 . 125672) ( -\TEDIT.TEXTOPENF 125674 . 126605) (\TEDIT.TEXTSETEOF 126607 . 127223) (\TEDIT.TEXTSETFILEPTR 127225 . -129335) (\TEDIT.TEXTDSPXPOSITION 129337 . 130354) (\TEDIT.TEXTDSPYPOSITION 130356 . 131097) ( -\TEDIT.TEXTLEFTMARGIN 131099 . 131690) (\TEDIT.TEXTCOLOR 131692 . 132275) (\TEDIT.TEXTRIGHTMARGIN -132277 . 135566) (\TEDIT.TEXTDSPCHARWIDTH 135568 . 135872) (\TEDIT.TEXTDSPSTRINGWIDTH 135874 . 136180) - (\TEDIT.TEXTDSPLINEFEED 136182 . 136415)) (136455 148267 (\TEDIT.NTHCHARCODE 136465 . 137815) ( -\TEDIT.PIECE.NTHCHARCODE 137817 . 141618) (\TEDIT.RPLCHARCODE 141620 . 147912) (\TEDIT.NTHCHARLOOKS -147914 . 148265)) (149314 170299 (\TEDIT.DELETE.SELPIECES 149324 . 152949) (\TEDIT.INSERTCH 152951 . -160881) (\TEDIT.INSERTCH.HISTORY 160883 . 164347) (\TEDIT.INSERTEOL 164349 . 166174) ( -\TEDIT.INSERTCH.INSERTION 166176 . 169013) (\TEDIT.INSERTCH.EXTEND 169015 . 170297)) (170300 171804 ( -\TEDIT.NEXTCHANGEABLE.CHNO 170310 . 171025) (\TEDIT.LASTCHANGEABLE.CHNO 171027 . 171802)) (171805 -173509 (\SETUPGETCH 171815 . 173507)) (173567 178025 (\TEDIT.INSTALL.PIECE 173577 . 178023)) (178063 -187077 (TEXTPROP 178073 . 178420) (GETTEXTPROP 178422 . 178666) (PUTTEXTPROP 178668 . 178925) ( -GETTEXTPROPS 178927 . 179371) (PUTTEXTPROPS 179373 . 180277) (TEXTPROP.ADD 180279 . 180542) ( -\TEDIT.TEXTPROP 180544 . 187075)) (187078 189148 (\TEDIT.TEXTOBJ.PROPNAMES 187088 . 188040) ( -\TEDIT.TEXTOBJ.PROPFETCHFN 188042 . 188558) (\TEDIT.TEXTOBJ.PROPSTOREFN 188560 . 189146))))) + (FILEMAP (NIL (37559 68375 (\TEDIT.TEXTBIN 37569 . 48319) (\TEDIT.TEXTPEEKBIN 48321 . 53871) ( +\TEDIT.TEXTBACKFILEPTR 53873 . 59546) (\TEDIT.TEXTBOUT 59548 . 64165) (\TEDIT.INSTALL.FILEBUFFER 64167 + . 68373)) (69273 73564 (\TEDIT.TEXTOUTCHARFN 69283 . 70839) (\TEDIT.TEXTINCCODEFN 70841 . 71580) ( +\TEDIT.TEXTBACKCCODEFN 71582 . 72174) (\TEDIT.TEXTFORMATBYTESTREAM 72176 . 73013) ( +\TEDIT.TEXTFORMATBYTESTRING 73015 . 73562)) (73611 85252 (OPENTEXTSTREAM 73621 . 80573) ( +COPYTEXTSTREAM 80575 . 84475) (TEDIT.STREAMCHANGEDP 84477 . 84779) (TXTFILE 84781 . 85250)) (85253 +115994 (\TEDIT.REOPENTEXTSTREAM 85263 . 86615) (\TEDIT.OPENTEXTSTREAM.PIECES 86617 . 91483) ( +\TEDIT.OPENTEXTSTREAM.PROPS 91485 . 92587) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 92589 . 97830) ( +\TEDIT.OPENTEXTSTREAM.WINDOW 97832 . 100623) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 100625 . 103595) ( +\TEDIT.OPENTEXTFILE 103597 . 105310) (\TEDIT.CREATE.TEXTSTREAM 105312 . 106357) (\TEDIT.REOPEN.STREAM +106359 . 108695) (\TEDIT.TEXTINIT 108697 . 115992)) (116032 117220 (\TEDIT.TTYBOUT 116042 . 117218)) ( +117338 137107 (\TEDIT.TEXTCLOSEF 117348 . 118672) (\TEDIT.TEXTDSPFONT 118674 . 119644) ( +\TEDIT.TEXTEOFP 119646 . 121401) (\TEDIT.TEXTGETEOFPTR 121403 . 121726) (\TEDIT.TEXTSETEOFPTR 121728 + . 123015) (\TEDIT.TEXTGETFILEPTR 123017 . 125852) (\TEDIT.TEXTSETFILEINFO 125854 . 126362) ( +\TEDIT.TEXTOPENF 126364 . 127295) (\TEDIT.TEXTSETEOF 127297 . 127913) (\TEDIT.TEXTSETFILEPTR 127915 . +130025) (\TEDIT.TEXTDSPXPOSITION 130027 . 131044) (\TEDIT.TEXTDSPYPOSITION 131046 . 131787) ( +\TEDIT.TEXTLEFTMARGIN 131789 . 132380) (\TEDIT.TEXTCOLOR 132382 . 132965) (\TEDIT.TEXTRIGHTMARGIN +132967 . 136256) (\TEDIT.TEXTDSPCHARWIDTH 136258 . 136562) (\TEDIT.TEXTDSPSTRINGWIDTH 136564 . 136870) + (\TEDIT.TEXTDSPLINEFEED 136872 . 137105)) (137145 149621 (\TEDIT.NTHCHARCODE 137155 . 138606) ( +\TEDIT.PIECE.NTHCHARCODE 138608 . 142518) (\TEDIT.RPLCHARCODE 142520 . 143978) ( +\TEDIT.PIECE.RPLCHARCODE 143980 . 149266) (\TEDIT.NTHCHARLOOKS 149268 . 149619)) (150668 171653 ( +\TEDIT.DELETE.SELPIECES 150678 . 154303) (\TEDIT.INSERTCH 154305 . 162235) (\TEDIT.INSERTCH.HISTORY +162237 . 165701) (\TEDIT.INSERTEOL 165703 . 167528) (\TEDIT.INSERTCH.INSERTION 167530 . 170367) ( +\TEDIT.INSERTCH.EXTEND 170369 . 171651)) (171654 173158 (\TEDIT.NEXTCHANGEABLE.CHNO 171664 . 172379) ( +\TEDIT.LASTCHANGEABLE.CHNO 172381 . 173156)) (173159 174863 (\SETUPGETCH 173169 . 174861)) (174921 +179379 (\TEDIT.INSTALL.PIECE 174931 . 179377)) (179417 188431 (TEXTPROP 179427 . 179774) (GETTEXTPROP +179776 . 180020) (PUTTEXTPROP 180022 . 180279) (GETTEXTPROPS 180281 . 180725) (PUTTEXTPROPS 180727 . +181631) (TEXTPROP.ADD 181633 . 181896) (\TEDIT.TEXTPROP 181898 . 188429)) (188432 190502 ( +\TEDIT.TEXTOBJ.PROPNAMES 188442 . 189394) (\TEDIT.TEXTOBJ.PROPFETCHFN 189396 . 189912) ( +\TEDIT.TEXTOBJ.PROPSTOREFN 189914 . 190500))))) STOP diff --git a/library/tedit/TEDIT-STREAM.LCOM b/library/tedit/TEDIT-STREAM.LCOM index 1ea60199a5d78c23e0b09589fb59d871c4e6e1cf..e95f527b001899b7431e106223db607bc89a4a0a 100644 GIT binary patch delta 1699 zcmZuxO>7%Q6yDv$F5M<+ehjpAN?$BW?V=d(uKx?|j(0cNZEUZxH?$6|M2jQb*rKH> zCxlW&etK*egg77-RUkk@qOp7E2@3&2=8|h74&}rR$+`4e-mK#^qV;8--@N(W_xAf{ zHoq4h{~+8xKNg=P*RD^>5jh5uoQ@{aF=efmKAZ}H7?A(B8Ba@*wV#jDMBpI3GvU1e zSKf!f)ND2jdn?1?Z~(;0r5p1Vcosx75E6q^R@Tsp25}7i=^{pgs{G04QXr)yIToSU z`4e>ElVSSxgeMe&bfIXxW!bZ(NgV<3eDui>vXYKTX-P&3Yaa*sWYaGU4j*_~;5gwb zhrj(aJbEmXf(zK$a>9;jWDCegmZ0PypBzZBod~lKg@9w6cVNmc=7^IiJ4UzaOrUvV z^d~ho$#7LK18yH08R2VWyE#tGwy@oNo|sn-unkh%w6;VR4OfS`U^GIdxg&xSp&ynq z6RB7V3fP83Qn4gPiW?;`lHDjyH%muPOJGk;l?(?gh(JLL0Y8I11?=|OIpiNzHFIU&Si$UkNP;yqwZ(3G_TVSE*w_6voCCjTx+4ysdmiWsjaQr zW=0$Iu;Mwh@*Z1BwNg1tljWdak`g@$W(!QkaMsEjC6FQtT_5zln2PqcO{?VC#WK-# zNT%q`i!UrDBE7wWWoSmYSjaM-nyniU+lAFk$1Z3P>(!#Tx}DFKQC3Nc0G`NCqxlj^ zNEhd?)i1p}uU)OogOcnSK~4eF-p-r_S?(nz1?XM>*y7Wj(|S@27C?dmDUvKHIjCV| z_ZwQMao#w`cxG*Tri4l=y@X5LLcw=MMi9-_dWQfC{wX@mGXlJ(wns&75kF>Gt9bZE zy+u%O*V?Y6jXC`bowNr!jW?MuI?c0IbDFfdjJx}QMVf0%_Z-^f?mB;5t3Tex^(d+L zZ*YArvam4>Em9YJLoHHid;j(c>)d0_)x9CJev5T)rxEIP0+zze{euYqD--&@2cri> z^Kt9kADIeid$$%k&9N5As5{Nu;$@+gsdauNnc7x2d0DtgYF(N;y^ifLK^&yxb-7g; zsl}>KxR)c{GM5)tuqhhj&zb=z5$?T2>U}Ok&7H2saB4n*P3zm&B2{01OK>Ft%%bYtZN7Cc&cjXqk9 s3z)pPdXnB+ef^LawDP5bp*bjE(Z(}7E~o0Mk9Jm1@nZAUTayF-0UnjissI20 delta 1619 zcmZvcPi)&%9LMc6%|>WPy9HR=b$hLZ){Hg8j-7u+tj~^Hzto9c+b!z`(h9EV>cGYX zR|iBrM<$S=skR1PtpJ9_BPg)J zUpP*nvbk(7jX&bg<4-^9)e4%Sxmv=}3=3(h<^a{S<|vQj60uSo8B+c!O{vH{t3e zFrgRHpcN1ZNh~NY;;~P9>i16G8J81OuO$+k?(OA$xLY5DdJx*Jzo0|?`m;0$^taIt zvw9Y(Jiau0h8OUPqYMe@46uL%U{Xk@iIrlOOe~RE68_s6#HZ%YUYsJN9lo-AXPqx7 zFo;lN3nW@OQSO3BZq3w>E6Qk^JV07lhgrm`u0H_7z1BPBPXv6|a-8RT_w- zcY}&DZ|#curHX>CW^EejL8MtPmgl1G%5ra=A5toNyJYP{mGBnV z(LhUEJ)nUqq1cHA@`A{pvCumAufmXPA`MuHG;8s8B(U#!_#9E+q$m$NiM4^07`M)C z7CjV1c9xf#KQ>TN-;W(c9~J%PeN^;!TCPVr^4Z?Tew=gr6hwreL>Sj11zL=S9+Xh) z6hk5hXacn}N8ytsLJ!WOiq*jse3qF{b^KU}W*R$2CBqH1Hh@&7_jPO0S;an9V_l8X zUF2__;2OI34owd(dY*yrzdkZAWwY&Wn6YS&B@9$1jVNUfy2P?k3EFcOENehY%kASj za$M7%gM|X|CZF;qv{|j}0!hr_t@uEPB&P5`@j;n1+JsqlNgt##pfp9A4wWa#iwNka z2vt|JftZs32{@^lN|CflHiO4!`}@Sq0jFab$ZdV7qMXCmuEv&g!l5fdDh+JQpo*$l z(11XOVcFFW-g7c2X(a_@Qms|awBc3VH7ykgskVa*p@La9=70Z#W|5&{XbDv>n*d+)2XL_3kN;W~@cZvRkK@&D zoTZhlxjkH4wDLabk^85~}_K&-^tt9>J=>{y!WmY`~z4j7@?QLrekSIzowYZtrz E16Mu27XSbN diff --git a/library/tedit/TEDIT-TFBRAVO b/library/tedit/TEDIT-TFBRAVO index 96cd0a71b..2e5f0f71c 100644 --- a/library/tedit/TEDIT-TFBRAVO +++ b/library/tedit/TEDIT-TFBRAVO @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Mar-2025 14:23:07" {WMEDLEY}TEDIT>TEDIT-TFBRAVO.;176 94631 +(FILECREATED "24-Apr-2025 23:46:10" {WMEDLEY}tedit>TEDIT-TFBRAVO.;177 94745 :EDIT-BY rmk - :CHANGES-TO (FNS TEDITFROMBRAVO) + :CHANGES-TO (FNS \TFBRAVO.SPLIT.PARA) - :PREVIOUS-DATE "19-Feb-2025 12:18:40" {WMEDLEY}TEDIT>TEDIT-TFBRAVO.;175) + :PREVIOUS-DATE "28-Mar-2025 14:23:07" {WMEDLEY}tedit>TEDIT-TFBRAVO.;176) (PRETTYCOMPRINT TEDIT-TFBRAVOCOMS) @@ -1028,7 +1028,8 @@ PC))]) (\TFBRAVO.SPLIT.PARA - [LAMBDA (PARA) (* ; "Edited 19-Feb-2025 12:15 by rmk") + [LAMBDA (PARA) (* ; "Edited 24-Apr-2025 23:45 by rmk") + (* ; "Edited 19-Feb-2025 12:15 by rmk") (* ; "Edited 8-Feb-2025 23:12 by rmk") (* ; "Edited 9-Sep-2023 21:35 by rmk") (* ; "Edited 22-Aug-2023 23:45 by rmk") @@ -1045,7 +1046,7 @@ NEWPARAS) (* ;; - "RUNSTART is STRINGP for a math/hippo or other character that has been translated to XCCS") + "RUNSTART is STRINGP for a math/hippo or other character that has been translated to MCCS") (SETQ NEWPARAS (if [AND (fetch (PARA FORMATPTRS) of PARA) @@ -1503,18 +1504,18 @@ (AND NIL (\TEDIT.NAMEDTAB.INIT)) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6570 13446 (TEDIT.BRAVOFILE? 6580 . 8310) (TEDITFROMBRAVO 8312 . 13444)) (13557 29284 ( -\TFBRAVO.GET.USER.CM 13567 . 16377) (\TFBRAVO.USER.CM.LOOKS 16379 . 17714) (\TFBRAVO.READ.USER.CM -17716 . 22286) (\TFBRAVO.INIT.PARALOOKS 22288 . 24397) (\TFBRAVO.INIT.PAGEFORMAT 24399 . 25279) ( -\TFBRAVO.GETPARAMS 25281 . 28135) (\TFBRAVO.FIND.LAST.TRAILER 28137 . 29282)) (29326 50024 ( -\TFBRAVO.PARSE.PARA 29336 . 33263) (\TFBRAVO.READ.PARALOOKS 33265 . 40155) (\TFBRAVO.CREATE.RUNS 40157 - . 41545) (\TFBRAVO.READ.CHARLOOKS 41547 . 46576) (\TFBRAVO.FONT.FROM.CHARLOOKS 46578 . 48125) ( -\TFBRAVO.READNUM? 48127 . 50022)) (50061 61102 (\TFBRAVO.HANDLE.HEADING 50071 . 52798) ( -\TFBRAVO.PARSE.PROFILE.PARA 52800 . 61100)) (61145 83181 (\TFBRAVO.INSERT.PARA 61155 . 61996) ( -\TFBRAVO.INSERT.RUN 61998 . 65300) (\TFBRAVO.SPLIT.PARA 65302 . 72617) (\TFBRAVO.RUN.TABSPEC 72619 . -77486) (\TFBRAVO.INSTALL.PAGEFORMAT 77488 . 83179)) (83182 87325 (\TFBRAVO.ASSERT 83192 . 83722) ( -\TEST.CHARACTER.LOOKS 83724 . 85610) (\TEST.PARAGRAPH.LOOKS 85612 . 87323)) (87810 94465 ( -\TFBRAVO.ADD.NAMEDTAB 87820 . 91423) (\TFBRAVO.COPY.NAMEDTAB 91425 . 91873) (\TFBRAVO.PUT.NAMEDTAB -91875 . 92155) (\TFBRAVO.GET.NAMEDTAB 92157 . 92534) (\NAMEDTABNYET 92536 . 92696) (\NAMEDTABSIZE -92698 . 93213) (\NAMEDTABPREPRINT 93215 . 93413) (\TEDIT.NAMEDTAB.INIT 93415 . 94463))))) + (FILEMAP (NIL (6575 13451 (TEDIT.BRAVOFILE? 6585 . 8315) (TEDITFROMBRAVO 8317 . 13449)) (13562 29289 ( +\TFBRAVO.GET.USER.CM 13572 . 16382) (\TFBRAVO.USER.CM.LOOKS 16384 . 17719) (\TFBRAVO.READ.USER.CM +17721 . 22291) (\TFBRAVO.INIT.PARALOOKS 22293 . 24402) (\TFBRAVO.INIT.PAGEFORMAT 24404 . 25284) ( +\TFBRAVO.GETPARAMS 25286 . 28140) (\TFBRAVO.FIND.LAST.TRAILER 28142 . 29287)) (29331 50029 ( +\TFBRAVO.PARSE.PARA 29341 . 33268) (\TFBRAVO.READ.PARALOOKS 33270 . 40160) (\TFBRAVO.CREATE.RUNS 40162 + . 41550) (\TFBRAVO.READ.CHARLOOKS 41552 . 46581) (\TFBRAVO.FONT.FROM.CHARLOOKS 46583 . 48130) ( +\TFBRAVO.READNUM? 48132 . 50027)) (50066 61107 (\TFBRAVO.HANDLE.HEADING 50076 . 52803) ( +\TFBRAVO.PARSE.PROFILE.PARA 52805 . 61105)) (61150 83295 (\TFBRAVO.INSERT.PARA 61160 . 62001) ( +\TFBRAVO.INSERT.RUN 62003 . 65305) (\TFBRAVO.SPLIT.PARA 65307 . 72731) (\TFBRAVO.RUN.TABSPEC 72733 . +77600) (\TFBRAVO.INSTALL.PAGEFORMAT 77602 . 83293)) (83296 87439 (\TFBRAVO.ASSERT 83306 . 83836) ( +\TEST.CHARACTER.LOOKS 83838 . 85724) (\TEST.PARAGRAPH.LOOKS 85726 . 87437)) (87924 94579 ( +\TFBRAVO.ADD.NAMEDTAB 87934 . 91537) (\TFBRAVO.COPY.NAMEDTAB 91539 . 91987) (\TFBRAVO.PUT.NAMEDTAB +91989 . 92269) (\TFBRAVO.GET.NAMEDTAB 92271 . 92648) (\NAMEDTABNYET 92650 . 92810) (\NAMEDTABSIZE +92812 . 93327) (\NAMEDTABPREPRINT 93329 . 93527) (\TEDIT.NAMEDTAB.INIT 93529 . 94577))))) STOP diff --git a/library/tedit/TEDIT-TFBRAVO.LCOM b/library/tedit/TEDIT-TFBRAVO.LCOM index 2efe7b61e7541d44a9af65a29f247e656f2791be..7e1b3ecb73929b56c4b8f6052cbe3a9034846f01 100644 GIT binary patch delta 243 zcmZp_!q|F+aYBTUiLPTok*<+}k*R`_v6YFLmEpuJ8$EMP1ui8cWH}=%BO@ylBPE5T zqSWO4+=9%U)D(r(ih`nIRjbJhQ$(XP^AwcaLVbJ`khSUQ=_x6sB$fcxVl~fPNs~*% z&C|!#Imp#9#MMOs)l!Iq3?^1);%+o(KSl0!p h6{yof*EbRB6+;s%pl=M!CtqX~o!BqA`9C8^1_0^8Kt%um delta 338 zcmZp@!q|R=aYBTUk*;Gwk*<+}k*R{AiIu5|mBGX;n|d=%1ui8cLxh}>v6X>^m7%GU zLQ!gRer`c#PHKumYDGa#W^!gpPNk}qLQII8Q;=hrzg}ptYmlC^ubz*;zjv@gW}bqQ zTd0qZ06k(vG$)(}u>Er4gY|`zWTESuh;S&#J?2UZ z)#1LbE^sLvu3)OA|9=!^vfg3MODBZbAOOVE1Y& xSOo;RhI#sj2J5;2?NU%OwA6J=O@fArk(Hr^m5IUR^NgYrILtQP{D+Y<0|1mETA=^{ diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index a2be675ec..1ab96ca88 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Apr-2025 11:22:00" {WMEDLEY}TEDIT>TEDIT-WINDOW.;828 226565 +(FILECREATED "25-Apr-2025 21:24:31" {WMEDLEY}tedit>TEDIT-WINDOW.;832 224880 :EDIT-BY rmk - :CHANGES-TO (VARS TEDIT-WINDOWCOMS) - (FNS \TEDIT.CURSORMOVEDFN) + :CHANGES-TO (FNS \TEDIT.WINDOW.CREATE) - :PREVIOUS-DATE "21-Apr-2025 20:34:07" {WMEDLEY}tedit>TEDIT-WINDOW.;824) + :PREVIOUS-DATE "25-Apr-2025 18:08:03" {WMEDLEY}tedit>TEDIT-WINDOW.;831) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -27,9 +26,9 @@ (FNS TEDIT.DEFER.UPDATES) (FNS \TEDIT.WINDOW.CREATE \TEDIT.WINDOW.GETREGION \TEDIT.WINDOW.SETUP \TEDIT.MINIMAL.WINDOW.SETUP \TEDIT.CLEARPANE \TEDIT.FILL.PANES) - (FNS \TEDIT.CURSORMOVEDFN \TEDIT.CURSOROUTFN \TEDIT.ACTIVE.WINDOWP \TEDIT.EXPANDFN - \TEDIT.MAINW \TEDIT.MAINSTREAM \TEDIT.PRIMARYPANE \TEDIT.PANELIST \TEDIT.NEWREGIONFN - \TEDIT.SET.WINDOW.EXTENT \TEDIT.SHRINK.ICONCREATE \TEDIT.SHRINKFN \TEDIT.PANEREGION) + (FNS \TEDIT.CURSORMOVEDFN \TEDIT.CURSOROUTFN \TEDIT.EXPANDFN \TEDIT.MAINW \TEDIT.MAINSTREAM + \TEDIT.PRIMARYPANE \TEDIT.PANELIST \TEDIT.NEWREGIONFN \TEDIT.SET.WINDOW.EXTENT + \TEDIT.SHRINK.ICONCREATE \TEDIT.SHRINKFN \TEDIT.PANEREGION) (* ;; "Button events") @@ -126,8 +125,6 @@ (ACCESSFNS TEXTWINDOW ((WTEXTSTREAM (GETWINDOWPROP DATUM 'TEXTSTREAM) (PUTWINDOWPROP DATUM 'TEXTSTREAM NEWVALUE)) - (WTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of (fetch (TEXTWINDOW WTEXTSTREAM) - of DATUM))) (PTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of (fetch (TEXTWINDOW WTEXTSTREAM) of DATUM))) (CURSORREGION (GETWINDOWPROP DATUM 'TEDIT.CURSORREGION) @@ -356,7 +353,8 @@ (DEFINEQ (\TEDIT.WINDOW.CREATE - [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 20-Apr-2025 15:21 by rmk") + [LAMBDA (WINDOW TSTREAM PROPS) (* ; "Edited 25-Apr-2025 21:24 by rmk") + (* ; "Edited 20-Apr-2025 15:21 by rmk") (* ; "Edited 18-Feb-2025 09:49 by rmk") (* ; "Edited 1-Jul-2024 22:55 by rmk") (* ; "Edited 29-Jun-2024 23:16 by rmk") @@ -384,7 +382,8 @@ (PHEIGHT 0) TITLE REGIONTYPE PROMPTPROP REGION FILE PWINDOW PREPROMPT WTEXTOBJ) (CL:WHEN (WINDOWP WINDOW) - (CL:WHEN (SETQ WTEXTOBJ (fetch (TEXTWINDOW WTEXTOBJ) of WINDOW)) + (CL:WHEN (SETQ WTEXTOBJ (GETTSTR (fetch (TEXTWINDOW WTEXTSTREAM) of WINDOW) + TEXTOBJ)) (* ;; "Reusing an existing Tedit window, undo its splits.") @@ -816,21 +815,6 @@ MOUSEREGION 'TEXT]) -(\TEDIT.ACTIVE.WINDOWP - [LAMBDA (W) (* ; "Edited 20-Mar-2024 09:38 by rmk") - (* ; "Edited 15-Mar-2024 18:37 by rmk") - (* ; "Edited 11-Sep-2023 00:22 by rmk") - (* ; "Edited 30-May-91 23:33 by jds") - - (* ;; "RMK: Not sure that TEXTOBJ is ever T. Or that windows ever have a TEXTSTREAM property (vs TEXTOBJ).") - - (* ;; "Decides whether a TEdit window is really in use. The function TEDIT will set the TEXTOBJ prop of the window to T pro tem, to reserve a window. Once the TEdit has really started, the TEXTOBJ property will be a real textobj.") - - (LET ((TEXTOBJ (fetch (TEXTWINDOW WTEXTOBJ) of W))) - (AND (type? TEXTOBJ TEXTOBJ) - (NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)) - (PROCESSP (WINDOWPROP W 'PROCESS]) - (\TEDIT.EXPANDFN [LAMBDA (W) (* jds " 7-May-85 15:56") (* steals back the tty for us when the @@ -2074,31 +2058,25 @@ (CLEARW PW))))]) (TEDIT.PROMPTFLASH - [LAMBDA (TEXTSTREAM) (* ; "Edited 15-Mar-2024 18:32 by rmk") + [LAMBDA (TSTREAM) (* ; "Edited 25-Apr-2025 17:58 by rmk") + (* ; "Edited 15-Mar-2024 18:32 by rmk") (* ; "Edited 30-May-91 23:34 by jds") - (* ; - "Flash the TEdit prompt window, or the global promptwindow, if TEdit has none.") - (PROG (WINDOW PWINDOW (TEXTOBJ (TEXTOBJ TEXTSTREAM)) - MAINTEXTOBJ) - (COND - [(AND TEXTOBJ (fetch (TEXTOBJ MENUFLG) of TEXTOBJ)) - (* ; - "There is a known textobj, and it's a menu. Go use the main editor's promptwindow.") - (SETQ MAINTEXTOBJ (fetch (TEXTWINDOW WTEXTOBJ) of (\TEDIT.MAINW TEXTOBJ))) - (* ; - "Find the TEXTOBJ for the main edit window, and use ITS prompting window.") - (SETQ WINDOW (AND MAINTEXTOBJ (fetch (TEXTOBJ PROMPTWINDOW) of MAINTEXTOBJ] - ((AND TEXTOBJ (SETQ WINDOW (fetch (TEXTOBJ PROMPTWINDOW) of TEXTOBJ))) - (* ; - "There IS an editor window to get to; use its prompt window") - ) - ((SETQ WINDOW (GETPROMPTWINDOW (\TEDIT.MAINW TEXTSTREAM) - NIL NIL T)) (* ; - "Failing that, try any prompt window attached to the edit window.") - )) (* ; - "Try to find an editor's prompt window for our message") - (FLASHWINDOW (OR WINDOW PROMPTWINDOW) - 2]) + + (* ;; "Flash the TEdit prompt window, or the global promptwindow, if TEdit has none.") + + (SETQ TSTREAM (TEXTSTREAM TSTREAM)) + (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) + MAINTEXTOBJ WINDOW) + (SETQ WINDOW (if (AND TEXTOBJ (FGETTOBJ TEXTOBJ MENUFLG)) + then (* ; + "Use the main editor's promptwindow.") + (CL:WHEN (SETQ MAINTEXTOBJ (\TEDIT.MAINSTREAM TSTREAM)) + (fetch (TEXTOBJ PROMPTWINDOW) of MAINTEXTOBJ)) + elseif (AND TEXTOBJ (FGETTOBJ TEXTOBJ PROMPTWINDOW)) + else (GETPROMPTWINDOW (\TEDIT.MAINW TSTREAM) + NIL NIL T))) + (FLASHWINDOW (OR WINDOW PROMPTWINDOW) + 2]) (\TEDIT.PROMPT.PAGEFULLFN [LAMBDA (PROMPT-DISPLAY-STREAM) (* ; "Edited 21-Jun-2024 23:21 by rmk") @@ -3306,7 +3284,8 @@ (DEFINEQ (\TEDIT.PROCIDLEFN - [LAMBDA (WINDOW) (* ; "Edited 15-Mar-2024 18:34 by rmk") + [LAMBDA (WINDOW) (* ; "Edited 25-Apr-2025 14:05 by rmk") + (* ; "Edited 15-Mar-2024 18:34 by rmk") (* ; "Edited 25-Sep-2023 10:30 by rmk") (* ; "Edited 19-Sep-2023 23:25 by rmk") (* ; "Edited 30-May-91 23:35 by jds") @@ -3325,7 +3304,7 @@ (PROCESSP (WINDOWPROP WINDOW 'PROCESS] (TTY.PROCESS (WINDOWPROP WINDOW 'PROCESS)) (* ;  "No SHIFT key down; let's regain control.") - (CL:WHEN (GETTOBJ (fetch (TEXTWINDOW WTEXTOBJ) of WINDOW) + (CL:WHEN (GETTOBJ (FTEXTOBJ (fetch (TEXTWINDOW WTEXTSTREAM) of WINDOW)) MENUFLG) (* ; "This is a MENU -- always select.") (\TEDIT.MENU.BUTTONEVENTFN WINDOW))) (T (* ; "Otherwise, let him select.") @@ -3580,36 +3559,35 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17295 18191 (TEDIT.DEFER.UPDATES 17305 . 18189)) (18192 43439 (\TEDIT.WINDOW.CREATE -18202 . 25048) (\TEDIT.WINDOW.GETREGION 25050 . 28540) (\TEDIT.WINDOW.SETUP 28542 . 32764) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32766 . 40177) (\TEDIT.CLEARPANE 40179 . 40896) (\TEDIT.FILL.PANES 40898 - . 43437)) (43440 66548 (\TEDIT.CURSORMOVEDFN 43450 . 48457) (\TEDIT.CURSOROUTFN 48459 . 48904) ( -\TEDIT.ACTIVE.WINDOWP 48906 . 49957) (\TEDIT.EXPANDFN 49959 . 50522) (\TEDIT.MAINW 50524 . 51804) ( -\TEDIT.MAINSTREAM 51806 . 52140) (\TEDIT.PRIMARYPANE 52142 . 52912) (\TEDIT.PANELIST 52914 . 53410) ( -\TEDIT.NEWREGIONFN 53412 . 55928) (\TEDIT.SET.WINDOW.EXTENT 55930 . 61184) (\TEDIT.SHRINK.ICONCREATE -61186 . 63919) (\TEDIT.SHRINKFN 63921 . 64330) (\TEDIT.PANEREGION 64332 . 66546)) (66580 99205 ( -\TEDIT.BUTTONEVENTFN 66590 . 79462) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79464 . 86518) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 86520 . 88362) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88364 . 91929) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 91931 . 94355) (\TEDIT.BUTTONEVENTFN.INTITLE 94357 . 96192) ( -\TEDIT.COPYINSERTFN 96194 . 97326) (\TEDIT.FOREIGN.COPY 97328 . 99203)) (99206 116287 ( -\TEDIT.PANE.SPLIT 99216 . 103164) (\TEDIT.SPLITW 103166 . 110524) (\TEDIT.UNSPLITW 110526 . 114944) ( -\TEDIT.LINKPANES 114946 . 115709) (\TEDIT.UNLINKPANE 115711 . 116285)) (117721 118612 (TEDITWINDOWP -117731 . 118610)) (118649 121752 (TEDIT.GETINPUT 118659 . 121102) (\TEDIT.MAKEFILENAME 121104 . 121750 -)) (121801 130102 (TEDIT.PROMPTWINDOW 121811 . 122125) (TEDIT.PROMPTPRINT 122127 . 124754) ( -TEDIT.PROMPTCLEAR 124756 . 126475) (TEDIT.PROMPTFLASH 126477 . 128409) (\TEDIT.PROMPT.PAGEFULLFN -128411 . 130100)) (130340 140172 (\TEDIT.FILENAME 130350 . 131122) (\TEDIT.DEFAULT.TITLE 131124 . -133503) (\TEDIT.WINDOW.TITLE 133505 . 135674) (\TEDIT.LIKELY.FILENAME 135676 . 137654) ( -\TEDIT.UPDATE.TITLE 137656 . 140170)) (140215 151594 (TEDIT.DEACTIVATE.WINDOW 140225 . 146822) ( -\TEDIT.RESHAPEFN 146824 . 148909) (\TEDIT.REPAINTFN 148911 . 149135) (\TEDIT.CLOSEPANES 149137 . -151592)) (151595 194394 (\TEDIT.SCROLLFN 151605 . 153836) (\TEDIT.SCROLLCH.TOP 153838 . 155949) ( -\TEDIT.SCROLLCH.BOTTOM 155951 . 160281) (\TEDIT.SCROLLUP 160283 . 166009) (\TEDIT.TOPLINE.YTOP 166011 - . 167680) (\TEDIT.SCROLLDOWN 167682 . 174721) (\TEDIT.SCROLL.CARET 174723 . 177561) ( -\TEDIT.VISIBLECARETP 177563 . 179857) (\TEDIT.VISIBLECHARP 179859 . 180950) (\TEDIT.BITMAPLINES 180952 - . 184872) (\TEDIT.SETPANE.TOPLINE 184874 . 185486) (\TEDIT.SHIFTLINES 185488 . 194392)) (194395 -205264 (\TEDIT.ONSCREEN? 194405 . 198956) (\TEDIT.ONSCREEN.REGION 198958 . 202609) (\TEDIT.AFTERMOVEFN - 202611 . 203508) (OFFSCREENP 203510 . 205262)) (205306 207997 (\TEDIT.PROCIDLEFN 205316 . 206853) ( -\TEDIT.PROCENTRYFN 206855 . 207300) (\TEDIT.PROCEXITFN 207302 . 207995)) (208076 221301 ( -\TEDIT.DOWNCARET 208086 . 208879) (\TEDIT.FLASHCARET 208881 . 210992) (\TEDIT.UPCARET 210994 . 212098) - (TEDIT.NORMALIZECARET 212100 . 215318) (\TEDIT.SETCARET 215320 . 220671) (\TEDIT.CARET 220673 . -221299))))) + (FILEMAP (NIL (17040 17936 (TEDIT.DEFER.UPDATES 17050 . 17934)) (17937 43358 (\TEDIT.WINDOW.CREATE +17947 . 24967) (\TEDIT.WINDOW.GETREGION 24969 . 28459) (\TEDIT.WINDOW.SETUP 28461 . 32683) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32685 . 40096) (\TEDIT.CLEARPANE 40098 . 40815) (\TEDIT.FILL.PANES 40817 + . 43356)) (43359 65414 (\TEDIT.CURSORMOVEDFN 43369 . 48376) (\TEDIT.CURSOROUTFN 48378 . 48823) ( +\TEDIT.EXPANDFN 48825 . 49388) (\TEDIT.MAINW 49390 . 50670) (\TEDIT.MAINSTREAM 50672 . 51006) ( +\TEDIT.PRIMARYPANE 51008 . 51778) (\TEDIT.PANELIST 51780 . 52276) (\TEDIT.NEWREGIONFN 52278 . 54794) ( +\TEDIT.SET.WINDOW.EXTENT 54796 . 60050) (\TEDIT.SHRINK.ICONCREATE 60052 . 62785) (\TEDIT.SHRINKFN +62787 . 63196) (\TEDIT.PANEREGION 63198 . 65412)) (65446 98071 (\TEDIT.BUTTONEVENTFN 65456 . 78328) ( +\TEDIT.BUTTONEVENTFN.DOOPERATION 78330 . 85384) (\TEDIT.BUTTONEVENTFN.GETOPERATION 85386 . 87228) ( +\TEDIT.BUTTONEVENTFN.CURSEL.INIT 87230 . 90795) (\TEDIT.BUTTONEVENTFN.INACTIVE 90797 . 93221) ( +\TEDIT.BUTTONEVENTFN.INTITLE 93223 . 95058) (\TEDIT.COPYINSERTFN 95060 . 96192) (\TEDIT.FOREIGN.COPY +96194 . 98069)) (98072 115153 (\TEDIT.PANE.SPLIT 98082 . 102030) (\TEDIT.SPLITW 102032 . 109390) ( +\TEDIT.UNSPLITW 109392 . 113810) (\TEDIT.LINKPANES 113812 . 114575) (\TEDIT.UNLINKPANE 114577 . 115151 +)) (116587 117478 (TEDITWINDOWP 116597 . 117476)) (117515 120618 (TEDIT.GETINPUT 117525 . 119968) ( +\TEDIT.MAKEFILENAME 119970 . 120616)) (120667 128294 (TEDIT.PROMPTWINDOW 120677 . 120991) ( +TEDIT.PROMPTPRINT 120993 . 123620) (TEDIT.PROMPTCLEAR 123622 . 125341) (TEDIT.PROMPTFLASH 125343 . +126601) (\TEDIT.PROMPT.PAGEFULLFN 126603 . 128292)) (128532 138364 (\TEDIT.FILENAME 128542 . 129314) ( +\TEDIT.DEFAULT.TITLE 129316 . 131695) (\TEDIT.WINDOW.TITLE 131697 . 133866) (\TEDIT.LIKELY.FILENAME +133868 . 135846) (\TEDIT.UPDATE.TITLE 135848 . 138362)) (138407 149786 (TEDIT.DEACTIVATE.WINDOW 138417 + . 145014) (\TEDIT.RESHAPEFN 145016 . 147101) (\TEDIT.REPAINTFN 147103 . 147327) (\TEDIT.CLOSEPANES +147329 . 149784)) (149787 192586 (\TEDIT.SCROLLFN 149797 . 152028) (\TEDIT.SCROLLCH.TOP 152030 . +154141) (\TEDIT.SCROLLCH.BOTTOM 154143 . 158473) (\TEDIT.SCROLLUP 158475 . 164201) ( +\TEDIT.TOPLINE.YTOP 164203 . 165872) (\TEDIT.SCROLLDOWN 165874 . 172913) (\TEDIT.SCROLL.CARET 172915 + . 175753) (\TEDIT.VISIBLECARETP 175755 . 178049) (\TEDIT.VISIBLECHARP 178051 . 179142) ( +\TEDIT.BITMAPLINES 179144 . 183064) (\TEDIT.SETPANE.TOPLINE 183066 . 183678) (\TEDIT.SHIFTLINES 183680 + . 192584)) (192587 203456 (\TEDIT.ONSCREEN? 192597 . 197148) (\TEDIT.ONSCREEN.REGION 197150 . 200801) + (\TEDIT.AFTERMOVEFN 200803 . 201700) (OFFSCREENP 201702 . 203454)) (203498 206312 (\TEDIT.PROCIDLEFN +203508 . 205168) (\TEDIT.PROCENTRYFN 205170 . 205615) (\TEDIT.PROCEXITFN 205617 . 206310)) (206391 +219616 (\TEDIT.DOWNCARET 206401 . 207194) (\TEDIT.FLASHCARET 207196 . 209307) (\TEDIT.UPCARET 209309 + . 210413) (TEDIT.NORMALIZECARET 210415 . 213633) (\TEDIT.SETCARET 213635 . 218986) (\TEDIT.CARET +218988 . 219614))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index bfc45e437ef69da9aab2087434380d28f31885fd..47330ae0614e7cc8550c69a370bc2e94f293e16a 100644 GIT binary patch delta 845 zcmZuvF>ljQ5Vn)hsu4&LD5WYzI+=(jh#J4=xN(d?n8YE5#Ia(hNl+vhBGLi_Vqnb= zK$RLE8)8LbK!RAEN>Le876t|+P&Z&LkB`jeDFw$^VlhNQoitO{rc^PLQF5v8;3|UjKhL#5(X33r1_#V$-yWwWjEEWI(g)#)?^M zI7>y!IZ26BO`=C8-}nm=8F|x@%jdmBrc;^2;M0H&2&%eixkk&aUB5{_uAez}FUoN| z`2|9Mm@4n8-2Htod2NQHU%NYmDQ1i+Z%>z>mq(S&gdbV$t{rEA+uhCSyUchPiL+mV zOXu@Ys_0HRxKWkihT+=vTGe&~D5r$tSSwA)=6!$46&XMd(zEk<3==hq3SrMLg^S*o zC$EbU{v_#drOy8Dv75&YKYPdRO?aQl&K8PM_yslaT+i=*B#yI(two3r ziPb4a()1a2BPz%1KAVScT3lqivDc_S2psg+l?HRsPws3XV%3U6nTF&nCx1Ph=u2L!oB30U_1f*D)VyOr|28CezMHk{L47q=Q{lDKxdUN>rqX zWa&bXrUNcqxe`PLZQ6yciXbA5ApQcuh2lo+4^Z&VBW=^p;@orZIrrT2edlAAeuQ59 z3@uHxvvKKqC5~y#0YW0iB2Cxk`UXuoqnhVk8!xH(j8;kv30R0hxEJrbLJK0xiU`-< zb+#>ByIG!Hn5q35top~v-dH#~s%GVML6%4@Xt~>bt{3iY{v2Pox(XK+o3guPVKVSA? io_bq6a@1G6FGTxZqvu3;*A%>a_WQ>j_0Nru1OEZizZSay diff --git a/library/tedit/TEDIT.LCOM b/library/tedit/TEDIT.LCOM index 30d6be71f0e0b6980a4a5e76aabe1fb4b67269d3..df7c594117705800ab5dca0777f7c8f0c3fcb8bc 100644 GIT binary patch delta 777 zcmZuvzi-n(7>z3mNu-t_0<9{9K1Cp!O0j&Gi({M$*|nYE)Qv6MC86mAjhgVIjnajQ zrXU73s_Vj^fEXHKSV4#>EbJW+5(6V0_yf2&v=wb{_;lZQ@4dVCbbDJPueU~C)h>z| zwcW{J0p|cAnTRqW+YhhReM2|>TVdr363(X~p2Fk^i?ebL%ScSYy-wr)`r~%%QDX%f zPuiW0>oP14iH_>3e9?40A6jdWDlS?UV6y#VQaYi8g;Y8|T{JC2a}AZzA%#zQ8Wp(Y z#PPQQBIIT^PwU*3Lb2kVygd!F;~IBNd(q42Oq^-wj;tU_7VQmzT~C4*QcK=KV~$cVl%hh!4tAeK<|d z{|6c^cbm194;R$8%K9NT(M&|9QCy delta 918 zcma)5Pixa)7;krQYZz`Y(IE(rL7^2IlDBD_q+=va-gfEICMMasPC+(Ty1K2Kbq8fg zou5D#Ja`y>1gmjZMLgAmSH;t=-W2=*zDeC5M-S%klIQpS{yfi{H!pXGzV8k_TbM{C zm92IXu_z53C-F#13(wcCb++p(&FyIyYr4zi1jHwRq7gdbA|$b_luFUC+^*l<+}LWa z*H@taaI5{`x&*Dw?bT+h0nHZBg*n53(^7_EXjoYy34=WaIze^f1>L}^jTO=Y&}cxH zH0)H%STk_#@zi>AxxLhWG<~*f;CMcZM390xlKC36H`YK>XOv12J4x51AU?0y4uo^6 zX4y%AWZ8IL&zo~jQX}Cc`_$AND1s$O5Lma3F+_FV&7o6 z)MLE;*klK>9AMivZQwFI6tP>?E1FrgY|{b`WzQhlEL01&S=JoLh@k0?WhgbrCEuWI zK?VVlsn~Itz6qq$M~DSHk@l?e^UJe DM7Z)= diff --git a/lispusers/FOO.TEDIT b/lispusers/FOO.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..18b8b90821b215cd191aafd719217895ad26f8cf GIT binary patch literal 19725 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 ZUovorQ Date: Sat, 26 Apr 2025 23:05:42 -0700 Subject: [PATCH 10/18] Display cleanup for a change on the top line of a pane --- library/tedit/TEDIT-SCREEN | 116 +++++++++++++++++--------------- library/tedit/TEDIT-SCREEN.LCOM | Bin 34767 -> 35075 bytes 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/library/tedit/TEDIT-SCREEN b/library/tedit/TEDIT-SCREEN index 0b17b988a..b86c2e16b 100644 --- a/library/tedit/TEDIT-SCREEN +++ b/library/tedit/TEDIT-SCREEN @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "21-Apr-2025 20:34:16" {WMEDLEY}tedit>TEDIT-SCREEN.;900 190807 +(FILECREATED "26-Apr-2025 22:57:49" {WMEDLEY}tedit>TEDIT-SCREEN.;901 191534 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.UPDATE.LINES \TEDIT.FORMATLINE) + :CHANGES-TO (FNS \TEDIT.UPDATE.LINES \TEDIT.LASTVALIDLINE) - :PREVIOUS-DATE "21-Apr-2025 12:19:13" {WMEDLEY}tedit>TEDIT-SCREEN.;898) + :PREVIOUS-DATE "21-Apr-2025 20:34:16" {WMEDLEY}tedit>TEDIT-SCREEN.;900) (PRETTYCOMPRINT TEDIT-SCREENCOMS) @@ -2365,7 +2365,8 @@ 1)]) (\TEDIT.UPDATE.LINES - [LAMBDA (TSTREAM REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "Edited 21-Apr-2025 20:30 by rmk") + [LAMBDA (TSTREAM REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "Edited 26-Apr-2025 19:19 by rmk") + (* ; "Edited 21-Apr-2025 20:30 by rmk") (* ; "Edited 9-Apr-2025 12:59 by rmk") (* ; "Edited 6-Apr-2025 14:23 by rmk") (* ; "Edited 30-Mar-2025 10:02 by rmk") @@ -2383,7 +2384,7 @@ (* ;; " ") - (* ;; "The last valid line for each pane is a line above the change whose layout is not affected by the change--either because it is forced-end, or we can tell that a change in the following line does not propagate further back. If the pane would not be affected, its last valid line is NIL and the pane is not further processed.") + (* ;; "The last valid line for each pane is a line above the change whose layout is not affected by the change--either because it is forced-end, or we can tell that a change in the after it does not propagate further back. If the pane would not be affected, its last valid line is NIL and the pane is not further processed.") (* ;; "For a pane with a last valid line, the next valid line is the line somewhere after the last valid that is also not affected by the change--either because the line before it is a forced-end or we can tell that the change stops propagating at the line before it. The next value line is NIL if the change propagates through the bottom of the pane--all lower lines must be reformatted.") @@ -2703,40 +2704,52 @@ NIL))]) (\TEDIT.LASTVALIDLINE - [LAMBDA (FIRSTCHANGEDCHNO LASTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 20-Apr-2025 00:08 by rmk") + [LAMBDA (FIRSTCHANGEDCHNO LASTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 26-Apr-2025 22:57 by rmk") + (* ; "Edited 20-Apr-2025 00:08 by rmk") - (* ;; "We hope to return an existing line in PANE that is impervious to the change at FIRSTCHARCHANGECHNO. This would be the impervious line closest to FIRSTCHANGEDLINE, usually the immediately preceding line. That line is valid: it and lines above it do not need reformatting or redisplay. But if PANE does not contain an impervious line, and we are not at the beginning of the document, we have to construct lines above PANE until we get to an impervious line, so that we can format forwards.") + (* ;; "Return NIL if this change has no visible consequences for PANE. Otherwise, find or create the lowest line in PANE that is impervious to the change at FIRSTCHARCHANGECHNO. That line is valid: it and lines above it do not need reformatting or redisplay. ") (* ;; "Note that all character numbers above FIRSTCHANGEDCHNO are pre-change, so it is OK to look backwards.") (PROG ((TEXTOBJ (FTEXTOBJ TSTREAM)) FIRSTCHANGEDLINE) - (CL:WHEN (OR (ILEQ FIRSTCHANGEDCHNO (FGETLD (PANETOPLINE PANE) + (if (<= (FGETLD (PANETOPLINE PANE) + LCHARLIM) + FIRSTCHANGEDCHNO + (SUB1 (FGETLD (PANESUFFIX PANE) + LCHAR1))) + then + (* ;; + "Change is within the second line of PANE or later, find the line that contains FIRSTCHANGEDCHNO") + + (SETQ FIRSTCHANGEDLINE (find L inlines (FGETLD (PANETOPLINE PANE) + NEXTLINE) + suchthat (FWITHINLINEP FIRSTCHANGEDCHNO L))) + elseif (OR (ILEQ FIRSTCHANGEDCHNO (FGETLD (PANETOPLINE PANE) LCHARLAST)) (ZEROP (FGETLD (PANETOPLINE PANE) LCHARLAST))) - - (* ;; "Change is above PANE--does it impinge?") - - (RETURN (CL:UNLESS (ILESSP (CAR (\TEDIT.PARA.LAST TEXTOBJ LASTCHANGEDCHNO)) - (FGETLD (PANEPREFIX PANE) - LCHARLIM)) - - (* ;; "The changed paragraph doesn't end above PANE--it impinges") - - (FSETLD (PANEPREFIX PANE) - LCHARLIM - (FGETLD (CDR (OR (\TEDIT.LINES.ABOVE TSTREAM (PANETOPLINE PANE)) - (RETURN NIL))) - LCHAR1)) - (PANEPREFIX PANE)))) - - (* ;; "") - - [if (IGEQ FIRSTCHANGEDCHNO (FGETLD (PANESUFFIX PANE) - LCHAR1)) then - (* ;; "Change starts below PANE--does it propagate upwards?") + (* ;; "Change is in first line or before PANE--does it impinge?") + + (RETURN (CL:WHEN (OR (FWITHINLINEP FIRSTCHANGEDCHNO (PANETOPLINE PANE)) + (IGEQ (CAR (\TEDIT.PARA.LAST TEXTOBJ LASTCHANGEDCHNO)) + (FGETLD (PANEPREFIX PANE) + LCHARLIM))) + + (* ;; "The changed paragraph doesn't end above PANE there is at least one affected line. Build and return the prefix for the lowest such line.") + + (FSETLD (PANEPREFIX PANE) + LCHARLIM + (FGETLD (CDR (OR (\TEDIT.LINES.ABOVE TSTREAM (PANETOPLINE + PANE)) + (RETURN NIL))) + LCHAR1)) + (PANEPREFIX PANE))) + elseif (IGEQ FIRSTCHANGEDCHNO (FGETLD (PANESUFFIX PANE) + LCHAR1)) + then + (* ;; "Change starts below PANE--does it propagate back into PANE?") (CL:WHEN (ILESSP (FGETLD (PANEBOTTOMLINE PANE) LCHARLIM) @@ -2747,16 +2760,11 @@ (RETURN NIL)) (SETQ FIRSTCHANGEDLINE (PANEBOTTOMLINE PANE)) (* ; "LCHAR1 forces the backward scan") - (SETQ FIRSTCHANGEDCHNO (FGETLD FIRSTCHANGEDLINE LCHAR1)) - else - (* ;; "Change is within PANE") - - (SETQ FIRSTCHANGEDLINE (find L inlines (PANEPREFIX PANE) - suchthat (FWITHINLINEP FIRSTCHANGEDCHNO L] + (SETQ FIRSTCHANGEDCHNO (FGETLD FIRSTCHANGEDLINE LCHAR1))) (* ;; "") - (* ;; "A relevant %"change%" is now inside PANE.") + (* ;; "FIRSTCHANGEDLINE is in the pane and is affected.") (RETURN (if (ILESSP (FGETLD FIRSTCHANGEDLINE LFIRSTSEPR) FIRSTCHANGEDCHNO) @@ -2934,22 +2942,22 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27705 29921 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27715 . 29919)) (37326 122755 ( -\TEDIT.FORMATLINE 37336 . 73739) (\TEDIT.FORMATLINE.SETUP.PARA 73741 . 78907) ( -\TEDIT.FORMATLINE.HORIZONTAL 78909 . 83482) (\TEDIT.FORMATLINE.VERTICAL 83484 . 85935) ( -\TEDIT.FORMATLINE.JUSTIFY 85937 . 91958) (\TEDIT.FORMATLINE.TABS 91960 . 99988) (\TEDIT.SCALE.TABS -99990 . 100781) (\TEDIT.FORMATLINE.PURGE.SPACES 100783 . 102210) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -102212 . 103289) (\TEDIT.FORMATLINE.EMPTY 103291 . 108686) (\TEDIT.FORMATLINE.UPDATELOOKS 108688 . -114869) (\TEDIT.FORMATLINE.LASTLEGAL 114871 . 118518) (\TEDIT.LINES.ABOVE 118520 . 122131) ( -\TEDIT.CHNO.TO.YTOP 122133 . 122753)) (122872 124787 (\TLVALIDATE 122882 . 124785)) (124985 145393 ( -\TEDIT.DISPLAYLINE 124995 . 137505) (\TEDIT.DISPLAYLINE.TABS 137507 . 140311) (\TEDIT.LINECACHE 140313 - . 141041) (\TEDIT.CREATE.LINECACHE 141043 . 141879) (\TEDIT.BLTCHAR 141881 . 144508) ( -\TEDIT.DIACRITIC.SHIFT 144510 . 145391)) (146008 190784 (\TEDIT.BACKFORMAT 146018 . 148572) ( -\TEDIT.PREVIOUS.LINEBREAK 148574 . 151377) (\TEDIT.UPDATE.LINES 151379 . 156991) ( -\TEDIT.PANE.CREATELINES 156993 . 160444) (\TEDIT.SUFFIXLINE.CREATE 160446 . 162061) ( -\TEDIT.LINES.BELOW 162063 . 166673) (\TEDIT.MEASURED.LINES 166675 . 168684) (\TEDIT.VALID.LASTCHNOS -168686 . 172462) (\TEDIT.VALID.NEXTCHNOS 172464 . 175938) (\TEDIT.LASTVALIDLINE 175940 . 179990) ( -\TEDIT.NEXTVALIDLINE 179992 . 182231) (\TEDIT.CLEARPANE.BELOW.LINE 182233 . 184339) (\TEDIT.INSERTLINE - 184341 . 185727) (\TEDIT.LINE.BOTTOM 185729 . 188959) (\TEDIT.SHOW.AT.BOTTOMP 188961 . 190071) ( -\TEDIT.SHOW.AT.TOPP 190073 . 190782))))) + (FILEMAP (NIL (27708 29924 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27718 . 29922)) (37329 122758 ( +\TEDIT.FORMATLINE 37339 . 73742) (\TEDIT.FORMATLINE.SETUP.PARA 73744 . 78910) ( +\TEDIT.FORMATLINE.HORIZONTAL 78912 . 83485) (\TEDIT.FORMATLINE.VERTICAL 83487 . 85938) ( +\TEDIT.FORMATLINE.JUSTIFY 85940 . 91961) (\TEDIT.FORMATLINE.TABS 91963 . 99991) (\TEDIT.SCALE.TABS +99993 . 100784) (\TEDIT.FORMATLINE.PURGE.SPACES 100786 . 102213) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN +102215 . 103292) (\TEDIT.FORMATLINE.EMPTY 103294 . 108689) (\TEDIT.FORMATLINE.UPDATELOOKS 108691 . +114872) (\TEDIT.FORMATLINE.LASTLEGAL 114874 . 118521) (\TEDIT.LINES.ABOVE 118523 . 122134) ( +\TEDIT.CHNO.TO.YTOP 122136 . 122756)) (122875 124790 (\TLVALIDATE 122885 . 124788)) (124988 145396 ( +\TEDIT.DISPLAYLINE 124998 . 137508) (\TEDIT.DISPLAYLINE.TABS 137510 . 140314) (\TEDIT.LINECACHE 140316 + . 141044) (\TEDIT.CREATE.LINECACHE 141046 . 141882) (\TEDIT.BLTCHAR 141884 . 144511) ( +\TEDIT.DIACRITIC.SHIFT 144513 . 145394)) (146011 191511 (\TEDIT.BACKFORMAT 146021 . 148575) ( +\TEDIT.PREVIOUS.LINEBREAK 148577 . 151380) (\TEDIT.UPDATE.LINES 151382 . 157097) ( +\TEDIT.PANE.CREATELINES 157099 . 160550) (\TEDIT.SUFFIXLINE.CREATE 160552 . 162167) ( +\TEDIT.LINES.BELOW 162169 . 166779) (\TEDIT.MEASURED.LINES 166781 . 168790) (\TEDIT.VALID.LASTCHNOS +168792 . 172568) (\TEDIT.VALID.NEXTCHNOS 172570 . 176044) (\TEDIT.LASTVALIDLINE 176046 . 180717) ( +\TEDIT.NEXTVALIDLINE 180719 . 182958) (\TEDIT.CLEARPANE.BELOW.LINE 182960 . 185066) (\TEDIT.INSERTLINE + 185068 . 186454) (\TEDIT.LINE.BOTTOM 186456 . 189686) (\TEDIT.SHOW.AT.BOTTOMP 189688 . 190798) ( +\TEDIT.SHOW.AT.TOPP 190800 . 191509))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index a9f871623d4154dc99f1a713bd4d65dae32c5f94..af16a92706877c0b5fe7bdc2751c977270ac5f94 100644 GIT binary patch delta 1624 zcmZuwOKTHR7@f4K*rL#feG=kOp=}Bcb6+!^6eQDhqGKmbNMft4F4Xu)0$O~mTtpNR zy0Pi~0YVX6xM>r+5g!Xzv$D&If*|TnFmzq?PD;`{GtDA1=ey^g^WF2!{rtS;$y&?m zg&uiATfRF1B}haFBSeW{wOou0f{@rT47o)BBUp|Asr+G_cFy-M`W{Jd$3JS!Xy z4~w}g_pj%~!*=80P{&x@F!fkk*RuMIlhpKoIDQm}Km`P0`oK3u`{$3-x4s~q@^#Q3 zzR^}ylB&mAe%|mATDz4CmW~L5KlVvrzjEwZj3Gg=2I`M4%}>jP{!uGn4HS2xyVZPj z`lh|!VgKzj{Z?P`%WgH<)!Alqu@!il*k1|cUUpyH6t?T=eKcY9?bWKk*pq4P)hb^T zxysJg_x#4UsJ*e>HmR*|3hOos*=VuwcWqO6bgr#+>)xTpOwXkM@`LnGzRUNUy`Ahc ztdZ!RE%VW^f}QPlpOuxmLC^}kTQcn?UeB8QJ*=74&{?g17@zG*SFif%Y~i%;FTWYOdK1=D zjBGfgXH(jo9?m9HrZK0BM8%CI8)w4WbaI}R72?t$0Mq5-P>E+@1-e)mPr55WaaSbL zuuN%bEo^F;tcYanq9MYXjxXx=0Z{WurN)_{iX19&Bh6%>?DmJ)Ees`h1$fS(x|^2O z{q{=DP?0Mkb_-;vigrFTdM1`OQrTo$lp*qzfGpZGut$?&v*8h$RNQnjDRJ}?QFurQ z_VA(XDFKy}AQF%8q(=cO3P;B>k4jjU-13+po{t^K8wrMxrvn}##nU`u(I3QBLWGCN z8!vLiiyZMnmZfVzP~qE!vIAk>3nGRJ&A~zDZF4#eg*z=iT{6)!)K!^SRy`N3=^8l*6!pmeOc&#s6ux2!ydxE%+cKKuMA2qpu761SM From 3136cd8e7f8ae4dd6b6f3a64724304ad85f6a8c1 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 27 Apr 2025 11:34:03 -0700 Subject: [PATCH 11/18] Fix break reported by @pamoroso --- library/tedit/TEDIT-SCREEN | 71 +++++++++++++------------------- library/tedit/TEDIT-SCREEN.LCOM | Bin 35075 -> 35079 bytes 2 files changed, 28 insertions(+), 43 deletions(-) diff --git a/library/tedit/TEDIT-SCREEN b/library/tedit/TEDIT-SCREEN index b86c2e16b..8e13bfe10 100644 --- a/library/tedit/TEDIT-SCREEN +++ b/library/tedit/TEDIT-SCREEN @@ -1,10 +1,11 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "26-Apr-2025 22:57:49" {WMEDLEY}tedit>TEDIT-SCREEN.;901 191534 +(FILECREATED "27-Apr-2025 11:30:10" {WMEDLEY}tedit>TEDIT-SCREEN.;902 190000 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.UPDATE.LINES \TEDIT.LASTVALIDLINE) + :CHANGES-TO (FNS \TEDIT.FORMATLINE \TEDIT.FORMATLINE.EMPTY \TEDIT.UPDATE.LINES + \TEDIT.LASTVALIDLINE) :PREVIOUS-DATE "21-Apr-2025 20:34:16" {WMEDLEY}tedit>TEDIT-SCREEN.;900) @@ -678,28 +679,19 @@ (\TEDIT.FORMATLINE [LAMBDA (TSTREAM CH#1 LINE REGION IMAGESTREAM FORMATTINGSTATE) + (* ; "Edited 27-Apr-2025 11:24 by rmk") (* ; "Edited 21-Apr-2025 19:03 by rmk") (* ; "Edited 11-Apr-2025 20:18 by rmk") (* ; "Edited 29-Mar-2025 11:39 by rmk") (* ; "Edited 6-Mar-2025 11:42 by rmk") - (* ; "Edited 25-Feb-2025 10:39 by rmk") - (* ; "Edited 19-Feb-2025 13:36 by rmk") - (* ; "Edited 10-Feb-2025 09:59 by rmk") (* ; "Edited 8-Feb-2025 23:36 by rmk") (* ; "Edited 24-Dec-2024 22:15 by rmk") - (* ; "Edited 23-Dec-2024 19:47 by rmk") - (* ; "Edited 13-Dec-2024 23:46 by rmk") - (* ; "Edited 12-Dec-2024 15:20 by rmk") - (* ; "Edited 9-Dec-2024 21:05 by rmk") (* ; "Edited 23-Nov-2024 00:03 by rmk") - (* ; "Edited 17-Nov-2024 19:56 by rmk") (* ; "Edited 31-Oct-2024 15:32 by rmk") (* ; "Edited 26-Oct-2024 10:51 by rmk") (* ; "Edited 2-Sep-2024 16:06 by rmk") - (* ; "Edited 27-Aug-2024 18:29 by rmk") (* ; "Edited 4-Aug-2024 18:07 by rmk") (* ; "Edited 21-May-2024 14:45 by rmk") - (* ; "Edited 17-Mar-2024 00:27 by rmk") (* ; "Edited 5-Feb-2024 09:35 by rmk") (* ; "Edited 3-Dec-2023 16:48 by rmk") (* ; "Edited 28-Oct-2023 13:14 by rmk") @@ -788,8 +780,8 @@ (SETQ OLDCARETLOOKS (FGETTOBJ TEXTOBJ CARETLOOKS)) (* ;  "Restore at end--BIN changes things") - (SETQ OLDPIECE (ffetch (TEXTSTREAM PIECE) of TSTREAM)) - (SETQ OLDPCCHARSLEFT (ffetch (TEXTSTREAM PCCHARSLEFT) of TSTREAM)) + (SETQ OLDPIECE (FGETTSTR TSTREAM PIECE)) + (SETQ OLDPCCHARSLEFT (FGETTSTR TSTREAM PCCHARSLEFT)) (* ;; "") @@ -1658,36 +1650,31 @@ finally (RETURN CS)))]) (\TEDIT.FORMATLINE.EMPTY - [LAMBDA (TEXTOBJ CH#1 LINE) (* ; "Edited 19-Apr-2025 22:25 by rmk") + [LAMBDA (TEXTOBJ CH#1 LINE) (* ; "Edited 27-Apr-2025 11:28 by rmk") + (* ; "Edited 19-Apr-2025 22:25 by rmk") (* ; "Edited 13-Apr-2025 23:56 by rmk") (* ; "Edited 9-Apr-2025 19:39 by rmk") (* ; "Edited 19-Feb-2025 13:37 by rmk") (* ; "Edited 8-Feb-2025 23:37 by rmk") - (* ; "Edited 7-Feb-2025 08:09 by rmk") (* ; "Edited 22-Nov-2024 22:29 by rmk") - (* ; "Edited 17-Nov-2024 16:00 by rmk") (* ; "Edited 4-Aug-2024 14:51 by rmk") (* ; "Edited 25-Jun-2024 14:51 by rmk") (* ; "Edited 10-May-2024 00:24 by rmk") (* ; "Edited 15-Mar-2024 22:00 by rmk") (* ; "Edited 26-Jan-2024 11:08 by rmk") (* ; "Edited 6-Dec-2023 20:15 by rmk") - (* ; "Edited 3-Dec-2023 19:41 by rmk") (* ; "Edited 26-Sep-2023 17:32 by rmk") (* ; "Edited 15-Jul-2023 13:52 by rmk") (* ; "Edited 2-Jul-2023 15:20 by rmk") (* ; "Edited 7-Mar-2023 23:11 by rmk") - (* ; "Edited 5-Mar-2023 22:57 by rmk") (* ; "Edited 4-Mar-2023 21:40 by rmk") - (* ; "") (* ;; "NOTE: this follows the original in not distinguishing hardcopy-display mode. Presumably empty is empty, even thought the ASCENT/DESCENT/LHEIGHT are not scaled.") (* ;; "Original code asked for the piece at TEXTLEN (last piece?) to get its looks, but those looks would be the TEXTOBJ default looks anyway. But it really wants to the looks of the preceding piece.") (LINEDESCRIPTOR! LINE) - (LET (CHARSLOT FONT CLOOKS TRUEASCENT TRUEDESCENT LM PLOOKS (THISLINE (FGETTOBJ TEXTOBJ THISLINE) - )) + (LET (FONT CLOOKS TRUEASCENT TRUEDESCENT LM PLOOKS (THISLINE (FGETTOBJ TEXTOBJ THISLINE))) (\TEDIT.FORMATLINE.SETUP.PARA TEXTOBJ NIL LINE (WINDOWPROP (\TEDIT.PRIMARYPANE TEXTOBJ) 'DSP) 'TRUEDISPLAY) @@ -1721,9 +1708,7 @@ (SETQ LTRUEDESCENT TRUEDESCENT) (SETQ LHEIGHT (IPLUS TRUEASCENT TRUEDESCENT)) (SETQ LFIRSTSEPR MAX.FIXP)) - (SETQ CHARSLOT (FIRSTCHARSLOT THISLINE)) - (FILLCHARSLOT CHARSLOT NIL CLOOKS) - (replace (THISLINE NEXTAVAILABLECHARSLOT) of THISLINE with (NEXTCHARSLOT CHARSLOT)) + (replace (THISLINE NEXTAVAILABLECHARSLOT) of THISLINE with (FIRSTCHARSLOT THISLINE)) (freplace (THISLINE DESC) of THISLINE with LINE) (* ;; "Just to initialize the rest of the fields--no intended transformations.") @@ -2942,22 +2927,22 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27708 29924 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27718 . 29922)) (37329 122758 ( -\TEDIT.FORMATLINE 37339 . 73742) (\TEDIT.FORMATLINE.SETUP.PARA 73744 . 78910) ( -\TEDIT.FORMATLINE.HORIZONTAL 78912 . 83485) (\TEDIT.FORMATLINE.VERTICAL 83487 . 85938) ( -\TEDIT.FORMATLINE.JUSTIFY 85940 . 91961) (\TEDIT.FORMATLINE.TABS 91963 . 99991) (\TEDIT.SCALE.TABS -99993 . 100784) (\TEDIT.FORMATLINE.PURGE.SPACES 100786 . 102213) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -102215 . 103292) (\TEDIT.FORMATLINE.EMPTY 103294 . 108689) (\TEDIT.FORMATLINE.UPDATELOOKS 108691 . -114872) (\TEDIT.FORMATLINE.LASTLEGAL 114874 . 118521) (\TEDIT.LINES.ABOVE 118523 . 122134) ( -\TEDIT.CHNO.TO.YTOP 122136 . 122756)) (122875 124790 (\TLVALIDATE 122885 . 124788)) (124988 145396 ( -\TEDIT.DISPLAYLINE 124998 . 137508) (\TEDIT.DISPLAYLINE.TABS 137510 . 140314) (\TEDIT.LINECACHE 140316 - . 141044) (\TEDIT.CREATE.LINECACHE 141046 . 141882) (\TEDIT.BLTCHAR 141884 . 144511) ( -\TEDIT.DIACRITIC.SHIFT 144513 . 145394)) (146011 191511 (\TEDIT.BACKFORMAT 146021 . 148575) ( -\TEDIT.PREVIOUS.LINEBREAK 148577 . 151380) (\TEDIT.UPDATE.LINES 151382 . 157097) ( -\TEDIT.PANE.CREATELINES 157099 . 160550) (\TEDIT.SUFFIXLINE.CREATE 160552 . 162167) ( -\TEDIT.LINES.BELOW 162169 . 166779) (\TEDIT.MEASURED.LINES 166781 . 168790) (\TEDIT.VALID.LASTCHNOS -168792 . 172568) (\TEDIT.VALID.NEXTCHNOS 172570 . 176044) (\TEDIT.LASTVALIDLINE 176046 . 180717) ( -\TEDIT.NEXTVALIDLINE 180719 . 182958) (\TEDIT.CLEARPANE.BELOW.LINE 182960 . 185066) (\TEDIT.INSERTLINE - 185068 . 186454) (\TEDIT.LINE.BOTTOM 186456 . 189686) (\TEDIT.SHOW.AT.BOTTOMP 189688 . 190798) ( -\TEDIT.SHOW.AT.TOPP 190800 . 191509))))) + (FILEMAP (NIL (27774 29990 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27784 . 29988)) (37395 121224 ( +\TEDIT.FORMATLINE 37405 . 72783) (\TEDIT.FORMATLINE.SETUP.PARA 72785 . 77951) ( +\TEDIT.FORMATLINE.HORIZONTAL 77953 . 82526) (\TEDIT.FORMATLINE.VERTICAL 82528 . 84979) ( +\TEDIT.FORMATLINE.JUSTIFY 84981 . 91002) (\TEDIT.FORMATLINE.TABS 91004 . 99032) (\TEDIT.SCALE.TABS +99034 . 99825) (\TEDIT.FORMATLINE.PURGE.SPACES 99827 . 101254) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN +101256 . 102333) (\TEDIT.FORMATLINE.EMPTY 102335 . 107155) (\TEDIT.FORMATLINE.UPDATELOOKS 107157 . +113338) (\TEDIT.FORMATLINE.LASTLEGAL 113340 . 116987) (\TEDIT.LINES.ABOVE 116989 . 120600) ( +\TEDIT.CHNO.TO.YTOP 120602 . 121222)) (121341 123256 (\TLVALIDATE 121351 . 123254)) (123454 143862 ( +\TEDIT.DISPLAYLINE 123464 . 135974) (\TEDIT.DISPLAYLINE.TABS 135976 . 138780) (\TEDIT.LINECACHE 138782 + . 139510) (\TEDIT.CREATE.LINECACHE 139512 . 140348) (\TEDIT.BLTCHAR 140350 . 142977) ( +\TEDIT.DIACRITIC.SHIFT 142979 . 143860)) (144477 189977 (\TEDIT.BACKFORMAT 144487 . 147041) ( +\TEDIT.PREVIOUS.LINEBREAK 147043 . 149846) (\TEDIT.UPDATE.LINES 149848 . 155563) ( +\TEDIT.PANE.CREATELINES 155565 . 159016) (\TEDIT.SUFFIXLINE.CREATE 159018 . 160633) ( +\TEDIT.LINES.BELOW 160635 . 165245) (\TEDIT.MEASURED.LINES 165247 . 167256) (\TEDIT.VALID.LASTCHNOS +167258 . 171034) (\TEDIT.VALID.NEXTCHNOS 171036 . 174510) (\TEDIT.LASTVALIDLINE 174512 . 179183) ( +\TEDIT.NEXTVALIDLINE 179185 . 181424) (\TEDIT.CLEARPANE.BELOW.LINE 181426 . 183532) (\TEDIT.INSERTLINE + 183534 . 184920) (\TEDIT.LINE.BOTTOM 184922 . 188152) (\TEDIT.SHOW.AT.BOTTOMP 188154 . 189264) ( +\TEDIT.SHOW.AT.TOPP 189266 . 189975))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index af16a92706877c0b5fe7bdc2751c977270ac5f94..70a11e0e063c923c4291e593738b2505327c97fe 100644 GIT binary patch delta 906 zcmZuvL2nX47~Nf90~CY0KK4T3yT=WL7|8z0hCMUm3d_`qo`$^^Hx4L zPC1YnZ-5}HspwZUw(-tO5RNoW;2|5y$t}0Mo|ZjkY6XK>GqK-g#g|@feDSd0#aiK z-MOJX8g0ga{&LSuHArefiXwYA|MXT(ci-MWw3O9Q?NxiwHt2f4)gHXX{rbMpY`u@k z=US-ixZfVUxYiy#BO-i)LqB6oAP&KDwxX0YeEWiceuTrQdVIpc^E}2!9T4)S46U&_ zKc5tVo>wvo;6(|2WTz;YM6>dt4M_rpylTB;DX*8c65z0OKPB3!gq;#t+eY3_asN{8 zVM$g(+qIMDk~T9?v{Q-X{xUEwqNNL`W^9%qm#}GB0r!7+T1uGTvTT0fQRBGpeTmx5L;o;l}8z?=#=`=I!LYZBx5#>f@bAVlnyT z*&@eqBILMbQCb$1*286zZG92(U-EM6Q2Vdtoj4n6-%CL`LPkdc(XD)7YeLc^tbc&=QRRWpw{k?rEqV`j;-KE z%}KC`(pc>K$~PRc@87JBO4U~^Z(tADgoQJA90{-dLQbyVX|=jgdpqylQ6JHt;F-59hx!w>e$ z1b@*?V_?G_1bUvG&T#iZXV@fSyqtjPf|1H;hN0=Jrn;&j9rBV0%bAjDA_MXX8J3G` zS}Vpg$jsyX_BnhQnfCCagp=D5d@egLcDKM~@)e1RH zS0T?zrvgTRBRU!iQ!|Rlgq*^;knBd18wtECk#|t=bbb7LBUWY4I_;5mA=!;2#^n+f s7ZMcQk4ABz0w_kbAK=1*A~_R%>NjQiERhs^pJPY`ACy7&E4O+3A36Q`UjP6A From 102f1366df2e7b757d9fea3bf49fcfdd1ad9250b Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 27 Apr 2025 13:11:27 -0700 Subject: [PATCH 12/18] Add back \TEDIT.ACTIVE.WINDOWP Only called by TEDIT-PROCESS-KILLER (not in MS database), was out of date --- library/tedit/TEDIT-WINDOW | 91 +++++++++++++++++++------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62096 -> 62285 bytes 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 1ab96ca88..25f9ff008 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "25-Apr-2025 21:24:31" {WMEDLEY}tedit>TEDIT-WINDOW.;832 224880 +(FILECREATED "27-Apr-2025 13:08:05" {WMEDLEY}TEDIT>TEDIT-WINDOW.;833 225975 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.WINDOW.CREATE) + :CHANGES-TO (FNS \TEDIT.ACTIVE.WINDOWP) - :PREVIOUS-DATE "25-Apr-2025 18:08:03" {WMEDLEY}tedit>TEDIT-WINDOW.;831) + :PREVIOUS-DATE "25-Apr-2025 21:24:31" {WMEDLEY}TEDIT>TEDIT-WINDOW.;832) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -26,9 +26,9 @@ (FNS TEDIT.DEFER.UPDATES) (FNS \TEDIT.WINDOW.CREATE \TEDIT.WINDOW.GETREGION \TEDIT.WINDOW.SETUP \TEDIT.MINIMAL.WINDOW.SETUP \TEDIT.CLEARPANE \TEDIT.FILL.PANES) - (FNS \TEDIT.CURSORMOVEDFN \TEDIT.CURSOROUTFN \TEDIT.EXPANDFN \TEDIT.MAINW \TEDIT.MAINSTREAM - \TEDIT.PRIMARYPANE \TEDIT.PANELIST \TEDIT.NEWREGIONFN \TEDIT.SET.WINDOW.EXTENT - \TEDIT.SHRINK.ICONCREATE \TEDIT.SHRINKFN \TEDIT.PANEREGION) + (FNS \TEDIT.CURSORMOVEDFN \TEDIT.CURSOROUTFN \TEDIT.ACTIVE.WINDOWP \TEDIT.EXPANDFN + \TEDIT.MAINW \TEDIT.MAINSTREAM \TEDIT.PRIMARYPANE \TEDIT.PANELIST \TEDIT.NEWREGIONFN + \TEDIT.SET.WINDOW.EXTENT \TEDIT.SHRINK.ICONCREATE \TEDIT.SHRINKFN \TEDIT.PANEREGION) (* ;; "Button events") @@ -815,6 +815,22 @@ MOUSEREGION 'TEXT]) +(\TEDIT.ACTIVE.WINDOWP + [LAMBDA (W) (* ; "Edited 27-Apr-2025 13:07 by rmk") + (* ; "Edited 20-Mar-2024 09:38 by rmk") + (* ; "Edited 15-Mar-2024 18:37 by rmk") + (* ; "Edited 11-Sep-2023 00:22 by rmk") + (* ; "Edited 30-May-91 23:33 by jds") + + (* ;; "This is called by TEDIT-PROCESS-KILLER.") + + (* ;; "Decides whether a TEdit window is really in use. The function TEDIT will set the TEXTOBJ prop of the window to T pro tem, to reserve a window. Once the TEdit has really started, the TEXTOBJ property will be a real textobj.") + + (LET ((TEXTOBJ (TEXTOBJ W T))) + (AND (type? TEXTOBJ TEXTOBJ) + (NOT (fetch (TEXTOBJ EDITFINISHEDFLG) of TEXTOBJ)) + (PROCESSP (WINDOWPROP W 'PROCESS]) + (\TEDIT.EXPANDFN [LAMBDA (W) (* jds " 7-May-85 15:56") (* steals back the tty for us when the @@ -3559,35 +3575,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17040 17936 (TEDIT.DEFER.UPDATES 17050 . 17934)) (17937 43358 (\TEDIT.WINDOW.CREATE -17947 . 24967) (\TEDIT.WINDOW.GETREGION 24969 . 28459) (\TEDIT.WINDOW.SETUP 28461 . 32683) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32685 . 40096) (\TEDIT.CLEARPANE 40098 . 40815) (\TEDIT.FILL.PANES 40817 - . 43356)) (43359 65414 (\TEDIT.CURSORMOVEDFN 43369 . 48376) (\TEDIT.CURSOROUTFN 48378 . 48823) ( -\TEDIT.EXPANDFN 48825 . 49388) (\TEDIT.MAINW 49390 . 50670) (\TEDIT.MAINSTREAM 50672 . 51006) ( -\TEDIT.PRIMARYPANE 51008 . 51778) (\TEDIT.PANELIST 51780 . 52276) (\TEDIT.NEWREGIONFN 52278 . 54794) ( -\TEDIT.SET.WINDOW.EXTENT 54796 . 60050) (\TEDIT.SHRINK.ICONCREATE 60052 . 62785) (\TEDIT.SHRINKFN -62787 . 63196) (\TEDIT.PANEREGION 63198 . 65412)) (65446 98071 (\TEDIT.BUTTONEVENTFN 65456 . 78328) ( -\TEDIT.BUTTONEVENTFN.DOOPERATION 78330 . 85384) (\TEDIT.BUTTONEVENTFN.GETOPERATION 85386 . 87228) ( -\TEDIT.BUTTONEVENTFN.CURSEL.INIT 87230 . 90795) (\TEDIT.BUTTONEVENTFN.INACTIVE 90797 . 93221) ( -\TEDIT.BUTTONEVENTFN.INTITLE 93223 . 95058) (\TEDIT.COPYINSERTFN 95060 . 96192) (\TEDIT.FOREIGN.COPY -96194 . 98069)) (98072 115153 (\TEDIT.PANE.SPLIT 98082 . 102030) (\TEDIT.SPLITW 102032 . 109390) ( -\TEDIT.UNSPLITW 109392 . 113810) (\TEDIT.LINKPANES 113812 . 114575) (\TEDIT.UNLINKPANE 114577 . 115151 -)) (116587 117478 (TEDITWINDOWP 116597 . 117476)) (117515 120618 (TEDIT.GETINPUT 117525 . 119968) ( -\TEDIT.MAKEFILENAME 119970 . 120616)) (120667 128294 (TEDIT.PROMPTWINDOW 120677 . 120991) ( -TEDIT.PROMPTPRINT 120993 . 123620) (TEDIT.PROMPTCLEAR 123622 . 125341) (TEDIT.PROMPTFLASH 125343 . -126601) (\TEDIT.PROMPT.PAGEFULLFN 126603 . 128292)) (128532 138364 (\TEDIT.FILENAME 128542 . 129314) ( -\TEDIT.DEFAULT.TITLE 129316 . 131695) (\TEDIT.WINDOW.TITLE 131697 . 133866) (\TEDIT.LIKELY.FILENAME -133868 . 135846) (\TEDIT.UPDATE.TITLE 135848 . 138362)) (138407 149786 (TEDIT.DEACTIVATE.WINDOW 138417 - . 145014) (\TEDIT.RESHAPEFN 145016 . 147101) (\TEDIT.REPAINTFN 147103 . 147327) (\TEDIT.CLOSEPANES -147329 . 149784)) (149787 192586 (\TEDIT.SCROLLFN 149797 . 152028) (\TEDIT.SCROLLCH.TOP 152030 . -154141) (\TEDIT.SCROLLCH.BOTTOM 154143 . 158473) (\TEDIT.SCROLLUP 158475 . 164201) ( -\TEDIT.TOPLINE.YTOP 164203 . 165872) (\TEDIT.SCROLLDOWN 165874 . 172913) (\TEDIT.SCROLL.CARET 172915 - . 175753) (\TEDIT.VISIBLECARETP 175755 . 178049) (\TEDIT.VISIBLECHARP 178051 . 179142) ( -\TEDIT.BITMAPLINES 179144 . 183064) (\TEDIT.SETPANE.TOPLINE 183066 . 183678) (\TEDIT.SHIFTLINES 183680 - . 192584)) (192587 203456 (\TEDIT.ONSCREEN? 192597 . 197148) (\TEDIT.ONSCREEN.REGION 197150 . 200801) - (\TEDIT.AFTERMOVEFN 200803 . 201700) (OFFSCREENP 201702 . 203454)) (203498 206312 (\TEDIT.PROCIDLEFN -203508 . 205168) (\TEDIT.PROCENTRYFN 205170 . 205615) (\TEDIT.PROCEXITFN 205617 . 206310)) (206391 -219616 (\TEDIT.DOWNCARET 206401 . 207194) (\TEDIT.FLASHCARET 207196 . 209307) (\TEDIT.UPCARET 209309 - . 210413) (TEDIT.NORMALIZECARET 210415 . 213633) (\TEDIT.SETCARET 213635 . 218986) (\TEDIT.CARET -218988 . 219614))))) + (FILEMAP (NIL (17063 17959 (TEDIT.DEFER.UPDATES 17073 . 17957)) (17960 43381 (\TEDIT.WINDOW.CREATE +17970 . 24990) (\TEDIT.WINDOW.GETREGION 24992 . 28482) (\TEDIT.WINDOW.SETUP 28484 . 32706) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32708 . 40119) (\TEDIT.CLEARPANE 40121 . 40838) (\TEDIT.FILL.PANES 40840 + . 43379)) (43382 66509 (\TEDIT.CURSORMOVEDFN 43392 . 48399) (\TEDIT.CURSOROUTFN 48401 . 48846) ( +\TEDIT.ACTIVE.WINDOWP 48848 . 49918) (\TEDIT.EXPANDFN 49920 . 50483) (\TEDIT.MAINW 50485 . 51765) ( +\TEDIT.MAINSTREAM 51767 . 52101) (\TEDIT.PRIMARYPANE 52103 . 52873) (\TEDIT.PANELIST 52875 . 53371) ( +\TEDIT.NEWREGIONFN 53373 . 55889) (\TEDIT.SET.WINDOW.EXTENT 55891 . 61145) (\TEDIT.SHRINK.ICONCREATE +61147 . 63880) (\TEDIT.SHRINKFN 63882 . 64291) (\TEDIT.PANEREGION 64293 . 66507)) (66541 99166 ( +\TEDIT.BUTTONEVENTFN 66551 . 79423) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79425 . 86479) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 86481 . 88323) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88325 . 91890) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 91892 . 94316) (\TEDIT.BUTTONEVENTFN.INTITLE 94318 . 96153) ( +\TEDIT.COPYINSERTFN 96155 . 97287) (\TEDIT.FOREIGN.COPY 97289 . 99164)) (99167 116248 ( +\TEDIT.PANE.SPLIT 99177 . 103125) (\TEDIT.SPLITW 103127 . 110485) (\TEDIT.UNSPLITW 110487 . 114905) ( +\TEDIT.LINKPANES 114907 . 115670) (\TEDIT.UNLINKPANE 115672 . 116246)) (117682 118573 (TEDITWINDOWP +117692 . 118571)) (118610 121713 (TEDIT.GETINPUT 118620 . 121063) (\TEDIT.MAKEFILENAME 121065 . 121711 +)) (121762 129389 (TEDIT.PROMPTWINDOW 121772 . 122086) (TEDIT.PROMPTPRINT 122088 . 124715) ( +TEDIT.PROMPTCLEAR 124717 . 126436) (TEDIT.PROMPTFLASH 126438 . 127696) (\TEDIT.PROMPT.PAGEFULLFN +127698 . 129387)) (129627 139459 (\TEDIT.FILENAME 129637 . 130409) (\TEDIT.DEFAULT.TITLE 130411 . +132790) (\TEDIT.WINDOW.TITLE 132792 . 134961) (\TEDIT.LIKELY.FILENAME 134963 . 136941) ( +\TEDIT.UPDATE.TITLE 136943 . 139457)) (139502 150881 (TEDIT.DEACTIVATE.WINDOW 139512 . 146109) ( +\TEDIT.RESHAPEFN 146111 . 148196) (\TEDIT.REPAINTFN 148198 . 148422) (\TEDIT.CLOSEPANES 148424 . +150879)) (150882 193681 (\TEDIT.SCROLLFN 150892 . 153123) (\TEDIT.SCROLLCH.TOP 153125 . 155236) ( +\TEDIT.SCROLLCH.BOTTOM 155238 . 159568) (\TEDIT.SCROLLUP 159570 . 165296) (\TEDIT.TOPLINE.YTOP 165298 + . 166967) (\TEDIT.SCROLLDOWN 166969 . 174008) (\TEDIT.SCROLL.CARET 174010 . 176848) ( +\TEDIT.VISIBLECARETP 176850 . 179144) (\TEDIT.VISIBLECHARP 179146 . 180237) (\TEDIT.BITMAPLINES 180239 + . 184159) (\TEDIT.SETPANE.TOPLINE 184161 . 184773) (\TEDIT.SHIFTLINES 184775 . 193679)) (193682 +204551 (\TEDIT.ONSCREEN? 193692 . 198243) (\TEDIT.ONSCREEN.REGION 198245 . 201896) (\TEDIT.AFTERMOVEFN + 201898 . 202795) (OFFSCREENP 202797 . 204549)) (204593 207407 (\TEDIT.PROCIDLEFN 204603 . 206263) ( +\TEDIT.PROCENTRYFN 206265 . 206710) (\TEDIT.PROCEXITFN 206712 . 207405)) (207486 220711 ( +\TEDIT.DOWNCARET 207496 . 208289) (\TEDIT.FLASHCARET 208291 . 210402) (\TEDIT.UPCARET 210404 . 211508) + (TEDIT.NORMALIZECARET 211510 . 214728) (\TEDIT.SETCARET 214730 . 220081) (\TEDIT.CARET 220083 . +220709))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 47330ae0614e7cc8550c69a370bc2e94f293e16a..9f978bd9067cece96340617207c962b65c0ab041 100644 GIT binary patch delta 476 zcmbR6l=m8j#Ji}b|AgTitGV>Ia+(LbP6p+>H>FFscq$HN4 zreHP5&{Rp2OT*36$JIH=)e&gB0;+9L2P!F4hx@v^__#*a+T>&=6(tr`+J(qscd>$z zk*TG*>Etp-bv{%VPF}?*H`#`fYw{&VVR7vKHQM}#(OQiis&De&bh&Iz1qNM41_nll zOfCi>5M*TVI1FNJk@jE%(I*WuK5XH4-~_Yvz?1-khKZ3vK#;$)YjALYg0ZPWjHh34 zXpk!;s1(c;LR=$4{GGgjem63PaTE+EKj;(PY_1Wp2;JfBr{sjVV!%$;^K}H86#@(` P-^m9Sh-^N6>Zm#Zgl~R# delta 315 zcmX^6jCsOS<_Qs#_cMx4%vI7aNlnQtu?ul^@eI)o_w;k|57)D{FgDUu;8HR&(RC~+ z(ls(LGF31#wlX!cGBlgGPj<2gGoNc_o`RBFsE>~VvLZb_Jtc*dM4*vabsHHdX>w_} zdHT3I2e~=|t(?4vQNo})+}G8`$2GFnCMPqgD6y#04u_KzjEqbyEDR=>GpYlfz&m*j zqnwGMg_Qvi87nDp5o?a&=6{UVYMbwAL@d&DjR Date: Sun, 27 Apr 2025 22:27:33 -0700 Subject: [PATCH 13/18] Take down secondary selections --- library/tedit/TEDIT-WINDOW | 77 ++++++++++++++++---------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62285 -> 62307 bytes 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 25f9ff008..ef67ff9b7 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Apr-2025 13:08:05" {WMEDLEY}TEDIT>TEDIT-WINDOW.;833 225975 +(FILECREATED "27-Apr-2025 22:26:32" {WMEDLEY}tedit>TEDIT-WINDOW.;834 226083 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.ACTIVE.WINDOWP) + :CHANGES-TO (FNS \TEDIT.BUTTONEVENTFN.DOOPERATION) - :PREVIOUS-DATE "25-Apr-2025 21:24:31" {WMEDLEY}TEDIT>TEDIT-WINDOW.;832) + :PREVIOUS-DATE "27-Apr-2025 13:08:05" {WMEDLEY}tedit>TEDIT-WINDOW.;833) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -1290,6 +1290,7 @@ (\TEDIT.BUTTONEVENTFN.DOOPERATION [LAMBDA (CURSEL CUROPERATION TSTREAM PANE PENDINGDEL TTYPROC) + (* ; "Edited 27-Apr-2025 22:26 by rmk") (* ; "Edited 21-Apr-2025 20:32 by rmk") (* ; "Edited 8-Apr-2025 10:03 by rmk") (* ; "Edited 6-Apr-2025 18:02 by rmk") @@ -1344,8 +1345,8 @@ (COPY (CL:IF TTYSEL (\TEDIT.COPY CURSEL TTYSEL TSTREAM TTYSTREAM) (\TEDIT.FOREIGN.COPY TTYW CURSEL TSTREAM)) - (\TEDIT.NOSEL TSTREAM NIL CURSEL)) - (MOVE (\TEDIT.NOSEL TSTREAM NIL CURSEL) + (\TEDIT.NOSEL TSTREAM CURSEL)) + (MOVE (\TEDIT.NOSEL TSTREAM CURSEL) (if TTYSEL then (\TEDIT.MOVE CURSEL TTYSEL TSTREAM TTYSTREAM) else (\TEDIT.FOREIGN.COPY TTYW CURSEL TSTREAM) @@ -1355,7 +1356,7 @@ 'RIGHT) (\TEDIT.DELETE TSTREAM CURSEL) (\TEDIT.SHOWSEL TEXTSEL T TSTREAM))) - (COPYLOOKS (\TEDIT.NOSEL TSTREAM NIL CURSEL) + (COPYLOOKS (\TEDIT.NOSEL TSTREAM CURSEL) (if TTYSEL then (if (EQ 'PARA (FGETSEL CURSEL SELKIND)) then (\TEDIT.CHANGE.PARALOOKS TTYSTREAM @@ -3575,36 +3576,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17063 17959 (TEDIT.DEFER.UPDATES 17073 . 17957)) (17960 43381 (\TEDIT.WINDOW.CREATE -17970 . 24990) (\TEDIT.WINDOW.GETREGION 24992 . 28482) (\TEDIT.WINDOW.SETUP 28484 . 32706) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32708 . 40119) (\TEDIT.CLEARPANE 40121 . 40838) (\TEDIT.FILL.PANES 40840 - . 43379)) (43382 66509 (\TEDIT.CURSORMOVEDFN 43392 . 48399) (\TEDIT.CURSOROUTFN 48401 . 48846) ( -\TEDIT.ACTIVE.WINDOWP 48848 . 49918) (\TEDIT.EXPANDFN 49920 . 50483) (\TEDIT.MAINW 50485 . 51765) ( -\TEDIT.MAINSTREAM 51767 . 52101) (\TEDIT.PRIMARYPANE 52103 . 52873) (\TEDIT.PANELIST 52875 . 53371) ( -\TEDIT.NEWREGIONFN 53373 . 55889) (\TEDIT.SET.WINDOW.EXTENT 55891 . 61145) (\TEDIT.SHRINK.ICONCREATE -61147 . 63880) (\TEDIT.SHRINKFN 63882 . 64291) (\TEDIT.PANEREGION 64293 . 66507)) (66541 99166 ( -\TEDIT.BUTTONEVENTFN 66551 . 79423) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79425 . 86479) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 86481 . 88323) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88325 . 91890) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 91892 . 94316) (\TEDIT.BUTTONEVENTFN.INTITLE 94318 . 96153) ( -\TEDIT.COPYINSERTFN 96155 . 97287) (\TEDIT.FOREIGN.COPY 97289 . 99164)) (99167 116248 ( -\TEDIT.PANE.SPLIT 99177 . 103125) (\TEDIT.SPLITW 103127 . 110485) (\TEDIT.UNSPLITW 110487 . 114905) ( -\TEDIT.LINKPANES 114907 . 115670) (\TEDIT.UNLINKPANE 115672 . 116246)) (117682 118573 (TEDITWINDOWP -117692 . 118571)) (118610 121713 (TEDIT.GETINPUT 118620 . 121063) (\TEDIT.MAKEFILENAME 121065 . 121711 -)) (121762 129389 (TEDIT.PROMPTWINDOW 121772 . 122086) (TEDIT.PROMPTPRINT 122088 . 124715) ( -TEDIT.PROMPTCLEAR 124717 . 126436) (TEDIT.PROMPTFLASH 126438 . 127696) (\TEDIT.PROMPT.PAGEFULLFN -127698 . 129387)) (129627 139459 (\TEDIT.FILENAME 129637 . 130409) (\TEDIT.DEFAULT.TITLE 130411 . -132790) (\TEDIT.WINDOW.TITLE 132792 . 134961) (\TEDIT.LIKELY.FILENAME 134963 . 136941) ( -\TEDIT.UPDATE.TITLE 136943 . 139457)) (139502 150881 (TEDIT.DEACTIVATE.WINDOW 139512 . 146109) ( -\TEDIT.RESHAPEFN 146111 . 148196) (\TEDIT.REPAINTFN 148198 . 148422) (\TEDIT.CLOSEPANES 148424 . -150879)) (150882 193681 (\TEDIT.SCROLLFN 150892 . 153123) (\TEDIT.SCROLLCH.TOP 153125 . 155236) ( -\TEDIT.SCROLLCH.BOTTOM 155238 . 159568) (\TEDIT.SCROLLUP 159570 . 165296) (\TEDIT.TOPLINE.YTOP 165298 - . 166967) (\TEDIT.SCROLLDOWN 166969 . 174008) (\TEDIT.SCROLL.CARET 174010 . 176848) ( -\TEDIT.VISIBLECARETP 176850 . 179144) (\TEDIT.VISIBLECHARP 179146 . 180237) (\TEDIT.BITMAPLINES 180239 - . 184159) (\TEDIT.SETPANE.TOPLINE 184161 . 184773) (\TEDIT.SHIFTLINES 184775 . 193679)) (193682 -204551 (\TEDIT.ONSCREEN? 193692 . 198243) (\TEDIT.ONSCREEN.REGION 198245 . 201896) (\TEDIT.AFTERMOVEFN - 201898 . 202795) (OFFSCREENP 202797 . 204549)) (204593 207407 (\TEDIT.PROCIDLEFN 204603 . 206263) ( -\TEDIT.PROCENTRYFN 206265 . 206710) (\TEDIT.PROCEXITFN 206712 . 207405)) (207486 220711 ( -\TEDIT.DOWNCARET 207496 . 208289) (\TEDIT.FLASHCARET 208291 . 210402) (\TEDIT.UPCARET 210404 . 211508) - (TEDIT.NORMALIZECARET 211510 . 214728) (\TEDIT.SETCARET 214730 . 220081) (\TEDIT.CARET 220083 . -220709))))) + (FILEMAP (NIL (17074 17970 (TEDIT.DEFER.UPDATES 17084 . 17968)) (17971 43392 (\TEDIT.WINDOW.CREATE +17981 . 25001) (\TEDIT.WINDOW.GETREGION 25003 . 28493) (\TEDIT.WINDOW.SETUP 28495 . 32717) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32719 . 40130) (\TEDIT.CLEARPANE 40132 . 40849) (\TEDIT.FILL.PANES 40851 + . 43390)) (43393 66520 (\TEDIT.CURSORMOVEDFN 43403 . 48410) (\TEDIT.CURSOROUTFN 48412 . 48857) ( +\TEDIT.ACTIVE.WINDOWP 48859 . 49929) (\TEDIT.EXPANDFN 49931 . 50494) (\TEDIT.MAINW 50496 . 51776) ( +\TEDIT.MAINSTREAM 51778 . 52112) (\TEDIT.PRIMARYPANE 52114 . 52884) (\TEDIT.PANELIST 52886 . 53382) ( +\TEDIT.NEWREGIONFN 53384 . 55900) (\TEDIT.SET.WINDOW.EXTENT 55902 . 61156) (\TEDIT.SHRINK.ICONCREATE +61158 . 63891) (\TEDIT.SHRINKFN 63893 . 64302) (\TEDIT.PANEREGION 64304 . 66518)) (66552 99274 ( +\TEDIT.BUTTONEVENTFN 66562 . 79434) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79436 . 86587) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 86589 . 88431) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88433 . 91998) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 92000 . 94424) (\TEDIT.BUTTONEVENTFN.INTITLE 94426 . 96261) ( +\TEDIT.COPYINSERTFN 96263 . 97395) (\TEDIT.FOREIGN.COPY 97397 . 99272)) (99275 116356 ( +\TEDIT.PANE.SPLIT 99285 . 103233) (\TEDIT.SPLITW 103235 . 110593) (\TEDIT.UNSPLITW 110595 . 115013) ( +\TEDIT.LINKPANES 115015 . 115778) (\TEDIT.UNLINKPANE 115780 . 116354)) (117790 118681 (TEDITWINDOWP +117800 . 118679)) (118718 121821 (TEDIT.GETINPUT 118728 . 121171) (\TEDIT.MAKEFILENAME 121173 . 121819 +)) (121870 129497 (TEDIT.PROMPTWINDOW 121880 . 122194) (TEDIT.PROMPTPRINT 122196 . 124823) ( +TEDIT.PROMPTCLEAR 124825 . 126544) (TEDIT.PROMPTFLASH 126546 . 127804) (\TEDIT.PROMPT.PAGEFULLFN +127806 . 129495)) (129735 139567 (\TEDIT.FILENAME 129745 . 130517) (\TEDIT.DEFAULT.TITLE 130519 . +132898) (\TEDIT.WINDOW.TITLE 132900 . 135069) (\TEDIT.LIKELY.FILENAME 135071 . 137049) ( +\TEDIT.UPDATE.TITLE 137051 . 139565)) (139610 150989 (TEDIT.DEACTIVATE.WINDOW 139620 . 146217) ( +\TEDIT.RESHAPEFN 146219 . 148304) (\TEDIT.REPAINTFN 148306 . 148530) (\TEDIT.CLOSEPANES 148532 . +150987)) (150990 193789 (\TEDIT.SCROLLFN 151000 . 153231) (\TEDIT.SCROLLCH.TOP 153233 . 155344) ( +\TEDIT.SCROLLCH.BOTTOM 155346 . 159676) (\TEDIT.SCROLLUP 159678 . 165404) (\TEDIT.TOPLINE.YTOP 165406 + . 167075) (\TEDIT.SCROLLDOWN 167077 . 174116) (\TEDIT.SCROLL.CARET 174118 . 176956) ( +\TEDIT.VISIBLECARETP 176958 . 179252) (\TEDIT.VISIBLECHARP 179254 . 180345) (\TEDIT.BITMAPLINES 180347 + . 184267) (\TEDIT.SETPANE.TOPLINE 184269 . 184881) (\TEDIT.SHIFTLINES 184883 . 193787)) (193790 +204659 (\TEDIT.ONSCREEN? 193800 . 198351) (\TEDIT.ONSCREEN.REGION 198353 . 202004) (\TEDIT.AFTERMOVEFN + 202006 . 202903) (OFFSCREENP 202905 . 204657)) (204701 207515 (\TEDIT.PROCIDLEFN 204711 . 206371) ( +\TEDIT.PROCENTRYFN 206373 . 206818) (\TEDIT.PROCEXITFN 206820 . 207513)) (207594 220819 ( +\TEDIT.DOWNCARET 207604 . 208397) (\TEDIT.FLASHCARET 208399 . 210510) (\TEDIT.UPCARET 210512 . 211616) + (TEDIT.NORMALIZECARET 211618 . 214836) (\TEDIT.SETCARET 214838 . 220189) (\TEDIT.CARET 220191 . +220817))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 9f978bd9067cece96340617207c962b65c0ab041..1256dd14c6177c384094cd764152123867de8b60 100644 GIT binary patch delta 294 zcmX^6jQR01<_XChMn+afW>&^V6SGzHOHxxZOYA~iT|7f{!#(|6{KNIEEsRYx6}Xg) z%yk_Ligb+(j7${_jjc?~tqcq%?vtH7!-j8iuO-jKS5h)uDTzP>6tF2Zo21q8W$*6G zxK7q*l+fZL)=1;c{}^)|BpfoFGI$t(U?aoTbP)YvlN(5Ea+8xM3y87#yi?r<09|}n AO#lD@ delta 334 zcmaF-jQQ*{<_XChhQ?L~7FGtP6SGzHLtI@vL+rq$Zn&qPi+{MDwS}>_ zQ-q6+46Teztc(qn6u7FxeO+CATqA33ax#;O5{oJ!{>AXM(Pj~*90!Sv6ekBB1|ZnT aa5Wu7f7s*(5}Q23$&&@d*! Date: Sun, 27 Apr 2025 23:56:23 -0700 Subject: [PATCH 14/18] Eliminate error on quitting --- library/tedit/TEDIT | 61 +++++----- library/tedit/TEDIT-WINDOW | 193 +++++++++++++++++--------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62307 -> 62438 bytes library/tedit/TEDIT.LCOM | Bin 32921 -> 32923 bytes 4 files changed, 131 insertions(+), 123 deletions(-) diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index 94bb2110d..3715f30fe 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "26-Apr-2025 11:46:44" {WMEDLEY}TEDIT>TEDIT.;827 144937 +(FILECREATED "27-Apr-2025 23:54:08" {WMEDLEY}tedit>TEDIT.;828 145045 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.PARA.FIRST) + :CHANGES-TO (FNS \TEDIT.FINISHEDIT?) - :PREVIOUS-DATE "25-Apr-2025 18:07:26" {WMEDLEY}TEDIT>TEDIT.;826) + :PREVIOUS-DATE "26-Apr-2025 11:46:44" {WMEDLEY}tedit>TEDIT.;827) (PRETTYCOMPRINT TEDITCOMS) @@ -1973,7 +1973,8 @@ (\TEDIT.DELETE TSTREAM FIRSTNO (ADD1 (IDIFFERENCE LASTNO FIRSTNO))))]) (\TEDIT.FINISHEDIT? - [LAMBDA (TSTREAM NOFORCE) (* ; "Edited 19-Apr-2025 10:47 by rmk") + [LAMBDA (TSTREAM NOFORCE) (* ; "Edited 27-Apr-2025 23:53 by rmk") + (* ; "Edited 19-Apr-2025 10:47 by rmk") (* ; "Edited 14-Jul-2024 12:25 by rmk") (* ; "Edited 1-Jul-2024 16:11 by rmk") (* ; "Edited 30-Jun-2024 12:36 by rmk") @@ -1985,9 +1986,9 @@ (* ; "Edited 20-Sep-2023 23:24 by rmk") (* ; "Edited 12-Jun-90 17:50 by mitani") - (* ;; "Called to determine whether the edit in TSTREAM can be terminated. If there are no active operations and non of the QUITFNS (if any) returns DON'T, then the stream EDITFINISHEDFLG is set to T and NIL is returned. Setting the flag to T will allow the edit process to terminate.") + (* ;; "Called to determine whether the edit in TSTREAM can be terminated. If there are no active operations and non of the QUITFNS (if any) returns DON'T, then the stream EDITFINISHEDFLG is set to T and T is returned. Setting the flag to T allows the edit process to terminate.") - (* ;; "Otherwise, the return value is DON'T, so that this can be used by itself to guard closing as a CLOSEWFN.") + (* ;; "Otherwise, the return value is DON'T, so that this can be used by itself to guard closing as a window CLOSEFN.") (* ;; "Menus can always be closed.") @@ -2042,7 +2043,7 @@ 'WINDOW] (TTY.PROCESS (WINDOWPROP PRIMPANE 'PROCESS))) (FSETTOBJ TEXTOBJ EDITFINISHEDFLG T) - (RETURN NIL]) + (RETURN T]) ) (DEFINEQ @@ -2306,7 +2307,7 @@ (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "26-Apr-2025 11:46:44") +(RPAQQ TEDITSYSTEMDATE "27-Apr-2025 23:54:08") @@ -2316,26 +2317,26 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4818 7212 (MAKE-TEDIT-EXPORTS.ALL 4828 . 5374) (UPDATE-TEDIT 5376 . 6305) (EDIT-TEDIT -6307 . 7210)) (8642 36598 (TEDIT 8652 . 11230) (TEXTSTREAM 11232 . 13121) (TEXTSTREAMP 13123 . 13507) -(COERCETEXTSTREAM 13509 . 17720) (TEDIT.CONCAT 17722 . 21024) (TEDITSTRING 21026 . 21940) (TEDIT-SEE -21942 . 22501) (TEDIT.COPY 22503 . 24648) (TEDIT.DELETE 24650 . 26011) (TEDIT.INSERT 26013 . 29387) ( -TEDIT.TERPRI 29389 . 30503) (TEDIT.KILL 30505 . 31421) (TEDIT.QUIT 31423 . 32789) (TEDIT.MOVE 32791 . -33679) (TEDIT.STRINGWIDTH 33681 . 34352) (TEDIT.CHARWIDTH 34354 . 36596)) (36599 38540 (TEXTOBJ 36609 - . 37074) (COERCETEXTOBJ 37076 . 38538)) (39940 41590 (TDRIBBLE 39950 . 41588)) (41631 54616 ( -TEDIT.INSERT.OBJECT 41641 . 46657) (TEDIT.EDIT.OBJECT 46659 . 49488) (TEDIT.OBJECT.CHANGED 49490 . -52571) (TEDIT.MAP.OBJECTS 52573 . 54144) (\TEDIT.FIRST.OBJPIECE 54146 . 54379) (\TEDIT.NEXT.OBJPIECE -54381 . 54614)) (54639 62082 (\TEDIT.CONCAT.PAGEFRAMES 54649 . 59716) (\TEDIT.GET.PAGE.HEADINGS 59718 - . 60747) (\TEDIT.CONCAT.INSTALL.HEADINGS 60749 . 62080)) (62083 65690 (\TEDIT.MOVE.MSG 62093 . 64174) - (\TEDIT.READONLY 64176 . 65688)) (65691 71466 (TEDIT.NCHARS 65701 . 66074) (TEDIT.RPLCHARCODE 66076 - . 69066) (TEDIT.NTHCHARCODE 69068 . 70995) (TEDIT.NTHCHAR 70997 . 71464)) (71512 127761 (\TEDIT1 -71522 . 73599) (\TEDIT.INSERT 73601 . 79862) (\TEDIT.MOVE 79864 . 87666) (\TEDIT.COPY 87668 . 92097) ( -\TEDIT.REPLACE.SELPIECES 92099 . 96421) (\TEDIT.INSERT.SELPIECES 96423 . 99420) (\TEDIT.RESTARTFN -99422 . 101927) (\TEDIT.CHARDELETE 101929 . 104858) (\TEDIT.COPYPIECE 104860 . 109873) ( -\TEDIT.APPLY.OBJFN 109875 . 112961) (\TEDIT.DELETE 112963 . 117331) (\TEDIT.DIFFUSE.PARALOOKS 117333 - . 119604) (\TEDIT.WORDDELETE 119606 . 121221) (\TEDIT.WORDDELETE.FORWARD 121223 . 123012) ( -\TEDIT.FINISHEDIT? 123014 . 127759)) (127762 128421 (\TEDIT.THELP 127772 . 128419)) (128455 137360 ( -\TEDIT.PARAPIECES 128465 . 130439) (\TEDIT.PARACHNOS 130441 . 131333) (\TEDIT.PARA.FIRST 131335 . -134323) (\TEDIT.PARA.LAST 134325 . 137358)) (137361 144456 (\TEDIT.WORD.FIRST 137371 . 141375) ( -\TEDIT.WORD.LAST 141377 . 144454))))) + (FILEMAP (NIL (4819 7213 (MAKE-TEDIT-EXPORTS.ALL 4829 . 5375) (UPDATE-TEDIT 5377 . 6306) (EDIT-TEDIT +6308 . 7211)) (8643 36599 (TEDIT 8653 . 11231) (TEXTSTREAM 11233 . 13122) (TEXTSTREAMP 13124 . 13508) +(COERCETEXTSTREAM 13510 . 17721) (TEDIT.CONCAT 17723 . 21025) (TEDITSTRING 21027 . 21941) (TEDIT-SEE +21943 . 22502) (TEDIT.COPY 22504 . 24649) (TEDIT.DELETE 24651 . 26012) (TEDIT.INSERT 26014 . 29388) ( +TEDIT.TERPRI 29390 . 30504) (TEDIT.KILL 30506 . 31422) (TEDIT.QUIT 31424 . 32790) (TEDIT.MOVE 32792 . +33680) (TEDIT.STRINGWIDTH 33682 . 34353) (TEDIT.CHARWIDTH 34355 . 36597)) (36600 38541 (TEXTOBJ 36610 + . 37075) (COERCETEXTOBJ 37077 . 38539)) (39941 41591 (TDRIBBLE 39951 . 41589)) (41632 54617 ( +TEDIT.INSERT.OBJECT 41642 . 46658) (TEDIT.EDIT.OBJECT 46660 . 49489) (TEDIT.OBJECT.CHANGED 49491 . +52572) (TEDIT.MAP.OBJECTS 52574 . 54145) (\TEDIT.FIRST.OBJPIECE 54147 . 54380) (\TEDIT.NEXT.OBJPIECE +54382 . 54615)) (54640 62083 (\TEDIT.CONCAT.PAGEFRAMES 54650 . 59717) (\TEDIT.GET.PAGE.HEADINGS 59719 + . 60748) (\TEDIT.CONCAT.INSTALL.HEADINGS 60750 . 62081)) (62084 65691 (\TEDIT.MOVE.MSG 62094 . 64175) + (\TEDIT.READONLY 64177 . 65689)) (65692 71467 (TEDIT.NCHARS 65702 . 66075) (TEDIT.RPLCHARCODE 66077 + . 69067) (TEDIT.NTHCHARCODE 69069 . 70996) (TEDIT.NTHCHAR 70998 . 71465)) (71513 127869 (\TEDIT1 +71523 . 73600) (\TEDIT.INSERT 73602 . 79863) (\TEDIT.MOVE 79865 . 87667) (\TEDIT.COPY 87669 . 92098) ( +\TEDIT.REPLACE.SELPIECES 92100 . 96422) (\TEDIT.INSERT.SELPIECES 96424 . 99421) (\TEDIT.RESTARTFN +99423 . 101928) (\TEDIT.CHARDELETE 101930 . 104859) (\TEDIT.COPYPIECE 104861 . 109874) ( +\TEDIT.APPLY.OBJFN 109876 . 112962) (\TEDIT.DELETE 112964 . 117332) (\TEDIT.DIFFUSE.PARALOOKS 117334 + . 119605) (\TEDIT.WORDDELETE 119607 . 121222) (\TEDIT.WORDDELETE.FORWARD 121224 . 123013) ( +\TEDIT.FINISHEDIT? 123015 . 127867)) (127870 128529 (\TEDIT.THELP 127880 . 128527)) (128563 137468 ( +\TEDIT.PARAPIECES 128573 . 130547) (\TEDIT.PARACHNOS 130549 . 131441) (\TEDIT.PARA.FIRST 131443 . +134431) (\TEDIT.PARA.LAST 134433 . 137466)) (137469 144564 (\TEDIT.WORD.FIRST 137479 . 141483) ( +\TEDIT.WORD.LAST 141485 . 144562))))) STOP diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index ef67ff9b7..b2aeef596 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,10 +1,10 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Apr-2025 22:26:32" {WMEDLEY}tedit>TEDIT-WINDOW.;834 226083 +(FILECREATED "27-Apr-2025 23:53:42" {WMEDLEY}tedit>TEDIT-WINDOW.;835 226906 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.BUTTONEVENTFN.DOOPERATION) + :CHANGES-TO (FNS \TEDIT.CURSORMOVEDFN TEDIT.DEACTIVATE.WINDOW \TEDIT.BUTTONEVENTFN.DOOPERATION) :PREVIOUS-DATE "27-Apr-2025 13:08:05" {WMEDLEY}tedit>TEDIT-WINDOW.;833) @@ -729,7 +729,8 @@ (DEFINEQ (\TEDIT.CURSORMOVEDFN - [LAMBDA (PANE) (* ; "Edited 24-Apr-2025 10:35 by rmk") + [LAMBDA (PANE) (* ; "Edited 27-Apr-2025 23:43 by rmk") + (* ; "Edited 24-Apr-2025 10:35 by rmk") (* ; "Edited 19-Apr-2025 22:22 by rmk") (* ; "Edited 1-Dec-2024 11:55 by rmk") (* ; "Edited 22-Nov-2024 23:53 by rmk") @@ -743,66 +744,70 @@ (* ;; "Watch the mouse and change the cursor to reflect the region of the pane it's in (line select, pane split eventually?)") - (PROG ((X (LASTMOUSEX PANE)) - (Y (LASTMOUSEY PANE)) - (TEXTOBJ (PANETEXTOBJ PANE)) - (CURSORREG (fetch (TEXTWINDOW CURSORREGION) of (PANEWINDOW PANE))) - LINE LEFT) - (CL:UNLESS (INSIDE? (PANEREGION PANE) - X Y) - (CURSOR T) - (RETURN)) - (CL:UNLESS (INSIDE? CURSORREG X Y) - [if [AND (IGEQ X (SETQ LEFT (IDIFFERENCE (PANERIGHT PANE) - \TEDIT.OP.WIDTH))) - (IGEQ Y (IPLUS (PANEBOTTOM PANE) - \TEDIT.OP.BOTTOM)) - (NOT (OR (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) - (EQ \TEDIT.OP.WIDTH -1] - then - (* ;; "We're in the split region on the right") - - (CURSOR \TEDIT.SPLITCURSOR) - (FSETTOBJ TEXTOBJ MOUSEREGION 'PANE) (* ; - "PANE just signals \TEDIT.BUTTONEVENTFN to do a split operation.") - (replace (REGION LEFT) of CURSORREG with LEFT) - (replace (REGION WIDTH) of CURSORREG with \TEDIT.OP.WIDTH) - else - (* ;; "Not in the split region. Are we in the line-select region on the left? Don't call PANEPREFIX, because that tests for LINEDESCRIPTOR") - - (SETQ LINE (find L inlines (GETPANEPROP (PANEPROPS PANE) - PREFIXLINE) - suchthat (ILEQ (FGETLD L YBOT) - Y))) - (CL:WHEN LINE (* ; - "The CURSORREGION picks out just LINE") - (replace BOTTOM of CURSORREG with (FGETLD LINE YBOT)) - (replace HEIGHT of CURSORREG with (FGETLD LINE LHEIGHT))) - - (* ;; "The line region gets wider if the paragraph is indented") + (CL:WHEN (fetch (TEXTWINDOW WTEXTSTREAM) of (OR (WINDOWP PANE) + (PANEWINDOW PANE))) + [PROG ((X (LASTMOUSEX PANE)) + (Y (LASTMOUSEY PANE)) + (TEXTOBJ (PANETEXTOBJ PANE)) + (CURSORREG (fetch (TEXTWINDOW CURSORREGION) of (PANEWINDOW PANE))) + LINE LEFT) + (CL:UNLESS (INSIDE? (PANEREGION PANE) + X Y) + (CURSOR T) + (RETURN)) + (CL:UNLESS (INSIDE? CURSORREG X Y) + [if [AND (IGEQ X (SETQ LEFT (IDIFFERENCE (PANERIGHT PANE) + \TEDIT.OP.WIDTH))) + (IGEQ Y (IPLUS (PANEBOTTOM PANE) + \TEDIT.OP.BOTTOM)) + (NOT (OR (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) + (EQ \TEDIT.OP.WIDTH -1] + then + (* ;; "We're in the split region on the right") - (SETQ LEFT (OR (AND LINE (FGETLD LINE LEFTMARGIN)) - (IPLUS (PANELEFT PANE) - \TEDIT.LINEREGION.WIDTH))) - (if (ILESSP X LEFT) - then - (* ;; "In left margin; switch to the line-select cursor") + (CURSOR \TEDIT.SPLITCURSOR) + (FSETTOBJ TEXTOBJ MOUSEREGION 'PANE) + (* ; + "PANE just signals \TEDIT.BUTTONEVENTFN to do a split operation.") + (replace (REGION LEFT) of CURSORREG with LEFT) + (replace (REGION WIDTH) of CURSORREG with \TEDIT.OP.WIDTH) + else + (* ;; "Not in the split region. Are we in the line-select region on the left? Don't call PANEPREFIX, because that tests for LINEDESCRIPTOR") - (CURSOR \TEDIT.LINECURSOR) - (FSETTOBJ TEXTOBJ MOUSEREGION 'LINE) - (replace (REGION LEFT) of CURSORREG with 0) - (replace (REGION WIDTH) of CURSORREG with LEFT) - else - (* ;; + (SETQ LINE (find L inlines (GETPANEPROP (PANEPROPS PANE) + PREFIXLINE) + suchthat (ILEQ (FGETLD L YBOT) + Y))) + (CL:WHEN LINE (* ; + "The CURSORREGION picks out just LINE") + (replace BOTTOM of CURSORREG with (FGETLD LINE YBOT)) + (replace HEIGHT of CURSORREG with (FGETLD LINE LHEIGHT))) + + (* ;; "The line region gets wider if the paragraph is indented") + + (SETQ LEFT (OR (AND LINE (FGETLD LINE LEFTMARGIN)) + (IPLUS (PANELEFT PANE) + \TEDIT.LINEREGION.WIDTH))) + (if (ILESSP X LEFT) + then + (* ;; "In left margin; switch to the line-select cursor") + + (CURSOR \TEDIT.LINECURSOR) + (FSETTOBJ TEXTOBJ MOUSEREGION 'LINE) + (replace (REGION LEFT) of CURSORREG with 0) + (replace (REGION WIDTH) of CURSORREG with LEFT) + else + (* ;;  "Not in the line-select region, not in the split region, must be the main text. ") - (CURSOR T) - (FSETTOBJ TEXTOBJ MOUSEREGION 'TEXT) - (replace (REGION LEFT) of CURSORREG with LEFT) - (replace (REGION WIDTH) of CURSORREG with (IDIFFERENCE (PANERIGHT PANE) - (IPLUS LEFT + (CURSOR T) + (FSETTOBJ TEXTOBJ MOUSEREGION 'TEXT) + (replace (REGION LEFT) of CURSORREG with LEFT) + (replace (REGION WIDTH) of CURSORREG with (IDIFFERENCE (PANERIGHT + PANE) + (IPLUS LEFT \TEDIT.LINEREGION.WIDTH - ])]) + ])])]) (\TEDIT.CURSOROUTFN [LAMBDA (PANE) (* ; "Edited 20-Jul-2023 20:32 by rmk") @@ -2295,7 +2300,8 @@ (DEFINEQ (TEDIT.DEACTIVATE.WINDOW - [LAMBDA (PANE) (* ; "Edited 20-Apr-2025 15:10 by rmk") + [LAMBDA (PANE) (* ; "Edited 27-Apr-2025 23:35 by rmk") + (* ; "Edited 20-Apr-2025 15:10 by rmk") (* ; "Edited 14-Mar-2025 16:22 by rmk") (* ; "Edited 18-Feb-2025 23:56 by rmk") (* ; "Edited 29-Nov-2024 13:10 by rmk") @@ -2324,8 +2330,9 @@ (* ;; "Return DON'T to signal (to CLOSEW) that the window shouldn't be closed. if previously quit, the window is closed already, and would be reopened to reclose it.") - (CL:WHEN (\TEDIT.FINISHEDIT? TSTREAM T) - (RETURN 'DON'T)) + (CL:UNLESS (FGETTOBJ TEXTOBJ EDITFINISHEDFLG) + (CL:WHEN (\TEDIT.FINISHEDIT? TSTREAM T) + (RETURN 'DON'T))) (CL:UNLESS (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) (* ; "Must be a lower split window") (\TEDIT.UNSPLITW PANE) @@ -3576,36 +3583,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17074 17970 (TEDIT.DEFER.UPDATES 17084 . 17968)) (17971 43392 (\TEDIT.WINDOW.CREATE -17981 . 25001) (\TEDIT.WINDOW.GETREGION 25003 . 28493) (\TEDIT.WINDOW.SETUP 28495 . 32717) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32719 . 40130) (\TEDIT.CLEARPANE 40132 . 40849) (\TEDIT.FILL.PANES 40851 - . 43390)) (43393 66520 (\TEDIT.CURSORMOVEDFN 43403 . 48410) (\TEDIT.CURSOROUTFN 48412 . 48857) ( -\TEDIT.ACTIVE.WINDOWP 48859 . 49929) (\TEDIT.EXPANDFN 49931 . 50494) (\TEDIT.MAINW 50496 . 51776) ( -\TEDIT.MAINSTREAM 51778 . 52112) (\TEDIT.PRIMARYPANE 52114 . 52884) (\TEDIT.PANELIST 52886 . 53382) ( -\TEDIT.NEWREGIONFN 53384 . 55900) (\TEDIT.SET.WINDOW.EXTENT 55902 . 61156) (\TEDIT.SHRINK.ICONCREATE -61158 . 63891) (\TEDIT.SHRINKFN 63893 . 64302) (\TEDIT.PANEREGION 64304 . 66518)) (66552 99274 ( -\TEDIT.BUTTONEVENTFN 66562 . 79434) (\TEDIT.BUTTONEVENTFN.DOOPERATION 79436 . 86587) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 86589 . 88431) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 88433 . 91998) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 92000 . 94424) (\TEDIT.BUTTONEVENTFN.INTITLE 94426 . 96261) ( -\TEDIT.COPYINSERTFN 96263 . 97395) (\TEDIT.FOREIGN.COPY 97397 . 99272)) (99275 116356 ( -\TEDIT.PANE.SPLIT 99285 . 103233) (\TEDIT.SPLITW 103235 . 110593) (\TEDIT.UNSPLITW 110595 . 115013) ( -\TEDIT.LINKPANES 115015 . 115778) (\TEDIT.UNLINKPANE 115780 . 116354)) (117790 118681 (TEDITWINDOWP -117800 . 118679)) (118718 121821 (TEDIT.GETINPUT 118728 . 121171) (\TEDIT.MAKEFILENAME 121173 . 121819 -)) (121870 129497 (TEDIT.PROMPTWINDOW 121880 . 122194) (TEDIT.PROMPTPRINT 122196 . 124823) ( -TEDIT.PROMPTCLEAR 124825 . 126544) (TEDIT.PROMPTFLASH 126546 . 127804) (\TEDIT.PROMPT.PAGEFULLFN -127806 . 129495)) (129735 139567 (\TEDIT.FILENAME 129745 . 130517) (\TEDIT.DEFAULT.TITLE 130519 . -132898) (\TEDIT.WINDOW.TITLE 132900 . 135069) (\TEDIT.LIKELY.FILENAME 135071 . 137049) ( -\TEDIT.UPDATE.TITLE 137051 . 139565)) (139610 150989 (TEDIT.DEACTIVATE.WINDOW 139620 . 146217) ( -\TEDIT.RESHAPEFN 146219 . 148304) (\TEDIT.REPAINTFN 148306 . 148530) (\TEDIT.CLOSEPANES 148532 . -150987)) (150990 193789 (\TEDIT.SCROLLFN 151000 . 153231) (\TEDIT.SCROLLCH.TOP 153233 . 155344) ( -\TEDIT.SCROLLCH.BOTTOM 155346 . 159676) (\TEDIT.SCROLLUP 159678 . 165404) (\TEDIT.TOPLINE.YTOP 165406 - . 167075) (\TEDIT.SCROLLDOWN 167077 . 174116) (\TEDIT.SCROLL.CARET 174118 . 176956) ( -\TEDIT.VISIBLECARETP 176958 . 179252) (\TEDIT.VISIBLECHARP 179254 . 180345) (\TEDIT.BITMAPLINES 180347 - . 184267) (\TEDIT.SETPANE.TOPLINE 184269 . 184881) (\TEDIT.SHIFTLINES 184883 . 193787)) (193790 -204659 (\TEDIT.ONSCREEN? 193800 . 198351) (\TEDIT.ONSCREEN.REGION 198353 . 202004) (\TEDIT.AFTERMOVEFN - 202006 . 202903) (OFFSCREENP 202905 . 204657)) (204701 207515 (\TEDIT.PROCIDLEFN 204711 . 206371) ( -\TEDIT.PROCENTRYFN 206373 . 206818) (\TEDIT.PROCEXITFN 206820 . 207513)) (207594 220819 ( -\TEDIT.DOWNCARET 207604 . 208397) (\TEDIT.FLASHCARET 208399 . 210510) (\TEDIT.UPCARET 210512 . 211616) - (TEDIT.NORMALIZECARET 211618 . 214836) (\TEDIT.SETCARET 214838 . 220189) (\TEDIT.CARET 220191 . -220817))))) + (FILEMAP (NIL (17119 18015 (TEDIT.DEFER.UPDATES 17129 . 18013)) (18016 43437 (\TEDIT.WINDOW.CREATE +18026 . 25046) (\TEDIT.WINDOW.GETREGION 25048 . 28538) (\TEDIT.WINDOW.SETUP 28540 . 32762) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32764 . 40175) (\TEDIT.CLEARPANE 40177 . 40894) (\TEDIT.FILL.PANES 40896 + . 43435)) (43438 67168 (\TEDIT.CURSORMOVEDFN 43448 . 49058) (\TEDIT.CURSOROUTFN 49060 . 49505) ( +\TEDIT.ACTIVE.WINDOWP 49507 . 50577) (\TEDIT.EXPANDFN 50579 . 51142) (\TEDIT.MAINW 51144 . 52424) ( +\TEDIT.MAINSTREAM 52426 . 52760) (\TEDIT.PRIMARYPANE 52762 . 53532) (\TEDIT.PANELIST 53534 . 54030) ( +\TEDIT.NEWREGIONFN 54032 . 56548) (\TEDIT.SET.WINDOW.EXTENT 56550 . 61804) (\TEDIT.SHRINK.ICONCREATE +61806 . 64539) (\TEDIT.SHRINKFN 64541 . 64950) (\TEDIT.PANEREGION 64952 . 67166)) (67200 99922 ( +\TEDIT.BUTTONEVENTFN 67210 . 80082) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80084 . 87235) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 87237 . 89079) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89081 . 92646) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 92648 . 95072) (\TEDIT.BUTTONEVENTFN.INTITLE 95074 . 96909) ( +\TEDIT.COPYINSERTFN 96911 . 98043) (\TEDIT.FOREIGN.COPY 98045 . 99920)) (99923 117004 ( +\TEDIT.PANE.SPLIT 99933 . 103881) (\TEDIT.SPLITW 103883 . 111241) (\TEDIT.UNSPLITW 111243 . 115661) ( +\TEDIT.LINKPANES 115663 . 116426) (\TEDIT.UNLINKPANE 116428 . 117002)) (118438 119329 (TEDITWINDOWP +118448 . 119327)) (119366 122469 (TEDIT.GETINPUT 119376 . 121819) (\TEDIT.MAKEFILENAME 121821 . 122467 +)) (122518 130145 (TEDIT.PROMPTWINDOW 122528 . 122842) (TEDIT.PROMPTPRINT 122844 . 125471) ( +TEDIT.PROMPTCLEAR 125473 . 127192) (TEDIT.PROMPTFLASH 127194 . 128452) (\TEDIT.PROMPT.PAGEFULLFN +128454 . 130143)) (130383 140215 (\TEDIT.FILENAME 130393 . 131165) (\TEDIT.DEFAULT.TITLE 131167 . +133546) (\TEDIT.WINDOW.TITLE 133548 . 135717) (\TEDIT.LIKELY.FILENAME 135719 . 137697) ( +\TEDIT.UPDATE.TITLE 137699 . 140213)) (140258 151812 (TEDIT.DEACTIVATE.WINDOW 140268 . 147040) ( +\TEDIT.RESHAPEFN 147042 . 149127) (\TEDIT.REPAINTFN 149129 . 149353) (\TEDIT.CLOSEPANES 149355 . +151810)) (151813 194612 (\TEDIT.SCROLLFN 151823 . 154054) (\TEDIT.SCROLLCH.TOP 154056 . 156167) ( +\TEDIT.SCROLLCH.BOTTOM 156169 . 160499) (\TEDIT.SCROLLUP 160501 . 166227) (\TEDIT.TOPLINE.YTOP 166229 + . 167898) (\TEDIT.SCROLLDOWN 167900 . 174939) (\TEDIT.SCROLL.CARET 174941 . 177779) ( +\TEDIT.VISIBLECARETP 177781 . 180075) (\TEDIT.VISIBLECHARP 180077 . 181168) (\TEDIT.BITMAPLINES 181170 + . 185090) (\TEDIT.SETPANE.TOPLINE 185092 . 185704) (\TEDIT.SHIFTLINES 185706 . 194610)) (194613 +205482 (\TEDIT.ONSCREEN? 194623 . 199174) (\TEDIT.ONSCREEN.REGION 199176 . 202827) (\TEDIT.AFTERMOVEFN + 202829 . 203726) (OFFSCREENP 203728 . 205480)) (205524 208338 (\TEDIT.PROCIDLEFN 205534 . 207194) ( +\TEDIT.PROCENTRYFN 207196 . 207641) (\TEDIT.PROCEXITFN 207643 . 208336)) (208417 221642 ( +\TEDIT.DOWNCARET 208427 . 209220) (\TEDIT.FLASHCARET 209222 . 211333) (\TEDIT.UPCARET 211335 . 212439) + (TEDIT.NORMALIZECARET 212441 . 215659) (\TEDIT.SETCARET 215661 . 221012) (\TEDIT.CARET 221014 . +221640))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 1256dd14c6177c384094cd764152123867de8b60..3be4c2adc92702fca305b96c874fef3723fa2f75 100644 GIT binary patch delta 1624 zcmZWp&5PV*7~eP`bz7FguG@77?BhyprJW(~S0-txZFcg`ZZwmm$(x;R@lc^4wjkAm z*P#pA9xX4Zc7`NP|nEb;IQp?}|6(cd&Tn(w>|%Uiu7ihy=n{@wRm)TRR3?e-Svla^PR>BKsJ zOaP^hXFK}9Iy19w)roc&$o?( zBkOR~dHK+4aN_EpFRg8O9J)o8CmAsAPM_4#Z^7zm+F`IG)gX+6WRPY_3Y1OtiKlPE zT7x*k=$;{hK^W&@Ag=)7Y~qSAXU3-5`gC<22;nui#I|+%Ib3$?0^X@lq^Ka!rB?UsbmnU zwo#dMgi+mG*&MoV-H>)%Nc~uvp5#EC1xh#*UrE{?gn`-x%1Nn@1N0`sJdHwCMWSTN zp4njHWlq;r8=2dQQb`|(Yfl_ZH3?eJvLW_7J`PKe<^wq&*YbY?)Ak6z=o&)zN z?1X!=tP~eMTiLp#?L@TCFU8!hAt$}s8i<< zRk)h#Q^WJGFre zmZUNsq(HFF$&(X(?cVz3S<`c=x_%}V5F3v|B>ijvcquCV&fIWH6c0cM{liCRh6Y6l zw!VxD;D~v%coo7pCDl#nCwnsJ#lVg4^7bT!LYj$b;+f2M{ZtwzcVLcU4E&ywnekzy z)CSzH8}Apvv6^NW uxD&hqNw0^03b~AASK&(HQ8b%cX;e4MXuGpLafrV2;DY6iK6~)n?f(G^FtpkL delta 1550 zcmZuxOOFgu6jnNf5rmmAV!}Z%GNx1aQB_^zF-q6%nWDO?Qgv&3JR%knAtKmWNCyjJ zBjhfuk=RRH^8>^r)|P~wu(6SdbE_ZIQ?a|}ea?5zcfWnFeEC*+dSyMGq4o@WcKw*a zpS`x!#uHoAPh-;rT)PST8+jN4b*8;rcc!UHEvQzj`(Z>)7;Z04T`;CLaG=ySYfL>c z4)+plR)38{#)!IPOm@Pxd-tt-xpB=Jqx1N{E2F|(ro7{0TIVAf(n$MF?3@n_RoLYi=p4 zW0e#ZEh$(zgqA(9PUvN_8RwZe2iA(Pcw}UfqxGT`ejux1pq?*pon?*9#5#v%AwR^ka&^MU}Zr0Dv1r6h?8n7@Z~&E zVi*1hEC=;#d2}andB5hsi#WD=@p*K+WtC0p?$rsyRBsNCowRu|P<;9fSPo<|6$>zL+O_Eb;&ir6em!seQNJHduYX&4@WxP`sfQnpHg{d{gRB{38F1HxxnMz5 zr94-~3F|^DYdB**d?Os&)X?h0oLglpqx~WB2!TJV;R23#UCKfzYU;y@*-$U+f4%6X zdQy7zdEs}DHUnm>Tkm(ZnT_D%edej?T7X#`x=&w(#c?y{l$v0amo<1vtD`6`Y<26@ zDd(X#Y_sfyt0{%ydg@`EiN-8)xr_(J!mGJRkVn1iEW$L98IT%PpYHD%w<*Mlh*}8{ z9JK#rt~Q=n*+C{`-Ajc8V%k_;cxemVL8vpdt1Jlv*#e8H*+&Q4`gV{`O%dh5k)3+s z{hK5GKcX2g2)_{l*SU*dCe9_wj1M|bMK4qpm)H~>E z;D@>(Z)wD^)$OIRJ;cTCx{M<|$`!Oiip7nFnz=l&vkQ^d U)>i0Yx$4K#QN!u%e*EG3Kg8stN&o-= diff --git a/library/tedit/TEDIT.LCOM b/library/tedit/TEDIT.LCOM index df7c594117705800ab5dca0777f7c8f0c3fcb8bc..cefa364d5cd1277443e734d91c840bc59e409b4e 100644 GIT binary patch delta 312 zcmbQ)$TYi=X+ngsxvpbDk*<+}k*R`_v6ZQbm4U^?Y!!`?)RfE;yAW3w&k#Lp3nL3n z1ui8cB(;XdRwm|F1_l$i%htPj`gsO>fRx%RWacR-xrO@pC?G4=)6-K@NJ#{miQN=4 zB~303H%}i|=O9-{pq&aRR>7R5q);91>+0g;8d+WMybJal7o~mlfQunRyCIZlOLt3doA|^z@VzQW8s2Q?TkbGEmaw(s1+i zadi%Ibp+Zqc?F}EIJ(UWh9)MK#^#gL7}di99D^M7+&qJVLo^kv0)kw_JpDt1bzOjZ z6_kuj5w0_|ure^WGBQ(As1Emab@6eHthLF>Oe#t&s)YCn;WIN$uE}=`#W(+E Date: Mon, 28 Apr 2025 16:03:11 -0700 Subject: [PATCH 15/18] Cleaned up window closing, DINFO graph seems to work again --- library/tedit/TEDIT-WINDOW | 163 ++++++++++++++++---------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62438 -> 62686 bytes 2 files changed, 81 insertions(+), 82 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index b2aeef596..c7dba7af8 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,10 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Apr-2025 23:53:42" {WMEDLEY}tedit>TEDIT-WINDOW.;835 226906 +(FILECREATED "28-Apr-2025 15:40:33" {WMEDLEY}TEDIT>TEDIT-WINDOW.;836 226673 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.CURSORMOVEDFN TEDIT.DEACTIVATE.WINDOW \TEDIT.BUTTONEVENTFN.DOOPERATION) + :CHANGES-TO (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.CLOSEPANES \TEDIT.CLOSESPLITS + \TEDIT.CURSORMOVEDFN \TEDIT.BUTTONEVENTFN.DOOPERATION) + (VARS TEDIT-WINDOWCOMS) :PREVIOUS-DATE "27-Apr-2025 13:08:05" {WMEDLEY}tedit>TEDIT-WINDOW.;833) @@ -60,7 +62,7 @@ (FNS \TEDIT.FILENAME \TEDIT.DEFAULT.TITLE \TEDIT.WINDOW.TITLE \TEDIT.LIKELY.FILENAME \TEDIT.UPDATE.TITLE)) (COMS (* ; "Screen updating utilities") - (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.RESHAPEFN \TEDIT.REPAINTFN \TEDIT.CLOSEPANES) + (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.RESHAPEFN \TEDIT.REPAINTFN \TEDIT.CLOSESPLITS) (FNS \TEDIT.SCROLLFN \TEDIT.SCROLLCH.TOP \TEDIT.SCROLLCH.BOTTOM \TEDIT.SCROLLUP \TEDIT.TOPLINE.YTOP \TEDIT.SCROLLDOWN \TEDIT.SCROLL.CARET \TEDIT.VISIBLECARETP \TEDIT.VISIBLECHARP \TEDIT.BITMAPLINES \TEDIT.SETPANE.TOPLINE \TEDIT.SHIFTLINES) @@ -2300,7 +2302,7 @@ (DEFINEQ (TEDIT.DEACTIVATE.WINDOW - [LAMBDA (PANE) (* ; "Edited 27-Apr-2025 23:35 by rmk") + [LAMBDA (PANE) (* ; "Edited 28-Apr-2025 15:38 by rmk") (* ; "Edited 20-Apr-2025 15:10 by rmk") (* ; "Edited 14-Mar-2025 16:22 by rmk") (* ; "Edited 18-Feb-2025 23:56 by rmk") @@ -2331,43 +2333,51 @@ (* ;; "Return DON'T to signal (to CLOSEW) that the window shouldn't be closed. if previously quit, the window is closed already, and would be reopened to reclose it.") (CL:UNLESS (FGETTOBJ TEXTOBJ EDITFINISHEDFLG) - (CL:WHEN (\TEDIT.FINISHEDIT? TSTREAM T) + (CL:WHEN (EQ 'DON'T (\TEDIT.FINISHEDIT? TSTREAM T)) (RETURN 'DON'T))) (CL:UNLESS (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE)) (* ; "Must be a lower split window") (\TEDIT.UNSPLITW PANE) (RETURN)) + + (* ;; "We're really closing: get rid of the splits, recover the region that they all occupy so we can recover the original/reshaped region of the primary pane=PANE.") + + (WINDOWPROP (PANEWINDOW PANE) + 'SAVED-TYPED-REGION + (\TEDIT.CLOSESPLITS TSTREAM)) + (\TEDIT.CLOSESPLITS TSTREAM) + + (* ;; "It's just the primary pane now. Shut things down.") + (CL:WHEN (AND (FGETTOBJ TEXTOBJ PROMPTWINDOW) - (OPENWP (GETTOBJ TEXTOBJ PROMPTWINDOW))) - (CLEARW (GETTOBJ TEXTOBJ PROMPTWINDOW))) + (OPENWP (FGETTOBJ TEXTOBJ PROMPTWINDOW))) + (CLEARW (FGETTOBJ TEXTOBJ PROMPTWINDOW))) (\TEDIT.SETCARET (TEXTSEL TEXTOBJ) PANE TEXTOBJ 'OFF) (* ;  "Before the window is closed, make sure that the caret is down, or the window will reappear.") (CL:WHEN (AND (\TEDIT.WINDOW.TITLE TEXTOBJ) - (OPENWP (GETTOBJ TEXTOBJ PROMPTWINDOW)) - (OPENWP PANE) - (EQ PANE (FGETTOBJ TEXTOBJ PRIMARYPANE))) + (OPENWP (FGETTOBJ TEXTOBJ PROMPTWINDOW)) + (OPENWP PANE)) (* ;;  "Reset the window's title to a known 'inactive' value, in case somebody else also has the window.") (\TEDIT.WINDOW.TITLE TEXTOBJ NIL "Edit Window [Inactive]")) - - (* ;; "Detach and close all panes") - - (\TEDIT.CLOSEPANES TSTREAM) (CL:WHEN (type? STREAM (FGETTOBJ TEXTOBJ TXTFILE))(* ;  "Close the file that this window was open on.") (CL:UNLESS (fetch (TEXTWINDOW CLOSINGFILE) of PANEWINDOW) (replace (TEXTWINDOW CLOSINGFILE) of PANEWINDOW with T) (CLOSEF? (FGETTOBJ TEXTOBJ TXTFILE)))) + + (* ;; "Clean up the window properties") + (WINDOWPROP PANEWINDOW 'PROCESS.EXITFN NIL) (WINDOWPROP PANEWINDOW 'PROCESS.IDLEFN NIL) (WINDOWPROP PANEWINDOW 'BUTTONEVENTFN (FUNCTION TOTOPW)) (* ; "And the button functions") (WINDOWPROP PANEWINDOW 'RIGHTBUTTONFN (FUNCTION DOWINDOWCOM)) (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW)) - (* ; "Remove to avoid a loop") + (* ; "Remove to avoid a loop on reuse?") (WINDOWPROP PANEWINDOW 'SCROLLFN NIL) (WINDOWPROP PANEWINDOW 'AFTERMOVEFN NIL) (WINDOWDELPROP PANEWINDOW 'RESHAPEFN (FUNCTION \TEDIT.RESHAPEFN)) @@ -2386,8 +2396,7 @@ (GIVE.TTY.PROCESS PANE) (* ; "Now kill this one") (DISMISS 300) (WINDOWPROP PANEWINDOW 'CURSOROUTFN NIL) - (WINDOWPROP PANEWINDOW 'CURSORMOVEDFN NIL) - (\TEDIT.UNLINKPANE PANE) (* ; "Disconnect") + (WINDOWPROP PANEWINDOW 'CURSORMOVEDFN NIL) (* ; "Disconnect") (replace (TEXTWINDOW WTEXTSTREAM) of PANE with NIL]) (\TEDIT.RESHAPEFN @@ -2431,42 +2440,32 @@ (\TEDIT.FILL.PANES WINDOW]) -(\TEDIT.CLOSEPANES - [LAMBDA (TSTREAM) (* ; "Edited 20-Apr-2025 13:46 by rmk") +(\TEDIT.CLOSESPLITS + [LAMBDA (TSTREAM) (* ; "Edited 28-Apr-2025 15:32 by rmk") - (* ;; "This closes the panes associated with TSTREAM. It also breaks the link from TSTREAM to its primary pane and additional split panes, but otherwise leaves the document alone. Someone with a pointer to the closed window can see a window with its region but otherwise is clean. ") + (* ;; "Detach and close all split panes, if any. This differs from unsplitting in that it doesn't do any intermediatge redisplays.") - (* ;; "It would be nice to be able to just close the window and leave alone the pointers from the window to the stream and the stream to the windows. But then neither would ever be collected.") + (* ;; "Returns the total region occupied by the primary pane (still open) and all of its the split windows. We include the primary pane's region but don't otherwise touch the primary pane.") - (* ;; "So the window in its pre-split size is let loose, the stream remains until the user drops all pointers to it. But holding on by the TEXTOBJ won't work--the user should never rely on that.") - - (* ;; "") - - (* ;; "When panes-as-windows are replaced by the paneprops data that points to the window, we can break the link by smashing out the window, but keep all the other information--enough to recreate a new window-datum with the same look as the original. In that case we would keep the split regions too and recreate them") - - (LET ((TEXTOBJ (FTEXTOBJ TSTREAM)) - REGIONS) - (SETQ REGIONS (for PANE PANEWINDOW inpanes TEXTOBJ eachtime (SETQ PANEWINDOW (PANEWINDOW - PANE)) - collect - - (* ;; - "Avoid closing loop through TEDIT.DEACTIVATE.WINDOW, and detach") - - (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW) - ) - (WINDOWREGION PANEWINDOW))) - - (* ;; "Save the overall shape of the unsplit primary window as the SAVE-TYPED-REGION property, for subsequent reuse of that typed-region. ") - - (WINDOWPROP (PANEWINDOW (FGETTOBJ TEXTOBJ PRIMARYPANE)) - 'SAVED-TYPED-REGION - (APPLY (FUNCTION UNIONREGIONS) - REGIONS)) - (for PANE inpanes TEXTOBJ do (CLOSEW (PANEWINDOW PANE)) - (replace (TEXTWINDOW WTEXTSTREAM) of (PANEWINDOW PANE) - with NIL)) - (FSETTOBJ TEXTOBJ PRIMARYPANE NIL]) + (LET* ((TEXTOBJ (FTEXTOBJ TSTREAM)) + (PRIMARYPANE (FGETTOBJ TEXTOBJ PRIMARYPANE))) + (PROG1 [for PANE PANEWINDOW SPLITREGIONS inpanes (NEXTPANE PRIMARYPANE) + eachtime (SETQ PANEWINDOW (PANEWINDOW PANE)) + collect + + (* ;; "Avoid closing loop through TEDIT.DEACTIVATE.WINDOW") + + (WINDOWDELPROP PANEWINDOW 'CLOSEFN (FUNCTION TEDIT.DEACTIVATE.WINDOW)) + (WINDOWREGION PANEWINDOW) finally (RETURN (APPLY (FUNCTION UNIONREGIONS) + (CONS (WINDOWREGION + PRIMARYPANE) + SPLITREGIONS] + (for PANE inpanes (NEXTPANE PRIMARYPANE) do (CLOSEW (PANEWINDOW PANE)) + (replace (TEXTWINDOW WTEXTSTREAM) + of (PANEWINDOW PANE) with NIL)) + (* ; "Disconnect all the splits") + (SETPANEPROP (PANEPROPS PRIMARYPANE) + NEXTPANE NIL))]) ) (DEFINEQ @@ -3583,36 +3582,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17119 18015 (TEDIT.DEFER.UPDATES 17129 . 18013)) (18016 43437 (\TEDIT.WINDOW.CREATE -18026 . 25046) (\TEDIT.WINDOW.GETREGION 25048 . 28538) (\TEDIT.WINDOW.SETUP 28540 . 32762) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32764 . 40175) (\TEDIT.CLEARPANE 40177 . 40894) (\TEDIT.FILL.PANES 40896 - . 43435)) (43438 67168 (\TEDIT.CURSORMOVEDFN 43448 . 49058) (\TEDIT.CURSOROUTFN 49060 . 49505) ( -\TEDIT.ACTIVE.WINDOWP 49507 . 50577) (\TEDIT.EXPANDFN 50579 . 51142) (\TEDIT.MAINW 51144 . 52424) ( -\TEDIT.MAINSTREAM 52426 . 52760) (\TEDIT.PRIMARYPANE 52762 . 53532) (\TEDIT.PANELIST 53534 . 54030) ( -\TEDIT.NEWREGIONFN 54032 . 56548) (\TEDIT.SET.WINDOW.EXTENT 56550 . 61804) (\TEDIT.SHRINK.ICONCREATE -61806 . 64539) (\TEDIT.SHRINKFN 64541 . 64950) (\TEDIT.PANEREGION 64952 . 67166)) (67200 99922 ( -\TEDIT.BUTTONEVENTFN 67210 . 80082) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80084 . 87235) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 87237 . 89079) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89081 . 92646) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 92648 . 95072) (\TEDIT.BUTTONEVENTFN.INTITLE 95074 . 96909) ( -\TEDIT.COPYINSERTFN 96911 . 98043) (\TEDIT.FOREIGN.COPY 98045 . 99920)) (99923 117004 ( -\TEDIT.PANE.SPLIT 99933 . 103881) (\TEDIT.SPLITW 103883 . 111241) (\TEDIT.UNSPLITW 111243 . 115661) ( -\TEDIT.LINKPANES 115663 . 116426) (\TEDIT.UNLINKPANE 116428 . 117002)) (118438 119329 (TEDITWINDOWP -118448 . 119327)) (119366 122469 (TEDIT.GETINPUT 119376 . 121819) (\TEDIT.MAKEFILENAME 121821 . 122467 -)) (122518 130145 (TEDIT.PROMPTWINDOW 122528 . 122842) (TEDIT.PROMPTPRINT 122844 . 125471) ( -TEDIT.PROMPTCLEAR 125473 . 127192) (TEDIT.PROMPTFLASH 127194 . 128452) (\TEDIT.PROMPT.PAGEFULLFN -128454 . 130143)) (130383 140215 (\TEDIT.FILENAME 130393 . 131165) (\TEDIT.DEFAULT.TITLE 131167 . -133546) (\TEDIT.WINDOW.TITLE 133548 . 135717) (\TEDIT.LIKELY.FILENAME 135719 . 137697) ( -\TEDIT.UPDATE.TITLE 137699 . 140213)) (140258 151812 (TEDIT.DEACTIVATE.WINDOW 140268 . 147040) ( -\TEDIT.RESHAPEFN 147042 . 149127) (\TEDIT.REPAINTFN 149129 . 149353) (\TEDIT.CLOSEPANES 149355 . -151810)) (151813 194612 (\TEDIT.SCROLLFN 151823 . 154054) (\TEDIT.SCROLLCH.TOP 154056 . 156167) ( -\TEDIT.SCROLLCH.BOTTOM 156169 . 160499) (\TEDIT.SCROLLUP 160501 . 166227) (\TEDIT.TOPLINE.YTOP 166229 - . 167898) (\TEDIT.SCROLLDOWN 167900 . 174939) (\TEDIT.SCROLL.CARET 174941 . 177779) ( -\TEDIT.VISIBLECARETP 177781 . 180075) (\TEDIT.VISIBLECHARP 180077 . 181168) (\TEDIT.BITMAPLINES 181170 - . 185090) (\TEDIT.SETPANE.TOPLINE 185092 . 185704) (\TEDIT.SHIFTLINES 185706 . 194610)) (194613 -205482 (\TEDIT.ONSCREEN? 194623 . 199174) (\TEDIT.ONSCREEN.REGION 199176 . 202827) (\TEDIT.AFTERMOVEFN - 202829 . 203726) (OFFSCREENP 203728 . 205480)) (205524 208338 (\TEDIT.PROCIDLEFN 205534 . 207194) ( -\TEDIT.PROCENTRYFN 207196 . 207641) (\TEDIT.PROCEXITFN 207643 . 208336)) (208417 221642 ( -\TEDIT.DOWNCARET 208427 . 209220) (\TEDIT.FLASHCARET 209222 . 211333) (\TEDIT.UPCARET 211335 . 212439) - (TEDIT.NORMALIZECARET 212441 . 215659) (\TEDIT.SETCARET 215661 . 221012) (\TEDIT.CARET 221014 . -221640))))) + (FILEMAP (NIL (17223 18119 (TEDIT.DEFER.UPDATES 17233 . 18117)) (18120 43541 (\TEDIT.WINDOW.CREATE +18130 . 25150) (\TEDIT.WINDOW.GETREGION 25152 . 28642) (\TEDIT.WINDOW.SETUP 28644 . 32866) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32868 . 40279) (\TEDIT.CLEARPANE 40281 . 40998) (\TEDIT.FILL.PANES 41000 + . 43539)) (43542 67272 (\TEDIT.CURSORMOVEDFN 43552 . 49162) (\TEDIT.CURSOROUTFN 49164 . 49609) ( +\TEDIT.ACTIVE.WINDOWP 49611 . 50681) (\TEDIT.EXPANDFN 50683 . 51246) (\TEDIT.MAINW 51248 . 52528) ( +\TEDIT.MAINSTREAM 52530 . 52864) (\TEDIT.PRIMARYPANE 52866 . 53636) (\TEDIT.PANELIST 53638 . 54134) ( +\TEDIT.NEWREGIONFN 54136 . 56652) (\TEDIT.SET.WINDOW.EXTENT 56654 . 61908) (\TEDIT.SHRINK.ICONCREATE +61910 . 64643) (\TEDIT.SHRINKFN 64645 . 65054) (\TEDIT.PANEREGION 65056 . 67270)) (67304 100026 ( +\TEDIT.BUTTONEVENTFN 67314 . 80186) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80188 . 87339) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 87341 . 89183) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89185 . 92750) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 92752 . 95176) (\TEDIT.BUTTONEVENTFN.INTITLE 95178 . 97013) ( +\TEDIT.COPYINSERTFN 97015 . 98147) (\TEDIT.FOREIGN.COPY 98149 . 100024)) (100027 117108 ( +\TEDIT.PANE.SPLIT 100037 . 103985) (\TEDIT.SPLITW 103987 . 111345) (\TEDIT.UNSPLITW 111347 . 115765) ( +\TEDIT.LINKPANES 115767 . 116530) (\TEDIT.UNLINKPANE 116532 . 117106)) (118542 119433 (TEDITWINDOWP +118552 . 119431)) (119470 122573 (TEDIT.GETINPUT 119480 . 121923) (\TEDIT.MAKEFILENAME 121925 . 122571 +)) (122622 130249 (TEDIT.PROMPTWINDOW 122632 . 122946) (TEDIT.PROMPTPRINT 122948 . 125575) ( +TEDIT.PROMPTCLEAR 125577 . 127296) (TEDIT.PROMPTFLASH 127298 . 128556) (\TEDIT.PROMPT.PAGEFULLFN +128558 . 130247)) (130487 140319 (\TEDIT.FILENAME 130497 . 131269) (\TEDIT.DEFAULT.TITLE 131271 . +133650) (\TEDIT.WINDOW.TITLE 133652 . 135821) (\TEDIT.LIKELY.FILENAME 135823 . 137801) ( +\TEDIT.UPDATE.TITLE 137803 . 140317)) (140362 151579 (TEDIT.DEACTIVATE.WINDOW 140372 . 147430) ( +\TEDIT.RESHAPEFN 147432 . 149517) (\TEDIT.REPAINTFN 149519 . 149743) (\TEDIT.CLOSESPLITS 149745 . +151577)) (151580 194379 (\TEDIT.SCROLLFN 151590 . 153821) (\TEDIT.SCROLLCH.TOP 153823 . 155934) ( +\TEDIT.SCROLLCH.BOTTOM 155936 . 160266) (\TEDIT.SCROLLUP 160268 . 165994) (\TEDIT.TOPLINE.YTOP 165996 + . 167665) (\TEDIT.SCROLLDOWN 167667 . 174706) (\TEDIT.SCROLL.CARET 174708 . 177546) ( +\TEDIT.VISIBLECARETP 177548 . 179842) (\TEDIT.VISIBLECHARP 179844 . 180935) (\TEDIT.BITMAPLINES 180937 + . 184857) (\TEDIT.SETPANE.TOPLINE 184859 . 185471) (\TEDIT.SHIFTLINES 185473 . 194377)) (194380 +205249 (\TEDIT.ONSCREEN? 194390 . 198941) (\TEDIT.ONSCREEN.REGION 198943 . 202594) (\TEDIT.AFTERMOVEFN + 202596 . 203493) (OFFSCREENP 203495 . 205247)) (205291 208105 (\TEDIT.PROCIDLEFN 205301 . 206961) ( +\TEDIT.PROCENTRYFN 206963 . 207408) (\TEDIT.PROCEXITFN 207410 . 208103)) (208184 221409 ( +\TEDIT.DOWNCARET 208194 . 208987) (\TEDIT.FLASHCARET 208989 . 211100) (\TEDIT.UPCARET 211102 . 212206) + (TEDIT.NORMALIZECARET 212208 . 215426) (\TEDIT.SETCARET 215428 . 220779) (\TEDIT.CARET 220781 . +221407))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 3be4c2adc92702fca305b96c874fef3723fa2f75..5fa74b1bfce1ed91d63c1a4acdb935c68888bfaa 100644 GIT binary patch delta 1961 zcmZuxL2MgE6!oTQn1T7;Z4jkZ8sVAyf%^|eWJ&U$roj;d4#qR(sUJYzRrdgT6ym+a`A{La;Fx8&7xXH90@ zxS12*tWS#%?;ag1I$p>_-?5|cBgN(i1Ue0G)T_MY@Wz#=UcU7F=5w2`Cn5I-21*Sh z&%_4`^b$NQ6Zn?PLpU!h$ql3g@!1b2lu&dp;nwlOZTiZsSzq@AqW zD;;P1IDX{LCoAIFtFtrEv$v-fB>w5j#w+omG4bWq@0GLS&1+AHFRqoF?`N`F!GMw- zR_!nZ&CJ7+y~=Y@)X4dPSL6~@!LLP0=MnTl(<$C=E%FwZLDOh@mlo0pG17?2;-o}o zWd&`2R%WVTMUhpk@KTaG1cr}txjo%vh7RX#H>?Fb*#f4UkSt5wku@@nq;fK9rV*m2 zPSHZzhnnd)R5!F#Agb?kVkSt2l%GaA#SIY?lP8A?O#J-z)HL4B^SN91f#hj_Y0!AH zspI7miiJEXS^t)Py}-LtCE^Bg2&A>Dp#?*W{}dv(#8D<`K8dK^zIzI(c< zCG4$ow+0$B5a{iQ(*}O0-yuBG1KBG>>I^ zk>}TONg%=bDtF_ODDtDr=bViq5JQ^YhxnQ;z3^(u)W-d^#g(mNLqrvqx29|?FS$O^ zvH#^V5RE~|9bSxV&jr%$Q9Kb?S!iKr=Awp=-+(X09)^kayN^ZUudUpWX|^7GZ+mzl zQ7o7*nWI@B@*wTxKnOnI)S%*YDeeQ-izebow!p4hK|_pwe)7oQBbkh{ASPa$YECGX z&TvC2g_M&c@yvHdCZ0LEy#8Ih-agk}?hM~Hoin#jUAQP6ifo+_dU27;`z+rme$-LGdCJfz|Z#Lk{1`ILYdc37y-&#B@N!j}L?xUyv E2Nw+e)&Kwi delta 1782 zcmZ`)&2Jk;6t^9#q^_u9lJHRkdIefJQf%$aet0(m;k7-sH(u{9-f^6Ws4Y?@j1U6# zA23o{wG|w&R&atdC!`Xq2R=#;NJv&sh#NwHIDoiuN2t7+jU9U_KCEZnoA;ad@q2H6 z{&VT~KbAh&T`d>wcdiwwLUo|(macATboAy6(Y4IuS$zX?5v12f_nuhW=dAAVQmxkw z{cgwKVfBU=m2N#XdeB;b2*h&`UC9)d5tAC0Vnpw!;eR2b-(FgeE^nP#64zOoi{mSq z@83=T6VU@=eKb)%YrT<6;qSxO#doFBo@D>}v~pT(1}p7}d-!bol-NvMDf=YeMV}vR zoZno~96l3U9j;4^kK2Q{qtU@?^!LFx>1y=l_09C@=-2D+@J6bjD+KCJ*m1%TG>byh z*ny$qb~a=*F_npRF~RSk|)*z;V+YX`Q+K%@UT zN3>?rbj}y`VZNwk6Ku}yT8q_VheA-xB>L&bxmQ)#cf7FIWw8QO-GF#mXRh>HRjtH@ zDm9W4q9&}UWkmU_tHZ?{P=h8csg^{issT0E4_V`7Bu6rSiZ?acd|rt~rkRswB5@%Q zQ|5ChI2p%N;tqEi5JLk$U|v4}g0W7Q+6-jz^hsGl#%p$$aUhC`4l=vj2Wy5^o-1D% zxDM}wuET!x-p%KS7Si4)?hq^a0xwVmaGkp74lb+Ky>na_X+|hid9f#C9Ed3L}$Y7e!SZ@2zIB;b8tL z#y2mYiP7gcCj==mZ4^Q+@EZ*vltRc{R^yKE0U`Ry31t8Dv^ndrh}117YI;32M+8KNWBv0odI`ffRuN>{!W!(>#sS&660 zlkzX0Pq*@~JhFXNY7eVN+mq~_7dscfzH?!C>GD}Qn&jt>zOWL?0|RCGsauF(!2=N@gU+%0>?F#}SFi z7gGisw!E;zK_RL-qr^#(39+E(A?CDRglG`j_}~=zUVz_N4i*j;i5}h0AE From dee919d57bc7ac1b5be8ba1d224959b73bfb8df0 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Tue, 29 Apr 2025 16:52:40 -0700 Subject: [PATCH 16/18] Update TEDIT-MENU.LCOM --- library/tedit/TEDIT-MENU.LCOM | Bin 53040 -> 53028 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/library/tedit/TEDIT-MENU.LCOM b/library/tedit/TEDIT-MENU.LCOM index 5f44fa98a123c8ed03ddc8113162ce0ee108bc5a..482dcddc19bec9d380ad176649ffd00ea104c5d2 100644 GIT binary patch delta 194 zcmdlmk9o;F<_QtPmb#7wMY=`?My3jeW>zMaRtA<6vsK(mQd2TZ>_S{!JVSJSUHwA! ztWC^KG!?j%jF2@LSQ!~xnHnf56s0ET=N4qLCG!D$43EKzn-3+k^)ysBG57gYzCVvX-@P|-R#4-J(EpSfgzKXak6A~5ToHL@}^Q&LDO zN=?qsEy&DCO;Jd#C@3mcwVFJaQI0z^PeI8o)W=7`$YkO_31JMqMh2TT8SiC^DYz+^ iDfqhjg@y!&1i3o;YAP^fvNBEP%?@G=+nkVnBpCpWE-1JF From 2ae43bbf9893b1b478347be2a9e186233f77beb9 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 4 May 2025 15:51:05 -0700 Subject: [PATCH 17/18] TEDIT-WINDOW--better behavior when closing fails --- library/tedit/TEDIT-WINDOW | 94 +++++++++++++++++--------------- library/tedit/TEDIT-WINDOW.LCOM | Bin 62686 -> 62748 bytes 2 files changed, 49 insertions(+), 45 deletions(-) diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index c7dba7af8..70a2f3b01 100644 --- a/library/tedit/TEDIT-WINDOW +++ b/library/tedit/TEDIT-WINDOW @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Apr-2025 15:40:33" {WMEDLEY}TEDIT>TEDIT-WINDOW.;836 226673 +(FILECREATED " 4-May-2025 14:28:08" {WMEDLEY}tedit>TEDIT-WINDOW.;839 227034 :EDIT-BY rmk - :CHANGES-TO (FNS TEDIT.DEACTIVATE.WINDOW \TEDIT.CLOSEPANES \TEDIT.CLOSESPLITS - \TEDIT.CURSORMOVEDFN \TEDIT.BUTTONEVENTFN.DOOPERATION) - (VARS TEDIT-WINDOWCOMS) + :CHANGES-TO (FNS \TEDIT.CURSOROUTFN \TEDIT.SPLITW \TEDIT.UNSPLITW) - :PREVIOUS-DATE "27-Apr-2025 13:08:05" {WMEDLEY}tedit>TEDIT-WINDOW.;833) + :PREVIOUS-DATE "28-Apr-2025 15:40:33" {WMEDLEY}tedit>TEDIT-WINDOW.;836) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -812,15 +810,18 @@ ])])]) (\TEDIT.CURSOROUTFN - [LAMBDA (PANE) (* ; "Edited 20-Jul-2023 20:32 by rmk") + [LAMBDA (PANE) (* ; "Edited 4-May-2025 14:27 by rmk") + (* ; "Edited 20-Jul-2023 20:32 by rmk") (* ; "Edited 30-May-91 23:32 by jds") (* ;; "Cursor leaves edit pane; make sure we think we're in the text region.") (CURSOR T) - (SETTOBJ (fetch (TEXTWINDOW PTEXTOBJ) of PANE) - MOUSEREGION - 'TEXT]) + (CL:WHEN (fetch (TEXTWINDOW WTEXTSTREAM) of (OR (WINDOWP PANE) + (PANEWINDOW PANE))) + (SETTOBJ (PANETEXTOBJ PANE) + MOUSEREGION + 'TEXT))]) (\TEDIT.ACTIVE.WINDOWP [LAMBDA (W) (* ; "Edited 27-Apr-2025 13:07 by rmk") @@ -1670,7 +1671,8 @@ T)]) (\TEDIT.SPLITW - [LAMBDA (OLDPANE Y) (* ; "Edited 21-Apr-2025 20:20 by rmk") + [LAMBDA (OLDPANE Y) (* ; "Edited 4-May-2025 14:04 by rmk") + (* ; "Edited 21-Apr-2025 20:20 by rmk") (* ; "Edited 20-Apr-2025 15:20 by rmk") (* ; "Edited 13-Apr-2025 15:21 by rmk") (* ; "Edited 5-Apr-2025 13:04 by rmk") @@ -1700,7 +1702,7 @@ NIL) (CL:WHEN (AND (FIXP Y) (IGREATERP Y 0)) - [PROG* ((TSTREAM (PANETEXTSTREAM OLDPANE)) + (PROG* ((TSTREAM (PANETEXTSTREAM OLDPANE)) (TEXTOBJ (FTEXTOBJ TSTREAM)) (PREG (WINDOWPROP OLDPANE 'REGION)) (SEL (TEXTSEL TEXTOBJ)) @@ -1776,10 +1778,12 @@  "Tell NEWPANE about the old pane below it") (CL:WHEN NEXTPANE (* ;  "There was already a pane below this one. Attach it to the new lower pane.") - (ATTACHWINDOW NEXTPANE NEWPANE 'BOTTOM 'JUSTIFY 'MAIN))])]) + (ATTACHWINDOW NEXTPANE NEWPANE 'BOTTOM 'JUSTIFY 'MAIN)) + (RETURN NEWPANE)))]) (\TEDIT.UNSPLITW - [LAMBDA (PANE CLOSING) (* ; "Edited 20-Apr-2025 15:34 by rmk") + [LAMBDA (PANE) (* ; "Edited 4-May-2025 14:07 by rmk") + (* ; "Edited 20-Apr-2025 15:34 by rmk") (* ; "Edited 19-Apr-2025 11:54 by rmk") (* ; "Edited 13-Apr-2025 13:31 by rmk") (* ; "Edited 1-Jul-2024 08:50 by rmk") @@ -3582,36 +3586,36 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (17223 18119 (TEDIT.DEFER.UPDATES 17233 . 18117)) (18120 43541 (\TEDIT.WINDOW.CREATE -18130 . 25150) (\TEDIT.WINDOW.GETREGION 25152 . 28642) (\TEDIT.WINDOW.SETUP 28644 . 32866) ( -\TEDIT.MINIMAL.WINDOW.SETUP 32868 . 40279) (\TEDIT.CLEARPANE 40281 . 40998) (\TEDIT.FILL.PANES 41000 - . 43539)) (43542 67272 (\TEDIT.CURSORMOVEDFN 43552 . 49162) (\TEDIT.CURSOROUTFN 49164 . 49609) ( -\TEDIT.ACTIVE.WINDOWP 49611 . 50681) (\TEDIT.EXPANDFN 50683 . 51246) (\TEDIT.MAINW 51248 . 52528) ( -\TEDIT.MAINSTREAM 52530 . 52864) (\TEDIT.PRIMARYPANE 52866 . 53636) (\TEDIT.PANELIST 53638 . 54134) ( -\TEDIT.NEWREGIONFN 54136 . 56652) (\TEDIT.SET.WINDOW.EXTENT 56654 . 61908) (\TEDIT.SHRINK.ICONCREATE -61910 . 64643) (\TEDIT.SHRINKFN 64645 . 65054) (\TEDIT.PANEREGION 65056 . 67270)) (67304 100026 ( -\TEDIT.BUTTONEVENTFN 67314 . 80186) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80188 . 87339) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 87341 . 89183) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89185 . 92750) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 92752 . 95176) (\TEDIT.BUTTONEVENTFN.INTITLE 95178 . 97013) ( -\TEDIT.COPYINSERTFN 97015 . 98147) (\TEDIT.FOREIGN.COPY 98149 . 100024)) (100027 117108 ( -\TEDIT.PANE.SPLIT 100037 . 103985) (\TEDIT.SPLITW 103987 . 111345) (\TEDIT.UNSPLITW 111347 . 115765) ( -\TEDIT.LINKPANES 115767 . 116530) (\TEDIT.UNLINKPANE 116532 . 117106)) (118542 119433 (TEDITWINDOWP -118552 . 119431)) (119470 122573 (TEDIT.GETINPUT 119480 . 121923) (\TEDIT.MAKEFILENAME 121925 . 122571 -)) (122622 130249 (TEDIT.PROMPTWINDOW 122632 . 122946) (TEDIT.PROMPTPRINT 122948 . 125575) ( -TEDIT.PROMPTCLEAR 125577 . 127296) (TEDIT.PROMPTFLASH 127298 . 128556) (\TEDIT.PROMPT.PAGEFULLFN -128558 . 130247)) (130487 140319 (\TEDIT.FILENAME 130497 . 131269) (\TEDIT.DEFAULT.TITLE 131271 . -133650) (\TEDIT.WINDOW.TITLE 133652 . 135821) (\TEDIT.LIKELY.FILENAME 135823 . 137801) ( -\TEDIT.UPDATE.TITLE 137803 . 140317)) (140362 151579 (TEDIT.DEACTIVATE.WINDOW 140372 . 147430) ( -\TEDIT.RESHAPEFN 147432 . 149517) (\TEDIT.REPAINTFN 149519 . 149743) (\TEDIT.CLOSESPLITS 149745 . -151577)) (151580 194379 (\TEDIT.SCROLLFN 151590 . 153821) (\TEDIT.SCROLLCH.TOP 153823 . 155934) ( -\TEDIT.SCROLLCH.BOTTOM 155936 . 160266) (\TEDIT.SCROLLUP 160268 . 165994) (\TEDIT.TOPLINE.YTOP 165996 - . 167665) (\TEDIT.SCROLLDOWN 167667 . 174706) (\TEDIT.SCROLL.CARET 174708 . 177546) ( -\TEDIT.VISIBLECARETP 177548 . 179842) (\TEDIT.VISIBLECHARP 179844 . 180935) (\TEDIT.BITMAPLINES 180937 - . 184857) (\TEDIT.SETPANE.TOPLINE 184859 . 185471) (\TEDIT.SHIFTLINES 185473 . 194377)) (194380 -205249 (\TEDIT.ONSCREEN? 194390 . 198941) (\TEDIT.ONSCREEN.REGION 198943 . 202594) (\TEDIT.AFTERMOVEFN - 202596 . 203493) (OFFSCREENP 203495 . 205247)) (205291 208105 (\TEDIT.PROCIDLEFN 205301 . 206961) ( -\TEDIT.PROCENTRYFN 206963 . 207408) (\TEDIT.PROCEXITFN 207410 . 208103)) (208184 221409 ( -\TEDIT.DOWNCARET 208194 . 208987) (\TEDIT.FLASHCARET 208989 . 211100) (\TEDIT.UPCARET 211102 . 212206) - (TEDIT.NORMALIZECARET 212208 . 215426) (\TEDIT.SETCARET 215428 . 220779) (\TEDIT.CARET 220781 . -221407))))) + (FILEMAP (NIL (17091 17987 (TEDIT.DEFER.UPDATES 17101 . 17985)) (17988 43409 (\TEDIT.WINDOW.CREATE +17998 . 25018) (\TEDIT.WINDOW.GETREGION 25020 . 28510) (\TEDIT.WINDOW.SETUP 28512 . 32734) ( +\TEDIT.MINIMAL.WINDOW.SETUP 32736 . 40147) (\TEDIT.CLEARPANE 40149 . 40866) (\TEDIT.FILL.PANES 40868 + . 43407)) (43410 67383 (\TEDIT.CURSORMOVEDFN 43420 . 49030) (\TEDIT.CURSOROUTFN 49032 . 49720) ( +\TEDIT.ACTIVE.WINDOWP 49722 . 50792) (\TEDIT.EXPANDFN 50794 . 51357) (\TEDIT.MAINW 51359 . 52639) ( +\TEDIT.MAINSTREAM 52641 . 52975) (\TEDIT.PRIMARYPANE 52977 . 53747) (\TEDIT.PANELIST 53749 . 54245) ( +\TEDIT.NEWREGIONFN 54247 . 56763) (\TEDIT.SET.WINDOW.EXTENT 56765 . 62019) (\TEDIT.SHRINK.ICONCREATE +62021 . 64754) (\TEDIT.SHRINKFN 64756 . 65165) (\TEDIT.PANEREGION 65167 . 67381)) (67415 100137 ( +\TEDIT.BUTTONEVENTFN 67425 . 80297) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80299 . 87450) ( +\TEDIT.BUTTONEVENTFN.GETOPERATION 87452 . 89294) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89296 . 92861) ( +\TEDIT.BUTTONEVENTFN.INACTIVE 92863 . 95287) (\TEDIT.BUTTONEVENTFN.INTITLE 95289 . 97124) ( +\TEDIT.COPYINSERTFN 97126 . 98258) (\TEDIT.FOREIGN.COPY 98260 . 100135)) (100138 117469 ( +\TEDIT.PANE.SPLIT 100148 . 104096) (\TEDIT.SPLITW 104098 . 111597) (\TEDIT.UNSPLITW 111599 . 116126) ( +\TEDIT.LINKPANES 116128 . 116891) (\TEDIT.UNLINKPANE 116893 . 117467)) (118903 119794 (TEDITWINDOWP +118913 . 119792)) (119831 122934 (TEDIT.GETINPUT 119841 . 122284) (\TEDIT.MAKEFILENAME 122286 . 122932 +)) (122983 130610 (TEDIT.PROMPTWINDOW 122993 . 123307) (TEDIT.PROMPTPRINT 123309 . 125936) ( +TEDIT.PROMPTCLEAR 125938 . 127657) (TEDIT.PROMPTFLASH 127659 . 128917) (\TEDIT.PROMPT.PAGEFULLFN +128919 . 130608)) (130848 140680 (\TEDIT.FILENAME 130858 . 131630) (\TEDIT.DEFAULT.TITLE 131632 . +134011) (\TEDIT.WINDOW.TITLE 134013 . 136182) (\TEDIT.LIKELY.FILENAME 136184 . 138162) ( +\TEDIT.UPDATE.TITLE 138164 . 140678)) (140723 151940 (TEDIT.DEACTIVATE.WINDOW 140733 . 147791) ( +\TEDIT.RESHAPEFN 147793 . 149878) (\TEDIT.REPAINTFN 149880 . 150104) (\TEDIT.CLOSESPLITS 150106 . +151938)) (151941 194740 (\TEDIT.SCROLLFN 151951 . 154182) (\TEDIT.SCROLLCH.TOP 154184 . 156295) ( +\TEDIT.SCROLLCH.BOTTOM 156297 . 160627) (\TEDIT.SCROLLUP 160629 . 166355) (\TEDIT.TOPLINE.YTOP 166357 + . 168026) (\TEDIT.SCROLLDOWN 168028 . 175067) (\TEDIT.SCROLL.CARET 175069 . 177907) ( +\TEDIT.VISIBLECARETP 177909 . 180203) (\TEDIT.VISIBLECHARP 180205 . 181296) (\TEDIT.BITMAPLINES 181298 + . 185218) (\TEDIT.SETPANE.TOPLINE 185220 . 185832) (\TEDIT.SHIFTLINES 185834 . 194738)) (194741 +205610 (\TEDIT.ONSCREEN? 194751 . 199302) (\TEDIT.ONSCREEN.REGION 199304 . 202955) (\TEDIT.AFTERMOVEFN + 202957 . 203854) (OFFSCREENP 203856 . 205608)) (205652 208466 (\TEDIT.PROCIDLEFN 205662 . 207322) ( +\TEDIT.PROCENTRYFN 207324 . 207769) (\TEDIT.PROCEXITFN 207771 . 208464)) (208545 221770 ( +\TEDIT.DOWNCARET 208555 . 209348) (\TEDIT.FLASHCARET 209350 . 211461) (\TEDIT.UPCARET 211463 . 212567) + (TEDIT.NORMALIZECARET 212569 . 215787) (\TEDIT.SETCARET 215789 . 221140) (\TEDIT.CARET 221142 . +221768))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index 5fa74b1bfce1ed91d63c1a4acdb935c68888bfaa..3dc7ede32b8032b1ef907808c957284a0bfedb7f 100644 GIT binary patch delta 1517 zcmZuxO>7%Q6t*1_imO^q8k`nI<<$g;4+*=ovp+UevTKjYruNQue`*q&{E#4;7By1D z1tAov2P9OGNak7u>X`#pnnN#*dbGp^4hV#V;J~3sNJJcZYSXv7PV1OnX5Rn2_r3S# z_xl4k{~q|NF$#35zWnhNk%$U1EfAw18CzE;#6}`>I-i4N7RXZrq7)RRAmz92W;R_y-aNnz1uyzfyRlin)UZ3gd=`5@+fAs$9GlR)mHkX{Nnl)B-SP5f7_E{-q z;gd$4RcdVR)3-icdv9Y|tS3$%%L5_0q)_oi9K?4&yfo?BHPdTAH#gsk_#6~$hg~wc z?@m?l4M++W&jlsMwVlrs4_<|pSS%J_djZc_F+6t%iXQ}AGB|F}h#y~3Cx!w#l#Y&u zS2{MS>F_r58m3j@4cp~gOcZ!$}_AICG3jM{MooH&TWl}L~|tmu6VJjC4Vbj*}pw-y&eBa_|1tE zcOncsL&L+*nc}l%_I0z9n7{Jxb~`>eJ2fD=9`IBQCwWf zJRd16A-Bc~sSxh9&}h%>(6AGo7*B=m*;@~s%}zD!Tqs&h?-hA!hNs2#mUQm5P;sk$ zki47@$-VZ$5YKc@UH#<-&qTq-S9jJ&7Dx6%uOc5gF&G3zR{Ys|V>q?efvTu5>${#=okLoJ^W5_|?nOQiF2mo(Gr0xS(0Vxy3vzgw zxh_z2?+dM<>rv4rC_%*tTeLe07TCkdxZJp1HO?;}tdfN5ieKj8KSy-Ef4KmEv;WIf uJ*tSPR8dSuq0WhVs`0PToV5*{hC6IFrOU6Z>I21+xcVp(e`6{K9jcq delta 1454 zcmZ`(&2Jk;6yHtSO1Ly~jd3DKqleW>HV|ibXFqHQp=|AOv#!0f+F8d*Z7?mVXd3aU ziW{l~$BK_+IDk|x{SU0r3sP(KXu+itLU4d15?mlBP9?nEbz0ZJWoF)+_woC^d2eq1 zKK;vY)1S4|T5-{S=ehCq?A)lI7frHuAa|4Frd=%IrEXWt{{T-00@b9tr+d>Y#lTecz_jYf~tz2 zKc3xl^EXst2Z3E#rPVkb2M>zi(ssxl&lZFULam9~^`Nq9`>J@d^PH@SLMJb;iS>?| z_};#{|Mm2TefeAQMd$R1Z&o7c!(%5;9;u6ACtIiwr#7zsx!afDbdFAc=|tBk^_sWQ zOZsCaVs_SFPO(|!P62!HSD-VXMh~!J@SH0Hw)9R)PUB~4upN{NwLp$urSX1CMXnCNkI#g-+ zm?J|{GA87AAW!n%OpvCARCT?a?-KB z%Nf(MMrC+3gqo?x1T>@ckbq|BhXho7$j@K9B^QNt@uz202)|6nJqHfNx$_|3oROrd Ky@gAE@BRa?N`R;U From bcd09b8d805533849accc4bdf25b05529edfcc6c Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 4 May 2025 15:53:55 -0700 Subject: [PATCH 18/18] NWAY buttons default to unsorted--new items go at the end Otherwise meta-3 for the 3rd font might pick a different one --- library/tedit/TEDIT-BUTTONS | 85 ++++++++++++++++--------------- library/tedit/TEDIT-BUTTONS.LCOM | Bin 35292 -> 35418 bytes 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/library/tedit/TEDIT-BUTTONS b/library/tedit/TEDIT-BUTTONS index 52e8ac0bf..2f00fe35a 100644 --- a/library/tedit/TEDIT-BUTTONS +++ b/library/tedit/TEDIT-BUTTONS @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "14-Apr-2025 23:50:23" {WMEDLEY}tedit>TEDIT-BUTTONS.;226 124952 +(FILECREATED "30-Apr-2025 14:09:18" {WMEDLEY}tedit>TEDIT-BUTTONS.;228 125393 :EDIT-BY rmk - :CHANGES-TO (FNS MB.3STATE.BUTTONEVENTINFN MB.TOGGLE.BUTTONEVENTINFN) + :CHANGES-TO (FNS MB.NWAY.ADDITEM MB.NWAY.CREATE MB.NWAY.SETSTATEFN MB.NWAY.SELECT) - :PREVIOUS-DATE " 6-Apr-2025 14:47:34" {WMEDLEY}tedit>TEDIT-BUTTONS.;225) + :PREVIOUS-DATE "14-Apr-2025 23:50:23" {WMEDLEY}tedit>TEDIT-BUTTONS.;226) (PRETTYCOMPRINT TEDIT-BUTTONSCOMS) @@ -817,7 +817,8 @@ (DEFINEQ (MB.NWAY.CREATE - [LAMBDA (SPEC MENUTSTREAM CH#) (* ; "Edited 16-Feb-2025 12:08 by rmk") + [LAMBDA (SPEC MENUTSTREAM CH#) (* ; "Edited 30-Apr-2025 14:06 by rmk") + (* ; "Edited 16-Feb-2025 12:08 by rmk") (* ; "Edited 9-Jan-2025 11:38 by rmk") (* ; "Edited 4-Jan-2025 21:39 by rmk") (* ; "Edited 20-Dec-2024 22:17 by rmk") @@ -834,6 +835,7 @@ (* gbn "24-Sep-84 15:31") (LET ((IDENTIFIER (CADR (ASSOC 'IDENTIFIER SPEC))) (BUTTONS (CADR (ASSOC 'BUTTONS SPEC))) + (SORTBUTTONS (CADR (ASSOC 'SORTBUTTONS SPEC))) [FONT (FONTCREATE (OR (CADR (ASSOC 'FONT SPEC)) '(HELVETICA 8 BOLD] (STATECHANGEFN (CADR (ASSOC 'STATECHANGEFN SPEC))) @@ -877,14 +879,14 @@ (* ;; "At most, we're as wide as the N widest buttons put together. COPY because we want to preserve the original order") - [IMAGEOBJPROP OBJ 'MAXWIDTH (for SOBJ - in [SORT (COPY SUBOBJECTS) - (FUNCTION (LAMBDA (A B) - (IGEQ (fetch XSIZE - of (IMAGEOBJPROP A 'BOUNDBOX)) - (fetch XSIZE - of (IMAGEOBJPROP B 'BOUNDBOX] - as I from 1 to MAXITEMS/LINE + (CL:WHEN SORTBUTTONS + (IMAGEOBJPROP OBJ 'SORTBUTTONS T) + [SETQ SUBOBJECTS (SORT SUBOBJECTS (FUNCTION (LAMBDA (A B) + (IGEQ (fetch XSIZE + of (IMAGEOBJPROP A 'BOUNDBOX)) + (fetch XSIZE + of (IMAGEOBJPROP B 'BOUNDBOX]) + [IMAGEOBJPROP OBJ 'MAXWIDTH (for SOBJ in SUBOBJECTS as I from 1 to MAXITEMS/LINE sum (fetch XSIZE of (IMAGEOBJPROP SOBJ 'BOUNDBOX)) finally (RETURN (IPLUS $$VAL (ITIMES SPACING (SUB1 MAXITEMS/LINE @@ -1192,7 +1194,8 @@ (RETURN (DREVERSE LINES]) (MB.NWAY.ADDITEM - [LAMBDA (OBJ NEWBUTTON) (* ; "Edited 9-Jan-2025 11:38 by rmk") + [LAMBDA (OBJ NEWBUTTON) (* ; "Edited 30-Apr-2025 14:09 by rmk") + (* ; "Edited 9-Jan-2025 11:38 by rmk") (* ; "Edited 20-Oct-2024 00:13 by rmk") (* ; "Edited 29-Sep-2024 12:47 by rmk") (* ; "Edited 26-Aug-2024 09:36 by rmk") @@ -1206,15 +1209,17 @@ (* ;; "Given an existing n-way choice menu button, add another choice to the list. The items are arranged in alphabetical order by their labels. MAXITEMS/LINE is goofy: it should flow with reshaping of the window.") (CL:WHEN NEWBUTTON - (LET* [(SUBOBJECTS (IMAGEOBJPROP OBJ 'SUBOBJECTS)) - [NEWSOBJ (MB.TOGGLE.CREATE `((IDENTIFIER ,NEWBUTTON) + (LET* [[NEWSOBJ (MB.TOGGLE.CREATE `((IDENTIFIER ,NEWBUTTON) (LABEL ,NEWBUTTON) (FONT ,(IMAGEOBJPROP OBJ 'FONT] + (SUBOBJECTS (APPEND (IMAGEOBJPROP OBJ 'SUBOBJECTS) + (CONS NEWSOBJ))) (MAXITEMS/LINE (IMAGEOBJPROP OBJ 'MAXITEMS/LINE] - [SETQ SUBOBJECTS (SORT (CONS NEWSOBJ SUBOBJECTS) - (FUNCTION (LAMBDA (S1 S2) - (ALPHORDER (IMAGEOBJPROP S1 'LABEL) - (IMAGEOBJPROP S2 'LABEL] + (CL:WHEN (IMAGEOBJPROP OBJ 'SORTBUTTONS) + [SETQ SUBOBJECTS (SORT SUBOBJECTS (FUNCTION (LAMBDA (S1 S2) + (ALPHORDER (IMAGEOBJPROP S1 + 'LABEL) + (IMAGEOBJPROP S2 'LABEL]) (IMAGEOBJPROP OBJ 'SUBOBJECTS SUBOBJECTS) [IMAGEOBJPROP OBJ 'MINWIDTH (IMAX (IMAGEOBJPROP OBJ 'MINWIDTH) (fetch XSIZE of (IMAGEOBJPROP NEWSOBJ 'BOUNDBOX] @@ -1964,25 +1969,25 @@ (MB.FIELD.INIT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3266 19211 (MB.ADD 3276 . 9797) (MB.DELETE 9799 . 10173) (MB.GET 10175 . 16945) ( -MB.GET.MBARG 16947 . 18616) (TEDIT.BACKTOMAIN 18618 . 19209)) (19255 39191 (MB.BUTTONEVENTINFN 19265 - . 20833) (MB.DISPLAYFN 20835 . 22894) (MB.SETIMAGE 22896 . 24064) (MB.SIZEFN 24066 . 25614) ( -MB.WHENOPERATEDONFN 25616 . 27565) (MB.COPYFN 27567 . 28025) (MB.GETFN 28027 . 28988) (MB.PUTFN 28990 - . 30090) (MB.SHOWSELFN 30092 . 31601) (MB.CREATE 31603 . 35626) (MB.CHANGENAME 35628 . 36110) ( -MB.INIT 36112 . 37573) (MB.TRACK.UNTIL 37575 . 38270) (MB.DON'T 38272 . 38568) (MB.SPEC.REMAINDER -38570 . 39189)) (39353 49358 (MB.3STATE.CREATE 39363 . 40227) (MB.3STATE.DISPLAYFN 40229 . 41215) ( -MB.3STATE.SHOWSELFN 41217 . 43528) (MB.3STATE.INIT 43530 . 44941) (MB.3STATE.SETSTATEFN 44943 . 45601) - (MB.3STATE.BUTTONEVENTINFN 45603 . 49356)) (49513 80181 (MB.NWAY.CREATE 49523 . 55565) ( -MB.NWAY.DISPLAYFN 55567 . 56430) (MB.NWAY.WHENOPERATEDONFN 56432 . 58622) (MB.NWAY.SIZEFN 58624 . -62560) (MB.NWAY.SELECT 62562 . 66132) (MB.NWAY.BUTTONEVENTINFN 66134 . 69346) (MB.NWAY.NEWMENUBUTTON -69348 . 70060) (MB.NWAY.COPYFN 70062 . 71029) (MB.NWAY.INIT 71031 . 72522) (MB.NWAY.ARRANGEBUTTONS -72524 . 74495) (MB.NWAY.ADDITEM 74497 . 78359) (MB.NWAY.FINDSUBOBJ 78361 . 78875) (MB.NWAY.SETSTATEFN -78877 . 80179)) (80260 92259 (MB.TOGGLE.CREATE 80270 . 81265) (MB.TOGGLE.DISPLAYFN 81267 . 82750) ( -MB.TOGGLE.INIT 82752 . 84551) (MB.SET.TOGGLE 84553 . 85754) (MB.TOGGLE.SETSTATEFN 85756 . 86596) ( -MB.TOGGLE.BUTTONEVENTINFN 86598 . 90914) (MB.TOGGLE.WHENOPERATEDONFN 90916 . 92257)) (92340 124873 ( -MB.FIELD.CREATE 92350 . 97801) (MB.FIELD.DISPLAYFN 97803 . 98594) (MB.FIELD.IMAGEBOXFN 98596 . 100078) - (MB.FIELD.PREFIXCREATE 100080 . 104016) (MB.FIELD.SUFFIXCREATE 104018 . 105678) (MB.FIELD.INIT 105680 - . 107447) (MB.FIELD.WHENOPERATEDONFN 107449 . 108720) (MB.FIELD.GETSTATEFN 108722 . 112656) ( -MB.FIELD.SETSTATEFN 112658 . 117462) (MB.FIELD.BUTTONEVENTINFN 117464 . 119769) (MB.FIELD.SIZEFN -119771 . 120011) (MB.FIELD.INSURETYPE 120013 . 124871))))) + (FILEMAP (NIL (3279 19224 (MB.ADD 3289 . 9810) (MB.DELETE 9812 . 10186) (MB.GET 10188 . 16958) ( +MB.GET.MBARG 16960 . 18629) (TEDIT.BACKTOMAIN 18631 . 19222)) (19268 39204 (MB.BUTTONEVENTINFN 19278 + . 20846) (MB.DISPLAYFN 20848 . 22907) (MB.SETIMAGE 22909 . 24077) (MB.SIZEFN 24079 . 25627) ( +MB.WHENOPERATEDONFN 25629 . 27578) (MB.COPYFN 27580 . 28038) (MB.GETFN 28040 . 29001) (MB.PUTFN 29003 + . 30103) (MB.SHOWSELFN 30105 . 31614) (MB.CREATE 31616 . 35639) (MB.CHANGENAME 35641 . 36123) ( +MB.INIT 36125 . 37586) (MB.TRACK.UNTIL 37588 . 38283) (MB.DON'T 38285 . 38581) (MB.SPEC.REMAINDER +38583 . 39202)) (39366 49371 (MB.3STATE.CREATE 39376 . 40240) (MB.3STATE.DISPLAYFN 40242 . 41228) ( +MB.3STATE.SHOWSELFN 41230 . 43541) (MB.3STATE.INIT 43543 . 44954) (MB.3STATE.SETSTATEFN 44956 . 45614) + (MB.3STATE.BUTTONEVENTINFN 45616 . 49369)) (49526 80622 (MB.NWAY.CREATE 49536 . 55719) ( +MB.NWAY.DISPLAYFN 55721 . 56584) (MB.NWAY.WHENOPERATEDONFN 56586 . 58776) (MB.NWAY.SIZEFN 58778 . +62714) (MB.NWAY.SELECT 62716 . 66286) (MB.NWAY.BUTTONEVENTINFN 66288 . 69500) (MB.NWAY.NEWMENUBUTTON +69502 . 70214) (MB.NWAY.COPYFN 70216 . 71183) (MB.NWAY.INIT 71185 . 72676) (MB.NWAY.ARRANGEBUTTONS +72678 . 74649) (MB.NWAY.ADDITEM 74651 . 78800) (MB.NWAY.FINDSUBOBJ 78802 . 79316) (MB.NWAY.SETSTATEFN +79318 . 80620)) (80701 92700 (MB.TOGGLE.CREATE 80711 . 81706) (MB.TOGGLE.DISPLAYFN 81708 . 83191) ( +MB.TOGGLE.INIT 83193 . 84992) (MB.SET.TOGGLE 84994 . 86195) (MB.TOGGLE.SETSTATEFN 86197 . 87037) ( +MB.TOGGLE.BUTTONEVENTINFN 87039 . 91355) (MB.TOGGLE.WHENOPERATEDONFN 91357 . 92698)) (92781 125314 ( +MB.FIELD.CREATE 92791 . 98242) (MB.FIELD.DISPLAYFN 98244 . 99035) (MB.FIELD.IMAGEBOXFN 99037 . 100519) + (MB.FIELD.PREFIXCREATE 100521 . 104457) (MB.FIELD.SUFFIXCREATE 104459 . 106119) (MB.FIELD.INIT 106121 + . 107888) (MB.FIELD.WHENOPERATEDONFN 107890 . 109161) (MB.FIELD.GETSTATEFN 109163 . 113097) ( +MB.FIELD.SETSTATEFN 113099 . 117903) (MB.FIELD.BUTTONEVENTINFN 117905 . 120210) (MB.FIELD.SIZEFN +120212 . 120452) (MB.FIELD.INSURETYPE 120454 . 125312))))) STOP diff --git a/library/tedit/TEDIT-BUTTONS.LCOM b/library/tedit/TEDIT-BUTTONS.LCOM index aa145bcf3c8d31f38c4e054e09f85115cd387d3e..a863e3c5037f46d4fba2da2dc01928896dd55eb5 100644 GIT binary patch delta 3070 zcmZuz-)|IE6z*&jV+%nRN?8^HCu?n5pv&C(y=_EhyR*B~?#^9zW-TNn1EB`6D#V!h zI0+9ti=#2d#K^M`S}HLblZkJ}_{akg{|JfCHlBNDW@l%l*=FuJ_uO;OJ@=gNyMKkH z=bx88-I|ld74z;#E0QRwK$KOnu}X{wJ8LJ5Wtgo=jcig9R~2nl5+6h-ZaG`#mAct# z*`C#h+aE%$J?iyf(z;%+*I@hl$M0^x+>KUSo?U9&J!^evnV!{x+RFk7%cXO#8bBmf zZph)6!s}sl|5!M4|Fv_j<+&a%Y&+0z)_FXxh2FenSRD+lcWgRxS6XNQvmq7Cy*Epj z#Xtj>HaB1Zk^(mSkW@j8@koQ_$n&U!^F#u7)Wjv|*JUz+u4Q++9vh3`4$O7i>7dYn z*slRC>Uid0(7S?K9s1^FmLm5;&vq{J7gp^eUP zfKkw)7f0oW9r@C6^qd^p?wicqU54rE$?zNbbV#qygulw|8Etk7|H`We!vo4fu*oHV z?)}o{D@_0U>{EZ z;h(-otBd}rs5Jff4|@8DUvaqk-+L#w%jF}qHvM?|-mWmZGZo-MhwpNf9^p350p=_b z=%JicDVxXXV!Ze+U5Xd*)k4m0J}=okzUN%I@#swA`!c+xye1_iSRDV*ShZ8CMO|1s8HIE!q zbXf2gB8M(y@$*CM&HrEb=#9jT+j5uVlP+*^cmD%gEBUqEeOK_$W-bN49?|n(&^kT; zPw*A3`{yHi)?bR~V##0J-M=CDN<>AR{A_psPt1`rvGj>AMYLXG9>kp|z8LN9e>=6L z>jZdtVs8wF6#Ie5d4*;)3JM(?vu_3+D_x_htVxF0W_9cBk=X-H6$@+RqJ>3Cg`HKSmx7GjZ=q6HaSgx79V0z(69IHW_65G@gIJlg5>ta^;s zKnyjRCYY)ChPLb$ZcP*guG+nx)iHZ@bJzhQYtY{`J=#Y=Z6vk~OtbPxoGLnpJT3(m z5`?ZH8q<-}YSPP~i$*4B2BIPdeB=&ILjZR0lYl5_3g)V1IiB6Nts!X0Z9TJTVfC;p z={R&~f!e@SCqs0W0%}Su0b;PK>$u67XjDy}z;_i3F@gG$PHYSF$BoE$`&OX z$QpsZ?W7Wx@i?P05+F{+-eobzR{;{1)JPL5shHt*8yQoI&w=lSB&7uJh#jqEx$8rF z;9k1uQ0fGRYI3z^~A_(QV^@tSVPvtW%LF9@36i;9jFbch2#n+YP zv?T2Iyf>BiaDr0dh1cf;tOSX*TM8f&5>h50{>4|DbcUp$gK^hL1gVKV-FRCPbdz>o z^6X`;r*Ie?_b02av40{5jjXwdjIEn?8e#9w>|IGjG)$gz6V3_Xrju=rK#^}G)-;(L aye^I~2(j_^n3#4b0__-z_P!sk=>GxpXw6^% delta 2898 zcmZuzL2ukd6pl9%C@Cu4G^9yds>e1dNtm0DS#inat% z1QHhxEBXrvh6553>WKrFrlCR{kgo`dTMwn;%DolmMm&$byS5=plzDI7y!Yn$eczj> zUl;xg3SaKc61HxB{K-01DF>=;aCL)f2m6}~`YKG92uW?y4X$r6dJrxI?_D_)kQ#o<)6n%p}PJpltW^8CI*itS}@zv>Wt!&oo!5iz#M{eP=I^f`nS{r(J4X~qs z>QF(9(TYQD*Ykvf`-FhITf-yPw&zB&3N6cSwme){!R?vbw$sFQ1!A`b)P>`jyq{3V?j>?4z^=^t{0`=0|s){h(c-cdb?#hO-pJhG|*XKYFqQ@saAIO z%xh)4Yew7dDimHUD#3$yUk^g9F~z1Q@TXWk5u9X8gSM3XnGXx?mm>Xd(@*?ad-BJ- zkzmWsu(ZCv2*RHXIiL$Ua1O3dG0^v~TB^B4WaurT@P zcX4jUpX*BVXGdpm7K=pzlaD6v9V+JCi2)w$$|$GBDQVL^5jjf)CoPD%qB$p);0$=gYVTy4!2l<$(V+)3E z5D!s9BYNT^R7V)}5maUC?On42Iwd&^HE*HjEO=#**YHZ#31@i=YUC_PE_a>}!zwwa z%otu~klcppxiF07!Y~baC|v-iA}5Hx2U?ZEw&-00&8TKgG(&@qU67>^deuG!ED8PRDARowC_) zB4rzZ@jcPSC6cTBmJx4`nxh?aJYZfCy~PsJzo8jW6T42mCa!{xmmUj(BRN_)9iq{o zGZm1Vb&MR-s7`dS>z3o$4cqDiujiy)M9nyr(h*rDW@=!1B^e#bkYF5Z9q~U73JVx!KAI*27e8@z zMC)-GOjX4;(<*Xs#1+2MXp-(Ku4J#>`bLD!~up%KJ(otyCu4t$6TBp1m6H#q=JpQ`YUVH|3X`_VfFp zEortTC(q7{=MOhy>z!6`y;oCO!S}s0N;~+uw=$r4KBPPcZJOr?ij_#PPO;&$xWy++ zR)N%*Q4kC$$%Gh4CKn<$Aso>WlLx^*$eL?L@az8Nfn;Jtkvv+-8R_yV;)!OnW0eyq zM_ryKv0P#ZZkon3ML3VzmTGDiGju>%s^e+IyCVn@^fP=3;lnQ4h%m!|=(011tVG8F z2ts*;3qlZ0Ly!>c{}CQtKpK>;ckz{#@=X9~B-`|?8si4LJEAZ^>WJZk@8c8`5yZjh L@p!cEt{eXXV>_Ca