From 70f0e978866db98dccef3d71e5aae53aad3149c4 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Thu, 6 Mar 2025 20:24:32 -0800 Subject: [PATCH] TEDIT-SELECTION and TEDIT-SCREEN: Selection should take account of diacritics --- library/tedit/TEDIT-SCREEN | 43 ++++++++++--------- library/tedit/TEDIT-SCREEN.LCOM | Bin 31466 -> 31449 bytes library/tedit/TEDIT-SELECTION | 64 ++++++++++++++++------------- library/tedit/TEDIT-SELECTION.LCOM | Bin 30116 -> 30119 bytes 4 files changed, 59 insertions(+), 48 deletions(-) diff --git a/library/tedit/TEDIT-SCREEN b/library/tedit/TEDIT-SCREEN index 814abe30..387d7142 100644 --- a/library/tedit/TEDIT-SCREEN +++ b/library/tedit/TEDIT-SCREEN @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "25-Feb-2025 10:40:05" {WMEDLEY}tedit>TEDIT-SCREEN.;866 188857 +(FILECREATED " 6-Mar-2025 11:42:48" {WMEDLEY}TEDIT>TEDIT-SCREEN.;867 189057 :EDIT-BY rmk :CHANGES-TO (FNS \TEDIT.FORMATLINE) - :PREVIOUS-DATE "19-Feb-2025 13:38:09" {WMEDLEY}tedit>TEDIT-SCREEN.;864) + :PREVIOUS-DATE "25-Feb-2025 10:40:05" {WMEDLEY}TEDIT>TEDIT-SCREEN.;866) (PRETTYCOMPRINT TEDIT-SCREENCOMS) @@ -687,6 +687,7 @@ (\TEDIT.FORMATLINE [LAMBDA (TSTREAM CH#1 LINE REGION IMAGESTREAM FORMATTINGSTATE) + (* ; "Edited 6-Mar-2025 11:42 by rmk") (* ; "Edited 25-Feb-2025 10:39 by rmk") (* ; "Edited 19-Feb-2025 13:36 by rmk") (* ; "Edited 10-Feb-2025 09:59 by rmk") @@ -1011,7 +1012,9 @@ (SETQ INSPACES NIL) (CL:UNLESS (DIACRITICP CH) - (* ;; "Assume that diacritics have zero width. \DISPLAYLINE and \TEDIT.HARDCOPY.DISPLAYLINE adjust their alignment, centering on the next character. However, if a diacritic is wider than the the next character, here the next character should be assigned the diacritic's width. ") + (* ;; "Assume that diacritics have zero width. DISPLAYLINE and HARDCOPY.DISPLAYLINE adjust their alignment, centering on the next character. However, if a diacritic is wider than the the next character, here the next character should be assigned the diacritic's width. ") + + (* ;; "CHTOLINEX under FIXSEL also needs to deal with this.") (add TX DX)) (CL:WHEN (IGREATERP TX WIDTH) @@ -2884,21 +2887,21 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (27983 30199 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 27993 . 30197)) (37604 120268 ( -\TEDIT.FORMATLINE 37614 . 72935) (\TEDIT.FORMATLINE.SETUP.PARA 72937 . 78103) ( -\TEDIT.FORMATLINE.HORIZONTAL 78105 . 82678) (\TEDIT.FORMATLINE.VERTICAL 82680 . 85131) ( -\TEDIT.FORMATLINE.JUSTIFY 85133 . 91154) (\TEDIT.FORMATLINE.TABS 91156 . 99184) (\TEDIT.SCALE.TABS -99186 . 99977) (\TEDIT.FORMATLINE.PURGE.SPACES 99979 . 101406) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -101408 . 102309) (\TEDIT.FORMATLINE.EMPTY 102311 . 107338) (\TEDIT.FORMATLINE.UPDATELOOKS 107340 . -113462) (\TEDIT.FORMATLINE.LASTLEGAL 113464 . 117004) (\TEDIT.LINES.ABOVE 117006 . 120266)) (120385 -122300 (\TLVALIDATE 120395 . 122298)) (122498 144036 (\TEDIT.DISPLAYLINE 122508 . 136148) ( -\TEDIT.DISPLAYLINE.TABS 136150 . 138954) (\TEDIT.LINECACHE 138956 . 139684) (\TEDIT.CREATE.LINECACHE -139686 . 140522) (\TEDIT.BLTCHAR 140524 . 143151) (\TEDIT.DIACRITIC.SHIFT 143153 . 144034)) (144651 -188834 (\TEDIT.BACKFORMAT 144661 . 147215) (\TEDIT.PREVIOUS.LINEBREAK 147217 . 149940) ( -\TEDIT.UPDATE.LINES 149942 . 154812) (\TEDIT.PANE.CREATELINES 154814 . 157917) ( -\TEDIT.SUFFIXLINE.CREATE 157919 . 159294) (\TEDIT.LINES.BELOW 159296 . 163757) (\TEDIT.MEASURED.LINES -163759 . 165659) (\TEDIT.VALID.LINES 165661 . 173922) (\TEDIT.LASTVALIDLINE 173924 . 178849) ( -\TEDIT.NEXTVALIDLINE 178851 . 180281) (\TEDIT.CLEARPANE.BELOW.LINE 180283 . 182389) (\TEDIT.INSERTLINE - 182391 . 183777) (\TEDIT.LINE.BOTTOM 183779 . 187009) (\TEDIT.SHOW.AT.BOTTOMP 187011 . 188121) ( -\TEDIT.SHOW.AT.TOPP 188123 . 188832))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index cb184e5d2a2cf4c14f69911a61e850c7c18c7685..341967d7b0aabf5bbb463050d642bf785b84ad21 100644 GIT binary patch delta 1095 zcmZ`&O=uHA6n1K=HnGr>EyPQlMo|lSdYld+&YkoA+k-_QCExc)O%QBVSo< z$J8!Qcv7e&cl^rDhqjiz9#aSOCJ&TbEZPjWPQW#qlD`A>FR zXPR<0`Eg_~M#JCbkK`6OC)ZQ=!F+os^)oSXY3I}jf93P(*R9U&^;W0iue3UI?VT|S zz&rV8eDA6O>%A*YyVY7`d){>53P(U@aTdX@ zHOCK@Au(8Ave93u6YHRXvk>`#0}10@fwX+JIh-Jj@*em$IqDEnTeh=tRr;bEP)v}dLXNfCot9V0m$I4xsrP~gqTn@lHLhZ)~-)%gDnm{w-b1AQ7e0z(ExA1$p`>g`|E}5>R*8qBya!# delta 1053 zcmZ`%O=}ZT6!oR4l7xaKQyQU^XAo)Crt`k$BiiaXd1(eGnPDLjp^CZP5{?Af~48zb=u?Fl%$UI$+NVHrvvoQI#R^|nl z&%S%`a(QvJzWQeJaxU8X18TiDOI|gshEh)%7NM@e0xw$AZdmjx;V4Y4J&CpEukFOZ zXYn_2JF)F4-mAUl)h%%^`6+SG$$Ec^z2pW+h}qP9toEU`n>vUOWWQhe=q-HddEY$p zmzzhfx6nMAXzgAn0Bnn2{re+2oNJ#n=Txep<+?fF;WmfZKn9#EKI4JsL#!LB0OM&f zw33QrT_Z9XdWdy|V5HCX{8@-KdS*a7JI#oCvcxWho^L};^@t-aR#tlBm=YsOw(j=j zFwqd~=ZcX2Q9STXx9`s$ABPA%3LOG16h`QxwpSBuyNv$UNciL599H zu82*V>_M6->WUJzAV##47MZB%SVA08U2g+@N`DLy0hIwE!wiZv6rGs>B247N+YutH z^<-cNi2lL!go&Z+RCs~Q-|6_F7sxB><|Q@KUDHH;Fnx#7ZiJ%l8eyUlq&IXJ2Gd;L zqtLNHr}Sb)W%4IIbs|SK$vzcuX%*8M^sOmg;#R?_Ov!>qE(}s8TX-dcL+i0L3{!ag zJ+VsFHa2q%BGW`?n~`bI^SO?t3fn1LE<~nwju|nA&oxW$#6m^^M(cHk1Hf8eZw%M} E0b^en9RL6T diff --git a/library/tedit/TEDIT-SELECTION b/library/tedit/TEDIT-SELECTION index b96b9788..e328cb62 100644 --- a/library/tedit/TEDIT-SELECTION +++ b/library/tedit/TEDIT-SELECTION @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Feb-2025 17:45:33" {WMEDLEY}TEDIT>TEDIT-SELECTION.;660 152607 +(FILECREATED " 6-Mar-2025 11:59:08" {WMEDLEY}TEDIT>TEDIT-SELECTION.;661 153051 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SET.SEL.LOOKS TEDIT.SELPROP) + :CHANGES-TO (FNS \TEDIT.CHTOLINEX) - :PREVIOUS-DATE "18-Feb-2025 22:06:22" {WMEDLEY}TEDIT>TEDIT-SELECTION.;656) + :PREVIOUS-DATE "28-Feb-2025 17:45:33" {WMEDLEY}TEDIT>TEDIT-SELECTION.;660) (PRETTYCOMPRINT TEDIT-SELECTIONCOMS) @@ -1132,7 +1132,8 @@ SEL]) (\TEDIT.CHTOLINEX - [LAMBDA (TEXTOBJ LINE CH# AFTER) (* ; "Edited 28-Nov-2024 14:41 by rmk") + [LAMBDA (TEXTOBJ LINE CH# AFTER) (* ; "Edited 6-Mar-2025 11:57 by rmk") + (* ; "Edited 28-Nov-2024 14:41 by rmk") (* ; "Edited 17-Nov-2024 15:58 by rmk") (* ; "Edited 13-Jun-2024 17:12 by rmk") (* ; "Edited 10-May-2024 00:26 by rmk") @@ -1166,10 +1167,17 @@ (IEQP CH# (FGETLD LINE LCHAR1))) then (FGETLD LINE LX1) else (for CHARSLOT (X _ (FGETLD LINE LX1)) - (CHNO _ (FGETLD LINE LCHAR1)) incharslots THISLINE unless (type? CHARLOOKS CHARW - ) + (CHNO _ (FGETLD LINE LCHAR1)) incharslots THISLINE + eachtime (CL:WHEN (AND CHAR (DIACRITICP CHAR)) + + (* ;; "If the diacritic CHARW is greater than the CHARW of the next slot, we should set the diacritic CHARW to (IDIFFERENCE CHARW (NEXT CHARW)). ") + + (* ;; "i.e. (IMAX 0 (IDIFFERENCE CHARW (NEXT CHARW))") + + (SETQ CHARW 0)) unless (type? CHARLOOKS CHARW) do - (* ;; "Update the running X-position in the line, skiping look-slots") + (* ;; + "Update the running X-position in the line, skiping look-slots and skipping diacritics") (CL:WHEN (IEQP CHNO CH#) (if AFTER @@ -2456,25 +2464,25 @@ (ADDTOVAR LAMA TEDIT.SELPROP) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (15596 17417 (\TEDIT.SELECTION.DEFPRINT 15606 . 17415)) (17454 18959 ( -\TEDIT.SET.GLOBAL.SELECTIONS 17464 . 18957)) (18960 24829 (\TEDIT.SELECTED.PIECES 18970 . 20490) ( -\TEDIT.FIND.PROTECTED.END 20492 . 22161) (\TEDIT.FIND.PROTECTED.START 22163 . 24021) ( -\TEDIT.WORD.BOUND 24023 . 24827)) (24963 59162 (\TEDIT.EXTEND.SEL 24973 . 32061) (\TEDIT.SCAN.LINE -32063 . 43841) (\TEDIT.SCAN.LINE.WORD 43843 . 49204) (\TEDIT.XYTOSEL 49206 . 56315) (\TEDIT.REGIONTYPE - 56317 . 57336) (\TEDIT.XYTOSEL.INLINEP 57338 . 57793) (\TEDIT.XYTOSEL.LINE 57795 . 59160)) (59163 -72325 (\TEDIT.FIXSEL 59173 . 68786) (\TEDIT.CHTOLINEX 68788 . 72323)) (72326 75973 ( -\TEDIT.RESET.EXTEND.PENDING.DELETE 72336 . 73309) (\TEDIT.SET.SEL.LOOKS 73311 . 75971)) (75974 94020 ( -\TEDIT.SHOWSEL 75984 . 80444) (\TEDIT.SHOWSEL.HILIGHT 80446 . 85067) (\TEDIT.UPDATE.SEL 85069 . 88568) - (\TEDIT.CARETLINE 88570 . 89284) (\TEDIT.SEL.L1 89286 . 89792) (\TEDIT.SEL.LN 89794 . 90300) ( -\TEDIT.SEL.DELETEDCHARS 90302 . 94018)) (94021 98727 (\TEDIT.COPYSEL 94031 . 96497) ( -\TEDIT.SEL.CHANGED? 96499 . 98725)) (98758 111487 (\TEDIT.SELECT.OBJECT 98768 . 103274) ( -\TEDIT.SHOWSEL.OBJECT 103276 . 105438) (\TEDIT.CLIP.OBJECT 105440 . 107444) (\TEDIT.OPERATE.OBJECT -107446 . 111485)) (111515 129862 (\TEDIT.SELPIECES 111525 . 115473) (\TEDIT.SELPIECES.COPY 115475 . -117513) (\TEDIT.SELPIECES.CONCAT 117515 . 119394) (\TEDIT.SELPIECES.CHARTRANSFORM 119396 . 122354) ( -\TEDIT.SELPIECES.FROM.STRING 122356 . 127497) (\TEDIT.SELPIECES.TO.STRING 127499 . 129860)) (129915 -152438 (TEDIT.XYTOCH 129925 . 132309) (TEDIT.SELPROP 132311 . 136341) (TEDIT.GETPOINT 136343 . 138263) - (TEDIT.GETSEL 138265 . 138999) (TEDIT.GETSEL.PARA 139001 . 139950) (TEDIT.SCANSEL 139952 . 140900) ( -TEDIT.SET.SEL.LOOKS 140902 . 142281) (TEDIT.SETSEL 142283 . 147047) (TEDIT.SHOWSEL 147049 . 148329) ( -TEDIT.SEL.AS.STRING 148331 . 150816) (TEDIT.SEL.AS.SEXPR 150818 . 152104) (TEDIT.SELECTALL 152106 . -152436))))) + (FILEMAP (NIL (15578 17399 (\TEDIT.SELECTION.DEFPRINT 15588 . 17397)) (17436 18941 ( +\TEDIT.SET.GLOBAL.SELECTIONS 17446 . 18939)) (18942 24811 (\TEDIT.SELECTED.PIECES 18952 . 20472) ( +\TEDIT.FIND.PROTECTED.END 20474 . 22143) (\TEDIT.FIND.PROTECTED.START 22145 . 24003) ( +\TEDIT.WORD.BOUND 24005 . 24809)) (24945 59144 (\TEDIT.EXTEND.SEL 24955 . 32043) (\TEDIT.SCAN.LINE +32045 . 43823) (\TEDIT.SCAN.LINE.WORD 43825 . 49186) (\TEDIT.XYTOSEL 49188 . 56297) (\TEDIT.REGIONTYPE + 56299 . 57318) (\TEDIT.XYTOSEL.INLINEP 57320 . 57775) (\TEDIT.XYTOSEL.LINE 57777 . 59142)) (59145 +72769 (\TEDIT.FIXSEL 59155 . 68768) (\TEDIT.CHTOLINEX 68770 . 72767)) (72770 76417 ( +\TEDIT.RESET.EXTEND.PENDING.DELETE 72780 . 73753) (\TEDIT.SET.SEL.LOOKS 73755 . 76415)) (76418 94464 ( +\TEDIT.SHOWSEL 76428 . 80888) (\TEDIT.SHOWSEL.HILIGHT 80890 . 85511) (\TEDIT.UPDATE.SEL 85513 . 89012) + (\TEDIT.CARETLINE 89014 . 89728) (\TEDIT.SEL.L1 89730 . 90236) (\TEDIT.SEL.LN 90238 . 90744) ( +\TEDIT.SEL.DELETEDCHARS 90746 . 94462)) (94465 99171 (\TEDIT.COPYSEL 94475 . 96941) ( +\TEDIT.SEL.CHANGED? 96943 . 99169)) (99202 111931 (\TEDIT.SELECT.OBJECT 99212 . 103718) ( +\TEDIT.SHOWSEL.OBJECT 103720 . 105882) (\TEDIT.CLIP.OBJECT 105884 . 107888) (\TEDIT.OPERATE.OBJECT +107890 . 111929)) (111959 130306 (\TEDIT.SELPIECES 111969 . 115917) (\TEDIT.SELPIECES.COPY 115919 . +117957) (\TEDIT.SELPIECES.CONCAT 117959 . 119838) (\TEDIT.SELPIECES.CHARTRANSFORM 119840 . 122798) ( +\TEDIT.SELPIECES.FROM.STRING 122800 . 127941) (\TEDIT.SELPIECES.TO.STRING 127943 . 130304)) (130359 +152882 (TEDIT.XYTOCH 130369 . 132753) (TEDIT.SELPROP 132755 . 136785) (TEDIT.GETPOINT 136787 . 138707) + (TEDIT.GETSEL 138709 . 139443) (TEDIT.GETSEL.PARA 139445 . 140394) (TEDIT.SCANSEL 140396 . 141344) ( +TEDIT.SET.SEL.LOOKS 141346 . 142725) (TEDIT.SETSEL 142727 . 147491) (TEDIT.SHOWSEL 147493 . 148773) ( +TEDIT.SEL.AS.STRING 148775 . 151260) (TEDIT.SEL.AS.SEXPR 151262 . 152548) (TEDIT.SELECTALL 152550 . +152880))))) STOP diff --git a/library/tedit/TEDIT-SELECTION.LCOM b/library/tedit/TEDIT-SELECTION.LCOM index 89a04606a73f0e19342d778f730f326dae16b95b..a079ba27ccf9e81091183960a948c86c1910468f 100644 GIT binary patch delta 301 zcmZ4TnsNDS#tGpf3TC>#iAB0b21cd|hK5$AmR1H96SHk44K)?Gl#DEN-BObvl19c> zMy6KA1``j;raF6s`1^SJxke~t<|!z-h5Gm?AS>0=(^FDNNi0cC!ET0$k|vjio2QSf zbC9cJh^vc&5>{7K>v9+>7@8Uzm>N#5VN{od+p4Kx6%gba=II|Atm^_aV6q{j1S8kP zTHVbeOwSY4P#4%7@#{mL-gGIgM1xBKz;){(a^$T^JA5R0RV-GSE~R3 delta 278 zcmZ4fnsLc%#tGpfMi#nmsY$v<21cd|hUQi#rdGzr6SHk44Kx+Fl#EOel17GB#uipa zMiURpPR>Z;i_OeaP;v|P@lillq^GB+q>z$WlA3~Dx4Dugmxi0CkE?T#t7C|(i-Hn1 z`;`d+GBYrrT*0Ugve6i*-ZMlm*wrT>$Ui_+!73ogHO$jLG+5UKXq1AI zA(BswjI0dIfR3Gfj!~D%)NJ!##^;KRCnrBuu441`7x=JQck+A{Eyfd*GgK5OpHh)x MGB()!Oyytz04xPe2><{9