1
0
mirror of synced 2026-01-12 00:42:56 +00:00

rmk72: Address Tedit Find and Substitute issues reported in #2055 (#2058)

Selection highlighting should be correct if line contains a preceding
diacritic.

Find from expanded menu should work.

Screen and selection should not be garbled after substitute.

I have not yet replicated the break-on-put also reported in #2055
This commit is contained in:
rmkaplan 2025-03-10 23:38:30 -07:00 committed by GitHub
commit 02411ef3f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 146 additions and 115 deletions

View File

@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "17-Feb-2025 12:25:36" {WMEDLEY}<library>tedit>TEDIT-FIND.;136 36884
(FILECREATED " 6-Mar-2025 20:18:04" {WMEDLEY}<library>TEDIT>TEDIT-FIND.;138 38227
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.BASICFIND)
:CHANGES-TO (FNS TEDIT.SUBSTITUTE)
:PREVIOUS-DATE "15-Feb-2025 18:08:55" {WMEDLEY}<library>tedit>TEDIT-FIND.;135)
:PREVIOUS-DATE "17-Feb-2025 12:25:36" {WMEDLEY}<library>TEDIT>TEDIT-FIND.;136)
(PRETTYCOMPRINT TEDIT-FINDCOMS)
@ -94,7 +94,8 @@
(CAR (\TEDIT.BASICFIND.BACKWARD TSTREAM TARGET START END))))])])
(TEDIT.SUBSTITUTE
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM?) (* ; "Edited 8-Dec-2024 15:47 by rmk")
[LAMBDA (TSTREAM PATTERN REPLACEMENT CONFIRM?) (* ; "Edited 6-Mar-2025 20:17 by rmk")
(* ; "Edited 8-Dec-2024 15:47 by rmk")
(* ; "Edited 26-Nov-2024 23:49 by rmk")
(* ; "Edited 15-Aug-2024 09:20 by rmk")
(* ; "Edited 14-Jul-2024 00:24 by rmk")
@ -123,11 +124,10 @@
(* ;; "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.")
[CL:UNLESS (SETQ SEARCHSTRING (OR PATTERN (TEDIT.GETINPUT TEXTOBJ "Search string:"
(GETTEXTPROP TEXTOBJ
'
TEDIT.LAST.SUBSTITUTE.STRING
]
(CL:UNLESS SEARCHSTRING
[SETQ SEARCHSTRING (OR PATTERN (TEDIT.GETINPUT TEXTOBJ "Search string:"
(GETTEXTPROP TEXTOBJ
'TEDIT.LAST.SUBSTITUTE.STRING])
(CL:UNLESS [OR REPLACEMENT (SETQ REPLACEMENT (TEDIT.GETINPUT TEXTOBJ
"Replace string:"
(GETTEXTPROP TEXTOBJ
@ -137,16 +137,17 @@
]
(TEDIT.PROMPTPRINT TEXTOBJ "[Aborted]")
(RETURN))
[RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ)
[RESETSAVE (\TEDIT.MARKACTIVE TEXTOBJ "Substitute")
'(PROGN (\TEDIT.MARKINACTIVE OLDVALUE]
(if (type? SELPIECES REPLACEMENT)
elseif (OR (STRINGP REPLACEMENT)
(LITATOM REPLACEMENT))
then (SETQ REPLACEMENT (\TEDIT.SELPIECES.FROM.STRING REPLACEMENT TEXTOBJ)))
then (SETQ REPLACEMENT (\TEDIT.SELPIECES.FROM.STRING REPLACEMENT TEXTOBJ))
else (RETURN NIL))
(* ;; "Could be NIL or empty string, meaning just delete all occurrences.")
(SETQ REPLACE-LEN (fetch (SELPIECES SPLEN) of REPLACEMENT))
(SETQ REPLACE-LEN (GETSPC REPLACEMENT SPLEN))
(SETQ ACTIONSTRING (CL:IF (ZEROP REPLACE-LEN)
"delet"
"substitut"))
@ -163,7 +164,7 @@
(TEDIT.PROMPTPRINT TEXTOBJ (CONCAT (L-CASE ACTIONSTRING T)
"ing...")
T)
(SETQ SEL (fetch (TEXTOBJ SEL) of TEXTOBJ))
(SETQ SEL (FGETTOBJ TEXTOBJ SEL))
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
(\TEDIT.RESET.EXTEND.PENDING.DELETE TEXTOBJ)
(* ; "Turn off any blue pending delete")
@ -174,31 +175,39 @@
[SETQ ENDCHAR# (CL:IF (ZEROP (GETSEL SEL DCH))
(GETTOBJ TEXTOBJ TEXTLEN)
(IPLUS STARTCHAR# (SUB1 (GETSEL SEL DCH))))]
(* ;;
 "NOTE: SEARCHSTRING may contain wild cards, so the hits may be of different lengths.")
[if CONFIRMFLG
then
(* ;; "In this case the selection moves along, ending up at the last hit.")
[bind PENDING.SEL CHOICE while (SETQ RANGE (TEDIT.FIND TEXTOBJ
SEARCHSTRING STARTCHAR#
ENDCHAR# T))
(bind (LASTSEL _ (\TEDIT.COPYSEL SEL))
while (SETQ RANGE (TEDIT.FIND TEXTOBJ SEARCHSTRING STARTCHAR# ENDCHAR#
T))
do (* ;
 "Show each substitution site and ask for permission")
(SETQ PENDING.SEL (TEDIT.SETSEL TEXTOBJ (CAR RANGE)
(ADD1 (IDIFFERENCE (CADR RANGE)
(CAR RANGE)))
'RIGHT T))
(\TEDIT.SHOWSEL PENDING.SEL T TEXTOBJ)
(TEDIT.NORMALIZECARET TEXTOBJ PENDING.SEL)
(SELECTQ (U-CASE (NTHCHAR (TEDIT.GETINPUT TEXTOBJ
(\TEDIT.UPDATE.SEL SEL (CAR RANGE)
NIL
'RIGHT
'PENDINGDEL
(ADD1 (CADR RANGE)))
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.SHOWSEL SEL T TEXTOBJ)
(TEDIT.NORMALIZECARET TEXTOBJ SEL)
[SELECTQ (U-CASE (NTHCHAR (TEDIT.GETINPUT TEXTOBJ
"OK to replace? ['q' quits]" "Yes")
1))
(Q (RETURN))
(Q (GO $$OUT))
(Y (* ; "Do this one")
(\TEDIT.REPLACE.SELPIECES (\TEDIT.SELPIECES.COPY REPLACEMENT
'COPY TEXTOBJ)
TEXTOBJ PENDING.SEL)
TEXTOBJ SEL)
(\TEDIT.COPYSEL SEL LASTSEL)
(* ; "This may be where we end up")
(add NREPLACEMENTS 1)
(SETQ STARTCHAR# (GETSEL PENDING.SEL CHLIM))
(SETQ STARTCHAR# (GETSEL SEL CHLIM))
(* ; "Next start, compensate for end")
[add ENDCHAR# (IDIFFERENCE REPLACE-LEN
(ADD1 (IDIFFERENCE (CADR RANGE)
@ -207,13 +216,13 @@
(* ;;
 "Turn off rejected selection, search for next starting one charcter later. ENDCHAR# is still OK.")
(\TEDIT.SHOWSEL PENDING.SEL NIL TEXTOBJ)
(\TEDIT.SHOWSEL SEL NIL TEXTOBJ)
(SETQ STARTCHAR# (ADD1 (CAR RANGE]
finally (\TEDIT.COPYSEL LASTSEL SEL))
else
(* ;; "No confirmation required. Do the substitutions without showing intermediate work, collect all of the replacement events")
(bind FIRSTHIT HITLAST HITLEN HITDIFF (TOTALDIFF _ 0)
(SAVESEL _ (\TEDIT.COPYSEL SEL))
EVENTS while (SETQ RANGE (TEDIT.FIND TEXTOBJ SEARCHSTRING STARTCHAR#
ENDCHAR# T))
do (CL:UNLESS FIRSTHIT (* ; "For final line updating.")
@ -238,12 +247,21 @@
(add TOTALDIFF HITDIFF)
finally (CL:UNLESS (EQ NREPLACEMENTS 0)
(* ;;
 "At least one replacement, update the lines that have changed.")
(* ;; "At least one replacement, update the lines that have changed. We have to calculate how many of the original characters have %"changed%" by adding the TOTALDIFF to the final position of the last character of the last hit. Might be better if UPDATELINES took a lastchangechar.")
(\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION FIRSTHIT
(IDIFFERENCE (GETSEL SEL CHLIM)
FIRSTHIT))
(if (IGREATERP TOTALDIFF 0)
then (\TEDIT.UPDATE.LINES TEXTOBJ 'INSERTION FIRSTHIT
(IDIFFERENCE (IPLUS (FGETSEL SEL CHLIM)
TOTALDIFF)
FIRSTHIT))
elseif (ILESSP TOTALDIFF 0)
then (\TEDIT.UPDATE.LINES TEXTOBJ 'DELETION FIRSTHIT
(IDIFFERENCE (IDIFFERENCE (FGETSEL SEL CHLIM)
TOTALDIFF)
FIRSTHIT))
else (\TEDIT.UPDATE.LINES TEXTOBJ 'CHANGED FIRSTHIT
(IDIFFERENCE (FGETSEL SEL CHLIM)
FIRSTHIT)))
(* ;; "Not clear what the final selection should be, if there are multiple changes. The original selection? A selection that goes from the beginning of the first subsitution to the end of the last (as here)? Or just the selection of the last substitution?")
@ -251,6 +269,7 @@
(\TEDIT.UPDATE.SEL SEL FIRSTHIT (IDIFFERENCE HITLAST FIRSTHIT
)
'RIGHT)
(\TEDIT.FIXSEL SEL TEXTOBJ)
(\TEDIT.HISTORYADD.COMPOSITE TEXTOBJ EVENTS))]
(* ;; "Save the search & replacement strings to offer for next time:")
@ -563,8 +582,8 @@
(DREVERSE $$VAL))])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (784 22132 (TEDIT.FIND 794 . 2793) (TEDIT.FIND.BACKWARD 2795 . 5117) (TEDIT.SUBSTITUTE
5119 . 17479) (TEDIT.NEXT 17481 . 22130)) (22165 36861 (\TEDIT.WCFIND 22175 . 25694) (\TEDIT.BASICFIND
25696 . 28055) (\TEDIT.WCFIND.BACKWARD 28057 . 31521) (\TEDIT.BASICFIND.BACKWARD 31523 . 33780) (
\TEDIT.PARSE.SEARCHSTRING 33782 . 36859)))))
(FILEMAP (NIL (784 23475 (TEDIT.FIND 794 . 2793) (TEDIT.FIND.BACKWARD 2795 . 5117) (TEDIT.SUBSTITUTE
5119 . 18822) (TEDIT.NEXT 18824 . 23473)) (23508 38204 (\TEDIT.WCFIND 23518 . 27037) (\TEDIT.BASICFIND
27039 . 29398) (\TEDIT.WCFIND.BACKWARD 29400 . 32864) (\TEDIT.BASICFIND.BACKWARD 32866 . 35123) (
\TEDIT.PARSE.SEARCHSTRING 35125 . 38202)))))
STOP

Binary file not shown.

View File

@ -1,13 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "19-Feb-2025 13:27:11" {WMEDLEY}<library>tedit>TEDIT-MENU.;454 160645
(FILECREATED " 5-Mar-2025 20:52:33" {WMEDLEY}<library>TEDIT>TEDIT-MENU.;455 160734
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.PARAMENU.FILLIN \TEDIT.PARALOOKS.TO.MARBAR)
(VARS TEDIT-MENUCOMS)
:CHANGES-TO (FNS \TEDIT.EXPANDEDMENU.ACTIONFN)
:PREVIOUS-DATE " 8-Feb-2025 23:19:34" {WMEDLEY}<library>tedit>TEDIT-MENU.;453)
:PREVIOUS-DATE "19-Feb-2025 13:27:11" {WMEDLEY}<library>TEDIT>TEDIT-MENU.;454)
(PRETTYCOMPRINT TEDIT-MENUCOMS)
@ -1326,7 +1325,8 @@
(RETURN 'DON'T])
(\TEDIT.EXPANDEDMENU.ACTIONFN
[LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM MAINSTREAM) (* ; "Edited 7-Jan-2025 22:36 by rmk")
[LAMBDA (OBJ MENUSEL MENUWINDOW MENUSTREAM MAINSTREAM) (* ; "Edited 5-Mar-2025 20:51 by rmk")
(* ; "Edited 7-Jan-2025 22:36 by rmk")
(* ; "Edited 26-Nov-2024 23:30 by rmk")
(* ; "Edited 22-Oct-2024 10:54 by rmk")
(* ; "Edited 20-Oct-2024 15:40 by rmk")
@ -1373,7 +1373,8 @@
else (TEDIT.PROMPTPRINT MAINSTREAM "Include file not specified" T
)))
(FIND (SETQ STATE (MB.GET 'FINDPATTERN MENUTEXTOBJ 'STATE MENUSEL))
(if (IGEQ 1 (NCHARS STATE))
(if (IGEQ (NCHARS STATE)
1)
then (\TEDIT.KEY.FIND MAINSTREAM NIL NIL NIL NIL STATE)
else (TEDIT.PROMPTPRINT MAINSTREAM "Search pattern not specified" T)
))
@ -2619,28 +2620,28 @@
(ADDTOVAR LAMA )
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (5083 51454 (DRAWMARGINSCALE 5093 . 8552) (MARGINBAR 8554 . 15679) (MARGINBAR.CREATE
15681 . 19100) (MB.MARGINBAR.BUTTONEVENTINFN 19102 . 26741) (MB.MARGINBAR.SELFN.TABS 26743 . 31983) (
MB.MARGINBAR.SELFN.TABS.KIND 31985 . 32920) (MARGINBAR.GETSTATEFN 32922 . 36800) (MARGINBAR.SETSTATEFN
36802 . 37012) (MARGINBAR.NEUTRALIZE 37014 . 37427) (MARGINBAR.LOOKS 37429 . 40535) (
MB.MARGINBAR.SIZEFN 40537 . 41140) (MB.MARGINBAR.DISPLAYFN 41142 . 44203) (MDESCALE 44205 . 44745) (
MSCALE 44747 . 45077) (MB.MARGINBAR.SHOWTAB 45079 . 47402) (MB.MARGINBAR.TABTRACK 47404 . 48789) (
MARGINBAR.INIT 48791 . 50184) (\TEDIT.PARALOOKS.TO.MARBAR 50186 . 51452)) (52279 58496 (
\TEDIT.MENU.START 52289 . 57920) (\TEDIT.MENU.BUTTONEVENTFN 57922 . 58494)) (58815 66737 (
\TEDIT.MENU.CREATE 58825 . 60636) (\TEDIT.MENU.PARSE 60638 . 64327) (\TEDIT.MENU.NEUTRALIZE 64329 .
66400) (\TEDITMENU.RECORD.UNFORMATTED 66402 . 66735)) (66803 86736 (\TEDIT.EXPANDEDMENU.CREATE 66813
. 72108) (\TEDIT.EXPANDEDMENU.START 72110 . 73484) (\TEDIT.EXPANDEDMENU.FN 73486 . 76741) (
\TEDIT.EXPANDEDMENU.ACTIONFN 76743 . 86177) (TEDIT.MENUSTREAM 86179 . 86734)) (86798 102289 (
\TEDIT.PARAMENU.CREATE 86808 . 92829) (\TEDIT.PARAMENU.START 92831 . 93697) (\TEDIT.APPLY.PARALOOKS
93699 . 94751) (\TEDIT.SHOW.PARALOOKS 94753 . 97536) (\TEDIT.PARAMENU.FILLIN 97538 . 102287)) (102408
128184 (\TEDIT.CHARMENU.CREATE 102418 . 105022) (\TEDIT.CHARMENU.START 105024 . 106055) (
\TEDIT.CHARMENU.SPEC 106057 . 110506) (\TEDIT.CHARMENU.PARSE 110508 . 113676) (\TEDIT.CHARMENU.FILLIN
113678 . 118023) (\TEDIT.SHOW.CHARLOOKS 118025 . 121282) (\TEDIT.APPLY.CHARLOOKS 121284 . 122445) (
\TEDIT.OFFSETTYPE.STATEFN 122447 . 124410) (\TEDIT.OTHER.STATECHANGEFN 124412 . 126057) (
\TEDIT.OTHER.SELECTFN 126059 . 128182)) (128246 154685 (\TEDIT.PAGEMENU.CREATE 128256 . 135450) (
\TEDIT.SHOW.PAGELOOKS 135452 . 137247) (\TEDIT.PAGEMENU.FILLIN 137249 . 138799) (
\TEDIT.PAGEREGION.UNPARSE 138801 . 147991) (\TEDIT.APPLY.PAGELOOKS 147993 . 149920) (
\TEDIT.CHANGE.PAGELOOKS 149922 . 153841) (\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 153843 . 154683)) (154686
160489 (\TEDIT.PAGEMENU.CREATE.HEADINGS 154696 . 157508) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 157510
. 158935) (\TEDIT.PAGEMENU.HEADINGS.STATEFN 158937 . 160487)))))
(FILEMAP (NIL (5022 51393 (DRAWMARGINSCALE 5032 . 8491) (MARGINBAR 8493 . 15618) (MARGINBAR.CREATE
15620 . 19039) (MB.MARGINBAR.BUTTONEVENTINFN 19041 . 26680) (MB.MARGINBAR.SELFN.TABS 26682 . 31922) (
MB.MARGINBAR.SELFN.TABS.KIND 31924 . 32859) (MARGINBAR.GETSTATEFN 32861 . 36739) (MARGINBAR.SETSTATEFN
36741 . 36951) (MARGINBAR.NEUTRALIZE 36953 . 37366) (MARGINBAR.LOOKS 37368 . 40474) (
MB.MARGINBAR.SIZEFN 40476 . 41079) (MB.MARGINBAR.DISPLAYFN 41081 . 44142) (MDESCALE 44144 . 44684) (
MSCALE 44686 . 45016) (MB.MARGINBAR.SHOWTAB 45018 . 47341) (MB.MARGINBAR.TABTRACK 47343 . 48728) (
MARGINBAR.INIT 48730 . 50123) (\TEDIT.PARALOOKS.TO.MARBAR 50125 . 51391)) (52218 58435 (
\TEDIT.MENU.START 52228 . 57859) (\TEDIT.MENU.BUTTONEVENTFN 57861 . 58433)) (58754 66676 (
\TEDIT.MENU.CREATE 58764 . 60575) (\TEDIT.MENU.PARSE 60577 . 64266) (\TEDIT.MENU.NEUTRALIZE 64268 .
66339) (\TEDITMENU.RECORD.UNFORMATTED 66341 . 66674)) (66742 86825 (\TEDIT.EXPANDEDMENU.CREATE 66752
. 72047) (\TEDIT.EXPANDEDMENU.START 72049 . 73423) (\TEDIT.EXPANDEDMENU.FN 73425 . 76680) (
\TEDIT.EXPANDEDMENU.ACTIONFN 76682 . 86266) (TEDIT.MENUSTREAM 86268 . 86823)) (86887 102378 (
\TEDIT.PARAMENU.CREATE 86897 . 92918) (\TEDIT.PARAMENU.START 92920 . 93786) (\TEDIT.APPLY.PARALOOKS
93788 . 94840) (\TEDIT.SHOW.PARALOOKS 94842 . 97625) (\TEDIT.PARAMENU.FILLIN 97627 . 102376)) (102497
128273 (\TEDIT.CHARMENU.CREATE 102507 . 105111) (\TEDIT.CHARMENU.START 105113 . 106144) (
\TEDIT.CHARMENU.SPEC 106146 . 110595) (\TEDIT.CHARMENU.PARSE 110597 . 113765) (\TEDIT.CHARMENU.FILLIN
113767 . 118112) (\TEDIT.SHOW.CHARLOOKS 118114 . 121371) (\TEDIT.APPLY.CHARLOOKS 121373 . 122534) (
\TEDIT.OFFSETTYPE.STATEFN 122536 . 124499) (\TEDIT.OTHER.STATECHANGEFN 124501 . 126146) (
\TEDIT.OTHER.SELECTFN 126148 . 128271)) (128335 154774 (\TEDIT.PAGEMENU.CREATE 128345 . 135539) (
\TEDIT.SHOW.PAGELOOKS 135541 . 137336) (\TEDIT.PAGEMENU.FILLIN 137338 . 138888) (
\TEDIT.PAGEREGION.UNPARSE 138890 . 148080) (\TEDIT.APPLY.PAGELOOKS 148082 . 150009) (
\TEDIT.CHANGE.PAGELOOKS 150011 . 153930) (\TEDIT.PAGEMENU.CHARLOOKS.STATEFN 153932 . 154772)) (154775
160578 (\TEDIT.PAGEMENU.CREATE.HEADINGS 154785 . 157597) (\TEDIT.PAGEMENU.HEADINGS.SETSTATEFN 157599
. 159024) (\TEDIT.PAGEMENU.HEADINGS.STATEFN 159026 . 160576)))))
STOP

Binary file not shown.

View File

@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Feb-2025 10:40:05" {WMEDLEY}<library>tedit>TEDIT-SCREEN.;866 188857
(FILECREATED " 6-Mar-2025 11:42:48" {WMEDLEY}<library>TEDIT>TEDIT-SCREEN.;867 189057
:EDIT-BY rmk
:CHANGES-TO (FNS \TEDIT.FORMATLINE)
:PREVIOUS-DATE "19-Feb-2025 13:38:09" {WMEDLEY}<library>tedit>TEDIT-SCREEN.;864)
:PREVIOUS-DATE "25-Feb-2025 10:40:05" {WMEDLEY}<library>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

Binary file not shown.

View File

@ -1,12 +1,12 @@
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "28-Feb-2025 17:45:33" {WMEDLEY}<library>TEDIT>TEDIT-SELECTION.;660 152607
(FILECREATED " 6-Mar-2025 11:59:08" {WMEDLEY}<library>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}<library>TEDIT>TEDIT-SELECTION.;656)
:PREVIOUS-DATE "28-Feb-2025 17:45:33" {WMEDLEY}<library>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

Binary file not shown.