1
0
mirror of synced 2026-02-13 19:54:45 +00:00

TEDIT-SELECTION and TEDIT-SCREEN: Selection should take account of diacritics

This commit is contained in:
rmkaplan
2025-03-06 20:24:32 -08:00
parent 6bf26ebadd
commit 70f0e97886
4 changed files with 59 additions and 48 deletions

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.