diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index 3695a22eb..a22f9a7e6 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Mar-2025 21:17:50" {WMEDLEY}tedit>TEDIT.;787 151076 +(FILECREATED "31-Mar-2025 12:04:22" {WMEDLEY}TEDIT>TEDIT.;792 141883 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.WORD.FIRST \TEDIT.WORD.LAST \TEDIT.REPLACE.SELPIECES \TEDIT.DELETE - \TEDIT.COPY \TEDIT.MOVE) + :CHANGES-TO (FNS TDRIBBLE) - :PREVIOUS-DATE "16-Mar-2025 21:48:26" {WMEDLEY}TEDIT>TEDIT.;783) + :PREVIOUS-DATE "28-Mar-2025 14:10:12" {WMEDLEY}TEDIT>TEDIT.;791) (PRETTYCOMPRINT TEDITCOMS) @@ -58,7 +57,7 @@ (FILES IMAGEOBJ)) (FNS \TEDIT.CONCAT.PAGEFRAMES \TEDIT.GET.PAGE.HEADINGS \TEDIT.CONCAT.INSTALL.HEADINGS) (FNS \TEDIT.MOVE.MSG \TEDIT.READONLY) - (FNS TEDIT.NCHARS TEDIT.RPLCHARCODE TEDIT.NTHCHARCODE TEDIT.NTHCHAR \TEDIT.PIECE.NTHCHARCODE) + (FNS TEDIT.NCHARS TEDIT.RPLCHARCODE TEDIT.NTHCHARCODE TEDIT.NTHCHAR) (* ;; "Slashed functions. Private?") @@ -722,25 +721,25 @@ (DEFINEQ (TDRIBBLE - [LAMBDA NIL (* ; "Edited 16-Mar-2025 21:47 by rmk") + [LAMBDA NIL (* ; "Edited 31-Mar-2025 12:03 by rmk") + (* ; "Edited 16-Mar-2025 21:47 by rmk") (* ; "Edited 27-Nov-2024 23:20 by rmk") (* ; "Edited 17-Nov-2024 14:10 by rmk") (* ; "Edited 15-Nov-2024 21:13 by rmk") (* ; "Edited 22-Oct-2024 21:23 by rmk") - (LET [(TSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL `(HISTORY OFF TITLE "Tedit dribble" FONT - DEFAULTFONT] - [WHENCLOSE TSTREAM 'BEFORE (FUNCTION (LAMBDA (TSTREAM) - (TEDIT TSTREAM [GETBOXREGION - (fetch (REGION WIDTH) - of (WINDOWPROP (WFROMDS T) - 'REGION)) - (fetch (REGION HEIGHT) - of (WINDOWPROP (WFROMDS T) + (LET [(TSTREAM (OPENTEXTSTREAM NIL NIL NIL NIL `(HISTORY OFF FONT DEFAULTFONT] + [WHENCLOSE TSTREAM 'BEFORE + (FUNCTION (LAMBDA (TSTREAM) + [TEDIT TSTREAM 'Dribble NIL + `(TITLE ,(CONCAT "Tedit Dribble " (DATE)) + LEAVETTY T APPEND QUIET PARABREAKCHARS NIL HISTORY OFF + OPENWIDTH ,(fetch (REGION WIDTH) + of (WINDOWPROP (WFROMDS T) + 'REGION)) + OPENHEIGHT + ,(fetch (REGION HEIGHT) of (WINDOWPROP (WFROMDS T) 'REGION] - NIL - '(LEAVETTY T APPEND QUIET PARABREAKCHARS NIL - HISTORY OFF)) - (TEDIT.SETSEL TSTREAM 1 0] + (TEDIT.SETSEL TSTREAM 1 0] (DRIBBLE TSTREAM]) ) @@ -1108,7 +1107,8 @@ TEXTLEN))]) (TEDIT.RPLCHARCODE - [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "Edited 9-Feb-2025 12:21 by rmk") + [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "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") (* ; "Edited 27-Aug-2024 14:49 by rmk") @@ -1126,215 +1126,64 @@ (* ; "Edited 9-Nov-2023 15:53 by rmk") (* ; "Edited 4-Nov-2023 15:23 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.") + (* ;; "This is a user entry. 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)) - (PROG ((TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ))) - PC OFFSET START-OF-PIECE OLDCHAR PARALAST) - (DECLARE (SPECVARS START-OF-PIECE)) - (CL:WHEN (ILESSP N 0) - (add N (ADD1 (FGETTOBJ TEXTOBJ TEXTLEN)))) - (CL:WHEN (\TEDIT.READONLY TEXTOBJ) - (RETURN NIL)) - (CL:UNLESS (AND (IGEQ N 1) - (ILEQ N (FGETTOBJ TEXTOBJ TEXTLEN))) - (\ILLEGAL.ARG N)) - (CL:UNLESS (OR (CHARCODEP NEWCHARCODE) - (IMAGEOBJP NEWCHARCODE)) - (\ILLEGAL.ARG NEWCHARCODE)) - (CL:WHEN [AND NEWCHARLOOKS (NOT (OR (FONTP NEWCHARLOOKS) - (type? CHARLOOKS NEWCHARLOOKS] - (\ILLEGAL.ARG NEWCHARLOOKS)) - (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 - (* ;; - "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) - (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") - - (* ;; - "Chop off the suffix (essentially (\TEDIT.ALIGNEDPIECE CHNO ..) but we already have the piece") - - (\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))) (* ; - "Chop off the prefix. PC is now the singleton target ") - - (* ;; "N 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))) - (* ; - "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 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 TEXTOBJ 'CHANGED N 1)) - (RETURN TSTREAM]) + (LET ((TEXTLEN (TEDIT.NCHARS TSTREAM))) + (CL:WHEN (ILESSP N 0) + (add N (ADD1 TEXTLEN))) + (CL:UNLESS (AND (IGEQ N 1) + (ILEQ N TEXTLEN)) + (\ILLEGAL.ARG N)) + (CL:UNLESS (OR (CHARCODEP NEWCHARCODE) + (IMAGEOBJP NEWCHARCODE)) + (\ILLEGAL.ARG NEWCHARCODE)) + (CL:WHEN [AND NEWCHARLOOKS (NOT (OR (FONTP NEWCHARLOOKS) + (type? CHARLOOKS NEWCHARLOOKS] + (\ILLEGAL.ARG NEWCHARLOOKS)) + (\TEDIT.RPLCHARCODE TSTREAM NEWCHARCODE NEWCHARLOOKS DONTDISPLAY]) (TEDIT.NTHCHARCODE - [LAMBDA (TSTREAM N) (* ; "Edited 7-Jul-2024 11:09 by rmk") + [LAMBDA (TSTREAM N) (* ; "Edited 28-Mar-2025 14:10 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") (* ; "Edited 1-Feb-2024 09:50 by rmk") (* ; "Edited 8-Nov-2023 08:41 by rmk") (* ; "Edited 4-Nov-2023 15:23 by rmk") - (* ;; "Returns the Nth character of TSTREAM. First character is N=1, NIL if out of bounds. If TSTREAM is a selection, treats it as a substring, N is relative to that.") + (* ;; "Returns the Nth character-code of TSTREAM, possibly an object. First character is N=1, NIL if out of bounds. If TSTREAM is a selection, treats it as a substring, N is relative to that.") (* ;; "This is a user-entry. If TSTREAM is a selection with a SELTEXTSTREAM, it is an external selection not held by the stream. No calls with internal selections should come through here.") - (LET (TEXTOBJ START-OF-PIECE) - (DECLARE (SPECVARS START-OF-PIECE)) - [if (type? SELECTION TSTREAM) - then - (* ;; - "This case should only be a user-entry convenience--internally the stream is always passed.") - - (SETQ TEXTOBJ (TEXTOBJ (FGETSEL TSTREAM SELTEXTSTREAM))) - (CL:UNLESS (EQ N 0) - [add N (CL:IF (ILESSP N 0) - (FGETSEL TSTREAM CHLIM) - (SUB1 (FGETSEL TSTREAM CH#)))] - (CL:WHEN (OR (ILESSP N (FGETSEL TSTREAM CH#)) - (IGEQ N (FGETSEL TSTREAM CHLIM))) - - (* ;; "Out of the selection: force NIL") - - (SETQ N 0))) - else (SETQ TEXTOBJ (TEXTOBJ TSTREAM)) - (CL:WHEN (ILESSP N 0) - (SETQ N (IPLUS (FGETTOBJ TEXTOBJ TEXTLEN) - N 1)))] - (CL:WHEN (AND (IGEQ N 1) - (ILEQ N (FGETTOBJ TEXTOBJ TEXTLEN))) - (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ (\TEDIT.CHTOPC N TEXTOBJ T) - (IDIFFERENCE (ADD1 N) - START-OF-PIECE)))]) + [if (type? SELECTION TSTREAM) + then (CL:UNLESS (EQ N 0) + [add N (CL:IF (ILESSP N 0) + (FGETSEL TSTREAM CHLIM) + (SUB1 (FGETSEL TSTREAM CH#)))] + (CL:WHEN (OR (ILESSP N (FGETSEL TSTREAM CH#)) + (IGEQ N (FGETSEL TSTREAM CHLIM))) + + (* ;; "Out of the selection: force NIL") + + (SETQ N 0))) + (SETQ TSTREAM (TSTREAM TSTREAM)) + else (SETQ TSTREAM (TEXTSTREAM TSTREAM)) + (CL:WHEN (ILESSP N 0) + (SETQ N (IPLUS (TEDIT.NCHARS TSTREAM) + N 1)))] + (\TEDIT.NTHCHARCODE TSTREAM N]) (TEDIT.NTHCHAR - [LAMBDA (TSTREAM N) (* ; "Edited 22-Oct-2024 21:28 by rmk") + [LAMBDA (TSTREAM N) (* ; "Edited 28-Mar-2025 09:48 by rmk") + (* ; "Edited 22-Oct-2024 21:28 by rmk") + (* ; "Either a code or an object") (LET ((CODE (TEDIT.NTHCHARCODE TSTREAM N))) (CL:IF (FIXP CODE) (CHARACTER CODE) CODE)]) - -(\TEDIT.PIECE.NTHCHARCODE - [LAMBDA (TEXTOBJ PC OFFSET) (* ; "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") - (* ; "Edited 6-Jan-2024 16:36 by rmk") - (* ; "Edited 29-Dec-2023 11:55 by rmk") - (* ; "Edited 8-Dec-2023 22:54 by rmk") - (* ; "Edited 7-Dec-2023 15:57 by rmk") - (* ; "Edited 8-Nov-2023 08:43 by rmk") - (* ; "Edited 5-Nov-2023 08:17 by rmk") - - (* ;; "Returns the OFFSETth charcode of PC, NIL if OFFSET is out of bounds. For file pieces, ensures that the backing stream is restored to its original position, so that it remains comaptible with the values (buffer, offset) in the textstream.") - - (CL:WHEN (AND (IGEQ OFFSET 1) - (ILEQ OFFSET (PLEN PC))) - [LET ((PCONTENTS (PCONTENTS PC)) - FILEPOS) - (SELECTC (PTYPE PC) - (STRING.PTYPES (NTHCHARCODE PCONTENTS OFFSET)) - (THINFILE.PTYPE - (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) - (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) - (SUB1 OFFSET))) - (PROG1 (BIN PCONTENTS) - (\SETFILEPTR PCONTENTS FILEPOS))) - (FATFILE1.PTYPE - (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) - (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) - (SUB1 OFFSET))) - (PROG1 (create WORD - HIBYTE _ (PCHARSET PC) - LOBYTE _ (BIN PCONTENTS)) - (\SETFILEPTR PCONTENTS FILEPOS))) - (FATFILE2.PTYPE - (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) - (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) - (UNFOLD (SUB1 OFFSET) - 2))) - (PROG1 (\WIN PCONTENTS) - (\SETFILEPTR PCONTENTS FILEPOS))) - (UTF8.PTYPE (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) - [\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) - (ITIMES (SUB1 OFFSET) - (PBYTESPERCHAR PC] - (PROG1 (UTF8.INCCODEFN PCONTENTS) - (\SETFILEPTR PCONTENTS FILEPOS))) - (OBJECT.PTYPE PCONTENTS) - (SUBSTREAM.PTYPE (* ; "A substream stored as an object") - (\TEDIT.THELP 'SUBSTREAM?) - (BIN (IMAGEOBJPROP PCONTENTS 'SUBSTREAM))) - (PROGN - (* ;; "For pieces not listed because they require more work. Assumes the function updates COFFSET and that multi-byte characters are safe: don't cross buffer boundaries.") - - (\TEDIT.THELP '\TEDIT.PIECE.NTHCHARCODE])]) ) @@ -2303,7 +2152,8 @@ (DEFINEQ (\TEDIT.WORD.FIRST - [LAMBDA (TSTREAM CHNO WORDBOUNDTABLE) (* ; "Edited 20-Mar-2025 20:21 by rmk") + [LAMBDA (TSTREAM CHNO WORDBOUNDTABLE) (* ; "Edited 28-Mar-2025 10:10 by rmk") + (* ; "Edited 20-Mar-2025 20:21 by rmk") (* ; "Edited 13-Mar-2025 21:15 by rmk") (* ; "Edited 20-Dec-2024 07:51 by rmk") (* ; "Edited 29-Apr-2024 10:56 by rmk") @@ -2332,8 +2182,8 @@ (* ;; "Skip over any preceding whitespace characters. .") - [SETQ CHNO (find CN from CHNO by -1 eachtime (SETQ CH (TEDIT.NTHCHARCODE TSTREAM CN) - ) + [SETQ CHNO (find CN from CHNO by -1 eachtime (SETQ CH (\TEDIT.NTHCHARCODE TSTREAM CN + )) suchthat (OR (NOT (CHARCODEP CH)) (NEQ (\TEDIT.TTC WHITESPACE) (\SYNCODE READSA CH)) @@ -2352,8 +2202,8 @@ (if (EQ (\TEDIT.TTC TEXT) (\SYNCODE READSA CH)) - then [ADD1 (find CN from CHNO by -1 eachtime (SETQ CH (TEDIT.NTHCHARCODE TSTREAM - CN)) + then [ADD1 (find CN from CHNO by -1 eachtime (SETQ CH (\TEDIT.NTHCHARCODE + TSTREAM CN)) suchthat (OR (NOT (CHARCODEP CH)) (NEQ (\TEDIT.TTC TEXT) (\SYNCODE READSA CH)) @@ -2362,7 +2212,8 @@ else CHNO]) (\TEDIT.WORD.LAST - [LAMBDA (TSTREAM CHNO WORDBOUNDTABLE) (* ; "Edited 20-Mar-2025 20:21 by rmk") + [LAMBDA (TSTREAM CHNO WORDBOUNDTABLE) (* ; "Edited 28-Mar-2025 10:09 by rmk") + (* ; "Edited 20-Mar-2025 20:21 by rmk") (* ; "Edited 13-Mar-2025 21:06 by rmk") (* ; "Edited 29-Apr-2024 10:57 by rmk") (* ; "Edited 20-Mar-2024 10:54 by rmk") @@ -2386,7 +2237,7 @@ (* ;; "Skip over any following whitespace characters, arriving at first text/punct/object.") - [SETQ CHNO (find CN from CHNO by 1 eachtime (SETQ CH (TEDIT.NTHCHARCODE TSTREAM CN)) + [SETQ CHNO (find CN from CHNO by 1 eachtime (SETQ CH (\TEDIT.NTHCHARCODE TSTREAM CN)) suchthat (OR (NOT (CHARCODEP CH)) (NEQ (\TEDIT.TTC WHITESPACE) (\SYNCODE READSA CH)) @@ -2397,8 +2248,8 @@ (RETURN (if (EQ (\TEDIT.TTC TEXT) (\SYNCODE READSA CH)) - then [SUB1 (find CN from CHNO eachtime (SETQ CH (TEDIT.NTHCHARCODE TSTREAM CN) - ) + then [SUB1 (find CN from CHNO eachtime (SETQ CH (\TEDIT.NTHCHARCODE TSTREAM CN + )) suchthat (OR (NOT (CHARCODEP CH)) (NEQ (\TEDIT.TTC TEXT) (\SYNCODE READSA CH)) @@ -2415,7 +2266,7 @@ (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "20-Mar-2025 21:17:50") +(RPAQQ TEDITSYSTEMDATE "31-Mar-2025 12:04:23") @@ -2425,26 +2276,26 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4933 7327 (MAKE-TEDIT-EXPORTS.ALL 4943 . 5489) (UPDATE-TEDIT 5491 . 6420) (EDIT-TEDIT -6422 . 7325)) (8835 36301 (TEDIT 8845 . 11423) (TEXTSTREAM 11425 . 13345) (TEXTSTREAMP 13347 . 13731) -(COERCETEXTSTREAM 13733 . 17944) (TEDIT.CONCAT 17946 . 21252) (TEDITSTRING 21254 . 22168) (TEDIT-SEE -22170 . 22729) (TEDIT.COPY 22731 . 24876) (TEDIT.DELETE 24878 . 26130) (TEDIT.INSERT 26132 . 29090) ( -TEDIT.TERPRI 29092 . 30206) (TEDIT.KILL 30208 . 31124) (TEDIT.QUIT 31126 . 32492) (TEDIT.MOVE 32494 . -33382) (TEDIT.STRINGWIDTH 33384 . 34055) (TEDIT.CHARWIDTH 34057 . 36299)) (36302 38243 (TEXTOBJ 36312 - . 36777) (COERCETEXTOBJ 36779 . 38241)) (39643 41413 (TDRIBBLE 39653 . 41411)) (41454 53562 ( -TEDIT.INSERT.OBJECT 41464 . 46305) (TEDIT.EDIT.OBJECT 46307 . 48648) (TEDIT.OBJECT.CHANGED 48650 . -51517) (TEDIT.MAP.OBJECTS 51519 . 53090) (\TEDIT.FIRST.OBJPIECE 53092 . 53325) (\TEDIT.NEXT.OBJPIECE -53327 . 53560)) (53585 61028 (\TEDIT.CONCAT.PAGEFRAMES 53595 . 58662) (\TEDIT.GET.PAGE.HEADINGS 58664 - . 59693) (\TEDIT.CONCAT.INSTALL.HEADINGS 59695 . 61026)) (61029 64458 (\TEDIT.MOVE.MSG 61039 . 63120) - (\TEDIT.READONLY 63122 . 64456)) (64459 79295 (TEDIT.NCHARS 64469 . 64842) (TEDIT.RPLCHARCODE 64844 - . 72859) (TEDIT.NTHCHARCODE 72861 . 75218) (TEDIT.NTHCHAR 75220 . 75478) (\TEDIT.PIECE.NTHCHARCODE -75480 . 79293)) (79341 134242 (\TEDIT1 79351 . 81428) (\TEDIT.INSERT 81430 . 87407) (\TEDIT.MOVE 87409 - . 94759) (\TEDIT.COPY 94761 . 98894) (\TEDIT.REPLACE.SELPIECES 98896 . 103061) ( -\TEDIT.INSERT.SELPIECES 103063 . 105948) (\TEDIT.RESTARTFN 105950 . 108455) (\TEDIT.CHARDELETE 108457 - . 111284) (\TEDIT.COPYPIECE 111286 . 116134) (\TEDIT.APPLY.OBJFN 116136 . 119333) (\TEDIT.DELETE -119335 . 124372) (\TEDIT.DIFFUSE.PARALOOKS 124374 . 126645) (\TEDIT.WORDDELETE 126647 . 128203) ( -\TEDIT.WORDDELETE.FORWARD 128205 . 129877) (\TEDIT.FINISHEDIT? 129879 . 134240)) (134243 134902 ( -\TEDIT.THELP 134253 . 134900)) (134936 143720 (\TEDIT.PARAPIECES 134946 . 136920) (\TEDIT.PARACHNOS -136922 . 137814) (\TEDIT.PARA.FIRST 137816 . 140683) (\TEDIT.PARA.LAST 140685 . 143718)) (143721 -150579 (\TEDIT.WORD.FIRST 143731 . 147616) (\TEDIT.WORD.LAST 147618 . 150577))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-ABBREV b/library/tedit/TEDIT-ABBREV index 29aaca270..88b76fa5f 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 "23-Mar-2025 17:09:00" {WMEDLEY}tedit>TEDIT-ABBREV.;20 15864 +(FILECREATED "28-Mar-2025 10:13:36" {WMEDLEY}tedit>TEDIT-ABBREV.;21 15982 :EDIT-BY rmk :CHANGES-TO (FNS \TEDIT.ABBREV.PARSE) - :PREVIOUS-DATE "20-Mar-2025 22:21:20" {WMEDLEY}tedit>TEDIT-ABBREV.;19) + :PREVIOUS-DATE "23-Mar-2025 17:09:00" {WMEDLEY}tedit>TEDIT-ABBREV.;20) (PRETTYCOMPRINT TEDIT-ABBREVCOMS) @@ -96,7 +96,8 @@ else (TEDIT.PROMPTPRINT TSTREAM "No abbreviation to expand" T]) (\TEDIT.ABBREV.PARSE - [LAMBDA (TSTREAM SEL) (* ; "Edited 23-Mar-2025 17:08 by rmk") + [LAMBDA (TSTREAM SEL) (* ; "Edited 28-Mar-2025 10:11 by rmk") + (* ; "Edited 23-Mar-2025 17:08 by rmk") (* ; "Edited 20-Mar-2025 22:21 by rmk") (* ;; "This produces candidate abbreviation-strings by parsing the characters around the point. Each candidate is returned as a list (KEY STARTCH# LEN).") @@ -130,7 +131,7 @@ (* ;; "Back up over spaces") (SETQ NSPACES (for I from PT# by -1 while (EQ (CHARCODE SPACE) - (TEDIT.NTHCHARCODE TSTREAM I)) sum 1)) + (\TEDIT.NTHCHARCODE TSTREAM I)) sum 1)) (add PT# (IMINUS NSPACES)) (CL:WHEN (ZEROP PT#) (* ; "Beginning of document") (RETURN)) @@ -160,11 +161,11 @@ do (* ;; "Comma for XCCS character names, - and / - for internal punctuation (3/4 EM-DASH). Adjacent character must be text") - (if [AND (MEMB (TEDIT.NTHCHARCODE TSTREAM (SUB1 (CADR C))) + (if [AND (MEMB (\TEDIT.NTHCHARCODE TSTREAM (SUB1 (CADR C))) (CHARCODE (%, / -))) (EQ (\TEDIT.TTC TEXT) - (TEDIT.WORDGET (TEDIT.NTHCHARCODE TSTREAM (IDIFFERENCE (CADR C) - 2] + (TEDIT.WORDGET (\TEDIT.NTHCHARCODE TSTREAM (IDIFFERENCE (CADR C) + 2] then (SETQ END (\TEDIT.WORD.FIRST TSTREAM (IDIFFERENCE (CADR C) 2))) (* ; "Comma before, maybe a charname") @@ -172,12 +173,12 @@ END)) (CAR C))) (push CANDIDATES (LIST KEY END (NCHARS KEY))) - elseif [AND (MEMB (TEDIT.NTHCHARCODE TSTREAM (IPLUS (CADR C) - (CADDR C))) + elseif [AND (MEMB (\TEDIT.NTHCHARCODE TSTREAM (IPLUS (CADR C) + (CADDR C))) (CHARCODE (%, / -))) (EQ (\TEDIT.TTC TEXT) - (TEDIT.WORDGET (TEDIT.NTHCHARCODE TSTREAM (IPLUS 1 (CADR C) - (CADDR C] + (TEDIT.WORDGET (\TEDIT.NTHCHARCODE TSTREAM (IPLUS 1 (CADR C) + (CADDR C] then [SETQ END (\TEDIT.WORD.LAST TSTREAM (ADD1 (IPLUS (CADR C) (CADDR C] (* ; "Comma after") @@ -190,7 +191,7 @@ (NCHARS KEY] (* ;  "If preceded by \, include it optionally in the key, always include it in the replacement") (for C in CANDIDATES when [EQ (CHARCODE \) - (TEDIT.NTHCHARCODE TSTREAM (SUB1 (CADR C] + (\TEDIT.NTHCHARCODE TSTREAM (SUB1 (CADR C] do (* ; "Match and replace \KEY") [push CANDIDATES (LIST (CONCAT "\" (CAR C)) (SUB1 (CADR C)) @@ -305,6 +306,6 @@ ("DATE" . \TEDIT.EXPAND.DATE) (">>DATE<<" . \TEDIT.EXPAND.DATE))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2933 14520 (\TEDIT.ABBREV.EXPAND 2943 . 5054) (\TEDIT.ABBREV.PARSE 5056 . 12222) ( -\TEDIT.EXPAND.DATE 12224 . 12857) (\TEDIT.TRY.ABBREV 12859 . 14518))))) + (FILEMAP (NIL (2933 14638 (\TEDIT.ABBREV.EXPAND 2943 . 5054) (\TEDIT.ABBREV.PARSE 5056 . 12340) ( +\TEDIT.EXPAND.DATE 12342 . 12975) (\TEDIT.TRY.ABBREV 12977 . 14636))))) STOP diff --git a/library/tedit/TEDIT-ABBREV.LCOM b/library/tedit/TEDIT-ABBREV.LCOM index 787808832..b01804eed 100644 Binary files a/library/tedit/TEDIT-ABBREV.LCOM and b/library/tedit/TEDIT-ABBREV.LCOM differ diff --git a/library/tedit/TEDIT-FILE b/library/tedit/TEDIT-FILE index a4e342a60..ab84851d3 100644 --- a/library/tedit/TEDIT-FILE +++ b/library/tedit/TEDIT-FILE @@ -1,13 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "26-Mar-2025 10:02:49" {WMEDLEY}tedit>TEDIT-FILE.;607 161915 +(FILECREATED "28-Mar-2025 14:24:34" {WMEDLEY}TEDIT>TEDIT-FILE.;608 161966 :EDIT-BY rmk - :CHANGES-TO (VARS TEDIT-FILECOMS) - (FNS TEDITFROMLISPSOURCE \TEDIT.PUT.PCTB.NEXTNEW) + :CHANGES-TO (FNS \TEDIT.GET.FORMATTED.FILE) - :PREVIOUS-DATE "14-Mar-2025 15:29:22" {WMEDLEY}tedit>TEDIT-FILE.;605) + :PREVIOUS-DATE "26-Mar-2025 10:02:49" {WMEDLEY}TEDIT>TEDIT-FILE.;607) (PRETTYCOMPRINT TEDIT-FILECOMS) @@ -687,7 +686,8 @@ (\TEDIT.INSERTPIECES PIECES NIL TEXTOBJ)))]) (\TEDIT.GET.FORMATTED.FILE - [LAMBDA (TEXT TSTREAM START END PROPS) (* ; "Edited 7-Feb-2025 08:19 by rmk") + [LAMBDA (TEXT TSTREAM START END PROPS) (* ; "Edited 28-Mar-2025 14:15 by rmk") + (* ; "Edited 7-Feb-2025 08:19 by rmk") (* ; "Edited 28-Oct-2024 17:48 by rmk") (* ; "Edited 21-Oct-2024 00:33 by rmk") (* ; "Edited 29-Apr-2024 10:25 by rmk") @@ -724,7 +724,7 @@ (\TEDIT.THELP "File format version incompatible with this version of TEdit.")) (CL:WHEN (SETQ PC (\TEDIT.LASTPIECE TEXTOBJ)) (FSETPC PC PPARALAST T)) - (\TEDIT.TRANSLATE.ASCIICHARS TEXTOBJ NIL) + (\TEDIT.TRANSLATE.ASCIICHARS TSTREAM NIL) TEXTOBJ)]) (\TEDIT.FORMATTEDSTREAMP @@ -2531,28 +2531,28 @@ (RPAQ? *TEDIT-FILE-READTABLE* (COPYREADTABLE \ORIGREADTABLE)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (5122 34670 (TEDIT.GET 5132 . 11252) (TEDIT.FORMATTEDFILEP 11254 . 12570) ( -TEDIT.FILEDATE 12572 . 13743) (TEDIT.INCLUDE 13745 . 21774) (TEDIT.RAW.INCLUDE 21776 . 22584) ( -TEDIT.PUT 22586 . 30835) (TEDIT.PUT.STREAM 30837 . 34668)) (34671 54441 (\TEDIT.GET.FOREIGN.FILE 34681 - . 38106) (\TEDIT.GET.UNFORMATTED.FILE 38108 . 42100) (\TEDIT.GET.FORMATTED.FILE 42102 . 45020) ( -\TEDIT.FORMATTEDSTREAMP 45022 . 48040) (\ARBIN 48042 . 48762) (\ATMIN 48764 . 49301) (\DWIN 49303 . -49682) (\STRINGIN 49684 . 50392) (\TEDIT.GET.TRAILER 50394 . 52910) (\TEDIT.CACHEFILE 52912 . 54439)) -(54607 68361 (\TEDIT.GET.PIECES3 54617 . 65123) (\TEDIT.GET.IDATE3 65125 . 66520) ( -\TEDIT.MAKE.STRINGPIECE 66522 . 68359)) (68362 80737 (\TEDIT.GET.UNFORMATTED.FILE.XCCS 68372 . 74488) -(\TEDIT.INTERPRET.XCCS.SHIFTS 74490 . 80735)) (80759 86781 (\TEDIT.GET.UNFORMATTED.FILE.UTF8 80769 . -86779)) (86804 95429 (\TEDIT.GET.CHARLOOKS.LIST 86814 . 87545) (\TEDIT.GET.SINGLE.CHARLOOKS 87547 . -92241) (\TEDIT.GET.CHARLOOKS 92243 . 93573) (\TEDIT.GET.PARALOOKS.INDEX 93575 . 94119) ( -\TEDIT.GET.CHARLOOKS.INDEX 94121 . 95427)) (95430 103087 (\TEDIT.GET.PARALOOKS.LIST 95440 . 96062) ( -\TEDIT.GET.SINGLE.PARALOOKS 96064 . 103085)) (103088 106678 (\TEDIT.GET.OBJECT 103098 . 106676)) ( -106740 138821 (\TEDIT.PUT.PCTB 106750 . 116400) (\TEDIT.PUT.PCTB.PIECEDATA 116402 . 119600) ( -\TEDIT.PUT.TRAILER 119602 . 120369) (\TEDIT.PUT.PCTB.MERGEABLE 120371 . 123805) ( -\TEDIT.PUT.UTF8.SPLITPIECES 123807 . 128509) (\TEDIT.PUT.PCTB.NEXTNEW 128511 . 132982) ( -\TEDIT.INSERT.NEWPIECES 132984 . 136419) (\TEDIT.PUTRESET 136421 . 136663) (\ARBOUT 136665 . 137389) ( -\ATMOUT 137391 . 137996) (\DWOUT 137998 . 138277) (\STRINGOUT 138279 . 138819)) (138822 150897 ( -\TEDIT.PUT.CHARLOOKS.LIST 138832 . 140504) (\TEDIT.PUT.SINGLE.CHARLOOKS 140506 . 146241) ( -\TEDIT.PUT.CHARLOOKS 146243 . 147468) (\TEDIT.PUT.CHARLOOKS1 147470 . 148521) (\TEDIT.PUT.OBJECT -148523 . 150895)) (150898 158537 (\TEDIT.PUT.PARALOOKS.LIST 150908 . 151810) ( -\TEDIT.PUT.SINGLE.PARALOOKS 151812 . 157396) (\TEDIT.PUT.PARALOOKS 157398 . 158535)) (158632 161644 ( -TEDITFROMLISPSOURCE 158642 . 160893) (SHELLSCRIPTP 160895 . 161124) (TEDITFROMSHELLSCRIPT 161126 . -161642))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-FILE.LCOM b/library/tedit/TEDIT-FILE.LCOM index 5f98cdea1..2ea4564e2 100644 Binary files a/library/tedit/TEDIT-FILE.LCOM and b/library/tedit/TEDIT-FILE.LCOM differ diff --git a/library/tedit/TEDIT-FIND b/library/tedit/TEDIT-FIND index 400bc8988..d1ea80078 100644 --- a/library/tedit/TEDIT-FIND +++ b/library/tedit/TEDIT-FIND @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Mar-2025 11:25:45" {WMEDLEY}tedit>TEDIT-FIND.;153 43667 +(FILECREATED "28-Mar-2025 14:07:00" {WMEDLEY}TEDIT>TEDIT-FIND.;155 43772 :EDIT-BY rmk - :CHANGES-TO (FNS TEDIT.SUBSTITUTE) + :CHANGES-TO (FNS TEDIT.NEXT) - :PREVIOUS-DATE "15-Mar-2025 00:35:11" {WMEDLEY}tedit>TEDIT-FIND.;151) + :PREVIOUS-DATE "19-Mar-2025 11:25:45" {WMEDLEY}tedit>TEDIT-FIND.;153) (PRETTYCOMPRINT TEDIT-FINDCOMS) @@ -251,7 +251,8 @@ (RETURN NREPLACEMENTS))))]) (TEDIT.NEXT - [LAMBDA (TSTREAM) (* ; "Edited 14-Mar-2025 23:14 by rmk") + [LAMBDA (TSTREAM) (* ; "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") (* ; "Edited 15-Feb-2025 18:08 by rmk") @@ -275,7 +276,7 @@ (* ;; "One pass, search in parallel") - (if [for old CHNO HIT from (FGETSEL SEL CHLIM) while (SETQ CH (TEDIT.NTHCHARCODE TEXTOBJ + (if [for old CHNO HIT from (FGETSEL SEL CHLIM) while (SETQ CH (\TEDIT.NTHCHARCODE TSTREAM CHNO)) do (SELCHARQ CH (> (CL:WHEN (SETQ HIT (\TEDIT.FIND TEXTOBJ ">>*<<" T NIL CHNO)) @@ -294,8 +295,8 @@ (IMAGEOBJPROP CH 'FIELDPREFIX)) (* ; "Menu fields") (add CHNO 1) - (RETURN (for ENDCHNO FCH from CHNO while (SETQ FCH (TEDIT.NTHCHARCODE - TEXTOBJ ENDCHNO)) + (RETURN (for ENDCHNO FCH from CHNO while (SETQ FCH (\TEDIT.NTHCHARCODE + TSTREAM ENDCHNO)) when (AND (IMAGEOBJP FCH) (IMAGEOBJPROP FCH 'FIELDSUFFIX)) do (SETQ DCH (IDIFFERENCE ENDCHNO CHNO)) @@ -687,10 +688,10 @@ (DREVERSE $$VAL))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (967 20027 (TEDIT.FIND 977 . 1561) (TEDIT.FIND.SETSEL 1563 . 2028) (TEDIT.FIND.BACKWARD -2030 . 2609) (TEDIT.SUBSTITUTE 2611 . 15430) (TEDIT.NEXT 15432 . 20025)) (20028 23457 ( -TEDIT.FIND.OBJECT 20038 . 21538) (TEDIT.FIND.OBJECT.BACKWARD 21540 . 23455)) (23490 43644 (\TEDIT.FIND - 23500 . 26436) (\TEDIT.FIND.BACKWARD 26438 . 28956) (\TEDIT.WCFIND 28958 . 32477) (\TEDIT.BASICFIND -32479 . 34838) (\TEDIT.WCFIND.BACKWARD 34840 . 38304) (\TEDIT.BASICFIND.BACKWARD 38306 . 40563) ( -\TEDIT.PARSE.SEARCHSTRING 40565 . 43642))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-FIND.LCOM b/library/tedit/TEDIT-FIND.LCOM index 3242cd767..ab0bf432b 100644 Binary files a/library/tedit/TEDIT-FIND.LCOM and b/library/tedit/TEDIT-FIND.LCOM differ diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index 3c30b6594..8b1b8553d 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,10 +1,10 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Mar-2025 08:04:27" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;249 99973 +(FILECREATED "28-Mar-2025 10:13:53" {WMEDLEY}tedit>TEDIT-FNKEYS.;250 100100 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SHOWCARETLOOKS) + :CHANGES-TO (FNS \TEDIT.WRITE.SEL \TEDIT.SHOWCARETLOOKS) :PREVIOUS-DATE "26-Mar-2025 10:37:43" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;248) @@ -1160,7 +1160,8 @@ (\TEDIT.COPYTOCLIPBOARD TSTREAM TEXTOBJ SEL T]) (\TEDIT.WRITE.SEL - [LAMBDA (TSTREAM STREAM) (* ; "Edited 21-Apr-2024 11:55 by rmk") + [LAMBDA (TSTREAM STREAM) (* ; "Edited 28-Mar-2025 10:09 by rmk") + (* ; "Edited 21-Apr-2024 11:55 by rmk") (* ;; "Writes the selected characters in TSTREAM to STREAM. ") @@ -1177,7 +1178,7 @@ (for I CODE PRE (OBJECTBYTE _ (GETTEXTPROP TEXTOBJ 'OBJECTBYTE)) (NOBJECTS _ 0) from (GETSEL SEL CH#) to (SUB1 (GETSEL SEL CHLIM)) - while (SETQ CODE (TEDIT.NTHCHARCODE TSTREAM I)) + while (SETQ CODE (\TEDIT.NTHCHARCODE TSTREAM I)) do (if (CHARCODEP CODE) then (PRINTCCODE CODE STREAM) elseif (IMAGEOBJP CODE) @@ -1879,27 +1880,27 @@ (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 (3687 7700 (CHARNAME 3697 . 7698)) (7756 21633 (TEDIT.INSTALL.CHARBINDINGS 7766 . 10949) - (TEDIT.CLEAR.CHARBINDINGS 10951 . 13542) (TEDIT.GET.CHARACTION 13544 . 16191) (TEDIT.GET.CHARBINDING -16193 . 18117) (TEDIT.GET.ALL.CHARBINDINGS 18119 . 19773) (TEDIT.GET.ALL.CHARACTIONS 19775 . 21631)) ( -21693 31311 (\TEDIT.KEY.CHARLOOKS 21703 . 22645) (\TEDIT.KEY.QUAD 22647 . 24740) (\TEDIT.DEFAULTSSEL -24742 . 25353) (\TEDIT.SETDEFAULT.FROM.SEL 25355 . 26032) (\TEDIT.KEY.SIZE 26034 . 27230) ( -\TEDIT.SUBSCRIPTSEL 27232 . 27435) (\TEDIT.SUPERSCRIPTSEL 27437 . 27641) (\TEDIT.KEY.TRANSFORM 27643 - . 29453) (\TEDIT.KEY.OPENLINE 29455 . 29909) (\TEDIT.KEY.FAMILYN 29911 . 31309)) (31312 31601 ( -CAP-CASECODE 31322 . 31599)) (31635 34565 (\TEDIT.SHOWCARETLOOKS 31645 . 33658) (\TEDIT.DESCRIBEFONT -33660 . 34563)) (34596 49332 (\TEDIT.ONECHAR.BACKWARD 34606 . 35735) (\TEDIT.ONECHAR.FORWARD 35737 . -36955) (\TEDIT.ONELINE.UP 36957 . 39918) (\TEDIT.ONELINE.DOWN 39920 . 41577) (\TEDIT.ONELINE.MOVE -41579 . 43793) (\TEDIT.ONEWORD.BACKWARD 43795 . 44947) (\TEDIT.ONEWORD.FORWARD 44949 . 46100) ( -\TEDIT.LINE.BEGIN 46102 . 47153) (\TEDIT.LINE.END 47155 . 48364) (\TEDIT.DOCUMENT.BEGIN 48366 . 48725) - (\TEDIT.DOCUMENT.END 48727 . 49330)) (49333 51177 (\TEDIT.LINEDELETE.FORWARD 49343 . 50243) ( -\TEDIT.LINEDELETE.BACKWARD 50245 . 51175)) (51178 53436 (\TEDIT.KEY.NEST 51188 . 53434)) (53490 61445 -(\TEDIT.KEY.FIND 53500 . 58585) (\TEDIT.KEY.FIND.SEARCHSTRING 58587 . 59727) (\TEDIT.GET.TARGET.STRING - 59729 . 61443)) (61476 64108 (\TEDIT.KEY.SUBSTITUTE 61486 . 61707) (\TEDIT.MANPAGE 61709 . 62956) ( -\TEDIT.CALL.ED 62958 . 63788) (\TEDIT.SELECT.ALL 63790 . 64106)) (64135 69715 (\TEDIT.CLIPBOARD 64145 - . 65900) (\TEDIT.COPYTOCLIPBOARD 65902 . 66682) (\TEDIT.EXTRACTTOCLIPBOARD 66684 . 66879) ( -\TEDIT.WRITE.SEL 66881 . 69713)) (70067 81782 (\TEDIT.READTABLE 70077 . 71013) ( -\TEDIT.WORDBOUND.READTABLE 71015 . 73644) (TEDIT.GETSYNTAX 73646 . 75165) (TEDIT.SETSYNTAX 75167 . -76372) (TEDIT.GETFUNCTION 76374 . 77546) (TEDIT.SETFUNCTION 77548 . 79534) (TEDIT.WORDGET 79536 . -79797) (TEDIT.WORDSET 79799 . 80430) (TEDIT.ATOMBOUND.READTABLE 80432 . 81780)) (92370 98909 ( -TEDIT.BUTTONS.BUILD 92380 . 97177) (TEDIT.BUTTONBITMAP.FILL 97179 . 98907))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 5a7ed1a26..dc1f405fa 100644 Binary files a/library/tedit/TEDIT-FNKEYS.LCOM and b/library/tedit/TEDIT-FNKEYS.LCOM differ diff --git a/library/tedit/TEDIT-HISTORY b/library/tedit/TEDIT-HISTORY index 642df4d07..1d249bbbe 100644 --- a/library/tedit/TEDIT-HISTORY +++ b/library/tedit/TEDIT-HISTORY @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "16-Mar-2025 18:50:43" {WMEDLEY}tedit>TEDIT-HISTORY.;225 53719 +(FILECREATED "28-Mar-2025 14:23:18" {WMEDLEY}TEDIT>TEDIT-HISTORY.;227 53951 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.UNDO1 TEDIT.REDO) + :CHANGES-TO (FNS \TEDIT.UNDO.REPLACECODE \TEDIT.UNDO1) - :PREVIOUS-DATE "15-Mar-2025 22:42:11" {WMEDLEY}tedit>TEDIT-HISTORY.;224) + :PREVIOUS-DATE "16-Mar-2025 18:50:43" {WMEDLEY}tedit>TEDIT-HISTORY.;225) (PRETTYCOMPRINT TEDIT-HISTORYCOMS) @@ -396,7 +396,8 @@ (\TEDIT.SHOWSEL SEL T TEXTOBJ]) (\TEDIT.UNDO1 - [LAMBDA (TSTREAM EVENT) (* ; "Edited 16-Mar-2025 18:46 by rmk") + [LAMBDA (TSTREAM EVENT) (* ; "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") (* ; "Edited 22-Sep-2024 21:41 by rmk") @@ -431,7 +432,7 @@ (* ;; "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 TEXTOBJ EVENT)) + (:ReplaceCode (\TEDIT.UNDO.REPLACECODE TSTREAM EVENT)) (:Closefile (* ; "Closes an included file") (CL:WHEN (STREAMP (GETTH EVENT THOLDINFO)) (CLOSEF? (GETTH EVENT THOLDINFO)))) @@ -805,8 +806,9 @@ (\TEDIT.SCROLL.CARET TSTREAM]) (\TEDIT.UNDO.REPLACECODE - [LAMBDA (TEXTOBJ EVENT) (* ; "Edited 23-Sep-2024 00:45 by rmk") - (TEDIT.RPLCHARCODE TEXTOBJ (GETTH EVENT THCH#) + [LAMBDA (TSTREAM EVENT) (* ; "Edited 28-Mar-2025 14:22 by rmk") + (* ; "Edited 23-Sep-2024 00:45 by rmk") + (\TEDIT.RPLCHARCODE TSTREAM (GETTH EVENT THCH#) (GETTH EVENT THOLDINFO]) ) (DEFINEQ @@ -846,14 +848,14 @@ (\TEDIT.THELP 'Redo-composite]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4909 5930 (\TEDIT.HISTORYEVENT.DEFPRINT 4919 . 5928)) (7020 17605 (\TEDIT.HISTORYADD -7030 . 11891) (\TEDIT.HISTORYADD.COMPOSITE 11893 . 12799) (\TEDIT.CUMULATE.EVENTS 12801 . 14395) ( -\TEDIT.COMPOSITE.EVENT 14397 . 15133) (\TEDIT.HISTORY.PROP 15135 . 16498) (\TEDIT.HISTORY.EVENT 16500 - . 17429) (\TEDIT.POPEVENT 17431 . 17603)) (17658 36127 (TEDIT.UNDO 17668 . 22227) (\TEDIT.UNDO1 22229 - . 26541) (TEDIT.REDO 26543 . 33281) (\TEDIT.UNDO.UNDO 33283 . 36125)) (36128 51335 ( -\TEDIT.UNDO.INSERT 36138 . 37051) (\TEDIT.UNDO.DELETE 37053 . 37847) (\TEDIT.UNDO.MOVE 37849 . 39438) -(\TEDIT.UNDO.REPLACE 39440 . 40657) (\TEDIT.UNDO.CHARLOOKS 40659 . 45233) (\TEDIT.UNDO.PARALOOKS 45235 - . 49467) (\TEDIT.UNDO.PAGELOOKS 49469 . 49878) (\TEDIT.UNDO.COMPOSITE 49880 . 51107) ( -\TEDIT.UNDO.REPLACECODE 51109 . 51333)) (51336 53696 (\TEDIT.REDO.INSERT 51346 . 52079) ( -\TEDIT.REDO.REPLACE 52081 . 53412) (\TEDIT.REDO.COMPOSITE 53414 . 53694))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-HISTORY.LCOM b/library/tedit/TEDIT-HISTORY.LCOM index 51abfabaf..58449eb91 100644 Binary files a/library/tedit/TEDIT-HISTORY.LCOM and b/library/tedit/TEDIT-HISTORY.LCOM differ diff --git a/library/tedit/TEDIT-LOOKS b/library/tedit/TEDIT-LOOKS index db1ed347d..efa2ec25a 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 "23-Mar-2025 15:10:37" {WMEDLEY}tedit>TEDIT-LOOKS.;399 155940 +(FILECREATED "30-Mar-2025 22:01:10" {WMEDLEY}TEDIT>TEDIT-LOOKS.;403 156185 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.CHARLOOKS.CHANGE.FONT \TEDIT.FONT.NEXTSIZE \TEDIT.FONTCLASS.TO.FONT - \TEDIT.CHANGE.CHARLOOKS) - (VARS TEDIT-LOOKSCOMS) + :CHANGES-TO (FNS \TEDIT.TRANSLATE.ASCIICHARS) - :PREVIOUS-DATE "19-Mar-2025 13:20:52" {WMEDLEY}tedit>TEDIT-LOOKS.;395) + :PREVIOUS-DATE "28-Mar-2025 14:24:25" {WMEDLEY}TEDIT>TEDIT-LOOKS.;402) (PRETTYCOMPRINT TEDIT-LOOKSCOMS) @@ -903,7 +901,9 @@ (DEFINEQ (\TEDIT.TRANSLATE.ASCIICHARS - [LAMBDA (TEXTOBJ NOASCIIFONTS) (* ; "Edited 2-Jan-2025 23:30 by rmk") + [LAMBDA (TSTREAM NOASCIIFONTS) (* ; "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") (* ; "Edited 22-Dec-2024 11:42 by rmk") (* ; "Edited 20-Dec-2024 13:34 by rmk") @@ -922,129 +922,133 @@ (* ;; "\ASCII2MCCS is the default translation array, for Gacha, Timesroman. HIPPO, MATH ... have their own.") (DECLARE (GLOBALVARS ASCIITONSTRANSLATIONS \ASCII2MCCS)) - (SETQ TEXTOBJ (TEXTOBJ TEXTOBJ)) - (CL:WHEN (thereis CL FAMILY in (FGETTOBJ TEXTOBJ TXTCHARLOOKSLIST) - unless [EQ 'CLASSIC (SETQ FAMILY (FONTPROP (GETCLOOKS CL CLFONT) - 'FAMILY] suchthat + (LET + ((TEXTOBJ (TEXTOBJ TSTREAM))) + (CL:WHEN (thereis CL FAMILY in (FGETTOBJ TEXTOBJ TXTCHARLOOKSLIST) + unless [EQ 'CLASSIC (SETQ FAMILY (FONTPROP (GETCLOOKS CL CLFONT) + 'FAMILY] suchthat (* ;; "CLASSIC is in the list presumably to provide a coercion to MODERN for Interpress. We don't want to translate it.") - (ASSOC FAMILY - ASCIITONSTRANSLATIONS)) - (for CHNO CLOOKS TRANS MAPARRAY NEWFONTNAME STRING FAT CLOOKSLIST FAMILY TARRAYLAST - from 1 by (PLEN PC) as PC inpieces (\TEDIT.FIRSTPIECE TEXTOBJ) - eachtime (SETQ CLOOKS (PLOOKS PC)) - (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) - 'FAMILY)) unless (OR (EQ OBJECT.PTYPE (PTYPE PC)) - (EQ FAMILY 'CLASSIC)) - when (SETQ TRANS (ASSOC FAMILY ASCIITONSTRANSLATIONS)) - do - (* ;; "PC needs some work.") - - (SETQ MAPARRAY (CADR TRANS)) - (SETQ NEWFONTNAME (CADDR TRANS)) - (CL:WHEN MAPARRAY (* ; + (ASSOC FAMILY + ASCIITONSTRANSLATIONS) + ) + (for CHNO CLOOKS TRANS MAPARRAY NEWFONTNAME STRING FAT CLOOKSLIST FAMILY TARRAYLAST + from 1 by (PLEN PC) as PC inpieces (\TEDIT.FIRSTPIECE TEXTOBJ) + eachtime (SETQ CLOOKS (PLOOKS PC)) + (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) + 'FAMILY)) unless (OR (EQ OBJECT.PTYPE (PTYPE PC)) + (EQ FAMILY 'CLASSIC)) + when (SETQ TRANS (ASSOC FAMILY ASCIITONSTRANSLATIONS)) + do + (* ;; "PC needs some work.") + + (SETQ MAPARRAY (CADR TRANS)) + (SETQ NEWFONTNAME (CADDR TRANS)) + (CL:WHEN MAPARRAY (* ;  "Idiosyncratic fonts (MATH, CYRILLIC). ") - (SETQ MAPARRAY (GETATOMVAL MAPARRAY)) (* ; "Global value") - (CL:WHEN (AND NOASCIIFONTS (PREVPIECE PC)) + (SETQ MAPARRAY (GETATOMVAL MAPARRAY)) (* ; "Global value") + (CL:WHEN (AND NOASCIIFONTS (PREVPIECE PC)) - (* ;; " Look backward for NEWFONTNAME, since that piece has already been coerced. The idea is to get Cyrillic to continue the previous looks (serif, san-serif)") + (* ;; " Look backward for NEWFONTNAME, since that piece has already been coerced. The idea is to get Cyrillic to continue the previous looks (serif, san-serif)") - (SETQ NEWFONTNAME (FONTPROP (GETCLOOKS (PLOOKS (PREVPIECE PC)) - CLFONT) - 'FAMILY)))) - (if (OR MAPARRAY NOASCIIFONTS) - then - (* ;; "Translate all characters in idiosyncratic fonts, flush everything and change the looks even for Helvetica etc. if NO ALTOFONTS") + (SETQ NEWFONTNAME (FONTPROP (GETCLOOKS (PLOOKS (PREVPIECE PC)) + CLFONT) + 'FAMILY)))) + (if (OR MAPARRAY NOASCIIFONTS) + then + (* ;; "Translate all characters in idiosyncratic fonts, flush everything and change the looks even for Helvetica etc. if NO ALTOFONTS") - (CL:UNLESS MAPARRAY (SETQ MAPARRAY \ASCII2MCCS)) - (SETQ TARRAYLAST (SUB1 (ARRAYSIZE MAPARRAY))) + (CL:UNLESS MAPARRAY (SETQ MAPARRAY \ASCII2MCCS)) + (SETQ TARRAYLAST (SUB1 (ARRAYSIZE MAPARRAY))) - (* ;; "Create a string with the translated codes, then convert the existing piece to a string piece holding that string.") + (* ;; "Create a string with the translated codes, then convert the existing piece to a string piece holding that string.") - (SETQ STRING (ALLOCSTRING (PLEN PC))) - (for OFFSET OLDCODE NEWCODE from 1 to (PLEN PC) - do - (* ;; + (SETQ STRING (ALLOCSTRING (PLEN PC))) + (for OFFSET OLDCODE NEWCODE from 1 to (PLEN PC) + do + (* ;;  "Out-of-range alone and zero newcodes alone (some arrays are not filled in).") - (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC OFFSET)) - (RPLCHARCODE STRING OFFSET (if [OR (IGREATERP OLDCODE TARRAYLAST) - (ZEROP (SETQ NEWCODE (ELT MAPARRAY - OLDCODE] - then OLDCODE - else NEWCODE))) - (SETQ FAT (ffetch (STRINGP FATSTRINGP) of STRING)) - (FSETPC PC PTYPE (CL:IF FAT - FATSTRING.PTYPE - THINSTRING.PTYPE)) - (FSETPC PC PCONTENTS STRING) - (FSETPC PC PFPOS NIL) - (FSETPC PC PBINABLE (NOT FAT)) - (FSETPC PC PBYTESPERCHAR (CL:IF FAT - 2 - 1)) - (FSETPC PC PBYTELEN (CL:IF FAT - (UNFOLD (PLEN PC) - 2) - (PLEN PC))) - (FSETPC PC PLOOKS (\TEDIT.TRANSLATE.ASCII.CHARLOOKS TEXTOBJ CLOOKS NEWFONTNAME - )) - else - (* ;; "Must be a text font (GACHA, TIMESROMAN, HELVETICA) \ASCIITONS is the translation array, mostly identities. ") - - (* ;; "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)) - when (ILEQ OLDCODE 255) unless (EQ OLDCODE (ELT \ASCII2MCCS OLDCODE)) - do - (* ;; "First hit, scan/change the rest of PC") - - (SETQ NEWLOOKS (\TEDIT.TRANSLATE.ASCII.CHARLOOKS TEXTOBJ CLOOKS + (SETQ OLDCODE (\TEDIT.PIECE.NTHCHARCODE TEXTOBJ PC OFFSET)) + (RPLCHARCODE STRING OFFSET + (if [OR (IGREATERP OLDCODE TARRAYLAST) + (ZEROP (SETQ NEWCODE (ELT MAPARRAY OLDCODE] + then OLDCODE + else NEWCODE))) + (SETQ FAT (ffetch (STRINGP FATSTRINGP) of STRING)) + (FSETPC PC PTYPE (CL:IF FAT + FATSTRING.PTYPE + THINSTRING.PTYPE)) + (FSETPC PC PCONTENTS STRING) + (FSETPC PC PFPOS NIL) + (FSETPC PC PBINABLE (NOT FAT)) + (FSETPC PC PBYTESPERCHAR (CL:IF FAT + 2 + 1)) + (FSETPC PC PBYTELEN (CL:IF FAT + (UNFOLD (PLEN PC) + 2) + (PLEN PC))) + (FSETPC PC PLOOKS (\TEDIT.TRANSLATE.ASCII.CHARLOOKS TEXTOBJ CLOOKS NEWFONTNAME)) - (for I NEWCODE from (IPLUS CHNO (SUB1 OFFSET)) - to (SUB1 (IPLUS CHNO (PLEN PC))) eachtime (SETQ OLDCODE - (TEDIT.NTHCHARCODE TEXTOBJ I - )) - when (ILEQ OLDCODE 255) unless (EQ OLDCODE (SETQ NEWCODE - (ELT \ASCII2MCCS OLDCODE))) - do (TEDIT.RPLCHARCODE TEXTOBJ I NEWCODE NEWLOOKS)) - (RETURN))) finally + else + (* ;; "Must be a text font (GACHA, TIMESROMAN, HELVETICA) \ASCIITONS is the translation array, mostly identities. ") + + (* ;; "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)) + when (ILEQ OLDCODE 255) unless (EQ OLDCODE (ELT \ASCII2MCCS OLDCODE)) + do + (* ;; "First hit, scan/change the rest of PC") + + (SETQ NEWLOOKS (\TEDIT.TRANSLATE.ASCII.CHARLOOKS TEXTOBJ CLOOKS + NEWFONTNAME)) + (for I NEWCODE from (IPLUS CHNO (SUB1 OFFSET)) + to (SUB1 (IPLUS CHNO (PLEN PC))) eachtime (SETQ OLDCODE + (\TEDIT.NTHCHARCODE TSTREAM + I)) + when (ILEQ OLDCODE 255) unless (EQ OLDCODE (SETQ NEWCODE + (ELT \ASCII2MCCS OLDCODE)) + ) + do (\TEDIT.RPLCHARCODE TSTREAM I NEWCODE NEWLOOKS)) + (RETURN))) finally (* ;; "Here we change the default and caret looks. Perhaps this should be done only if NOASCIIFONTS. But there is a risk that Ascii fonts and characters would slip in by future editing. ") - (CL:WHEN NOASCIIFONTS - (SETQ CLOOKS (FGETTOBJ TEXTOBJ DEFAULTCHARLOOKS)) - (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) - 'FAMILY)) - (CL:WHEN (AND (NEQ FAMILY 'CLASSIC) - (SETQ TRANS (ASSOC FAMILY + (CL:WHEN NOASCIIFONTS + (SETQ CLOOKS (FGETTOBJ TEXTOBJ DEFAULTCHARLOOKS)) + (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) + 'FAMILY)) + (CL:WHEN (AND (NEQ FAMILY 'CLASSIC) + (SETQ TRANS (ASSOC FAMILY ASCIITONSTRANSLATIONS - ))) - (FSETTOBJ TEXTOBJ DEFAULTCHARLOOKS - (\TEDIT.TRANSLATE.ASCII.CHARLOOKS - TEXTOBJ CLOOKS (CADDR TRANS)))) - (SETQ CLOOKS (FGETTOBJ TEXTOBJ CARETLOOKS)) - (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) - 'FAMILY)) - (CL:WHEN (AND (NEQ FAMILY 'CLASSIC) - (SETQ TRANS (ASSOC FAMILY + ))) + (FSETTOBJ TEXTOBJ DEFAULTCHARLOOKS + (\TEDIT.TRANSLATE.ASCII.CHARLOOKS + TEXTOBJ CLOOKS (CADDR TRANS)))) + (SETQ CLOOKS (FGETTOBJ TEXTOBJ CARETLOOKS)) + (SETQ FAMILY (FONTPROP (GETCLOOKS CLOOKS CLFONT) + 'FAMILY)) + (CL:WHEN (AND (NEQ FAMILY 'CLASSIC) + (SETQ TRANS (ASSOC FAMILY ASCIITONSTRANSLATIONS - ))) - (FSETTOBJ TEXTOBJ CARETLOOKS ( + ))) + (FSETTOBJ TEXTOBJ CARETLOOKS ( \TEDIT.TRANSLATE.ASCII.CHARLOOKS - TEXTOBJ CLOOKS - (CADDR TRANS))))) - (CL:WHEN CLOOKSLIST + TEXTOBJ CLOOKS + (CADDR TRANS))))) + (CL:WHEN CLOOKSLIST - (* ;; + (* ;;  "Something happened, get rid of any lingering old looks") - (\TEDIT.UNIQUIFY.ALL TEXTOBJ))))]) + (\TEDIT.UNIQUIFY.ALL TEXTOBJ))))]) (\TEDIT.CONVERT.TO.FORMATTED - [LAMBDA (TSTREAM START END) (* ; "Edited 7-Jul-2024 09:06 by rmk") + [LAMBDA (TSTREAM START END) (* ; "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") (* ; "Edited 29-Apr-2024 10:42 by rmk") @@ -1065,7 +1069,7 @@ (* ;; "Using BIN for the main iteration is a little tricky when TEDIT.RPLCHARCODE is used to make the single-character change. RPLCHARCODE can split the pieces and parameters in the TSTREAM that are used to drive the high-speed (BINABLE) operation. It should perhaps figure out how to fix the stream internally, but for now the \TEXTSETFILEPTR gets things consistent again.") - (LET [(TEXTOBJ (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of TSTREAM] + (LET [(TEXTOBJ (TEXTOBJ! (GETTSTR TSTREAM TEXTOBJ] (CL:UNLESS (OR (FGETTOBJ TEXTOBJ FORMATTEDP) (ZEROP (FGETTOBJ TEXTOBJ TEXTLEN))) (CL:UNLESS START (SETQ START 1)) @@ -1082,7 +1086,7 @@ (* ;;  "Linefeed not preceded by CR, replace by EOL and mark it paragraph-last. What about FORM?") - (TEDIT.RPLCHARCODE TEXTOBJ CHNO (CHARCODE EOL)) + (\TEDIT.RPLCHARCODE TSTREAM CHNO (CHARCODE EOL)) (SETQ CHANGED T) (FSETPC (\TEDIT.CHTOPC CHNO TEXTOBJ) PPARALAST T)) @@ -2480,26 +2484,26 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (22713 24655 (\TEDIT.CHARLOOKS.DEFPRINT 22723 . 23859) (\TEDIT.PARALOOKS.DEFPRINT 23861 - . 24653)) (24759 25855 (\TEDIT.CREATE.DEFAULT.FMTSPEC 24769 . 25477) (\TEDIT.CREATE.FACE.MENU 25479 - . 25651) (\TEDIT.CREATE.SIZE.MENU 25653 . 25853)) (26756 26945 (\TEDIT.CHARLOOK.FEATUREP 26766 . -26943)) (27247 50519 (\TEDIT.CHARLOOKS.FROM.FONT 27257 . 29470) (\TEDIT.EQCLOOKS 29472 . 32094) ( -\TEDIT.SAMECLOOKS 32096 . 34766) (TEDIT.CARETLOOKS 34768 . 36314) (TEDIT.COPY.LOOKS 36316 . 39599) ( -\TEDIT.UNPARSE.CHARLOOKS.LIST 39601 . 42568) (\TEDIT.MODIFYLOOKS 42570 . 44564) (TEDIT.NEW.FONT 44566 - . 45013) (\TEDIT.CARETLOOKS.VERIFY 45015 . 45852) (\TEDIT.CARETPIECE 45854 . 46159) ( -\TEDIT.GET.INSERT.CHARLOOKS 46161 . 48897) (\TEDIT.GET.TERMSA.WIDTHS 48899 . 49315) ( -\TEDIT.PARSE.CHARLOOKS.LIST 49317 . 50517)) (50520 67038 (\TEDIT.TRANSLATE.ASCIICHARS 50530 . 61016) ( -\TEDIT.CONVERT.TO.FORMATTED 61018 . 67036)) (68050 75161 (\TEDIT.UNIQUIFY.CHARLOOKS 68060 . 69720) ( -\TEDIT.UNIQUIFY.PARALOOKS 69722 . 70989) (\TEDIT.UNIQUIFY.ALL 70991 . 72966) ( -\TEDIT.FLUSH.UNUSED.LOOKS 72968 . 75159)) (75194 86290 (TEDIT.LOOKS 75204 . 77593) (TEDIT.GET.LOOKS -77595 . 79624) (TEDIT.SUBLOOKS 79626 . 83654) (TEDIT.FINDLOOKS 83656 . 86288)) (86365 116283 ( -\TEDIT.CHANGE.CHARLOOKS 86375 . 95611) (\TEDIT.CHANGE.CHARLOOKS.NEW 95613 . 99238) ( -\TEDIT.CHARLOOKS.CHANGE.FONT 99240 . 107547) (\TEDIT.FONT.NEXTSIZE 107549 . 109170) (\TEDIT.LOOKS -109172 . 112501) (\TEDIT.FONTCOPY 112503 . 114004) (\TEDIT.COERCE.FONTCLASS 114006 . 115157) ( -\TEDIT.FONTCLASS.TO.FONT 115159 . 116281)) (116326 147600 (\TEDIT.EQFMTSPEC 116336 . 119551) ( -TEDIT.GET.PARALOOKS 119553 . 123600) (\TEDIT.PARSE.PARALOOKS.LIST 123602 . 130944) (TEDIT.PARALOOKS -130946 . 131986) (\TEDIT.CHANGE.PARALOOKS 131988 . 139273) (\TEDIT.CHANGE.PARALOOKS.NEW 139275 . -143258) (TEDIT.COPY.PARALOOKS 143260 . 145934) (\TEDIT.PARABOUNDS 145936 . 147598)) (147660 155058 ( -TEDIT.SUBPARALOOKS 147670 . 151454) (SAMEPARALOOKS 151456 . 155056)) (155059 155746 ( -\TEDIT.MARK.REVISION 155069 . 155744))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-LOOKS.LCOM b/library/tedit/TEDIT-LOOKS.LCOM index 3c91a859d..7830009dc 100644 Binary files a/library/tedit/TEDIT-LOOKS.LCOM and b/library/tedit/TEDIT-LOOKS.LCOM differ diff --git a/library/tedit/TEDIT-SCREEN b/library/tedit/TEDIT-SCREEN index 387d7142c..6811c065f 100644 --- a/library/tedit/TEDIT-SCREEN +++ b/library/tedit/TEDIT-SCREEN @@ -1,12 +1,14 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 6-Mar-2025 11:42:48" {WMEDLEY}TEDIT>TEDIT-SCREEN.;867 189057 +(FILECREATED "30-Mar-2025 10:02:52" {WMEDLEY}TEDIT>TEDIT-SCREEN.;871 189269 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.FORMATLINE) + :CHANGES-TO (FNS \TEDIT.VALID.LINES \TEDIT.PANE.CREATELINES \TEDIT.SUFFIXLINE.CREATE + \TEDIT.LASTVALIDLINE \TEDIT.LINES.ABOVE \TEDIT.UPDATE.LINES \TEDIT.FORMATLINE) + (RECORDS LINEDESCRIPTOR) - :PREVIOUS-DATE "25-Feb-2025 10:40:05" {WMEDLEY}TEDIT>TEDIT-SCREEN.;866) + :PREVIOUS-DATE " 6-Mar-2025 11:42:48" {WMEDLEY}TEDIT>TEDIT-SCREEN.;867) (PRETTYCOMPRINT TEDIT-SCREENCOMS) @@ -134,8 +136,8 @@ LMARK (* ; "One of SOLID, GREY, NIL. Tells what kind of special-line marker should be put in the left margin for this paragraph. (For hardcopy, can also be an indicator for special processing?)") LTEXTSTREAM (* ; "A cached textstream that this line took its text from. Filled in by \TEDIT.FORMATLINE only in hardcopy, used temporarily and the cleared by \TEDIT.FORMATBOX to avoid the circularity.") NIL (* ; "Was CACHE: A cached THISLINE, for keeping hardcopy info around while we crunch with the line descriptors to make things fit. Now: THISLINE comes from TEXTOBJ") - NIL (* ; - "Was LDOBJ: The object which lies behind this line of text, for updating, etc.") + LFIRSTSEPR (* ; + "Character position of the first separator on the line, for detecting the last valid line.") LPARALOOKS (* ;  "The paragraph looks for this line's paragraph (eventually)") (NIL FLAG) (* ; @@ -687,6 +689,7 @@ (\TEDIT.FORMATLINE [LAMBDA (TSTREAM CH#1 LINE REGION IMAGESTREAM FORMATTINGSTATE) + (* ; "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") @@ -762,7 +765,7 @@ (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 - START-OF-PIECE UNBREAKABLE OLDPIECE OLDPCCHARSLEFT OLDCARETLOOKS) + START-OF-PIECE UNBREAKABLE OLDPIECE OLDPCCHARSLEFT OLDCARETLOOKS FIRSTSEPR) (DECLARE (SPECVARS TEXTOBJ LINETYPE CHARSLOT CHNO OFFSET ASCENTC DESCENTC FONT START-OF-PIECE HASKERN UNBREAKABLE)) (CL:UNLESS LINE @@ -970,7 +973,8 @@ (* ;; "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) - else (SPACEBREAK) + else (CL:UNLESS FIRSTSEPR (SETQ FIRSTSEPR CHNO)) + (SPACEBREAK) (add TX DX) (SAVEBREAK) @@ -985,6 +989,8 @@ (* ;; "Remove all prior candidate break points and expandable spaces") + (CL:UNLESS (OR FIRSTSEPR UNBREAKABLE) + (SETQ FIRSTSEPR CHNO)) (FORGETPREVIOUSBREAK) (SETQ PREVSP (\TEDIT.FORMATLINE.PURGE.SPACES PREVSP)) @@ -1180,6 +1186,7 @@ (* ;;  "All the line information is now in our variables. Migrate to the LINE and THISLINE fields. ") + (FSETLD LINE LFIRSTSEPR (OR FIRSTSEPR (ADD1 CHNO)))(* ; "For detecting last valid line") (FSETLD LINE LCHAR1 CH#1) (FSETLD LINE LCHARLAST CHNO) (FSETLD LINE LX1 LX1) (* ; @@ -1856,7 +1863,8 @@ T)]) (\TEDIT.LINES.ABOVE - [LAMBDA (TSTREAM CHN BOTTOMY) (* ; "Edited 24-Nov-2024 11:47 by rmk") + [LAMBDA (TSTREAM CHN BOTTOMY) (* ; "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") (* ; "Edited 2-Nov-2024 23:21 by rmk") @@ -1874,27 +1882,32 @@ (* ;; "We assume this is not called on an empty text (TEXTLEN = 0), since we wouldn't know what to return. Caller should check that.") + (* ;; "If CHN is a line, this creates all lines preceding it in its paragraph.") + + (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)) first (CL:WHEN (IGREATERP CHN (TEXTLEN TEXTOBJ)) (SETQ CHN (TEXTLEN TEXTOBJ))) (SETQ CHNO (\TEDIT.PREVIOUS.LINEBREAK TSTREAM CHN)) - (* ; "The end-of-line character") - (SETQ LTOP (\TEDIT.FORMATLINE TSTREAM CHNO)) (* ; "A line containiing only the EOL") + (* ; "The character after the EOL") + (SETQ LTOP (\TEDIT.FORMATLINE TSTREAM CHNO)) (* ; "The line after the EOL") (SETQ LBOT LTOP) - (SETQ CHNO (FGETLD LTOP LCHARLIM)) until (IGREATERP CHNO CHN) - do (SETQ LINE (\TEDIT.FORMATLINE TSTREAM CHNO)) - (LINKLD LBOT LINE) - (SETQ LBOT LINE) - (SETQ CHNO (FGETLD LINE LCHARLIM)) finally + (SETQ CHNO (FGETLD LTOP LCHARLIM)) (* ; "First char of second line") + until (IGREATERP CHNO CHN) do (SETQ LINE (\TEDIT.FORMATLINE TSTREAM CHNO)) + (LINKLD LBOT LINE) + (SETQ LBOT LINE) + (SETQ CHNO (FGETLD LINE LCHARLIM)) + finally - (* ;; + (* ;;  "We now have the line chain, but they aren't positioned. Set the YBOT of LBOT to BOTTOMY") - (CL:WHEN BOTTOMY - (for L (YB _ BOTTOMY) backlines LBOT - do (SETYBOT L YB) - (add YB (FGETLD L LHEIGHT)))) - (RETURN (CONS LTOP LBOT]) + (CL:WHEN BOTTOMY + (for L (YB _ BOTTOMY) backlines LBOT do (SETYBOT L YB) + (add YB (FGETLD L LHEIGHT)))) + (RETURN (CONS LTOP LBOT]) ) (RPAQ? TEDIT.LINELEADING.BELOW NIL) @@ -2346,7 +2359,8 @@ 1)]) (\TEDIT.UPDATE.LINES - [LAMBDA (TEXTOBJ REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "Edited 1-Feb-2025 10:34 by rmk") + [LAMBDA (TEXTOBJ REASON FIRSTCHANGEDCHNO NCHARSCHANGED) (* ; "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") @@ -2381,7 +2395,7 @@ (CL:UNLESS NCHARSCHANGED (SETQ NCHARSCHANGED (FGETTOBJ TEXTOBJ TEXTLEN)))] (\TEDIT.SHOWSEL NIL NIL TEXTOBJ) - (for PANE VALIDS LASTVALID NEXTVALID LASTGAPLINE UPPERBITMAPLINES BITMAPLINES inpanes TEXTOBJ + (for PANE VALIDS LASTVALID NEXTVALID LASTGAPLINE BITMAPLINES inpanes TEXTOBJ when (SETQ VALIDS (\TEDIT.VALID.LINES PANE FIRSTCHANGEDCHNO NCHARSCHANGED REASON (FGETTOBJ TEXTOBJ STREAMHINT))) do @@ -2405,14 +2419,11 @@ (* ;; "If LASTVALID is not visible (above the pane), make sure that its NEXT is linked to the PANE's prefix") - (CL:WHEN (IGEQ (FGETLD LASTVALID YBOT) - (PANETOP PANE)) - (LINKLD (PANEPREFIX PANE) - (FGETLD LASTVALID NEXTLINE))) - (\TEDIT.SHIFTLINES LASTVALID PANE TEXTOBJ BITMAPLINES UPPERBITMAPLINES)))]) + (\TEDIT.SHIFTLINES LASTVALID PANE TEXTOBJ BITMAPLINES)))]) (\TEDIT.PANE.CREATELINES - [LAMBDA (TEXTOBJ PANE LCHARLAST YBOT) (* ; "Edited 8-Feb-2025 23:52 by rmk") + [LAMBDA (TEXTOBJ PANE LCHARLAST YBOT) (* ; "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") (* ; "Edited 17-Nov-2024 19:53 by rmk") @@ -2455,7 +2466,8 @@ LTRUEDESCENT _ 0 LPARALOOKS _ TEDIT.DEFAULT.FMTSPEC 1STLN _ NIL - LSTLN _ NIL)) + LSTLN _ NIL + LFIRSTSEPR _ MAX.FIXP)) (SETYBOT PREFIX (OR YBOT (PANEHEIGHT PANE))) (FSETPANEPROP (PANEPROPS PANE) PREFIXLINE PREFIX) @@ -2463,7 +2475,8 @@ PREFIX]) (\TEDIT.SUFFIXLINE.CREATE - [LAMBDA (PANE TEXTOBJ PREVLINE) (* ; "Edited 29-Nov-2024 10:54 by rmk") + [LAMBDA (PANE TEXTOBJ PREVLINE) (* ; "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") @@ -2480,7 +2493,7 @@ (CL:WHEN (FGETLD PREVLINE FORCED-END) (SETQ EMPTYLINE (create LINEDESCRIPTOR using SUFFIX LDUMMY _ NIL LCHARLIM _ (FGETLD SUFFIX LCHAR1) - FORCED-END _ NIL)) + FORCED-END _ NIL LFIRSTSEPR _ MAX.FIXP)) (LINKLD PREVLINE EMPTYLINE) (LINKLD EMPTYLINE SUFFIX)) SUFFIX]) @@ -2568,6 +2581,8 @@ (\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") @@ -2615,9 +2630,10 @@ (* ;; "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))) - (PREFIXLINE (PANEPREFIX PANE)) (SUFFIXLINE (PANESUFFIX PANE)) (DELTA (SELECTQ REASON (INSERTION NCHARSCHANGED) @@ -2625,15 +2641,10 @@ ((CHANGED LOOKS) NIL) (\TEDIT.THELP "BAD REASONS FOR VALID LINES"))) - FIRSTVISIBLECHNO LASTVISIBLECHNO FIRSTCHANGEDLINE LASTCHANGEDLINE LASTVALIDLINE - NEXTVALIDLINE) + FIRSTCHANGEDLINE LASTCHANGEDLINE LASTVALIDLINE NEXTVALIDLINE LINESABOVE) (CL:WHEN (EQ 0 (TEXTLEN TEXTOBJ)) (* ; "Empty document") - (RETURN (CONS PREFIXLINE))) - (CL:UNLESS SUFFIXLINE - (\TEDIT.THELP "NO SUFFIXLINE") - (RETURN NIL)) - (SETQ LASTVISIBLECHNO (SUB1 (FGETLD SUFFIXLINE LCHAR1))) - (CL:WHEN (IGREATERP FIRSTCHANGEDCHNO LASTVISIBLECHNO) + (RETURN (CONS (PANEPREFIX PANE)))) + (CL:WHEN (IGEQ FIRSTCHANGEDCHNO (FGETLD SUFFIXLINE LCHAR1)) (* ;  "Change after previously visible lines") (CL:UNLESS (ILEQ LASTCHANGEDCHNO (TEXTLEN TEXTOBJ)) @@ -2645,17 +2656,13 @@ (\TEDIT.INSERTLINE (\TEDIT.FORMATLINE TEXTOBJ FIRSTCHANGEDCHNO) SUFFIXLINE)) - (SETQ FIRSTVISIBLECHNO (FGETLD PREFIXLINE LCHARLIM)) - (SETQ FIRSTCHANGEDLINE (find L inlines (FGETLD PREFIXLINE NEXTLINE) - suchthat (FWITHINLINEP FIRSTCHANGEDCHNO L))) - (CL:UNLESS FIRSTCHANGEDLINE (* ; "Changes are not visible") + (SETQ FIRSTCHANGEDLINE (find L inlines (PANEPREFIX PANE) suchthat (FWITHINLINEP + FIRSTCHANGEDCHNO L + ))) + (CL:UNLESS FIRSTCHANGEDLINE (* ; "Change is below PANE") (RETURN NIL)) - (* ;; "Change is visible in PANE, look for the last valid line (in PANE).") - - (SETQ LASTVALIDLINE (\TEDIT.LASTVALIDLINE FIRSTCHANGEDLINE FIRSTVISIBLECHNO PANE TSTREAM)) - - (* ;; "Now for the after-change lines") + (* ;; "Change starts above or inside PANE, Where does it end?") (SETQ LASTCHANGEDLINE (find L inlines FIRSTCHANGEDLINE suchthat (FWITHINLINEP LASTCHANGEDCHNO L))) @@ -2665,6 +2672,10 @@  "Last changed line is visible, its changes may cause character to shift to or from lower lines.") (SETQ NEXTVALIDLINE (\TEDIT.NEXTVALIDLINE LASTCHANGEDLINE TSTREAM))) + + (* ;; "") + + (SETQ LASTVALIDLINE (\TEDIT.LASTVALIDLINE FIRSTCHANGEDLINE FIRSTCHANGEDCHNO PANE TSTREAM)) (CL:WHEN NEXTVALIDLINE (FSETLD NEXTVALIDLINE PREVLINE NIL) (CL:WHEN DELTA @@ -2683,7 +2694,8 @@ (RETURN (CONS LASTVALIDLINE NEXTVALIDLINE)))]) (\TEDIT.LASTVALIDLINE - [LAMBDA (FIRSTCHANGEDLINE FIRSTCHANGEDCHNO PANE TSTREAM) (* ; "Edited 18-Feb-2025 12:45 by rmk") + [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") @@ -2701,43 +2713,29 @@ (* ;; "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.") - (LET* ((PREFIXLINE (PANEPREFIX PANE)) - (FIRSTPANECHAR (AND (FGETLD PREFIXLINE NEXTLINE) - (FGETLD (FGETLD PREFIXLINE NEXTLINE) - LCHAR1))) - PREV) - (if (bind (L _ FIRSTCHANGEDLINE) - (LIMCHAR _ (SUB1 FIRSTCHANGEDCHNO)) while (SETQ PREV (FGETLD L PREVLINE)) - do - (* ;; "The previous line is valid if its ending was forced, or if L has at least one space/tab earlier then the limit. Note that PREFIXLINE is always forced-end, it stops the iteration..") - - (CL:WHEN (FGETLD PREV FORCED-END) - (RETURN (if (NEQ PREFIXLINE PREV) - then PREV - elseif (EQ 1 FIRSTPANECHAR) - then (* ; "PANE is at the top") - PREFIXLINE))) - (\TEDIT.TEXTSETFILEPTR TSTREAM (SUB1 (FGETLD L LCHAR1))) - (CL:WHEN [find I from 1 to (IDIFFERENCE LIMCHAR (FGETLD L LCHAR1)) - suchthat (MEMB (BIN TSTREAM) - (CHARCODE (SPACE TAB] - (RETURN PREV)) - (SETQ L PREV) - (SETQ LIMCHAR (FGETLD L LCHARLIM)) repeatwhile L) - else - (* ;; "None of the existing lines above FIRSTCHANGEDLINE are valid. We return a valid line that is positioned just above PANE such that everything past its LCHARLAST is valid. That line has no current bitmap and will not be displayed, but it signals where the gap begins.") - - (* ;; - "Note that that line is not linked into the chain, PANEPREFIX doesn't know about it.") - - (* ;; "We could go forward from the CAR or backwards from the CADR to find the valid line just above the pane. Maybe fewer lines backwards, if we're working at the bottom of a paragraph?") - - (find L (PTOP _ (PANEHEIGHT PANE)) backlines (CDR (\TEDIT.LINES.ABOVE TSTREAM - (SUB1 FIRSTPANECHAR) - (FGETLD FIRSTCHANGEDLINE - YTOP))) - suchthat (IGEQ (FGETLD L YBOT) - PTOP]) + (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") + + (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))) 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)))]) (\TEDIT.NEXTVALIDLINE [LAMBDA (LASTCHANGEDLINE TSTREAM) (* ; "Edited 21-Jan-2025 15:27 by rmk") @@ -2887,21 +2885,21 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27983 30199 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27993 . 30197)) (37604 120468 ( -\TEDIT.FORMATLINE 37614 . 73135) (\TEDIT.FORMATLINE.SETUP.PARA 73137 . 78303) ( -\TEDIT.FORMATLINE.HORIZONTAL 78305 . 82878) (\TEDIT.FORMATLINE.VERTICAL 82880 . 85331) ( -\TEDIT.FORMATLINE.JUSTIFY 85333 . 91354) (\TEDIT.FORMATLINE.TABS 91356 . 99384) (\TEDIT.SCALE.TABS -99386 . 100177) (\TEDIT.FORMATLINE.PURGE.SPACES 100179 . 101606) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -101608 . 102509) (\TEDIT.FORMATLINE.EMPTY 102511 . 107538) (\TEDIT.FORMATLINE.UPDATELOOKS 107540 . -113662) (\TEDIT.FORMATLINE.LASTLEGAL 113664 . 117204) (\TEDIT.LINES.ABOVE 117206 . 120466)) (120585 -122500 (\TLVALIDATE 120595 . 122498)) (122698 144236 (\TEDIT.DISPLAYLINE 122708 . 136348) ( -\TEDIT.DISPLAYLINE.TABS 136350 . 139154) (\TEDIT.LINECACHE 139156 . 139884) (\TEDIT.CREATE.LINECACHE -139886 . 140722) (\TEDIT.BLTCHAR 140724 . 143351) (\TEDIT.DIACRITIC.SHIFT 143353 . 144234)) (144851 -189034 (\TEDIT.BACKFORMAT 144861 . 147415) (\TEDIT.PREVIOUS.LINEBREAK 147417 . 150140) ( -\TEDIT.UPDATE.LINES 150142 . 155012) (\TEDIT.PANE.CREATELINES 155014 . 158117) ( -\TEDIT.SUFFIXLINE.CREATE 158119 . 159494) (\TEDIT.LINES.BELOW 159496 . 163957) (\TEDIT.MEASURED.LINES -163959 . 165859) (\TEDIT.VALID.LINES 165861 . 174122) (\TEDIT.LASTVALIDLINE 174124 . 179049) ( -\TEDIT.NEXTVALIDLINE 179051 . 180481) (\TEDIT.CLEARPANE.BELOW.LINE 180483 . 182589) (\TEDIT.INSERTLINE - 182591 . 183977) (\TEDIT.LINE.BOTTOM 183979 . 187209) (\TEDIT.SHOW.AT.BOTTOMP 187211 . 188321) ( -\TEDIT.SHOW.AT.TOPP 188323 . 189032))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index 341967d7b..92f637434 100644 Binary files a/library/tedit/TEDIT-SCREEN.LCOM and b/library/tedit/TEDIT-SCREEN.LCOM differ diff --git a/library/tedit/TEDIT-STREAM b/library/tedit/TEDIT-STREAM index 9531c9776..6134bd72a 100644 --- a/library/tedit/TEDIT-STREAM +++ b/library/tedit/TEDIT-STREAM @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "26-Mar-2025 00:29:46" {WMEDLEY}TEDIT>TEDIT-STREAM.;865 175471 +(FILECREATED "28-Mar-2025 18:32:27" {WMEDLEY}TEDIT>TEDIT-STREAM.;872 187180 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.INSERTCH) + :CHANGES-TO (FNS \TEDIT.NTHCHARCODE \TEDIT.TEXTBOUT \TEDIT.RPLCHARCODE) + (VARS TEDIT-STREAMCOMS) - :PREVIOUS-DATE "22-Mar-2025 21:37:13" {WMEDLEY}TEDIT>TEDIT-STREAM.;863) + :PREVIOUS-DATE "26-Mar-2025 00:29:46" {WMEDLEY}TEDIT>TEDIT-STREAM.;865) (PRETTYCOMPRINT TEDIT-STREAMCOMS) @@ -57,6 +58,10 @@ \TEDIT.TEXTSETEOF \TEDIT.TEXTSETFILEPTR \TEDIT.TEXTDSPXPOSITION \TEDIT.TEXTDSPYPOSITION \TEDIT.TEXTLEFTMARGIN \TEDIT.TEXTRIGHTMARGIN \TEDIT.TEXTDSPCHARWIDTH \TEDIT.TEXTDSPSTRINGWIDTH \TEDIT.TEXTDSPLINEFEED) + + (* ;; "Access by character") + + (FNS \TEDIT.NTHCHARCODE \TEDIT.PIECE.NTHCHARCODE \TEDIT.RPLCHARCODE) (COMS (* ;; "Editing support") @@ -1019,7 +1024,8 @@ (\TEDIT.THELP "UNKNOWN PIECE TYPE")))]) (\TEDIT.TEXTBOUT - [LAMBDA (TSTREAM CHAR) (* ; "Edited 17-Nov-2024 10:05 by rmk") + [LAMBDA (TSTREAM CHAR) (* ; "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") (* ; "Edited 13-Aug-2024 08:28 by rmk") @@ -1060,7 +1066,7 @@ (ERROR "FILE NOT OPEN" TSTREAM) (RETURN)) (if (ILEQ CHNO (FGETTOBJ TEXTOBJ TEXTLEN)) - then (TEDIT.RPLCHARCODE TSTREAM CHNO CHAR) (* ; + then (\TEDIT.RPLCHARCODE TSTREAM CHNO CHAR) (* ;  "Replace in the middle, add at the end") elseif (AND (\TEDIT.INSERTCH CHAR CHNO TEXTOBJ (MEMB CHAR (FGETTOBJ TEXTOBJ PARABREAKCHARS))) @@ -2193,6 +2199,190 @@ +(* ;; "Access by character") + +(DEFINEQ + +(\TEDIT.NTHCHARCODE + [LAMBDA (TSTREAM N) (* ; "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") + (* ; "Edited 1-Feb-2024 09:50 by rmk") + (* ; "Edited 8-Nov-2023 08:41 by rmk") + (* ; "Edited 4-Nov-2023 15:23 by rmk") + + (* ;; "Returns the Nth character of TEXTOBJ. First character is N=1, NIL if out of bounds. If TSTREAM is a selection, treats it as a substring, N is relative to that.") + + (LET ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) + START-OF-PIECE) + (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) + (IDIFFERENCE (ADD1 N) + START-OF-PIECE)))]) + +(\TEDIT.PIECE.NTHCHARCODE + [LAMBDA (TEXTOBJ PC OFFSET) (* ; "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") + (* ; "Edited 6-Jan-2024 16:36 by rmk") + (* ; "Edited 29-Dec-2023 11:55 by rmk") + (* ; "Edited 8-Dec-2023 22:54 by rmk") + (* ; "Edited 7-Dec-2023 15:57 by rmk") + (* ; "Edited 8-Nov-2023 08:43 by rmk") + (* ; "Edited 5-Nov-2023 08:17 by rmk") + + (* ;; "Returns the OFFSETth charcode of PC, NIL if OFFSET is out of bounds. For file pieces, ensures that the backing stream is restored to its original position, so that it remains comaptible with the values (buffer, offset) in the textstream.") + + (CL:WHEN (AND (IGEQ OFFSET 1) + (ILEQ OFFSET (PLEN PC))) + [LET ((PCONTENTS (PCONTENTS PC)) + FILEPOS) + (SELECTC (PTYPE PC) + (STRING.PTYPES (NTHCHARCODE PCONTENTS OFFSET)) + (THINFILE.PTYPE + (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) + (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) + (SUB1 OFFSET))) + (PROG1 (BIN PCONTENTS) + (\SETFILEPTR PCONTENTS FILEPOS))) + (FATFILE1.PTYPE + (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) + (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) + (SUB1 OFFSET))) + (PROG1 (create WORD + HIBYTE _ (PCHARSET PC) + LOBYTE _ (BIN PCONTENTS)) + (\SETFILEPTR PCONTENTS FILEPOS))) + (FATFILE2.PTYPE + (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) + (\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) + (UNFOLD (SUB1 OFFSET) + 2))) + (PROG1 (\WIN PCONTENTS) + (\SETFILEPTR PCONTENTS FILEPOS))) + (UTF8.PTYPE (SETQ FILEPOS (\GETFILEPTR PCONTENTS)) + [\SETFILEPTR PCONTENTS (IPLUS (PFPOS PC) + (ITIMES (SUB1 OFFSET) + (PBYTESPERCHAR PC] + (PROG1 (UTF8.INCCODEFN PCONTENTS) + (\SETFILEPTR PCONTENTS FILEPOS))) + (OBJECT.PTYPE PCONTENTS) + (SUBSTREAM.PTYPE (* ; "A substream stored as an object") + (\TEDIT.THELP 'SUBSTREAM?) + (BIN (IMAGEOBJPROP PCONTENTS 'SUBSTREAM))) + (PROGN + (* ;; "For pieces not listed because they require more work. Assumes the function updates COFFSET and that multi-byte characters are safe: don't cross buffer boundaries.") + + (\TEDIT.THELP '\TEDIT.PIECE.NTHCHARCODE])]) + +(\TEDIT.RPLCHARCODE + [LAMBDA (TSTREAM N NEWCHARCODE NEWCHARLOOKS DONTDISPLAY) (* ; "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.") + + (* ;; "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 + (* ;; + "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) (* ; + "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") + + (* ;; + "Chop off the suffix (essentially (\TEDIT.ALIGNEDPIECE CHNO ..) but we already have the piece") + + (\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))) (* ; + "Chop off the prefix. PC is now the singleton target ") + + (* ;; "N 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))) + (* ; + "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 TEXTOBJ 'CHANGED N 1)) + (RETURN TSTREAM)))]) +) + + + (* ;; "Editing support") (DECLARE%: EVAL@COMPILE DONTCOPY @@ -2879,31 +3069,32 @@ (ADDTOVAR LAMA TEXTPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (37107 67708 (\TEDIT.TEXTBIN 37117 . 47867) (\TEDIT.TEXTPEEKBIN 47869 . 53419) ( -\TEDIT.TEXTBACKFILEPTR 53421 . 59094) (\TEDIT.TEXTBOUT 59096 . 63498) (\TEDIT.INSTALL.FILEBUFFER 63500 - . 67706)) (68606 72654 (\TEDIT.TEXTOUTCHARFN 68616 . 70172) (\TEDIT.TEXTINCCODEFN 70174 . 70913) ( -\TEDIT.TEXTBACKCCODEFN 70915 . 71507) (\TEDIT.TEXTFORMATBYTESTREAM 71509 . 72212) ( -\TEDIT.TEXTFORMATBYTESTRING 72214 . 72652)) (72701 84222 (OPENTEXTSTREAM 72711 . 79663) ( -COPYTEXTSTREAM 79665 . 83445) (TEDIT.STREAMCHANGEDP 83447 . 83749) (TXTFILE 83751 . 84220)) (84223 -114083 (\TEDIT.REOPENTEXTSTREAM 84233 . 85585) (\TEDIT.OPENTEXTSTREAM.PIECES 85587 . 90017) ( -\TEDIT.OPENTEXTSTREAM.PROPS 90019 . 91121) (\TEDIT.OPENTEXTSTREAM.SETUP.SEL 91123 . 96209) ( -\TEDIT.OPENTEXTSTREAM.WINDOW 96211 . 98892) (\TEDIT.OPENTEXTSTREAM.DEFAULTLOOKS 98894 . 101864) ( -\TEDIT.OPENTEXTFILE 101866 . 103579) (\TEDIT.CREATE.TEXTSTREAM 103581 . 104626) (\TEDIT.REOPEN.STREAM -104628 . 106964) (\TEDIT.TEXTINIT 106966 . 114081)) (114121 115309 (\TEDIT.TTYBOUT 114131 . 115307)) ( -115427 134219 (\TEDIT.TEXTCLOSEF 115437 . 116761) (\TEDIT.TEXTDSPFONT 116763 . 117733) ( -\TEDIT.TEXTEOFP 117735 . 119490) (\TEDIT.TEXTGETEOFPTR 119492 . 119815) (\TEDIT.TEXTSETEOFPTR 119817 - . 120907) (\TEDIT.TEXTGETFILEPTR 120909 . 123744) (\TEDIT.TEXTSETFILEINFO 123746 . 124254) ( -\TEDIT.TEXTOPENF 124256 . 125187) (\TEDIT.TEXTSETEOF 125189 . 125805) (\TEDIT.TEXTSETFILEPTR 125807 . -127848) (\TEDIT.TEXTDSPXPOSITION 127850 . 128867) (\TEDIT.TEXTDSPYPOSITION 128869 . 129610) ( -\TEDIT.TEXTLEFTMARGIN 129612 . 130203) (\TEDIT.TEXTRIGHTMARGIN 130205 . 133368) ( -\TEDIT.TEXTDSPCHARWIDTH 133370 . 133674) (\TEDIT.TEXTDSPSTRINGWIDTH 133676 . 133982) ( -\TEDIT.TEXTDSPLINEFEED 133984 . 134217)) (135266 156139 (\TEDIT.DELETE.SELPIECES 135276 . 138789) ( -\TEDIT.INSERTCH 138791 . 146721) (\TEDIT.INSERTCH.HISTORY 146723 . 150187) (\TEDIT.INSERTEOL 150189 . -152014) (\TEDIT.INSERTCH.INSERTION 152016 . 154853) (\TEDIT.INSERTCH.EXTEND 154855 . 156137)) (156140 -157644 (\TEDIT.NEXTCHANGEABLE.CHNO 156150 . 156865) (\TEDIT.LASTCHANGEABLE.CHNO 156867 . 157642)) ( -157645 159349 (\SETUPGETCH 157655 . 159347)) (159407 163865 (\TEDIT.INSTALL.PIECE 159417 . 163863)) ( -163903 172652 (TEXTPROP 163913 . 164260) (GETTEXTPROP 164262 . 164506) (PUTTEXTPROP 164508 . 164765) ( -GETTEXTPROPS 164767 . 165211) (PUTTEXTPROPS 165213 . 166117) (\TEDIT.TEXTPROP 166119 . 172650)) ( -172653 174723 (\TEDIT.TEXTOBJ.PROPNAMES 172663 . 173615) (\TEDIT.TEXTOBJ.PROPFETCHFN 173617 . 174133) -(\TEDIT.TEXTOBJ.PROPSTOREFN 174135 . 174721))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-STREAM.LCOM b/library/tedit/TEDIT-STREAM.LCOM index 5423ed5c6..27e64ff2f 100644 Binary files a/library/tedit/TEDIT-STREAM.LCOM and b/library/tedit/TEDIT-STREAM.LCOM differ diff --git a/library/tedit/TEDIT-TFBRAVO b/library/tedit/TEDIT-TFBRAVO index 455db089f..96cd0a71b 100644 --- a/library/tedit/TEDIT-TFBRAVO +++ b/library/tedit/TEDIT-TFBRAVO @@ -1,15 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Feb-2025 12:18:40" {WMEDLEY}tedit>TEDIT-TFBRAVO.;175 94753 +(FILECREATED "28-Mar-2025 14:23:07" {WMEDLEY}TEDIT>TEDIT-TFBRAVO.;176 94631 :EDIT-BY rmk - :CHANGES-TO (RECORDS PARA) - (FNS TEDITFROMBRAVO \TFBRAVO.READ.PARALOOKS \TFBRAVO.HANDLE.HEADING - \TFBRAVO.PARSE.PROFILE.PARA \TFBRAVO.SPLIT.PARA \TFBRAVO.RUN.TABSPEC - \TFBRAVO.ADD.NAMEDTAB) + :CHANGES-TO (FNS TEDITFROMBRAVO) - :PREVIOUS-DATE " 8-Feb-2025 23:19:34" {WMEDLEY}tedit>TEDIT-TFBRAVO.;174) + :PREVIOUS-DATE "19-Feb-2025 12:18:40" {WMEDLEY}TEDIT>TEDIT-TFBRAVO.;175) (PRETTYCOMPRINT TEDIT-TFBRAVOCOMS) @@ -173,7 +170,8 @@ (RETURN T]) (TEDITFROMBRAVO - [LAMBDA (BFILE TEXTSTREAM PROPS USER.CM) (* ; "Edited 19-Feb-2025 12:13 by rmk") + [LAMBDA (BFILE TSTREAM PROPS USER.CM) (* ; "Edited 28-Mar-2025 14:16 by rmk") + (* ; "Edited 19-Feb-2025 12:13 by rmk") (* ; "Edited 8-Feb-2025 23:03 by rmk") (* ; "Edited 2-Jan-2025 22:22 by rmk") (* ; "Edited 17-Jan-2024 12:11 by rmk") @@ -188,13 +186,13 @@ (* ;;; "Top level entry for conversion from a Bravo file to a textstream. The textstream is returned, %"Writing%" here means sticking it in the textstream, not saving to a Tedit file. Assumes that a stream BFILE is positioned at the first byte to be included.") (RESETLST - (CL:UNLESS TEXTSTREAM - (SETQ TEXTSTREAM (OPENTEXTSTREAM NIL))) (* ; + (CL:UNLESS TSTREAM + (SETQ TSTREAM (OPENTEXTSTREAM NIL))) (* ;  " Produce the USER.CM's alist of default values") (bind PARA NEXTPARALOOKS USER.CM.CHARLOOKS USER.CM.PARALOOKS USER.CM.ALIST START (BSTREAM _ BFILE) - (TEXTOBJ _ (TEXTOBJ TEXTSTREAM)) declare (SPECVARS USER.CM.PARALOOKS USER.CM.CHARLOOKS - USER.CM.ALIST) + (TEXTOBJ _ (TEXTOBJ TSTREAM)) declare (SPECVARS USER.CM.PARALOOKS USER.CM.CHARLOOKS + USER.CM.ALIST) first (CL:UNLESS (SETQ USER.CM (\TFBRAVO.GET.USER.CM BFILE USER.CM TEXTOBJ)) (* ; "Go for plain text") (RETURN)) @@ -233,9 +231,9 @@ (for CHARLOOKS in (GETTOBJ TEXTOBJ TXTCHARLOOKSLIST) do (SETCLOOKS CHARLOOKS CLUSERINFO NIL)) (\TEDIT.UNIQUIFY.ALL TEXTOBJ) (* ; "Lists are complete and unique") - (\TEDIT.TRANSLATE.ASCIICHARS TEXTOBJ) + (\TEDIT.TRANSLATE.ASCIICHARS TSTREAM) (TEDIT.SETSEL TEXTOBJ 1 0 'LEFT) - (RETURN TEXTSTREAM)))]) + (RETURN TSTREAM)))]) ) (ADDTOVAR TEDIT.INPUT.FORMATS (TEDIT.BRAVOFILE? TEDITFROMBRAVO)) @@ -1505,18 +1503,18 @@ (AND NIL (\TEDIT.NAMEDTAB.INIT)) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (6790 13568 (TEDIT.BRAVOFILE? 6800 . 8530) (TEDITFROMBRAVO 8532 . 13566)) (13679 29406 ( -\TFBRAVO.GET.USER.CM 13689 . 16499) (\TFBRAVO.USER.CM.LOOKS 16501 . 17836) (\TFBRAVO.READ.USER.CM -17838 . 22408) (\TFBRAVO.INIT.PARALOOKS 22410 . 24519) (\TFBRAVO.INIT.PAGEFORMAT 24521 . 25401) ( -\TFBRAVO.GETPARAMS 25403 . 28257) (\TFBRAVO.FIND.LAST.TRAILER 28259 . 29404)) (29448 50146 ( -\TFBRAVO.PARSE.PARA 29458 . 33385) (\TFBRAVO.READ.PARALOOKS 33387 . 40277) (\TFBRAVO.CREATE.RUNS 40279 - . 41667) (\TFBRAVO.READ.CHARLOOKS 41669 . 46698) (\TFBRAVO.FONT.FROM.CHARLOOKS 46700 . 48247) ( -\TFBRAVO.READNUM? 48249 . 50144)) (50183 61224 (\TFBRAVO.HANDLE.HEADING 50193 . 52920) ( -\TFBRAVO.PARSE.PROFILE.PARA 52922 . 61222)) (61267 83303 (\TFBRAVO.INSERT.PARA 61277 . 62118) ( -\TFBRAVO.INSERT.RUN 62120 . 65422) (\TFBRAVO.SPLIT.PARA 65424 . 72739) (\TFBRAVO.RUN.TABSPEC 72741 . -77608) (\TFBRAVO.INSTALL.PAGEFORMAT 77610 . 83301)) (83304 87447 (\TFBRAVO.ASSERT 83314 . 83844) ( -\TEST.CHARACTER.LOOKS 83846 . 85732) (\TEST.PARAGRAPH.LOOKS 85734 . 87445)) (87932 94587 ( -\TFBRAVO.ADD.NAMEDTAB 87942 . 91545) (\TFBRAVO.COPY.NAMEDTAB 91547 . 91995) (\TFBRAVO.PUT.NAMEDTAB -91997 . 92277) (\TFBRAVO.GET.NAMEDTAB 92279 . 92656) (\NAMEDTABNYET 92658 . 92818) (\NAMEDTABSIZE -92820 . 93335) (\NAMEDTABPREPRINT 93337 . 93535) (\TEDIT.NAMEDTAB.INIT 93537 . 94585))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-TFBRAVO.LCOM b/library/tedit/TEDIT-TFBRAVO.LCOM index 793279d8f..95bbb468e 100644 Binary files a/library/tedit/TEDIT-TFBRAVO.LCOM and b/library/tedit/TEDIT-TFBRAVO.LCOM differ diff --git a/library/tedit/TEDIT-WINDOW b/library/tedit/TEDIT-WINDOW index 85141f62b..1ac472f13 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 "24-Mar-2025 11:30:23" {WMEDLEY}tedit>TEDIT-WINDOW.;786 236503 +(FILECREATED "31-Mar-2025 22:43:28" {WMEDLEY}tedit>TEDIT-WINDOW.;790 237200 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.WINDOW.GETREGION \TEDIT.UPDATE.TITLE) + :CHANGES-TO (FNS \TEDIT.WINDOW.GETREGION) - :PREVIOUS-DATE "18-Mar-2025 21:56:50" {WMEDLEY}tedit>TEDIT-WINDOW.;782) + :PREVIOUS-DATE "31-Mar-2025 12:04:14" {WMEDLEY}tedit>TEDIT-WINDOW.;789) (PRETTYCOMPRINT TEDIT-WINDOWCOMS) @@ -457,7 +457,8 @@ WINDOW]) (\TEDIT.WINDOW.GETREGION - [LAMBDA (TSTREAM REGIONTYPE PHEIGHT) (* ; "Edited 24-Mar-2025 11:29 by rmk") + [LAMBDA (TSTREAM REGIONTYPE PHEIGHT) (* ; "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") (* ; "Edited 18-Feb-2025 10:09 by rmk") @@ -471,12 +472,21 @@ (TERPRI PROMPTWINDOW) (if (IGREATERP (TEXTLEN TEXTOBJ) 0) - then [SETQ WIDTH (OR (GETTEXTPROP TEXTOBJ 'OPENWIDTH) + then + (* ;; "Explict user properties cover everything, otherwise allow for extra stuff") + + [SETQ WIDTH (OR (GETTEXTPROP TEXTOBJ 'OPENWIDTH) (for PARALOOKS in (FGETTOBJ TEXTOBJ TXTPARALOOKSLIST) largest (GETPLOOKS PARALOOKS RIGHTMAR) - finally (RETURN (CL:IF (AND $$EXTREME (IGREATERP $$EXTREME 0)) - $$EXTREME - (TIMES 6 PTSPERINCH))] + 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 HEIGHT (if (GETTEXTPROP TEXTOBJ 'OPENHEIGHT) elseif (ZEROP (TEXTLEN TEXTOBJ)) then 50 @@ -484,15 +494,11 @@ (CHNO _ 1) from 1 to 20 while (ILEQ CHNO TEXTLEN) sum (SETQ L (\TEDIT.FORMATLINE TSTREAM CHNO)) (SETQ CHNO (FGETLD L LCHARLIM)) - (FGETLD L LHEIGHT] - (* ; "36 for right margin selection") - (add WIDTH \TEDIT.LINEREGION.WIDTH 36 (ADD1 (TIMES 2 WBorder) - 1) - (CL:IF (FGETTOBJ TEXTOBJ TXTNOTSPLITTABLE) - 0 - \TEDIT.OP.WIDTH)) - (add HEIGHT PHEIGHT (ADD1 (TIMES 2 WBorder)) - (FONTPROP WindowTitleDisplayStream 'HEIGHT)) + (FGETLD L LHEIGHT) + finally (RETURN (IPLUS $$VAL PHEIGHT (ADD1 (TIMES 2 WBorder) + ) + (FONTPROP WindowTitleDisplayStream + 'HEIGHT] (GETBOXREGION WIDTH HEIGHT) else (GETREGION (IMAX 200 (ADD1 (TIMES 2 WBorder))) (IMAX 100 (ADD1 (TIMES 2 WBorder]) @@ -1563,7 +1569,8 @@ then (TEDIT.INSERT TSTREAM I]) (\TEDIT.FOREIGN.COPY - [LAMBDA (TTYW SOURCESEL SOURCESTREAM BKSYSBUFP) (* ; "Edited 27-Aug-2024 13:38 by rmk") + [LAMBDA (TTYW SOURCESEL SOURCESTREAM BKSYSBUFP) (* ; "Edited 28-Mar-2025 12:51 by rmk") + (* ; "Edited 27-Aug-2024 13:38 by rmk") (* ; "Edited 7-Jul-2024 09:26 by rmk") (* ; "Edited 29-Apr-2024 13:37 by rmk") (* ; "Edited 22-Apr-2024 23:47 by rmk") @@ -1583,7 +1590,7 @@ (* ;; "Have to go character by character because COPYINSERT does (PRIN2 BKSYSBUF), which creates undesired string quotes.") (for CHNO CH from (FGETSEL SOURCESEL CH#) to (SUB1 (FGETSEL SOURCESEL CHLIM)) - while (SETQ CH (TEDIT.NTHCHARCODE SOURCESTREAM CHNO)) + while (SETQ CH (\TEDIT.NTHCHARCODE SOURCESTREAM CHNO)) do (* ;; "Maybe should apply the preprintfn ?") @@ -3716,38 +3723,38 @@ (RPAQ? TEDIT.TITLED.ICON.TEMPLATE (create TITLEDICON ICON _ TEDITICON MASK _ TEDITMASK TITLEREG _ TEDIT.ICON.TITLE.REGION)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (18657 19553 (TEDIT.DEFER.UPDATES 18667 . 19551)) (19554 45257 (\TEDIT.WINDOW.CREATE -19564 . 26176) (\TEDIT.WINDOW.GETREGION 26178 . 28940) (\TEDIT.WINDOW.SETUP 28942 . 33055) ( -\TEDIT.MINIMAL.WINDOW.SETUP 33057 . 41259) (\TEDIT.CLEARPANE 41261 . 41978) (\TEDIT.FILL.PANES 41980 - . 45255)) (45258 68165 (\TEDIT.CURSORMOVEDFN 45268 . 50141) (\TEDIT.CURSOROUTFN 50143 . 50588) ( -\TEDIT.ACTIVE.WINDOWP 50590 . 51641) (\TEDIT.EXPANDFN 51643 . 52206) (\TEDIT.MAINW 52208 . 53488) ( -\TEDIT.MAINSTREAM 53490 . 53757) (\TEDIT.PRIMARYPANE 53759 . 54529) (\TEDIT.PANELIST 54531 . 55027) ( -\TEDIT.NEWREGIONFN 55029 . 57545) (\TEDIT.SET.WINDOW.EXTENT 57547 . 62801) (\TEDIT.SHRINK.ICONCREATE -62803 . 65536) (\TEDIT.SHRINKFN 65538 . 65947) (\TEDIT.PANEREGION 65949 . 68163)) (68197 99661 ( -\TEDIT.BUTTONEVENTFN 68207 . 80769) (\TEDIT.BUTTONEVENTFN.DOOPERATION 80771 . 87494) ( -\TEDIT.BUTTONEVENTFN.GETOPERATION 87496 . 89338) (\TEDIT.BUTTONEVENTFN.CURSEL.INIT 89340 . 92577) ( -\TEDIT.BUTTONEVENTFN.INACTIVE 92579 . 94921) (\TEDIT.BUTTONEVENTFN.INTITLE 94923 . 96758) ( -\TEDIT.COPYINSERTFN 96760 . 97892) (\TEDIT.FOREIGN.COPY 97894 . 99659)) (99662 116771 ( -\TEDIT.PANE.SPLIT 99672 . 104151) (\TEDIT.SPLITW 104153 . 111612) (\TEDIT.UNSPLITW 111614 . 115428) ( -\TEDIT.LINKPANES 115430 . 116193) (\TEDIT.UNLINKPANE 116195 . 116769)) (118128 119019 (TEDITWINDOWP -118138 . 119017)) (119056 122159 (TEDIT.GETINPUT 119066 . 121509) (\TEDIT.MAKEFILENAME 121511 . 122157 -)) (122208 130509 (TEDIT.PROMPTWINDOW 122218 . 122532) (TEDIT.PROMPTPRINT 122534 . 125161) ( -TEDIT.PROMPTCLEAR 125163 . 126882) (TEDIT.PROMPTFLASH 126884 . 128816) (\TEDIT.PROMPT.PAGEFULLFN -128818 . 130507)) (130747 140388 (\TEDIT.FILENAME 130757 . 131529) (\TEDIT.DEFAULT.TITLE 131531 . -133910) (\TEDIT.WINDOW.TITLE 133912 . 136081) (\TEDIT.LIKELY.FILENAME 136083 . 137870) ( -\TEDIT.UPDATE.TITLE 137872 . 140386)) (140431 148959 (TEDIT.DEACTIVATE.WINDOW 140441 . 146559) ( -\TEDIT.RESHAPEFN 146561 . 148731) (\TEDIT.REPAINTFN 148733 . 148957)) (148960 191339 (\TEDIT.SCROLLFN -148970 . 151215) (\TEDIT.SCROLLCH.TOP 151217 . 153328) (\TEDIT.SCROLLCH.BOTTOM 153330 . 157660) ( -\TEDIT.SCROLLUP 157662 . 163279) (\TEDIT.TOPLINE.YTOP 163281 . 164950) (\TEDIT.SCROLLDOWN 164952 . -171882) (\TEDIT.SCROLL.CARET 171884 . 174722) (\TEDIT.VISIBLECARETP 174724 . 177018) ( -\TEDIT.VISIBLECHARP 177020 . 178111) (\TEDIT.BITMAPLINES 178113 . 182033) (\TEDIT.SETPANE.TOPLINE -182035 . 182826) (\TEDIT.SHIFTLINES 182828 . 191337)) (191340 202209 (\TEDIT.ONSCREEN? 191350 . 195901 -) (\TEDIT.ONSCREEN.REGION 195903 . 199554) (\TEDIT.AFTERMOVEFN 199556 . 200453) (OFFSCREENP 200455 . -202207)) (202251 204868 (\TEDIT.PROCIDLEFN 202261 . 203798) (\TEDIT.PROCENTRYFN 203800 . 204245) ( -\TEDIT.PROCEXITFN 204247 . 204866)) (204947 218101 (\TEDIT.DOWNCARET 204957 . 205750) ( -\TEDIT.FLASHCARET 205752 . 207863) (\TEDIT.UPCARET 207865 . 208969) (TEDIT.NORMALIZECARET 208971 . -212189) (\TEDIT.SETCARET 212191 . 217471) (\TEDIT.CARET 217473 . 218099)) (218135 230462 ( -TEDIT.ADD.MENUITEM 218145 . 220436) (TEDIT.DEFAULT.MENUFN 220438 . 227674) (TEDIT.REMOVE.MENUITEM -227676 . 228673) (\TEDIT.CREATEMENU 228675 . 229240) (\TEDIT.MENU.WHENHELDFN 229242 . 230147) ( -\TEDIT.MENU.WHENSELECTEDFN 230149 . 230460))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-WINDOW.LCOM b/library/tedit/TEDIT-WINDOW.LCOM index e9ef7b8fd..8a5172390 100644 Binary files a/library/tedit/TEDIT-WINDOW.LCOM and b/library/tedit/TEDIT-WINDOW.LCOM differ diff --git a/library/tedit/TEDIT.LCOM b/library/tedit/TEDIT.LCOM index 061fa849e..3b8856a03 100644 Binary files a/library/tedit/TEDIT.LCOM and b/library/tedit/TEDIT.LCOM differ diff --git a/library/tedit/tedit-exports.all b/library/tedit/tedit-exports.all index 17a6fd3e9..c8cb362f3 100644 --- a/library/tedit/tedit-exports.all +++ b/library/tedit/tedit-exports.all @@ -1,11 +1,11 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "16-Mar-2025 00:20:08"  -{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;208 53292 +(FILECREATED "28-Mar-2025 17:12:59"  +{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>tedit-exports.all;209 53312 :EDIT-BY rmk - :PREVIOUS-DATE "19-Feb-2025 12:22:24" {WMEDLEY}TEDIT>tedit-exports.all;207) + :PREVIOUS-DATE "16-Mar-2025 00:20:08" {WMEDLEY}TEDIT>tedit-exports.all;208) (PRETTYCOMPRINT ((E (MAPC (MKLIST FROMFILES) (FUNCTION (LAMBDA (F) (MAPC (IMPORTFILE F FLG) (FUNCTION @@ -18,7 +18,7 @@ PRINT)))))))) (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 "16-Mar-2025 00:16:31")) +(PUTPROP (QUOTE TEDIT) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:10:12")) (RPAQQ \BTREEWORDSPERSLOT 4) (RPAQQ \BTREEMAXCOUNT 8) (CONSTANTS (\BTREEWORDSPERSLOT 4) (\BTREEMAXCOUNT 8)) @@ -118,7 +118,7 @@ $$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 "15-Mar-2025 22:39:40")) +(PUTPROP (QUOTE TEDIT-SELECTION) (QUOTE IMPORTDATE) (IDATE "19-Mar-2025 16:27:02")) (RECORD TAB (TABX . TABKIND)) (RECORD TABSPEC (DEFAULTTAB . TABS)) (DATATYPE LINECACHE ((* ;; "Image cache for display lines.") LCBITMAP (* ; @@ -148,8 +148,9 @@ FORCED-END (* ; "NIL or character (EOL, FORM...) that forces a line break") (* ; "A cached textstream that this line took its text from. Filled in by \TEDIT.FORMATLINE only in hardcopy, used temporarily and the cleared by \TEDIT.FORMATBOX to avoid the circularity." ) NIL (* ; "Was CACHE: A cached THISLINE, for keeping hardcopy info around while we crunch with the line descriptors to make things fit. Now: THISLINE comes from TEXTOBJ" -) NIL (* ; "Was LDOBJ: The object which lies behind this line of text, for updating, etc.") LPARALOOKS - (* ; "The paragraph looks for this line's paragraph (eventually)") (NIL FLAG) (* ; +) LFIRSTSEPR (* ; +"Character position of the first separator on the line, for detecting the last valid line.") +LPARALOOKS (* ; "The paragraph looks for this line's paragraph (eventually)") (NIL FLAG) (* ; "Was LDIRTY: T if this line has changed since it was last formatted.") (NIL FLAG) (* ; "Was FORCED-END flag") (NIL FLAG) (* ; "Was DELETED: T if this line has been completely deleted since it was last formatted or displayed. (Used by deletion routines to detect garbage lines)" @@ -261,7 +262,7 @@ SETQ I.V. (COND ((TYPE? THISLINE $$STARTSLOT) (PREVCHARSLOT (fetch (THISLINE NEX 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 " 6-Mar-2025 11:42:48")) +(PUTPROP (QUOTE TEDIT-SCREEN) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 17:12:44")) (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)." @@ -445,7 +446,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 "19-Feb-2025 13:39:40")) +(PUTPROP (QUOTE TEDIT-STREAM) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:26:47")) (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)) @@ -454,12 +455,12 @@ THINSTRING.PTYPE)) (FAT.PTYPES (LIST FATFILE2.PTYPE FATSTRING.PTYPE FATFILE1.PTY I in ARGS as J on ARGS when (NOT (STRINGP I)) collect (LIST (QUOTE OR) I (LIST (QUOTE HELP) "TEdit consistency-check failure [RETURN to continue]: " (COND ((STRINGP (CADR J))) (T (KWOTE I)))))) )) (T (CONS COMMENTFLG ARGS))))) -(PUTPROP (QUOTE TEDIT-COMMAND) (QUOTE IMPORTDATE) (IDATE "15-Mar-2025 23:21:12")) +(PUTPROP (QUOTE TEDIT-COMMAND) (QUOTE IMPORTDATE) (IDATE "23-Mar-2025 15:27:20")) (PUTPROPS \SMALLPIN MACRO (OPENLAMBDA (STREAM) (SIGNED (create WORD HIBYTE _ (\BIN STREAM) LOBYTE _ ( \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 "14-Mar-2025 15:29:22")) +(PUTPROP (QUOTE TEDIT-FILE) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:24:34")) (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 (* ; @@ -548,7 +549,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 "21-Feb-2025 09:49:05")) +(PUTPROP (QUOTE TEDIT-LOOKS) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:24:25")) (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 @@ -605,8 +606,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 "15-Mar-2025 00:33:15")) -(PUTPROP (QUOTE TEDIT-BUTTONS) (QUOTE IMPORTDATE) (IDATE "14-Mar-2025 15:29:51")) +(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")) (RPAQQ PTSPERPICA 12) (RPAQQ PTSPERINCH 72) (RPAQQ PICASPERINCH 6) @@ -617,14 +618,14 @@ $$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 "15-Mar-2025 23:41:25")) -(PUTPROP (QUOTE TEDIT-FIND) (QUOTE IMPORTDATE) (IDATE "15-Mar-2025 00:35:11")) +(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")) (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 "16-Mar-2025 00:03:34")) +(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")) (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?") @@ -639,7 +640,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 "15-Mar-2025 22:42:11")) +(PUTPROP (QUOTE TEDIT-HISTORY) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:23:18")) (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 +672,8 @@ REGIONPARENT FULLXPOINTER) (* ; "The parent node for this box, for sub-boxes") R (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 "11-Mar-2025 23:30:40")) -(PUTPROP (QUOTE TEDIT-TFBRAVO) (QUOTE IMPORTDATE) (IDATE "19-Feb-2025 12:18:40")) +(PUTPROP (QUOTE TEDIT-ABBREV) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 10:13:36")) +(PUTPROP (QUOTE TEDIT-TFBRAVO) (QUOTE IMPORTDATE) (IDATE "28-Mar-2025 14:23:07")) (DECLARE%: DONTCOPY (FILEMAP (NIL))) STOP