From d4b8656803fc444822a0e47289e1877130e3a877 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Wed, 5 Mar 2025 12:27:50 -0800 Subject: [PATCH] TEDIT: Fix image object glitch plus minor extensions (#2049) * Paren error when selection looks set to INVERTED * Add SET, SHADE, and SHADEHEIGHT properties to TEDIT.SELPROP * Add QUIET as optional last argument to TEDIT.FORMAT.HARDCOPY, suppress prompt-window message * COLLECT? argument to TEDIT.MAP.OBJECTS can specify what kind of information to collect. --- library/tedit/TEDIT | 70 +++++++++++++++------------- library/tedit/TEDIT-PAGE | 60 ++++++++++++------------ library/tedit/TEDIT-PAGE.LCOM | Bin 29022 -> 28839 bytes library/tedit/TEDIT-SCREEN | 47 ++++++++++--------- library/tedit/TEDIT-SCREEN.LCOM | Bin 31861 -> 31466 bytes library/tedit/TEDIT-SELECTION | 71 +++++++++++++++-------------- library/tedit/TEDIT-SELECTION.LCOM | Bin 30091 -> 30116 bytes library/tedit/TEDIT.LCOM | Bin 35042 -> 35167 bytes 8 files changed, 130 insertions(+), 118 deletions(-) diff --git a/library/tedit/TEDIT b/library/tedit/TEDIT index 84407530..880b9075 100644 --- a/library/tedit/TEDIT +++ b/library/tedit/TEDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "20-Feb-2025 08:50:50" {WMEDLEY}tedit>TEDIT.;763 154870 +(FILECREATED "25-Feb-2025 15:07:03" {WMEDLEY}TEDIT>TEDIT.;765 155339 :EDIT-BY rmk - :CHANGES-TO (FNS TEDITSTRING) + :CHANGES-TO (FNS TEDIT.MAP.OBJECTS TEDIT.INSERT.OBJECT) - :PREVIOUS-DATE "19-Feb-2025 13:30:08" {WMEDLEY}tedit>TEDIT.;762) + :PREVIOUS-DATE "20-Feb-2025 08:50:50" {WMEDLEY}TEDIT>TEDIT.;763) (PRETTYCOMPRINT TEDITCOMS) @@ -749,7 +749,8 @@ (DEFINEQ (TEDIT.INSERT.OBJECT - [LAMBDA (OBJECT TSTREAM CH# LOOKS) (* ; "Edited 2-Feb-2025 11:37 by rmk") + [LAMBDA (OBJECT TSTREAM CH# LOOKS) (* ; "Edited 25-Feb-2025 11:18 by rmk") + (* ; "Edited 2-Feb-2025 11:37 by rmk") (* ; "Edited 26-Dec-2024 10:13 by rmk") (* ; "Edited 21-Oct-2024 00:26 by rmk") (* ; "Edited 2-Aug-2024 08:46 by rmk") @@ -815,7 +816,7 @@ (CL:WHEN (type? SELECTION CH#) (SETQ CH# (GETSEL CH# CH#))) (CL:WHEN (FGETTOBJ TEXTOBJ BLUEPENDINGDELETE) - (\TEDIT.DELETE TEXTOBJ SEL T)) + (\TEDIT.DELETE TEXTOBJ SEL)) (CL:WHEN CH# (\TEDIT.UPDATE.SEL SEL (IMIN CH# (ADD1 (TEXTLEN TEXTOBJ))) 0 @@ -948,7 +949,8 @@ else (TEDIT.PROMPTPRINT TSTREAM "Changed object not found in document" T]) (TEDIT.MAP.OBJECTS - [LAMBDA (TSTREAM FN FNARG COLLECT?) (* ; "Edited 23-Apr-2024 09:15 by rmk") + [LAMBDA (TSTREAM FN FNARG COLLECT?) (* ; "Edited 25-Feb-2025 15:06 by rmk") + (* ; "Edited 23-Apr-2024 09:15 by rmk") (* ; "Edited 16-Mar-2024 10:03 by rmk") (* ; "Edited 4-Mar-2024 16:12 by rmk") (* ; "Edited 6-Nov-2022 12:15 by rmk") @@ -963,7 +965,13 @@ when (AND (EQ OBJECT.PTYPE (PTYPE PC)) (type? IMAGEOBJ (SETQ OBJ (PCONTENTS PC))) (SETQ FNVAL (APPLY* FN CH# OBJ FNARG))) - do (CL:WHEN COLLECT? + do (SELECTQ COLLECT? + (NIL) + (OBJECT (PUSH $$VAL OBJ)) + (CH# (PUSH $$VAL CH#)) + (VALUE (PUSH $$VAL CH#) + FNVAL) + (FIRST (RETURN (LIST CH# OBJ FNVAL))) (PUSH $$VAL (LIST CH# OBJ FNVAL))) (CL:WHEN (EQ FNVAL 'STOP) (GO $$OUT)) finally (RETURN (DREVERSE $$VAL]) @@ -2492,7 +2500,7 @@ (* ; "TEDIT Support information") -(RPAQQ TEDITSYSTEMDATE "20-Feb-2025 08:50:50") +(RPAQQ TEDITSYSTEMDATE "25-Feb-2025 15:07:03") @@ -2502,27 +2510,27 @@ (ADDTOVAR PRINTFILETYPES (TEDIT (TEST \TEDIT.GET.TRAILER) (EXTENSION (TEDIT)))) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4625 6968 (MAKE-TEDIT-EXPORTS.ALL 4635 . 5181) (UPDATE-TEDIT 5183 . 6197) (EDIT-TEDIT -6199 . 6966)) (8662 36896 (TEDIT 8672 . 11250) (TEXTSTREAM 11252 . 13172) (TEXTSTREAMP 13174 . 13558) -(TEDITMENUP 13560 . 14326) (COERCETEXTSTREAM 14328 . 18539) (TEDIT.CONCAT 18541 . 21847) (TEDITSTRING -21849 . 22763) (TEDIT-SEE 22765 . 23324) (TEDIT.COPY 23326 . 25471) (TEDIT.DELETE 25473 . 26725) ( -TEDIT.INSERT 26727 . 29685) (TEDIT.TERPRI 29687 . 30801) (TEDIT.KILL 30803 . 31719) (TEDIT.QUIT 31721 - . 33087) (TEDIT.MOVE 33089 . 33977) (TEDIT.STRINGWIDTH 33979 . 34650) (TEDIT.CHARWIDTH 34652 . 36894) -) (36897 38838 (TEXTOBJ 36907 . 37372) (COERCETEXTOBJ 37374 . 38836)) (40238 41294 (TDRIBBLE 40248 . -41292)) (41335 56439 (TEDIT.INSERT.OBJECT 41345 . 46079) (TEDIT.EDIT.OBJECT 46081 . 48422) ( -TEDIT.FIND.OBJECT 48424 . 49932) (TEDIT.FIND.OBJECT.BACKWARD 49934 . 51861) (TEDIT.OBJECT.CHANGED -51863 . 54730) (TEDIT.MAP.OBJECTS 54732 . 55967) (\TEDIT.FIRST.OBJPIECE 55969 . 56202) ( -\TEDIT.NEXT.OBJPIECE 56204 . 56437)) (56462 63905 (\TEDIT.CONCAT.PAGEFRAMES 56472 . 61539) ( -\TEDIT.GET.PAGE.HEADINGS 61541 . 62570) (\TEDIT.CONCAT.INSTALL.HEADINGS 62572 . 63903)) (63906 67335 ( -\TEDIT.MOVE.MSG 63916 . 65997) (\TEDIT.READONLY 65999 . 67333)) (67336 82172 (TEDIT.NCHARS 67346 . -67719) (TEDIT.RPLCHARCODE 67721 . 75736) (TEDIT.NTHCHARCODE 75738 . 78095) (TEDIT.NTHCHAR 78097 . -78355) (\TEDIT.PIECE.NTHCHARCODE 78357 . 82170)) (82218 136670 (\TEDIT1 82228 . 84305) (\TEDIT.INSERT -84307 . 90284) (\TEDIT.MOVE 90286 . 97636) (\TEDIT.COPY 97638 . 101616) (\TEDIT.REPLACE.SELPIECES -101618 . 105598) (\TEDIT.INSERT.SELPIECES 105600 . 108485) (\TEDIT.RESTARTFN 108487 . 110992) ( -\TEDIT.CHARDELETE 110994 . 113821) (\TEDIT.COPYPIECE 113823 . 118671) (\TEDIT.APPLY.OBJFN 118673 . -121870) (\TEDIT.DELETE 121872 . 126800) (\TEDIT.DIFFUSE.PARALOOKS 126802 . 129073) (\TEDIT.WORDDELETE -129075 . 130631) (\TEDIT.WORDDELETE.FORWARD 130633 . 132305) (\TEDIT.FINISHEDIT? 132307 . 136668)) ( -136671 137330 (\TEDIT.THELP 136681 . 137328)) (137364 145254 (\TEDIT.PARAPIECES 137374 . 139348) ( -\TEDIT.PARA.FIRST 139350 . 142217) (\TEDIT.PARA.LAST 142219 . 145252)) (145255 154220 ( -\TEDIT.WORD.FIRST 145265 . 149921) (\TEDIT.WORD.LAST 149923 . 154218))))) + (FILEMAP (NIL (4651 6994 (MAKE-TEDIT-EXPORTS.ALL 4661 . 5207) (UPDATE-TEDIT 5209 . 6223) (EDIT-TEDIT +6225 . 6992)) (8688 36922 (TEDIT 8698 . 11276) (TEXTSTREAM 11278 . 13198) (TEXTSTREAMP 13200 . 13584) +(TEDITMENUP 13586 . 14352) (COERCETEXTSTREAM 14354 . 18565) (TEDIT.CONCAT 18567 . 21873) (TEDITSTRING +21875 . 22789) (TEDIT-SEE 22791 . 23350) (TEDIT.COPY 23352 . 25497) (TEDIT.DELETE 25499 . 26751) ( +TEDIT.INSERT 26753 . 29711) (TEDIT.TERPRI 29713 . 30827) (TEDIT.KILL 30829 . 31745) (TEDIT.QUIT 31747 + . 33113) (TEDIT.MOVE 33115 . 34003) (TEDIT.STRINGWIDTH 34005 . 34676) (TEDIT.CHARWIDTH 34678 . 36920) +) (36923 38864 (TEXTOBJ 36933 . 37398) (COERCETEXTOBJ 37400 . 38862)) (40264 41320 (TDRIBBLE 40274 . +41318)) (41361 56908 (TEDIT.INSERT.OBJECT 41371 . 46212) (TEDIT.EDIT.OBJECT 46214 . 48555) ( +TEDIT.FIND.OBJECT 48557 . 50065) (TEDIT.FIND.OBJECT.BACKWARD 50067 . 51994) (TEDIT.OBJECT.CHANGED +51996 . 54863) (TEDIT.MAP.OBJECTS 54865 . 56436) (\TEDIT.FIRST.OBJPIECE 56438 . 56671) ( +\TEDIT.NEXT.OBJPIECE 56673 . 56906)) (56931 64374 (\TEDIT.CONCAT.PAGEFRAMES 56941 . 62008) ( +\TEDIT.GET.PAGE.HEADINGS 62010 . 63039) (\TEDIT.CONCAT.INSTALL.HEADINGS 63041 . 64372)) (64375 67804 ( +\TEDIT.MOVE.MSG 64385 . 66466) (\TEDIT.READONLY 66468 . 67802)) (67805 82641 (TEDIT.NCHARS 67815 . +68188) (TEDIT.RPLCHARCODE 68190 . 76205) (TEDIT.NTHCHARCODE 76207 . 78564) (TEDIT.NTHCHAR 78566 . +78824) (\TEDIT.PIECE.NTHCHARCODE 78826 . 82639)) (82687 137139 (\TEDIT1 82697 . 84774) (\TEDIT.INSERT +84776 . 90753) (\TEDIT.MOVE 90755 . 98105) (\TEDIT.COPY 98107 . 102085) (\TEDIT.REPLACE.SELPIECES +102087 . 106067) (\TEDIT.INSERT.SELPIECES 106069 . 108954) (\TEDIT.RESTARTFN 108956 . 111461) ( +\TEDIT.CHARDELETE 111463 . 114290) (\TEDIT.COPYPIECE 114292 . 119140) (\TEDIT.APPLY.OBJFN 119142 . +122339) (\TEDIT.DELETE 122341 . 127269) (\TEDIT.DIFFUSE.PARALOOKS 127271 . 129542) (\TEDIT.WORDDELETE +129544 . 131100) (\TEDIT.WORDDELETE.FORWARD 131102 . 132774) (\TEDIT.FINISHEDIT? 132776 . 137137)) ( +137140 137799 (\TEDIT.THELP 137150 . 137797)) (137833 145723 (\TEDIT.PARAPIECES 137843 . 139817) ( +\TEDIT.PARA.FIRST 139819 . 142686) (\TEDIT.PARA.LAST 142688 . 145721)) (145724 154689 ( +\TEDIT.WORD.FIRST 145734 . 150390) (\TEDIT.WORD.LAST 150392 . 154687))))) STOP diff --git a/library/tedit/TEDIT-PAGE b/library/tedit/TEDIT-PAGE index ca48a190..06aae89f 100644 --- a/library/tedit/TEDIT-PAGE +++ b/library/tedit/TEDIT-PAGE @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "19-Feb-2025 13:33:12" {WMEDLEY}tedit>TEDIT-PAGE.;207 133407 +(FILECREATED "23-Feb-2025 10:06:16" {WMEDLEY}TEDIT>TEDIT-PAGE.;208 133418 :EDIT-BY rmk - :CHANGES-TO (MACROS \FIRST-COLUMN-START) - (FNS \TEDIT.FORMATPAGE \TEDIT.FORMATTEXTBOX \TEDIT.SKIP.SPECIALCOND - \TEDIT.HARDCOPY.PAGEHEADINGS \TEDIT.HARDCOPY-COLUMN-END) + :CHANGES-TO (FNS TEDIT.FORMAT.HARDCOPY) - :PREVIOUS-DATE " 8-Feb-2025 23:42:12" {WMEDLEY}tedit>TEDIT-PAGE.;206) + :PREVIOUS-DATE "19-Feb-2025 13:33:12" {WMEDLEY}TEDIT>TEDIT-PAGE.;207) (PRETTYCOMPRINT TEDIT-PAGECOMS) @@ -632,7 +630,8 @@ (TEDIT.FORMAT.HARDCOPY [LAMBDA (TEXTSTREAM FILE DONTSEND BREAKPAGETITLE SERVER PRINTOPTIONS IMAGETYPE FIRSTPG# STARTPG - ENDPG) (* ; "Edited 30-Aug-2024 15:45 by rmk") + ENDPG QUIET) (* ; "Edited 23-Feb-2025 09:59 by rmk") + (* ; "Edited 30-Aug-2024 15:45 by rmk") (* ; "Edited 10-Jul-2024 23:34 by rmk") (* ; "Edited 29-Jun-2024 10:32 by rmk") (* ; "Edited 5-Apr-2024 08:01 by rmk") @@ -702,7 +701,7 @@ [SETQ SCRATCHFILE (OR FILE (PRINTER.SCRATCH.FILE (TEXTSTREAM TEXTSTREAM] (RESETLST (* ;  "Set up to do the user's cleanup on the way out, as well.") - (TEDIT.PROMPTPRINT TEXTOBJ "Formatting for print..." T) + (CL:UNLESS QUIET (TEDIT.PROMPTPRINT TEXTOBJ "Formatting for print..." T)) [COND ((AND FILE (OPENP FILE) (IMAGESTREAMTYPE FILE)) (* ; @@ -759,15 +758,16 @@ (FUNCTION NILL)) TEXTSTREAM)) (SETQ NPAGES (GETPFS FORMATTINGSTATE PAGECOUNT)) - (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT NPAGES " page" (CL:IF (EQ 1 NPAGES) - "" - "s") - " printed" - (CL:IF (EQ FILE SCRATCHFILE) - (CONCAT " to " (OR TARGETFILENAME (FULLNAME - FILE))) - "")) - T) + (CL:UNLESS QUIET + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT NPAGES " page" (CL:IF (EQ 1 NPAGES) + "" + "s") + " printed" + (CL:IF (EQ FILE SCRATCHFILE) + (CONCAT " to " (OR TARGETFILENAME + (FULLNAME FILE))) + "")) + T)) (RETURN NPAGES)))]) ) @@ -2084,18 +2084,18 @@ (RETURN (DREMOVE NIL $$VAL]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12266 15878 (\TEDIT.PARSE.PAGEFRAMES 12276 . 14055) (\TEDIT.PUT.PAGEFRAMES 14057 . -14881) (\TEDIT.UNPARSE.PAGEFRAMES 14883 . 15876)) (15941 37839 (TEDIT.SINGLE.PAGEFORMAT 15951 . 26825) - (TEDIT.COMPOUND.PAGEFORMAT 26827 . 27806) (TEDIT.PAGEFORMAT 27808 . 35097) (TEDIT.GET.PAGEFORMAT -35099 . 37837)) (38126 48628 (TEDIT.FORMAT.HARDCOPY 38136 . 48626)) (48715 101192 (\TEDIT.FORMATBOX -48725 . 61828) (\TEDIT.FORMATHEADING 61830 . 66476) (\TEDIT.FORMATPAGE 66478 . 75345) ( -\TEDIT.FORMATTEXTBOX 75347 . 91728) (\TEDIT.FORMATFOLIO 91730 . 97047) (\TEDIT.FORMAT.FOUNDBOX? 97049 - . 99088) (\TEDIT.SKIP.SPECIALCOND 99090 . 101190)) (101272 105981 (\TEDIT.HARDCOPY.PAGEHEADINGS -101282 . 105979)) (106090 114141 (\TEDIT.HARDCOPY-COLUMN-END 106100 . 114139)) (114186 119127 ( -SCALEPAGEUNITS 114196 . 115337) (SCALEPAGEXUNITS 115339 . 116109) (SCALEPAGEYUNITS 116111 . 116882) ( -\TEDIT.PAPERHEIGHT 116884 . 117819) (\TEDIT.PAPERWIDTH 117821 . 119125)) (119543 123111 (ROMANNUMERALS - 119553 . 123109)) (123150 130416 (TEDIT.PAGENO.CREATE 123160 . 123536) (\TEDIT.PAGENO.OBJINIT 123538 - . 124821) (\TEDIT.PAGENO.BUTTONEVENTINFN 124823 . 125889) (\TEDIT.PAGENO.IMAGEBOXFN 125891 . 128041) -(\TEDIT.PAGENO.DISPLAYFN 128043 . 129693) (\TEDIT.PAGENO.GETFN 129695 . 130087) (\TEDIT.PAGENO.PUTFN -130089 . 130414)) (130481 133384 (\TEDIT.FORMAT.FOOTNOTE 130491 . 133382))))) + (FILEMAP (NIL (12098 15710 (\TEDIT.PARSE.PAGEFRAMES 12108 . 13887) (\TEDIT.PUT.PAGEFRAMES 13889 . +14713) (\TEDIT.UNPARSE.PAGEFRAMES 14715 . 15708)) (15773 37671 (TEDIT.SINGLE.PAGEFORMAT 15783 . 26657) + (TEDIT.COMPOUND.PAGEFORMAT 26659 . 27638) (TEDIT.PAGEFORMAT 27640 . 34929) (TEDIT.GET.PAGEFORMAT +34931 . 37669)) (37958 48639 (TEDIT.FORMAT.HARDCOPY 37968 . 48637)) (48726 101203 (\TEDIT.FORMATBOX +48736 . 61839) (\TEDIT.FORMATHEADING 61841 . 66487) (\TEDIT.FORMATPAGE 66489 . 75356) ( +\TEDIT.FORMATTEXTBOX 75358 . 91739) (\TEDIT.FORMATFOLIO 91741 . 97058) (\TEDIT.FORMAT.FOUNDBOX? 97060 + . 99099) (\TEDIT.SKIP.SPECIALCOND 99101 . 101201)) (101283 105992 (\TEDIT.HARDCOPY.PAGEHEADINGS +101293 . 105990)) (106101 114152 (\TEDIT.HARDCOPY-COLUMN-END 106111 . 114150)) (114197 119138 ( +SCALEPAGEUNITS 114207 . 115348) (SCALEPAGEXUNITS 115350 . 116120) (SCALEPAGEYUNITS 116122 . 116893) ( +\TEDIT.PAPERHEIGHT 116895 . 117830) (\TEDIT.PAPERWIDTH 117832 . 119136)) (119554 123122 (ROMANNUMERALS + 119564 . 123120)) (123161 130427 (TEDIT.PAGENO.CREATE 123171 . 123547) (\TEDIT.PAGENO.OBJINIT 123549 + . 124832) (\TEDIT.PAGENO.BUTTONEVENTINFN 124834 . 125900) (\TEDIT.PAGENO.IMAGEBOXFN 125902 . 128052) +(\TEDIT.PAGENO.DISPLAYFN 128054 . 129704) (\TEDIT.PAGENO.GETFN 129706 . 130098) (\TEDIT.PAGENO.PUTFN +130100 . 130425)) (130492 133395 (\TEDIT.FORMAT.FOOTNOTE 130502 . 133393))))) STOP diff --git a/library/tedit/TEDIT-PAGE.LCOM b/library/tedit/TEDIT-PAGE.LCOM index 70ea0cab2dddcac432982369d641f877d5ba9eda..13556b021c440c1cff5f5241c401f52e40ffe967 100644 GIT binary patch delta 1054 zcmZuwO>5Lp6g8zqol2`vY}Kh;Vrv~?V)Bwnrcsp42zVK=OE5^^0VYp?tj@|6)!=GM& zl(E-1Dypu48Br_QvoGxsV-ie8<7{k;HLKy*IS{!7%+1D71IV&np$h~} zs@6TqxRkm83PD`k>3ZWb#|J}&3YvB|y$gqC0m5P>&t+B(N_r*(@|p@&iyczKOQqmg zC^Ghp7|9^q5Xzl9@KHF2_T!z)CI?;rGT7hg6Q2vcG3m@CyH{Az_+Kh$h*O_MuL2fFEFz@bm31r?F* zT`2)w2;#0Q7cz9Mf1oROE(G1_uka*erDzvsal?Uo&-Xg#;G6XIyY!+ttksHcd!*W}MMvyOWn7dFzeuceb#B+wgrj*+o$l8P=8&5l-uF$c5ar>-p4< zsD*^^(kYx}c-jo8mopj9)qfu0iPfQ zWdmGvr#~=Y81Ne=YoY%sGvb2|hoVbW3uc^Chtedit>TEDIT-SCREEN.;864 188987 +(FILECREATED "25-Feb-2025 10:40:05" {WMEDLEY}tedit>TEDIT-SCREEN.;866 188857 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.FORMATLINE \TEDIT.FORMATLINE.SETUP.PARA \TEDIT.FORMATLINE.HORIZONTAL - \TEDIT.FORMATLINE.VERTICAL \TEDIT.FORMATLINE.TABS \TEDIT.FORMATLINE.EMPTY - \TEDIT.DISPLAYLINE \TEDIT.DISPLAYLINE.TABS \TEDIT.LINE.BOTTOM - \TEDIT.LASTVALIDLINE) + :CHANGES-TO (FNS \TEDIT.FORMATLINE) - :PREVIOUS-DATE "12-Feb-2025 19:34:33" {WMEDLEY}tedit>TEDIT-SCREEN.;862) + :PREVIOUS-DATE "19-Feb-2025 13:38:09" {WMEDLEY}tedit>TEDIT-SCREEN.;864) (PRETTYCOMPRINT TEDIT-SCREENCOMS) @@ -690,6 +687,7 @@ (\TEDIT.FORMATLINE [LAMBDA (TSTREAM CH#1 LINE REGION IMAGESTREAM FORMATTINGSTATE) + (* ; "Edited 25-Feb-2025 10:39 by rmk") (* ; "Edited 19-Feb-2025 13:36 by rmk") (* ; "Edited 10-Feb-2025 09:59 by rmk") (* ; "Edited 8-Feb-2025 23:36 by rmk") @@ -940,7 +938,8 @@ (SETQ BOX (APPLY* (IMAGEOBJPROP CH 'IMAGEBOXFN) CH BOXSTREAM TX (CL:IF (EQ LINETYPE 'HARDCOPYDISPLAY) (SCALEDOWN SCALE WIDTH) - WIDTH))) + WIDTH) + TSTREAM)) (IMAGEOBJPROP CH 'BOUNDBOX BOX) (SETQ TRUEASCENT (IMAX TRUEASCENT (IPLUS (IDIFFERENCE (fetch (IMAGEBOX YSIZE) of BOX) @@ -2885,21 +2884,21 @@ (\TEDIT.LINE.TALLP LINE PHEIGHT))))]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (28270 30486 (\TEDIT.LINEDESCRIPTOR.DEFPRINT 28280 . 30484)) (37891 120398 ( -\TEDIT.FORMATLINE 37901 . 73065) (\TEDIT.FORMATLINE.SETUP.PARA 73067 . 78233) ( -\TEDIT.FORMATLINE.HORIZONTAL 78235 . 82808) (\TEDIT.FORMATLINE.VERTICAL 82810 . 85261) ( -\TEDIT.FORMATLINE.JUSTIFY 85263 . 91284) (\TEDIT.FORMATLINE.TABS 91286 . 99314) (\TEDIT.SCALE.TABS -99316 . 100107) (\TEDIT.FORMATLINE.PURGE.SPACES 100109 . 101536) (\TEDIT.FORMATLINE.FLUSH.SOFTHYPHEN -101538 . 102439) (\TEDIT.FORMATLINE.EMPTY 102441 . 107468) (\TEDIT.FORMATLINE.UPDATELOOKS 107470 . -113592) (\TEDIT.FORMATLINE.LASTLEGAL 113594 . 117134) (\TEDIT.LINES.ABOVE 117136 . 120396)) (120515 -122430 (\TLVALIDATE 120525 . 122428)) (122628 144166 (\TEDIT.DISPLAYLINE 122638 . 136278) ( -\TEDIT.DISPLAYLINE.TABS 136280 . 139084) (\TEDIT.LINECACHE 139086 . 139814) (\TEDIT.CREATE.LINECACHE -139816 . 140652) (\TEDIT.BLTCHAR 140654 . 143281) (\TEDIT.DIACRITIC.SHIFT 143283 . 144164)) (144781 -188964 (\TEDIT.BACKFORMAT 144791 . 147345) (\TEDIT.PREVIOUS.LINEBREAK 147347 . 150070) ( -\TEDIT.UPDATE.LINES 150072 . 154942) (\TEDIT.PANE.CREATELINES 154944 . 158047) ( -\TEDIT.SUFFIXLINE.CREATE 158049 . 159424) (\TEDIT.LINES.BELOW 159426 . 163887) (\TEDIT.MEASURED.LINES -163889 . 165789) (\TEDIT.VALID.LINES 165791 . 174052) (\TEDIT.LASTVALIDLINE 174054 . 178979) ( -\TEDIT.NEXTVALIDLINE 178981 . 180411) (\TEDIT.CLEARPANE.BELOW.LINE 180413 . 182519) (\TEDIT.INSERTLINE - 182521 . 183907) (\TEDIT.LINE.BOTTOM 183909 . 187139) (\TEDIT.SHOW.AT.BOTTOMP 187141 . 188251) ( -\TEDIT.SHOW.AT.TOPP 188253 . 188962))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-SCREEN.LCOM b/library/tedit/TEDIT-SCREEN.LCOM index 8d58536e3a0721d0f03d1ce403b6824d195991fa..cb184e5d2a2cf4c14f69911a61e850c7c18c7685 100644 GIT binary patch delta 1043 zcmZuv&ubGw6n67NnxsAS$HuBq$55m#HtfvK?92v4*3E3QxXmt`ZELkiEA62uVo^LO z67=Lv>wpxMp1cV{SiJUZ{{)X7M64GPDi$wJ8jDHO+r00+_kHhuZ+3qxJG;vBxgkU* zos}DtNJ9ibt)#&c(bjL4PLgquEg<|qiC{@*C4|IME{~VT>7?pb03fPes7iMI(S(u}YY#@^I7!oI zD}F7iMUrY7IDi_U%pGgSiyXfijf33X%Zd0;&t^h-Ctl^wWj6dF|IVkz@fTt{_crsr z6{Ww3`@MA~BYyQ>PtCo&m5yiozNOT{_OaLg;)mpu#$K@6*z^3w#@>ZE8qgJGLp&Ya zQK&dW^8JWG1{R#FJoE#ADAR#N)gw-mhg-&@l0Vasmep9J4;JH;^<~2KXgUAm7VkYXw zsCfjYcVmXujS<|9Vc5dN$Kl?(PPz&xqaX@rxU{d_IvK_IFrpFp*=Ajv%Y#ahsgTRl z5=uZ|P4No1%5HT^0)~F55ffR$tIc#|T>^E45eEOhFw(Hro`j|eJ7b1BV~XSywmWTk n0GdVzGb99c6wBj+gO$o|E%2;)0Fw~0xc?Ma6cW#!9$ESelZqL# delta 1125 zcmZuwO=uHA6n5IQwTZ2*Nob20rctC(8+K;)Z-OG*%_LpiWS7mhwGy-n9)gk>dhjAd zJa}#x=s}@)@ZvE9uilH|-Lt3mR-s}K6(61k)VFe=q^=GL$IRS%lq<1Byl*nVL{$+vxEnnfkDq+4@330!2iQlVS=C3Ok z_&X5fJGVx~7ge=za>?<1CkIPq7|*QOHbi>;V1^DLmE(!vLdLS0=`q7+X&4{W7B|3+ z^Ri&ksjl%&fcSB_)TKMdW-^F%q{3q60rMOeVolTeK{6J=nu<6I$L>fJwmLH%cO7C??kZKg?}e!`Wumr&@ADHTCJKd}R$R}?xxVXJc^_h|YOvTb!dy1I0uvb0 zg<>y8I>fO^L|D<15Uc?#A?-wO7zv-GaAdOOgw3*scmgWL|7(##kXxPl%9aF}ee4DzvRUOS6LMS+4JRVy9H< z$24sKhWar@AAsS0jL;5N>lP-YuTaw!=zA+n>@?l+QIl~mA`zHot5)kls0xNzj|smO zjX>APvSntZt$bDhD(bl?E2IWpmT%>KV@cSKF)aAvcgjI55xqNys7`xgd^Xl3(S>Q{ lT82?oh@TQ8MUl?Lh*H=diNBnk1Zwl`ECYZvzsFr)wg diff --git a/library/tedit/TEDIT-SELECTION b/library/tedit/TEDIT-SELECTION index ecdeb2ac..b96b9788 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 "18-Feb-2025 22:06:22" {WMEDLEY}tedit>TEDIT-SELECTION.;656 152308 +(FILECREATED "28-Feb-2025 17:45:33" {WMEDLEY}TEDIT>TEDIT-SELECTION.;660 152607 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SCAN.LINE) + :CHANGES-TO (FNS \TEDIT.SET.SEL.LOOKS TEDIT.SELPROP) - :PREVIOUS-DATE "17-Feb-2025 12:26:54" {WMEDLEY}tedit>TEDIT-SELECTION.;655) + :PREVIOUS-DATE "18-Feb-2025 22:06:22" {WMEDLEY}TEDIT>TEDIT-SELECTION.;656) (PRETTYCOMPRINT TEDIT-SELECTIONCOMS) @@ -1210,7 +1210,8 @@ (SETTOBJ TEXTOBJ BLUEPENDINGDELETE NIL]) (\TEDIT.SET.SEL.LOOKS - [LAMBDA (SEL OPERATION) (* ; "Edited 7-Nov-2024 21:50 by rmk") + [LAMBDA (SEL OPERATION) (* ; "Edited 28-Feb-2025 17:45 by rmk") + (* ; "Edited 7-Nov-2024 21:50 by rmk") (* ; "Edited 4-Oct-2024 08:40 by rmk") (* ; "Edited 12-Oct-2023 22:36 by rmk") (* ; "Edited 23-May-2023 12:48 by rmk") @@ -1251,9 +1252,10 @@  "For people who really want to see what's selected.") (FSETSEL SEL HOW BLACKSHADE) (FSETSEL SEL HOWHEIGHT 16384) - (FSETSEL SEL HASCARET T) - (\TEDIT.THELP "UNKNOWN SELECTION OPERATION" OPERATION)) - SEL]) + (FSETSEL SEL HASCARET T)) + (NIL) + (\TEDIT.THELP "UNKNOWN SELECTION OPERATION" OPERATION)) + SEL]) ) (DEFINEQ @@ -2139,7 +2141,8 @@ (FGETSEL SCRSEL CH#]) (TEDIT.SELPROP - [LAMBDA X (* ; "Edited 6-Feb-2025 16:48 by rmk") + [LAMBDA X (* ; "Edited 28-Feb-2025 17:14 by rmk") + (* ; "Edited 6-Feb-2025 16:48 by rmk") (* ; "Edited 31-Oct-2024 18:00 by rmk") (* ; "Edited 23-Sep-2024 23:11 by rmk") (* ; "Edited 22-Sep-2024 11:20 by rmk") @@ -2161,8 +2164,6 @@ 'SELECTION] (PROP (ARG X 2)) NEWVALUE) - (CL:UNLESS (FGETSEL SEL SET) - (ERROR "SELECTION NOT SET" SEL)) (PROG1 (SELECTQ PROP (CH# (FGETSEL SEL CH#)) (CHLIM (FGETSEL SEL CHLIM)) @@ -2180,6 +2181,7 @@ (TEXTSTREAM (FGETSEL SEL SELTEXTSTREAM)) (SHADE (FGETSEL SEL HOW)) (SHADEHEIGHT (FGETSEL SEL HOWHEIGHT)) + (SET (FGETSEL SEL SET)) (\ILLEGAL.ARG PROP)) (CL:WHEN (IGREATERP X 2) (SETQ NEWVALUE (ARG X 3)) @@ -2196,9 +2198,12 @@ (CHLAST (\TEDIT.UPDATE.SEL SEL NIL (IDIFFERENCE (ADD1 NEWVALUE) (FGETSEL SEL CH#)))) (CHLIM (\TEDIT.UPDATE.SEL SEL NIL (IDIFFERENCE NEWVALUE (FGETSEL SEL CH#)))) + (SHADE (FSETSEL SEL HOW NEWVALUE)) + (SHADEHEIGHT (FSETSEL SEL HOWHEIGHT NEWVALUE)) + (SET (FSETSEL SEL SET NEWVALUE)) (\ILLEGAL.ARG PROP)) - [\TEDIT.FIXSEL SEL (TEXTOBJ! (fetch (TEXTSTREAM TEXTOBJ) of (GETSEL SEL - SELTEXTSTREAM]))]) + (CL:WHEN (FGETSEL SEL SELTEXTSTREAM) + (\TEDIT.FIXSEL SEL (FGETSEL SEL SELTEXTSTREAM)))))]) (TEDIT.GETPOINT [LAMBDA (TSTREAM SEL) (* ; "Edited 31-Oct-2024 17:46 by rmk") @@ -2451,25 +2456,25 @@ (ADDTOVAR LAMA TEDIT.SELPROP) ) (DECLARE%: DONTCOPY - (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 -72307 (\TEDIT.FIXSEL 59155 . 68768) (\TEDIT.CHTOLINEX 68770 . 72305)) (72308 75845 ( -\TEDIT.RESET.EXTEND.PENDING.DELETE 72318 . 73291) (\TEDIT.SET.SEL.LOOKS 73293 . 75843)) (75846 93892 ( -\TEDIT.SHOWSEL 75856 . 80316) (\TEDIT.SHOWSEL.HILIGHT 80318 . 84939) (\TEDIT.UPDATE.SEL 84941 . 88440) - (\TEDIT.CARETLINE 88442 . 89156) (\TEDIT.SEL.L1 89158 . 89664) (\TEDIT.SEL.LN 89666 . 90172) ( -\TEDIT.SEL.DELETEDCHARS 90174 . 93890)) (93893 98599 (\TEDIT.COPYSEL 93903 . 96369) ( -\TEDIT.SEL.CHANGED? 96371 . 98597)) (98630 111359 (\TEDIT.SELECT.OBJECT 98640 . 103146) ( -\TEDIT.SHOWSEL.OBJECT 103148 . 105310) (\TEDIT.CLIP.OBJECT 105312 . 107316) (\TEDIT.OPERATE.OBJECT -107318 . 111357)) (111387 129734 (\TEDIT.SELPIECES 111397 . 115345) (\TEDIT.SELPIECES.COPY 115347 . -117385) (\TEDIT.SELPIECES.CONCAT 117387 . 119266) (\TEDIT.SELPIECES.CHARTRANSFORM 119268 . 122226) ( -\TEDIT.SELPIECES.FROM.STRING 122228 . 127369) (\TEDIT.SELPIECES.TO.STRING 127371 . 129732)) (129787 -152139 (TEDIT.XYTOCH 129797 . 132181) (TEDIT.SELPROP 132183 . 136042) (TEDIT.GETPOINT 136044 . 137964) - (TEDIT.GETSEL 137966 . 138700) (TEDIT.GETSEL.PARA 138702 . 139651) (TEDIT.SCANSEL 139653 . 140601) ( -TEDIT.SET.SEL.LOOKS 140603 . 141982) (TEDIT.SETSEL 141984 . 146748) (TEDIT.SHOWSEL 146750 . 148030) ( -TEDIT.SEL.AS.STRING 148032 . 150517) (TEDIT.SEL.AS.SEXPR 150519 . 151805) (TEDIT.SELECTALL 151807 . -152137))))) + (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))))) STOP diff --git a/library/tedit/TEDIT-SELECTION.LCOM b/library/tedit/TEDIT-SELECTION.LCOM index 549888de9abe1ac0d4c8c8c61f3f3eb5ed5403bb..89a04606a73f0e19342d778f730f326dae16b95b 100644 GIT binary patch delta 1379 zcmZ`(?`u<67```RnQ?=$U2EHA-AkObRg&I&?yn?{EwMSxJ<07&NN#PkBB(8DQfny# zCn6b)ee#RlUB|k@U_XTI+fA!qt@Eo>(#Icb*5r5aqAh4|>WX~I@^GMS9S)ah@hr*@Xn<3rKGQ9=!? zI7jUvzEi?DT%8!hc@rPM_SMXVGxMkCuduBB?}-eOiZoGozT*cEZHwsj$0Ap%<;oCb zDph=pl*em{JoR=Gd`}{}qtT8&s) zda|>ZFAIGE+F)p-&8_670-PcNVJ5=rL&l8&@6FD>e$DDaMj*Nk51ANRIrsN zRw0i~kQC85JdlmZ`s&4jC&Q6Q)ES>he_jk)|7DGIy4u`BKjtFoMBCh5=g!3b)<2tn z32kn<=V-LAB%gKk1-Q@{%4!}&zY+W-vsBqnUdO`FYRTt zHg_wC8Y3ldq+S^Q_6H?TMxagpY+QOg&IgOmZju$?W(g^$;QNVVkOf1{kec}t8(x8TIQ0RTA z8M!<*Few;xuj>9D6j_B4!z5#%NFw`{tJxsytjsJCD-W`!J2NK|E!h)7invV(A02p{FD>2j5dd3V7xc&E%Cr lEUiI)#DJ6zCbkN;0lFLnSJO^%a+uehQT(a%1I&`%+8}L0lr))YRprlp-q{5IIlOydvLuG+`GF zJ8f~B!OA*FQ)ev;_A=Ayv;>VsRC==nm5#?Jr?|z6HD)-h{fpDSlhcTECsk+2c6ilJf1+zT5KU3#tb1FWyck(I4*8iHJIAYM>!}i|fHV?;M92H-u6k7%aqm4?7!)QIs>21p=V`}e)(ozcBIkhHBj;ER=YeE2m|=E_+vO6&b*IEV zb*vDh@@DJU&WV_~<6fD~$^3CbX!h>=>fBfFPKO=2*X3IWI>KLpu?@Zz?+Aam|I7}x zHu_VEj_}QN@b_C3w}ElP?Q3B@BYf-qX74UawJ-7mp8c)(>UR6Hhte zBPci-48#5qG#OWrW|e3Kr}!Km9H5#87r14yvSFo-S{W$Kxj!E|JU|uA8xvHP_Y>3{ zakuBoErrMsY=$y(W~$tFAR_~-)v7g6DME8j_0wtG1pC5q&(KV!k5UY&J9yO30M%9K zA7!8@Q8X=%^SH(E%cwh`;{HNPh1(?0NUtlis}AZq(&od3osm~NIfxkm diff --git a/library/tedit/TEDIT.LCOM b/library/tedit/TEDIT.LCOM index 88776b635e079e826f616ebc3733bec36f0d3f83..f169b97a5b8e49580b7d7f30e35a8147dbb14472 100644 GIT binary patch delta 682 zcmaDfk?H;Bib85dK~b@)l>$VcuVa9ozmu1%b4aj4W}bqQ zTd0qZ0;E6RQPVVjq F2LSm@yTkwh delta 600 zcmcaViRsZqrU?<_4N6X>w_}dHT3I2e~=|jZ;uE!s1dTh3ar$R~H}G$Xc76%%q~k zqDnh-mn#^Wnpl_{OipD~4S+aFQ^6`A$TiH