Skip to content

Commit d4f921a

Browse files
committed
Making sure that the selection is updated, dealing with empty document
1 parent 90fdbf7 commit d4f921a

14 files changed

+283
-228
lines changed

library/tedit/TEDIT

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
22

3-
(FILECREATED "18-Mar-2025 23:13:17" {WMEDLEY}<library>TEDIT>TEDIT.;784 151865
3+
(FILECREATED "19-Mar-2025 15:47:23" {WMEDLEY}<library>tedit>TEDIT.;786 152198
44

55
:EDIT-BY rmk
66

7-
:CHANGES-TO (FNS \TEDIT.COPY \TEDIT.MOVE)
7+
:CHANGES-TO (FNS \TEDIT.REPLACE.SELPIECES \TEDIT.DELETE \TEDIT.COPY \TEDIT.MOVE)
88

99
:PREVIOUS-DATE "16-Mar-2025 21:48:26" {WMEDLEY}<library>TEDIT>TEDIT.;783)
1010

@@ -1648,7 +1648,8 @@
16481648
(\TEDIT.SCROLL.CARET TOTSTREAM)))])
16491649

16501650
(\TEDIT.REPLACE.SELPIECES
1651-
[LAMBDA (INSERTSELPIECES TEXTOBJ SEL) (* ; "Edited 8-Dec-2024 13:46 by rmk")
1651+
[LAMBDA (INSERTSELPIECES TEXTOBJ SEL) (* ; "Edited 19-Mar-2025 15:46 by rmk")
1652+
(* ; "Edited 8-Dec-2024 13:46 by rmk")
16521653
(* ; "Edited 26-Nov-2024 17:37 by rmk")
16531654
(* ; "Edited 29-Sep-2024 00:24 by rmk")
16541655
(* ; "Edited 21-Sep-2024 22:12 by rmk")
@@ -1670,11 +1671,10 @@
16701671
 "On return, the pieces, lines, selection, and display are complete, correct, and consistent ")
16711672

16721673
(CL:UNLESS (\TEDIT.READONLY TEXTOBJ)
1673-
(PROG ((POINT (GETSEL SEL POINT))
1674+
[PROG ((POINT (GETSEL SEL POINT))
16741675
(CH# (FGETSEL SEL CH#))
16751676
(DCH (FGETSEL SEL DCH))
1676-
(ILEN (GETSPC INSERTSELPIECES SPLEN))
1677-
DELEVENT)
1677+
DELEVENT ILEN)
16781678
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
16791679

16801680
(* ;; "We first delete, then insert, updating the display after the second operation.")
@@ -1694,7 +1694,8 @@
16941694

16951695
(* ;; "")
16961696

1697-
(CL:WHEN (AND (IGEQ ILEN 0)
1697+
(CL:WHEN (AND INSERTSELPIECES (IGEQ (SETQ ILEN (GETSPC INSERTSELPIECES SPLEN))
1698+
0)
16981699
(\TEDIT.INSERT.SELPIECES INSERTSELPIECES TEXTOBJ SEL T))
16991700

17001701
(* ;; "If both delete and insert happened, foush the insert event and upgrade the DELEVENT to a single :Replace. The insert has not updated the lines or the selection")
@@ -1704,12 +1705,12 @@
17041705
(SETTH DELEVENT THACTION :Replace)
17051706
(SETTH DELEVENT THLEN ILEN)
17061707
(SETTH DELEVENT THPOINT POINT))
1707-
(\TEDIT.UPDATE.SEL SEL CH# ILEN POINT))
1708-
(if (IGREATERP ILEN DCH)
1709-
then (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION CH# (IDIFFERENCE ILEN DCH))
1710-
elseif (ILESSP ILEN DCH)
1711-
then (\TEDIT.UPDATE.LINES TEXTOBJ 'DELETION CH# (IDIFFERENCE DCH ILEN))
1712-
else (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS CH# DCH))))])
1708+
(\TEDIT.UPDATE.SEL SEL CH# ILEN POINT)
1709+
(if (IGREATERP ILEN DCH)
1710+
then (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION CH# (IDIFFERENCE ILEN DCH))
1711+
elseif (ILESSP ILEN DCH)
1712+
then (\TEDIT.UPDATE.LINES TEXTOBJ 'DELETION CH# (IDIFFERENCE DCH ILEN))
1713+
else (\TEDIT.UPDATE.LINES TEXTOBJ 'LOOKS CH# DCH)))])])
17131714

17141715
(\TEDIT.INSERT.SELPIECES
17151716
[LAMBDA (SELPIECES TEXTOBJ TARGETSEL DONTUPDATE) (* ; "Edited 26-Nov-2024 11:04 by rmk")
@@ -1944,7 +1945,8 @@
19441945
OBJ])
19451946

19461947
(\TEDIT.DELETE
1947-
[LAMBDA (TEXTOBJ TARGETSEL/CHAR LEN POINT DONTCHECK) (* ; "Edited 6-Feb-2025 00:14 by rmk")
1948+
[LAMBDA (TEXTOBJ TARGETSEL/CHAR LEN POINT DONTCHECK) (* ; "Edited 19-Mar-2025 11:22 by rmk")
1949+
(* ; "Edited 6-Feb-2025 00:14 by rmk")
19481950
(* ; "Edited 8-Dec-2024 21:39 by rmk")
19491951
(* ; "Edited 28-Nov-2024 10:13 by rmk")
19501952
(* ; "Edited 27-Nov-2024 09:18 by rmk")
@@ -2008,12 +2010,12 @@
20082010

20092011
(* ;; "This is to the right of the last remaining character so that FIXSEL sees starting character in its proper line.")
20102012

2013+
(\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ)
20112014
(\TEDIT.UPDATE.SEL SEL (SUB1 FIRSTCHAR)
20122015
0
20132016
'RIGHT)
20142017
(\TEDIT.FIXSEL SEL TEXTOBJ)
20152018
(\TEDIT.SHOWSEL SEL T TEXTOBJ)
2016-
(\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ)
20172019
T)])
20182020

20192021
(\TEDIT.DIFFUSE.PARALOOKS
@@ -2433,7 +2435,7 @@
24332435
(* ; "TEDIT Support information")
24342436

24352437

2436-
(RPAQQ TEDITSYSTEMDATE "18-Mar-2025 23:13:17")
2438+
(RPAQQ TEDITSYSTEMDATE "19-Mar-2025 15:47:23")
24372439

24382440

24392441

@@ -2443,26 +2445,26 @@
24432445
(ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER)
24442446
(EXTENSION (TEDIT))))
24452447
(DECLARE%: DONTCOPY
2446-
(FILEMAP (NIL (4835 7229 (MAKE-TEDIT-EXPORTS.ALL 4845 . 5391) (UPDATE-TEDIT 5393 . 6322) (EDIT-TEDIT
2447-
6324 . 7227)) (8737 36203 (TEDIT 8747 . 11325) (TEXTSTREAM 11327 . 13247) (TEXTSTREAMP 13249 . 13633)
2448-
(COERCETEXTSTREAM 13635 . 17846) (TEDIT.CONCAT 17848 . 21154) (TEDITSTRING 21156 . 22070) (TEDIT-SEE
2449-
22072 . 22631) (TEDIT.COPY 22633 . 24778) (TEDIT.DELETE 24780 . 26032) (TEDIT.INSERT 26034 . 28992) (
2450-
TEDIT.TERPRI 28994 . 30108) (TEDIT.KILL 30110 . 31026) (TEDIT.QUIT 31028 . 32394) (TEDIT.MOVE 32396 .
2451-
33284) (TEDIT.STRINGWIDTH 33286 . 33957) (TEDIT.CHARWIDTH 33959 . 36201)) (36204 38145 (TEXTOBJ 36214
2452-
. 36679) (COERCETEXTOBJ 36681 . 38143)) (39545 41315 (TDRIBBLE 39555 . 41313)) (41356 53464 (
2453-
TEDIT.INSERT.OBJECT 41366 . 46207) (TEDIT.EDIT.OBJECT 46209 . 48550) (TEDIT.OBJECT.CHANGED 48552 .
2454-
51419) (TEDIT.MAP.OBJECTS 51421 . 52992) (\TEDIT.FIRST.OBJPIECE 52994 . 53227) (\TEDIT.NEXT.OBJPIECE
2455-
53229 . 53462)) (53487 60930 (\TEDIT.CONCAT.PAGEFRAMES 53497 . 58564) (\TEDIT.GET.PAGE.HEADINGS 58566
2456-
. 59595) (\TEDIT.CONCAT.INSTALL.HEADINGS 59597 . 60928)) (60931 64360 (\TEDIT.MOVE.MSG 60941 . 63022)
2457-
(\TEDIT.READONLY 63024 . 64358)) (64361 79197 (TEDIT.NCHARS 64371 . 64744) (TEDIT.RPLCHARCODE 64746
2458-
. 72761) (TEDIT.NTHCHARCODE 72763 . 75120) (TEDIT.NTHCHAR 75122 . 75380) (\TEDIT.PIECE.NTHCHARCODE
2459-
75382 . 79195)) (79243 133850 (\TEDIT1 79253 . 81330) (\TEDIT.INSERT 81332 . 87309) (\TEDIT.MOVE 87311
2460-
. 94661) (\TEDIT.COPY 94663 . 98796) (\TEDIT.REPLACE.SELPIECES 98798 . 102778) (
2461-
\TEDIT.INSERT.SELPIECES 102780 . 105665) (\TEDIT.RESTARTFN 105667 . 108172) (\TEDIT.CHARDELETE 108174
2462-
. 111001) (\TEDIT.COPYPIECE 111003 . 115851) (\TEDIT.APPLY.OBJFN 115853 . 119050) (\TEDIT.DELETE
2463-
119052 . 123980) (\TEDIT.DIFFUSE.PARALOOKS 123982 . 126253) (\TEDIT.WORDDELETE 126255 . 127811) (
2464-
\TEDIT.WORDDELETE.FORWARD 127813 . 129485) (\TEDIT.FINISHEDIT? 129487 . 133848)) (133851 134510 (
2465-
\TEDIT.THELP 133861 . 134508)) (134544 143328 (\TEDIT.PARAPIECES 134554 . 136528) (\TEDIT.PARACHNOS
2466-
136530 . 137422) (\TEDIT.PARA.FIRST 137424 . 140291) (\TEDIT.PARA.LAST 140293 . 143326)) (143329
2467-
151368 (\TEDIT.WORD.FIRST 143339 . 147095) (\TEDIT.WORD.LAST 147097 . 151366)))))
2448+
(FILEMAP (NIL (4874 7268 (MAKE-TEDIT-EXPORTS.ALL 4884 . 5430) (UPDATE-TEDIT 5432 . 6361) (EDIT-TEDIT
2449+
6363 . 7266)) (8776 36242 (TEDIT 8786 . 11364) (TEXTSTREAM 11366 . 13286) (TEXTSTREAMP 13288 . 13672)
2450+
(COERCETEXTSTREAM 13674 . 17885) (TEDIT.CONCAT 17887 . 21193) (TEDITSTRING 21195 . 22109) (TEDIT-SEE
2451+
22111 . 22670) (TEDIT.COPY 22672 . 24817) (TEDIT.DELETE 24819 . 26071) (TEDIT.INSERT 26073 . 29031) (
2452+
TEDIT.TERPRI 29033 . 30147) (TEDIT.KILL 30149 . 31065) (TEDIT.QUIT 31067 . 32433) (TEDIT.MOVE 32435 .
2453+
33323) (TEDIT.STRINGWIDTH 33325 . 33996) (TEDIT.CHARWIDTH 33998 . 36240)) (36243 38184 (TEXTOBJ 36253
2454+
. 36718) (COERCETEXTOBJ 36720 . 38182)) (39584 41354 (TDRIBBLE 39594 . 41352)) (41395 53503 (
2455+
TEDIT.INSERT.OBJECT 41405 . 46246) (TEDIT.EDIT.OBJECT 46248 . 48589) (TEDIT.OBJECT.CHANGED 48591 .
2456+
51458) (TEDIT.MAP.OBJECTS 51460 . 53031) (\TEDIT.FIRST.OBJPIECE 53033 . 53266) (\TEDIT.NEXT.OBJPIECE
2457+
53268 . 53501)) (53526 60969 (\TEDIT.CONCAT.PAGEFRAMES 53536 . 58603) (\TEDIT.GET.PAGE.HEADINGS 58605
2458+
. 59634) (\TEDIT.CONCAT.INSTALL.HEADINGS 59636 . 60967)) (60970 64399 (\TEDIT.MOVE.MSG 60980 . 63061)
2459+
(\TEDIT.READONLY 63063 . 64397)) (64400 79236 (TEDIT.NCHARS 64410 . 64783) (TEDIT.RPLCHARCODE 64785
2460+
. 72800) (TEDIT.NTHCHARCODE 72802 . 75159) (TEDIT.NTHCHAR 75161 . 75419) (\TEDIT.PIECE.NTHCHARCODE
2461+
75421 . 79234)) (79282 134183 (\TEDIT1 79292 . 81369) (\TEDIT.INSERT 81371 . 87348) (\TEDIT.MOVE 87350
2462+
. 94700) (\TEDIT.COPY 94702 . 98835) (\TEDIT.REPLACE.SELPIECES 98837 . 103002) (
2463+
\TEDIT.INSERT.SELPIECES 103004 . 105889) (\TEDIT.RESTARTFN 105891 . 108396) (\TEDIT.CHARDELETE 108398
2464+
. 111225) (\TEDIT.COPYPIECE 111227 . 116075) (\TEDIT.APPLY.OBJFN 116077 . 119274) (\TEDIT.DELETE
2465+
119276 . 124313) (\TEDIT.DIFFUSE.PARALOOKS 124315 . 126586) (\TEDIT.WORDDELETE 126588 . 128144) (
2466+
\TEDIT.WORDDELETE.FORWARD 128146 . 129818) (\TEDIT.FINISHEDIT? 129820 . 134181)) (134184 134843 (
2467+
\TEDIT.THELP 134194 . 134841)) (134877 143661 (\TEDIT.PARAPIECES 134887 . 136861) (\TEDIT.PARACHNOS
2468+
136863 . 137755) (\TEDIT.PARA.FIRST 137757 . 140624) (\TEDIT.PARA.LAST 140626 . 143659)) (143662
2469+
151701 (\TEDIT.WORD.FIRST 143672 . 147428) (\TEDIT.WORD.LAST 147430 . 151699)))))
24682470
STOP

library/tedit/TEDIT-FIND

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
22

3-
(FILECREATED "15-Mar-2025 00:35:11" {WMEDLEY}<library>tedit>TEDIT-FIND.;151 43417
3+
(FILECREATED "19-Mar-2025 11:25:45" {WMEDLEY}<library>tedit>TEDIT-FIND.;153 43667
44

55
:EDIT-BY rmk
66

7-
:CHANGES-TO (FNS TEDIT.SUBSTITUTE TEDIT.FIND)
7+
:CHANGES-TO (FNS TEDIT.SUBSTITUTE)
88

9-
:PREVIOUS-DATE "14-Mar-2025 23:16:31" {WMEDLEY}<library>TEDIT>TEDIT-FIND.;148)
9+
:PREVIOUS-DATE "15-Mar-2025 00:35:11" {WMEDLEY}<library>tedit>TEDIT-FIND.;151)
1010

1111

1212
(PRETTYCOMPRINT TEDIT-FINDCOMS)
@@ -67,16 +67,14 @@
6767
(CAR RESULT)))])
6868

6969
(TEDIT.SUBSTITUTE
70-
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM?) (* ; "Edited 15-Mar-2025 00:23 by rmk")
70+
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM? NEWCHARLOOKS)(* ; "Edited 19-Mar-2025 11:20 by rmk")
71+
(* ; "Edited 15-Mar-2025 00:23 by rmk")
7172
(* ; "Edited 6-Mar-2025 20:17 by rmk")
7273
(* ; "Edited 8-Dec-2024 15:47 by rmk")
7374
(* ; "Edited 26-Nov-2024 23:49 by rmk")
7475
(* ; "Edited 15-Aug-2024 09:20 by rmk")
7576
(* ; "Edited 14-Jul-2024 00:24 by rmk")
76-
(* ; "Edited 7-Jul-2024 11:46 by rmk")
77-
(* ; "Edited 29-Jun-2024 10:49 by rmk")
7877
(* ; "Edited 18-May-2024 23:03 by rmk")
79-
(* ; "Edited 9-Mar-2024 11:36 by rmk")
8078
(* ; "Edited 12-May-2024 21:11 by rmk")
8179
(* ; "Edited 15-Mar-2024 14:09 by rmk")
8280
(* ; "Edited 6-Jan-2024 11:09 by rmk")
@@ -93,7 +91,8 @@
9391
(PROG ((TEXTOBJ (TEXTOBJ TSTREAM))
9492
(NREPLACEMENTS 0)
9593
(YESLIST '("Y" "y" "yes" "YES" "T" "Yes"))
96-
SEARCHSTRING ABORTFLG ENDCHAR# STARTCHAR# CONFIRMFLG SEL REPLACE-LEN ACTIONSTRING)
94+
SEARCHSTRING ABORTFLG ENDCHAR# STARTCHAR# CONFIRMFLG SEL REPLACE-LEN ACTIONSTRING
95+
CHARLOOKS)
9796

9897
(* ;; "Don't call \TEDIT.GET.TARGET.STRING because it might pick the search-domain (current selection) as the search string. If the search pattern is empty, bail out.")
9998

@@ -138,7 +137,6 @@
138137
"ing...")
139138
T)
140139
(SETQ SEL (FGETTOBJ TEXTOBJ SEL))
141-
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
142140
(\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ)
143141
(* ; "Turn off any blue pending delete")
144142

@@ -173,6 +171,9 @@
173171
1))
174172
(Q (GO $$OUT))
175173
(Y (* ; "Do this one")
174+
(CL:UNLESS NEWCHARLOOKS
175+
(SETQ CHARLOOKS (PCHARLOOKS (\TEDIT.CHTOPC (CAR HIT)
176+
TEXTOBJ))))
176177
(\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY REPLACEMENT
177178
'COPY TEXTOBJ)
178179
TEXTOBJ SEL)
@@ -192,17 +193,20 @@
192193
else
193194
(* ;; "No confirmation required. Do the substitutions without showing intermediate work, collect all of the replacement events")
194195

195-
(bind FIRSTHIT HIT HITLAST HITDIFF (TOTALDIFF _ 0)
196+
(bind FIRSTHIT HIT HITLAST HITDIFF CHARLOOKS (TOTALDIFF _ 0)
196197
EVENTS while (SETQ HIT (\TEDIT.FIND TEXTOBJ SEARCHSTRING T NIL
197198
STARTCHAR# ENDCHAR#))
198199
do (CL:UNLESS FIRSTHIT (* ; "For final line updating.")
199200
(SETQ FIRSTHIT (CAR HIT)))
201+
(CL:UNLESS NEWCHARLOOKS
202+
(SETQ CHARLOOKS (PCHARLOOKS (\TEDIT.CHTOPC (CAR HIT)
203+
TEXTOBJ))))
200204
(\TEDIT.UPDATE.SEL SEL (CAR HIT)
201205
(CADR HIT)
202206
'RIGHT)
203207
(\TEDIT.FIXSEL SEL TEXTOBJ)
204208
(\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY REPLACEMENT
205-
'COPY TEXTOBJ)
209+
'COPY TEXTOBJ NIL CHARLOOKS)
206210
TEXTOBJ SEL)
207211
(push EVENTS (\TEDIT.POPEVENT TEXTOBJ))
208212
(* ;
@@ -683,10 +687,10 @@
683687
(DREVERSE $$VAL))])
684688
)
685689
(DECLARE%: DONTCOPY
686-
(FILEMAP (NIL (978 19777 (TEDIT.FIND 988 . 1572) (TEDIT.FIND.SETSEL 1574 . 2039) (TEDIT.FIND.BACKWARD
687-
2041 . 2620) (TEDIT.SUBSTITUTE 2622 . 15180) (TEDIT.NEXT 15182 . 19775)) (19778 23207 (
688-
TEDIT.FIND.OBJECT 19788 . 21288) (TEDIT.FIND.OBJECT.BACKWARD 21290 . 23205)) (23240 43394 (\TEDIT.FIND
689-
23250 . 26186) (\TEDIT.FIND.BACKWARD 26188 . 28706) (\TEDIT.WCFIND 28708 . 32227) (\TEDIT.BASICFIND
690-
32229 . 34588) (\TEDIT.WCFIND.BACKWARD 34590 . 38054) (\TEDIT.BASICFIND.BACKWARD 38056 . 40313) (
691-
\TEDIT.PARSE.SEARCHSTRING 40315 . 43392)))))
690+
(FILEMAP (NIL (967 20027 (TEDIT.FIND 977 . 1561) (TEDIT.FIND.SETSEL 1563 . 2028) (TEDIT.FIND.BACKWARD
691+
2030 . 2609) (TEDIT.SUBSTITUTE 2611 . 15430) (TEDIT.NEXT 15432 . 20025)) (20028 23457 (
692+
TEDIT.FIND.OBJECT 20038 . 21538) (TEDIT.FIND.OBJECT.BACKWARD 21540 . 23455)) (23490 43644 (\TEDIT.FIND
693+
23500 . 26436) (\TEDIT.FIND.BACKWARD 26438 . 28956) (\TEDIT.WCFIND 28958 . 32477) (\TEDIT.BASICFIND
694+
32479 . 34838) (\TEDIT.WCFIND.BACKWARD 34840 . 38304) (\TEDIT.BASICFIND.BACKWARD 38306 . 40563) (
695+
\TEDIT.PARSE.SEARCHSTRING 40565 . 43642)))))
692696
STOP

library/tedit/TEDIT-FIND.LCOM

103 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)