diff --git a/library/sketch/SKETCH b/library/sketch/SKETCH index 76c5e3347..b2d39beef 100644 --- a/library/sketch/SKETCH +++ b/library/sketch/SKETCH @@ -1,18 +1,30 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:44:13" {WMEDLEY}sketch>SKETCH.;5 491114 +(FILECREATED " 8-Nov-2025 12:19:12" {WMEDLEY}SKETCH>SKETCH.;10 491643 :EDIT-BY rmk - :CHANGES-TO (VARS SKETCHCOMS) + :CHANGES-TO (VARS SKETCHCOMS SKETCHFILES SKETCH.TITLED.ICON.TEMPLATE) + (FNS SKETCH.SET.A.DEFAULT SKETCH.COMMANDMENU SK.OUTPUT.FILE.NAME SKETCH.TITLE) + (RECORDS SKHISTORYCHANGESPEC GROUP LOCALGROUP SKFIGUREIMAGE SCREENELT GLOBALPART + COMMONGLOBALPART INDIVIDUALGLOBALPART LOCALPART SKETCH SKETCHTYPE + SKETCHCONTEXT) + (PROPS (SKETCH.CREATE ARGNAMES) + (GROUP EVENTFNS) + (UNGROUP EVENTFNS) + (FREEZE EVENTFNS) + (UNFREEZE EVENTFNS)) + (MACROS .DELETEKEYDOWNP. .MOVEKEYDOWNP. .SHIFTKEYDOWNP.) - :PREVIOUS-DATE "19-Oct-2023 23:55:27" {WMEDLEY}sketch>SKETCH.;4) + :PREVIOUS-DATE " 3-Nov-2025 16:21:01" {WMEDLEY}sketch>SKETCH.;5) (PRETTYCOMPRINT SKETCHCOMS) (RPAQQ SKETCHCOMS - [[DECLARE%: FIRST DOCOPY DONTEVAL@LOAD + [(FILES (SYSLOAD) + TEDIT) + [DECLARE%: FIRST DOCOPY DONTEVAL@LOAD (P (PROG ((NOTECARDSFLG (GETPROP 'NOTECARDS 'FILEDATES)) (SKETCHFLG (AND (BOUNDP 'ALL.SKETCHES) ALL.SKETCHES)) @@ -48,17 +60,16 @@ To abort loading the new version of Sketch, type '^'."] (FNS SKETCH SKETCH.FROM.A.FILE SKETCHW.CREATE SKETCH.RESET SKETCHW.FIG.CHANGED SK.WINDOW.TITLE EDITSLIDE EDITSKETCH SK.PUT.ON.FILE SK.OUTPUT.FILE.NAME SKETCH.PUT SK.GET.FROM.FILE SK.INCLUDE.FILE SK.GET.IMAGEOBJ.FROM.FILE SKETCH.GET - ADD.SKETCH.TO.VIEWER FILENAMELESSVERSION SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT - SK.POPUP.SELECTIONFN GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH - SK.ELTS.BY.PRIORITY SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH - SK.ADD.ELEMENTS SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 - SK.MARK.DIRTY SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE - SKETCH.SET.BRUSH.SIZE SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN - SKETCHW.REOPENFN MAKE.LOCAL.SKETCH MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN - SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF SKETCHW.SCROLLFN SKETCHW.RESHAPEFN - SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW SK.ADD.SPACES SK.SKETCH.MENU - SK.CHECK.IMAGEOBJ.WHENDELETEDFN SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY - SK.TAKE.TTY) + ADD.SKETCH.TO.VIEWER SK.ADD.ELEMENTS.TO.SKETCH SKETCH.SET.A.DEFAULT SK.POPUP.SELECTIONFN + GETSKETCHWREGION SK.ADD.ELEMENT SK.ADD.PRIORITY.ELEMENT.TO.SKETCH SK.ELTS.BY.PRIORITY + SK.ORDER.ELEMENTS SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH SK.ADD.ELEMENTS + SK.CHECK.WHENADDEDFN SK.APPLY.MENU.COMMAND SK.DELETE.ELEMENT1 SK.MARK.DIRTY + SK.MARK.UNDIRTY SK.MENU.AND.RETURN.FIELD SKETCH.SET.BRUSH.SHAPE SKETCH.SET.BRUSH.SIZE + SKETCHW.CLOSEFN SK.CONFIRM.DESTRUCTION SKETCHW.OUTFN SKETCHW.REOPENFN MAKE.LOCAL.SKETCH + MAP.SKETCHSPEC.INTO.VIEWER SKETCHW.REPAINTFN SKETCHW.REPAINTFN1 SK.DRAWFIGURE.IF + SKETCHW.SCROLLFN SKETCHW.RESHAPEFN SK.UPDATE.EVENT.SELECTION LIGHTGRAYWINDOW + SK.ADD.SPACES SK.SKETCH.MENU SK.CHECK.IMAGEOBJ.WHENDELETEDFN + SK.APPLY.IMAGEOBJ.WHENDELETEDFN SK.RETURN.TTY SK.TAKE.TTY) (COMS (* ;  "fns for dealing with the sketch menu") (FNS SKETCH.COMMANDMENU SKETCH.COMMANDMENU.ITEMS CREATE.SKETCHW.COMMANDMENU @@ -242,6 +253,7 @@ To abort loading the new version of Sketch, type '^'."] "Reads a file name and opens a sketch window onto the sketch it contains." ] (VARS (BackgroundMenu)) + (VARS SKETCHFILES) (FILES SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (FILES (LOADCOMP) SKETCH-OPS SKETCH-ELEMENTS SKETCH-OBJ @@ -260,13 +272,6 @@ To abort loading the new version of Sketch, type '^'."] (MACROS SK.SET.RECORD.LENGTHS.MACRO) (GLOBALVARS SKETCH.RECORD.LENGTHS) (P (SK.SET.RECORD.LENGTHS))) - [COMS (* ; - "to correct for a bug in the file package that marks LOADCOMPed file as changed") - (P (UNMARKASCHANGED 'SKETCH 'FILE) - (UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE) - (UNMARKASCHANGED 'SKETCH-OPS 'FILE) - (UNMARKASCHANGED 'SKETCH-EDIT 'FILE) - (UNMARKASCHANGED 'SKETCH-OBJ 'FILE] (COMS (* ;  "add sketch as option to file browser edit command") (FNS SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER) @@ -275,6 +280,9 @@ To abort loading the new version of Sketch, type '^'."] (NLAML) (LAMA SK.UNIONREGIONS SKETCH.CREATE]) + +(FILESLOAD (SYSLOAD) + TEDIT) (DECLARE%: FIRST DOCOPY DONTEVAL@LOAD [PROG ((NOTECARDSFLG (GETPROP 'NOTECARDS 'FILEDATES)) @@ -437,12 +445,13 @@ To abort loading the new version of Sketch, type '^'."] (RETURN NEWNAME]) (SK.OUTPUT.FILE.NAME - [LAMBDA (SKETCHFILENAME) (* rrb " 5-May-86 10:45") + [LAMBDA (SKETCHFILENAME) (* ; "Edited 3-Nov-2025 15:05 by rmk") + (* rrb " 5-May-86 10:45") (COND - ((STRPOS " " SKETCHFILENAME) (* don't put up dummy names that - contain spaces) + ((STRPOS " " SKETCHFILENAME) (* ; + "don't put up dummy names that contain spaces") NIL) - (T (FILENAMELESSVERSION SKETCHFILENAME]) + (T (PACKFILENAME 'VERSION NIL 'BODY SKETCHFILENAME]) (SKETCH.PUT [LAMBDA (FILENAME SKETCH VIEWER REGION SCALE GRID) (* ; "Edited 1-Feb-2022 09:17 by rmk") @@ -640,13 +649,6 @@ To abort loading the new version of Sketch, type '^'."] (GETSKETCHPROP TOSKETCH 'VIEWS]) (PUTSKETCHPROP TOSKETCH SKPROP (GETSKETCHPROP ADDSKETCH SKPROP]) -(FILENAMELESSVERSION - [LAMBDA (FILENAME) (* rrb "29-Jan-86 15:57") - - (* strips the version number off of FILENAME if it has one.) - - (PACKFILENAME (CONS 'VERSION (CONS NIL (UNPACKFILENAME FILENAME]) - (SK.ADD.ELEMENTS.TO.SKETCH [LAMBDA (ELTS SKW) (* rrb "10-Mar-86 16:50") (* adds a list of elements to a sketch) @@ -659,7 +661,9 @@ To abort loading the new version of Sketch, type '^'."] (SK.ADD.ELEMENT ELT SKW]) (SKETCH.SET.A.DEFAULT - [LAMBDA (SKW) (* rrb "14-Jul-86 13:43") + [LAMBDA (SKW) (* ; "Edited 6-Nov-2025 22:34 by rmk") + (* rrb "14-Jul-86 13:43") + (* ; "allows the user to set a default") (* allows the user to set a default) (\CURSOR.IN.MIDDLE.MENU (create MENU ITEMS _ '[(Line SKETCH.SET.BRUSH.SIZE @@ -673,7 +677,8 @@ To abort loading the new version of Sketch, type '^'."] (Add% arrowhead SK.SET.LINE.ARROWHEAD "Sets the arrowhead characteristics of new lines." ) - ("Mouse line specs" SK.SET.LINE.LENGTH.MODE + ("Mouse line specs" SK.SET.LINE.LENGTH.MODE + "Sets whether the lines drawn with the middle mouse button connect to each other." ))) (Arrowhead SK.SET.ARROWHEAD.LENGTH @@ -715,7 +720,8 @@ To abort loading the new version of Sketch, type '^'."] (SUBITEMS ("Clockwise" SK.SET.ARC.DIRECTION.CW "Makes new arcs go around in the clockwise direction" ) - ("Counterclockwise" SK.SET.ARC.DIRECTION.CCW + ("Counterclockwise" SK.SET.ARC.DIRECTION.CCW + "Makes new arcs go around in the counterclockwise direction" ))) ("Input scale" SK.SET.INPUT.SCALE @@ -740,7 +746,8 @@ To abort loading the new version of Sketch, type '^'."] This will be slow for arcs and curves."] CENTERFLG _ T WHENSELECTEDFN _ (FUNCTION SK.POPUP.SELECTIONFN) - MENUFONT _ (SK.FONTNAMELIST (FONTCREATE BOLDFONT]) + MENUFONT _ (FONTPROP (FONTCREATE BOLDFONT) + 'SPEC]) (SK.POPUP.SELECTIONFN [LAMBDA (ITEM MENU) (* rrb " 3-Sep-85 14:27") @@ -1348,12 +1355,13 @@ This will be slow for arcs and curves."] (DEFINEQ (SKETCH.COMMANDMENU - [LAMBDA (ITEMS TITLE) (* rrb "14-Jul-86 13:43") + [LAMBDA (ITEMS TITLE) (* ; "Edited 6-Nov-2025 22:36 by rmk") + (* rrb "14-Jul-86 13:43") (create MENU ITEMS _ ITEMS CENTERFLG _ T WHENSELECTEDFN _ (FUNCTION SKETCHW.SELECTIONFN) - MENUFONT _ (SK.FONTNAMELIST (FONTCREATE BOLDFONT)) + MENUFONT _ (FONTCREATE BOLDFONT) TITLE _ TITLE]) (SKETCH.COMMANDMENU.ITEMS @@ -6657,10 +6665,9 @@ This will be slow for arcs and curves.")) (DEFINEQ (SKETCH.TITLE - [LAMBDA (SKW) (* rrb " 5-May-86 13:19") - - (* gets the title of the sketch being edited in SKW.) - + [LAMBDA (SKW) (* rrb " 5-May-86 13:19") + (* gets the title of the sketch being + edited in SKW.) (fetch (SKETCH SKETCHNAME) of (INSURE.SKETCH SKW]) (SK.SHRINK.ICONCREATE @@ -8594,6 +8601,8 @@ Otherwise, type '^'.") (RPAQQ BackgroundMenu NIL) +(RPAQQ SKETCHFILES (SKETCH SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT)) + (FILESLOAD SKETCH-OPS SKETCH-ELEMENTS SKETCH-EDIT SKETCH-OBJ SKETCH-BMELT) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY @@ -8723,21 +8732,6 @@ Otherwise, type '^'.") -(* ; "to correct for a bug in the file package that marks LOADCOMPed file as changed") - - -(UNMARKASCHANGED 'SKETCH 'FILE) - -(UNMARKASCHANGED 'SKETCH-ELEMENTS 'FILE) - -(UNMARKASCHANGED 'SKETCH-OPS 'FILE) - -(UNMARKASCHANGED 'SKETCH-EDIT 'FILE) - -(UNMARKASCHANGED 'SKETCH-OBJ 'FILE) - - - (* ; "add sketch as option to file browser edit command") (DEFINEQ @@ -8768,149 +8762,149 @@ Otherwise, type '^'.") (ADDTOVAR LAMA SK.UNIONREGIONS SKETCH.CREATE) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (22176 85539 (SKETCH 22186 . 24291) (SKETCH.FROM.A.FILE 24293 . 24608) (SKETCHW.CREATE -24610 . 29184) (SKETCH.RESET 29186 . 30708) (SKETCHW.FIG.CHANGED 30710 . 31050) (SK.WINDOW.TITLE 31052 - . 31439) (EDITSLIDE 31441 . 31847) (EDITSKETCH 31849 . 32173) (SK.PUT.ON.FILE 32175 . 33627) ( -SK.OUTPUT.FILE.NAME 33629 . 34003) (SKETCH.PUT 34005 . 36903) (SK.GET.FROM.FILE 36905 . 37798) ( -SK.INCLUDE.FILE 37800 . 40308) (SK.GET.IMAGEOBJ.FROM.FILE 40310 . 42513) (SKETCH.GET 42515 . 42822) ( -ADD.SKETCH.TO.VIEWER 42824 . 45410) (FILENAMELESSVERSION 45412 . 45688) (SK.ADD.ELEMENTS.TO.SKETCH -45690 . 46204) (SKETCH.SET.A.DEFAULT 46206 . 53364) (SK.POPUP.SELECTIONFN 53366 . 53908) ( -GETSKETCHWREGION 53910 . 54116) (SK.ADD.ELEMENT 54118 . 55697) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH -55699 . 57093) (SK.ELTS.BY.PRIORITY 57095 . 57391) (SK.ORDER.ELEMENTS 57393 . 57660) ( -SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 57662 . 59156) (SK.ADD.ELEMENTS 59158 . 59682) ( -SK.CHECK.WHENADDEDFN 59684 . 60414) (SK.APPLY.MENU.COMMAND 60416 . 61214) (SK.DELETE.ELEMENT1 61216 . -62794) (SK.MARK.DIRTY 62796 . 63462) (SK.MARK.UNDIRTY 63464 . 63795) (SK.MENU.AND.RETURN.FIELD 63797 - . 64462) (SKETCH.SET.BRUSH.SHAPE 64464 . 65049) (SKETCH.SET.BRUSH.SIZE 65051 . 65557) ( -SKETCHW.CLOSEFN 65559 . 67350) (SK.CONFIRM.DESTRUCTION 67352 . 68351) (SKETCHW.OUTFN 68353 . 68617) ( -SKETCHW.REOPENFN 68619 . 69031) (MAKE.LOCAL.SKETCH 69033 . 69763) (MAP.SKETCHSPEC.INTO.VIEWER 69765 . -70975) (SKETCHW.REPAINTFN 70977 . 71805) (SKETCHW.REPAINTFN1 71807 . 72746) (SK.DRAWFIGURE.IF 72748 . -73270) (SKETCHW.SCROLLFN 73272 . 77465) (SKETCHW.RESHAPEFN 77467 . 79725) (SK.UPDATE.EVENT.SELECTION -79727 . 81782) (LIGHTGRAYWINDOW 81784 . 81947) (SK.ADD.SPACES 81949 . 82695) (SK.SKETCH.MENU 82697 . -83019) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83021 . 83873) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 83875 . 84835) - (SK.RETURN.TTY 84837 . 85205) (SK.TAKE.TTY 85207 . 85537)) (85593 108921 (SKETCH.COMMANDMENU 85603 . -85940) (SKETCH.COMMANDMENU.ITEMS 85942 . 106025) (CREATE.SKETCHW.COMMANDMENU 106027 . 106447) ( -SKETCHW.SELECTIONFN 106449 . 107552) (SKETCH.MONITORLOCK 107554 . 108025) (SK.EVAL.AS.PROCESS 108027 - . 108640) (SK.EVAL.WITH.LOCK 108642 . 108919)) (108922 116726 (SK.FIX.MENU 108932 . 110026) ( -SK.SET.UP.MENUS 110028 . 112329) (SK.INSURE.HAS.MENU 112331 . 112993) (SK.CREATE.STANDARD.MENU 112995 - . 113440) (SK.ADD.ITEM.TO.MENU 113442 . 114117) (SK.GET.VIEWER.POPUP.MENU 114119 . 116320) ( -SK.CLEAR.POPUP.MENU 116322 . 116724)) (116782 125604 (SKETCH.CREATE 116792 . 117578) (GETSKETCHPROP -117580 . 120637) (PUTSKETCHPROP 120639 . 124571) (CREATE.DEFAULT.SKETCH.CONTEXT 124573 . 125602)) ( -125770 148666 (SK.COPY.BUTTONEVENTFN 125780 . 137008) (SK.BUTTONEVENT.MARK 137010 . 137393) ( -SK.BUILD.IMAGEOBJ 137395 . 147310) (SK.BUTTONEVENT.OVERP 147312 . 147935) (SK.BUTTONEVENT.SAME.KEYS -147937 . 148664)) (148945 174760 (SK.SEL.AND.CHANGE 148955 . 149247) (SK.CHECK.WHENCHANGEDFN 149249 . -149955) (SK.CHECK.PRECHANGEFN 149957 . 150558) (SK.CHANGE.ELT 150560 . 150752) (SK.CHANGE.THING 150754 - . 152005) (SKETCH.CHANGE.ELEMENTS 152007 . 153190) (SK.APPLY.SINGLE.CHANGEFN 153192 . 153765) ( -SK.DO.CHANGESPECS 153767 . 155426) (SK.VIEWER.FROM.SKETCH.ARG 155428 . 155870) (SK.DO.CHANGESPEC1 -155872 . 157747) (SK.CHANGEFN 157749 . 158329) (SK.READCHANGEFN 158331 . 158790) (SK.DEFAULT.CHANGEFN -158792 . 161264) (CHANGEABLEFIELDITEMS 161266 . 161913) (SK.APPLY.CHANGE.COMMAND 161915 . 162532) ( -SK.DO.AND.RECORD.CHANGES 162534 . 163931) (SK.APPLY.CHANGE.COMMAND1 163933 . 165421) ( -SK.ELEMENTS.CHANGEFN 165423 . 167747) (READ.POINT.TO.ADD 167749 . 168693) (GLOBAL.KNOT.FROM.LOCAL -168695 . 169155) (SK.ADD.KNOT.TO.ELEMENT 169157 . 170101) (SK.GROUP.CHANGEFN 170103 . 171315) ( -SK.GROUP.CHANGEFN1 171317 . 174758)) (174927 188660 (ADD.ELEMENT.TO.SKETCH 174937 . 176643) ( -ADD.SKETCH.VIEWER 176645 . 177313) (REMOVE.SKETCH.VIEWER 177315 . 177928) (ALL.SKETCH.VIEWERS 177930 - . 178170) (SKETCH.ALL.VIEWERS 178172 . 178432) (VIEWER.BUCKET 178434 . 178585) (ELT.INSIDE.REGION? -178587 . 178914) (ELT.INSIDE.SKWP 178916 . 179207) (SCALE.FROM.SKW 179209 . 179459) ( -SK.ADDELT.TO.WINDOW 179461 . 180321) (SK.CALC.REGION.VIEWED 180323 . 180701) (SK.DRAWFIGURE 180703 . -181992) (SK.DRAWFIGURE1 181994 . 182378) (SK.LOCAL.FROM.GLOBAL 182380 . 183615) (SKETCH.REGION.VIEWED -183617 . 186304) (SKETCH.VIEW.FROM.NAME 186306 . 186736) (SK.UPDATE.REGION.VIEWED 186738 . 187130) ( -SKETCH.ADD.AND.DISPLAY 187132 . 187540) (SKETCH.ADD.AND.DISPLAY1 187542 . 187980) (SK.ADD.ITEM 187982 - . 188314) (SKETCHW.ADD.INSTANCE 188316 . 188658)) (188701 201889 (SK.SEL.AND.DELETE 188711 . 189099) -(SK.ERASE.AND.DELETE.ITEM 189101 . 189520) (REMOVE.ELEMENT.FROM.SKETCH 189522 . 190633) ( -SK.DELETE.ELEMENT 190635 . 191193) (SK.DELETE.ELEMENT2 191195 . 191856) (SK.DELETE.KNOT 191858 . -192149) (SK.SEL.AND.DELETE.KNOT 192151 . 193276) (SK.DELETE.ELEMENT.KNOT 193278 . 196485) ( -SK.CHECK.WHENDELETEDFN 196487 . 197267) (SK.CHECK.PREEDITFN 197269 . 197753) ( -SK.CHECK.END.INITIAL.EDIT 197755 . 198289) (SK.CHECK.WHENPOINTDELETEDFN 198291 . 199087) (SK.ERASE.ELT - 199089 . 199425) (SK.DELETE.ELT 199427 . 199802) (SK.DELETE.ITEM 199804 . 200212) (DELFROMTCONC -200214 . 201887)) (201928 215762 (SK.COPY.ELT 201938 . 202308) (SK.SEL.AND.COPY 202310 . 202693) ( -SK.COPY.ELEMENTS 202695 . 208323) (SK.ADD.COPY.OF.ELEMENTS 208325 . 210092) ( -SK.GLOBAL.FROM.LOCAL.ELEMENTS 210094 . 210334) (SK.COPY.ITEM 210336 . 211133) (SK.INSERT.SKETCH 211135 - . 215760)) (215802 245823 (SK.MOVE.ELT 215812 . 216087) (SK.MOVE.ELT.OR.PT 216089 . 216402) ( -SK.APPLY.DEFAULT.MOVE 216404 . 216838) (SK.SEL.AND.MOVE 216840 . 217387) (SK.MOVE.ELEMENTS 217389 . -228261) (SKETCH.MOVE.ELEMENTS 228263 . 230194) (SKETCH.COPY.ELEMENTS 230196 . 232243) ( -\SKETCH.COPY.ELEMENT 232245 . 232970) (SK.TRANSLATE.ELEMENT 232972 . 233455) (SK.COPY.GLOBAL.ELEMENT -233457 . 233668) (SK.MAKE.ELEMENT.MOVE.ARG 233670 . 234290) (SK.MAKE.ELEMENTS.MOVE.ARG 234292 . 234814 -) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 234816 . 235885) (SK.SHOW.FIG.FROM.INFO 235887 . 236255) ( -SK.MOVE.THING 236257 . 237163) (UPDATE.ELEMENT.IN.SKETCH 237165 . 239220) (SK.UPDATE.ELEMENT 239222 . -240781) (SK.UPDATE.ELEMENTS 240783 . 241502) (SK.UPDATE.ELEMENT1 241504 . 245404) ( -SK.MOVE.ELEMENT.POINT 245406 . 245821)) (245886 268175 (SK.MOVE.POINTS 245896 . 246183) ( -SK.SEL.AND.MOVE.POINTS 246185 . 246490) (SK.DO.MOVE.ELEMENT.POINTS 246492 . 255149) ( -SK.MOVE.ITEM.POINTS 255151 . 256822) (SK.TRANSLATEPTSFN 256824 . 257208) (SK.TRANSLATE.POINTS 257210 - . 258111) (SK.SELECT.MULTIPLE.POINTS 258113 . 263753) (SK.CONTROL.POINTS.IN.REGION 263755 . 265176) ( -SK.ADD.PT.SELECTION 265178 . 265642) (SK.REMOVE.PT.SELECTION 265644 . 266261) (SK.ADD.POINT 266263 . -266886) (SK.ELTS.CONTAINING.PTS 266888 . 267513) (SK.HOTSPOTS.NOT.ON.LIST 267515 . 268173)) (268333 -271129 (SK.SET.MOVE.MODE 268343 . 269014) (SK.SET.MOVE.MODE.POINTS 269016 . 269355) ( -SK.SET.MOVE.MODE.ELEMENTS 269357 . 269701) (SK.SET.MOVE.MODE.COMBINED 269703 . 270053) (READMOVEMODE -270055 . 271127)) (271130 289885 (SK.ALIGN.POINTS 271140 . 271430) (SK.SEL.AND.ALIGN.POINTS 271432 . -271741) (SK.ALIGN.POINTS.LEFT 271743 . 272046) (SK.ALIGN.POINTS.RIGHT 272048 . 272353) ( -SK.ALIGN.POINTS.TOP 272355 . 272656) (SK.ALIGN.POINTS.BOTTOM 272658 . 272965) ( -SK.EVEN.SPACE.POINTS.IN.X 272967 . 273287) (SK.EVEN.SPACE.POINTS.IN.Y 273289 . 273609) ( -SK.DO.ALIGN.POINTS 273611 . 284233) (SK.NTH.CONTROL.POINT 284235 . 284696) ( -SK.GET.SELECTED.ELEMENT.STRUCTURE 284698 . 285364) (SK.CORRESPONDING.CONTROL.PT 285366 . 285920) ( -SK.CONTROL.POINT.NUMBER 285922 . 286292) (SK.DO.ALIGN.SETVALUE 286294 . 289883)) (289949 303381 ( -SKETCH.CREATE.GROUP 289959 . 290448) (SK.CREATE.GROUP1 290450 . 290997) (SK.UPDATE.GROUP.AFTER.CHANGE -290999 . 291788) (SK.GROUP.ELTS 291790 . 292071) (SK.SEL.AND.GROUP 292073 . 292459) (SK.GROUP.ELEMENTS - 292461 . 294110) (SK.UNGROUP.ELT 294112 . 294396) (SK.SEL.AND.UNGROUP 294398 . 296067) ( -SK.UNGROUP.ELEMENT 296069 . 297005) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297007 . 297929) ( -SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 297931 . 298942) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 298944 . -300284) (SK.UNIONREGIONS 300286 . 302652) (SKETCH.REGION.OF.SKETCH 302654 . 303070) (SK.FLASHREGION -303072 . 303379)) (303382 316853 (INIT.GROUP.ELEMENT 303392 . 304264) (GROUP.DRAWFN 304266 . 304716) ( -GROUP.EXPANDFN 304718 . 306281) (GROUP.INSIDEFN 306283 . 306692) (GROUP.REGIONFN 306694 . 307089) ( -GROUP.GLOBALREGIONFN 307091 . 307409) (GROUP.TRANSLATEFN 307411 . 309443) (GROUP.TRANSFORMFN 309445 . -312925) (GROUP.READCHANGEFN 312927 . 316851)) (316854 317862 (REGION.CENTER 316864 . 317465) ( -REMOVE.LAST 317467 . 317860)) (317915 323022 (SK.MOVE.GROUP.CONTROL.PT 317925 . 318216) ( -SK.SEL.AND.MOVE.CONTROL.PT 318218 . 319622) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 319624 . 321697) ( -SK.READ.NEW.GROUP.CONTROL.PT 321699 . 323020)) (323281 327905 (SK.DO.GROUP 323291 . 324743) ( -SK.CHECK.WHENGROUPEDFN 324745 . 325455) (SK.DO.UNGROUP 325457 . 326662) (SK.CHECK.WHENUNGROUPEDFN -326664 . 327251) (SK.GROUP.UNDO 327253 . 327576) (SK.UNGROUP.UNDO 327578 . 327903)) (328146 333068 ( -SK.FREEZE.ELTS 328156 . 328440) (SK.SEL.AND.FREEZE 328442 . 328832) (SK.FREEZE.ELEMENTS 328834 . -329385) (SK.UNFREEZE.ELT 329387 . 329676) (SK.SEL.AND.UNFREEZE 329678 . 331214) (SK.UNFREEZE.ELEMENTS -331216 . 331775) (SK.FREEZE.UNDO 331777 . 332022) (SK.UNFREEZE.UNDO 332024 . 332271) (SK.DO.FREEZE -332273 . 332666) (SK.DO.UNFREEZE 332668 . 333066)) (333298 343108 (SKETCH.ELEMENTS.OF.SKETCH 333308 . -334143) (SKETCH.LIST.OF.ELEMENTS 334145 . 334863) (SKETCH.ADD.ELEMENT 334865 . 335940) ( -SKETCH.DELETE.ELEMENT 335942 . 337674) (DELFROMGROUPELT 337676 . 338476) (SKETCH.ELEMENT.TYPE 338478 - . 338827) (SKETCH.ELEMENT.CHANGED 338829 . 340397) (SK.ELEMENT.CHANGED1 340399 . 341050) ( -SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341052 . 343106)) (343162 347774 (INSURE.SKETCH 343172 . 345787) - (LOCALSPECS.FROM.VIEWER 345789 . 346149) (SK.LOCAL.ELT.FROM.GLOBALPART 346151 . 346619) ( -SKETCH.FROM.VIEWER 346621 . 346855) (INSPECT.SKETCH 346857 . 347182) (ELT.INSIDE.SKETCHWP 347184 . -347457) (SK.INSIDE.REGION 347459 . 347772)) (347775 352105 (MAPSKETCHSPECS 347785 . 348406) ( -MAPCOLLECTSKETCHSPECS 348408 . 349157) (MAPSKETCHSPECSUNTIL 349159 . 349967) (MAPGLOBALSKETCHSPECS -349969 . 350670) (MAPGLOBALSKETCHELEMENTS 350672 . 352103)) (352167 378059 (SK.ADD.SELECTION 352177 . -352917) (SK.COPY.INSERTFN 352919 . 356550) (SCREENELEMENTP 356552 . 357025) (SK.ITEM.REGION 357027 . -357514) (SK.ELEMENT.GLOBAL.REGION 357516 . 358044) (SK.LOCAL.ITEMS.IN.REGION 358046 . 360025) ( -SK.REGIONFN 360027 . 360349) (SK.GLOBAL.REGIONFN 360351 . 360709) (SK.REMOVE.SELECTION 360711 . 361439 -) (SK.SELECT.MULTIPLE.ITEMS 361441 . 371883) (SKETCH.GET.ELEMENTS 371885 . 373308) (SK.PUT.MARKS.UP -373310 . 373649) (SK.TAKE.MARKS.DOWN 373651 . 373990) (SK.TRANSLATE.GLOBALPART 373992 . 376119) ( -SK.TRANSLATE.ITEM 376121 . 377048) (SK.TRANSLATEFN 377050 . 377246) (TRANSLATE.SKETCH 377248 . 378057) -) (378325 381232 (SK.INPUT.SCALE 378335 . 379182) (SK.UPDATE.SKETCHCONTEXT 379184 . 379781) ( -SK.SET.INPUT.SCALE 379783 . 380432) (SK.SET.INPUT.SCALE.CURRENT 380434 . 380725) ( -SK.SET.INPUT.SCALE.VALUE 380727 . 381230)) (381283 383195 (SK.SET.FEEDBACK.MODE 381293 . 382599) ( -SK.SET.FEEDBACK.POINT 382601 . 382769) (SK.SET.FEEDBACK.VERBOSE 382771 . 382940) ( -SK.SET.FEEDBACK.ALWAYS 382942 . 383193)) (383346 384623 (SKETCH.TITLE 383356 . 383619) ( -SK.SHRINK.ICONCREATE 383621 . 384621)) (390313 393127 (READBRUSHSHAPE 390323 . 390782) (READ.FUNCTION -390784 . 391299) (READBRUSHSIZE 391301 . 391759) (READANGLE 391761 . 392253) (READARCDIRECTION 392255 - . 393125)) (393128 403539 (SK.CHANGE.DASHING 393138 . 397086) (READ.AND.SAVE.NEW.DASHING 397088 . -398856) (READ.NEW.DASHING 398858 . 400598) (READ.DASHING.CHANGE 400600 . 402075) (SK.CACHE.DASHING -402077 . 403079) (SK.DASHING.LABEL 403081 . 403537)) (403540 407245 (READ.FILLING.CHANGE 403550 . -405531) (SK.CACHE.FILLING 405533 . 406251) (READ.AND.SAVE.NEW.FILLING 406253 . 406851) ( -SK.FILLING.LABEL 406853 . 407243)) (407629 443882 (SK.GETGLOBALPOSITION 407639 . 407944) ( -SKETCH.TRACK.ELEMENTS 407946 . 411466) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 411468 . 412027) ( -MAP.SKETCH.ELEMENTS.INTO.VIEWER 412029 . 412421) (MAP.GLOBAL.POSITION.INTO.VIEWER 412423 . 412803) ( -SKETCH.TO.VIEWER.POSITION 412805 . 413164) (SKETCH.TRACK.IMAGE 413166 . 414020) (SK.TRACK.IMAGE1 -414022 . 415434) (MAP.VIEWER.XY.INTO.GLOBAL 415436 . 416430) (SK.SET.POSITION 416432 . 416768) ( -MAP.VIEWER.PT.INTO.GLOBAL 416770 . 417876) (VIEWER.TO.SKETCH.POSITION 417878 . 418513) ( -SK.INSURE.SCALE 418515 . 418775) (SKETCH.TO.VIEWER.REGION 418777 . 419583) (VIEWER.TO.SKETCH.REGION -419585 . 419923) (SK.READ.POINT.WITH.FEEDBACK 419925 . 430928) (SKETCH.GET.POSITION 430930 . 432810) ( -\CLOBBER.POSITION 432812 . 433260) (NEAREST.HOT.SPOT 433262 . 434790) (GETWREGION 434792 . 435553) ( -GET.BITMAP.POSITION 435555 . 436339) (SK.TRACK.BITMAP1 436341 . 443880)) (444451 475337 ( -SK.BRING.UP.POSITION.PAD 444461 . 450321) (SK.PAD.READER.POSITION 450323 . 451972) ( -SK.POSITION.READER.REPAINTFN 451974 . 453758) (SK.POSITION.PAD.FROM.VIEWER 453760 . 455102) ( -SK.INIT.POSITION.NUMBER.PAD.MENU 455104 . 455454) (SK.READ.POSITION.PAD.HANDLER 455456 . 461188) ( -DISPLAY.POSITION.READER.TOTAL 461190 . 463488) (POSITION.PAD.READER.HANDLER 463490 . 471533) ( -POSITIONPAD.HELDFN 471535 . 473019) (\POSITION.PAD.ADD.DIGIT.MENU 473021 . 474600) ( -\POSITION.READER.NUMBERPAD 474602 . 475335)) (476963 479641 (SK.DRAWFN 476973 . 477339) ( -SK.TRANSFORMFN 477341 . 477722) (SK.EXPANDFN 477724 . 478001) (SK.INPUT 478003 . 478384) (SK.INSIDEFN -478386 . 479026) (SK.UPDATEFN 479028 . 479639)) (485309 489254 (SK.CHECK.SKETCH.VERSION 485319 . -486559) (SK.INSURE.RECORD.LENGTH 486561 . 488044) (SK.INSURE.HAS.LENGTH 488046 . 488784) ( -SK.RECORD.LENGTH 488786 . 488960) (SK.SET.RECORD.LENGTHS 488962 . 489252)) (489999 490886 ( -SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490009 . 490884))))) + (FILEMAP (NIL (22476 86065 (SKETCH 22486 . 24591) (SKETCH.FROM.A.FILE 24593 . 24908) (SKETCHW.CREATE +24910 . 29484) (SKETCH.RESET 29486 . 31008) (SKETCHW.FIG.CHANGED 31010 . 31350) (SK.WINDOW.TITLE 31352 + . 31739) (EDITSLIDE 31741 . 32147) (EDITSKETCH 32149 . 32473) (SK.PUT.ON.FILE 32475 . 33927) ( +SK.OUTPUT.FILE.NAME 33929 . 34414) (SKETCH.PUT 34416 . 37314) (SK.GET.FROM.FILE 37316 . 38209) ( +SK.INCLUDE.FILE 38211 . 40719) (SK.GET.IMAGEOBJ.FROM.FILE 40721 . 42924) (SKETCH.GET 42926 . 43233) ( +ADD.SKETCH.TO.VIEWER 43235 . 45821) (SK.ADD.ELEMENTS.TO.SKETCH 45823 . 46337) (SKETCH.SET.A.DEFAULT +46339 . 53890) (SK.POPUP.SELECTIONFN 53892 . 54434) (GETSKETCHWREGION 54436 . 54642) (SK.ADD.ELEMENT +54644 . 56223) (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 56225 . 57619) (SK.ELTS.BY.PRIORITY 57621 . 57917) ( +SK.ORDER.ELEMENTS 57919 . 58186) (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 58188 . 59682) ( +SK.ADD.ELEMENTS 59684 . 60208) (SK.CHECK.WHENADDEDFN 60210 . 60940) (SK.APPLY.MENU.COMMAND 60942 . +61740) (SK.DELETE.ELEMENT1 61742 . 63320) (SK.MARK.DIRTY 63322 . 63988) (SK.MARK.UNDIRTY 63990 . 64321 +) (SK.MENU.AND.RETURN.FIELD 64323 . 64988) (SKETCH.SET.BRUSH.SHAPE 64990 . 65575) ( +SKETCH.SET.BRUSH.SIZE 65577 . 66083) (SKETCHW.CLOSEFN 66085 . 67876) (SK.CONFIRM.DESTRUCTION 67878 . +68877) (SKETCHW.OUTFN 68879 . 69143) (SKETCHW.REOPENFN 69145 . 69557) (MAKE.LOCAL.SKETCH 69559 . 70289 +) (MAP.SKETCHSPEC.INTO.VIEWER 70291 . 71501) (SKETCHW.REPAINTFN 71503 . 72331) (SKETCHW.REPAINTFN1 +72333 . 73272) (SK.DRAWFIGURE.IF 73274 . 73796) (SKETCHW.SCROLLFN 73798 . 77991) (SKETCHW.RESHAPEFN +77993 . 80251) (SK.UPDATE.EVENT.SELECTION 80253 . 82308) (LIGHTGRAYWINDOW 82310 . 82473) ( +SK.ADD.SPACES 82475 . 83221) (SK.SKETCH.MENU 83223 . 83545) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 83547 . +84399) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 84401 . 85361) (SK.RETURN.TTY 85363 . 85731) (SK.TAKE.TTY +85733 . 86063)) (86119 109534 (SKETCH.COMMANDMENU 86129 . 86553) (SKETCH.COMMANDMENU.ITEMS 86555 . +106638) (CREATE.SKETCHW.COMMANDMENU 106640 . 107060) (SKETCHW.SELECTIONFN 107062 . 108165) ( +SKETCH.MONITORLOCK 108167 . 108638) (SK.EVAL.AS.PROCESS 108640 . 109253) (SK.EVAL.WITH.LOCK 109255 . +109532)) (109535 117339 (SK.FIX.MENU 109545 . 110639) (SK.SET.UP.MENUS 110641 . 112942) ( +SK.INSURE.HAS.MENU 112944 . 113606) (SK.CREATE.STANDARD.MENU 113608 . 114053) (SK.ADD.ITEM.TO.MENU +114055 . 114730) (SK.GET.VIEWER.POPUP.MENU 114732 . 116933) (SK.CLEAR.POPUP.MENU 116935 . 117337)) ( +117395 126217 (SKETCH.CREATE 117405 . 118191) (GETSKETCHPROP 118193 . 121250) (PUTSKETCHPROP 121252 . +125184) (CREATE.DEFAULT.SKETCH.CONTEXT 125186 . 126215)) (126383 149279 (SK.COPY.BUTTONEVENTFN 126393 + . 137621) (SK.BUTTONEVENT.MARK 137623 . 138006) (SK.BUILD.IMAGEOBJ 138008 . 147923) ( +SK.BUTTONEVENT.OVERP 147925 . 148548) (SK.BUTTONEVENT.SAME.KEYS 148550 . 149277)) (149558 175373 ( +SK.SEL.AND.CHANGE 149568 . 149860) (SK.CHECK.WHENCHANGEDFN 149862 . 150568) (SK.CHECK.PRECHANGEFN +150570 . 151171) (SK.CHANGE.ELT 151173 . 151365) (SK.CHANGE.THING 151367 . 152618) ( +SKETCH.CHANGE.ELEMENTS 152620 . 153803) (SK.APPLY.SINGLE.CHANGEFN 153805 . 154378) (SK.DO.CHANGESPECS +154380 . 156039) (SK.VIEWER.FROM.SKETCH.ARG 156041 . 156483) (SK.DO.CHANGESPEC1 156485 . 158360) ( +SK.CHANGEFN 158362 . 158942) (SK.READCHANGEFN 158944 . 159403) (SK.DEFAULT.CHANGEFN 159405 . 161877) ( +CHANGEABLEFIELDITEMS 161879 . 162526) (SK.APPLY.CHANGE.COMMAND 162528 . 163145) ( +SK.DO.AND.RECORD.CHANGES 163147 . 164544) (SK.APPLY.CHANGE.COMMAND1 164546 . 166034) ( +SK.ELEMENTS.CHANGEFN 166036 . 168360) (READ.POINT.TO.ADD 168362 . 169306) (GLOBAL.KNOT.FROM.LOCAL +169308 . 169768) (SK.ADD.KNOT.TO.ELEMENT 169770 . 170714) (SK.GROUP.CHANGEFN 170716 . 171928) ( +SK.GROUP.CHANGEFN1 171930 . 175371)) (175540 189273 (ADD.ELEMENT.TO.SKETCH 175550 . 177256) ( +ADD.SKETCH.VIEWER 177258 . 177926) (REMOVE.SKETCH.VIEWER 177928 . 178541) (ALL.SKETCH.VIEWERS 178543 + . 178783) (SKETCH.ALL.VIEWERS 178785 . 179045) (VIEWER.BUCKET 179047 . 179198) (ELT.INSIDE.REGION? +179200 . 179527) (ELT.INSIDE.SKWP 179529 . 179820) (SCALE.FROM.SKW 179822 . 180072) ( +SK.ADDELT.TO.WINDOW 180074 . 180934) (SK.CALC.REGION.VIEWED 180936 . 181314) (SK.DRAWFIGURE 181316 . +182605) (SK.DRAWFIGURE1 182607 . 182991) (SK.LOCAL.FROM.GLOBAL 182993 . 184228) (SKETCH.REGION.VIEWED +184230 . 186917) (SKETCH.VIEW.FROM.NAME 186919 . 187349) (SK.UPDATE.REGION.VIEWED 187351 . 187743) ( +SKETCH.ADD.AND.DISPLAY 187745 . 188153) (SKETCH.ADD.AND.DISPLAY1 188155 . 188593) (SK.ADD.ITEM 188595 + . 188927) (SKETCHW.ADD.INSTANCE 188929 . 189271)) (189314 202502 (SK.SEL.AND.DELETE 189324 . 189712) +(SK.ERASE.AND.DELETE.ITEM 189714 . 190133) (REMOVE.ELEMENT.FROM.SKETCH 190135 . 191246) ( +SK.DELETE.ELEMENT 191248 . 191806) (SK.DELETE.ELEMENT2 191808 . 192469) (SK.DELETE.KNOT 192471 . +192762) (SK.SEL.AND.DELETE.KNOT 192764 . 193889) (SK.DELETE.ELEMENT.KNOT 193891 . 197098) ( +SK.CHECK.WHENDELETEDFN 197100 . 197880) (SK.CHECK.PREEDITFN 197882 . 198366) ( +SK.CHECK.END.INITIAL.EDIT 198368 . 198902) (SK.CHECK.WHENPOINTDELETEDFN 198904 . 199700) (SK.ERASE.ELT + 199702 . 200038) (SK.DELETE.ELT 200040 . 200415) (SK.DELETE.ITEM 200417 . 200825) (DELFROMTCONC +200827 . 202500)) (202541 216375 (SK.COPY.ELT 202551 . 202921) (SK.SEL.AND.COPY 202923 . 203306) ( +SK.COPY.ELEMENTS 203308 . 208936) (SK.ADD.COPY.OF.ELEMENTS 208938 . 210705) ( +SK.GLOBAL.FROM.LOCAL.ELEMENTS 210707 . 210947) (SK.COPY.ITEM 210949 . 211746) (SK.INSERT.SKETCH 211748 + . 216373)) (216415 246436 (SK.MOVE.ELT 216425 . 216700) (SK.MOVE.ELT.OR.PT 216702 . 217015) ( +SK.APPLY.DEFAULT.MOVE 217017 . 217451) (SK.SEL.AND.MOVE 217453 . 218000) (SK.MOVE.ELEMENTS 218002 . +228874) (SKETCH.MOVE.ELEMENTS 228876 . 230807) (SKETCH.COPY.ELEMENTS 230809 . 232856) ( +\SKETCH.COPY.ELEMENT 232858 . 233583) (SK.TRANSLATE.ELEMENT 233585 . 234068) (SK.COPY.GLOBAL.ELEMENT +234070 . 234281) (SK.MAKE.ELEMENT.MOVE.ARG 234283 . 234903) (SK.MAKE.ELEMENTS.MOVE.ARG 234905 . 235427 +) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 235429 . 236498) (SK.SHOW.FIG.FROM.INFO 236500 . 236868) ( +SK.MOVE.THING 236870 . 237776) (UPDATE.ELEMENT.IN.SKETCH 237778 . 239833) (SK.UPDATE.ELEMENT 239835 . +241394) (SK.UPDATE.ELEMENTS 241396 . 242115) (SK.UPDATE.ELEMENT1 242117 . 246017) ( +SK.MOVE.ELEMENT.POINT 246019 . 246434)) (246499 268788 (SK.MOVE.POINTS 246509 . 246796) ( +SK.SEL.AND.MOVE.POINTS 246798 . 247103) (SK.DO.MOVE.ELEMENT.POINTS 247105 . 255762) ( +SK.MOVE.ITEM.POINTS 255764 . 257435) (SK.TRANSLATEPTSFN 257437 . 257821) (SK.TRANSLATE.POINTS 257823 + . 258724) (SK.SELECT.MULTIPLE.POINTS 258726 . 264366) (SK.CONTROL.POINTS.IN.REGION 264368 . 265789) ( +SK.ADD.PT.SELECTION 265791 . 266255) (SK.REMOVE.PT.SELECTION 266257 . 266874) (SK.ADD.POINT 266876 . +267499) (SK.ELTS.CONTAINING.PTS 267501 . 268126) (SK.HOTSPOTS.NOT.ON.LIST 268128 . 268786)) (268946 +271742 (SK.SET.MOVE.MODE 268956 . 269627) (SK.SET.MOVE.MODE.POINTS 269629 . 269968) ( +SK.SET.MOVE.MODE.ELEMENTS 269970 . 270314) (SK.SET.MOVE.MODE.COMBINED 270316 . 270666) (READMOVEMODE +270668 . 271740)) (271743 290498 (SK.ALIGN.POINTS 271753 . 272043) (SK.SEL.AND.ALIGN.POINTS 272045 . +272354) (SK.ALIGN.POINTS.LEFT 272356 . 272659) (SK.ALIGN.POINTS.RIGHT 272661 . 272966) ( +SK.ALIGN.POINTS.TOP 272968 . 273269) (SK.ALIGN.POINTS.BOTTOM 273271 . 273578) ( +SK.EVEN.SPACE.POINTS.IN.X 273580 . 273900) (SK.EVEN.SPACE.POINTS.IN.Y 273902 . 274222) ( +SK.DO.ALIGN.POINTS 274224 . 284846) (SK.NTH.CONTROL.POINT 284848 . 285309) ( +SK.GET.SELECTED.ELEMENT.STRUCTURE 285311 . 285977) (SK.CORRESPONDING.CONTROL.PT 285979 . 286533) ( +SK.CONTROL.POINT.NUMBER 286535 . 286905) (SK.DO.ALIGN.SETVALUE 286907 . 290496)) (290562 303994 ( +SKETCH.CREATE.GROUP 290572 . 291061) (SK.CREATE.GROUP1 291063 . 291610) (SK.UPDATE.GROUP.AFTER.CHANGE +291612 . 292401) (SK.GROUP.ELTS 292403 . 292684) (SK.SEL.AND.GROUP 292686 . 293072) (SK.GROUP.ELEMENTS + 293074 . 294723) (SK.UNGROUP.ELT 294725 . 295009) (SK.SEL.AND.UNGROUP 295011 . 296680) ( +SK.UNGROUP.ELEMENT 296682 . 297618) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 297620 . 298542) ( +SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 298544 . 299555) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 299557 . +300897) (SK.UNIONREGIONS 300899 . 303265) (SKETCH.REGION.OF.SKETCH 303267 . 303683) (SK.FLASHREGION +303685 . 303992)) (303995 317466 (INIT.GROUP.ELEMENT 304005 . 304877) (GROUP.DRAWFN 304879 . 305329) ( +GROUP.EXPANDFN 305331 . 306894) (GROUP.INSIDEFN 306896 . 307305) (GROUP.REGIONFN 307307 . 307702) ( +GROUP.GLOBALREGIONFN 307704 . 308022) (GROUP.TRANSLATEFN 308024 . 310056) (GROUP.TRANSFORMFN 310058 . +313538) (GROUP.READCHANGEFN 313540 . 317464)) (317467 318475 (REGION.CENTER 317477 . 318078) ( +REMOVE.LAST 318080 . 318473)) (318528 323635 (SK.MOVE.GROUP.CONTROL.PT 318538 . 318829) ( +SK.SEL.AND.MOVE.CONTROL.PT 318831 . 320235) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 320237 . 322310) ( +SK.READ.NEW.GROUP.CONTROL.PT 322312 . 323633)) (323894 328518 (SK.DO.GROUP 323904 . 325356) ( +SK.CHECK.WHENGROUPEDFN 325358 . 326068) (SK.DO.UNGROUP 326070 . 327275) (SK.CHECK.WHENUNGROUPEDFN +327277 . 327864) (SK.GROUP.UNDO 327866 . 328189) (SK.UNGROUP.UNDO 328191 . 328516)) (328759 333681 ( +SK.FREEZE.ELTS 328769 . 329053) (SK.SEL.AND.FREEZE 329055 . 329445) (SK.FREEZE.ELEMENTS 329447 . +329998) (SK.UNFREEZE.ELT 330000 . 330289) (SK.SEL.AND.UNFREEZE 330291 . 331827) (SK.UNFREEZE.ELEMENTS +331829 . 332388) (SK.FREEZE.UNDO 332390 . 332635) (SK.UNFREEZE.UNDO 332637 . 332884) (SK.DO.FREEZE +332886 . 333279) (SK.DO.UNFREEZE 333281 . 333679)) (333911 343721 (SKETCH.ELEMENTS.OF.SKETCH 333921 . +334756) (SKETCH.LIST.OF.ELEMENTS 334758 . 335476) (SKETCH.ADD.ELEMENT 335478 . 336553) ( +SKETCH.DELETE.ELEMENT 336555 . 338287) (DELFROMGROUPELT 338289 . 339089) (SKETCH.ELEMENT.TYPE 339091 + . 339440) (SKETCH.ELEMENT.CHANGED 339442 . 341010) (SK.ELEMENT.CHANGED1 341012 . 341663) ( +SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 341665 . 343719)) (343775 348387 (INSURE.SKETCH 343785 . 346400) + (LOCALSPECS.FROM.VIEWER 346402 . 346762) (SK.LOCAL.ELT.FROM.GLOBALPART 346764 . 347232) ( +SKETCH.FROM.VIEWER 347234 . 347468) (INSPECT.SKETCH 347470 . 347795) (ELT.INSIDE.SKETCHWP 347797 . +348070) (SK.INSIDE.REGION 348072 . 348385)) (348388 352718 (MAPSKETCHSPECS 348398 . 349019) ( +MAPCOLLECTSKETCHSPECS 349021 . 349770) (MAPSKETCHSPECSUNTIL 349772 . 350580) (MAPGLOBALSKETCHSPECS +350582 . 351283) (MAPGLOBALSKETCHELEMENTS 351285 . 352716)) (352780 378672 (SK.ADD.SELECTION 352790 . +353530) (SK.COPY.INSERTFN 353532 . 357163) (SCREENELEMENTP 357165 . 357638) (SK.ITEM.REGION 357640 . +358127) (SK.ELEMENT.GLOBAL.REGION 358129 . 358657) (SK.LOCAL.ITEMS.IN.REGION 358659 . 360638) ( +SK.REGIONFN 360640 . 360962) (SK.GLOBAL.REGIONFN 360964 . 361322) (SK.REMOVE.SELECTION 361324 . 362052 +) (SK.SELECT.MULTIPLE.ITEMS 362054 . 372496) (SKETCH.GET.ELEMENTS 372498 . 373921) (SK.PUT.MARKS.UP +373923 . 374262) (SK.TAKE.MARKS.DOWN 374264 . 374603) (SK.TRANSLATE.GLOBALPART 374605 . 376732) ( +SK.TRANSLATE.ITEM 376734 . 377661) (SK.TRANSLATEFN 377663 . 377859) (TRANSLATE.SKETCH 377861 . 378670) +) (378938 381845 (SK.INPUT.SCALE 378948 . 379795) (SK.UPDATE.SKETCHCONTEXT 379797 . 380394) ( +SK.SET.INPUT.SCALE 380396 . 381045) (SK.SET.INPUT.SCALE.CURRENT 381047 . 381338) ( +SK.SET.INPUT.SCALE.VALUE 381340 . 381843)) (381896 383808 (SK.SET.FEEDBACK.MODE 381906 . 383212) ( +SK.SET.FEEDBACK.POINT 383214 . 383382) (SK.SET.FEEDBACK.VERBOSE 383384 . 383553) ( +SK.SET.FEEDBACK.ALWAYS 383555 . 383806)) (383959 385337 (SKETCH.TITLE 383969 . 384333) ( +SK.SHRINK.ICONCREATE 384335 . 385335)) (391027 393841 (READBRUSHSHAPE 391037 . 391496) (READ.FUNCTION +391498 . 392013) (READBRUSHSIZE 392015 . 392473) (READANGLE 392475 . 392967) (READARCDIRECTION 392969 + . 393839)) (393842 404253 (SK.CHANGE.DASHING 393852 . 397800) (READ.AND.SAVE.NEW.DASHING 397802 . +399570) (READ.NEW.DASHING 399572 . 401312) (READ.DASHING.CHANGE 401314 . 402789) (SK.CACHE.DASHING +402791 . 403793) (SK.DASHING.LABEL 403795 . 404251)) (404254 407959 (READ.FILLING.CHANGE 404264 . +406245) (SK.CACHE.FILLING 406247 . 406965) (READ.AND.SAVE.NEW.FILLING 406967 . 407565) ( +SK.FILLING.LABEL 407567 . 407957)) (408343 444596 (SK.GETGLOBALPOSITION 408353 . 408658) ( +SKETCH.TRACK.ELEMENTS 408660 . 412180) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 412182 . 412741) ( +MAP.SKETCH.ELEMENTS.INTO.VIEWER 412743 . 413135) (MAP.GLOBAL.POSITION.INTO.VIEWER 413137 . 413517) ( +SKETCH.TO.VIEWER.POSITION 413519 . 413878) (SKETCH.TRACK.IMAGE 413880 . 414734) (SK.TRACK.IMAGE1 +414736 . 416148) (MAP.VIEWER.XY.INTO.GLOBAL 416150 . 417144) (SK.SET.POSITION 417146 . 417482) ( +MAP.VIEWER.PT.INTO.GLOBAL 417484 . 418590) (VIEWER.TO.SKETCH.POSITION 418592 . 419227) ( +SK.INSURE.SCALE 419229 . 419489) (SKETCH.TO.VIEWER.REGION 419491 . 420297) (VIEWER.TO.SKETCH.REGION +420299 . 420637) (SK.READ.POINT.WITH.FEEDBACK 420639 . 431642) (SKETCH.GET.POSITION 431644 . 433524) ( +\CLOBBER.POSITION 433526 . 433974) (NEAREST.HOT.SPOT 433976 . 435504) (GETWREGION 435506 . 436267) ( +GET.BITMAP.POSITION 436269 . 437053) (SK.TRACK.BITMAP1 437055 . 444594)) (445165 476051 ( +SK.BRING.UP.POSITION.PAD 445175 . 451035) (SK.PAD.READER.POSITION 451037 . 452686) ( +SK.POSITION.READER.REPAINTFN 452688 . 454472) (SK.POSITION.PAD.FROM.VIEWER 454474 . 455816) ( +SK.INIT.POSITION.NUMBER.PAD.MENU 455818 . 456168) (SK.READ.POSITION.PAD.HANDLER 456170 . 461902) ( +DISPLAY.POSITION.READER.TOTAL 461904 . 464202) (POSITION.PAD.READER.HANDLER 464204 . 472247) ( +POSITIONPAD.HELDFN 472249 . 473733) (\POSITION.PAD.ADD.DIGIT.MENU 473735 . 475314) ( +\POSITION.READER.NUMBERPAD 475316 . 476049)) (477677 480355 (SK.DRAWFN 477687 . 478053) ( +SK.TRANSFORMFN 478055 . 478436) (SK.EXPANDFN 478438 . 478715) (SK.INPUT 478717 . 479098) (SK.INSIDEFN +479100 . 479740) (SK.UPDATEFN 479742 . 480353)) (486120 490065 (SK.CHECK.SKETCH.VERSION 486130 . +487370) (SK.INSURE.RECORD.LENGTH 487372 . 488855) (SK.INSURE.HAS.LENGTH 488857 . 489595) ( +SK.RECORD.LENGTH 489597 . 489771) (SK.SET.RECORD.LENGTHS 489773 . 490063)) (490528 491415 ( +SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490538 . 491413))))) STOP diff --git a/library/sketch/SKETCH-EDIT b/library/sketch/SKETCH-EDIT index fe712eea5..8be14eb4d 100644 --- a/library/sketch/SKETCH-EDIT +++ b/library/sketch/SKETCH-EDIT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:12:04" {WMEDLEY}sketch>SKETCH-EDIT.;1 108598 +(FILECREATED "12-Nov-2025 14:50:25" {WMEDLEY}SKETCH>SKETCH-EDIT.;5 110185 :EDIT-BY rmk - :CHANGES-TO (RECORDS TEXTELTSELECTION) + :CHANGES-TO (FNS \SKED.INSERT \SKED.INSERT.CHARS.TO.STR) - :PREVIOUS-DATE "21-Aug-2021 20:50:04" {WMEDLEY}sketch>SKETCHEDIT.;1) + :PREVIOUS-DATE "10-Nov-2025 16:36:04" {WMEDLEY}SKETCH>SKETCH-EDIT.;4) (PRETTYCOMPRINT SKETCH-EDITCOMS) @@ -520,11 +520,10 @@ (SKED.MOVE.SELECTION SKW (NOT (WINDOWPROP SKW 'USEGRID]) (SKED.MOVE.SELECTION - [LAMBDA (SKW USEGRID) (* rrb "11-Jul-86 15:51") - - (* the user has left buttoned in a sketch window. - Put the caret there.) - + [LAMBDA (SKW USEGRID) (* ; "Edited 5-Nov-2025 23:56 by rmk") + (* rrb "11-Jul-86 15:51") + (* ; + "the user has left buttoned in a sketch window. Put the caret there.") (SKED.CLEAR.SELECTION SKW) (PROG (FEEDBACKX FEEDBACKY OLDGRIDX OLDGRIDY OLDX OLDY OLDCUR FEEDBACKCUR INTEXT INIMAGEOBJ STARTLINE STARTCHAR X Y (DSP (WINDOWPROP SKW 'DSP)) @@ -532,44 +531,36 @@ (GRID (SK.GRIDFACTOR SKW))) (until (MOUSESTATE UP) do - - (* track with the appropriate caret depending upon whether the cursor is inside - of existing text or not.) + (* ;; "track with the appropriate caret depending upon whether the cursor is inside of existing text or not.") (SETQ X (LASTMOUSEX DSP)) (SETQ Y (LASTMOUSEY DSP)) (COND ((OR (NEQ OLDX X) - (NEQ OLDY Y)) - - (* only look for things when the cursor position has changed.) - + (NEQ OLDY Y)) (* ; + "only look for things when the cursor position has changed.") (SETQ OLDX X) (SETQ OLDY Y) [COND ([AND (SETQ INTEXT (for ELT in (LOCALSPECS.FROM.VIEWER SKW) + unless (EQ 'SHADE (fetch (LOCALTEXT LOCALFONT) + of (fetch (SCREENELT LOCALPART) of ELT))) when (SELECTQ (fetch (SCREENELT GTYPE) of ELT) - (TEXT (AND (NEQ (fetch (LOCALTEXT LOCALFONT) - of (fetch (SCREENELT LOCALPART) - of ELT)) - 'SHADE) - (SETQ STARTLINE (INTEXT ELT X Y)))) - (TEXTBOX (AND (NEQ (fetch (LOCALTEXTBOX LOCALFONT) - of (fetch (SCREENELT LOCALPART) - of ELT)) - 'SHADE) - (INSIDE? (fetch (LOCALTEXTBOX - LOCALTEXTBOXREGION) - of (fetch (SCREENELT LOCALPART) - of ELT)) - X Y) - (SETQ STARTLINE (CLOSEST.LINE ELT Y)))) + (TEXT (SETQ STARTLINE (INTEXT ELT X Y))) + (TEXTBOX (CL:WHEN (INSIDE? (fetch (LOCALTEXTBOX + LOCALTEXTBOXREGION + ) + of (fetch (SCREENELT + LOCALPART) + of ELT)) + X Y) + (SETQ STARTLINE (CLOSEST.LINE ELT Y)))) NIL) do (RETURN ELT))) (NOT (SK.ELEMENT.PROTECTED? (fetch (SCREENELT GLOBALPART) of INTEXT) - 'CHANGE] (* inside of a text element.) + 'CHANGE] (* ; "inside of a text element.") (SETQ FEEDBACKCUR IN.TEXT.FEEDBACK.CURSOR) - (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT + (SETQ FEEDBACKX (CHAR.BEGIN (SETQ STARTCHAR (CLOSEST.CHAR X STARTLINE INTEXT DSP)) STARTLINE INTEXT DSP)) (SETQ FEEDBACKY (LINE.BEGIN STARTLINE INTEXT))) @@ -577,7 +568,7 @@ (COND (USEGRID (SETQ FEEDBACKX (MAP.WINDOW.ONTO.GRID X SCALE GRID)) (SETQ FEEDBACKY (MAP.WINDOW.ONTO.GRID Y SCALE GRID))) - (T (* no grid) + (T (* ; "no grid") (SETQ FEEDBACKX X) (SETQ FEEDBACKY Y] (COND @@ -588,13 +579,13 @@ (SHOW.FEEDBACK (SETQ OLDCUR FEEDBACKCUR) (SETQ OLDGRIDX FEEDBACKX) (SETQ OLDGRIDY FEEDBACKY) - SKW))) (* give the coordinate display window - a shot.) + SKW))) (* ; + "give the coordinate display window a shot.") (SKETCHW.UPDATE.LOCATORS SKW))) finally (AND OLDGRIDX (SHOW.FEEDBACK OLDCUR OLDGRIDX OLDGRIDY SKW)) (COND - ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR) (* selection is existing text) - (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX + ((EQ OLDCUR IN.TEXT.FEEDBACK.CURSOR) (* ; "selection is existing text") + (SKED.SET.SELECTION (CREATE.TEXT.SELECTION INTEXT STARTLINE STARTCHAR OLDGRIDX OLDGRIDY DSP) SKW)) (OLDGRIDX (SKED.SET.SELECTION (create POSITION @@ -703,15 +694,16 @@ (GETSYNTAX CHCODE (GETREADTABLE]) (SK.GETSYNTAX - [LAMBDA (CHARCODE) (* rrb "11-Jul-86 17:18") - - (* version of getsyntax that uses the TEDIT table if it is available, otherwise - the terminal.) - - (COND - ((DEFINEDP (FUNCTION TEDIT.GETSYNTAX)) - (TEDIT.GETSYNTAX CHARCODE TEDIT.READTABLE)) - (T (GETSYNTAX CHARCODE (GETTERMTABLE]) + [LAMBDA (CHARCODE) (* ; "Edited 10-Nov-2025 15:33 by rmk") + (* rrb "11-Jul-86 17:18") + + (* ;; "Original code used TEDIT.GETSYNTAX if it was defined, otherwise called the system GETSYNTAX. That made SKETCH dependent on the system tags (CHARDELETE etc.). Bbut now we know that loading SKETCH insures that TEDIT is loaded, so Sketch is modified to use the Tedit action names") + (* (COND ((DEFINEDP (FUNCTION + TEDIT.GETSYNTAX)) (TEDIT.GETSYNTAX + CHARCODE TEDIT.READTABLE)) + (T (GETSYNTAX CHARCODE + (GETTERMTABLE))))) + (TEDIT.GET.CHARACTION CHARCODE]) ) (DECLARE%: DONTCOPY (DECLARE%: EVAL@COMPILE @@ -822,13 +814,14 @@ (\SKED.INSERT CHARCODES SKW ATSCALE]) (\SKED.INSERT - [LAMBDA (CHARCODES SKW ATSCALE) (* ; "Edited 20-Feb-87 17:28 by rrb") + [LAMBDA (CHARCODES SKW ATSCALE) (* ; "Edited 12-Nov-2025 14:49 by rmk") + (* ; "Edited 10-Nov-2025 15:32 by rmk") + (* ; "Edited 20-Feb-87 17:28 by rrb") (COND ((GREATERP (LENGTH CHARCODES) 200) - - (* the maximum string length limits the number of characters that can be - inserted at once. This can happen from a shift select.) + + (* ;; "the maximum string length limits the number of characters that can be inserted at once. This can happen from a shift select.") (SKED.INSERT (FIRST.N.ELEMENTS CHARCODES 200) SKW ATSCALE) @@ -840,16 +833,15 @@ NEWELT STRPIECE NEWLINE# NEWCHAR# SKCONTEXT PTRCHAR# CONTROLCHARTAIL) (COND ((EQ (SK.GETSYNTAX (CAR CHARCODES)) - 'UNDO) - - (* user typed an undo Avoid the overhead of inserting no characters and allow - undo to be typed without a selection.) + :UNDO) + + (* ;; "user typed an undo Avoid the overhead of inserting no characters and allow undo to be typed without a selection.") (SETQ CONTROLCHARTAIL 'UNDO) (GO UNDO))) (COND - ((NULL SELECTION) (* add a new text element with these - characters.) + ((NULL SELECTION) (* ; + "add a new text element with these characters.") (STATUSPRINT SKW " " "Indicate the position the typing should go with the left button.") (RETURN))) @@ -860,10 +852,8 @@ (CHARCODE EOL)) (EQ (CAR CHARCODES) (CHARCODE LINEFEED))) - (KEYDOWNP 'CTRL)) - - (* user hit control CR. create a new text or textbox.) - + (KEYDOWNP 'CTRL)) (* ; + "user hit control CR. create a new text or textbox.") (SKED.CREATE.NEW.TEXTBOX [COND ((NEW.TEXT.SELECTIONP SELECTION) NIL) @@ -873,30 +863,26 @@ SKW (CDR CHARCODES)) (RETURN)) - [(NEW.TEXT.SELECTIONP SELECTION) - - (* selection is in open space, create a new text element.) - (* merge the characters into strings - of each line.) + [(NEW.TEXT.SELECTIONP SELECTION) (* ; + "selection is in open space, create a new text element.") + (* ; + "merge the characters into strings of each line.") (SETQ ELTTYPE 'TEXT) (SETQ CONTROLCHARTAIL (\SKED.INSERT.CHARS.TO.STR CHARCODES NIL SKW)) (COND - ((OR NEWSTRS STRPIECE) - - (* if there are any new characters, add a new text element.) - - (* save the selection that marked the spot where the new text goes and add the - text but not in a way that puts an event on the history list. - this is done during clean up.) + ((OR NEWSTRS STRPIECE) (* ; + "if there are any new characters, add a new text element.") + + (* ;; "save the selection that marked the spot where the new text goes and add the text but not in a way that puts an event on the history list. this is done during clean up.") (WINDOWPROP SKW 'CHANGEDTEXTELT SELECTION) (SETQ NEWELT (SK.ADD.ELEMENT (CREATE.TEXT.ELEMENT (SETQ NEWSTRS (NCONC1 NEWSTRS STRPIECE)) (SK.MAP.INPUT.PT.TO.GLOBAL (create INPUTPT - INPUT.ONGRID? + INPUT.ONGRID? _ NIL - INPUT.POSITION + INPUT.POSITION _ (  SELECTION.POSITION @@ -913,20 +899,15 @@ of (fetch (SKETCHCONTEXT SKETCHBRUSH) of SKCONTEXT))) SKW T))) - (CONTROLCHARTAIL - - (* user typed control return to get textbox in the middle of no where.) - + (CONTROLCHARTAIL (* ; + "user typed control return to get textbox in the middle of no where.") (SKED.CREATE.NEW.TEXTBOX NIL SKW (CDR CONTROLCHARTAIL) ATSCALE) (RETURN)) - (T - - (* user typed backspace, etc. when no text exists. - Put caret back in same place.) - + (T (* ; + "user typed backspace, etc. when no text exists. Put caret back in same place.") (SKED.SET.SELECTION SELECTION SKW) - (RETURN))) (* put selection marker at the end.) + (RETURN))) (* ; "put selection marker at the end.") (SETQ NEWLINE# (LENGTH NEWSTRS)) (SETQ NEWCHAR# (NCHARS (CAR (LAST NEWSTRS] (T [SETQ GTEXTELT (fetch (SCREENELT INDIVIDUALGLOBALPART) @@ -935,8 +916,8 @@ (SETQ ELTTYPE (fetch (INDIVIDUALGLOBALPART GTYPE) of GTEXTELT)) (SETQ STRLST (fetch (LOCALTEXT LOCALLISTOFCHARACTERS) of (fetch (SCREENELT LOCALPART) of TEXTELT))) - (* set up points to beginning and end - of selection.) + (* ; + "set up points to beginning and end of selection.") [COND [(NULL EXTENSION) (SETQ LASTCHAR# (SETQ FIRSTCHAR# (fetch (TEXTELTSELECTION SKCHAR#) @@ -948,9 +929,8 @@ (SETQ FIRSTCHAR# (fetch (TEXTELTSELECTION SKCHAR#) of SELECTION)) (SETQ LASTLINE# (fetch (TEXTELTSELECTION SKLINE#) of EXTENSION)) (SETQ LASTCHAR# (fetch (TEXTELTSELECTION SKCHAR#) of EXTENSION)) - - (* make SELECTION be the candidate for the selection after the deletion.) - + (* ; + "make SELECTION be the candidate for the selection after the deletion.") (SETQ SELECTION EXTENSION)) (T (SETQ FIRSTLINE# (fetch (TEXTELTSELECTION SKLINE#) of EXTENSION)) (SETQ FIRSTCHAR# (fetch (TEXTELTSELECTION SKCHAR#) of EXTENSION)) @@ -958,13 +938,14 @@ (SETQ LASTCHAR# (fetch (TEXTELTSELECTION SKCHAR#) of SELECTION] [for STR in STRLST as LINE# from 1 do [COND - ((ILESSP LINE# FIRSTLINE#) (* before the first, copy across) + ((ILESSP LINE# FIRSTLINE#) (* ; "before the first, copy across") (SETQ NEWSTRS (NCONC1 NEWSTRS STR))) - ((IGREATERP LINE# LASTLINE#) (* After the last, copy across) + ((IGREATERP LINE# LASTLINE#) (* ; "After the last, copy across") (SETQ NEWSTRS (NCONC1 NEWSTRS STR))) - ((EQ LINE# FIRSTLINE#) (* on the first, save the part before.) + ((EQ LINE# FIRSTLINE#) (* ; + "on the first, save the part before.") (SETQ STRPIECE (SUBSTRING STR 1 FIRSTCHAR#)) - (* insert new text.) + (* ; "insert new text.") (COND [CHARCODES (SETQ CONTROLCHARTAIL (\SKED.INSERT.CHARS.TO.STR CHARCODES @@ -977,18 +958,15 @@ (T (SETQ NEWCHAR# FIRSTCHAR#) (SETQ NEWLINE# FIRSTLINE#] (COND - ((EQ LINE# LASTLINE#) - - (* on the last, copy the part before and the part after as one) - + ((EQ LINE# LASTLINE#) (* ; + "on the last, copy the part before and the part after as one") (SETQ NEWSTRS (COND [STRPIECE (NCONC1 NEWSTRS (COND ((EQ LASTCHAR# (NCHARS STR)) - - (* special check because SUBSTRING returns NIL rather than the empty string.) - + (* ; + "special check because SUBSTRING returns NIL rather than the empty string.") STRPIECE) (T (CONCAT STRPIECE (SUBSTRING STR (ADD1 @@ -997,15 +975,13 @@ [(NEQ LASTCHAR# (NCHARS STR)) (NCONC1 NEWSTRS (SUBSTRING STR (ADD1 LASTCHAR#] (T NEWSTRS] - - (* any other windows that had this selection have had it deleted already so - this doesn't do anything for them.) + + (* ;; "any other windows that had this selection have had it deleted already so this doesn't do anything for them.") [COND ((IGREATERP NEWLINE# (LENGTH NEWSTRS)) - - (* this corresponds to deleting every thing in a line. - Make sure that if it is the last line that the selection is reset) + + (* ;; "this corresponds to deleting every thing in a line. Make sure that if it is the last line that the selection is reset") (COND ((EQ (SETQ NEWLINE# (LENGTH NEWSTRS)) @@ -1013,30 +989,23 @@ (SETQ NEWCHAR# 0) (COND ((EQ ELTTYPE 'TEXT) - - (* deleted everything in a text element, delete the text element and set the - selection to new text cursor.) + + (* ;; "deleted everything in a text element, delete the text element and set the selection to new text cursor.") (COND [(WINDOWPROP SKW 'CHANGEDTEXTELT) - - (* make the history event for this edit so that it will restore the original - text element) - + (* ; + "make the history event for this edit so that it will restore the original text element") (PROG ((INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL))) (COND ((POSITIONP INITSELECTION) - - (* this text element was typing that was never officially added, don't record - the deletion either.) - + (* ; + "this text element was typing that was never officially added, don't record the deletion either.") (SK.DELETE.ELEMENT (LIST TEXTELT) SKW 'DON'T)) - (T - - (* selection was existing text, record this as a delete event.) - + (T (* ; + "selection was existing text, record this as a delete event.") (SK.DELETE.ELEMENT (LIST TEXTELT) SKW @@ -1052,16 +1021,14 @@ (VIEWER.SCALE SKW)) SKW) (RETURN NIL)) - ((EQ ELTTYPE 'TEXTBOX) (* deleted everything in a textbox) + ((EQ ELTTYPE 'TEXTBOX) (* ; "deleted everything in a textbox") NIL))) (T (SETQ NEWCHAR# (NCHARS (CAR (LAST NEWSTRS] (SETQ PTRCHAR# (SKED.CHARACTERPOSITION NEWSTRS NEWLINE# NEWCHAR#)) (COND ((WINDOWPROP SKW 'CHANGEDTEXTELT) - - (* this is not the first change to the text element. - Collect the changes so that only one element is put on the undo stack, not one - for each character.) + + (* ;; "this is not the first change to the text element. Collect the changes so that only one element is put on the undo stack, not one for each character.") (SETQ NEWELT (SK.UPDATE.ELEMENT (fetch (SCREENELT GLOBALPART) of TEXTELT) (SK.REPLACE.TEXT.IN.ELEMENT (fetch (SCREENELT @@ -1070,12 +1037,10 @@ NEWSTRS) SKW T))) ((AND CONTROLCHARTAIL (NEQ CONTROLCHARTAIL 'UNDO)) - - (* user typed a character command to create a new text box. - Create it and put the remaining characters in it and set the cursor there.) - - (* this is done here so that no undo event is created for the textbox that the - user was in when all they did was type a control-cr.) + + (* ;; "user typed a character command to create a new text box. Create it and put the remaining characters in it and set the cursor there.") + + (* ;; "this is done here so that no undo event is created for the textbox that the user was in when all they did was type a control-cr.") (SKED.CREATE.NEW.TEXTBOX (fetch (SCREENELT INDIVIDUALGLOBALPART) of NEWELT) @@ -1083,9 +1048,7 @@ (CDR CONTROLCHARTAIL)) (RETURN)) (T - - (* this is the first edit change to a new element, call the PREEDITFN and save - old text element so undo event can be constructed when the selection changes.) + (* ;; "this is the first edit change to a new element, call the PREEDITFN and save old text element so undo event can be constructed when the selection changes.") (OR (SK.CHECK.PREEDITFN SKW (fetch (SCREENELT GLOBALPART) of TEXTELT)) (RETURN NIL)) @@ -1096,9 +1059,8 @@ NEWSTRS) SKW)) (WINDOWPROP SKW 'CHANGEDTEXTELT SELECTION))) - - (* recalculate the line %# and char %# of the insertion point as the textboxes - at least do justification.) + + (* ;; "recalculate the line # and char # of the insertion point as the textboxes at least do justification.") [SETQ NEWCHAR# (CDR (SETQ NEWLINE# (SKED.LINE.AND.CHAR# (fetch (LOCALTEXTBOX LOCALLISTOFCHARACTERS) @@ -1108,36 +1070,28 @@ (SETQ NEWLINE# (CAR NEWLINE#] UNDO (COND - ((NULL CONTROLCHARTAIL) - - (* set the selection to where the characters were just inserted.) - + ((NULL CONTROLCHARTAIL) (* ; + "set the selection to where the characters were just inserted.") (SKED.SET.SELECTION (CREATE.TEXT.SELECTION NEWELT NEWLINE# NEWCHAR# NIL NIL (WINDOWPROP SKW 'DSP)) SKW)) - [(EQ CONTROLCHARTAIL 'UNDO) - - (* user types in an undo after some characters or while selection was in the - middle of text.) - + [(EQ CONTROLCHARTAIL 'UNDO) (* ; + "user types in an undo after some characters or while selection was in the middle of text.") (PROG (INITSELECTION EDITEDELT) (COND ((SETQ INITSELECTION (WINDOWPROP SKW 'CHANGEDTEXTELT NIL)) - (* in the middle of editing, undo - these edits.) + (* ; + "in the middle of editing, undo these edits.") [SETQ EDITEDELT (fetch (SCREENELT GLOBALPART) of (OR NEWELT (fetch (TEXTELTSELECTION SKTEXTELT) of (OR SELECTION (ERROR "NO SELECTION WHEN THERE SHOULD BE" ] - - (* add event to history list so the undo can be undone.) - + (* ; + "add event to history list so the undo can be undone.") (COND - ((POSITIONP INITSELECTION) - - (* add an ADD event because previously there was nothing here.) - + ((POSITIONP INITSELECTION) (* ; + "add an ADD event because previously there was nothing here.") (SK.ADD.HISTEVENT 'ADD (LIST EDITEDELT) SKW) (SK.CHECK.END.INITIAL.EDIT SKW EDITEDELT)) @@ -1148,20 +1102,13 @@ EDITEDELT))) (SK.UNDO.LAST SKW) (SKED.SET.SELECTION INITSELECTION SKW)) - (T - - (* haven't edited any characters in the current element, just undo the last - thing.) - + (T (* ; + "haven't edited any characters in the current element, just undo the last thing.") (SK.UNDO.LAST SKW] (T - - (* user typed a character command to create a new text box. - Create it and put the remaining characters in it and set the cursor there.) - - (* set the selection so that adding the new text box will create an undo event - for the character change that took place in this text box before the control-cr - was typed.) + (* ;; "user typed a character command to create a new text box. Create it and put the remaining characters in it and set the cursor there.") + + (* ;; "set the selection so that adding the new text box will create an undo event for the character change that took place in this text box before the control-cr was typed.") (SKED.SET.SELECTION (CREATE.TEXT.SELECTION NEWELT NEWLINE# NEWCHAR# NIL NIL (WINDOWPROP SKW 'DSP)) @@ -1360,136 +1307,118 @@ (T (RETURN (SUBSTRING STRING 1 END]) (\SKED.INSERT.CHARS.TO.STR - [LAMBDA (CHARCODES INCLUDECR SKW) (* rrb "11-Jul-86 17:18") + [LAMBDA (CHARCODES INCLUDECR SKW) (* ; "Edited 12-Nov-2025 14:50 by rmk") + (* ; "Edited 10-Nov-2025 16:35 by rmk") + (* rrb "11-Jul-86 17:18") (DECLARE (SPECVARS NEWSTRS STRPIECE)) - - (* takes a list of characters and makes it into strings on the free variable - NEWSTRS. The variable STRPIECE is set to the last line of characters. - NEWSTRS is a list of the strings that precede this one which is used in the - case of backspace onto the previous line.) + + (* ;; "takes a list of characters and makes it into strings on the free variable NEWSTRS. The variable STRPIECE is set to the last line of characters. NEWSTRS is a list of the strings that precede this one which is used in the case of backspace onto the previous line.") (PROG (LINELST THISLINE REMAININGCHARS CLASS) [for CHAR in CHARCODES do (SELECTQ (SK.GETSYNTAX CHAR) - (CHARDELETE (* delete the previous character.) - [COND - (THISLINE (* easy case of deleting type in.) - (SETQ THISLINE (CDR THISLINE))) - (LINELST (* deleting a typed in CR.) - (SETQ THISLINE (CAR LINELST)) - (SETQ LINELST (CDR LINELST))) - [STRPIECE (* remove the previous character from - the current string.) - (COND - ((EQ (NCHARS STRPIECE) - 1) - (SETQ STRPIECE NIL)) - (T (SETQ STRPIECE (SUBSTRING STRPIECE 1 -2] - [NEWSTRS (SETQ STRPIECE (CAR (LAST NEWSTRS))) - (SETQ NEWSTRS (BUTLAST NEWSTRS)) - (COND - ((EQ (NTHCHARCODE STRPIECE -1) - (CHARCODE EOL)) - (* remove previous eol) - (COND - ((EQ (NCHARS STRPIECE) - 1) - (SETQ STRPIECE NIL)) - (T (SETQ STRPIECE (SUBSTRING STRPIECE 1 -2] - (T (* no characters to delete) - (FLASHW (TTYDISPLAYSTREAM]) - (WORDDELETE (* delete the previous word) - - (* use the TEdit word bounding readtable. - Code are%: character = 21 - - space = 22 - - punctuation = 20) - - [COND - [[OR THISLINE (PROG1 (SETQ THISLINE (CAR LINELST)) - (SETQ LINELST (CDR LINELST] - (* easy case of deleting type in.) - - (* if this line was empty, skip the cr that created it as part of the white - space before the word.) - (* skip any whitespace) - (COND - ([NULL (SETQ THISLINE (for TAIL on THISLINE - while (EQ (SK.WORD.BREAK.CLASS - (CAR TAIL)) - 22) - finally (RETURN TAIL] - - (* the whitespace backed up to the beginning of a line. - quit there.) - - NIL) - (T (SETQ CLASS (SK.WORD.BREAK.CLASS (CAR THISLINE))) - - (* skip all things of the same class as the first character before the - whitespace) - - (SETQ THISLINE (for TAIL on THISLINE - until (NEQ (SK.WORD.BREAK.CLASS - (CAR TAIL)) - CLASS) - finally (RETURN TAIL] - (STRPIECE (* remove the previous character from - the current string.) - (SETQ STRPIECE (\SKED.DELETE.WORD.FROM.STRING STRPIECE))) - (NEWSTRS [SETQ STRPIECE (\SKED.DELETE.WORD.FROM.STRING - (CAR (LAST NEWSTRS] - (SETQ NEWSTRS (BUTLAST NEWSTRS))) - (T (* no characters to delete) - (FLASHW (TTYDISPLAYSTREAM]) - (DELETE (* delete selection. - Here that means don't insert anything.)) - (UNDO - - (* by side effect this flushes any characters typed after the undo but it's not - clear where they should go anyway.) - - (RETURN 'UNDO)) - ((REDO FN CMD) + (:CHARDELETE.BACKWARD (* ; "delete the previous character.") + [COND + (THISLINE (* ; "easy case of deleting type in.") + (SETQ THISLINE (CDR THISLINE))) + (LINELST (* ; "deleting a typed in CR.") + (SETQ THISLINE (CAR LINELST)) + (SETQ LINELST (CDR LINELST))) + [STRPIECE (* ; + "remove the previous character from the current string.") + (COND + ((EQ (NCHARS STRPIECE) + 1) + (SETQ STRPIECE NIL)) + (T (SETQ STRPIECE (SUBSTRING STRPIECE 1 -2] + [NEWSTRS (SETQ STRPIECE (CAR (LAST NEWSTRS))) + (SETQ NEWSTRS (BUTLAST NEWSTRS)) + (COND + ((EQ (NTHCHARCODE STRPIECE -1) + (CHARCODE EOL)) (* ; "remove previous eol") + (COND + ((EQ (NCHARS STRPIECE) + 1) + (SETQ STRPIECE NIL)) + (T (SETQ STRPIECE (SUBSTRING STRPIECE 1 -2] + (T (* ; "no characters to delete") + (FLASHW (TTYDISPLAYSTREAM]) + ((:CHARDELETE.FORWARD :WORDDELETE.BACKWARD) + (* ; + "delete the previous word. Tedit binds DEL to CHARDELETE.FORWARD, sketch used to delete the word") + + (* ;; "use the TEdit word bounding readtable. Code are: character = 21 --- space = 22 --- punctuation = 20") + + [COND + [[OR THISLINE (PROG1 (SETQ THISLINE (CAR LINELST)) + (SETQ LINELST (CDR LINELST)))] + (* ; "easy case of deleting type in.") + (* ; + "if this line was empty, skip the cr that created it as part of the white space before the word.") + (* ; "skip any whitespace") + (COND + ([NULL (SETQ THISLINE (for TAIL on THISLINE + while (EQ (SK.WORD.BREAK.CLASS (CAR TAIL)) + 22) finally (RETURN TAIL] + (* ; + "the whitespace backed up to the beginning of a line. quit there.") + NIL) + (T (SETQ CLASS (SK.WORD.BREAK.CLASS (CAR THISLINE))) + (* ; + "skip all things of the same class as the first character before the whitespace") + (SETQ THISLINE (for TAIL on THISLINE + until (NEQ (SK.WORD.BREAK.CLASS (CAR TAIL)) + CLASS) finally (RETURN TAIL] + (STRPIECE (* ; + "remove the previous character from the current string.") + (SETQ STRPIECE (\SKED.DELETE.WORD.FROM.STRING STRPIECE))) + (NEWSTRS [SETQ STRPIECE (\SKED.DELETE.WORD.FROM.STRING + (CAR (LAST NEWSTRS] + (SETQ NEWSTRS (BUTLAST NEWSTRS))) + (T (* ; "no characters to delete") + (FLASHW (TTYDISPLAYSTREAM]) + (:DELETE (* ; + "delete selection. Here that means don't insert anything.")) + (:UNDO + (* ;; "by side effect this flushes any characters typed after the undo but it's not clear where they should go anyway.") + + (RETURN 'UNDO)) + ((:REDO :CMD) (* ; "There are many more Tedit actions that we don't deal with here, these were called out when Sketch was using \TEDIT.GETSYNTAX or GETSYNTAX. Not clear we need this message, just fall through and treat REDO/CMD like other actions, as ordinary characters") (STATUSPRINT SKW " " "Not implemented in this editor. Sorry.")) (COND [(OR (EQ CHAR (CHARCODE EOL)) - (EQ CHAR (CHARCODE LINEFEED))) (* eol) + (EQ CHAR (CHARCODE LINEFEED))) (* ; "eol") (COND - ((KEYDOWNP 'CTRL) - - (* user entered control return, save remaining characters and return indicator) - + ((KEYDOWNP 'CTRL) (* ; + "user entered control return, save remaining characters and return indicator") (SETQ REMAININGCHARS (MEMB CHAR CHARCODES)) (RETURN)) (T (SETQ LINELST (CONS (COND (INCLUDECR - (* text boxes need to have the CRs - left in.) + (* ; + "text boxes need to have the CRs left in.") (CONS (CHARCODE EOL) THISLINE)) (T THISLINE)) LINELST)) (SETQ THISLINE NIL] (T - - (* add this character onto the front of this line; - reversal will happen before conversion to string and return.) + (* ;; "add this character onto the front of this line; reversal will happen before conversion to string and return.") (SETQ THISLINE (CONS CHAR THISLINE] (COND - [LINELST (* had a cr in the character set.) + [LINELST (* ; "had a cr in the character set.") [SETQ NEWSTRS (NCONC NEWSTRS [CONS (JOINCHARS STRPIECE (REVERSE (CAR (LAST LINELST] (for CHLST in (REVERSE (BUTLAST LINELST)) collect (STRINGFROMCHARACTERS (REVERSE CHLST] (SETQ STRPIECE (STRINGFROMCHARACTERS (REVERSE THISLINE] - [THISLINE (* no new lines, add these characters - onto STRPIECE) + [THISLINE (* ; + "no new lines, add these characters onto STRPIECE") (SETQ STRPIECE (JOINCHARS STRPIECE (REVERSE THISLINE] - (T (* no new lines, or characters, leave - STRPIECE alone.) + (T (* ; + "no new lines, or characters, leave STRPIECE alone.") NIL)) (RETURN REMAININGCHARS]) @@ -1953,26 +1882,26 @@ YCOORD _ (LASTMOUSEY WIN]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2425 39533 (BUTLAST 2435 . 2783) (CHAR.BEGIN 2785 . 4710) (CLOSEST.CHAR 4712 . 8935) ( -CLOSEST.LINE 8937 . 9499) (FLASHW 9501 . 9658) (HILITE.LINE 9660 . 10479) (HILITE.TEXT 10481 . 12129) -(IN.TEXT.EXTEND 12131 . 15404) (INIMAGEOBJ 15406 . 15911) (INTEXT 15913 . 16410) (NEW.TEXT.EXTEND -16412 . 18631) (NEW.TEXT.SELECTIONP 18633 . 18813) (NTHCHARWIDTH 18815 . 19072) (NTHLOCALREGION 19074 - . 19312) (ONCHAR 19314 . 19709) (SHOW.EXTENDED.SELECTION.FEEDBACK 19711 . 20646) (SHOW.FEEDBACK 20648 - . 21138) (SHOW.FEEDBACK.BOX 21140 . 22194) (SELECTION.POSITION 22196 . 22988) (SKED.CLEAR.SELECTION -22990 . 23513) (SKETCH.CLEANUP 23515 . 25429) (SK.ENTER.EDIT.CHANGE 25431 . 26976) ( -SKED.REMOVE.OTHER.SELECTIONS 26978 . 27405) (SKED.EXTEND.SELECTION 27407 . 28872) (SKED.MOVE.SELECTION - 28874 . 34035) (CREATE.TEXT.SELECTION 34037 . 34553) (SKED.SELECTION.FEEDBACK 34555 . 36211) ( -SKED.SET.EXTENDSELECTION 36213 . 36530) (SKED.SET.SELECTION 36532 . 36932) (LINE.BEGIN 36934 . 37488) -(SELECTION.GREATERP 37490 . 38285) (SK.WORD.BREAK.CLASS 38287 . 39127) (SK.GETSYNTAX 39129 . 39531)) ( -40375 86109 (WB.EDITOR 40385 . 41710) (SK.TTYENTRYFN 41712 . 41990) (SK.TTYEXITFN 41992 . 42261) ( -SKED.INSERT 42263 . 42691) (\SKED.INSERT 42693 . 63815) (FIRST.N.ELEMENTS 63817 . 64084) ( -SKED.CREATE.NEW.TEXTBOX 64086 . 70615) (SKED.CHARACTERPOSITION 70617 . 71404) (SKED.LINE.AND.CHAR# -71406 . 73037) (\SKED.DELETE.WORD.FROM.STRING 73039 . 74078) (\SKED.INSERT.CHARS.TO.STR 74080 . 82491) - (JOINCHARS 82493 . 82880) (STRINGFROMCHARACTERS 82882 . 83207) (GETALLCHARS 83209 . 83550) ( -CLEANUP.EDIT 83552 . 84004) (SKED.NEW.TEXTELT 84006 . 86107)) (86144 107152 ( -MAP.SCREEN.POSITION.ONTO.GRID 86154 . 87603) (NEAREST.ON.GRID 87605 . 88149) (SK.MIDDLE.TITLEFN 88151 - . 90094) (WB.BUTTON.HANDLER 90096 . 97918) (WB.ADD.NEW.POINT 97920 . 101249) (WB.DRAWLINE 101251 . -105485) (WB.RUBBERBAND.POSITION 105487 . 106404) (SK.RUBBERBAND.FEEDBACKFN 106406 . 106910) ( -RESET.LINE.BEING.INPUT 106912 . 107150)) (107334 108575 (NEAREST.EXISTING.POSITION 107344 . 107546) ( -WB.NEARPT 107548 . 108433) (LASTMOUSEPOSITION 108435 . 108573))))) + (FILEMAP (NIL (2444 40071 (BUTLAST 2454 . 2802) (CHAR.BEGIN 2804 . 4729) (CLOSEST.CHAR 4731 . 8954) ( +CLOSEST.LINE 8956 . 9518) (FLASHW 9520 . 9677) (HILITE.LINE 9679 . 10498) (HILITE.TEXT 10500 . 12148) +(IN.TEXT.EXTEND 12150 . 15423) (INIMAGEOBJ 15425 . 15930) (INTEXT 15932 . 16429) (NEW.TEXT.EXTEND +16431 . 18650) (NEW.TEXT.SELECTIONP 18652 . 18832) (NTHCHARWIDTH 18834 . 19091) (NTHLOCALREGION 19093 + . 19331) (ONCHAR 19333 . 19728) (SHOW.EXTENDED.SELECTION.FEEDBACK 19730 . 20665) (SHOW.FEEDBACK 20667 + . 21157) (SHOW.FEEDBACK.BOX 21159 . 22213) (SELECTION.POSITION 22215 . 23007) (SKED.CLEAR.SELECTION +23009 . 23532) (SKETCH.CLEANUP 23534 . 25448) (SK.ENTER.EDIT.CHANGE 25450 . 26995) ( +SKED.REMOVE.OTHER.SELECTIONS 26997 . 27424) (SKED.EXTEND.SELECTION 27426 . 28891) (SKED.MOVE.SELECTION + 28893 . 33963) (CREATE.TEXT.SELECTION 33965 . 34481) (SKED.SELECTION.FEEDBACK 34483 . 36139) ( +SKED.SET.EXTENDSELECTION 36141 . 36458) (SKED.SET.SELECTION 36460 . 36860) (LINE.BEGIN 36862 . 37416) +(SELECTION.GREATERP 37418 . 38213) (SK.WORD.BREAK.CLASS 38215 . 39055) (SK.GETSYNTAX 39057 . 40069)) ( +40913 87696 (WB.EDITOR 40923 . 42248) (SK.TTYENTRYFN 42250 . 42528) (SK.TTYEXITFN 42530 . 42799) ( +SKED.INSERT 42801 . 43229) (\SKED.INSERT 43231 . 65221) (FIRST.N.ELEMENTS 65223 . 65490) ( +SKED.CREATE.NEW.TEXTBOX 65492 . 72021) (SKED.CHARACTERPOSITION 72023 . 72810) (SKED.LINE.AND.CHAR# +72812 . 74443) (\SKED.DELETE.WORD.FROM.STRING 74445 . 75484) (\SKED.INSERT.CHARS.TO.STR 75486 . 84078) + (JOINCHARS 84080 . 84467) (STRINGFROMCHARACTERS 84469 . 84794) (GETALLCHARS 84796 . 85137) ( +CLEANUP.EDIT 85139 . 85591) (SKED.NEW.TEXTELT 85593 . 87694)) (87731 108739 ( +MAP.SCREEN.POSITION.ONTO.GRID 87741 . 89190) (NEAREST.ON.GRID 89192 . 89736) (SK.MIDDLE.TITLEFN 89738 + . 91681) (WB.BUTTON.HANDLER 91683 . 99505) (WB.ADD.NEW.POINT 99507 . 102836) (WB.DRAWLINE 102838 . +107072) (WB.RUBBERBAND.POSITION 107074 . 107991) (SK.RUBBERBAND.FEEDBACKFN 107993 . 108497) ( +RESET.LINE.BEING.INPUT 108499 . 108737)) (108921 110162 (NEAREST.EXISTING.POSITION 108931 . 109133) ( +WB.NEARPT 109135 . 110020) (LASTMOUSEPOSITION 110022 . 110160))))) STOP diff --git a/library/sketch/SKETCH-EDIT.LCOM b/library/sketch/SKETCH-EDIT.LCOM index 91cd662b5..5246563cb 100644 Binary files a/library/sketch/SKETCH-EDIT.LCOM and b/library/sketch/SKETCH-EDIT.LCOM differ diff --git a/library/sketch/SKETCH-ELEMENTS b/library/sketch/SKETCH-ELEMENTS index ca3acf54a..77154fcfc 100644 --- a/library/sketch/SKETCH-ELEMENTS +++ b/library/sketch/SKETCH-ELEMENTS @@ -1,14 +1,15 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-Dec-2023 00:16:52" {WMEDLEY}sketch>SKETCH-ELEMENTS.;1 554138 +(FILECREATED " 8-Nov-2025 14:02:38" {WMEDLEY}SKETCH>SKETCH-ELEMENTS.;24 545649 :EDIT-BY rmk - :CHANGES-TO (RECORDS LOCALCIRCLE CIRCLE LOCALELLIPSE ELLIPSE KNOTELT LOCALCURVE OPENCURVE - CLOSEDCURVE LOCALCLOSEDCURVE LOCALCLOSEDWIRE LOCALWIRE WIRE CLOSEDWIRE TEXT - LOCALTEXT LOCALTEXTBOX TEXTBOX BOX LOCALBOX ARC LOCALARC) + :CHANGES-TO (FNS SK.CHANGE.TEXT SK.CHANGE.FONT SK.NEWFONT \SK.READ.FONT.SIZE1 SK.NEXTSIZEFONT + SK.DECREASING.FONT.LIST SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.READFONTSIZE + SK.COLLECT.FONT.SIZES SK.READFONTFAMILY SK.SET.FONT SK.GUESS.FONTSAVAILABLE) + (VARS SKETCH-ELEMENTSCOMS) - :PREVIOUS-DATE " 4-Aug-2022 09:57:43" {WMEDLEY}sketch>SKETCHELEMENTS.;2) + :PREVIOUS-DATE " 5-Dec-2023 00:16:52" {WMEDLEY}sketch>SKETCH-ELEMENTS.;1) (PRETTYCOMPRINT SKETCH-ELEMENTSCOMS) @@ -122,9 +123,8 @@ READ.TEXT TEXT.POSITION.AND.CREATE CREATE.TEXT.ELEMENT SK.UPDATE.TEXT.AFTER.CHANGE SK.TEXT.FROM.TEXTBOX TEXT.SET.GLOBAL.REGIONS TEXT.REGIONFN TEXT.GLOBALREGIONFN TEXT.TRANSLATEFN TEXT.TRANSFORMFN TEXT.TRANSLATEPTSFN TEXT.UPDATEFN SK.CHANGE.TEXT - TEXT.SET.SCALES BREAK.AT.CARRIAGE.RETURNS) - (FNS ADD.KNOWN.SKETCH.FONT SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT - SK.DECREASING.FONT.LIST SK.GUESS.FONTSAVAILABLE) + SK.CHANGE.FONT TEXT.SET.SCALES BREAK.AT.CARRIAGE.RETURNS) + (FNS SK.PICK.FONT SK.CHOOSE.TEXT.FONT SK.NEXTSIZEFONT SK.DECREASING.FONT.LIST) (INITVARS (\KNOWN.SKETCH.FONTSIZES)) (GLOBALVARS \KNOWN.SKETCH.FONTSIZES) (DECLARE%: DONTCOPY (RECORDS TEXT LOCALTEXT)) @@ -136,7 +136,6 @@ (VARS INDICATE.TEXT.SHADE) [INITVARS (SK.DEFAULT.FONT) (SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE] - (INITVARS \FONTSONFILE) (ADDVARS (SK.HORIZONTAL.STYLES LEFT RIGHT CENTER) (SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM)) (VARS (SKETCH.TERMTABLE (CREATE.SKETCH.TERMTABLE))) @@ -4575,10 +4574,13 @@ Click outside the window to stop.") (RETURN (AND VAL (LIST COMMAND VAL]) (\SK.READ.FONT.SIZE1 - [LAMBDA (SELECTEDELTS SKETCHW NEWFAMILY) (* rrb "14-Jul-86 13:43") - - (* reads a font size from the user. If NEWFONT is NIL, use the one of the first - selected element.) + [LAMBDA (SELECTEDELTS SKETCHW NEWFAMILY) (* ; "Edited 6-Nov-2025 22:35 by rmk") + (* rrb "14-Jul-86 13:43") + (* ; + "reads a font size from the user. If NEWFONT is NIL, use the one of the first selected element.") + + (* reads a font size from the user. If NEWFONT is NIL, use the one of the first + selected element.) (PROG (FIRSTTEXTELT NEWSIZE NOWFONT NEWFONT) (OR (SETQ FIRSTTEXTELT (for SCRNELT inside SELECTEDELTS @@ -4606,7 +4608,7 @@ Click outside the window to stop.") (STATUSPRINT SKETCHW NEWFAMILY NEWSIZE " not found.") NIL) (T (CLOSE.PROMPT.WINDOW SKETCHW) - (SK.FONTNAMELIST NEWFONT]) + (FONTPROP NEWFONT 'SPEC]) (SK.TEXT.ELT.WITH.SAME.FIELDS [LAMBDA (NEWONE ORGONE) (* rrb "18-Jul-85 14:16") @@ -4635,26 +4637,33 @@ Click outside the window to stop.") NIL]) (SK.READFONTFAMILY - [LAMBDA (SKW TITLE) (* rrb "21-Nov-85 11:28") - (* reads a font family name.) - (PROG ([KNOWNFAMILIES (UNION (for X in \FONTSONFILE collect (CAR X)) - (for X in \FONTSINCORE collect (CAR X] - FAMILY) (* offers a menu of possible choices.) - (COND - ((AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU - (create MENU - ITEMS _ - (APPEND '(("other" 'OTHER + [LAMBDA (SKW TITLE) (* ; "Edited 4-Nov-2025 15:08 by rmk") + (* rrb "21-Nov-85 11:28") + + (* ;; "Offers a menu of existing DISPLAY font families, with Other has a way for the user to type one in. Other makes sense only if there are file fonts that are not yet known to Sketch.") + + (* ;; "RMK: Sketch used to keep its own family-by-device cache, separate from \FONTSINCORE. But the way it was set up, those fonts were created in core when they were identified, so FONTSAVAILABLE would find them them on \FONTSINCORE. Here we scan all devices, not just display, to catch whatever might have shown up for a nondisplay device. So this simulates that behavior.") + + (* ;; "But for a user interaction like this, isn't it only DISPLAY families that matter, the descending-font lists for other devices are not relevant. So maybe we really want only DISPLAY here.") + + (LET (KNOWNFAMILIES FAMILY) + (for FS in (FONTSAVAILABLE '* '* NIL NIL '*) do (pushnew KNOWNFAMILIES (fetch (FONTSPEC + FSFAMILY) + of FS))) + (if (AND KNOWNFAMILIES (NEQ (SETQ FAMILY (\CURSOR.IN.MIDDLE.MENU + (create MENU + ITEMS _ [APPEND + (SORT KNOWNFAMILIES) + '(("other" 'OTHER "prompts for a family not on the menu." - )) KNOWNFAMILIES) - TITLE _ (OR TITLE "Choose font") - CENTERFLG _ T))) - 'OTHER)) - (RETURN FAMILY)) - (T (* grab the tty.) - (TTY.PROCESS (THIS.PROCESS)) - (RETURN (CAR (ERSETQ (MKATOM (U-CASE (PROMPTFORWORD "New family: " NIL NIL - (GETPROMPTWINDOW SKW]) + ] + TITLE _ (OR TITLE "Choose font") + CENTERFLG _ T))) + 'OTHER)) + then FAMILY + else (CAR (ERSETQ (MKATOM (U-CASE (TTYINPROMPTFORWORD "New family: " NIL NIL ( + GETPROMPTWINDOW + SKW]) (CLOSE.PROMPT.WINDOW [LAMBDA (WINDOW) (* rrb "28-Oct-84 14:14") @@ -5189,40 +5198,30 @@ Click outside the window to stop.") (RETURN NEWSCREENELT]) (SK.CHANGE.TEXT - [LAMBDA (ELTWITHTEXT HOW SKW) (* ; "Edited 7-Apr-87 13:41 by rrb") + [LAMBDA (ELTWITHTEXT HOW SKW) (* ; "Edited 8-Nov-2025 14:02 by rmk") + (* ; "Edited 7-Nov-2025 09:05 by rmk") + (* ; "Edited 7-Apr-87 13:41 by rrb") (PROG ((COMMAND (CADR HOW)) (PROPERTY 'FONT) - NEWVALUE GINDTEXTELT NEWGTEXT OLDVALUE OLDFACE GTYPE) - (OR HOW (RETURN)) (* take down the caret before any - change.) + NEWVALUE GINDTEXTELT NEWGTEXT OLDVALUE GTYPE) + (CL:UNLESS HOW (RETURN)) (* ; + "take down the caret before any change.") (SKED.CLEAR.SELECTION SKW) - (COND - ((MEMB (SETQ GTYPE (fetch (GLOBALPART GTYPE) of ELTWITHTEXT)) - '(TEXTBOX TEXT)) + (CL:WHEN (MEMB (SETQ GTYPE (fetch (GLOBALPART GTYPE) of ELTWITHTEXT)) + '(TEXTBOX TEXT)) (SETQ GINDTEXTELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT)) - - (* set the old value to the old font. In the case where the thing that changes - is the justification, this will get re-set) - - (SETQ OLDVALUE (fetch (TEXT FONT) of GINDTEXTELT)) (SETQ NEWGTEXT (SELECTQ (CAR HOW) (TEXT (SELECTQ COMMAND - ((SMALLER LARGER) (* change the font) + ((SMALLER LARGER) (* ; "change the font") [COND - [[SETQ NEWVALUE (SK.NEXTSIZEFONT COMMAND - (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP OLDVALUE 'SIZE] - (* if there is an appropriate size - font, use it.) - [SETQ NEWVALUE (LIST (FONTPROP NEWVALUE 'FAMILY) - (FONTPROP NEWVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE] - (T (* otherwise just scale the area some.) + ((SETQ NEWVALUE (SK.NEXTSIZEFONT COMMAND OLDVALUE)) + (* ; + "if there is an appropriate size font, use it.") + (OR (SK.CHANGE.FONT SKW ELTWITHTEXT NEWVALUE) + (RETURN))) + (T (* ; + "otherwise just scale the area some.") (SETQ NEWVALUE (FTIMES (SETQ OLDVALUE (fetch (TEXT INITIALSCALE ) @@ -5236,18 +5235,18 @@ Click outside the window to stop.") (create TEXT using GINDTEXTELT INITIALSCALE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT INITIALSCALE _ NEWVALUE]) - ((CENTER LEFT RIGHT) (* change the horizontal justification) - [SETQ NEWVALUE (LIST COMMAND (CADR (SETQ OLDVALUE - (fetch (TEXT TEXTSTYLE) - of GINDTEXTELT] + ((CENTER LEFT RIGHT) (* ; + "change the horizontal justification") + (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) of GINDTEXTELT)) + (SETQ NEWVALUE (LIST COMMAND (CADR OLDVALUE))) (SETQ PROPERTY 'JUSTIFICATION) (COND ((EQ GTYPE 'TEXT) (create TEXT using GINDTEXTELT TEXTSTYLE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT TEXTSTYLE _ NEWVALUE)))) - ((TOP BOTTOM MIDDLE BASELINE) (* change the vertical justification) - [SETQ NEWVALUE (LIST (CAR (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) - of GINDTEXTELT))) + ((TOP BOTTOM MIDDLE BASELINE) (* ; "change the vertical justification") + (SETQ OLDVALUE (fetch (TEXT TEXTSTYLE) of GINDTEXTELT)) + [SETQ NEWVALUE (LIST (CAR OLDVALUE) (COND ((EQ COMMAND 'MIDDLE) 'CENTER) @@ -5257,28 +5256,27 @@ Click outside the window to stop.") ((EQ GTYPE 'TEXT) (create TEXT using GINDTEXTELT TEXTSTYLE _ NEWVALUE)) (T (create TEXTBOX using GINDTEXTELT TEXTSTYLE _ NEWVALUE)))) - ((BOLD UNBOLD ITALIC UNITALIC) (* change the face) - (SETQ OLDFACE (FONTPROP OLDVALUE 'FACE)) - [SETQ NEWVALUE (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP OLDVALUE 'SIZE) - (LIST (SELECTQ COMMAND - (BOLD 'BOLD) - (UNBOLD 'MEDIUM) - (CAR OLDFACE)) - (SELECTQ COMMAND - (ITALIC 'ITALIC) - (UNITALIC 'REGULAR) - (CADR OLDFACE)) - (CADDR OLDFACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (BOX (* if it is a text element, BOX it) + ((BOLD UNBOLD ITALIC UNITALIC) (* ; "change the face") + (OR [SK.CHANGE.FONT SKW ELTWITHTEXT NIL NIL + (MAKEFONTFACE (SELECTQ COMMAND + (BOLD 'BOLD) + (UNBOLD 'MEDIUM) + NIL) + (SELECTQ COMMAND + (ITALIC 'ITALIC) + (UNITALIC 'REGULAR) + NIL) + NIL + (FONTPROP (fetch (TEXT FONT) of GINDTEXTELT) + 'FACE] + (RETURN))) + (BOX (* ; + "RMK 2025: RETURN MEANS NO HISTORY?") + (* ; "if it is a text element, BOX it") [COND ((EQ GTYPE 'TEXT) (RETURN (SK.TEXTBOX.FROM.TEXT ELTWITHTEXT SKW]) - (UNBOX (* if it is a text box, unbox it.) + (UNBOX (* ; "if it is a text box, unbox it.") [COND ((EQ GTYPE 'TEXTBOX) (RETURN (SK.TEXT.FROM.TEXTBOX ELTWITHTEXT SKW]) @@ -5286,59 +5284,25 @@ Click outside the window to stop.") ((EQ GTYPE 'TEXT) (RETURN (SK.LOOKEDSTRING.FROM.TEXT ELTWITHTEXT SKW]) (SHOULDNT))) - (SETSIZE (SETQ NEWVALUE COMMAND) - (COND - [(EQ (FONTPROP NEWVALUE 'FAMILY) - (FONTPROP OLDVALUE 'FAMILY)) - - (* if the families are the same, change them, otherwise don't as it isn't known - whether or not this family has the right size.) + (SETSIZE + (* ;; "if the families are the same, change them, otherwise don't as it isn't known whether or not this family has the right size.") - (COND - [(EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ (LIST (FONTPROP - OLDVALUE - 'FAMILY) - (FONTPROP - NEWVALUE - 'SIZE) - (FONTPROP - OLDVALUE - 'FACE] - (T (create TEXTBOX using GINDTEXTELT FONT _ - (LIST (FONTPROP OLDVALUE 'FAMILY) - (FONTPROP NEWVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (T (RETURN)))) - (NEWFONT (* set the font family) - [SETQ NEWVALUE (LIST COMMAND (FONTPROP OLDVALUE 'SIZE) - (FONTPROP OLDVALUE 'FACE] - (COND - ((NULL (FONTCREATE NEWVALUE NIL NIL NIL NIL T)) - (STATUSPRINT SKW " Couldn't find " (CAR NEWVALUE) - " in size " - (CADR NEWVALUE)) + (OR [AND (EQ (FONTPROP COMMAND 'FAMILY) + (FONTPROP OLDVALUE 'FAMILY)) + (SK.CHANGE.FONT SKW ELTWITHTEXT NIL (FONTPROP COMMAND + 'SIZE] (RETURN))) - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (FAMILY&SIZE (* set the font family and size) - [SETQ NEWVALUE (LIST (CAR COMMAND) - (CADR COMMAND) - (FONTPROP (fetch (TEXT FONT) of GINDTEXTELT) - 'FACE] - (COND - ((EQ GTYPE 'TEXT) - (create TEXT using GINDTEXTELT FONT _ NEWVALUE)) - (T (create TEXTBOX using GINDTEXTELT FONT _ NEWVALUE)))) - (SAME - - (* set all of the font characteristics from the first selected one.) - - (* set the variables to cause the right things to go into the change spec - event.) - + (NEWFONT (* ; "set the font family") + (CL:UNLESS (SK.CHANGE.FONT SKW ELTWITHTEXT COMMAND) + (RETURN))) + (FAMILY&SIZE (* ; "set the font family and size") + (CL:UNLESS (SK.CHANGE.FONT SKW ELTWITHTEXT (CAR COMMAND) + (CADR COMMAND)) + (RETURN))) + (SAME (* ; + "set all of the font characteristics from the first selected one.") + (* ; + "set the variables to cause the right things to go into the change spec event.") (SETQ OLDVALUE ELTWITHTEXT) (SETQ PROPERTY 'LOOKSAME) (SETQ NEWVALUE (SK.TEXT.ELT.WITH.SAME.FIELDS (fetch (GLOBALPART @@ -5347,11 +5311,8 @@ Click outside the window to stop.") GINDTEXTELT))) (SHOULDNT))) [SETQ NEWGTEXT (COND - [(EQ GTYPE 'TEXT) - - (* adjust the scales at which this appears because font or scale may have - changed.) - + [(EQ GTYPE 'TEXT) (* ; + "adjust the scales at which this appears because font or scale may have changed.") (TEXT.SET.SCALES (create GLOBALPART COMMONGLOBALPART _ (fetch (GLOBALPART COMMONGLOBALPART @@ -5360,11 +5321,8 @@ Click outside the window to stop.") INDIVIDUALGLOBALPART _ (  TEXT.SET.GLOBAL.REGIONS NEWGTEXT] - (T - - (* scaling for text boxes depends on the box size which can't change in this - function.) - + (T (* ; + "scaling for text boxes depends on the box size which can't change in this function.") (create GLOBALPART COMMONGLOBALPART _ (fetch (GLOBALPART COMMONGLOBALPART) of ELTWITHTEXT) @@ -5375,7 +5333,26 @@ Click outside the window to stop.") OLDELT _ ELTWITHTEXT PROPERTY _ PROPERTY NEWVALUE _ NEWVALUE - OLDVALUE _ OLDVALUE]) + OLDVALUE _ OLDVALUE)))]) + +(SK.CHANGE.FONT + [LAMBDA (SKW ELTWITHTEXT FAMILY SIZE FACE) (* ; "Edited 7-Nov-2025 09:09 by rmk") + (LET (NEWFS) + [if (FONTP FAMILY) + then (SETQ NEWFS (FONTPROP FAMILY 'SPEC)) + else (SETQ NEWFS (MAKEFONTSPEC FAMILY SIZE FACE NIL NIL (fetch (TEXT FONT) of GINDTEXTELT) + )) + (CL:UNLESS (FONTCREATE NEWFS NIL NIL NIL NIL T) + (STATUSPRINT SKW " Couldn't find " (fetch (FONTSPEC FSFAMILY) of NEWFS) + " in size " + (fetch (FONTSPEC FSSIZE) of NEWFS)))] + (CL:WHEN NEWFS + (if (EQ (fetch (GLOBALPART GTYPE) of ELTWITHTEXT) + 'TEXT) + then (create TEXT using (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT) + FONT _ NEWFS) + else (create TEXTBOX using (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHTEXT) + FONT _ NEWFS)))]) (TEXT.SET.SCALES [LAMBDA (GTEXTELT) (* rrb "12-May-85 16:29") @@ -5418,321 +5395,188 @@ Click outside the window to stop.") ) (DEFINEQ -(ADD.KNOWN.SKETCH.FONT - [LAMBDA (FAMILY WID DEVICE FONT) (* ; "Edited 10-May-93 16:49 by rmk:") - (* ; "Edited 21-Feb-89 15:06 by snow") - - (* ;; "add to the globally cached font list") - - (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - [LET ((CACHE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES)) - (CACHED)) - (COND - [(NULL CACHE) - (if \KNOWN.SKETCH.FONTSIZES - then [NCONC1 \KNOWN.SKETCH.FONTSIZES (LIST FAMILY (LIST DEVICE (CONS WID FONT] - else (SETQ \KNOWN.SKETCH.FONTSIZES (LIST (LIST FAMILY (LIST DEVICE - (CONS WID FONT] - (T (COND - ((SETQ CACHED (ASSOC DEVICE CACHE)) - (NCONC1 CACHED (CONS WID FONT))) - (T (NCONC1 CACHE (CONS DEVICE (CONS WID FONT] - FONT]) - (SK.PICK.FONT - [LAMBDA (WID STRING DEVICE DISPLAYGFONT) (* ; "Edited 10-May-93 17:11 by rmk:") - (* ; "Edited 22-Feb-89 07:53 by snow") + [LAMBDA (WID STRING DEVICE DISPLAYFONT) (* ; "Edited 6-Nov-2025 10:41 by rmk") + (* ; "Edited 1-Sep-2025 13:02 by rmk") + (* ; "Edited 10-May-93 17:11 by rmk:") + (* ; "Edited 22-Feb-89 07:53 by snow") - (* ;; "returns the font in FAMILY that text should be printed in to have the text STRING fit into a region WID points wide") + (* ;; "RMK 2025: This is weird, and I'm not sure that the original ever worked. It is called from only one place (SK.CHOOSE.TEXT.FONT), with one constant STRING. I believe it is trying to associate with DISPLAYFONT's family a corresponding DEVICE font for which the width of that string would be closest to WID without being larger than that. It caches that font for WID, since that really is just a constant.") + + (* ;; "Returns the font in DISPLAYFONT's family that text should be printed in to have the text STRING fit into a region WID points wide. The value can also be the atom SHADE, if there is no font small enough for STRING.") (DECLARE (GLOBALVARS \KNOWN.SKETCH.FONTSIZES)) - (LET - [STARTFONT FONTWIDTH SCALE CACHEDFONT SIZE (FAMILY (FONTPROP DISPLAYGFONT 'FAMILY] - (IF [SETQ CACHEDFONT (ASSOC WID (ASSOC DEVICE (ASSOC FAMILY \KNOWN.SKETCH.FONTSIZES] - THEN (CDR CACHEDFONT) - ELSE (SETQ STARTFONT (FONTCOPY DISPLAYGFONT 'DEVICE DEVICE)) - NIL - (SETQ SCALE (FONTPROP STARTFONT 'SCALE)) - (SETQ SIZE (FONTPROP STARTFONT 'SIZE)) - [SETQ FONTWIDTH (COND - (SCALE - (* ;; "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH STRING STARTFONT) - SCALE))) - (T (STRINGWIDTH STRING STARTFONT] - [SETQ CACHEDFONT - (IF (IGREATERP FONTWIDTH WID) - THEN - - (* ;; "Font width was too big, try smaller fonts in decreasing size.") - - [FOR FONT IN [CDR (FIND F - ON [SORT (FONTSAVAILABLE FAMILY '* - 'MRR 0 DEVICE T) - (FUNCTION (LAMBDA (F1 F2) - (IGREATERP (CADR F1) - (CADR F2] - SUCHTHAT (EQ SIZE (CADR F] - WHEN (ILESSP [SETQ FONTWIDTH (COND - (SCALE - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH - STRING FONT) - SCALE))) - (T (STRINGWIDTH STRING FONT] - WID) DO (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID - DEVICE FONT)) - FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT - FAMILY WID DEVICE - (IF (GREATERP FONTWIDTH (TIMES 1.5 WID)) - THEN 'SHADE - ELSEIF (OR FONT STARTFONT] - ELSEIF (IEQP FONTWIDTH WID) - THEN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE STARTFONT) - ELSE - - (* ;; "FONT width was too small, try bigger fonts.") - - (FOR FONT PREVFONT - IN [CDR (FIND F ON [SORT (FONTSAVAILABLE FAMILY '* 'MRR 0 DEVICE - T) - (FUNCTION (LAMBDA (F1 F2) - (ILESSP (CADR F1) - (CADR F2] - SUCHTHAT (EQ SIZE (CADR F] - DO (IF (IGREATERP (COND - (SCALE - (* ;; - "IF THERE IS A SCALE, YOU MUST SCALE THE WIDTH.") - - (FIXR (QUOTIENT (STRINGWIDTH STRING FONT - ) - SCALE))) - (T (STRINGWIDTH STRING FONT))) - WID) - THEN (RETURN (ADD.KNOWN.SKETCH.FONT FAMILY WID DEVICE - PREVFONT))) - (SETQ PREVFONT FONT) FINALLY (RETURN (ADD.KNOWN.SKETCH.FONT - FAMILY WID DEVICE - (OR FONT PREVFONT STARTFONT] - (IF (FONTP CACHEDFONT) - THEN (* ; "Could be SHADE") - (FONTCOPY CACHEDFONT 'FACE (FONTPROP DISPLAYGFONT 'FACE)) - ELSE CACHEDFONT]) + (LET ((FAMILY (FONTPROP DISPLAYFONT 'FAMILY)) + STARTFONT FONTWIDTH SCALE CACHEDFONT AVAIL TOOSMALL) + (if (SGETMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID (FONTPROP DISPLAYFONT 'FACE)) + else (SETQ STARTFONT (FONTCOPY DISPLAYFONT 'DEVICE DEVICE)) + (SETQ SCALE (FONTPROP STARTFONT 'SCALE)) + (SETQ FONTWIDTH (STRINGWIDTH STRING STARTFONT)) + (CL:IF SCALE + (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE)))) + (if (IEQP FONTWIDTH WID) + then (PUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID STARTFONT) + else + (* ;; "FONTSAVAILABLE sorts in increasing size order, so our first guess is either after or before the position of STARTFONT in the list. This assumes that the widths are proportional to font sizes.") + + (SETQ TOOSMALL (ILESSP FONTWIDTH WID)) + (SETQ AVAIL (FONTSAVAILABLE (create FONTSPEC using (FONTPROP STARTFONT + 'SPEC) + FSSIZE _ '*) + NIL NIL NIL NIL T)) + + (* ;; + "If STARTFONT width is too big, try smaller fonts, otherwise bigger ones. CDR skips the STARTFONT") + + (for FS FONT (PREVFONT _ STARTFONT) + (PREVWIDTH _ FONTWIDTH) in [CDR (MEMBER (FONTPROP STARTFONT 'SPEC) + (CL:IF TOOSMALL + AVAIL + (REVERSE AVAIL))] + eachtime (SETQ FONT (FONTCREATE FS)) + (SETQ FONTWIDTH (STRINGWIDTH STRING FONT)) + (CL:IF SCALE + (SETQ FONTWIDTH (FIXR (QUOTIENT FONTWIDTH SCALE)))) + until (CL:IF TOOSMALL + (IGREATERP FONTWIDTH WID) + (ILESSP FONTWIDTH WID)) do (SETQ PREVFONT FONT) + (SETQ PREVWIDTH FONTWIDTH) + finally + + (* ;; "We ran over, return the previous") + + (CL:UNLESS TOOSMALL + (CL:WHEN (GREATERP PREVWIDTH (TIMES 1.5 WID)) + (* ; "If we get too small, return SHADE") + (SETQ PREVFONT 'SHADE))) + (SPUTMULTI \KNOWN.SKETCH.FONTSIZES FAMILY DEVICE WID + (FONTPROP DISPLAYFONT 'FACE) + PREVFONT) + (RETURN PREVFONT]) (SK.CHOOSE.TEXT.FONT - [LAMBDA (GTEXT SCALE VIEWER) (* ; "Edited 10-May-93 16:18 by rmk:") - (* ; "Edited 1-Nov-91 16:56 by jds") + [LAMBDA (GTEXT SCALE VIEWER) (* ; "Edited 6-Nov-2025 00:08 by rmk") + (* ; "Edited 10-May-93 16:18 by rmk:") + (* ; "Edited 1-Nov-91 16:56 by jds") - (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.") + (* ;; "returns the font that text in the individual global part of a text or textbox element GTEXT should be displayed in when shown in VIEWER.") (PROG ([VIEWERFONTCACHE (OR (AND (WINDOWP VIEWER) (WINDOWPROP VIEWER 'PICKFONTCACHE)) (AND (STREAMP VIEWER) (STREAMPROP VIEWER 'PICKFONTCACHE] (GFONT (fetch (TEXT FONT) of GTEXT)) - LOCALFONT) + (CANONICALTESTSTR "AWIaiw") + LOCALFONT CANONICALWIDTH DEVICE DISPLAYGFONT) + (CL:WHEN (SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE)) + (* ; "look in the viewer's font cache.") + (RETURN (CDR LOCALFONT))) + [SETQ DEVICE (COND + ((STREAMP VIEWER) + (fetch (IMAGEOPS IMAGETYPE) of (fetch (STREAM IMAGEOPS) of VIEWER))) + (T 'DISPLAY] [COND - ((SETQ LOCALFONT (SASSOC GFONT VIEWERFONTCACHE))(* ; - "look in the viewer's font cache.") - (RETURN (CDR LOCALFONT] - (RETURN (PROG ((CANONICALTESTSTR "AWIaiw") - CANONICALWIDTH DEVICE DISPLAYGFONT) - [SETQ DEVICE (COND - ((STREAMP VIEWER) - (fetch (IMAGEOPS IMFONTCREATE) - of (fetch (STREAM IMAGEOPS) of VIEWER))) - (T 'DISPLAY] - [COND - ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER)) - (fetch (TEXT INITIALSCALE) of GTEXT)) - - (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1") - - (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE))) - (T - (* ;; "use a canonical string to determine the font size so that all strings of a given font at a given scale look the same. If font is determined by the width of the particular string, two different string will appear in different fonts. In particular, the string may change fonts as the user is typing into it.") - - (* ;; "don't use the face information when determining string width because in some cases HELVETICA 10, the bold is smaller than the regular.") - - (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY)) - [SETQ CANONICALWIDTH - (FIXR (QUOTIENT (TIMES [STRINGWIDTH CANONICALTESTSTR - (LIST (FONTPROP DISPLAYGFONT - 'FAMILY) - (FONTPROP DISPLAYGFONT - 'SIZE] - (fetch (TEXT INITIALSCALE) of GTEXT)) - (TIMES SCALE (DSPSCALE NIL VIEWER] - (* ; "calculate the local font.") - (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR - DEVICE DISPLAYGFONT] - [COND - ((WINDOWP VIEWER) - (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) - VIEWERFONTCACHE))) - ((STREAMP VIEWER) - (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) - VIEWERFONTCACHE] - (RETURN LOCALFONT]) + ((EQUAL (TIMES SCALE (DSPSCALE NIL VIEWER)) + (fetch (TEXT INITIALSCALE) of GTEXT)) + + (* ;; "special case scales being the same so there is not a large delay when first character is typed and to avoid font look up problems when hardcopying at scale 1") + + (SETQ LOCALFONT (FONTCREATE GFONT NIL NIL NIL DEVICE))) + (T + (* ;; "Use a canonical string to determine the font size so that all strings of a given font at a given scale look the same. If font is determined by the width of the particular string, two different strings will appear in different fonts. In particular, the string may change fonts as the user is typing into it.") + + (* ;; "The canonical width here is the natural font width having somehow taken into account the scale of the viewer and the initialscale of the text.") + + (SETQ DISPLAYGFONT (FONTCREATE GFONT NIL NIL NIL 'DISPLAY)) + [SETQ CANONICALWIDTH + (FIXR (QUOTIENT (TIMES (STRINGWIDTH CANONICALTESTSTR + (if NIL + then (create FONTSPEC using (FONTPROP DISPLAYGFONT + 'SPEC) + FSFACE _ + (MAKEFONTFACE + 'MEDIUM + 'REGULAR + 'REGULAR)) + else + + (* ;; "Original code didn't use the face information when determining string width because, it said, that in some cases HELVETICA 10, the bold is smaller than the regular. ") + + DISPLAYGFONT)) + (fetch (TEXT INITIALSCALE) of GTEXT)) + (TIMES SCALE (DSPSCALE NIL VIEWER] + (* ; "calculate the local font.") + (SETQ LOCALFONT (SK.PICK.FONT CANONICALWIDTH CANONICALTESTSTR DEVICE DISPLAYGFONT] + [COND + ((WINDOWP VIEWER) + (WINDOWPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) + VIEWERFONTCACHE))) + ((STREAMP VIEWER) + (STREAMPROP VIEWER 'PICKFONTCACHE (CONS (CONS GFONT LOCALFONT) + VIEWERFONTCACHE] + (RETURN LOCALFONT]) (SK.NEXTSIZEFONT - [LAMBDA (WHICHDIR NOWFONT) (* rrb "14-Jul-86 13:43") - - (* returns the next sized font either SMALLER or LARGER that on of size FONT.) + [LAMBDA (WHICHDIR NOWFONT) (* ; "Edited 6-Nov-2025 22:52 by rmk") + (* rrb "14-Jul-86 13:43") - (PROG [(NOWSIZE (FONTPROP NOWFONT 'HEIGHT)) - (DECREASEFONTLST (SK.DECREASING.FONT.LIST (CAR NOWFONT) - 'DISPLAY] - (RETURN (COND - [(EQ WHICHDIR 'LARGER) - (COND - ((IGEQ NOWSIZE (FONTPROP (CAR DECREASEFONTLST) - 'HEIGHT)) (* nothing larger) - NIL) - (T (for FONTTAIL on DECREASEFONTLST - when [AND (CDR FONTTAIL) - (IGEQ NOWSIZE (FONTPROP (CADR FONTTAIL) - 'HEIGHT] - do (RETURN (SK.FONTNAMELIST (CAR FONTTAIL] - (T (for FONT in DECREASEFONTLST when (LESSP (FONTPROP FONT 'HEIGHT) - NOWSIZE) - do (RETURN (SK.FONTNAMELIST FONT]) + (* ;; "Returns the next sized font either SMALLER or LARGER that on of size FONT. This returns FONTSPEC, not font descriptor") + + (* ;; "RMK 2025: The original code tested HEIGHT, but SK.DECREASING.FONT.LIST orders according to SIZE. Presumably correlated, but if they ever got out of whack, this would be wrong. So changed to SIZE.") + + (* ;; "Also, this returns a FONTSPEC, not the font descriptor.") + + (LET [(NOWSIZE (FONTPROP NOWFONT 'SIZE)) + (DECREASEFONTLST (SK.DECREASING.FONT.LIST (FONTPROP NOWFONT 'FAMILY) + 'DISPLAY] + (COND + [(EQ WHICHDIR 'LARGER) + (CL:WHEN (ILESSP NOWSIZE (FONTPROP (CAR DECREASEFONTLST) + 'SIZE)) (* ; "Otherwise, nothing larger") + [for FONTTAIL on DECREASEFONTLST when [AND (CDR FONTTAIL) + (IGEQ NOWSIZE (FONTPROP (CADR FONTTAIL) + 'SIZE] + do (RETURN (FONTPROP (CAR FONTTAIL) + 'SPEC])] + (T (for FONT in DECREASEFONTLST when (LESSP (FONTPROP FONT 'SIZE) + NOWSIZE) + do (RETURN (FONTPROP FONT 'SPEC]) (SK.DECREASING.FONT.LIST - [LAMBDA (FAMILY DEVICETYPE) (* ; - "Edited 12-Oct-92 12:39 by sybalsky:mv:envos") + [LAMBDA (FAMILY DEVICE) (* ; "Edited 6-Nov-2025 17:40 by rmk") + (* ; "Edited 4-Nov-2025 15:34 by rmk") + (* ; + "Edited 12-Oct-92 12:39 by sybalsky:mv:envos") - (* ;; "returns a list of fonts of family FAMILY which work on device DEVICETYPE") + (* ;; "This is used to find the best font for FAMILY on DEVICE that will allow a string to fit in a box, or to find the next larger/smaller font while editing. ") - [COND - ((NULL FAMILY) - (SETQ FAMILY 'MODERN] - - (* ;; "convert to families that exist on the known devices.") - -(* ;;; "NOTE: this is a very bad way to convert the family. It HARDCODES in the conversions for PRESS and INTERPRESS and does nothing for new device types. I have added the conversion for POSTSCRIPT that does things a little cleaner, but it should really look at a property of the device (fontconversions or some such animal.) --was 2/19/89") - - (LET ((CONVERSION)) - [COND - [(EQ DEVICETYPE 'PRESS) - (COND - ((EQ FAMILY 'MODERN) - (SETQ FAMILY 'HELVETICA)) - ((EQ FAMILY 'CLASSIC) - (SETQ FAMILY 'TIMESROMAN)) - ((EQ FAMILY 'TERMINAL) - (SETQ FAMILY 'GACHA] - [(EQ DEVICETYPE 'INTERPRESS) - (COND - ((EQ FAMILY 'HELVETICA) - (SETQ FAMILY 'MODERN)) - ((EQ FAMILY 'TIMESROMAN) - (SETQ FAMILY 'CLASSIC)) - ((EQ FAMILY 'GACHA) - (SETQ FAMILY 'TERMINAL] - ((EQ DEVICETYPE 'POSTSCRIPT) - (if (SETQ CONVERSION (ASSOC FAMILY POSTSCRIPT.FONT.ALIST)) - then + (* ;; "RMK 2025: The original code anticipated the coercions of the PRESS/INTERPRESS/POSTSCRIPT devices, building in e.g. that HELVETICA maps to MODERN on INTERPRESS and not even looking to see if there are any INTERPRESS HELVETICA fonts available or if e.g. INTERPRESS TERMINAL would coerce to MODERN for other sizes. ") - (* ;; - "convert the family here for postscript as well as the other well known devices.") + (* ;; "That is, if FAMILY is TERMINAL for INTERPRESS, this would only return fonts for sizes 6 8 10 12 even though coercions to MODERN might give smaller and bigger sizes.") - (SETQ FAMILY (CDR CONVERSION] - (for FONT in (SK.GUESS.FONTSAVAILABLE FAMILY DEVICETYPE) - collect (FONTCOPY FONT 'DEVICE DEVICETYPE]) + (* ;; "This code looks up all of the possible coercions of the given family to get all possible coerceable sizes, then relies on the related coercions in FONTCREATE to produce FAMILY fonts possibly constructed from data in the files for some other font. E.g. TERMINAL 14 will have the data from MODERN 14.") -(SK.GUESS.FONTSAVAILABLE - [LAMBDA (FAMILY HDCPYTYPE) (* rrb " 9-Oct-85 16:10") - - (* returns a list of all fonts of a FAMILY in decreasing order.) + (* ;; "This is also device independent: should work for HTML (whether or not HTML specifies any CHARCOERCIONS).") - (PROG (FILEFONTS CACHE DISPLAYFONTSIZES) - (SETQ HDCPYTYPE (COND - ((NULL HDCPYTYPE) - (PRINTERTYPE)) - ((NLISTP HDCPYTYPE) - HDCPYTYPE) - (T HDCPYTYPE))) (* cache the file fonts.) - [COND - [[SETQ FILEFONTS (ASSOC HDCPYTYPE (CDR (ASSOC FAMILY \FONTSONFILE] - - (* note if a cache has been calculated. Use it even if it is NIL) - - (* \FONTSONFILE seems to group things such as CLASSICTHIN under CLASSIC so make - sure to remove anything that has the wrong family.) - - (SETQ FILEFONTS (SUBSET (CDR FILEFONTS) - (FUNCTION (LAMBDA (X) - (EQ (CAR X) - FAMILY] - (T (RESETFORM (CURSOR WAITINGCURSOR) - (SETQ FILEFONTS (FONTSAVAILABLE FAMILY '* '(MEDIUM REGULAR REGULAR) NIL - HDCPYTYPE T)) - - (* Since there is no way to determine the real sizes for PRESS fonts with size - of 0 {meaning the widths scale}, guess that they are available in 10) - - [COND - [(EQ HDCPYTYPE 'PRESS) - - (* make sure to look for anything that has a display font.) - - (SETQ DISPLAYFONTSIZES (for FONT - in (FONTSAVAILABLE FAMILY '* - '(MEDIUM REGULAR REGULAR) NIL - 'DISPLAY) collect (CADR FONT))) - (SETQ FILEFONTS - (for FONT in FILEFONTS - join (COND - [(EQ (CADR FONT) - 0) - (for SIZE - in (UNION DISPLAYFONTSIZES - '(36 30 24 18 14 12 10 8 6)) - when (FONTCREATE (CAR FONT) - SIZE NIL NIL 'DISPLAY T) - collect (CONS (CAR FONT) - (CONS SIZE (CDDR FONT] - (T (CONS FONT] - ((EQ HDCPYTYPE 'DISPLAY) - - (* patch around the bug in FONTSAVAILABLE. - Remove after J release.) - - (SETQ FILEFONTS (SUBSET FILEFONTS (FUNCTION (LAMBDA (FONT) - (EQUAL (CADDR FONT) - '(MEDIUM REGULAR - REGULAR] - (* remove duplicates and sort) - [SETQ FILEFONTS (SORT (INTERSECTION FILEFONTS FILEFONTS) - (FUNCTION (LAMBDA (A B) - (GREATERP (CADR A) - (CADR B] - (COND - ((NULL (SETQ CACHE (ASSOC FAMILY \FONTSONFILE))) - (SETQ \FONTSONFILE (CONS (LIST FAMILY (CONS HDCPYTYPE FILEFONTS)) - \FONTSONFILE))) - (T (NCONC1 CACHE (CONS HDCPYTYPE FILEFONTS] - - (* reget the fonts in core since they may have changed since last time.) + (* ;; "Note that FONTSAVAILABLE caches its file lookups and FONTCREATE caches its fonts.") - (RETURN (SORT (UNION (FONTSAVAILABLE FAMILY '* NIL NIL HDCPYTYPE) - FILEFONTS) - (FUNCTION (LAMBDA (A B) - (COND - ((EQ (CADR A) - (CADR B)) - - (* in case both TIMESROMAN and TIMESROMAND for example make it in.) + (CL:UNLESS FAMILY + (SETQ FAMILY 'MODERN)) + (LET ((FAMSPEC (create FONTSPEC + FSFAMILY _ FAMILY + FSSIZE _ '* + FSDEVICE _ DEVICE))) + + (* ;; "Run through all sizes for all the fonts for FAMILY or any of its coercions on DEVICE. This gives us all the possible sizes for FAMILY, we ask FONTCREATE to create a FAMILY font for each of those sizes.") - (ALPHORDER (CADR A) - (CADR B))) - (T (GREATERP (CADR A) - (CADR B]) + (for FS SIZES in (for FS in [CONS FAMSPEC (COERCEFONTSPEC FAMSPEC (FONTDEVICEPROP + DEVICE + 'CHARCOERCIONS] + join (FONTSAVAILABLE FS NIL NIL NIL NIL T)) + do (pushnew SIZES (fetch (FONTSPEC FSSIZE) of FS)) + finally (RETURN (for S in [SORT SIZES (FUNCTION (LAMBDA (S1 S2) + (IGREATERP S1 S2] + collect (FONTCREATE FAMILY S NIL NIL DEVICE]) ) (RPAQ? \KNOWN.SKETCH.FONTSIZES ) @@ -5753,37 +5597,28 @@ Click outside the window to stop.") (DEFINEQ (SK.SET.FONT - [LAMBDA (W NEWFONT) (* rrb " 2-Oct-85 14:55") - - (* sets the entire default font. Used when a sketch stream is created. - or any of the defaults are changed. NEWFONT is a list of - (FAMILY SIZE FACE)) - - (COND - (NEWFONT (COND - ((FONTCREATE NEWFONT NIL NIL NIL NIL T) - - (* clear the cache of looked up fonts. This provides the user a way of clearing - the cache that shouldn't happen too much and is documented.) - - (AND (FASSOC (CAR NEWFONT) - \FONTSONFILE) - (SETQ \FONTSONFILE (for BUCKET in \FONTSONFILE - when (NEQ (CAR BUCKET) - (CAR NEWFONT)) collect BUCKET))) - (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT - )) - (T (STATUSPRINT W (CAR NEWFONT) - " " - (CADR NEWFONT) - " " - (SELECTQ (CAR (CADDR NEWFONT)) - (BOLD 'BOLD) - "") - (SELECTQ (CADR (CADDR NEWFONT)) - (ITALIC 'ITALIC) - "") - " not found"]) + [LAMBDA (W NEWFONT) (* ; "Edited 4-Nov-2025 13:06 by rmk") + (* rrb " 2-Oct-85 14:55") + + (* ;; "Sets the default font. Used when a sketch stream is created. or any of the defaults are changed. NEWFONT is a fontspec") + + (CL:WHEN NEWFONT + (if (FONTCREATE NEWFONT NIL NIL NIL NIL T) + then + (* ;; "Tests to make sure the font exists, but stores the fontspec.") + + (replace (SKETCHCONTEXT SKETCHFONT) of (WINDOWPROP W 'SKETCHCONTEXT) with NEWFONT) + else (STATUSPRINT W (fetch (FONTSPEC FSFAMILY) of NEWFONT) + " " + (fetch (FONTSPEC FSSIZE) of NEWFONT) + " " + (SELECTQ (fetch (FONTFACE WEIGHT) of (fetch (FONTSPEC FSFACE) of NEWFONT)) + (BOLD 'BOLD) + "") + (SELECTQ (fetch (FONTFACE SLOPE) of (fetch (FONTSPEC FSFACE) of NEWFONT)) + (ITALIC 'ITALIC) + "") + " not found")))]) (SK.SET.TEXT.FONT [LAMBDA (W) (* rrb " 4-Oct-85 16:21") @@ -5838,90 +5673,51 @@ Click outside the window to stop.") of SKCONTEXT]) (SK.READFONTSIZE - [LAMBDA (TITLE FONTFAMILY SKW) (* rrb " 6-Nov-85 09:51") - - (* * gets a legal known font size from the user.) - - (* this should have MENUROWS _ 1 when title height bug in menu package gets - fixed.) - - (PROG ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY)) - NEWSIZE) - (COND - ((NULL FONTSIZES) - (GO MORE))) - (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU - TITLE _ (COND - (TITLE) - (FONTFAMILY (CONCAT "new " - FONTFAMILY - " size?")) - (T "New font size?")) - ITEMS _ (CONS '(More 'MORE - "will look on font directories to find more sizes." - ) FONTSIZES) - CENTERFLG _ T))) - (COND - ((NEQ NEWSIZE 'MORE) - (RETURN NEWSIZE))) - MORE - (* do longer search of files) - (SETQ NEWSIZE (SK.COLLECT.FONT.SIZES FONTFAMILY T)) - (COND - ((NULL NEWSIZE) (* could not find any fonts of that - family) - (RETURN NIL)) - ((EQUAL NEWSIZE FONTSIZES) (* not new ones found) - (STATUSPRINT SKW " -No more font sizes found."))) - (RETURN (MENU (create MENU - TITLE _ (OR TITLE "New font size?") - ITEMS _ NEWSIZE - CENTERFLG _ T]) + [LAMBDA (TITLE FONTFAMILY SKW) (* ; "Edited 4-Nov-2025 20:12 by rmk") + (* rrb " 6-Nov-85 09:51") + + (* ;; "Gets a legal known font size from the user.") + (* ; "this should have MENUROWS _ 1 when title height bug in menu package gets fixed. RMK 2025: Is this still an issue?") + (CL:UNLESS TITLE + (SETQ TITLE (CONCAT "New " (OR FONTFAMILY "font") + " size?"))) + (LET ((FONTSIZES (SK.COLLECT.FONT.SIZES FONTFAMILY)) + (NEWSIZE 'MORE)) + (CL:WHEN FONTSIZES + (SETQ NEWSIZE (\CURSOR.IN.MIDDLE.MENU (create MENU + TITLE _ TITLE + ITEMS _ (NCONC1 FONTSIZES + '(More 'MORE + "Look on font-file directories to find more sizes" + )) + CENTERFLG _ T)))) + (CL:WHEN (EQ NEWSIZE 'MORE) (* ; "do longer search of files") + (SETQ FONTSIZES (LDIFFERENCE (SK.COLLECT.FONT.SIZES FONTFAMILY 'ONLY) + FONTSIZES)) + (SETQ NEWSIZE + (if FONTSIZES + then (MENU (create MENU + TITLE _ TITLE + ITEMS _ FONTSIZES + CENTERFLG _ T)) + else (STATUSPRINT SKW " +No more font sizes found.") + NIL))) + NEWSIZE]) (SK.COLLECT.FONT.SIZES - [LAMBDA (FAMILY FILESTOOFLG) (* rrb " 2-Oct-85 10:43") - - (* collects all of the sizes that are known. - If FAMILY is given, gets just those sizes.) + [LAMBDA (FAMILY FILESTOOFLG) (* ; "Edited 4-Nov-2025 20:02 by rmk") + (* rrb " 2-Oct-85 10:43") - (PROG (INCORESIZES FILESIZES) - [COND - [FAMILY (for TYPEBUCKET in (CDR (FASSOC FAMILY \FONTSONFILE)) - do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT) - INCORESIZES) - (SETQ INCORESIZES - (CONS (CADR FFONT) - INCORESIZES] - (T (* look at all fonts) - (for FAMILYBUCKET in \FONTSONFILE - do (for TYPEBUCKET in (CDR FAMILYBUCKET) - do (for FFONT in (CDR TYPEBUCKET) do (OR (MEMB (CADR FFONT) - INCORESIZES) - (SETQ INCORESIZES - (CONS (CADR FFONT) - INCORESIZES] - (RETURN (SORT (UNION INCORESIZES - (COND - [FILESTOOFLG - - (* wants those on files too, Flip the cursor to note wait.) - - (RESETFORM (CURSOR WAITINGCURSOR) - (bind SIZES for FONT - in (FONTSAVAILABLE (OR FAMILY '*) - '* NIL NIL 'DISPLAY T) - do (OR (MEMB (FONTPROP FONT 'SIZE) - SIZES) - (SETQ SIZES (CONS (FONTPROP FONT 'SIZE) - SIZES))) - finally (RETURN SIZES] - (T (bind SIZES for FONT in (FONTSAVAILABLE (OR FAMILY '*) - '* NIL NIL 'DISPLAY FILESTOOFLG) - do (OR (MEMB (FONTPROP FONT 'SIZE) - SIZES) - (SETQ SIZES (CONS (FONTPROP FONT 'SIZE) - SIZES))) finally (RETURN SIZES]) + (* ;; "Collects all of the sizes that are known. If FAMILY is given, gets just those sizes.") + + (* ;; "RMK: Original code seemed confused. The \FONTSONFILE variable (set originally only by SK.GUESS.FONTSAVAILBLE in the call from SK.DECREASING.FONT.LIST) maintained a cache just of the fonts that had already been looked up for particular families and particular devices. But then it called FONTSAVAILABLE only for the DISPLAY device.") + + (for FS SIZES in (FONTSAVAILABLE (OR FAMILY '*) + '* NIL NIL 'DISPLAY FILESTOOFLG) do (pushnew SIZES (fetch (FONTSPEC + FSSIZE) + of FS)) + finally (RETURN (SORT SIZES]) (SK.SET.TEXT.VERT.ALIGN [LAMBDA (SKW NEWALIGN) (* rrb " 6-Nov-85 09:52") @@ -6058,8 +5854,6 @@ No more font sizes found."))) (RPAQ? SK.DEFAULT.TEXT.ALIGNMENT '(CENTER BASELINE)) -(RPAQ? \FONTSONFILE NIL) - (ADDTOVAR SK.HORIZONTAL.STYLES LEFT RIGHT CENTER) (ADDTOVAR SK.VERTICAL.STYLES TOP CENTER BASELINE BOTTOM) @@ -9280,137 +9074,136 @@ No more font sizes found."))) (fetch (REGION TOP) of REGION]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (14510 24920 (INIT.SKETCH.ELEMENTS 14520 . 22083) (CREATE.SKETCH.ELEMENT.TYPE 22085 . -23607) (SKETCH.ELEMENT.TYPEP 23609 . 23997) (SKETCH.ELEMENT.NAMEP 23999 . 24262) ( -\CURSOR.IN.MIDDLE.MENU 24264 . 24918)) (24961 25638 (SKETCHINCOLORP 24971 . 25291) (READ.COLOR.CHANGE -25293 . 25636)) (26147 28926 (SK.CREATE.DEFAULT.FILLING 26157 . 26458) (SKFILLINGP 26460 . 27093) ( -SK.INSURE.FILLING 27095 . 28523) (SK.INSURE.COLOR 28525 . 28924)) (28927 34537 (SK.TRANSLATE.MODE -28937 . 29719) (SK.CHANGE.FILLING.MODE 29721 . 33304) (READ.FILLING.MODE 33306 . 34535)) (34538 65212 -(SKETCH.CREATE.CIRCLE 34548 . 35360) (CIRCLE.EXPANDFN 35362 . 38734) (CIRCLE.DRAWFN 38736 . 41737) ( -\CIRCLE.DRAWFN1 41739 . 44334) (CIRCLE.INPUTFN 44336 . 46185) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46187 . -46546) (SK.READ.CIRCLE.POINT 46548 . 47019) (SK.SHOW.CIRCLE 47021 . 47667) (CIRCLE.INSIDEFN 47669 . -47934) (CIRCLE.REGIONFN 47936 . 49617) (CIRCLE.GLOBALREGIONFN 49619 . 51137) (CIRCLE.TRANSLATE 51139 - . 53000) (CIRCLE.READCHANGEFN 53002 . 57618) (CIRCLE.TRANSFORMFN 57620 . 59473) (CIRCLE.TRANSLATEPTS -59475 . 61089) (SK.CIRCLE.CREATE 61091 . 61934) (SET.CIRCLE.SCALE 61936 . 62702) (SK.BRUSH.READCHANGE -62704 . 65210)) (65213 65942 (SK.INSURE.BRUSH 65223 . 65617) (SK.INSURE.DASHING 65619 . 65940)) (67156 - 96650 (SKETCH.CREATE.ELLIPSE 67166 . 67765) (ELLIPSE.EXPANDFN 67767 . 71379) (ELLIPSE.DRAWFN 71381 . -75558) (ELLIPSE.INPUTFN 75560 . 78000) (SK.READ.ELLIPSE.MAJOR.PT 78002 . 78581) ( -SK.SHOW.ELLIPSE.MAJOR.RADIUS 78583 . 79338) (SK.READ.ELLIPSE.MINOR.PT 79340 . 80033) ( -SK.SHOW.ELLIPSE.MINOR.RADIUS 80035 . 80867) (ELLIPSE.INSIDEFN 80869 . 81139) (ELLIPSE.CREATE 81141 . -82516) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82518 . 82886) (ELLIPSE.REGIONFN 82888 . 85088) ( -ELLIPSE.GLOBALREGIONFN 85090 . 86903) (ELLIPSE.TRANSLATEFN 86905 . 89451) (ELLIPSE.TRANSFORMFN 89453 - . 90730) (ELLIPSE.TRANSLATEPTS 90732 . 92773) (MARK.SPOT 92775 . 94026) (DISTANCEBETWEEN 94028 . -94623) (SK.DISTANCE.TO 94625 . 95010) (SQUARE 95012 . 95054) (COMPUTE.ELLIPSE.ORIENTATION 95056 . -95775) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95777 . 96648)) (97763 138819 (SKETCH.CREATE.OPEN.CURVE -97773 . 98326) (OPENCURVE.INPUTFN 98328 . 99196) (SK.CURVE.CREATE 99198 . 100943) (MAXXEXTENT 100945 - . 101804) (MAXYEXTENT 101806 . 102666) (KNOT.SET.SCALE.FIELD 102668 . 103470) (OPENCURVE.DRAWFN -103472 . 104603) (OPENCURVE.EXPANDFN 104605 . 107920) (OPENCURVE.READCHANGEFN 107922 . 111124) ( -OPENCURVE.TRANSFORMFN 111126 . 113624) (OPENCURVE.TRANSLATEFN 113626 . 114048) ( -OPENCURVE.TRANSLATEPTSFN 114050 . 115431) (SKETCH.CREATE.CLOSED.CURVE 115433 . 115939) ( -CLOSEDCURVE.DRAWFN 115941 . 116725) (CLOSEDCURVE.EXPANDFN 116727 . 119840) (CLOSEDCURVE.REGIONFN -119842 . 120639) (CLOSEDCURVE.GLOBALREGIONFN 120641 . 122074) (READ.LIST.OF.POINTS 122076 . 124055) ( -CLOSEDCURVE.INPUTFN 124057 . 124702) (CLOSEDCURVE.READCHANGEFN 124704 . 127599) ( -CLOSEDCURVE.TRANSFORMFN 127601 . 129401) (CLOSEDCURVE.TRANSLATEPTSFN 129403 . 130748) (INVISIBLEPARTP -130750 . 131103) (SHOWSKETCHPOINT 131105 . 131410) (SHOWSKETCHXY 131412 . 131930) (KNOTS.REGIONFN -131932 . 132833) (OPENWIRE.GLOBALREGIONFN 132835 . 133699) (CURVE.REGIONFN 133701 . 134642) ( -OPENCURVE.GLOBALREGIONFN 134644 . 136051) (KNOTS.TRANSLATEFN 136053 . 137096) (REGION.CONTAINING.PTS -137098 . 138817)) (138820 161096 (CHANGE.ELTS.BRUSH.SIZE 138830 . 139440) (CHANGE.ELTS.BRUSH 139442 . -139959) (CHANGE.ELTS.BRUSH.SHAPE 139961 . 140362) (SK.CHANGE.BRUSH.SHAPE 140364 . 143876) ( -SK.CHANGE.BRUSH.COLOR 143878 . 148324) (SK.CHANGE.BRUSH.SIZE 148326 . 153284) (SK.CHANGE.ANGLE 153286 - . 156266) (SK.CHANGE.ARC.DIRECTION 156268 . 158647) (SK.SET.DEFAULT.BRUSH.SIZE 158649 . 159348) ( -READSIZECHANGE 159350 . 161094)) (161097 162716 (SK.CHANGE.ELEMENT.KNOTS 161107 . 162714)) (162717 -163364 (SK.INSURE.POINT.LIST 162727 . 163180) (SK.INSURE.POSITION 163182 . 163362)) (164732 197055 ( -SKETCH.CREATE.WIRE 164742 . 165232) (CLOSEDWIRE.EXPANDFN 165234 . 167922) (KNOTS.INSIDEFN 167924 . -168645) (OPEN.WIRE.DRAWFN 168647 . 169239) (WIRE.EXPANDFN 169241 . 172488) ( -SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172490 . 173011) (OPENWIRE.READCHANGEFN 173013 . 175506) ( -OPENWIRE.TRANSFORMFN 175508 . 177631) (OPENWIRE.TRANSLATEFN 177633 . 178057) (OPENWIRE.TRANSLATEPTSFN -178059 . 179338) (WIRE.INPUTFN 179340 . 180971) (SK.READ.WIRE.POINTS 180973 . 181504) ( -SK.READ.POINTS.WITH.FEEDBACK 181506 . 184273) (OPENWIRE.FEEDBACKFN 184275 . 185029) ( -CLOSEDWIRE.FEEDBACKFN 185031 . 186387) (CLOSEDWIRE.REGIONFN 186389 . 187374) ( -CLOSEDWIRE.GLOBALREGIONFN 187376 . 188428) (SK.WIRE.CREATE 188430 . 190193) (WIRE.ADD.POINT.TO.END -190195 . 191111) (READ.ARROW.CHANGE 191113 . 196589) (CHANGE.ELTS.ARROWHEADS 196591 . 197053)) (197056 - 208062 (SKETCH.CREATE.CLOSED.WIRE 197066 . 197627) (CLOSED.WIRE.INPUTFN 197629 . 197984) ( -CLOSED.WIRE.DRAWFN 197986 . 200031) (CLOSEDWIRE.READCHANGEFN 200033 . 204938) (CLOSEDWIRE.TRANSFORMFN -204940 . 206734) (CLOSEDWIRE.TRANSLATEPTSFN 206736 . 208060)) (208063 260769 (SK.EXPAND.ARROWHEADS -208073 . 208423) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208425 . 209806) (ARC.ARROWHEAD.POINTS 209808 . -211031) (SET.ARC.ARROWHEAD.POINTS 211033 . 212014) (SET.OPENCURVE.ARROWHEAD.POINTS 212016 . 212917) ( -SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212919 . 214189) (SET.WIRE.ARROWHEAD.POINTS 214191 . 214944) ( -SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214946 . 216211) (SK.EXPAND.ARROWHEAD 216213 . 217396) (CHANGED.ARROW - 217398 . 220570) (SK.CHANGE.ARROWHEAD 220572 . 221025) (SK.CHANGE.ARROWHEAD1 221027 . 226282) ( -SK.CREATE.ARROWHEAD 226284 . 226804) (SK.ARROWHEAD.CREATE 226806 . 228380) (SK.ARROWHEAD.END.TEST -228382 . 229306) (READ.ARROWHEAD.END 229308 . 231333) (ARROW.HEAD.POSITIONS 231335 . 233175) ( -ARROWHEAD.POINTS.LIST 233177 . 237149) (CURVE.ARROWHEAD.POINTS 237151 . 238014) (LEFT.MOST.IS.BEGINP -238016 . 238897) (WIRE.ARROWHEAD.POINTS 238899 . 240425) (DRAWARROWHEADS 240427 . 242797) ( -\SK.DRAW.TRIANGLE.ARROWHEAD 242799 . 244459) (\SK.ENDPT.OF.ARROW 244461 . 246718) ( -\SK.ADJUST.FOR.ARROWHEADS 246720 . 249225) (SK.SET.ARROWHEAD.LENGTH 249227 . 250371) ( -SK.SET.ARROWHEAD.ANGLE 250373 . 251469) (SK.SET.ARROWHEAD.TYPE 251471 . 254760) (SK.SET.LINE.ARROWHEAD - 254762 . 257175) (SK.UPDATE.ARROWHEAD.FORMAT 257177 . 259287) (SK.SET.LINE.LENGTH.MODE 259289 . -260767)) (260770 262571 (SK.INSURE.ARROWHEADS 260780 . 261962) (SK.ARROWHEADP 261964 . 262569)) ( -265368 327694 (SKETCH.CREATE.TEXT 265378 . 265892) (TEXT.CHANGEFN 265894 . 266286) (TEXT.READCHANGEFN -266288 . 274359) (\SK.READ.FONT.SIZE1 274361 . 276257) (SK.TEXT.ELT.WITH.SAME.FIELDS 276259 . 277899) -(SK.READFONTFAMILY 277901 . 279447) (CLOSE.PROMPT.WINDOW 279449 . 279873) (TEXT.DRAWFN 279875 . 280596 -) (TEXT.DRAWFN1 280598 . 284100) (TEXT.INSIDEFN 284102 . 284491) (TEXT.EXPANDFN 284493 . 286618) ( -SK.TEXT.LINE.REGIONS 286620 . 288494) (TEXT.UPDATE.GLOBAL.REGIONS 288496 . 289728) (REL.MOVE.REGION -289730 . 290267) (LTEXT.LINE.REGIONS 290269 . 293687) (TEXT.INPUTFN 293689 . 294199) (READ.TEXT 294201 - . 294949) (TEXT.POSITION.AND.CREATE 294951 . 297262) (CREATE.TEXT.ELEMENT 297264 . 298082) ( -SK.UPDATE.TEXT.AFTER.CHANGE 298084 . 298486) (SK.TEXT.FROM.TEXTBOX 298488 . 302294) ( -TEXT.SET.GLOBAL.REGIONS 302296 . 303589) (TEXT.REGIONFN 303591 . 304361) (TEXT.GLOBALREGIONFN 304363 - . 305051) (TEXT.TRANSLATEFN 305053 . 306368) (TEXT.TRANSFORMFN 306370 . 307493) (TEXT.TRANSLATEPTSFN -307495 . 308012) (TEXT.UPDATEFN 308014 . 312670) (SK.CHANGE.TEXT 312672 . 325760) (TEXT.SET.SCALES -325762 . 326730) (BREAK.AT.CARRIAGE.RETURNS 326732 . 327692)) (327695 346219 (ADD.KNOWN.SKETCH.FONT -327705 . 328696) (SK.PICK.FONT 328698 . 334230) (SK.CHOOSE.TEXT.FONT 334232 . 338180) (SK.NEXTSIZEFONT - 338182 . 339449) (SK.DECREASING.FONT.LIST 339451 . 341324) (SK.GUESS.FONTSAVAILABLE 341326 . 346217)) - (346638 360781 (SK.SET.FONT 346648 . 348215) (SK.SET.TEXT.FONT 348217 . 349219) (SK.SET.TEXT.SIZE -349221 . 349908) (SK.SET.TEXT.HORIZ.ALIGN 349910 . 351484) (SK.READFONTSIZE 351486 . 353716) ( -SK.COLLECT.FONT.SIZES 353718 . 356636) (SK.SET.TEXT.VERT.ALIGN 356638 . 358680) (SK.SET.TEXT.LOOKS -358682 . 360139) (SK.SET.DEFAULT.TEXT.FACE 360141 . 360779)) (360782 361368 (CREATE.SKETCH.TERMTABLE -360792 . 361366)) (361369 363135 (SK.FONT.LIST 361379 . 361705) (SK.INSURE.FONT 361707 . 362229) ( -SK.INSURE.STYLE 362231 . 362749) (SK.INSURE.TEXT 362751 . 363133)) (363705 420998 ( -SKETCH.CREATE.TEXTBOX 363715 . 365357) (SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 365359 . 367436) ( -SK.BREAK.INTO.LINES 367438 . 378624) (SK.BRUSH.SIZE 378626 . 379007) (SK.TEXTBOX.CREATE 379009 . -379806) (SK.TEXTBOX.CREATE1 379808 . 380872) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 380874 . 381414) ( -SK.TEXTBOX.POSITION.IN.BOX 381416 . 383327) (TEXTBOX.CHANGEFN 383329 . 383803) (TEXTBOX.DRAWFN 383805 - . 385841) (SK.TEXTURE.AROUND.REGIONS 385843 . 391916) (ALL.EMPTY.REGIONS 391918 . 392408) ( -TEXTBOX.EXPANDFN 392410 . 399566) (TEXTBOX.INPUTFN 399568 . 401181) (TEXTBOX.INSIDEFN 401183 . 401596) - (TEXTBOX.REGIONFN 401598 . 402452) (TEXTBOX.GLOBALREGIONFN 402454 . 402782) ( -TEXTBOX.SET.GLOBAL.REGIONS 402784 . 404115) (TEXTBOX.TRANSLATEFN 404117 . 405958) ( -TEXTBOX.TRANSLATEPTSFN 405960 . 408743) (TEXTBOX.TRANSFORMFN 408745 . 410413) (TEXTBOX.UPDATEFN 410415 - . 412308) (TEXTBOX.READCHANGEFN 412310 . 417199) (SK.TEXTBOX.TEXT.POSITION 417201 . 417622) ( -SK.TEXTBOX.FROM.TEXT 417624 . 420229) (ADD.EOLS 420231 . 420996)) (421527 425028 ( -SK.SET.TEXTBOX.VERT.ALIGN 421537 . 423417) (SK.SET.TEXTBOX.HORIZ.ALIGN 423419 . 425026)) (425411 -469886 (SKETCH.CREATE.BOX 425421 . 425904) (SK.BOX.DRAWFN 425906 . 427065) (BOX.DRAWFN1 427067 . -429906) (KNOTS.OF.REGION 429908 . 431142) (SK.DRAWAREABOX 431144 . 437745) (SK.DRAWBOX 437747 . 438936 -) (SK.BOX.EXPANDFN 438938 . 442686) (SK.BOX.GETREGIONFN 442688 . 443874) (BOX.SET.SCALES 443876 . -445116) (SK.BOX.INPUTFN 445118 . 447051) (SK.BOX.CREATE 447053 . 447754) (SK.UPDATE.BOX.AFTER.CHANGE -447756 . 448267) (SK.BOX.INSIDEFN 448269 . 448659) (SK.BOX.REGIONFN 448661 . 449374) ( -SK.BOX.GLOBALREGIONFN 449376 . 450114) (SK.BOX.READCHANGEFN 450116 . 453837) (SK.CHANGE.FILLING 453839 - . 457787) (SK.CHANGE.FILLING.COLOR 457789 . 461445) (SK.BOX.TRANSLATEFN 461447 . 462626) ( -SK.BOX.TRANSFORMFN 462628 . 463573) (SK.BOX.TRANSLATEPTSFN 463575 . 465943) (UNSCALE.REGION.TO.GRID -465945 . 466870) (INCREASEREGION 466872 . 467463) (INSUREREGIONSIZE 467465 . 468636) (EXPANDREGION -468638 . 469518) (REGION.FROM.COORDINATES 469520 . 469884)) (470422 496777 (SKETCH.CREATE.ARC 470432 - . 471241) (ARC.DRAWFN 471243 . 472970) (ARC.EXPANDFN 472972 . 475305) (ARC.INPUTFN 475307 . 479525) ( -SK.INVERT.CIRCLE 479527 . 480387) (SK.READ.ARC.ANGLE.POINT 480389 . 480896) (SK.SHOW.ARC 480898 . -481508) (ARC.CREATE 481510 . 482865) (SK.UPDATE.ARC.AFTER.CHANGE 482867 . 483207) (ARC.MOVEFN 483209 - . 484792) (ARC.TRANSLATEPTS 484794 . 486679) (ARC.INSIDEFN 486681 . 486931) (ARC.REGIONFN 486933 . -488069) (ARC.GLOBALREGIONFN 488071 . 489793) (ARC.TRANSLATE 489795 . 490777) (ARC.TRANSFORMFN 490779 - . 493729) (ARC.READCHANGEFN 493731 . 496775)) (496778 505857 (SK.COMPUTE.ARC.ANGLE.PT 496788 . 497714 -) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 497716 . 498709) (SK.COMPUTE.ARC.PTS 498711 . 502283) ( -SK.SET.ARC.DIRECTION 502285 . 502859) (SK.SET.ARC.DIRECTION.CW 502861 . 503035) ( -SK.SET.ARC.DIRECTION.CCW 503037 . 503310) (SK.COMPUTE.SLOPE.OF.LINE 503312 . 503804) ( -SK.CREATE.ARC.USING 503806 . 505043) (SET.ARC.SCALES 505045 . 505855)) (505858 506303 ( -SK.INSURE.DIRECTION 505868 . 506301)) (507674 553533 (GETSKETCHELEMENTPROP 507684 . 508992) ( -\SK.GET.ARC.ANGLEPT 508994 . 509555) (\GETSKETCHELEMENTPROP1 509557 . 509811) (\SK.GET.BRUSH 509813 . -510737) (\SK.GET.FILLING 510739 . 511837) (\SK.GET.ARROWHEADS 511839 . 512618) (\SK.GET.FONT 512620 . -513100) (\SK.GET.JUSTIFICATION 513102 . 513626) (\SK.GET.DIRECTION 513628 . 514105) (\SK.GET.DASHING -514107 . 515126) (PUTSKETCHELEMENTPROP 515128 . 517397) (\SK.PUT.FILLING 517399 . 518669) ( -ADDSKETCHELEMENTPROP 518671 . 519476) (REMOVESKETCHELEMENTPROP 519478 . 520267) (\SK.PUT.FONT 520269 - . 521083) (\SK.PUT.JUSTIFICATION 521085 . 522096) (\SK.PUT.DIRECTION 522098 . 522705) ( -\SK.PUT.DASHING 522707 . 524042) (\SK.PUT.BRUSH 524044 . 525963) (\SK.PUT.ARROWHEADS 525965 . 527931) -(SK.COPY.ELEMENT.PROPERTY.LIST 527933 . 528509) (SKETCH.UPDATE 528511 . 529241) (SKETCH.UPDATE1 529243 - . 530531) (\SKELT.GET.SCALE 530533 . 531521) (\SKELT.PUT.SCALE 531523 . 532830) (\SKELT.PUT.DATA -532832 . 534629) (SK.REPLACE.TEXT.IN.ELEMENT 534631 . 535584) (\SKELT.GET.DATA 535586 . 536653) ( -\SK.GET.1STCONTROLPT 536655 . 538167) (\SK.PUT.1STCONTROLPT 538169 . 543642) (\SK.GET.2NDCONTROLPT -543644 . 544559) (\SK.PUT.2NDCONTROLPT 544561 . 548749) (\SK.GET.3RDCONTROLPT 548751 . 549629) ( -\SK.PUT.3RDCONTROLPT 549631 . 553531)) (553534 554115 (LOWERLEFTCORNER 553544 . 553790) ( -UPPERRIGHTCORNER 553792 . 554113))))) + (FILEMAP (NIL (14485 24895 (INIT.SKETCH.ELEMENTS 14495 . 22058) (CREATE.SKETCH.ELEMENT.TYPE 22060 . +23582) (SKETCH.ELEMENT.TYPEP 23584 . 23972) (SKETCH.ELEMENT.NAMEP 23974 . 24237) ( +\CURSOR.IN.MIDDLE.MENU 24239 . 24893)) (24936 25613 (SKETCHINCOLORP 24946 . 25266) (READ.COLOR.CHANGE +25268 . 25611)) (26122 28901 (SK.CREATE.DEFAULT.FILLING 26132 . 26433) (SKFILLINGP 26435 . 27068) ( +SK.INSURE.FILLING 27070 . 28498) (SK.INSURE.COLOR 28500 . 28899)) (28902 34512 (SK.TRANSLATE.MODE +28912 . 29694) (SK.CHANGE.FILLING.MODE 29696 . 33279) (READ.FILLING.MODE 33281 . 34510)) (34513 65187 +(SKETCH.CREATE.CIRCLE 34523 . 35335) (CIRCLE.EXPANDFN 35337 . 38709) (CIRCLE.DRAWFN 38711 . 41712) ( +\CIRCLE.DRAWFN1 41714 . 44309) (CIRCLE.INPUTFN 44311 . 46160) (SK.UPDATE.CIRCLE.AFTER.CHANGE 46162 . +46521) (SK.READ.CIRCLE.POINT 46523 . 46994) (SK.SHOW.CIRCLE 46996 . 47642) (CIRCLE.INSIDEFN 47644 . +47909) (CIRCLE.REGIONFN 47911 . 49592) (CIRCLE.GLOBALREGIONFN 49594 . 51112) (CIRCLE.TRANSLATE 51114 + . 52975) (CIRCLE.READCHANGEFN 52977 . 57593) (CIRCLE.TRANSFORMFN 57595 . 59448) (CIRCLE.TRANSLATEPTS +59450 . 61064) (SK.CIRCLE.CREATE 61066 . 61909) (SET.CIRCLE.SCALE 61911 . 62677) (SK.BRUSH.READCHANGE +62679 . 65185)) (65188 65917 (SK.INSURE.BRUSH 65198 . 65592) (SK.INSURE.DASHING 65594 . 65915)) (67131 + 96625 (SKETCH.CREATE.ELLIPSE 67141 . 67740) (ELLIPSE.EXPANDFN 67742 . 71354) (ELLIPSE.DRAWFN 71356 . +75533) (ELLIPSE.INPUTFN 75535 . 77975) (SK.READ.ELLIPSE.MAJOR.PT 77977 . 78556) ( +SK.SHOW.ELLIPSE.MAJOR.RADIUS 78558 . 79313) (SK.READ.ELLIPSE.MINOR.PT 79315 . 80008) ( +SK.SHOW.ELLIPSE.MINOR.RADIUS 80010 . 80842) (ELLIPSE.INSIDEFN 80844 . 81114) (ELLIPSE.CREATE 81116 . +82491) (SK.UPDATE.ELLIPSE.AFTER.CHANGE 82493 . 82861) (ELLIPSE.REGIONFN 82863 . 85063) ( +ELLIPSE.GLOBALREGIONFN 85065 . 86878) (ELLIPSE.TRANSLATEFN 86880 . 89426) (ELLIPSE.TRANSFORMFN 89428 + . 90705) (ELLIPSE.TRANSLATEPTS 90707 . 92748) (MARK.SPOT 92750 . 94001) (DISTANCEBETWEEN 94003 . +94598) (SK.DISTANCE.TO 94600 . 94985) (SQUARE 94987 . 95029) (COMPUTE.ELLIPSE.ORIENTATION 95031 . +95750) (SK.COMPUTE.ELLIPSE.MINOR.RADIUS.PT 95752 . 96623)) (97738 138794 (SKETCH.CREATE.OPEN.CURVE +97748 . 98301) (OPENCURVE.INPUTFN 98303 . 99171) (SK.CURVE.CREATE 99173 . 100918) (MAXXEXTENT 100920 + . 101779) (MAXYEXTENT 101781 . 102641) (KNOT.SET.SCALE.FIELD 102643 . 103445) (OPENCURVE.DRAWFN +103447 . 104578) (OPENCURVE.EXPANDFN 104580 . 107895) (OPENCURVE.READCHANGEFN 107897 . 111099) ( +OPENCURVE.TRANSFORMFN 111101 . 113599) (OPENCURVE.TRANSLATEFN 113601 . 114023) ( +OPENCURVE.TRANSLATEPTSFN 114025 . 115406) (SKETCH.CREATE.CLOSED.CURVE 115408 . 115914) ( +CLOSEDCURVE.DRAWFN 115916 . 116700) (CLOSEDCURVE.EXPANDFN 116702 . 119815) (CLOSEDCURVE.REGIONFN +119817 . 120614) (CLOSEDCURVE.GLOBALREGIONFN 120616 . 122049) (READ.LIST.OF.POINTS 122051 . 124030) ( +CLOSEDCURVE.INPUTFN 124032 . 124677) (CLOSEDCURVE.READCHANGEFN 124679 . 127574) ( +CLOSEDCURVE.TRANSFORMFN 127576 . 129376) (CLOSEDCURVE.TRANSLATEPTSFN 129378 . 130723) (INVISIBLEPARTP +130725 . 131078) (SHOWSKETCHPOINT 131080 . 131385) (SHOWSKETCHXY 131387 . 131905) (KNOTS.REGIONFN +131907 . 132808) (OPENWIRE.GLOBALREGIONFN 132810 . 133674) (CURVE.REGIONFN 133676 . 134617) ( +OPENCURVE.GLOBALREGIONFN 134619 . 136026) (KNOTS.TRANSLATEFN 136028 . 137071) (REGION.CONTAINING.PTS +137073 . 138792)) (138795 161071 (CHANGE.ELTS.BRUSH.SIZE 138805 . 139415) (CHANGE.ELTS.BRUSH 139417 . +139934) (CHANGE.ELTS.BRUSH.SHAPE 139936 . 140337) (SK.CHANGE.BRUSH.SHAPE 140339 . 143851) ( +SK.CHANGE.BRUSH.COLOR 143853 . 148299) (SK.CHANGE.BRUSH.SIZE 148301 . 153259) (SK.CHANGE.ANGLE 153261 + . 156241) (SK.CHANGE.ARC.DIRECTION 156243 . 158622) (SK.SET.DEFAULT.BRUSH.SIZE 158624 . 159323) ( +READSIZECHANGE 159325 . 161069)) (161072 162691 (SK.CHANGE.ELEMENT.KNOTS 161082 . 162689)) (162692 +163339 (SK.INSURE.POINT.LIST 162702 . 163155) (SK.INSURE.POSITION 163157 . 163337)) (164707 197030 ( +SKETCH.CREATE.WIRE 164717 . 165207) (CLOSEDWIRE.EXPANDFN 165209 . 167897) (KNOTS.INSIDEFN 167899 . +168620) (OPEN.WIRE.DRAWFN 168622 . 169214) (WIRE.EXPANDFN 169216 . 172463) ( +SK.UPDATE.WIRE.ELT.AFTER.CHANGE 172465 . 172986) (OPENWIRE.READCHANGEFN 172988 . 175481) ( +OPENWIRE.TRANSFORMFN 175483 . 177606) (OPENWIRE.TRANSLATEFN 177608 . 178032) (OPENWIRE.TRANSLATEPTSFN +178034 . 179313) (WIRE.INPUTFN 179315 . 180946) (SK.READ.WIRE.POINTS 180948 . 181479) ( +SK.READ.POINTS.WITH.FEEDBACK 181481 . 184248) (OPENWIRE.FEEDBACKFN 184250 . 185004) ( +CLOSEDWIRE.FEEDBACKFN 185006 . 186362) (CLOSEDWIRE.REGIONFN 186364 . 187349) ( +CLOSEDWIRE.GLOBALREGIONFN 187351 . 188403) (SK.WIRE.CREATE 188405 . 190168) (WIRE.ADD.POINT.TO.END +190170 . 191086) (READ.ARROW.CHANGE 191088 . 196564) (CHANGE.ELTS.ARROWHEADS 196566 . 197028)) (197031 + 208037 (SKETCH.CREATE.CLOSED.WIRE 197041 . 197602) (CLOSED.WIRE.INPUTFN 197604 . 197959) ( +CLOSED.WIRE.DRAWFN 197961 . 200006) (CLOSEDWIRE.READCHANGEFN 200008 . 204913) (CLOSEDWIRE.TRANSFORMFN +204915 . 206709) (CLOSEDWIRE.TRANSLATEPTSFN 206711 . 208035)) (208038 260744 (SK.EXPAND.ARROWHEADS +208048 . 208398) (SK.COMPUTE.ARC.ARROWHEAD.POINTS 208400 . 209781) (ARC.ARROWHEAD.POINTS 209783 . +211006) (SET.ARC.ARROWHEAD.POINTS 211008 . 211989) (SET.OPENCURVE.ARROWHEAD.POINTS 211991 . 212892) ( +SK.COMPUTE.CURVE.ARROWHEAD.POINTS 212894 . 214164) (SET.WIRE.ARROWHEAD.POINTS 214166 . 214919) ( +SK.COMPUTE.WIRE.ARROWHEAD.POINTS 214921 . 216186) (SK.EXPAND.ARROWHEAD 216188 . 217371) (CHANGED.ARROW + 217373 . 220545) (SK.CHANGE.ARROWHEAD 220547 . 221000) (SK.CHANGE.ARROWHEAD1 221002 . 226257) ( +SK.CREATE.ARROWHEAD 226259 . 226779) (SK.ARROWHEAD.CREATE 226781 . 228355) (SK.ARROWHEAD.END.TEST +228357 . 229281) (READ.ARROWHEAD.END 229283 . 231308) (ARROW.HEAD.POSITIONS 231310 . 233150) ( +ARROWHEAD.POINTS.LIST 233152 . 237124) (CURVE.ARROWHEAD.POINTS 237126 . 237989) (LEFT.MOST.IS.BEGINP +237991 . 238872) (WIRE.ARROWHEAD.POINTS 238874 . 240400) (DRAWARROWHEADS 240402 . 242772) ( +\SK.DRAW.TRIANGLE.ARROWHEAD 242774 . 244434) (\SK.ENDPT.OF.ARROW 244436 . 246693) ( +\SK.ADJUST.FOR.ARROWHEADS 246695 . 249200) (SK.SET.ARROWHEAD.LENGTH 249202 . 250346) ( +SK.SET.ARROWHEAD.ANGLE 250348 . 251444) (SK.SET.ARROWHEAD.TYPE 251446 . 254735) (SK.SET.LINE.ARROWHEAD + 254737 . 257150) (SK.UPDATE.ARROWHEAD.FORMAT 257152 . 259262) (SK.SET.LINE.LENGTH.MODE 259264 . +260742)) (260745 262546 (SK.INSURE.ARROWHEADS 260755 . 261937) (SK.ARROWHEADP 261939 . 262544)) ( +265343 327243 (SKETCH.CREATE.TEXT 265353 . 265867) (TEXT.CHANGEFN 265869 . 266261) (TEXT.READCHANGEFN +266263 . 274334) (\SK.READ.FONT.SIZE1 274336 . 276502) (SK.TEXT.ELT.WITH.SAME.FIELDS 276504 . 278144) +(SK.READFONTFAMILY 278146 . 280616) (CLOSE.PROMPT.WINDOW 280618 . 281042) (TEXT.DRAWFN 281044 . 281765 +) (TEXT.DRAWFN1 281767 . 285269) (TEXT.INSIDEFN 285271 . 285660) (TEXT.EXPANDFN 285662 . 287787) ( +SK.TEXT.LINE.REGIONS 287789 . 289663) (TEXT.UPDATE.GLOBAL.REGIONS 289665 . 290897) (REL.MOVE.REGION +290899 . 291436) (LTEXT.LINE.REGIONS 291438 . 294856) (TEXT.INPUTFN 294858 . 295368) (READ.TEXT 295370 + . 296118) (TEXT.POSITION.AND.CREATE 296120 . 298431) (CREATE.TEXT.ELEMENT 298433 . 299251) ( +SK.UPDATE.TEXT.AFTER.CHANGE 299253 . 299655) (SK.TEXT.FROM.TEXTBOX 299657 . 303463) ( +TEXT.SET.GLOBAL.REGIONS 303465 . 304758) (TEXT.REGIONFN 304760 . 305530) (TEXT.GLOBALREGIONFN 305532 + . 306220) (TEXT.TRANSLATEFN 306222 . 307537) (TEXT.TRANSFORMFN 307539 . 308662) (TEXT.TRANSLATEPTSFN +308664 . 309181) (TEXT.UPDATEFN 309183 . 313839) (SK.CHANGE.TEXT 313841 . 324163) (SK.CHANGE.FONT +324165 . 325309) (TEXT.SET.SCALES 325311 . 326279) (BREAK.AT.CARRIAGE.RETURNS 326281 . 327241)) ( +327244 340229 (SK.PICK.FONT 327254 . 331526) (SK.CHOOSE.TEXT.FONT 331528 . 335799) (SK.NEXTSIZEFONT +335801 . 337433) (SK.DECREASING.FONT.LIST 337435 . 340227)) (340648 352322 (SK.SET.FONT 340658 . +341925) (SK.SET.TEXT.FONT 341927 . 342929) (SK.SET.TEXT.SIZE 342931 . 343618) (SK.SET.TEXT.HORIZ.ALIGN + 343620 . 345194) (SK.READFONTSIZE 345196 . 347094) (SK.COLLECT.FONT.SIZES 347096 . 348177) ( +SK.SET.TEXT.VERT.ALIGN 348179 . 350221) (SK.SET.TEXT.LOOKS 350223 . 351680) (SK.SET.DEFAULT.TEXT.FACE +351682 . 352320)) (352323 352909 (CREATE.SKETCH.TERMTABLE 352333 . 352907)) (352910 354676 ( +SK.FONT.LIST 352920 . 353246) (SK.INSURE.FONT 353248 . 353770) (SK.INSURE.STYLE 353772 . 354290) ( +SK.INSURE.TEXT 354292 . 354674)) (355216 412509 (SKETCH.CREATE.TEXTBOX 355226 . 356868) ( +SK.COMPUTE.TEXTBOX.REGION.FOR.STRING 356870 . 358947) (SK.BREAK.INTO.LINES 358949 . 370135) ( +SK.BRUSH.SIZE 370137 . 370518) (SK.TEXTBOX.CREATE 370520 . 371317) (SK.TEXTBOX.CREATE1 371319 . 372383 +) (SK.UPDATE.TEXTBOX.AFTER.CHANGE 372385 . 372925) (SK.TEXTBOX.POSITION.IN.BOX 372927 . 374838) ( +TEXTBOX.CHANGEFN 374840 . 375314) (TEXTBOX.DRAWFN 375316 . 377352) (SK.TEXTURE.AROUND.REGIONS 377354 + . 383427) (ALL.EMPTY.REGIONS 383429 . 383919) (TEXTBOX.EXPANDFN 383921 . 391077) (TEXTBOX.INPUTFN +391079 . 392692) (TEXTBOX.INSIDEFN 392694 . 393107) (TEXTBOX.REGIONFN 393109 . 393963) ( +TEXTBOX.GLOBALREGIONFN 393965 . 394293) (TEXTBOX.SET.GLOBAL.REGIONS 394295 . 395626) ( +TEXTBOX.TRANSLATEFN 395628 . 397469) (TEXTBOX.TRANSLATEPTSFN 397471 . 400254) (TEXTBOX.TRANSFORMFN +400256 . 401924) (TEXTBOX.UPDATEFN 401926 . 403819) (TEXTBOX.READCHANGEFN 403821 . 408710) ( +SK.TEXTBOX.TEXT.POSITION 408712 . 409133) (SK.TEXTBOX.FROM.TEXT 409135 . 411740) (ADD.EOLS 411742 . +412507)) (413038 416539 (SK.SET.TEXTBOX.VERT.ALIGN 413048 . 414928) (SK.SET.TEXTBOX.HORIZ.ALIGN 414930 + . 416537)) (416922 461397 (SKETCH.CREATE.BOX 416932 . 417415) (SK.BOX.DRAWFN 417417 . 418576) ( +BOX.DRAWFN1 418578 . 421417) (KNOTS.OF.REGION 421419 . 422653) (SK.DRAWAREABOX 422655 . 429256) ( +SK.DRAWBOX 429258 . 430447) (SK.BOX.EXPANDFN 430449 . 434197) (SK.BOX.GETREGIONFN 434199 . 435385) ( +BOX.SET.SCALES 435387 . 436627) (SK.BOX.INPUTFN 436629 . 438562) (SK.BOX.CREATE 438564 . 439265) ( +SK.UPDATE.BOX.AFTER.CHANGE 439267 . 439778) (SK.BOX.INSIDEFN 439780 . 440170) (SK.BOX.REGIONFN 440172 + . 440885) (SK.BOX.GLOBALREGIONFN 440887 . 441625) (SK.BOX.READCHANGEFN 441627 . 445348) ( +SK.CHANGE.FILLING 445350 . 449298) (SK.CHANGE.FILLING.COLOR 449300 . 452956) (SK.BOX.TRANSLATEFN +452958 . 454137) (SK.BOX.TRANSFORMFN 454139 . 455084) (SK.BOX.TRANSLATEPTSFN 455086 . 457454) ( +UNSCALE.REGION.TO.GRID 457456 . 458381) (INCREASEREGION 458383 . 458974) (INSUREREGIONSIZE 458976 . +460147) (EXPANDREGION 460149 . 461029) (REGION.FROM.COORDINATES 461031 . 461395)) (461933 488288 ( +SKETCH.CREATE.ARC 461943 . 462752) (ARC.DRAWFN 462754 . 464481) (ARC.EXPANDFN 464483 . 466816) ( +ARC.INPUTFN 466818 . 471036) (SK.INVERT.CIRCLE 471038 . 471898) (SK.READ.ARC.ANGLE.POINT 471900 . +472407) (SK.SHOW.ARC 472409 . 473019) (ARC.CREATE 473021 . 474376) (SK.UPDATE.ARC.AFTER.CHANGE 474378 + . 474718) (ARC.MOVEFN 474720 . 476303) (ARC.TRANSLATEPTS 476305 . 478190) (ARC.INSIDEFN 478192 . +478442) (ARC.REGIONFN 478444 . 479580) (ARC.GLOBALREGIONFN 479582 . 481304) (ARC.TRANSLATE 481306 . +482288) (ARC.TRANSFORMFN 482290 . 485240) (ARC.READCHANGEFN 485242 . 488286)) (488289 497368 ( +SK.COMPUTE.ARC.ANGLE.PT 488299 . 489225) (SK.COMPUTE.ARC.ANGLE.PT.FROM.ANGLE 489227 . 490220) ( +SK.COMPUTE.ARC.PTS 490222 . 493794) (SK.SET.ARC.DIRECTION 493796 . 494370) (SK.SET.ARC.DIRECTION.CW +494372 . 494546) (SK.SET.ARC.DIRECTION.CCW 494548 . 494821) (SK.COMPUTE.SLOPE.OF.LINE 494823 . 495315) + (SK.CREATE.ARC.USING 495317 . 496554) (SET.ARC.SCALES 496556 . 497366)) (497369 497814 ( +SK.INSURE.DIRECTION 497379 . 497812)) (499185 545044 (GETSKETCHELEMENTPROP 499195 . 500503) ( +\SK.GET.ARC.ANGLEPT 500505 . 501066) (\GETSKETCHELEMENTPROP1 501068 . 501322) (\SK.GET.BRUSH 501324 . +502248) (\SK.GET.FILLING 502250 . 503348) (\SK.GET.ARROWHEADS 503350 . 504129) (\SK.GET.FONT 504131 . +504611) (\SK.GET.JUSTIFICATION 504613 . 505137) (\SK.GET.DIRECTION 505139 . 505616) (\SK.GET.DASHING +505618 . 506637) (PUTSKETCHELEMENTPROP 506639 . 508908) (\SK.PUT.FILLING 508910 . 510180) ( +ADDSKETCHELEMENTPROP 510182 . 510987) (REMOVESKETCHELEMENTPROP 510989 . 511778) (\SK.PUT.FONT 511780 + . 512594) (\SK.PUT.JUSTIFICATION 512596 . 513607) (\SK.PUT.DIRECTION 513609 . 514216) ( +\SK.PUT.DASHING 514218 . 515553) (\SK.PUT.BRUSH 515555 . 517474) (\SK.PUT.ARROWHEADS 517476 . 519442) +(SK.COPY.ELEMENT.PROPERTY.LIST 519444 . 520020) (SKETCH.UPDATE 520022 . 520752) (SKETCH.UPDATE1 520754 + . 522042) (\SKELT.GET.SCALE 522044 . 523032) (\SKELT.PUT.SCALE 523034 . 524341) (\SKELT.PUT.DATA +524343 . 526140) (SK.REPLACE.TEXT.IN.ELEMENT 526142 . 527095) (\SKELT.GET.DATA 527097 . 528164) ( +\SK.GET.1STCONTROLPT 528166 . 529678) (\SK.PUT.1STCONTROLPT 529680 . 535153) (\SK.GET.2NDCONTROLPT +535155 . 536070) (\SK.PUT.2NDCONTROLPT 536072 . 540260) (\SK.GET.3RDCONTROLPT 540262 . 541140) ( +\SK.PUT.3RDCONTROLPT 541142 . 545042)) (545045 545626 (LOWERLEFTCORNER 545055 . 545301) ( +UPPERRIGHTCORNER 545303 . 545624))))) STOP diff --git a/library/sketch/SKETCH-ELEMENTS.LCOM b/library/sketch/SKETCH-ELEMENTS.LCOM index 14b7a802f..5b9b53036 100644 Binary files a/library/sketch/SKETCH-ELEMENTS.LCOM and b/library/sketch/SKETCH-ELEMENTS.LCOM differ diff --git a/library/sketch/SKETCH.LCOM b/library/sketch/SKETCH.LCOM index 841eab4c0..03cc5b552 100644 Binary files a/library/sketch/SKETCH.LCOM and b/library/sketch/SKETCH.LCOM differ diff --git a/library/tedit/TEDIT-COMMAND b/library/tedit/TEDIT-COMMAND index 3211d03f1..96aa3adf2 100644 --- a/library/tedit/TEDIT-COMMAND +++ b/library/tedit/TEDIT-COMMAND @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Jul-2025 00:24:49"  -{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;165 19015 +(FILECREATED " 8-Nov-2025 10:03:19" {WMEDLEY}TEDIT>TEDIT-COMMAND.;166 19030 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.COMMAND.RESET.SETUP) + :CHANGES-TO (FNS \TEDIT.COMMAND.FUNCTION?) - :PREVIOUS-DATE "23-Mar-2025 15:27:20" -{DSK}kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;163) + :PREVIOUS-DATE "17-Jul-2025 00:24:49" {WMEDLEY}TEDIT>TEDIT-COMMAND.;165) (PRETTYCOMPRINT TEDIT-COMMANDCOMS) @@ -137,7 +135,8 @@ (FSETTOBJ TEXTOBJ EDITOPACTIVE NIL)))]) (\TEDIT.COMMAND.FUNCTION? - [LAMBDA (TSTREAM CHARCODE) (* ; "Edited 23-Mar-2025 15:27 by rmk") + [LAMBDA (TSTREAM CHARCODE) (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Mar-2025 15:27 by rmk") (DECLARE (SPECVARS TSTREAM CHARCODE)) (* ;; "If CHARCODE is a function in TSTREAM's read table, execute the function.") @@ -145,7 +144,7 @@ (LET ((TEXTOBJ (GETTSTR TSTREAM TEXTOBJ)) FN) (DECLARE (SPECVARS TEXTOBJ)) - (CL:WHEN [AND (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN [AND (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of (FGETTOBJ TEXTOBJ TXTRTBL)) CHARCODE)) (SETQ FN (CAR (fetch MACROFN of (GETHASH CHARCODE (fetch READMACRODEFS @@ -303,7 +302,7 @@ (GLOBALVARS || TEDIT.INTERRUPTS) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (2709 10263 (\TEDIT.COMMAND.LOOP 2719 . 9060) (\TEDIT.COMMAND.FUNCTION? 9062 . 10261)) ( -10264 18725 (\TEDIT.INTERRUPT.SETUP 10274 . 11921) (\TEDIT.MARKACTIVE 11923 . 12252) ( -\TEDIT.MARKINACTIVE 12254 . 12470) (\TEDIT.COMMAND.RESET.SETUP 12472 . 18723))))) + (FILEMAP (NIL (2625 10278 (\TEDIT.COMMAND.LOOP 2635 . 8976) (\TEDIT.COMMAND.FUNCTION? 8978 . 10276)) ( +10279 18740 (\TEDIT.INTERRUPT.SETUP 10289 . 11936) (\TEDIT.MARKACTIVE 11938 . 12267) ( +\TEDIT.MARKINACTIVE 12269 . 12485) (\TEDIT.COMMAND.RESET.SETUP 12487 . 18738))))) STOP diff --git a/library/tedit/TEDIT-COMMAND.LCOM b/library/tedit/TEDIT-COMMAND.LCOM index 583d13aac..cf5bdabb6 100644 Binary files a/library/tedit/TEDIT-COMMAND.LCOM and b/library/tedit/TEDIT-COMMAND.LCOM differ diff --git a/library/tedit/TEDIT-FNKEYS b/library/tedit/TEDIT-FNKEYS index d9da38e1c..063e5b12b 100644 --- a/library/tedit/TEDIT-FNKEYS +++ b/library/tedit/TEDIT-FNKEYS @@ -1,18 +1,18 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 7-Aug-2025 15:00:51" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;294 106161 +(FILECREATED "12-Nov-2025 16:24:23" {WMEDLEY}tedit>TEDIT-FNKEYS.;315 109327 :EDIT-BY rmk - :CHANGES-TO (VARS TEDIT-FNKEYSCOMS) + :CHANGES-TO (VARS ORIG.TEDIT.CHARACTIONS) - :PREVIOUS-DATE " 6-Aug-2025 08:59:59" {WMEDLEY}TEDIT>TEDIT-FNKEYS.;293) + :PREVIOUS-DATE "12-Nov-2025 16:14:42" {WMEDLEY}tedit>TEDIT-FNKEYS.;314) (PRETTYCOMPRINT TEDIT-FNKEYSCOMS) (RPAQQ TEDIT-FNKEYSCOMS - ((COMS (* ; + [(COMS (* ;  "Public functions (binding data below)") (FNS TEDIT.INSTALL.CHARBINDINGS TEDIT.CLEAR.CHARBINDINGS TEDIT.GET.CHARACTION TEDIT.GET.CHARBINDING TEDIT.GET.ALL.CHARBINDINGS TEDIT.CHARBINDINGS.INVERT @@ -30,7 +30,7 @@ (FNS \TEDIT.ONECHAR.BACKWARD \TEDIT.ONECHAR.FORWARD \TEDIT.ONELINE.UP \TEDIT.ONELINE.DOWN \TEDIT.ONELINE.MOVE \TEDIT.ONEWORD.BACKWARD \TEDIT.ONEWORD.FORWARD \TEDIT.LINE.BEGIN \TEDIT.LINE.END \TEDIT.DOCUMENT.BEGIN \TEDIT.DOCUMENT.END) - (FNS \TEDIT.LINEDELETE.FORWARD \TEDIT.LINEDELETE.BACKWARD) + (FNS \TEDIT.LINEDELETE.FORWARD \TEDIT.LINEDELETE.BACKWARD \TEDIT.LINEDELETE) (FNS \TEDIT.KEY.NEST) (FNS \TEDIT.KEY.WRAP) (* ; "From TEDITDORADOKEYS") @@ -47,21 +47,38 @@ (FNS \TEDIT.READTABLE \TEDIT.WORDBOUND.READTABLE TEDIT.GETSYNTAX TEDIT.SETSYNTAX TEDIT.GETFUNCTION TEDIT.SETFUNCTION TEDIT.WORDGET TEDIT.WORDSET TEDIT.ATOMBOUND.READTABLE)) - (* ; "Keybindings") - (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (CONSTANTS \TEDIT.TTCCODES) - (MACROS \TEDIT.TTC))) - (VARS TEDIT.CHARACTIONS TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS - (TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS))) - (* ; "Installation") - [DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (TEDIT.READTABLE (\TEDIT.READTABLE)) - (TEDIT.WORDBOUND.READTABLE (\TEDIT.WORDBOUND.READTABLE] (* ;; "On-screen formatting buttons (TEDIT.BUTTONS.BUILD) creates the default button menu") - (VARS TEDIT.BUTTONS.SPEC) (FNS TEDIT.BUTTONS.BUILD TEDIT.BUTTONBITMAP.FILL) - (INITVARS (TEDIT.BUTTONS.WINDOW NIL)) - (VARS TEDIT.BUTTONBITMAP))) + (INITVARS TEDIT.BUTTONS.WINDOW) + (VARS TEDIT.BUTTONBITMAP) + [INITVARS (TEDIT.BUTTONS.SPEC '((Bold :BOLD.ON :BOLD.OFF) + (Italic :ITALIC.ON :ITALIC.OFF) + (Case :UCASE :LCASE) + ((Strike- out) + :STRIKEOUT.ON :STRIKEOUT.OFF) + ((Under- line) + :UNDERLINE.ON :UNDERLINE.OFF) + ((Super/ Sub) + :SUPERSCRIPT :SUBSCRIPT) + ((Larger Smaller) + :LARGER :SMALLER) + (Justify :QUAD) + (Defaults :DEFAULTS) + (Show :SHOW.CHARLOOKS) + (Redo :REDO] + (* ; "Keybindings") + (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (CONSTANTS \TEDIT.TTCCODES) + (MACROS \TEDIT.TTC))) + (FNS \TEDIT.TTCCLASS) + (VARS ORIG.TEDIT.CHARACTIONS TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS) + (INITVARS (TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS)) + (TEDIT.CHARACTIONS (APPEND ORIG.TEDIT.CHARACTIONS))) + (GLOBALVARS TEDIT.CHARBINDINGS TEDIT.CHARACTIONS) + (* ; "Installation") + (DECLARE%: DONTEVAL@LOAD DOCOPY (VARS (TEDIT.READTABLE (\TEDIT.READTABLE)) + (TEDIT.WORDBOUND.READTABLE (\TEDIT.WORDBOUND.READTABLE]) @@ -70,7 +87,8 @@ (DEFINEQ (TEDIT.INSTALL.CHARBINDINGS - [LAMBDA (CHARBINDINGS RDTBL CHARACTIONS) (* ; "Edited 7-Apr-2025 20:01 by rmk") + [LAMBDA (CHARBINDINGS RDTBL CHARACTIONS) (* ; "Edited 10-Nov-2025 16:47 by rmk") + (* ; "Edited 7-Apr-2025 20:01 by rmk") (* ; "Edited 5-Apr-2025 11:36 by rmk") (* ; "Edited 1-Apr-2025 00:19 by rmk") (* ; "Edited 18-Mar-2025 11:15 by rmk") @@ -86,6 +104,7 @@ (CL:UNLESS CHARBINDINGS (SETQ CHARBINDINGS TEDIT.CHARBINDINGS)) (CL:UNLESS (LISTP CHARBINDINGS) (\ILLEGAL.ARG CHARBINDINGS)) + (CL:UNLESS CHARACTIONS (SETQ CHARACTIONS TEDIT.CHARACTIONS)) (CL:UNLESS (READTABLEP RDTBL) (SETQ RDTBL (if (NULL RDTBL) then TEDIT.READTABLE @@ -94,37 +113,26 @@ TXTRTBL) TEDIT.READTABLE) else (\ILLEGAL.ARG RDTBL)))) - (CL:UNLESS CHARACTIONS (SETQ CHARACTIONS TEDIT.CHARACTIONS)) (TEDIT.CONFLICTING.CHARBINDINGS (APPEND CHARBINDINGS (TEDIT.GET.ALL.CHARBINDINGS RDTBL))) - [for CB A ACTION in CHARBINDINGS first (TEDIT.CONFLICTING.CHARBINDINGS (APPEND CHARBINDINGS - ( + (for CB ACTION in CHARBINDINGS first (TEDIT.CONFLICTING.CHARBINDINGS (APPEND CHARBINDINGS + (  TEDIT.GET.ALL.CHARBINDINGS - RDTBL))) - when (LISTP CB) unless (EQ '* (CAR CB)) when (AND [SETQ ACTION - (find PAIR in CHARACTIONS - suchthat - - (* ;; - "An ASSOC that allows synonym keys") - - (EQMEMB (CAR CB) - (CAR PAIR] - (SETQ A (CADR ACTION))) - do (for CHAR in (CDR CB) do (CL:UNLESS (CHARCODEP CHAR) + RDTBL))) + when (LISTP CB) unless (EQ '* (CAR CB)) when (SETQ ACTION (CADR (ASSOC (CAR CB) + CHARACTIONS))) + do (CL:WHEN (EQ (CAR CB) + 'WORDDELETE.BACKWARD)) + (for CHAR in (CDR CB) do (CL:UNLESS (CHARCODEP CHAR) (SETQ CHAR (CHARCODE.DECODE CHAR))) - (TEDIT.SETFUNCTION CHAR A RDTBL) + (TEDIT.SETFUNCTION CHAR ACTION RDTBL))) (* ; "Set the method") - (CL:WHEN NIL - (ASSOC (CAR ACTION) - \TEDIT.TTCCODES) - (* ; - "A tag like NEXT, UNDO. Setup the termtable FWIW ") - (TEDIT.SETSYNTAX CHAR (CAR ACTION) - RDTBL))] RDTBL]) (TEDIT.CLEAR.CHARBINDINGS - [LAMBDA (RDTBL BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + [LAMBDA (RDTBL BINDINGS) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 10-Nov-2025 14:22 by rmk") + (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 5-Apr-2025 11:36 by rmk") (* ; "Edited 18-Mar-2025 11:10 by rmk") (* ; "Edited 15-Mar-2025 12:02 by rmk") @@ -142,28 +150,31 @@ [if (EQ BINDINGS T) then [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CHARCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CHARCODE)) (TEDIT.SETFUNCTION CHARCODE NIL RDTBL) - (CL:WHEN (ASSOC CHARCODE \TEDIT.TTCCODES) + (CL:WHEN (\TEDIT.TTCCLASS CHARCODE) (* ; - "A tag like NEXT, UNDO. Setup the termtable FWIW ") - (TEDIT.SETSYNTAX CHARCODE CHARCODE RDTBL)))] + "A tag like NEXT, UNDO. Normalize and setup the termtable FWIW ") + (TEDIT.SETSYNTAX (\TEDIT.TTCCLASS CHARCODE) + CHARCODE RDTBL)))] BINDINGS else (for CB in BINDINGS when (LISTP CB) unless (EQ '* (CAR CB)) do (for CHARCODE in (CDR CB) do (CL:UNLESS (CHARCODEP CHARCODE) (SETQ CHARCODE (CHARCODE.DECODE CHARCODE))) (TEDIT.SETFUNCTION CHARCODE NIL RDTBL) - (CL:WHEN (ASSOC (CAR CB) - \TEDIT.TTCCODES) + (CL:WHEN (\TEDIT.TTCCLASS (CAR CB)) (* ; - "A tag like NEXT, UNDO. Setup the termtable FWIW ") - (TEDIT.SETSYNTAX CHARCODE (CAR CB) - RDTBL))])]) + "A tag like NEXT, UNDO. Normalize and setup the termtable FWIW ") + (TEDIT.SETSYNTAX (\TEDIT.TTCCLASS (CAR CB)) + CHARCODE RDTBL))])]) (TEDIT.GET.CHARACTION - [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 5-Apr-2025 11:36 by rmk") + [LAMBDA (CHARCODE BINDINGS) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 10-Nov-2025 15:55 by rmk") + (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 5-Apr-2025 11:36 by rmk") (* ; "Edited 19-Mar-2025 14:51 by rmk") (* ; "Edited 18-Mar-2025 11:07 by rmk") (* ; "Edited 17-Mar-2025 09:43 by rmk") @@ -184,39 +195,33 @@ (RETURN (CL:IF (CDR $$VAL) $$VAL (CAR $$VAL))] - else (LET [(RDTBL (if (NULL BINDINGS) + else (LET ((RDTBL (if (NULL BINDINGS) then TEDIT.READTABLE elseif (TEXTSTREAM BINDINGS T) then (OR (GETTOBJ (TEXTOBJ BINDINGS) TXTRTBL) TEDIT.READTABLE) elseif (READTABLEP BINDINGS) - else (\ILLEGAL.ARG BINDINGS] - [MAPHASH (fetch READMACRODEFS of RDTBL) - (FUNCTION (LAMBDA (VAL CCODE) - (CL:WHEN (AND (EQ CCODE CHARCODE) - (EQ (\TEDIT.TTC FUNCTIONCALL) - (\SYNCODE (fetch READSA of RDTBL) - CHARCODE))) - (for CA in TEDIT.CHARACTIONS when (EQUAL (CADR CA) - (CADR VAL)) - do (RETFROM (FUNCTION TEDIT.GET.CHARACTION) - (CAR CA))))] - NIL]) + else (\ILLEGAL.ARG BINDINGS))) + VAL) + (CL:WHEN [AND (EQ (\TEDIT.TTC FN) + (\SYNCODE (fetch READSA of RDTBL) + CHARCODE)) + (SETQ VAL (fetch MACROFN of (GETHASH CHARCODE (fetch READMACRODEFS + of RDTBL] + [CAR (find ACTION in TEDIT.CHARACTIONS suchthat (EQUAL VAL (CDR ACTION])]) (TEDIT.GET.CHARBINDING - [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (ACTION BINDINGS RETURNCODES) (* ; "Edited 10-Nov-2025 12:49 by rmk") + (* ; "Edited 9-Nov-2025 10:10 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:40 by rmk") - (* ;; "Returns the bindings for ACTION in BINDINGS, a binding list or a read-table specification. If BINDINGS is a readtable, looks at all currently installed bindings in that readtable. If NIL, uses TEDIT.READTABLE.") + (* ;; "Returns the character bindings for ACTION in BINDINGS, a binding list or a read-table specification. If BINDINGS is a readtable, looks at all currently installed bindings in that readtable. If NIL, uses TEDIT.READTABLE.") (if (LISTP BINDINGS) - then (for CB in BINDINGS when (EQ ACTION (CAR CB)) join - (* ;; - "Allow for duplicate bindings for the same action?") - - (APPEND (CDR CB))) + then (APPEND (CADR (ASSOC ACTION BINDINGS))) else (LET ((RDTBL (if (NULL BINDINGS) then TEDIT.READTABLE elseif (TEXTSTREAM BINDINGS T) @@ -225,25 +230,29 @@ TEDIT.READTABLE) elseif (READTABLEP BINDINGS) else (\ILLEGAL.ARG BINDINGS))) - [IMPL (CADR (find CA in TEDIT.CHARACTIONS suchthat (EQMEMB ACTION (CAR CA] + (IMPL (CADR (ASSOC ACTION TEDIT.CHARACTIONS))) CHARS) - (CL:WHEN IMPL + (CL:WHEN IMPL (* ; + "The hashtable doesn't have the action names, just the implementation") [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) (CL:WHEN (EQUAL IMPL (CADR VAL)) (* ; "charcode, not charname") (push CHARS (CL:IF RETURNCODES CCODE - (CHARCODE.ENCODE CCODE))))] + (CHARCODE.ENCODE CCODE))))] CHARS)]) (TEDIT.GET.ALL.CHARBINDINGS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 10-Nov-2025 13:07 by rmk") + (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 7-Apr-2025 22:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") - (* ;; "Returns the charbindings instantiated in RDTBL, in the form of TEDIT.CHARBINDINGS: (action . chars)") + (* ;; "Returns the character bindings instantiated in RDTBL, in the form of TEDIT.CHARBINDINGS: (action . chars/codes)") (CL:UNLESS (READTABLEP RDTBL) (SETQ RDTBL (if (NULL RDTBL) @@ -256,27 +265,28 @@ (LET (ACTIONS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CCODE)) (for CA ANAME in TEDIT.CHARACTIONS when (LISTP CA) unless (EQ '* (CAR CA)) when (EQUAL (CADR CA) (CADR VAL)) - do (SETQ ANAME (CAR (CL:IF (LISTP (CAR CA)) - (CAR CA) - CA))) - (PUSH [CDR (OR (ASSOC ANAME ACTIONS) - (CAR (PUSH ACTIONS (CONS ANAME] - CCODE)))] + do + (* ;; "Same implementation") + + (SETQ ANAME (CAR CA)) + (PUSHMULTI ACTIONS (CAR CA) + CCODE)))] (SORT ACTIONS T) [for A S in ACTIONS do (SETQ S (SORT (CDR A))) (RPLACD A (CL:IF RETURNCODES S - (CHARCODE.ENCODE S))] + (CHARCODE.ENCODE S))] ACTIONS]) (TEDIT.CHARBINDINGS.INVERT - [LAMBDA (CHARBINDINGS RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (CHARBINDINGS RETURNCODES) (* ; "Edited 10-Nov-2025 16:21 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 7-Apr-2025 22:39 by rmk") (* ; "Edited 4-Apr-2025 09:58 by rmk") (* ; "Edited 1-Apr-2025 15:09 by rmk") @@ -284,25 +294,24 @@ (* ;; "Inverts CHARBINDINGS to return a list of (char/code . actions), usually a single action unless there is a conflict.. ") (for CB ACTIONSPERCHAR CA in CHARBINDINGS when (CDR (LISTP CB)) unless (EQ '* (CAR CB)) - do [for CHAR CODE CACTIONS in (CDR CB) do (SETQ CODE (CHARCODE.DECODE CHAR)) - (SETQ CACTIONS (ASSOC CODE ACTIONSPERCHAR)) - (CL:UNLESS CACTIONS - (push ACTIONSPERCHAR (SETQ CACTIONS (CONS CODE)) - )) - (CL:UNLESS (MEMB (CAR CB) - (CDR CACTIONS)) - (push (CDR CACTIONS) - (CAR CB)))] + do (for CHAR CODE CACTIONS in (CDR CB) eachtime (SETQ CODE (CHARCODE.DECODE CHAR)) + do (PUSHMULTI-NEW ACTIONSPERCHAR CODE (CAR CB))) finally (SORT ACTIONSPERCHAR T) (CL:UNLESS RETURNCODES (for APC in ACTIONSPERCHAR do (change (CAR APC) - (CHARCODE.ENCODE DATUM)))) - (RETURN ACTIONSPERCHAR]) + (CHARCODE.ENCODE DATUM)))) + (RETURN (SORT ACTIONSPERCHAR T]) (TEDIT.GET.ALL.CHARACTIONS - [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 23-Apr-2025 10:11 by rmk") + [LAMBDA (RDTBL RETURNCODES) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 10-Nov-2025 13:37 by rmk") + (* ; "Edited 8-Nov-2025 10:00 by rmk") + (* ; "Edited 23-Apr-2025 10:11 by rmk") (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 18-Mar-2025 20:51 by rmk") + + (* ;; "Returns an alist containing all of the (character action) bindings in RDTBL.") + (CL:UNLESS (READTABLEP RDTBL) (SETQ RDTBL (if (NULL RDTBL) then TEDIT.READTABLE @@ -311,27 +320,24 @@ TXTRTBL) TEDIT.READTABLE) else (\ILLEGAL.ARG RDTBL)))) - (LET (ACTIONS) + (LET (BINDINGS) [MAPHASH (fetch READMACRODEFS of RDTBL) (FUNCTION (LAMBDA (VAL CCODE) - (CL:WHEN (EQ (\TEDIT.TTC FUNCTIONCALL) + (CL:WHEN (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CCODE)) (for CA ANAME in TEDIT.CHARACTIONS when (LISTP CA) unless (EQ '* (CAR CA)) when (EQUAL (CADR CA) (CADR VAL)) - do (SETQ ANAME (CAR (CL:IF (LISTP (CAR CA)) - (CAR CA) - CA))) - (PUSH [CDR (OR (ASSOC ANAME ACTIONS) - (CAR (PUSH ACTIONS (CONS ANAME] - CCODE)))] - (SORT ACTIONS T) - [for A S in ACTIONS do (SETQ S (SORT (CDR A))) - (RPLACD A (CL:IF RETURNCODES - S - (CHARCODE.ENCODE S))] - ACTIONS]) + do (* ; "Match on implementation") + (PUSHMULTI BINDINGS (CL:IF RETURNCODES + CCODE + (CHARCODE.ENCODE CCODE)) + (CAR CA))))] + (SORT BINDINGS T) + (for B in BINDINGS do (change (CDR B) + (SORT DATUM))) + BINDINGS]) (TEDIT.CONFLICTING.CHARBINDINGS [LAMBDA (CHARBINDINGS NOERROR) (* ; "Edited 7-Apr-2025 22:40 by rmk") @@ -846,7 +852,8 @@ (DEFINEQ (\TEDIT.LINEDELETE.FORWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:41 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 12-Nov-2025 16:14 by rmk") + (* ; "Edited 6-Apr-2025 14:41 by rmk") (* ; "Edited 15-Mar-2025 23:02 by rmk") (* ; "Edited 9-Mar-2025 22:11 by rmk") (* ; "Edited 4-Mar-2025 17:22 by rmk") @@ -861,10 +868,11 @@ (\TEDIT.NOSEL TSTREAM) (\TEDIT.UPDATE.SEL SEL HERE (IDIFFERENCE (FGETLD LINE LCHARLIM) HERE)) - (TEDIT.DELETE TSTREAM SEL))]) + (\TEDIT.DELETE TSTREAM SEL))]) (\TEDIT.LINEDELETE.BACKWARD - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 6-Apr-2025 14:41 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 12-Nov-2025 16:13 by rmk") + (* ; "Edited 6-Apr-2025 14:41 by rmk") (* ; "Edited 15-Mar-2025 23:02 by rmk") (* ; "Edited 9-Mar-2025 22:11 by rmk") (* ; "Edited 4-Mar-2025 17:22 by rmk") @@ -880,7 +888,24 @@ (\TEDIT.NOSEL TSTREAM) (\TEDIT.UPDATE.SEL SEL HERE (IDIFFERENCE (FGETLD LINE LCHAR1) HERE)) - (TEDIT.DELETE TEXTOBJ SEL))]) + (\TEDIT.DELETE TSTREAM SEL))]) + +(\TEDIT.LINEDELETE + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 12-Nov-2025 16:14 by rmk") + (* ; "Edited 6-Apr-2025 14:41 by rmk") + (* ; "Edited 15-Mar-2025 23:02 by rmk") + (* ; "Edited 9-Mar-2025 22:11 by rmk") + (* ; "Edited 4-Mar-2025 17:22 by rmk") + (* gbn "13-Dec-84 11:56") + + (* ;; "Deletes from the beginning of the caret's line to the end of the caret's line. Line must be visible in the selpane.") + + (LET ((LINE (\TEDIT.SEL.L1 SEL NIL TEXTOBJ))) + (CL:WHEN LINE + (\TEDIT.NOSEL TSTREAM) + (\TEDIT.UPDATE.SEL SEL (FGETLD LINE LCHAR1) + (FGETLD LINE LNCH)) + (\TEDIT.DELETE TSTREAM SEL))]) ) (DEFINEQ @@ -1268,7 +1293,8 @@ RTBL]) (\TEDIT.WORDBOUND.READTABLE - [LAMBDA NIL (* ; "Edited 2-Aug-2025 22:06 by rmk") + [LAMBDA NIL (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 2-Aug-2025 22:06 by rmk") (* ; "Edited 15-Mar-2025 12:00 by rmk") (* ; "Edited 13-Mar-2025 22:24 by rmk") (* ; "Edited 22-May-92 15:10 by jds") @@ -1308,27 +1334,31 @@ RTBL]) (TEDIT.GETSYNTAX - [LAMBDA (CH TABLE) (* ; "Edited 29-May-2025 16:20 by rmk") + [LAMBDA (CH TABLE) (* ; "Edited 12-Nov-2025 14:46 by rmk") + (* ; "Edited 10-Nov-2025 13:36 by rmk") + (* ; "Edited 8-Nov-2025 13:32 by rmk") + (* ; "Edited 29-May-2025 16:20 by rmk") (* ; "Edited 12-Mar-2025 12:55 by rmk") (* ; "Edited 24-Dec-2023 09:47 by rmk") (* ; "Edited 31-Mar-87 10:01 by jds") - (* ;; "Find TEdit's interpretation of a given character") + (* ;; "Map back to documented syntax-class names just for those defined classes, otherwise FN, for compatibility with documentation and history. ") - (CAR (find TTC (SYNCODE _ (\SYNCODE (fetch READSA of (if (NULL TABLE) - then TEDIT.READTABLE - elseif (TEXTSTREAM TABLE T) - then (OR (GETTOBJ (TEXTOBJ TABLE) - TXTRTBL) - TEDIT.READTABLE) - else TABLE)) - (CL:IF (OR (LITATOM CH) - (STRINGP CH)) - (CHARCODE.DECODE CH) - CH))) in \TEDIT.TTCCODES suchthat (EQ SYNCODE (CADR TTC]) + (SELECTQ (TEDIT.GET.CHARACTION CH TABLE) + (:CHARDELETE.BACKWARD + 'CHARDELETE) + (:WORDDELETE.BACKWARD + 'WORDDELETE) + (:DELETE 'DELETE) + (:UNDO 'UNDO) + (:REDO 'REDO) + (:NEXT 'NEXT) + (NIL 'NONE) + 'FN]) (TEDIT.SETSYNTAX - [LAMBDA (CHAR CLASS RDTBL) (* ; "Edited 13-Mar-2025 21:52 by rmk") + [LAMBDA (CHAR CLASS RDTBL) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 13-Mar-2025 21:52 by rmk") (* ; "Edited 24-Dec-2023 09:17 by rmk") (* ; "Edited 31-Mar-87 10:00 by jds") (* ; @@ -1351,7 +1381,9 @@ (\TEDIT.TTC NONE))))]) (TEDIT.GETFUNCTION - [LAMBDA (CHARCODE RDTBL) (* ; "Edited 5-Apr-2025 11:37 by rmk") + [LAMBDA (CHARCODE RDTBL) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 8-Nov-2025 11:13 by rmk") + (* ; "Edited 5-Apr-2025 11:37 by rmk") (* ; "Edited 13-Mar-2025 22:56 by rmk") (* ; "Edited 7-Mar-2025 12:02 by rmk") (* jds "19-Sep-85 17:06") @@ -1368,14 +1400,16 @@ TEDIT.READTABLE) else RDTBL)) (CL:WHEN (AND (READTABLEP RDTBL) - (EQ (\TEDIT.TTC FUNCTIONCALL) + (EQ (\TEDIT.TTC FN) (\SYNCODE (fetch READSA of RDTBL) CHARCODE)) (fetch READMACRODEFS of RDTBL)) [CAR (FETCH MACROFN OF (GETHASH CHARCODE (fetch READMACRODEFS of RDTBL])]) (TEDIT.SETFUNCTION - [LAMBDA (CHARCODE FN RDTBL) (* ; "Edited 13-Mar-2025 22:51 by rmk") + [LAMBDA (CHARCODE FN RDTBL) (* ; "Edited 12-Nov-2025 14:44 by rmk") + (* ; "Edited 8-Nov-2025 10:02 by rmk") + (* ; "Edited 13-Mar-2025 22:51 by rmk") (* ; "Edited 7-Mar-2025 12:03 by rmk") (* ; "Edited 31-Mar-87 10:58 by jds") (* ; @@ -1396,7 +1430,7 @@ (\SETSYNCODE (fetch READSA of RDTBL) CHARCODE (CL:IF FN - (\TEDIT.TTC FUNCTIONCALL) + (\TEDIT.TTC FN) (\TEDIT.TTC NONE))) (CL:UNLESS (fetch READMACRODEFS of RDTBL) (replace READMACRODEFS of RDTBL with (HARRAY 50))) (* ; @@ -1414,7 +1448,8 @@ (T (CHCON1 CH]) (TEDIT.WORDSET - [LAMBDA (CHARCODE CLASS TABLE) (* ; "Edited 13-Mar-2025 21:43 by rmk") + [LAMBDA (CHARCODE CLASS TABLE) (* ; "Edited 12-Nov-2025 14:45 by rmk") + (* ; "Edited 13-Mar-2025 21:43 by rmk") (* jds " 1-JUN-83 12:23") (* ;; "Sets Tedit syntax bits in a termtable. ") @@ -1450,45 +1485,192 @@ +(* ;; "On-screen formatting buttons (TEDIT.BUTTONS.BUILD) creates the default button menu") + +(DEFINEQ + +(TEDIT.BUTTONS.BUILD + [LAMBDA (BUTTONSPEC TITLE NROWS KEYBINDINGS) (* ; "Edited 6-Aug-2025 08:59 by rmk") + (* ; "Edited 23-Mar-2025 10:31 by rmk") + (* ; "Edited 18-Mar-2025 15:47 by rmk") + (* ; "Edited 15-Mar-2025 15:24 by rmk") + (* ; "Edited 5-Nov-85 15:35 by lmm") + + (* ;; "Each button is of the form (label action1 [action2]), e.g. (BOLD BOLD.ON BOLD.OFF) or (JUSTIFY QUAD)") + + (CL:UNLESS (AND (WINDOWP TEDIT.BUTTONS.WINDOW) + (OPENWP TEDIT.BUTTONS.WINDOW)) + (CL:UNLESS BUTTONSPEC (SETQ BUTTONSPEC TEDIT.BUTTONS.SPEC)) + (CL:UNLESS TITLE + (SETQ TITLE '(Tedit Buttons))) (* ; "List for the Shrink button label") + (CL:UNLESS KEYBINDINGS (SETQ KEYBINDINGS TEDIT.CHARBINDINGS)) + + (* ;; "The constructed menu will bksysbuf a character bound to action1 if the shift is not down, otherwise a character bound to action2. action2 is action1 if it is not specified. Buttons with no actions are skipped.") + + (LET (ITEMS) + (SETQ ITEMS (for BUTTON CHARS in BUTTONSPEC + eachtime (CL:WHEN (AND (CDR BUTTON) + (NULL (CDDR BUTTON))) + [SETQ BUTTON (APPEND BUTTON (CONS (CADR BUTTON]) + when [SETQ CHARS (for ANAME CHAR in (CDR BUTTON) + when (SETQ CHAR (CADR (ASSOC ANAME KEYBINDINGS))) + collect (CL:IF (CHARCODEP CHAR) + CHAR + (CHARCODE.DECODE CHAR))] + collect (LIST (TEDIT.BUTTONBITMAP.FILL (CAR BUTTON)) + CHARS))) + (SETQ TEDIT.BUTTONS.WINDOW (ADDMENU [create MENU + ITEMS _ ITEMS + TITLE _ (CL:IF (LISTP TITLE) + (SUBSTRING TITLE 2 -2) + TITLE) + MENUROWS _ (OR NROWS 1) + WHENSELECTEDFN _ + (FUNCTION (LAMBDA (X) + (CL:WHEN + (EQ '\TEDIT.PROCENTRYFN + (FETCH (PROCESS + PROCTTYENTRYFN + ) + OF (TTY.PROCESS))) + [\TEDIT.COMMAND.FUNCTION? + (TEXTSTREAM (TTY.PROCESS)) + (CL:IF (SHIFTDOWNP + 'SHIFT) + (CADR (CADR X)) + (CAR (CADR X)))])] + NIL + (create POSITION + XCOORD _ + (PLUS (DIFFERENCE (QUOTIENT SCREENWIDTH 2) + (QUOTIENT (TIMES (BITMAPWIDTH + + TEDIT.BUTTONBITMAP + ) + (LENGTH ITEMS)) + 2)) + (TIMES 2 WBorder)) + YCOORD _ 0))) + [WINDOWPROP TEDIT.BUTTONS.WINDOW 'ICON (TEDIT.BUTTONBITMAP.FILL '(Tedit Buttons] + (WINDOWPROP TEDIT.BUTTONS.WINDOW 'ICONPOSITION (create POSITION + XCOORD _ 0 + YCOORD _ 0))))]) + +(TEDIT.BUTTONBITMAP.FILL + [LAMBDA (X) (* ; "Edited 16-Mar-2025 21:12 by rmk") + (* ; "Edited 15-Mar-2025 14:55 by rmk") + (* lmm " 5-Nov-85 14:04") + (LET ((BITMAP (BITMAPCOPY TEDIT.BUTTONBITMAP)) + DS QUARTER REGION) + (SETQ DS (DSPCREATE BITMAP)) + (DSPFONT MENUFONT DS) + (if (LISTP X) + then (* ; + "this is supposed to have two labels, one on top of the other") + (SETQ QUARTER (IQUOTIENT (BITMAPHEIGHT BITMAP) + 4)) + (CENTERPRINTINREGION (CADR X) + (SETQ REGION (create REGION + LEFT _ 0 + BOTTOM _ QUARTER + WIDTH _ (BITMAPWIDTH BITMAP) + HEIGHT _ QUARTER)) + DS) + (replace BOTTOM of REGION with (ITIMES 2 QUARTER)) + (CENTERPRINTINREGION (CAR X) + REGION DS) + else (CENTERPRINTINREGION X (create REGION + LEFT _ 0 + BOTTOM _ 0 + WIDTH _ (BITMAPWIDTH BITMAP) + HEIGHT _ (BITMAPHEIGHT BITMAP)) + DS)) + BITMAP]) +) + +(RPAQ? TEDIT.BUTTONS.WINDOW NIL) + +(RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL +) + +(RPAQ? TEDIT.BUTTONS.SPEC + '((Bold :BOLD.ON :BOLD.OFF) + (Italic :ITALIC.ON :ITALIC.OFF) + (Case :UCASE :LCASE) + ((Strike- out) + :STRIKEOUT.ON :STRIKEOUT.OFF) + ((Under- line) + :UNDERLINE.ON :UNDERLINE.OFF) + ((Super/ Sub) + :SUPERSCRIPT :SUBSCRIPT) + ((Larger Smaller) + :LARGER :SMALLER) + (Justify :QUAD) + (Defaults :DEFAULTS) + (Show :SHOW.CHARLOOKS) + (Redo :REDO))) + + + (* ; "Keybindings") (DECLARE%: EVAL@COMPILE DONTCOPY (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE (RPAQQ \TEDIT.TTCCODES - ((NONE 0) - (CHARDELETE 1) - (WORDDELETE 2) - (DELETE 3) - (FUNCTIONCALL 4) - (REDO 5) - (UNDO 6) - (CMD 7) - (NEXT 8) - (EXPAND 9) - (CHARDELETE.FORWARD 10) - (WORDDELETE.FORWARD 11) - (PUNCT 20) - (TEXT 21) - (WHITESPACE 22))) + ((NONE . 0) + (CHARDELETE . 1) + (:CHARDELETE.BACKWARD . 1) + (WORDDELETE . 2) + (:WORDDELETE.BACKWORD . 2) + (DELETE . 3) + (:DELETE . 3) + (FN . 4) + (REDO . 5) + (:REDO . 5) + (UNDO . 6) + (:UNDO . 6) + (CMD . 7) + (:CMD . 7) + (NEXT . 8) + (:NEXT . 8) + (EXPAND . 9) + (:EXPAND . 9) + (CHARDELETE.FORWARD . 10) + (:CHARDELETE.FORWARD . 10) + (:WORDDELETE.FORWARD . 11) + (PUNCT . 20) + (TEXT . 21) + (WHITESPACE . 22))) (CONSTANTS \TEDIT.TTCCODES) ) (DECLARE%: EVAL@COMPILE -(PUTPROPS \TEDIT.TTC MACRO [(CLASS) - (CONSTANT (CADR (ASSOC 'CLASS \TEDIT.TTCCODES]) +(PUTPROPS \TEDIT.TTC MACRO [(ACTION) + (CONSTANT (GETMULTI \TEDIT.TTCCODES 'ACTION]) ) (* "END EXPORTED DEFINITIONS") ) +(DEFINEQ -(RPAQQ TEDIT.CHARACTIONS - ((TEDIT-PF PF-TEDIT-FROM-TEXT) - - (* ;; "This defines the implementation of the named actions. They are activated by keybinding specifications given to TEDIT.INSTALL.KEYBINDINGS.") +(\TEDIT.TTCCLASS + [LAMBDA (CODE/CLASS) (* ; "Edited 12-Nov-2025 13:51 by rmk") + (* ; "Edited 10-Nov-2025 14:34 by rmk") + + (* ;; "Class gets the (normalized) class for a CODE (or class atom).") + + (CAR (find TTC in \TEDIT.TTCCODES suchthat (if (FIXP CODE/CLASS) + then (EQ CODE/CLASS (CDR TTC)) + elseif (EQ CODE/CLASS (CAR TTC]) +) + +(RPAQQ ORIG.TEDIT.CHARACTIONS + ( + (* ;; "This defines Tedit's implementation of the named actions. They are activated by keybinding specifications given to TEDIT.INSTALL.KEYBINDINGS.") (* ;; "") @@ -1496,139 +1678,137 @@ (* ;; "History") - (UNDO (TEDIT.UNDO TSTREAM)) - (UNDO.UNDO \TEDIT.UNDO.UNDO) + (:UNDO (TEDIT.UNDO TSTREAM)) + (:UNDO.UNDO \TEDIT.UNDO.UNDO) (* ; "CHECK") - (REDO TEDIT.REDO) + (:REDO TEDIT.REDO) (* ;; "") (* ;; "Find") - ((FIND.FORWARD FIND) - (\TEDIT.KEY.FIND TSTREAM)) - (FIND.BACKWARD (\TEDIT.KEY.FIND TSTREAM NIL T)) - (FIND.FORWARD-AGAIN (\TEDIT.KEY.FIND TSTREAM T)) - (FIND.BACKWARD-AGAIN (\TEDIT.KEY.FIND TSTREAM T T)) - (SUBSTITUTE \TEDIT.KEY.SUBSTITUTE) - (NEXT TEDIT.NEXT) + (:FIND.FORWARD (\TEDIT.KEY.FIND TSTREAM)) + (:FIND.BACKWARD (\TEDIT.KEY.FIND TSTREAM NIL T)) + (:FIND.FORWARD-AGAIN (\TEDIT.KEY.FIND TSTREAM T)) + (:FIND.BACKWARD-AGAIN (\TEDIT.KEY.FIND TSTREAM T T)) + (:SUBSTITUTE \TEDIT.KEY.SUBSTITUTE) + (:NEXT TEDIT.NEXT) (* ;; "") (* ;; "Character looks") - (BOLD.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'ON)) - (BOLD.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'OFF)) - (BOLD.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'TOGGLE)) - (ITALIC.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'ON)) - (ITALIC.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'OFF)) - (ITALIC.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'TOGGLE)) - (UCASE (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION U-CASECODE))) - (LCASE (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION L-CASECODE))) - (INITIALCAP (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION CAP-CASECODE))) - (STRIKEOUT.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'ON)) - (STRIKEOUT.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'OFF)) - (STRIKEOUT.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'TOGGLE)) - (UNDERLINE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'ON)) - (UNDERLINE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'OFF)) - (UNDERLINE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'TOGGLE)) - (OVERLINE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'ON)) - (OVERLINE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'OFF)) - (OVERLINE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'TOGGLE)) - (UNBREAKABLE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'ON)) - (UNBREAKABLE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'OFF)) - (UNBREAKABLE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'TOGGLE)) - (SUBSCRIPT \TEDIT.SUBSCRIPTSEL) - (SUPERSCRIPT \TEDIT.SUPERSCRIPTSEL) - (SMALLER (\TEDIT.KEY.SIZE TSTREAM '-)) - (LARGER (\TEDIT.KEY.SIZE TSTREAM '+)) - (FAMILYN (\TEDIT.KEY.FAMILYN TSTREAM CHARCODE)) - (DEFAULTS \TEDIT.DEFAULTSSEL) - (SHOW.CHARLOOKS \TEDIT.SHOWCARETLOOKS) + (:BOLD.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'ON)) + (:BOLD.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'OFF)) + (:BOLD.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'BOLD 'TOGGLE)) + (:ITALIC.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'ON)) + (:ITALIC.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'OFF)) + (:ITALIC.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'ITALIC 'TOGGLE)) + (:UCASE (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION U-CASECODE))) + (:LCASE (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION L-CASECODE))) + (:INITIALCAP (\TEDIT.KEY.TRANSFORM TSTREAM (FUNCTION CAP-CASECODE))) + (:STRIKEOUT.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'ON)) + (:STRIKEOUT.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'OFF)) + (:STRIKEOUT.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'STRIKEOUT 'TOGGLE)) + (:UNDERLINE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'ON)) + (:UNDERLINE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'OFF)) + (:UNDERLINE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNDERLINE 'TOGGLE)) + (:OVERLINE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'ON)) + (:OVERLINE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'OFF)) + (:OVERLINE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'OVERLINE 'TOGGLE)) + (:UNBREAKABLE.ON (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'ON)) + (:UNBREAKABLE.OFF (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'OFF)) + (:UNBREAKABLE.TOGGLE (\TEDIT.KEY.CHARLOOKS TSTREAM 'UNBREAKABLE 'TOGGLE)) + (:SUBSCRIPT \TEDIT.SUBSCRIPTSEL) + (:SUPERSCRIPT \TEDIT.SUPERSCRIPTSEL) + (:SMALLER (\TEDIT.KEY.SIZE TSTREAM '-)) + (:LARGER (\TEDIT.KEY.SIZE TSTREAM '+)) + (:FAMILYN (\TEDIT.KEY.FAMILYN TSTREAM CHARCODE)) + (:DEFAULTS \TEDIT.DEFAULTSSEL) + (:SHOW.CHARLOOKS \TEDIT.SHOWCARETLOOKS) (* ;; "") (* ;; "Paragraph looks") - (NEST (\TEDIT.KEY.NEST TSTREAM)) - (UNNEST (\TEDIT.KEY.NEST TSTREAM T)) - ((QUAD CENTER) - (\TEDIT.KEY.QUAD TSTREAM)) - (QUAD.REVERSE (\TEDIT.KEY.QUAD TSTREAM T)) + (:NEST (\TEDIT.KEY.NEST TSTREAM)) + (:UNNEST (\TEDIT.KEY.NEST TSTREAM T)) + (:QUAD (\TEDIT.KEY.QUAD TSTREAM)) + (:QUAD.REVERSE (\TEDIT.KEY.QUAD TSTREAM T)) (* ;; "") (* ;; "Cursor/selection") - (ONECHAR.BACKWARD \TEDIT.ONECHAR.BACKWARD) - (ONECHAR.FORWARD \TEDIT.ONECHAR.FORWARD) - (LINE.UP \TEDIT.ONELINE.UP) - (LINE.DOWN \TEDIT.ONELINE.DOWN) - (ONEWORD.FORWARD \TEDIT.ONEWORD.FORWARD) - (ONEWORD.BACKWARD \TEDIT.ONEWORD.BACKWARD) - (LINE.BEGIN \TEDIT.LINE.BEGIN) - (LINE.END \TEDIT.LINE.END) - (DOCUMENT.BEGIN \TEDIT.DOCUMENT.BEGIN) - (DOCUMENT.END \TEDIT.DOCUMENT.END) - (ALL \TEDIT.SELECT.ALL) + (:ONECHAR.BACKWARD \TEDIT.ONECHAR.BACKWARD) + (:ONECHAR.FORWARD \TEDIT.ONECHAR.FORWARD) + (:LINE.UP \TEDIT.ONELINE.UP) + (:LINE.DOWN \TEDIT.ONELINE.DOWN) + (:ONEWORD.FORWARD \TEDIT.ONEWORD.FORWARD) + (:ONEWORD.BACKWARD \TEDIT.ONEWORD.BACKWARD) + (:LINE.BEGIN \TEDIT.LINE.BEGIN) + (:LINE.END \TEDIT.LINE.END) + (:DOCUMENT.BEGIN \TEDIT.DOCUMENT.BEGIN) + (:DOCUMENT.END \TEDIT.DOCUMENT.END) + (:ALL \TEDIT.SELECT.ALL) (* ;; "") (* ;; "Deletion ") - ((CHARDELETE CHARDELETE.BACKWORD) - (\TEDIT.CHARDELETE TSTREAM)) - (CHARDELETE.FORWARD (\TEDIT.CHARDELETE TSTREAM T)) - (WORDDELELETE \TEDIT.WORDDELETE) - (WORDDELETE.FORWARD \TEDIT.WORDDELETE.FORWARD) - (LINEDELETE.FORWARD \TEDIT.LINEDELETE.FORWARD) - (LINEDELETE.BACKWARD \TEDIT.LINEDELETE.BACKWARD) + (:CHARDELETE.BACKWARD (\TEDIT.CHARDELETE TSTREAM)) + (:CHARDELETE.FORWARD (\TEDIT.CHARDELETE TSTREAM T)) + (:WORDDELETE.BACKWARD \TEDIT.WORDDELETE) + (:WORDDELETE.FORWARD \TEDIT.WORDDELETE.FORWARD) + (:LINEDELETE.FORWARD \TEDIT.LINEDELETE.FORWARD) + (:LINEDELETE.BACKWARD \TEDIT.LINEDELETE.BACKWARD) + (:LINEDELETE \TEDIT.LINEDELETE) (* ;; "") (* ;; "Miscellaneous") - (MANPAGE \TEDIT.MANPAGE) - (OPEN.SEDIT \TEDIT.CALL.ED) - (PRINT.MENU \TEDIT.PRINT.MENU) - (EXPAND \TEDIT.ABBREV.EXPAND) - (GET.OBJECT GET.OBJ.FROM.USER) - (OPENLINE \TEDIT.KEY.OPENLINE) + (:MANPAGE \TEDIT.MANPAGE) + (:OPEN.SEDIT \TEDIT.CALL.ED) + (:PRINT.MENU \TEDIT.PRINT.MENU) + (:EXPAND \TEDIT.ABBREV.EXPAND) + (:GET.OBJECT GET.OBJ.FROM.USER) + (:OPENLINE \TEDIT.KEY.OPENLINE) (* ;; "") (* ;; "From TEDITDORADOKEYS") - (WRAP.PARENS (\TEDIT.KEY.WRAP TSTREAM "(" ")")) - (WRAP.NEUTRAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM "%"" "%"")) - [WRAP.REAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM (CHARACTER (CHARCODE LEFT-DOUBLEQUOTE)) - (CHARACTER (CHARCODE RIGHT-DOUBLEQUOTE] + (:WRAP.PARENS (\TEDIT.KEY.WRAP TSTREAM "(" ")")) + (:WRAP.NEUTRAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM "%"" "%"")) + [:WRAP.REAL.DOUBLEQUOTES (\TEDIT.KEY.WRAP TSTREAM (CHARACTER (CHARCODE LEFT-DOUBLEQUOTE)) + (CHARACTER (CHARCODE RIGHT-DOUBLEQUOTE] (* ;; "") (* ;; "Clipboard") - (CLIPBOARD-PASTE PASTEFROMCLIPBOARD) - (CLIPBOARD-COPY \TEDIT.COPYTOCLIPBOARD) - (CLIPBOARD-EXTRACT \TEDIT.EXTRACTTOCLIPBOARD) + (:CLIPBOARD-PASTE PASTEFROMCLIPBOARD) + (:CLIPBOARD-COPY \TEDIT.COPYTOCLIPBOARD) + (:CLIPBOARD-EXTRACT \TEDIT.EXTRACTTOCLIPBOARD) (* ;; "") (* ;; "Wheelscroll") - (WHEELSCROLL-UP (WHEELSCROLL 'VERTICAL T)) - (WHEELSCROLL-DOWN (WHEELSCROLL 'VERTICAL)) - (WHEELSCROLL-LEFT (WHEELSCROLL 'HORIZONTAL)) - (WHEELSCROLL-RIGHT (WHEELSCROLL 'HORIZONTAL T)))) + (:WHEELSCROLL-UP (WHEELSCROLL 'VERTICAL T)) + (:WHEELSCROLL-DOWN (WHEELSCROLL 'VERTICAL)) + (:WHEELSCROLL-LEFT (WHEELSCROLL 'HORIZONTAL)) + (:WHEELSCROLL-RIGHT (WHEELSCROLL 'HORIZONTAL T)))) (RPAQQ TEDIT.BASIC.CHARBINDINGS ( @@ -1640,143 +1820,142 @@ (* ;; "History") - (UNDO "Meta,u" "Meta,z" "Function,4" "Function,44") - (UNDO.UNDO "Meta,U" "Meta,Z") - (REDO "Meta,r" "Meta,R" "Function,10" "Function,50") + (:UNDO "Meta,u" "Meta,z" "Function,4" "Function,44") + (:UNDO.UNDO "Meta,U" "Meta,Z") + (:REDO "Meta,r" "Meta,R" "Function,10" "Function,50") (* ;; "") (* ;; "Find") - (FIND.FORWARD "Meta,f" "Function,3" "Function,43") - (FIND.BACKWARD "Meta,F") - (FIND.FORWARD-AGAIN "Meta,g") - (FIND.BACKWARD-AGAIN "Meta,G") - (SUBSTITUTE "Meta,s" "Meta,S") - (NEXT "Meta,N" "Meta,n" "Function,22") + (:FIND.FORWARD "Meta,f" "Function,3" "Function,43") + (:FIND.BACKWARD "Meta,F") + (:FIND.FORWARD-AGAIN "Meta,g") + (:FIND.BACKWARD-AGAIN "Meta,G") + (:SUBSTITUTE "Meta,s" "Meta,S") + (:NEXT "Meta,N" "Meta,n" "Function,22") (* ;; "") (* ;; "Character looks") - (BOLD.ON "Function,102") - (BOLD.OFF "Function,142") - (BOLD.TOGGLE) - (ITALIC.ON "Function,103") - (ITALIC.OFF "Function,143") - (ITALIC.TOGGLE) - (UCASE "Function,104") - (LCASE "Function,144") - (STRIKEOUT.ON "Function,105") - (STRIKEOUT.OFF "Function,145") - (STRIKEOUT.TOGGLE) - (UNDERLINE.ON "Function,106") - (UNDERLINE.OFF "Function,146") - (UNDERLINE.TOGGLE) - (OVERLINE.ON) - (OVERLINE.OFF) - (OVERLINE.TOGGLE) - (SUBSCRIPT "Function,114") - (SUPERSCRIPT "Function,113") - (SMALLER "Function,110") - (LARGER "Function,150") - (FAMILYN "Meta,One" "Meta,Two" "Meta,Three" "Meta,Four" "Meta,Five" "Meta,Six") - (DEFAULTS "Function,115" "Function,155") - (SHOW.CHARLOOKS "Function,1") + (:BOLD.ON "Function,102") + (:BOLD.OFF "Function,142") + (:BOLD.TOGGLE) + (:ITALIC.ON "Function,103") + (:ITALIC.OFF "Function,143") + (:ITALIC.TOGGLE) + (:UCASE "Function,104") + (:LCASE "Function,144") + (:STRIKEOUT.ON "Function,105") + (:STRIKEOUT.OFF "Function,145") + (:STRIKEOUT.TOGGLE) + (:UNDERLINE.ON "Function,106") + (:UNDERLINE.OFF "Function,146") + (:UNDERLINE.TOGGLE) + (:OVERLINE.ON) + (:OVERLINE.OFF) + (:OVERLINE.TOGGLE) + (:SUBSCRIPT "Function,114") + (:SUPERSCRIPT "Function,113") + (:SMALLER "Function,110") + (:LARGER "Function,150") + (:FAMILYN "Meta,One" "Meta,Two" "Meta,Three" "Meta,Four" "Meta,Five" "Meta,Six") + (:DEFAULTS "Function,115" "Function,155") + (:SHOW.CHARLOOKS "Function,1") (* ;; "") (* ;; "Paragraph looks") - (QUAD "Function,101") - (NEST "Meta,[") - (UNNEST "Meta,]") + (:QUAD "Function,101") + (:NEST "Meta,[") + (:UNNEST "Meta,]") (* ;; "") (* ;; "Cursor/selection") - (ONECHAR.BACKWARD "Meta,<" "Meta,,") + (:ONECHAR.BACKWARD "Meta,<" "Meta,,") (* ; "From arrows") - (ONECHAR.FORWARD "Meta,>" "Meta,.") - (LINE.UP "Meta,^") - (LINE.DOWN "Meta,LF") - (ONEWORD.FORWARD) - (ONEWORD.BACKWARD) - (LINE.BEGIN) - (LINE.END) - (ALL "Meta,a" "Meta,A") + (:ONECHAR.FORWARD "Meta,>" "Meta,.") + (:LINE.UP "Meta,^") + (:LINE.DOWN "Meta,LF") + (:ONEWORD.FORWARD) + (:ONEWORD.BACKWARD) + (:LINE.BEGIN) + (:LINE.END) + (:ALL "Meta,a" "Meta,A") (* ;; "") (* ;; "Deletion") - (CHARDELETE "BS" "^A") - (* ; "CHARDELETE/WORDDELETE are TTC") - (CHARDELETE.FORWARD "^W" "^U") - (* ; "keyactions for DEL key ??") - (WORDDELELETE) - (WORDDELETE.FORWARD) - (* ; "^W is used for chardelete forward") - (LINEDELETE.FORWARD) - (LINEDELETE.BACKWARD) + (:CHARDELETE.BACKWARD "BS" "^A") + (:CHARDELETE.FORWARD RUBOUT) + (:WORDDELETE.BACKWARD "^W") + (:WORDDELETE.FORWARD) + (:LINEDELETE.FORWARD) + (:LINEDELETE.BACKWARD) + (:LINEDELETE "^U") (* ;; "") (* ;; "Miscellaneous") - (MANPAGE "Meta,D" "Meta,d") - (OPEN.SEDIT "Meta,O" "Meta,o") - (PRINT.MENU "Meta,P" "Meta,p") - (EXPAND "^X") - (GET.OBJECT "^O") + (:MANPAGE "Meta,D" "Meta,d") + (:OPEN.SEDIT "Meta,O" "Meta,o") + (:PRINT.MENU "Meta,P" "Meta,p") + (:EXPAND "^X") + (:GET.OBJECT "^O") (* ;; "") (* ;; "Wheelscroll ") - (WHEELSCROLL-UP "WHEELSCROLL-UP") - (WHEELSCROLL-DOWN "WHEELSCROLL-DOWN") - (WHEELSCROLL-LEFT "WHEELSCROLL-LEFT") - (WHEELSCROLL-RIGHT "WHEELSCROLL-RIGHT") + (:WHEELSCROLL-UP "WHEELSCROLL-UP") + (:WHEELSCROLL-DOWN "WHEELSCROLL-DOWN") + (:WHEELSCROLL-LEFT "WHEELSCROLL-LEFT") + (:WHEELSCROLL-RIGHT "WHEELSCROLL-RIGHT") (* ;; "") (* ;; "Clipboard") - (CLIPBOARD-PASTE "Meta,V" "Meta,v") - (CLIPBOARD-COPY "Meta,C" "Meta,c") - (CLIPBOARD-EXTRACT "Meta,X" "Meta,x"))) + (:CLIPBOARD-PASTE "Meta,V" "Meta,v") + (:CLIPBOARD-COPY "Meta,C" "Meta,c") + (:CLIPBOARD-EXTRACT "Meta,X" "Meta,x"))) (RPAQQ TEDIT.DORADO.CHARBINDINGS ( (* ;; "Taken from lispusers>TKDORADO, these make the indicated Tedit commands available from the Dorado keyboard.") - (DEFAULTS "Meta,^V") - (BOLD.ON "Meta,^B" "Meta,b") - (BOLD.OFF "Meta,^N" "Meta,B") - (ITALIC.ON "Meta,^I") - (ITALIC.OFF "Meta,^O") - (OVERLINE.ON "Meta,^D") - (OVERLINE.OFF "Meta,^F") - (STRIKEOUT.ON "Meta,^G") - (STRIKEOUT.OFF "Meta,^H") + (:DEFAULTS "Meta,^V") + (:BOLD.ON "Meta,^B" "Meta,b") + (:BOLD.OFF "Meta,^N" "Meta,B") + (:ITALIC.ON "Meta,^I") + (:ITALIC.OFF "Meta,^O") + (:OVERLINE.ON "Meta,^D") + (:OVERLINE.OFF "Meta,^F") + (:STRIKEOUT.ON "Meta,^G" "Meta,=") + (:STRIKEOUT.OFF "Meta,^H" "Meta,+") (* (UNDERLINE.ON "Meta,^J") - conflicts with LINE.DOWN) - (UNDERLINE.OFF "Meta,^K") - (SMALLER "Meta,^[") - (LARGER "Meta,^^]") - (SUBSCRIPT "Meta,^^") - (SUPERSCRIPT "Meta,^_") - (QUAD "Meta,^C") + conflicts with :LINE.DOWN) + (:UNDERLINE.ON "Meta,-") + (:UNDERLINE.OFF "Meta,^K" "Meta,_") + (:SMALLER "Meta,^[") + (:LARGER "Meta,^^]") + (:SUBSCRIPT "Meta,^^") + (:SUPERSCRIPT "Meta,^_") + (:QUAD "Meta,^C") (* ;; "Mappings from lispusers>TEDITDORADOKEYS") @@ -1787,19 +1966,17 @@ conflict with clipboard) (* ("Meta,^" SUBSCRIPT) conflicts with LINE.UP) - (BOLD.ON "Meta,b") - (BOLD.OFF "Meta,B") - (ITALIC.ON "Meta,i") - (ITALIC.OFF "Meta,I") - (STRIKEOUT.ON "Meta,=") - (STRIKEOUT.OFF "Meta,+") - (UNDERLINE.ON "Meta,-") - (UNDERLINE.OFF "Meta,_") - (WRAP.PARENS "Meta,(" "Meta,Nine") - (WRAP.NEUTRAL.DOUBLEQUOTES "Meta,%"") - (WRAP.REAL.DOUBLEQUOTES "Meta,'"))) + (:WRAP.PARENS "Meta,(" "Meta,Nine") + (:WRAP.NEUTRAL.DOUBLEQUOTES "Meta,%"") + (:WRAP.REAL.DOUBLEQUOTES "Meta,'"))) -(RPAQ TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS)) +(RPAQ? TEDIT.CHARBINDINGS (APPEND TEDIT.BASIC.CHARBINDINGS TEDIT.DORADO.CHARBINDINGS)) + +(RPAQ? TEDIT.CHARACTIONS (APPEND ORIG.TEDIT.CHARACTIONS)) +(DECLARE%: DOEVAL@COMPILE DONTCOPY + +(GLOBALVARS TEDIT.CHARBINDINGS TEDIT.CHARACTIONS) +) @@ -1811,157 +1988,31 @@ (RPAQ TEDIT.WORDBOUND.READTABLE (\TEDIT.WORDBOUND.READTABLE)) ) - - - -(* ;; "On-screen formatting buttons (TEDIT.BUTTONS.BUILD) creates the default button menu") - - -(RPAQQ TEDIT.BUTTONS.SPEC - ((Bold BOLD.ON BOLD.OFF) - (Italic ITALIC.ON ITALIC.OFF) - (Case UCASE LCASE) - ((Strike- out) - STRIKEOUT.ON STRIKEOUT.OFF) - ((Under- line) - UNDERLINE.ON UNDERLINE.OFF) - ((Super/ Sub) - SUPERSCRIPT SUBSCRIPT) - ((Larger Smaller) - LARGER SMALLER) - (Justify QUAD) - (Defaults DEFAULTS) - (Show SHOW.CHARLOOKS) - (Redo REDO))) -(DEFINEQ - -(TEDIT.BUTTONS.BUILD - [LAMBDA (BUTTONSPEC TITLE NROWS KEYBINDINGS) (* ; "Edited 6-Aug-2025 08:59 by rmk") - (* ; "Edited 23-Mar-2025 10:31 by rmk") - (* ; "Edited 18-Mar-2025 15:47 by rmk") - (* ; "Edited 15-Mar-2025 15:24 by rmk") - (* ; "Edited 5-Nov-85 15:35 by lmm") - - (* ;; "Each button is of the form (label action1 [action2]), e.g. (BOLD BOLD.ON BOLD.OFF) or (JUSTIFY QUAD)") - - (CL:UNLESS (AND (WINDOWP TEDIT.BUTTONS.WINDOW) - (OPENWP TEDIT.BUTTONS.WINDOW)) - (CL:UNLESS BUTTONSPEC (SETQ BUTTONSPEC TEDIT.BUTTONS.SPEC)) - (CL:UNLESS TITLE - (SETQ TITLE '(Tedit Buttons))) (* ; "List for the Shrink button label") - (CL:UNLESS KEYBINDINGS (SETQ KEYBINDINGS TEDIT.CHARBINDINGS)) - - (* ;; "The constructed menu will bksysbuf a character bound to action1 if the shift is not down, otherwise a character bound to action2. action2 is action1 if it is not specified. Buttons with no actions are skipped.") - - (LET (ITEMS) - (SETQ ITEMS (for BUTTON CHARS in BUTTONSPEC - eachtime (CL:WHEN (AND (CDR BUTTON) - (NULL (CDDR BUTTON))) - [SETQ BUTTON (APPEND BUTTON (CONS (CADR BUTTON]) - when [SETQ CHARS (for ANAME CHAR in (CDR BUTTON) - when (SETQ CHAR (CADR (ASSOC ANAME KEYBINDINGS))) - collect (CL:IF (CHARCODEP CHAR) - CHAR - (CHARCODE.DECODE CHAR))] - collect (LIST (TEDIT.BUTTONBITMAP.FILL (CAR BUTTON)) - CHARS))) - (SETQ TEDIT.BUTTONS.WINDOW (ADDMENU [create MENU - ITEMS _ ITEMS - TITLE _ (CL:IF (LISTP TITLE) - (SUBSTRING TITLE 2 -2) - TITLE) - MENUROWS _ (OR NROWS 1) - WHENSELECTEDFN _ - (FUNCTION (LAMBDA (X) - (CL:WHEN - (EQ '\TEDIT.PROCENTRYFN - (FETCH (PROCESS - PROCTTYENTRYFN - ) - OF (TTY.PROCESS))) - [\TEDIT.COMMAND.FUNCTION? - (TEXTSTREAM (TTY.PROCESS)) - (CL:IF (SHIFTDOWNP - 'SHIFT) - (CADR (CADR X)) - (CAR (CADR X)))])] - NIL - (create POSITION - XCOORD _ - (PLUS (DIFFERENCE (QUOTIENT SCREENWIDTH 2) - (QUOTIENT (TIMES (BITMAPWIDTH - - TEDIT.BUTTONBITMAP - ) - (LENGTH ITEMS)) - 2)) - (TIMES 2 WBorder)) - YCOORD _ 0))) - [WINDOWPROP TEDIT.BUTTONS.WINDOW 'ICON (TEDIT.BUTTONBITMAP.FILL '(Tedit Buttons] - (WINDOWPROP TEDIT.BUTTONS.WINDOW 'ICONPOSITION (create POSITION - XCOORD _ 0 - YCOORD _ 0))))]) - -(TEDIT.BUTTONBITMAP.FILL - [LAMBDA (X) (* ; "Edited 16-Mar-2025 21:12 by rmk") - (* ; "Edited 15-Mar-2025 14:55 by rmk") - (* lmm " 5-Nov-85 14:04") - (LET ((BITMAP (BITMAPCOPY TEDIT.BUTTONBITMAP)) - DS QUARTER REGION) - (SETQ DS (DSPCREATE BITMAP)) - (DSPFONT MENUFONT DS) - (if (LISTP X) - then (* ; - "this is supposed to have two labels, one on top of the other") - (SETQ QUARTER (IQUOTIENT (BITMAPHEIGHT BITMAP) - 4)) - (CENTERPRINTINREGION (CADR X) - (SETQ REGION (create REGION - LEFT _ 0 - BOTTOM _ QUARTER - WIDTH _ (BITMAPWIDTH BITMAP) - HEIGHT _ QUARTER)) - DS) - (replace BOTTOM of REGION with (ITIMES 2 QUARTER)) - (CENTERPRINTINREGION (CAR X) - REGION DS) - else (CENTERPRINTINREGION X (create REGION - LEFT _ 0 - BOTTOM _ 0 - WIDTH _ (BITMAPWIDTH BITMAP) - HEIGHT _ (BITMAPHEIGHT BITMAP)) - DS)) - BITMAP]) -) - -(RPAQ? TEDIT.BUTTONS.WINDOW NIL) - -(RPAQQ TEDIT.BUTTONBITMAP #*(78 48)OOOOOOOOOOOOOOOOOOOLON@@@@@@@@@@@@@@@AOLO@@@@@@@@@@@@@@@@@CLO@@@@@@@@@@@@@@@@@CLMH@@@@@@@@@@@@@@@@DLNLGOOOOOOOOOOOOOOHHLMFL@@@@@@@@@@@@@@M@LJK@@@@@@@@@@@@@@@B@DMF@@@@@@@@@@@@@@@A@DJN@@@@@@@@@@@@@@@AHDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMD@@@@@@@@@@@@@@@@HDJL@@@@@@@@@@@@@@@@HDMF@@@@@@@@@@@@@@@AHDJJ@@@@@@@@@@@@@@@A@DMG@@@@@@@@@@@@@@@B@DNEL@@@@@@@@@@@@@@O@LLIGOOOOOOOOOOOOOOMHLOBBJJJJJJJJJJJJJJJLLNDEEEEEEEEEEEEEEEEGLOHJJJJJJJJJJJJJJJJKLOLEEEEEEEEEEEEEEEEOLOOOOOOOOOOOOOOOOOOOL -) (DECLARE%: DONTCOPY - (FILEMAP (NIL (3941 22863 (TEDIT.INSTALL.CHARBINDINGS 3951 . 7842) (TEDIT.CLEAR.CHARBINDINGS 7844 . -10522) (TEDIT.GET.CHARACTION 10524 . 13270) (TEDIT.GET.CHARBINDING 13272 . 15411) ( -TEDIT.GET.ALL.CHARBINDINGS 15413 . 17729) (TEDIT.CHARBINDINGS.INVERT 17731 . 19461) ( -TEDIT.GET.ALL.CHARACTIONS 19463 . 21549) (TEDIT.CONFLICTING.CHARBINDINGS 21551 . 22861)) (22923 32978 -(\TEDIT.KEY.CHARLOOKS 22933 . 24125) (\TEDIT.KEY.QUAD 24127 . 26220) (\TEDIT.DEFAULTSSEL 26222 . 26833 -) (\TEDIT.SETDEFAULT.FROM.SEL 26835 . 27512) (\TEDIT.KEY.SIZE 27514 . 28710) (\TEDIT.SUBSCRIPTSEL -28712 . 28915) (\TEDIT.SUPERSCRIPTSEL 28917 . 29121) (\TEDIT.KEY.TRANSFORM 29123 . 31120) ( -\TEDIT.KEY.OPENLINE 31122 . 31576) (\TEDIT.KEY.FAMILYN 31578 . 32976)) (32979 33268 (CAP-CASECODE -32989 . 33266)) (33302 36734 (\TEDIT.SHOWCARETLOOKS 33312 . 35827) (\TEDIT.DESCRIBEFONT 35829 . 36732) -) (36765 51738 (\TEDIT.ONECHAR.BACKWARD 36775 . 37922) (\TEDIT.ONECHAR.FORWARD 37924 . 39160) ( -\TEDIT.ONELINE.UP 39162 . 42123) (\TEDIT.ONELINE.DOWN 42125 . 43782) (\TEDIT.ONELINE.MOVE 43784 . -46071) (\TEDIT.ONEWORD.BACKWARD 46073 . 47261) (\TEDIT.ONEWORD.FORWARD 47263 . 48450) ( -\TEDIT.LINE.BEGIN 48452 . 49531) (\TEDIT.LINE.END 49533 . 50770) (\TEDIT.DOCUMENT.BEGIN 50772 . 51131) - (\TEDIT.DOCUMENT.END 51133 . 51736)) (51739 53781 (\TEDIT.LINEDELETE.FORWARD 51749 . 52748) ( -\TEDIT.LINEDELETE.BACKWARD 52750 . 53779)) (53782 56310 (\TEDIT.KEY.NEST 53792 . 56308)) (56311 57593 -(\TEDIT.KEY.WRAP 56321 . 57591)) (57684 65732 (\TEDIT.KEY.FIND 57694 . 62872) ( -\TEDIT.KEY.FIND.SEARCHSTRING 62874 . 64014) (\TEDIT.GET.TARGET.STRING 64016 . 65730)) (65763 68395 ( -\TEDIT.KEY.SUBSTITUTE 65773 . 65994) (\TEDIT.MANPAGE 65996 . 67243) (\TEDIT.CALL.ED 67245 . 68075) ( -\TEDIT.SELECT.ALL 68077 . 68393)) (68422 74112 (\TEDIT.CLIPBOARD 68432 . 70187) ( -\TEDIT.COPYTOCLIPBOARD 70189 . 70969) (\TEDIT.EXTRACTTOCLIPBOARD 70971 . 71166) (\TEDIT.WRITE.SEL -71168 . 74110)) (74278 86280 (\TEDIT.READTABLE 74288 . 75224) (\TEDIT.WORDBOUND.READTABLE 75226 . -78165) (TEDIT.GETSYNTAX 78167 . 79596) (TEDIT.SETSYNTAX 79598 . 80803) (TEDIT.GETFUNCTION 80805 . -82070) (TEDIT.SETFUNCTION 82072 . 84058) (TEDIT.WORDGET 84060 . 84321) (TEDIT.WORDSET 84323 . 84954) ( -TEDIT.ATOMBOUND.READTABLE 84956 . 86278)) (98109 105097 (TEDIT.BUTTONS.BUILD 98119 . 103365) ( -TEDIT.BUTTONBITMAP.FILL 103367 . 105095))))) + (FILEMAP (NIL (5010 23527 (TEDIT.INSTALL.CHARBINDINGS 5020 . 8123) (TEDIT.CLEAR.CHARBINDINGS 8125 . +11145) (TEDIT.GET.CHARACTION 11147 . 13928) (TEDIT.GET.CHARBINDING 13930 . 16107) ( +TEDIT.GET.ALL.CHARBINDINGS 16109 . 18608) (TEDIT.CHARBINDINGS.INVERT 18610 . 19889) ( +TEDIT.GET.ALL.CHARACTIONS 19891 . 22213) (TEDIT.CONFLICTING.CHARBINDINGS 22215 . 23525)) (23587 33642 +(\TEDIT.KEY.CHARLOOKS 23597 . 24789) (\TEDIT.KEY.QUAD 24791 . 26884) (\TEDIT.DEFAULTSSEL 26886 . 27497 +) (\TEDIT.SETDEFAULT.FROM.SEL 27499 . 28176) (\TEDIT.KEY.SIZE 28178 . 29374) (\TEDIT.SUBSCRIPTSEL +29376 . 29579) (\TEDIT.SUPERSCRIPTSEL 29581 . 29785) (\TEDIT.KEY.TRANSFORM 29787 . 31784) ( +\TEDIT.KEY.OPENLINE 31786 . 32240) (\TEDIT.KEY.FAMILYN 32242 . 33640)) (33643 33932 (CAP-CASECODE +33653 . 33930)) (33966 37398 (\TEDIT.SHOWCARETLOOKS 33976 . 36491) (\TEDIT.DESCRIBEFONT 36493 . 37396) +) (37429 52402 (\TEDIT.ONECHAR.BACKWARD 37439 . 38586) (\TEDIT.ONECHAR.FORWARD 38588 . 39824) ( +\TEDIT.ONELINE.UP 39826 . 42787) (\TEDIT.ONELINE.DOWN 42789 . 44446) (\TEDIT.ONELINE.MOVE 44448 . +46735) (\TEDIT.ONEWORD.BACKWARD 46737 . 47925) (\TEDIT.ONEWORD.FORWARD 47927 . 49114) ( +\TEDIT.LINE.BEGIN 49116 . 50195) (\TEDIT.LINE.END 50197 . 51434) (\TEDIT.DOCUMENT.BEGIN 51436 . 51795) + (\TEDIT.DOCUMENT.END 51797 . 52400)) (52403 55711 (\TEDIT.LINEDELETE.FORWARD 52413 . 53522) ( +\TEDIT.LINEDELETE.BACKWARD 53524 . 54663) (\TEDIT.LINEDELETE 54665 . 55709)) (55712 58240 ( +\TEDIT.KEY.NEST 55722 . 58238)) (58241 59523 (\TEDIT.KEY.WRAP 58251 . 59521)) (59614 67662 ( +\TEDIT.KEY.FIND 59624 . 64802) (\TEDIT.KEY.FIND.SEARCHSTRING 64804 . 65944) (\TEDIT.GET.TARGET.STRING +65946 . 67660)) (67693 70325 (\TEDIT.KEY.SUBSTITUTE 67703 . 67924) (\TEDIT.MANPAGE 67926 . 69173) ( +\TEDIT.CALL.ED 69175 . 70005) (\TEDIT.SELECT.ALL 70007 . 70323)) (70352 76042 (\TEDIT.CLIPBOARD 70362 + . 72117) (\TEDIT.COPYTOCLIPBOARD 72119 . 72899) (\TEDIT.EXTRACTTOCLIPBOARD 72901 . 73096) ( +\TEDIT.WRITE.SEL 73098 . 76040)) (76208 88753 (\TEDIT.READTABLE 76218 . 77154) ( +\TEDIT.WORDBOUND.READTABLE 77156 . 80204) (TEDIT.GETSYNTAX 80206 . 81435) (TEDIT.SETSYNTAX 81437 . +82751) (TEDIT.GETFUNCTION 82753 . 84226) (TEDIT.SETFUNCTION 84228 . 86422) (TEDIT.WORDGET 86424 . +86685) (TEDIT.WORDSET 86687 . 87427) (TEDIT.ATOMBOUND.READTABLE 87429 . 88751)) (88854 95842 ( +TEDIT.BUTTONS.BUILD 88864 . 94110) (TEDIT.BUTTONBITMAP.FILL 94112 . 95840)) (98307 98895 ( +\TEDIT.TTCCLASS 98317 . 98893))))) STOP diff --git a/library/tedit/TEDIT-FNKEYS.LCOM b/library/tedit/TEDIT-FNKEYS.LCOM index 3682e535d..a9e1e641f 100644 Binary files a/library/tedit/TEDIT-FNKEYS.LCOM and b/library/tedit/TEDIT-FNKEYS.LCOM differ diff --git a/library/tedit/TEDIT-RELEASENOTES.TEDIT b/library/tedit/TEDIT-RELEASENOTES.TEDIT index de72aa2ac..319e68a5e 100644 Binary files a/library/tedit/TEDIT-RELEASENOTES.TEDIT and b/library/tedit/TEDIT-RELEASENOTES.TEDIT differ diff --git a/lispusers/TEDIT-PF-SEE b/lispusers/TEDIT-PF-SEE index fef23770c..89637de6e 100644 --- a/lispusers/TEDIT-PF-SEE +++ b/lispusers/TEDIT-PF-SEE @@ -1,25 +1,23 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "29-Jul-2025 22:01:56"  -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>TEDIT-PF-SEE.;150 11962 +(FILECREATED "12-Nov-2025 15:49:07" {WMEDLEY}TEDIT-PF-SEE.;156 13422 :EDIT-BY rmk - :CHANGES-TO (FNS PF-TEDIT) + :CHANGES-TO (VARS TEDIT-PF-SEECOMS) - :PREVIOUS-DATE "29-Jul-2025 18:07:48" -{DSK}kaplan>Local>medley3.5>working-medley>lispusers>TEDIT-PF-SEE.;149) + :PREVIOUS-DATE "26-Sep-2025 22:53:59" {WMEDLEY}TEDIT-PF-SEE.;155) (PRETTYCOMPRINT TEDIT-PF-SEECOMS) (RPAQQ TEDIT-PF-SEECOMS [(FNS PF-TEDIT PF-TEDIT-FROM-TEXT) - (COMMANDS ts tf) + (COMMANDS ts tf tc tv tr) (FILES (SYSLOAD) REGIONMANAGER VERSIONDEFS) - (ALISTS (TEDIT.CHARACTIONS TEDIT-PF) - (TEDIT.CHARBINDINGS TEDIT-PF)) + (ALISTS (TEDIT.CHARACTIONS :TEDIT-PF) + (TEDIT.CHARBINDINGS :TEDIT-PF)) (P (MOVD? 'PFCOPYBYTES 'PFI.MAYBE.PP.DEFINITION) (MOVD? 'NILL (FUNCTION TEDIT.SETFUNCTION)) (TEDIT.INSTALL.CHARBINDINGS)) @@ -29,7 +27,9 @@ (DEFINEQ (PF-TEDIT - [LAMBDA (FN IFILES VERSION REPRINT) (* ; "Edited 29-Jul-2025 22:01 by rmk") + [LAMBDA (ITEM IFILES VERSION REPRINT TYPE) (* ; "Edited 23-Sep-2025 11:24 by rmk") + (* ; "Edited 20-Sep-2025 08:56 by rmk") + (* ; "Edited 29-Jul-2025 22:01 by rmk") (* ; "Edited 29-Jun-2025 16:18 by rmk") (* ; "Edited 14-Apr-2025 22:00 by rmk") (* ; "Edited 26-Mar-2025 10:08 by rmk") @@ -46,24 +46,24 @@ (* ; "Edited 12-Jan-2022 13:15 by rmk") (* ; "Edited 30-Dec-2021 23:17 by rmk") - (* ;; "PF* to a read-only TEDIT window. First argument is the function name, second if given is the input file.") + (* ;; "Shows ITEM of type TYPE in a scrollable read-only TEDIT window. First argument is the item name, second if given is the input file.") - (* ;; "This uses PFCOPYBYTES so we see what it looks like on the file. But some functions were not prettyprinted, so they appear as useless garbage.") - - (* ;; "In that case, calling again with REPRINT=T will read and reprint. And, invoking tf again with no arguments at all will also reprint the last function in the same window") + (* ;; "Calling again with REPRINT=T (or ITEM=T) will read and reprint the same item. And, calling again with no arguments at all will also reprint the last item in the same window") (SETQ IFILES (MKLIST IFILES)) - (CL:WHEN (LISTP FN) - (SETQ FN (CAR FN))) - (SELECTQ FN + (CL:WHEN (INTERSECTION TYPE '(FNS FUNCTIONS)) + (SETQ TYPE NIL)) + (CL:WHEN (INTERSECTION TYPE '(FNS FUNCTIONS)) + (SETQ TYPE NIL)) + (SELECTQ ITEM ((t T NIL) (SETQ REPRINT T) - (SETQ FN LASTWORD)) - (if (VERSIONP FN) - then (SETQ IFILES (CONS FN)) - (SETQ FN LASTWORD) - else (SETQ LASTWORD FN))) - (CL:UNLESS FN (ERROR "No function to print")) + (SETQ ITEM LASTWORD)) + (if (VERSIONP ITEM) + then (SETQ IFILES (CONS ITEM)) + (SETQ ITEM LASTWORD) + else (SETQ LASTWORD ITEM))) + (CL:UNLESS ITEM (ERROR "No function to print")) (CL:WHEN (AND (VERSIONP IFILES) (NULL VERSION)) (SETQ VERSION IFILES) @@ -73,91 +73,107 @@ (SETQ REPRINT T) [SETQ IFILES (LDIFFERENCE IFILES '(t T]) (CL:UNLESS IFILES - (SETQ IFILES (WHEREIS FN '(FNS FUNCTIONS) - T))) + [SETQ IFILES (OR (WHEREIS ITEM TYPE T) + (AND (NULL TYPE) + (WHEREIS ITEM 'MACROS T]) (if IFILES - then (* ; "skip compiled files") - - (* ;; "Since we are creating readonly Tedits, try to keep the TTY where it is.") - - (for IFILE LOC TSTREAM ENV EXPR TFPROP WINDOW inside IFILES - eachtime (CL:IF (VERSIONP IFILE) - (SETQ IFILE (FINDFILEVERSION (CAR (WHEREIS FN NIL T)) - IFILE))) unless (MEMB (FILENAMEFIELD IFILE 'EXTENSION) - *COMPILED-EXTENSIONS*) - do - (SETQ LOC (FINDFNDEF FN IFILE)) - (if (LISTP LOC) - then (SETQ TFPROP (LIST FN (CAR LOC))) - [SETQ WINDOW (find W in (OPENWINDOWS) - suchthat (AND (EQUAL TFPROP (WINDOWPROP W 'TF)) - (TEXTSTREAM W T] - [if (AND WINDOW (NOT REPRINT)) - then - (* ;; - "If already an open PF window on this function in this file, just raise it to the top") - - (TOTOPW WINDOW) - (RETURN) - else (CL:WITH-OPEN-FILE - (ISTREAM (POP LOC) - :DIRECTION :INPUT) - (SETQ ENV (LISPSOURCEFILEP ISTREAM)) - (SETFILEINFO ISTREAM 'FORMAT ENV) - [SETQ TSTREAM (OPENTEXTSTREAM - NIL NIL `(PARABREAKCHARS NIL OPENWIDTH - ,(TIMES TEDIT.SOURCE.LINELENGTH - (CHARWIDTH (CHARCODE SPACE) - DEFAULTFONT] - (DSPFONT DEFAULTFONT TSTREAM) - (PRINTOUT TSTREAM 5 "[From " (FULLNAME ISTREAM) - "]" T) - (PRINT-READER-ENVIRONMENT ENV TSTREAM) - (if REPRINT - then (SETFILEPTR ISTREAM (POP LOC)) - (SETQ EXPR (WITH-READER-ENVIRONMENT ENV (READ ISTREAM))) - (WITH-READER-ENVIRONMENT ENV - (if (EQ FN (CAR EXPR)) - then (DSPFONT BOLDFONT TSTREAM) - (PRINT FN TSTREAM) - (DSPFONT DEFAULTFONT TSTREAM) - (SETQ EXPR (CADR EXPR)) - (PRINTDEF EXPR 3 T NIL NIL TSTREAM) - elseif (EQ FN (CADR EXPR)) - then - (* ;; - "Presumably a DEFUN. Print the CAR, boldface the cadr") - - (PRINTOUT TSTREAM "(" .P2 (CAR EXPR) - " " .FONT BOLDFONT .P2 (CADR EXPR) - .FONT DEFAULTFONT " " .P2 (CADDR EXPR) - T 3) - (PRINTDEF (CDDDR EXPR) - 3 T T NIL TSTREAM) - (PRIN3 ")" TSTREAM) - else (PRINTDEF EXPR 3 NIL NIL NIL TSTREAM))) - else (PFI.MAYBE.PP.DEFINITION ISTREAM TSTREAM (POP LOC) - (POP LOC))) - (TERPRI TSTREAM) - [TEDIT TSTREAM (OR WINDOW 'TF) - NIL - `(READONLY T TITLE ,(CONCAT FN " from " (FULLNAME ISTREAM)) - ITEM-NAME - ,FN BOUNDTABLE ,(TEDIT.ATOMBOUND.READTABLE *READTABLE*] - - (* ;; "The windowprop allows for reprinting as a window action, or reprinting from a command that can find and reuse the previous (presumably unprettied) window.") - - (WINDOWPROP (WFROMDS TSTREAM) - 'TF TFPROP) - (TOTOPW (WFROMDS TSTREAM] - elseif (EQ LOC 'FILE.NOT.FOUND) - then (printout T "file " IFILE " not found." T) - else (printout T FN " not found on " LOC "." T))) - (SETQ *LAST-DF* FN) - else (PRINTOUT T FN " has no function definition" T]) + then (for IFILE TSTREAM DEF TFPROP WINDOW inside IFILES + eachtime (SETQ IFILE (if (CL:IF (VERSIONP IFILE) + (FINDFILEVERSION (CAR (WHEREIS ITEM TYPE T)) + IFILE) + (FINDFILE IFILE T)) + else (printout T "file " IFILE " not found." T) + (GO $$ITERATE))) unless (MEMB (FILENAMEFIELD IFILE + 'EXTENSION) + *COMPILED-EXTENSIONS*) + do (CL:UNLESS [SETQ DEF (CL:IF TYPE + (GETDEF ITEM TYPE IFILE 'NOERROR) + (OR (GETDEF ITEM 'FNS IFILE 'NOERROR) + (GETDEF ITEM 'FUNCTIONS IFILE 'NOERROR) + (GETDEF ITEM 'MACROS IFILE 'NOERROR)))] + (printout T ITEM " not found on " IFILE "." T) + (GO $$ITERATE)) + + (* ;; "We found ITEM of TYPE on IFILE") + + (SETQ TFPROP (LIST ITEM TYPE IFILE)) + [SETQ WINDOW (find W in (OPENWINDOWS) + suchthat (AND (EQUAL TFPROP (WINDOWPROP W 'TF)) + (TEXTSTREAM W T] + (CL:WHEN (AND WINDOW (NOT REPRINT)) + + (* ;; + "If already an open window on this item in this file, just raise it to the top") + + (TOTOPW WINDOW) + (RETURN)) + [SETQ TSTREAM (OPENTEXTSTREAM NIL NIL + `(PARABREAKCHARS NIL OPENWIDTH + ,(TIMES TEDIT.SOURCE.LINELENGTH (CHARWIDTH + (CHARCODE SPACE) + DEFAULTFONT] + (CL:WITH-OPEN-FILE (ISTREAM IFILE :DIRECTION :INPUT) + (* ; "Print the reader environment") + (PRINTOUT TSTREAM .FONT DEFAULTFONT 5) + (PRINT-READER-ENVIRONMENT (LISPSOURCEFILEP ISTREAM) + TSTREAM)) + (DSPFONT DEFAULTFONT TSTREAM) + [if (FNTYP DEF) + then (PRINTOUT TSTREAM "(" .FONT BOLDFONT .P2 ITEM " " .FONT DEFAULTFONT) + (PRINTDEF DEF 3 T NIL NIL TSTREAM) + (PRIN3 ")" TSTREAM) + elseif (SELECTQ (CAR DEF) + ((CL:DEFUN DEFMACRO) (* ; "Could look at :DEFINITION-NAME for definers in general, but we still have to pick out the arguments here (CADDR).") + (PRINTOUT TSTREAM "(" .P2 (CAR DEF) + " " .FONT BOLDFONT .P2 (CADR DEF) + .FONT DEFAULTFONT " " .P2 (CADDR DEF)) + (PRINTDEF (CDDDR DEF) + 3 T T NIL TSTREAM) + (PRIN3 ")" TSTREAM)) + (if (EQ ITEM (CAR DEF)) + then (PRINTOUT TSTREAM "(" .FONT BOLDFONT .P2 ITEM .FONT + DEFAULTFONT) + (PRINTDEF (CADR DEF) + 3 + (NOT TYPE) + NIL NIL TSTREAM) + (PRIN3 ")" TSTREAM) + elseif (EQ ITEM (CADR DEF)) + then (PRINTOUT TSTREAM "(" .P2 (CAR DEF) + " " .FONT BOLDFONT .P2 ITEM .FONT DEFAULTFONT) + (PRINTDEF (CDDR DEF) + 3 + (NEQ TYPE 'VARS) + T NIL TSTREAM) + (PRIN3 ")" TSTREAM) + else (PRINTOUT TSTREAM .FONT BOLDFONT .P2 ITEM ":" .FONT + DEFAULTFONT) + (PRINTDEF DEF 3 (NOT TYPE) + NIL NIL TSTREAM] + (TERPRI TSTREAM) + + (* ;; "Since we are creating readonly Tedits, try to keep the TTY where it is.") + + [TEDIT TSTREAM (OR WINDOW 'TF) + NIL + `(READONLY T TITLE ,(CONCAT ITEM " from " IFILE) + ITEM-NAME + ,ITEM BOUNDTABLE ,(TEDIT.ATOMBOUND.READTABLE *READTABLE*] + + (* ;; "The windowprop allows for reprinting as a window action, or reprinting from a command that can find and reuse the previous (presumably unprettied) window.") + + (WINDOWPROP (WFROMDS TSTREAM) + 'TF TFPROP) + (TOTOPW (WFROMDS TSTREAM))) + (SETQ *LAST-DF* ITEM) + else (PRINTOUT T ITEM " has no " (CL:IF TYPE + (L-CASE TYPE) + "function") + " definition" T]) (PF-TEDIT-FROM-TEXT - [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 14-Apr-2025 21:59 by rmk") + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 23-Sep-2025 23:28 by rmk") + (* ; "Edited 14-Apr-2025 21:59 by rmk") (* ; "Edited 7-Apr-2025 23:03 by rmk") (* ; "Edited 5-Dec-2024 22:20 by rmk") (* ; "Edited 26-Aug-2024 23:13 by rmk") @@ -175,7 +191,7 @@ ALLFILES) (if (EQ 0 (NCHARS FN)) then (TEDIT.PROMPTPRINT TSTREAM "Please select a function to display" T) - elseif (SETQ ALLFILES (WHEREIS FN '(FNS FUNCTIONS) + elseif (SETQ ALLFILES (WHEREIS FN '(FNS FUNCTIONS MACROS) T)) then (PF-TEDIT FN (CAR (OR (MEMB (FILENAMEFIELD THISFILE) ALLFILES) @@ -197,12 +213,19 @@ (DEFCOMMAND tf (FN FILE VERSION) (PF-TEDIT FN FILE VERSION)) +(DEFCOMMAND tc (ITEM FILE VERSION) (PF-TEDIT (FILECOMS ITEM) + FILE VERSION T 'VARS)) + +(DEFCOMMAND tv (ITEM FILE VERSION) (PF-TEDIT ITEM FILE VERSION T 'VARS)) + +(DEFCOMMAND tr (ITEM FILE VERSION) (PF-TEDIT ITEM FILE VERSION T 'RECORDS)) + (FILESLOAD (SYSLOAD) REGIONMANAGER VERSIONDEFS) -(ADDTOVAR TEDIT.CHARACTIONS (TEDIT-PF PF-TEDIT-FROM-TEXT)) +(ADDTOVAR TEDIT.CHARACTIONS (:TEDIT-PF PF-TEDIT-FROM-TEXT)) -(ADDTOVAR TEDIT.CHARBINDINGS (TEDIT-PF "Meta,t" "Meta,T")) +(ADDTOVAR TEDIT.CHARBINDINGS (:TEDIT-PF "Meta,t" "Meta,T")) (MOVD? 'PFCOPYBYTES 'PFI.MAYBE.PP.DEFINITION) @@ -218,5 +241,5 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1080 10900 (PF-TEDIT 1090 . 9166) (PF-TEDIT-FROM-TEXT 9168 . 10898))))) + (FILEMAP (NIL (1018 12068 (PF-TEDIT 1028 . 10218) (PF-TEDIT-FROM-TEXT 10220 . 12066))))) STOP diff --git a/lispusers/TEDIT-PF-SEE.LCOM b/lispusers/TEDIT-PF-SEE.LCOM index e8009bfcf..71170a2ae 100644 Binary files a/lispusers/TEDIT-PF-SEE.LCOM and b/lispusers/TEDIT-PF-SEE.LCOM differ diff --git a/sources/AINTERRUPT b/sources/AINTERRUPT index ce4807212..83ca8e6fc 100644 --- a/sources/AINTERRUPT +++ b/sources/AINTERRUPT @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) -(FILECREATED "31-Mar-2024 09:38:10" |{DSK}larry>il>medley>sources>AINTERRUPT.;7| 41133 +(FILECREATED "12-Nov-2025 11:10:44" |{WMEDLEY}AINTERRUPT.;4| 41235 - :EDIT-BY "lmm" + :EDIT-BY |rmk| :CHANGES-TO (VARS AINTERRUPTCOMS) - :PREVIOUS-DATE "31-Mar-2024 09:27:57" |{DSK}larry>il>medley>sources>AINTERRUPT.;5|) + :PREVIOUS-DATE "31-Mar-2024 09:38:10" |{WMEDLEY}AINTERRUPT.;3|) (PRETTYCOMPRINT AINTERRUPTCOMS) @@ -22,8 +22,8 @@ (5 ERROR MOUSE) (7 HELP T) (16 PRINTLEVEL) - (20 (CONTROL-T)) - (127 RUBOUT T))))) + (20 (CONTROL-T)))))) + (* \; "RMK2025: Removed (127 RUBOUT T)") (GLOBALVARS LISPINTERRUPTS) (COMS (* |;;| "^T this is actually not very useful any more, and the percentages are wrong") @@ -538,14 +538,17 @@ (prog1 \\interruptable (setq \\interruptable flag)))) ) -(RPAQ? LISPINTERRUPTS - '((LISPINTERRUPTS (2 BREAK MOUSE) - (4 RESET MOUSE) - (5 ERROR MOUSE) - (7 HELP T) - (16 PRINTLEVEL) - (20 (CONTROL-T)) - (127 RUBOUT T)))) +(RPAQ? LISPINTERRUPTS '((LISPINTERRUPTS (2 BREAK MOUSE) + (4 RESET MOUSE) + (5 ERROR MOUSE) + (7 HELP T) + (16 PRINTLEVEL) + (20 (CONTROL-T))))) + + + +(* \; "RMK2025: Removed (127 RUBOUT T)") + (DECLARE\: DOEVAL@COMPILE DONTCOPY (GLOBALVARS LISPINTERRUPTS) @@ -803,10 +806,10 @@ DONTCOPY (INTCHAR T) ) (DECLARE\: DONTCOPY - (FILEMAP (NIL (2924 29142 (INTCHAR 2934 . 7957) (INTERRUPTCHAR 7959 . 8233) (INTERRUPTED 8235 . 15814) - (LISPINTERRUPTS 15816 . 16343) (\\DOHELPINTERRUPT 16345 . 17243) (\\DOHELPINTERRUPT1 17245 . 18643) ( -\\DOINTERRUPTHERE 18645 . 19825) (\\PROC.FINDREALFRAME 19827 . 20631) (\\SETPRINTLEVEL 20633 . 22585) -(\\SETRECLAIMMIN 22587 . 23460) (GETINTERRUPT 23462 . 24818) (CURRENTINTERRUPTS 24820 . 25030) ( -SETINTERRUPT 25032 . 27010) (RESET.INTERRUPTS 27012 . 28969) (INTERRUPTABLE 28971 . 29140)) (29562 -35546 (CONTROL-T 29572 . 35013) (\\CONTROL-T.PRINTRATIO 35015 . 35544))))) + (FILEMAP (NIL (2939 29157 (INTCHAR 2949 . 7972) (INTERRUPTCHAR 7974 . 8248) (INTERRUPTED 8250 . 15829) + (LISPINTERRUPTS 15831 . 16358) (\\DOHELPINTERRUPT 16360 . 17258) (\\DOHELPINTERRUPT1 17260 . 18658) ( +\\DOINTERRUPTHERE 18660 . 19840) (\\PROC.FINDREALFRAME 19842 . 20646) (\\SETPRINTLEVEL 20648 . 22600) +(\\SETRECLAIMMIN 22602 . 23475) (GETINTERRUPT 23477 . 24833) (CURRENTINTERRUPTS 24835 . 25045) ( +SETINTERRUPT 25047 . 27025) (RESET.INTERRUPTS 27027 . 28984) (INTERRUPTABLE 28986 . 29155)) (29664 +35648 (CONTROL-T 29674 . 35115) (\\CONTROL-T.PRINTRATIO 35117 . 35646))))) STOP diff --git a/sources/AINTERRUPT.LCOM b/sources/AINTERRUPT.LCOM index 49635ec48..0f244ef71 100644 Binary files a/sources/AINTERRUPT.LCOM and b/sources/AINTERRUPT.LCOM differ diff --git a/sources/FONT b/sources/FONT index 6e40fa42a..8c692df60 100644 --- a/sources/FONT +++ b/sources/FONT @@ -1,13 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "17-Oct-2025 19:43:25" {WMEDLEY}FONT.;621 286216 +(FILECREATED "11-Nov-2025 14:30:56" {WMEDLEY}FONT.;628 286775 :EDIT-BY rmk :CHANGES-TO (VARS FONTCOMS) - (FNS MONOSPACEFONTP) + (FNS \READCHARSET) - :PREVIOUS-DATE "13-Oct-2025 21:33:14" {WMEDLEY}FONT.;620) + :PREVIOUS-DATE " 9-Nov-2025 17:56:14" {WMEDLEY}FONT.;627) (PRETTYCOMPRINT FONTCOMS) @@ -26,6 +26,7 @@ GETFONTCLASSCOMPONENT) (MACROS \GETFONTCLASSCOMPONENT \SETFONTCLASSCOMPONENT)) (VARS NSFONTFAMILIES ALTOFONTFAMILIES) + (INITVARS MCCSFONTFAMILIES) (COMS (* ;; "Creation: ") @@ -66,12 +67,14 @@ (FNS FONTSAVAILABLE FONTEXISTS? \SEARCHFONTFILES FLUSHFONTSINCORE FINDFONTFILES SORTFONTSPECS ) (FNS MATCHFONTFACE MAKEFONTFACE FONTFACETOATOM) - (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \DEFAULTDEVICEFONTS) + (INITVARS \FONTSINCORE \FONTEXISTS?-CACHE \FONTSAVAILABLEFILECACHE \DEFAULTDEVICEFONTS) + (ADDVARS (MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE))) [COMS (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) (INITVARS \UNITWIDTHSVECTOR) (FNS \UNITWIDTHSVECTOR) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\UNITWIDTHSVECTOR] - (DECLARE%: DONTCOPY (EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) + (DECLARE%: DONTCOPY [EXPORT (RECORDS FONTCLASS FONTDESCRIPTOR FONTFACE CHARSETINFO FONTSPEC) (MACROS FONTASCENT FONTDESCENT FONTHEIGHT \FGETOFFSET \FSETOFFSET \FGETWIDTH \FSETWIDTH \FGETCHARWIDTH \FSETCHARWIDTH \FGETIMAGEWIDTH \FSETIMAGEWIDTH) @@ -79,8 +82,7 @@ \CREATECSINFOELEMENT \CREATEFONTCHARSETVECTOR CHARSETPROP) (PROP ARGNAMES CHARSETPROP) (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) - (SLUGCHARSET (ADD1 \MAXCHARSET))) - (MACROS LEGACYFONTS)) + (SLUGCHARSET (ADD1 \MAXCHARSET] (MACROS INDIRECTCHARSETP)) (FNS FONTDESCRIPTOR.DEFPRINT FONTCLASS.DEFPRINT) (INITRECORDS FONTCLASS FONTDESCRIPTOR CHARSETINFO) @@ -505,6 +507,8 @@ (RPAQQ ALTOFONTFAMILIES (TIMESROMAN TIMESROMAND HELVETICA HELVETICAD CLARITY BRAVOX TONTO CREAM OLDENGLISH)) +(RPAQ? MCCSFONTFAMILIES NIL) + (* ;; "Creation: ") @@ -821,7 +825,8 @@ (CLOSEF? STRM))))]) (\READCHARSET - [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 2-Sep-2025 23:57 by rmk") + [LAMBDA (FONTSPEC CHARSET FONT) (* ; "Edited 11-Nov-2025 14:30 by rmk") + (* ; "Edited 2-Sep-2025 23:57 by rmk") (* ; "Edited 28-Aug-2025 23:17 by rmk") (* ; "Edited 25-Aug-2025 12:03 by rmk") (* ; "Edited 16-Aug-2025 18:00 by rmk") @@ -855,17 +860,15 @@ (* ;; "The file didn't know its own encoding") (SETQ FAMILY (fetch (FONTSPEC FSFAMILY) of FONTSPEC)) - (CHARSETPROP CSINFO 'CSCHARENCODING (if (NEQ CHARSET 0) - then 'MCCS - elseif (MEMB FAMILY - NSFONTFAMILIES - ) - then 'XCCS$ - elseif (MEMB FAMILY - ALTOFONTFAMILIES - ) - then 'ALTOTEXT - else FAMILY))) + (CHARSETPROP CSINFO 'CSCHARENCODING + (if (OR (NEQ CHARSET 0) + (MEMB FAMILY MCCSFONTFAMILIES)) + then 'MCCS + elseif (MEMB FAMILY NSFONTFAMILIES) + then 'XCCS$ + elseif (MEMB FAMILY ALTOFONTFAMILIES) + then 'ALTOTEXT + else FAMILY))) (* ;; "Remember the file that this basic charset information came from, before any character coercions, for informational purposes. Path and version won't be valid if sysout moves, or if PSEUDOFILENAME's aren't aligned. Don't want files to be new atoms, for loadup.") @@ -998,7 +1001,8 @@ (DEFINEQ (COERCEFONTSPEC - [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 5-Oct-2025 09:41 by rmk") + [LAMBDA (FONTSPEC COERCIONS) (* ; "Edited 9-Nov-2025 17:54 by rmk") + (* ; "Edited 5-Oct-2025 09:41 by rmk") (* ; "Edited 28-Aug-2025 14:41 by rmk") (* ; "Edited 25-Aug-2025 10:22 by rmk") (* ; "Edited 17-Aug-2025 19:15 by rmk") @@ -1012,11 +1016,14 @@ (* ;; "Doesn't make sense to coerce the device, DEVICE and also CHARSET are just carried along.") + (CL:WHEN (LITATOM COERCIONS) + [SETQ COERCIONS (FONTDEVICEPROP FONTSPEC (OR COERCIONS 'FONTCOERCIONS]) + (* ;; "A NIL match component matches everything, and a NIL target component denotes the corresponding argument.") (for C MATCH TARGET MFAMILY MSIZE MFACE MROTATION TFAMILY TSIZE TFACE TROTATION COERCED FAMILY - SIZE FACE ROTATION DEVICE in (OR COERCIONS (FONTDEVICEPROP FONTSPEC 'FONTCOERCIONS)) - first (SPREADFONTSPEC FONTSPEC) eachtime (SETQ MATCH (MKLIST (CAR C))) + SIZE FACE ROTATION DEVICE in COERCIONS first (SPREADFONTSPEC FONTSPEC) + eachtime (SETQ MATCH (MKLIST (CAR C))) when [AND (COERCEFONTSPEC.MATCH (pop MATCH) FAMILY) (COERCEFONTSPEC.MATCH (pop MATCH) @@ -1092,17 +1099,22 @@ (DEFINEQ (MAKEFONTSPEC - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE) (* ; "Edited 28-Aug-2025 14:32 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE BASE) (* ; "Edited 7-Nov-2025 07:52 by rmk") + (* ; "Edited 28-Aug-2025 14:32 by rmk") (* ; "Edited 17-Aug-2025 20:44 by rmk") (* ;; "This is a function, not a macro, so that it can be used in the loadup sequence to create the FONTSPEC for the \GUARANTEEDDISPLAYFONT. That font is created by \CREATEFONT and therefore is not dependent on \FONT.CHECKARGS or on the multi-alist multi-key indexing functions. The strategy might change if MULTI-ALIST is moved earlier in the loadup sequence.") + (* ;; "BASE (fontspec or font) provides defaults for NIL arguments, essentialy models a (create using BASE...)") + + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'SPEC))) (create FONTSPEC - FSFAMILY _ FAMILY - FSSIZE _ SIZE - FSFACE _ FACE - FSROTATION _ ROTATION - FSDEVICE _ DEVICE]) + FSFAMILY _ (OR FAMILY (fetch (FONTSPEC FSFAMILY) of BASE)) + FSSIZE _ (OR SIZE (fetch (FONTSPEC FSSIZE) of BASE)) + FSFACE _ (OR FACE (fetch (FONTSPEC FSFACE) of BASE)) + FSROTATION _ (OR ROTATION (fetch (FONTSPEC FSROTATION) of BASE)) + FSDEVICE _ (OR DEVICE (fetch (FONTSPEC FSDEVICE) of BASE]) ) (DEFINEQ @@ -2795,7 +2807,8 @@ (DEFINEQ (FONTSAVAILABLE - [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 25-Sep-2025 18:39 by rmk") + [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) (* ; "Edited 6-Nov-2025 13:50 by rmk") + (* ; "Edited 25-Sep-2025 18:39 by rmk") (* ; "Edited 30-Aug-2025 13:55 by rmk") (* ; "Edited 28-Aug-2025 14:43 by rmk") (* ; "Edited 23-Aug-2025 10:51 by rmk") @@ -2810,48 +2823,63 @@ (* ;;; "returns a list of the fonts fitting a description that are available. FAMILY SIZE FACE or ROTATION can be * which means get them all. if CHECKFILESTOO? is NIL, only fonts in core will be considered. If ONLY, fonts in memory will be ignored. ") - (DECLARE (GLOBALVARS \FONTSINCORE)) - (LET ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE))) - (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) - then - (* ;; + (DECLARE (GLOBALVARS \FONTSINCORE \FONTSAVAILABLEFILECACHE)) + (LET + ((FONTSPEC (\FONT.CHECKARGS FAMILY SIZE FACE ROTATION DEVICE)) + FILEFONTS) + (if (EQ '* (fetch (FONTSPEC FSDEVICE) of FONTSPEC)) + then + (* ;;  "The results for each device will be grouped together, because the sort happens in the clause below") - (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) - CHECKFILESTOO?)) - else (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") - (SORTFONTSPECS (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) - [COLLECTMULTI \FONTSINCORE - (FUNCTION (LAMBDA (FM S FC R D FONT) - (DECLARE (USEDFREE $$COLLECT)) - (CL:WHEN - [AND (OR (EQ FAMILY FM) - (EQ FAMILY '*)) - (OR (EQ SIZE S) - (EQ SIZE '*)) - (MATCHFONTFACE FACE FC) - (OR (EQ ROTATION R) - (EQ ROTATION '*)) - (OR (EQ DEVICE D) - (EQ DEVICE '*] - (push $$COLLECT - (create FONTSPEC - FSFAMILY _ FM - FSSIZE _ S - FSFACE _ FC - FSROTATION _ R - FSDEVICE _ D)))]) - (CL:WHEN CHECKFILESTOO?(* ; + (for I in IMAGESTREAMTYPES join (FONTSAVAILABLE FONTSPEC NIL NIL NIL (CAR I) + CHECKFILESTOO?)) + else + (SPREADFONTSPEC FONTSPEC) (* ; "For easier matching code") + (SORTFONTSPECS + (UNION (CL:UNLESS (EQ 'ONLY CHECKFILESTOO?) + [COLLECTMULTI \FONTSINCORE + (FUNCTION (LAMBDA (FM S FC R D FONT) + (DECLARE (USEDFREE $$COLLECT)) + (CL:WHEN [AND (OR (EQ FAMILY FM) + (EQ FAMILY '*)) + (OR (EQ SIZE S) + (EQ SIZE '*)) + (MATCHFONTFACE FACE FC) + (OR (EQ ROTATION R) + (EQ ROTATION '*)) + (OR (EQ DEVICE D) + (EQ DEVICE '*] + (push $$COLLECT + (create FONTSPEC + FSFAMILY _ FM + FSSIZE _ S + FSFACE _ FC + FSROTATION _ R + FSDEVICE _ D)))]) + (CL:WHEN CHECKFILESTOO? (* ;  "apply the device font lookup function.") - (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE - 'FONTSAVAILABLE)) - (FUNCTION \SEARCHFONTFILES] + (SETQ FILEFONTS (SGETMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE ROTATION + DEVICE)) - (* ;; "Until all the device functions take a FONTSPEC") + (* ;; "APPEND the cache value because of the SORT") - (CL:IF (EQ 1 (NARGS FN)) - (APPLY* FN FONTSPEC) - (APPLY* FN FAMILY SIZE FACE ROTATION DEVICE))))]) + (APPEND (if (NULL FILEFONTS) + then (LET [(FN (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE + 'FONTSAVAILABLE)) + (FUNCTION \SEARCHFONTFILES] + + (* ;; "Until all the device functions take a FONTSPEC") + + (SETQ FILEFONTS (CL:IF (EQ 1 (NARGS FN)) + (APPLY* FN FONTSPEC) + (APPLY* FN FAMILY SIZE FACE ROTATION + DEVICE))) + (SPUTMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE + ROTATION DEVICE (OR FILEFONTS 'NONE)) + FILEFONTS) + elseif (NEQ FILEFONTS 'NONE) + then FILEFONTS)))]) (FONTEXISTS? [LAMBDA (FAMILY SIZE FACE ROTATION DEVICE NOCOERCIONS) (* ; "Edited 26-Sep-2025 10:10 by rmk") @@ -3095,7 +3123,10 @@ (EQ PEXPANSION '*]) (MAKEFONTFACE - [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 30-Aug-2025 10:22 by rmk") + [LAMBDA (WEIGHT SLOPE EXPANSION BASE COLOR) (* ; "Edited 7-Nov-2025 08:50 by rmk") + (* ; "Edited 30-Aug-2025 10:22 by rmk") + (CL:WHEN (FONTP BASE) + (SETQ BASE (FONTPROP BASE 'FACE))) (CL:UNLESS WEIGHT (SETQ WEIGHT (CL:IF BASE (fetch (FONTFACE WEIGHT) of BASE) @@ -3154,7 +3185,12 @@ (RPAQ? \FONTEXISTS?-CACHE NIL) +(RPAQ? \FONTSAVAILABLEFILECACHE NIL) + (RPAQ? \DEFAULTDEVICEFONTS NIL) + +(ADDTOVAR MEDLEY-INIT-VARS (\FONTEXISTS?-CACHE) + (\FONTSAVAILABLEFILECACHE)) (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS \DEFAULTDEVICEFONTS \UNITWIDTHSVECTOR) @@ -3422,19 +3458,6 @@ (CONSTANTS (SLUGCHARINDEX (ADD1 \MAXTHINCHAR)) (SLUGCHARSET (ADD1 \MAXCHARSET))) ) -(DECLARE%: EVAL@COMPILE - -(PUTPROPS LEGACYFONTS MACRO ((F . FORMS) (* ; - "Execute FORMS in a legacy font environment") - (RESETLST - (RESETSAVE \FONTSINCORE NIL) - (RESETSAVE \FONTEXISTS?-CACHE) - (RESETSAVE DISPLAYFONTCOERCIONS) - (RESETSAVE DISPLAYCHARCOERCIONS) - (RESETSAVE DISPLAYFONTEXTENSIONS '(DISPLAYFONT)) - (RESETSAVE DISPLAYFONTDIRECTORIES (MEDLEYDIR "fonts>displayfonts>")) - (PROGN F . FORMS)))) -) (* "END EXPORTED DEFINITIONS") @@ -4650,44 +4673,44 @@ (ADDTOVAR LAMA FONTCOPY) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (12132 21845 (CHARWIDTH 12142 . 12927) (CHARWIDTHY 12929 . 14446) (STRINGWIDTH 14448 . -15541) (\CHARWIDTH.DISPLAY 15543 . 15956) (\STRINGWIDTH.DISPLAY 15958 . 16382) (\STRINGWIDTH.GENERIC -16384 . 21843)) (21846 28366 (DEFAULTFONT 21856 . 23141) (FONTCLASS 23143 . 25305) (FONTCLASSUNPARSE -25307 . 26206) (FONTCLASSCOMPONENT 26208 . 26796) (SETFONTCLASSCOMPONENT 26798 . 27240) ( -GETFONTCLASSCOMPONENT 27242 . 28364)) (30045 54426 (FONTCREATE 30055 . 33300) (FONTCREATE1 33302 . -35917) (FONTCREATE.SLUGFD 35919 . 37401) (\FONT.CHECKARGS 37403 . 43993) (\FONT.CHECKARGS1 43995 . -48518) (\FONTCREATE1.NOFN 48520 . 48734) (FONTFILEP 48736 . 49624) (\READCHARSET 49626 . 54424)) ( -54427 61344 (\FONT.CHECKARGS 54437 . 61027) (\CHARSET.CHECK 61029 . 61342)) (61345 64428 ( -COERCEFONTSPEC 61355 . 64426)) (66498 67288 (MAKEFONTSPEC 66508 . 67286)) (67289 75466 (COMPLETE.FONT -67299 . 69822) (COMPLETEFONTP 69824 . 70447) (COMPLETE.CHARSET 70449 . 73134) (PRUNESLUGCSINFOS 73136 - . 74061) (MONOSPACEFONTP 74063 . 75464)) (75505 83426 (FONTASCENT 75515 . 75899) (FONTDESCENT 75901 - . 76386) (FONTHEIGHT 76388 . 76790) (FONTPROP 76792 . 82703) (\AVGCHARWIDTH 82705 . 83424)) (84083 -84991 (FONTDEVICEPROP 84093 . 84989)) (85037 85891 (EDITCHAR 85047 . 85889)) (85937 98127 ( -GETCHARBITMAP 85947 . 87071) (PUTCHARBITMAP 87073 . 89231) (\GETCHARBITMAP.CSINFO 89233 . 91249) ( -\PUTCHARBITMAP.CSINFO 91251 . 98125)) (98128 118608 (MOVECHARBITMAP 98138 . 100032) (MOVEFONTCHARS -100034 . 103994) (\MOVEFONTCHAR 103996 . 108839) (\MOVEFONTCHARS.SOURCEDATA 108841 . 114946) ( -\MAKESLUGCHAR 114948 . 117483) (SLUGCHARP.DISPLAY 117485 . 118606)) (119541 139679 (FONTFILES 119551 - . 121384) (\FINDFONTFILE 121386 . 123103) (\FONTFILENAMES 123105 . 124100) (\FONTFILENAME 124102 . -128085) (\FONTFILENAME.OLD 128087 . 131036) (\FONTFILENAME.NEW 131038 . 133295) (FONTSPECFROMFILENAME -133297 . 137398) (\FONTINFOFROMFILENAME.OLD 137400 . 139677)) (139946 175749 (FONTCOPY 139956 . 145019 -) (FONTP 145021 . 145320) (FONTUNPARSE 145322 . 147041) (SETFONTDESCRIPTOR 147043 . 148507) ( -\STREAMCHARWIDTH 148509 . 152673) (\COERCECHARSET 152675 . 155270) (\BUILDSLUGCSINFO 155272 . 158895) -(\FONTSYMBOL 158897 . 159547) (\DEVICESYMBOL 159549 . 160418) (\FONTFACE 160420 . 167610) ( -\FONTFACE.COLOR 167612 . 174532) (SETFONTCHARENCODING 174534 . 175747)) (175750 196301 (FONTSAVAILABLE - 175760 . 180615) (FONTEXISTS? 180617 . 184595) (\SEARCHFONTFILES 184597 . 187682) (FLUSHFONTSINCORE -187684 . 190857) (FINDFONTFILES 190859 . 194073) (SORTFONTSPECS 194075 . 196299)) (196302 199725 ( -MATCHFONTFACE 196312 . 197127) (MAKEFONTFACE 197129 . 197969) (FONTFACETOATOM 197971 . 199723)) ( -199953 200445 (\UNITWIDTHSVECTOR 199963 . 200443)) (215788 217855 (FONTDESCRIPTOR.DEFPRINT 215798 . -217377) (FONTCLASS.DEFPRINT 217379 . 217853)) (221684 224474 (\CREATEKERNELEMENT 221694 . 222052) ( -\FSETLEFTKERN 222054 . 222545) (\FGETLEFTKERN 222547 . 224472)) (224475 234111 (\CREATEFONT 224485 . -225924) (\CREATECHARSET 225926 . 229862) (\INSTALLCHARSETINFO 229864 . 233198) ( -\INSTALLCHARSETINFO.CHARENCODING 233200 . 234109)) (234433 235797 (\FONTRESETCHARWIDTHS 234443 . -235795)) (236427 246474 (\CREATEDISPLAYFONT 236437 . 238286) (\CREATECHARSET.DISPLAY 238288 . 243997) -(\FONTEXISTS?.DISPLAY 243999 . 246472)) (246475 261340 (STRIKEFONT.FILEP 246485 . 247373) ( -STRIKEFONT.GETCHARSET 247375 . 252967) (WRITESTRIKEFONTFILE 252969 . 257880) (STRIKECSINFO 257882 . -261338)) (261371 277688 (MAKEBOLD.CHARSET 261381 . 265030) (MAKEBOLD.CHAR 265032 . 266784) ( -MAKEITALIC.CHARSET 266786 . 270459) (MAKEITALIC.CHAR 270461 . 272807) (\SFMAKEBOLD 272809 . 275033) ( -\SFMAKEITALIC 275035 . 277686)) (277689 281838 (\SFMAKEROTATEDFONT 277699 . 279100) (\SFROTATECSINFO -279102 . 279739) (\SFROTATEFONTCHARACTERS 279741 . 280121) (\SFROTATECSINFOOFFSETS 280123 . 281836)) ( -281839 283220 (\SFMAKECOLOR 281849 . 283218))))) + (FILEMAP (NIL (12241 21954 (CHARWIDTH 12251 . 13036) (CHARWIDTHY 13038 . 14555) (STRINGWIDTH 14557 . +15650) (\CHARWIDTH.DISPLAY 15652 . 16065) (\STRINGWIDTH.DISPLAY 16067 . 16491) (\STRINGWIDTH.GENERIC +16493 . 21952)) (21955 28475 (DEFAULTFONT 21965 . 23250) (FONTCLASS 23252 . 25414) (FONTCLASSUNPARSE +25416 . 26315) (FONTCLASSCOMPONENT 26317 . 26905) (SETFONTCLASSCOMPONENT 26907 . 27349) ( +GETFONTCLASSCOMPONENT 27351 . 28473)) (30188 54284 (FONTCREATE 30198 . 33443) (FONTCREATE1 33445 . +36060) (FONTCREATE.SLUGFD 36062 . 37544) (\FONT.CHECKARGS 37546 . 44136) (\FONT.CHECKARGS1 44138 . +48661) (\FONTCREATE1.NOFN 48663 . 48877) (FONTFILEP 48879 . 49767) (\READCHARSET 49769 . 54282)) ( +54285 61202 (\FONT.CHECKARGS 54295 . 60885) (\CHARSET.CHECK 60887 . 61200)) (61203 64463 ( +COERCEFONTSPEC 61213 . 64461)) (66533 67872 (MAKEFONTSPEC 66543 . 67870)) (67873 76050 (COMPLETE.FONT +67883 . 70406) (COMPLETEFONTP 70408 . 71031) (COMPLETE.CHARSET 71033 . 73718) (PRUNESLUGCSINFOS 73720 + . 74645) (MONOSPACEFONTP 74647 . 76048)) (76089 84010 (FONTASCENT 76099 . 76483) (FONTDESCENT 76485 + . 76970) (FONTHEIGHT 76972 . 77374) (FONTPROP 77376 . 83287) (\AVGCHARWIDTH 83289 . 84008)) (84667 +85575 (FONTDEVICEPROP 84677 . 85573)) (85621 86475 (EDITCHAR 85631 . 86473)) (86521 98711 ( +GETCHARBITMAP 86531 . 87655) (PUTCHARBITMAP 87657 . 89815) (\GETCHARBITMAP.CSINFO 89817 . 91833) ( +\PUTCHARBITMAP.CSINFO 91835 . 98709)) (98712 119192 (MOVECHARBITMAP 98722 . 100616) (MOVEFONTCHARS +100618 . 104578) (\MOVEFONTCHAR 104580 . 109423) (\MOVEFONTCHARS.SOURCEDATA 109425 . 115530) ( +\MAKESLUGCHAR 115532 . 118067) (SLUGCHARP.DISPLAY 118069 . 119190)) (120125 140263 (FONTFILES 120135 + . 121968) (\FINDFONTFILE 121970 . 123687) (\FONTFILENAMES 123689 . 124684) (\FONTFILENAME 124686 . +128669) (\FONTFILENAME.OLD 128671 . 131620) (\FONTFILENAME.NEW 131622 . 133879) (FONTSPECFROMFILENAME +133881 . 137982) (\FONTINFOFROMFILENAME.OLD 137984 . 140261)) (140530 176333 (FONTCOPY 140540 . 145603 +) (FONTP 145605 . 145904) (FONTUNPARSE 145906 . 147625) (SETFONTDESCRIPTOR 147627 . 149091) ( +\STREAMCHARWIDTH 149093 . 153257) (\COERCECHARSET 153259 . 155854) (\BUILDSLUGCSINFO 155856 . 159479) +(\FONTSYMBOL 159481 . 160131) (\DEVICESYMBOL 160133 . 161002) (\FONTFACE 161004 . 168194) ( +\FONTFACE.COLOR 168196 . 175116) (SETFONTCHARENCODING 175118 . 176331)) (176334 197273 (FONTSAVAILABLE + 176344 . 181587) (FONTEXISTS? 181589 . 185567) (\SEARCHFONTFILES 185569 . 188654) (FLUSHFONTSINCORE +188656 . 191829) (FINDFONTFILES 191831 . 195045) (SORTFONTSPECS 195047 . 197271)) (197274 200883 ( +MATCHFONTFACE 197284 . 198099) (MAKEFONTFACE 198101 . 199127) (FONTFACETOATOM 199129 . 200881)) ( +201261 201753 (\UNITWIDTHSVECTOR 201271 . 201751)) (216347 218414 (FONTDESCRIPTOR.DEFPRINT 216357 . +217936) (FONTCLASS.DEFPRINT 217938 . 218412)) (222243 225033 (\CREATEKERNELEMENT 222253 . 222611) ( +\FSETLEFTKERN 222613 . 223104) (\FGETLEFTKERN 223106 . 225031)) (225034 234670 (\CREATEFONT 225044 . +226483) (\CREATECHARSET 226485 . 230421) (\INSTALLCHARSETINFO 230423 . 233757) ( +\INSTALLCHARSETINFO.CHARENCODING 233759 . 234668)) (234992 236356 (\FONTRESETCHARWIDTHS 235002 . +236354)) (236986 247033 (\CREATEDISPLAYFONT 236996 . 238845) (\CREATECHARSET.DISPLAY 238847 . 244556) +(\FONTEXISTS?.DISPLAY 244558 . 247031)) (247034 261899 (STRIKEFONT.FILEP 247044 . 247932) ( +STRIKEFONT.GETCHARSET 247934 . 253526) (WRITESTRIKEFONTFILE 253528 . 258439) (STRIKECSINFO 258441 . +261897)) (261930 278247 (MAKEBOLD.CHARSET 261940 . 265589) (MAKEBOLD.CHAR 265591 . 267343) ( +MAKEITALIC.CHARSET 267345 . 271018) (MAKEITALIC.CHAR 271020 . 273366) (\SFMAKEBOLD 273368 . 275592) ( +\SFMAKEITALIC 275594 . 278245)) (278248 282397 (\SFMAKEROTATEDFONT 278258 . 279659) (\SFROTATECSINFO +279661 . 280298) (\SFROTATEFONTCHARACTERS 280300 . 280680) (\SFROTATECSINFOOFFSETS 280682 . 282395)) ( +282398 283779 (\SFMAKECOLOR 282408 . 283777))))) STOP diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM index 98ce344aa..e6d82b09a 100644 Binary files a/sources/FONT.LCOM and b/sources/FONT.LCOM differ diff --git a/sources/LLKEY b/sources/LLKEY index 032f719b6..c45b64c84 100644 --- a/sources/LLKEY +++ b/sources/LLKEY @@ -1,12 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED " 5-May-2025 20:57:08" {WMEDLEY}LLKEY.;15 199508 +(FILECREATED "12-Nov-2025 16:40:50" {WMEDLEY}LLKEY.;18 199501 :EDIT-BY rmk - :CHANGES-TO (VARS \MAIKOKEYACTIONS \KEYNAMES) + :CHANGES-TO (VARS \ORIGKEYACTIONS) - :PREVIOUS-DATE " 4-Apr-2025 17:10:10" {WMEDLEY}LLKEY.;11) + :PREVIOUS-DATE "12-Nov-2025 15:56:25" {WMEDLEY}LLKEY.;17) (PRETTYCOMPRINT LLKEYCOMS) @@ -1591,7 +1591,7 @@ (12 ("/" "?" NOLOCKSHIFT)) (13 ("\" "|" NOLOCKSHIFT)) (14 ("LF" "`" NOLOCKSHIFT)) - (15 ("Bs" "Bs" NOLOCKSHIFT)) + (15 ("Bs" "^W" NOLOCKSHIFT)) (16 ("3" "#" NOLOCKSHIFT)) (17 ("2" "@" NOLOCKSHIFT)) (18 ("w" "W" LOCKSHIFT)) @@ -1771,7 +1771,7 @@ (66 ("Function,G" "Function,g" NOLOCKSHIFT)) (104 ("Function,H" "Function,h" NOLOCKSHIFT)) (80 ("Function,I" "Function,i" NOLOCKSHIFT)) - (13 ("^W" "^U" NOLOCKSHIFT)) + (13 (RUBOUT "^U" NOLOCKSHIFT)) (33 ("Esc" "Esc" NOLOCKSHIFT)) (65 ("Esc" "Esc" NOLOCKSHIFT)) (2 ("6" "^" NOLOCKSHIFT)) @@ -1851,9 +1851,9 @@ (4 ("7" "'" NOLOCKSHIFT)) (8 ("0" "0" NOLOCKSHIFT)) (10 ("\" "_" NOLOCKSHIFT)) - (13 ("^W" "^U" NOLOCKSHIFT)) + (13 (RUBOUT "^U" NOLOCKSHIFT)) (14 METADOWN . METAUP) - (15 ("Bs" "Bs" NOLOCKSHIFT)) + (15 ("Bs" "^W" NOLOCKSHIFT)) (17 ("2" "%"" NOLOCKSHIFT)) (22 ("9" ")" NOLOCKSHIFT)) (28 (":" "*" NOLOCKSHIFT)) @@ -3916,33 +3916,33 @@ (ADDTOVAR LAMA CURSORPROP METASHIFT MOUSECHORDWAIT) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (14602 21918 (BKSYSCHARCODE 14612 . 14961) (\CLEARSYSBUF 14963 . 15521) (\GETKEY 15523 - . 16698) (\NSYSBUFCHARS 16700 . 17442) (\SAVESYSBUF 17444 . 19053) (\SYSBUFP 19055 . 19359) ( -\GETSYSBUF 19361 . 19541) (\PUTSYSBUF 19543 . 20756) (\PEEKSYSBUF 20758 . 21916)) (23203 60761 ( -\KEYBOARDINIT 23213 . 24933) (\KEYBOARDEVENTFN 24935 . 29635) (\ALLOCLOCKED 29637 . 30227) ( -\SETIOPOINTERS 30229 . 34765) (\KEYBOARDOFF 34767 . 35181) (\KEYBOARDON 35183 . 35562) (\KEYHANDLER -35564 . 35695) (\KEYHANDLER1 35697 . 43143) (\RESETKEYBOARD 43145 . 44793) (\DOMOUSECHORDING 44795 . -48615) (\DOTRANSITIONS 48617 . 49294) (\DECODETRANSITION 49296 . 56709) (MOUSECHORDWAIT 56711 . 57375) - (\TRACKCURSOR 57377 . 60759)) (95227 117100 (KEYACTION 95237 . 96090) (KEYACTIONTABLE 96092 . 97274) -(KEYBOARDTYPE 97276 . 98378) (RESETKEYACTION 98380 . 100139) (\KEYBOARD.MACHINE-SPECIFIC-KEYACTIONS -100141 . 102043) (\KEYACTION1 102045 . 112161) (KEYDOWNP 112163 . 112498) (KEYNUMBERP 112500 . 112698) - (\KEYNAMETONUMBER 112700 . 113394) (\KEYNUMBERTONAME 113396 . 113586) (MODIFY.KEYACTIONS 113588 . -114449) (METASHIFT 114451 . 115395) (SHIFTDOWNP 115397 . 117098)) (117163 117459 ( -SETUP.OFFICE.KEYBOARD 117173 . 117457)) (120438 122150 (\INIT.KEYBOARD.STREAM 120448 . 122148)) ( -122415 138792 (\DOBUFFEREDTRANSITIONS 122425 . 137855) (\TIMER.INTERRUPTFRAME 137857 . 138582) ( -\PERIODIC.INTERRUPTFRAME 138584 . 138790)) (139046 143123 (\HARDCURSORUP 139056 . 140938) ( -\HARDCURSORPOSITION 140940 . 142976) (\HARDCURSORDOWN 142978 . 143121)) (143124 167184 (CURSOR.INIT -143134 . 146834) (\CURSORDESTINATION 146836 . 149154) (\SOFTCURSORUP 149156 . 154410) ( -\SOFTCURSORUPCURRENT 154412 . 161448) (\SOFTCURSORPOSITION 161450 . 162215) (\SOFTCURSORDOWN 162217 . -162925) (CURSORPROP 162927 . 163269) (GETCURSORPROP 163271 . 163459) (PUTCURSORPROP 163461 . 164616) ( -\CURSORBITSPERPIXEL 164618 . 166734) (\CURSORIMAGEPROPNAME 166736 . 166960) (\CURSORMASKPROPNAME -166962 . 167182)) (167185 185135 (CURSORCREATE 167195 . 169870) (CURSOR 169872 . 171684) ( -\CURSOR-VALID-P 171686 . 172773) (\CURSORUP 172775 . 174490) (\CURSORPOSITION 174492 . 177020) ( -\CURSORDOWN 177022 . 177255) (ADJUSTCURSORPOSITION 177257 . 177835) (CURSORPOSITION 177837 . 179379) ( -CURSORSCREEN 179381 . 180037) (CURSOREXIT 180039 . 181430) (FLIPCURSOR 181432 . 182558) (FLIPCURSORBAR - 182560 . 183540) (LASTMOUSEX 183542 . 183796) (LASTMOUSEY 183798 . 184052) (CREATEPOSITION 184054 . -184260) (POSITIONP 184262 . 184546) (CURSORHOTSPOT 184548 . 185133)) (186373 187921 (GETMOUSESTATE -186383 . 187042) (\EVENTKEYS 187044 . 187919)) (194120 194916 (MACHINETYPE 194130 . 194530) ( -SETMAINTPANEL 194532 . 194914)) (194946 196085 (BEEPON 194956 . 195609) (BEEPOFF 195611 . 196083)) ( -196536 196799 (WITHOUT-INTERRUPTS 196546 . 196797))))) + (FILEMAP (NIL (14591 21907 (BKSYSCHARCODE 14601 . 14950) (\CLEARSYSBUF 14952 . 15510) (\GETKEY 15512 + . 16687) (\NSYSBUFCHARS 16689 . 17431) (\SAVESYSBUF 17433 . 19042) (\SYSBUFP 19044 . 19348) ( +\GETSYSBUF 19350 . 19530) (\PUTSYSBUF 19532 . 20745) (\PEEKSYSBUF 20747 . 21905)) (23192 60750 ( +\KEYBOARDINIT 23202 . 24922) (\KEYBOARDEVENTFN 24924 . 29624) (\ALLOCLOCKED 29626 . 30216) ( +\SETIOPOINTERS 30218 . 34754) (\KEYBOARDOFF 34756 . 35170) (\KEYBOARDON 35172 . 35551) (\KEYHANDLER +35553 . 35684) (\KEYHANDLER1 35686 . 43132) (\RESETKEYBOARD 43134 . 44782) (\DOMOUSECHORDING 44784 . +48604) (\DOTRANSITIONS 48606 . 49283) (\DECODETRANSITION 49285 . 56698) (MOUSECHORDWAIT 56700 . 57364) + (\TRACKCURSOR 57366 . 60748)) (95220 117093 (KEYACTION 95230 . 96083) (KEYACTIONTABLE 96085 . 97267) +(KEYBOARDTYPE 97269 . 98371) (RESETKEYACTION 98373 . 100132) (\KEYBOARD.MACHINE-SPECIFIC-KEYACTIONS +100134 . 102036) (\KEYACTION1 102038 . 112154) (KEYDOWNP 112156 . 112491) (KEYNUMBERP 112493 . 112691) + (\KEYNAMETONUMBER 112693 . 113387) (\KEYNUMBERTONAME 113389 . 113579) (MODIFY.KEYACTIONS 113581 . +114442) (METASHIFT 114444 . 115388) (SHIFTDOWNP 115390 . 117091)) (117156 117452 ( +SETUP.OFFICE.KEYBOARD 117166 . 117450)) (120431 122143 (\INIT.KEYBOARD.STREAM 120441 . 122141)) ( +122408 138785 (\DOBUFFEREDTRANSITIONS 122418 . 137848) (\TIMER.INTERRUPTFRAME 137850 . 138575) ( +\PERIODIC.INTERRUPTFRAME 138577 . 138783)) (139039 143116 (\HARDCURSORUP 139049 . 140931) ( +\HARDCURSORPOSITION 140933 . 142969) (\HARDCURSORDOWN 142971 . 143114)) (143117 167177 (CURSOR.INIT +143127 . 146827) (\CURSORDESTINATION 146829 . 149147) (\SOFTCURSORUP 149149 . 154403) ( +\SOFTCURSORUPCURRENT 154405 . 161441) (\SOFTCURSORPOSITION 161443 . 162208) (\SOFTCURSORDOWN 162210 . +162918) (CURSORPROP 162920 . 163262) (GETCURSORPROP 163264 . 163452) (PUTCURSORPROP 163454 . 164609) ( +\CURSORBITSPERPIXEL 164611 . 166727) (\CURSORIMAGEPROPNAME 166729 . 166953) (\CURSORMASKPROPNAME +166955 . 167175)) (167178 185128 (CURSORCREATE 167188 . 169863) (CURSOR 169865 . 171677) ( +\CURSOR-VALID-P 171679 . 172766) (\CURSORUP 172768 . 174483) (\CURSORPOSITION 174485 . 177013) ( +\CURSORDOWN 177015 . 177248) (ADJUSTCURSORPOSITION 177250 . 177828) (CURSORPOSITION 177830 . 179372) ( +CURSORSCREEN 179374 . 180030) (CURSOREXIT 180032 . 181423) (FLIPCURSOR 181425 . 182551) (FLIPCURSORBAR + 182553 . 183533) (LASTMOUSEX 183535 . 183789) (LASTMOUSEY 183791 . 184045) (CREATEPOSITION 184047 . +184253) (POSITIONP 184255 . 184539) (CURSORHOTSPOT 184541 . 185126)) (186366 187914 (GETMOUSESTATE +186376 . 187035) (\EVENTKEYS 187037 . 187912)) (194113 194909 (MACHINETYPE 194123 . 194523) ( +SETMAINTPANEL 194525 . 194907)) (194939 196078 (BEEPON 194949 . 195602) (BEEPOFF 195604 . 196076)) ( +196529 196792 (WITHOUT-INTERRUPTS 196539 . 196790))))) STOP diff --git a/sources/LLKEY.LCOM b/sources/LLKEY.LCOM index aba3cfe8d..23744f5fc 100644 Binary files a/sources/LLKEY.LCOM and b/sources/LLKEY.LCOM differ diff --git a/sources/SEDIT-COMMANDS b/sources/SEDIT-COMMANDS index 873ddfa00..1a35d0837 100644 --- a/sources/SEDIT-COMMANDS +++ b/sources/SEDIT-COMMANDS @@ -1,14 +1,13 @@ (DEFINE-FILE-INFO PACKAGE (DEFPACKAGE SEDIT (USE LISP XCL)) READTABLE "XCL" BASE 10) -(IL:FILECREATED "15-Aug-2021 21:22:22"  -IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;7| 125181 - IL:|changes| IL:|to:| (IL:VARS IL:SEDIT-COMMANDSCOMS) +(IL:FILECREATED "13-Nov-2025 00:19:24" IL:|{WMEDLEY}SEDIT-COMMANDS.;5| 124301 - IL:|previous| IL:|date:| "14-Aug-2021 12:59:29" -IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) + :EDIT-BY IL:|rmk| + :CHANGES-TO (IL:VARIABLES COMMAND-TABLE-SPEC) + + :PREVIOUS-DATE "13-Nov-2025 00:14:31" IL:|{WMEDLEY}SEDIT-COMMANDS.;4|) -; Copyright (c) 1986-1988, 1990-1991, 2018, 2021 by Venue & Xerox Corporation. (IL:PRETTYCOMPRINT IL:SEDIT-COMMANDSCOMS) @@ -30,18 +29,18 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) IL:\; < > IL:\.)))) (IL:FUNCTIONS - (IL:* IL:|;;| "pseudo-selections") + (IL:* IL:|;;| "pseudo-selections") PSEUDO-SELECTION-FROM-SELECTION COMPOSE-PSEUDO-SELECTION DECOMPOSE-PSEUDO-SELECTION SELECTION-FROM-PSEUDO-SELECTION SELECT-PSEUDO-SEGMENT) - (IL:* IL:|;;| "user interface to adding new commands") + (IL:* IL:|;;| "user interface to adding new commands") (IL:FUNCTIONS ADD-COMMAND GET-SELECTION REPLACE-SELECTION RESET-COMMANDS DEFAULT-COMMANDS) (IL:VARIABLES DEFAULT-COMMAND-TABLE-SPEC FIRST-ADD-COMMAND FIRST-ADD-COMMAND-MENU-ENTRY) (IL:FUNCTIONS - (IL:* IL:|;;| "building help menu") + (IL:* IL:|;;| "building help menu") EQUALIZE-STRING-WIDTHS MINIMUM-STRING-WIDTH MAXIMUM-STRING-WIDTH) (IL:FUNCTIONS FIND-AND-DISPLAY-STRUCTURE FIND-AND-DISPLAY-STRUCTURE-BACKWARDS @@ -65,8 +64,8 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (IL:PUTPROPS IL:SEDIT-COMMANDS IL:FILETYPE :COMPILE-FILE) (IL:PUTPROPS IL:SEDIT-COMMANDS IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE - (DEFPACKAGE IL:SEDIT - (:USE IL:LISP IL:XCL)))) + (DEFPACKAGE IL:SEDIT (:USE IL:LISP + IL:XCL)))) (IL:DECLARE\: IL:DOEVAL@COMPILE IL:DONTCOPY (IL:LOCALVARS . T) @@ -78,10 +77,10 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFPARAMETER COMMAND-TABLE-SPEC -(IL:* IL:|;;;| "each entry in the COMMAND-TABLE-SPEC should be of the form: ( +) where is an atom function name or a list whose car is the function name and the rest are the extra arguments (beyond context and charcode), is a list of strings for the name, key-name, and help-string, is T if the caret should be normalized after this command, and + is one or more key specifier which can be passed to charcode (if non-list) or whose car is a termtable syntax (if a list).") +(IL:* IL:|;;;| "each entry in the COMMAND-TABLE-SPEC should be of the form: ( +) where is an atom function name or a list whose car is the function name and the rest are the extra arguments (beyond context and charcode), is a list of strings for the name, key-name, and help-string, is T if the caret should be normalized after this command, and + is one or more key specifier which can be passed to charcode (if non-list) or whose car is a termtable syntax (if a list).") '( - (IL:* IL:|;;| "STRUCTURE CONTROL") + (IL:* IL:|;;| "STRUCTURE CONTROL") (INSERT-NULL-LIST NIL T (IL:LEFTPAREN)) (CLOSE-LIST NIL NIL (IL:RIGHTPAREN)) @@ -104,7 +103,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) ((INPUT-QUOTE COMMA-AT) NIL NIL "@") - (IL:* IL:|;;| "EDIT CONTROL") + (IL:* IL:|;;| "EDIT CONTROL") (DELETE-SELECTION NIL T IL:DEL) (BACKSPACE NIL T IL:BS "^A") @@ -114,7 +113,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) ((VERIFY-STRUCTURE NIL T NIL) NIL NIL "Meta,^L") - (IL:* IL:|;;| "COMPLETION") + (IL:* IL:|;;| "COMPLETION") ((COMPLETE :ABORT NIL) ("Abort" "M-A" "Complete this edit without installing changes.") @@ -134,14 +133,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) ("Done, Compile, & Close" "C-M-C" "Complete this edit, compile, and close the window.") NIL "Meta,^C") - (IL:* IL:|;;| "COMMANDS") + (IL:* IL:|;;| "COMMANDS") (NULL ("" "" "") NIL 0) (UNDO ("Undo" "M-U" "Undo the last change made.") - NIL "Meta,U" "Meta,u" "Function,^D" (UNDO)) + NIL "Meta,U" "Meta,u" "Function,^D" (UNDO)) (REDO ("Redo" "M-R" "Redo the last change undone.") - NIL "Meta,R" "Meta,r" "Function,Bs" (REDO)) + NIL "Meta,R" "Meta,r" "Function,Bs" (REDO)) (NULL ("" "" "") NIL 0) (FIND-OBJ ("Find" "M-F" "Find the current selection, or prompt for structure to Find.") @@ -161,7 +160,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (EDIT-HELP ("Arglist" "M-H" "Show the argument list for the selected function.") NIL "Meta,H" "Meta,h" "Function,^A" (ARGLIST)) (CONVERT-COMMENT ("Convert Comment" "M-;" - "Convert the old style comments in the current selection.") + "Convert the old style comments in the current selection.") NIL "Meta,;") (COMMENT-OUT-SELECTION NIL NIL "Meta,^;") (EDIT-SELECTION ("Edit" "M-O" "Edit the definition of the current selection.") @@ -173,13 +172,13 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) NIL "Meta,E" "Meta,e" (EVAL)) (EXPAND ("Expand" "M-X" "Replace the current selection with its definition.") NIL "Meta,X" "Meta,x" IL:ESC "Function,^T" (EXPAND)) - (EXTRACT-CURRENT-SELECTION ("Extract" "M-/" - "Extract one level of structure: unquote or unlist.") + (EXTRACT-CURRENT-SELECTION ("Extract" "M-/" "Extract one level of structure: unquote or unlist." + ) NIL "Meta,/" (EXTRACT)) (INSPECT-SELECTION ("Inspect" "M-I" "Inspect the current selection.") NIL "Meta,I" "Meta,i" (INSPECT)) (JOIN ("Join" "M-J" "Join selected items together.") - NIL "Meta,J" "Meta,j" (JOIN)) + NIL "Meta,J" "Meta,j" (JOIN)) (MUTATE ("Mutate" "M-Z" "Prompt for a function to operate on the current selection.") NIL "Meta,Z" "Meta,z") ((PARENTHESIZE-CURRENT-SELECTION NIL) @@ -209,7 +208,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (ADD-MENU ("Attach Menu" "M-M" "Attach a command menu.") NIL "Meta,M" "Meta,m") - (IL:* IL:|;;| "RANDOM: tells Meta-Space or Meta-Return to scroll to the selection, using the auto-scroller for free.") + (IL:* IL:|;;| "RANDOM: tells Meta-Space or Meta-Return to scroll to the selection, using the auto-scroller for free.") (TRUE NIL T "Meta, " "Meta,CR"))) @@ -269,19 +268,18 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (IL:RPAQ? MENUS NIL) (IL:DECLARE\: IL:EVAL@COMPILE -(IL:RPAQ WORD-DELIM-CHARS (IL:CHARCODE (IL:SPACE IL:CR IL:TAB - IL:{ IL:} IL:[ IL:] IL:\; < > - IL:\.))) +(IL:RPAQ WORD-DELIM-CHARS (IL:CHARCODE (IL:SPACE IL:CR IL:TAB - IL:{ IL:} IL:[ IL:] IL:\; < > IL:\.))) -(IL:CONSTANTS (WORD-DELIM-CHARS (IL:CHARCODE (IL:SPACE IL:CR IL:TAB - IL:{ IL:} IL:[ IL:] IL:\; < - > IL:\.)))) +(IL:CONSTANTS (WORD-DELIM-CHARS (IL:CHARCODE (IL:SPACE IL:CR IL:TAB - IL:{ IL:} IL:[ IL:] IL:\; < > + IL:\.)))) ) (DEFUN PSEUDO-SELECTION-FROM-SELECTION (SEL) -(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") +(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") -(IL:* IL:|;;;| "This function takes a selection and creates a pseudo selection from it.") +(IL:* IL:|;;;| "This function takes a selection and creates a pseudo selection from it.") (COMPOSE-PSEUDO-SELECTION (IL:FETCH SELECT-NODE IL:OF SEL) (IL:FETCH SELECT-START IL:OF SEL) @@ -290,9 +288,9 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN COMPOSE-PSEUDO-SELECTION (NODE &OPTIONAL START END) -(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") +(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") -(IL:* IL:|;;;| "This function takes the fields of a pseudo selection and hands back one.") +(IL:* IL:|;;;| "This function takes the fields of a pseudo selection and hands back one.") (COND ((LISTP NODE) @@ -308,9 +306,9 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN DECOMPOSE-PSEUDO-SELECTION (PSEL) -(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") +(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") -(IL:* IL:|;;;| "This function takes a pseudo selection and hands its fields back as values.") +(IL:* IL:|;;;| "This function takes a pseudo selection and hands its fields back as values.") (IF (LISTP PSEL) (VALUES (FIRST PSEL) @@ -322,9 +320,9 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN SELECTION-FROM-PSEUDO-SELECTION (PSEL &OPTIONAL SEL) -(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") +(IL:* IL:|;;;| "A pseudo-selection is either a node or a list of a node and two integers. It's interpreted as the select-node, select-start, and select-end fields of a selection.") -(IL:* IL:|;;;| "This function takes a pseudo-selection and constructs the corresponding selection. If you don't hand it a selection structure, it conses one.") +(IL:* IL:|;;;| "This function takes a pseudo-selection and constructs the corresponding selection. If you don't hand it a selection structure, it conses one.") (UNLESS SEL (SETF SEL (IL:CREATE EDIT-SELECTION))) @@ -350,13 +348,13 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN ADD-COMMAND (KEY-CODE FORM &OPTIONAL SCROLL? KEY-NAME COMMAND-NAME HELP-STRING) (WHEN FIRST-ADD-COMMAND - (IL:* IL:|;;| "cache the command-table-spec so the user can undo this!") + (IL:* IL:|;;| "cache the command-table-spec so the user can undo this!") (SETQ DEFAULT-COMMAND-TABLE-SPEC (COPY-TREE COMMAND-TABLE-SPEC)) (SETQ FIRST-ADD-COMMAND NIL)) (WHEN (AND KEY-NAME COMMAND-NAME FIRST-ADD-COMMAND-MENU-ENTRY) - (IL:* IL:|;;| "add another separation line to the help menu.") + (IL:* IL:|;;| "add another separation line to the help menu.") (NCONC COMMAND-TABLE-SPEC (LIST (LIST 'NULL (LIST "-----" "" "") NIL 0))) @@ -366,8 +364,8 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) SCROLL? KEY-CODE))) (OR COMMAND-NAME FORM)) -(DEFUN GET-SELECTION (CONTEXT) (IL:* IL:\; "Edited 23-Apr-2018 18:11 by rmk:") - (IL:* IL:\; "Edited 22-Apr-2018 16:48 by rmk:") +(DEFUN GET-SELECTION (CONTEXT) (IL:* IL:\; "Edited 23-Apr-2018 18:11 by rmk:") + (IL:* IL:\; "Edited 22-Apr-2018 16:48 by rmk:") (LET* ((SELECTION (IL:FETCH SELECTION IL:OF CONTEXT)) (NODE (IL:FETCH SELECT-NODE IL:OF SELECTION)) (CHARS (IL:FETCH STRUCTURE IL:OF NODE)) @@ -377,7 +375,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (TYPE (IL:FETCH SELECT-TYPE IL:OF SELECTION)) NOT-ALL-SELECTED) - (IL:* IL:|;;| "All except NODE are needed for the atom/string cases") + (IL:* IL:|;;| "All except NODE are needed for the atom/string cases") (COND ((NULL NODE) @@ -388,7 +386,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (START :SUB-LIST) (T T)))) (T - (IL:* IL:|;;| "RMK: a single character-atom or a substring of characters in an atom or string. Full multicharacter atoms are structures. Code copies from COPY-SELECTION-LITATOM") + (IL:* IL:|;;| "RMK: a single character-atom or a substring of characters in an atom or string. Full multicharacter atoms are structures. Code copies from COPY-SELECTION-LITATOM") (WHEN (IL:TYPE? BROKEN-ATOM CHARS) (IL:SETQ CHARS (IL:FETCH ATOM-CHARS IL:OF CHARS))) @@ -396,7 +394,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (IL:NCHARS STRING)) (IL:NEQ START 1))) - (IL:* IL:|;;| "some subset of the atom/string has been selected") + (IL:* IL:|;;| "some subset of the atom/string has been selected") (IL:SETQ NOT-ALL-SELECTED T)) (VALUES (IL:MKSTRING (IF NOT-ALL-SELECTED @@ -428,16 +426,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (PENDING-DELETE POINT SELECTION) (INSERT POINT CONTEXT (COPY-LIST NEW-NODES)) - (IL:* IL:|;;| "try to select the stuff that was just inserted.") + (IL:* IL:|;;| "try to select the stuff that was just inserted.") (SELECT-PSEUDO-SEGMENT CONTEXT (COMPOSE-PSEUDO-SELECTION NEW-NODES)))) (DEFUN RESET-COMMANDS () (LET ((COMMANDS (CREATE-COMMAND-TABLE COMMAND-TABLE-SPEC))) - (IL:REPLACE (EDIT-ENV COMMAND-TABLE) IL:OF LISP-EDIT-ENVIRONMENT IL:WITH - (FIRST COMMANDS)) - (IL:REPLACE (EDIT-ENV HELP-MENU) IL:OF LISP-EDIT-ENVIRONMENT IL:WITH (SECOND - COMMANDS))) + (IL:REPLACE (EDIT-ENV COMMAND-TABLE) IL:OF LISP-EDIT-ENVIRONMENT IL:WITH (FIRST COMMANDS)) + (IL:REPLACE (EDIT-ENV HELP-MENU) IL:OF LISP-EDIT-ENVIRONMENT IL:WITH (SECOND COMMANDS))) T) (DEFUN DEFAULT-COMMANDS () @@ -456,13 +452,12 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) "Used in Add-Command to signal the first time a new command is added to the middle button menu, so that the user entries can be separated from the default entries" ) -(DEFUN EQUALIZE-STRING-WIDTHS (STRING-LIST FONT &OPTIONAL PRIN2? (DESIRED-WIDTH ( - MAXIMUM-STRING-WIDTH - STRING-LIST FONT - PRIN2?)) - (PAD-CHAR #\Space)) +(DEFUN EQUALIZE-STRING-WIDTHS (STRING-LIST FONT &OPTIONAL PRIN2? (DESIRED-WIDTH (MAXIMUM-STRING-WIDTH + STRING-LIST FONT + PRIN2?)) + (PAD-CHAR #\Space)) -(IL:* IL:|;;;| "Increase the width of all the strings in STRING-LIST to DESIRED-WIDTH by padding them on the right with PAD-CHAR.") +(IL:* IL:|;;;| "Increase the width of all the strings in STRING-LIST to DESIRED-WIDTH by padding them on the right with PAD-CHAR.") (DO ((PAD-CHAR-WIDTH (IL:CHARWIDTH (CHAR-CODE PAD-CHAR) FONT)) @@ -488,7 +483,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-AND-DISPLAY-STRUCTURE (CONTEXT STR &OPTIONAL SCOPE START WRAP?) -(IL:* IL:|;;;| "Find structure and display it by selecting it (point after) and normalizing the selection in the window. SCOPE defaults to the root structure of the CONTEXT. The WRAP? flag says to wrap failing searches around and try them again (i.e., ignore start and try again).") +(IL:* IL:|;;;| "Find structure and display it by selecting it (point after) and normalizing the selection in the window. SCOPE defaults to the root structure of the CONTEXT. The WRAP? flag says to wrap failing searches around and try them again (i.e., ignore start and try again).") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (TOP (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) @@ -503,7 +498,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-AND-DISPLAY-STRUCTURE-BACKWARDS (CONTEXT STR &OPTIONAL SCOPE END WRAP?) -(IL:* IL:|;;;| "Like find-and-display-structure, but searches backwards") +(IL:* IL:|;;;| "Like find-and-display-structure, but searches backwards") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (TOP (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) @@ -518,7 +513,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-AND-DISPLAY-SUBSTRUCTURE (CONTEXT STR &OPTIONAL SCOPE START WRAP?) -(IL:* IL:|;;;| "Find substructure and display it by selecting it (pending delete) and normalizing the selection in the window. SCOPE defaults to the root structure of the CONTEXT. The WRAP? flag says to wrap failing searches around and try them again (i.e., ignore start and try again).") +(IL:* IL:|;;;| "Find substructure and display it by selecting it (pending delete) and normalizing the selection in the window. SCOPE defaults to the root structure of the CONTEXT. The WRAP? flag says to wrap failing searches around and try them again (i.e., ignore start and try again).") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (TOP (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) @@ -533,7 +528,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS (CONTEXT STR &OPTIONAL SCOPE END WRAP?) -(IL:* IL:|;;;| "Like find-and-display-substructure but searches backwards") +(IL:* IL:|;;;| "Like find-and-display-substructure but searches backwards") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (TOP (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) @@ -548,7 +543,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-NTH-STRUCTURE (CONTEXT CHARCODE STRUCTURE N) -(IL:* IL:|;;;| "Find the Nth occurance of Structure in this edit, always starting from the beginning. This function is used as an external command to set the selection to a desired structure. Find, select, and normalize.") +(IL:* IL:|;;;| "Find the Nth occurance of Structure in this edit, always starting from the beginning. This function is used as an external command to set the selection to a desired structure. Find, select, and normalize.") (LET ((TOP (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT)))) (DO ((M 1 (+ M 1)) @@ -561,13 +556,13 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-NODE-SUBSTRUCTURE (STR STRLEN NODE &OPTIONAL START END CONTINUATION?) -(IL:* IL:|;;;| "STR is a list of structures of length STRLEN. NODE, together with START and END (which are subnode indices), is taken to indicate a subtree. We return a pseudo-selection which selects the first sequence of sibling nodes in that subtree whose successive structures match the successive elements of STR.") +(IL:* IL:|;;;| "STR is a list of structures of length STRLEN. NODE, together with START and END (which are subnode indices), is taken to indicate a subtree. We return a pseudo-selection which selects the first sequence of sibling nodes in that subtree whose successive structures match the successive elements of STR.") -(IL:* IL:|;;;| "\"First\" here is taken to mean \"first in linearization order\", so we have to do a careful recursion which: (1a) recursively checks the subtree rooted at the START subnode of NODE (default the first), (1b) checks if the START subnode starts a matching sibling sequence, (2a) recursively checks the subtree rooted at the START+1 subnode of NODE, (2b) checks if the START+1 subnode starts a matching sibling sequence, . . ., (Na) recusively checks the subtree rooted at the END subnode of NODE (default the last), (Nb) checks if the END subnode starts a matching sibling sequence [note that such a sequence could be only 1 node long since END is the right end of the subtree being checked].") +(IL:* IL:|;;;| "\"First\" here is taken to mean \"first in linearization order\", so we have to do a careful recursion which: (1a) recursively checks the subtree rooted at the START subnode of NODE (default the first), (1b) checks if the START subnode starts a matching sibling sequence, (2a) recursively checks the subtree rooted at the START+1 subnode of NODE, (2b) checks if the START+1 subnode starts a matching sibling sequence, . . ., (Na) recusively checks the subtree rooted at the END subnode of NODE (default the last), (Nb) checks if the END subnode starts a matching sibling sequence [note that such a sequence could be only 1 node long since END is the right end of the subtree being checked].") -(IL:* IL:|;;;| "N.B. It might seem that, to get true linearization order, we should check to see if a node starts a matching sibling sequence before we check its subtree. But since node structures can not be circular, we know that if a match is found in the subtree below a node then that node could not have started a matching sequence.") +(IL:* IL:|;;;| "N.B. It might seem that, to get true linearization order, we should check to see if a node starts a matching sibling sequence before we check its subtree. But since node structures can not be circular, we know that if a match is found in the subtree below a node then that node could not have started a matching sequence.") -(IL:* IL:|;;;| "The CONTINUATION? flag means that we are continuing a search that has already recursively checked the START subnode, so we skip that particular recursion. This generally happens when we are working our way up and to the right in some subtree which has already been partially checked.") +(IL:* IL:|;;;| "The CONTINUATION? flag means that we are continuing a search that has already recursively checked the START subnode, so we skip that particular recursion. This generally happens when we are working our way up and to the right in some subtree which has already been partially checked.") (SETF START (OR START 1)) (LET* ((SUBNODES (IL:FETCH SUB-NODES IL:OF NODE)) @@ -593,7 +588,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-NODE-SUBSTRUCTURE-BACKWARDS (STR STRLEN NODE &OPTIONAL START END CONTINUATION?) -(IL:* IL:|;;;| "Like find-node-substructure but searches in reverse linearization order.") +(IL:* IL:|;;;| "Like find-node-substructure but searches in reverse linearization order.") (LET* ((SUBNODES (IL:FETCH SUB-NODES IL:OF NODE)) (SUBLENGTH (FIRST SUBNODES))) @@ -610,8 +605,8 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) ((OR (NULL SUBS) (AND START (< INDEX START))) NIL) - (WHEN (AND DOSUBS? (SETF MATCH (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR STRLEN - (FIRST SUBS)))) + (WHEN (AND DOSUBS? (SETF MATCH (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR STRLEN (FIRST SUBS))) + ) (RETURN MATCH)) (UNLESS (OR (< STARTINDEX 1) (MISMATCH STR SUBS :END2 STRLEN :TEST @@ -621,7 +616,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-OBJ (CONTEXT &OPTIONAL CHARCODE FIND-STRING BACKWARDS?) -(IL:* IL:|;;;| "Find either the passed structure, the selected structure, or a prompted-for structure. The search direction is forward unless BACKWARDS? is specified.") +(IL:* IL:|;;;| "Find either the passed structure, the selected structure, or a prompted-for structure. The search direction is forward unless BACKWARDS? is specified.") (CLOSE-OPEN-NODE CONTEXT) (LET ((SELECTION (IL:|fetch| SELECTION IL:|of| CONTEXT)) @@ -632,7 +627,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (EQ (IL:|fetch| SELECT-TYPE IL:|of| SELECTION) 'STRUCTURE)) - (IL:* IL:|;;| "there is a non-string selection") + (IL:* IL:|;;| "there is a non-string selection") (IF BACKWARDS? (FIND-SELECTION-BACKWARDS CONTEXT WRAP?) @@ -644,7 +639,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-SELECTION (CONTEXT &OPTIONAL WRAP?) -(IL:* IL:|;;;| "Find the next match of the current selection and display it.") +(IL:* IL:|;;;| "Find the next match of the current selection and display it.") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (SELECTION (IL:|fetch| SELECTION IL:|of| CONTEXT)) @@ -652,32 +647,31 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (START (IL:|fetch| SELECT-START IL:|of| SELECTION))) (IF START - (IL:* IL:|;;| "a sibling sequence is selected, look for a matching sequence after it") + (IL:* IL:|;;| "a sibling sequence is selected, look for a matching sequence after it") (FIND-AND-DISPLAY-SUBSTRUCTURE CONTEXT (STRUCTURE-FROM-SELECTION SELECTION) NIL (LIST NODE (1+ START)) WRAP?) - (IL:* IL:|;;| "a node is selected, look for a matching node ") + (IL:* IL:|;;| "a node is selected, look for a matching node ") (IF (SETF START (NEXT-NODE NODE T)) - (IL:* IL:|;;| "start the search with the following node") + (IL:* IL:|;;| "start the search with the following node") (FIND-AND-DISPLAY-STRUCTURE CONTEXT (STRUCTURE-FROM-SELECTION SELECTION) NIL START WRAP?) - (IL:* IL:|;;| "there are no more nodes, either wrap or give up") + (IL:* IL:|;;| "there are no more nodes, either wrap or give up") (IF WRAP? - (FIND-AND-DISPLAY-STRUCTURE CONTEXT (STRUCTURE-FROM-SELECTION SELECTION) - ) + (FIND-AND-DISPLAY-STRUCTURE CONTEXT (STRUCTURE-FROM-SELECTION SELECTION)) (FORMAT PROMPTWINDOW "~%At end; no more structure to search.")))))) (DEFUN FIND-SELECTION-BACKWARDS (CONTEXT &OPTIONAL WRAP?) -(IL:* IL:|;;;| "Find the previous match of the current selection and display it.") +(IL:* IL:|;;;| "Find the previous match of the current selection and display it.") (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) (SELECTION (IL:|fetch| SELECTION IL:|of| CONTEXT)) @@ -686,36 +680,34 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (IL:|fetch| SELECT-END IL:|of| SELECTION)))) (IF END - (IL:* IL:|;;| "a sibling sequence is selected, look for a matching sequence before it") + (IL:* IL:|;;| "a sibling sequence is selected, look for a matching sequence before it") - (FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION - SELECTION) + (FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION SELECTION) NIL (LIST NODE (1- END)) WRAP?) - (IL:* IL:|;;| "a node is selected, look for a matching node ") + (IL:* IL:|;;| "a node is selected, look for a matching node ") (IF (SETF END (PREV-NODE NODE T)) - (IL:* IL:|;;| "start the search with the previous node") + (IL:* IL:|;;| "start the search with the previous node") - (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION - SELECTION) + (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION SELECTION) NIL END WRAP?) - (IL:* IL:|;;| "there are no more nodes, either wrap or give up") + (IL:* IL:|;;| "there are no more nodes, either wrap or give up") (IF WRAP? - (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION - SELECTION)) + (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS CONTEXT (STRUCTURE-FROM-SELECTION + SELECTION)) (FORMAT PROMPTWINDOW "~%At beginning; no more structure to search.")))))) (DEFUN FIND-STRUCTURE (STR SCOPE &OPTIONAL START) -(IL:* IL:|;;;| "Search forward in linearization order for a node whose structure matches STR. The search is bounded by SCOPE (a pseudo-selection taken to indicate a subtree) and starts at START (a pseudo-selection taken to indicate its left-most node). START defaults to SCOPE. The return value is the first node in SCOPE at or after START whose structure is IL:EQUAL to STR.") +(IL:* IL:|;;;| "Search forward in linearization order for a node whose structure matches STR. The search is bounded by SCOPE (a pseudo-selection taken to indicate a subtree) and starts at START (a pseudo-selection taken to indicate its left-most node). START defaults to SCOPE. The return value is the first node in SCOPE at or after START whose structure is IL:EQUAL to STR.") -(IL:* IL:|;;;| "N.B. Since node structures can not be circular, no subnode of a node can have structure matching that node. Thus looking for a matching node in pre-order is the same as looking for one in linearization order. So we do a pre-order search here.") +(IL:* IL:|;;;| "N.B. Since node structures can not be circular, no subnode of a node can have structure matching that node. Thus looking for a matching node in pre-order is the same as looking for one in linearization order. So we do a pre-order search here.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) @@ -727,11 +719,11 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (EQ START-NODE SCOPE-NODE))) (IL:EQUAL STR (IL:FETCH STRUCTURE IL:OF SCOPE-NODE))) - (IL:* IL:|;;| "special case: the scope includes its root node, we're starting at the root of the scope, and the root of the scope matches the passed structure.") + (IL:* IL:|;;| "special case: the scope includes its root node, we're starting at the root of the scope, and the root of the scope matches the passed structure.") (RETURN-FROM FIND-STRUCTURE SCOPE-NODE)) - (IL:* IL:|;;| "normal case: check all the nodes in the scope subtree in preorder.") + (IL:* IL:|;;| "normal case: check all the nodes in the scope subtree in preorder.") (DO* ((MIN-DEPTH (1+ (IL:FETCH DEPTH IL:OF SCOPE-NODE))) (NODE (OR (IF START-START @@ -755,7 +747,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-STRUCTURE-BACKWARDS (STR SCOPE &OPTIONAL END) -(IL:* IL:|;;;| "like find-structure but searches in reverse linearization order. Actually we search in postorder rather than reverse linearization order but this works just as well for the same reasons that preorder matches linearization order.") +(IL:* IL:|;;;| "like find-structure but searches in reverse linearization order. Actually we search in postorder rather than reverse linearization order but this works just as well for the same reasons that preorder matches linearization order.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) @@ -767,12 +759,11 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (EQ END-NODE SCOPE-NODE))) (IL:EQUAL STR (IL:FETCH STRUCTURE IL:OF SCOPE-NODE))) - (IL:* IL:|;;| "special case: the scope includes its root node, we're ending at the root of the scope, and the root of the scope matches the passed structure.") + (IL:* IL:|;;| "special case: the scope includes its root node, we're ending at the root of the scope, and the root of the scope matches the passed structure.") (RETURN-FROM FIND-STRUCTURE-BACKWARDS SCOPE-NODE)) - (IL:* IL:|;;| - "normal case: check all the nodes in the scope subtree in postorder.") + (IL:* IL:|;;| "normal case: check all the nodes in the scope subtree in postorder.") (DO* ((MIN-DEPTH (1+ (IL:FETCH DEPTH IL:OF SCOPE-NODE))) (NODE (OR (IF END-END @@ -796,9 +787,9 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-SUBSTRUCTURE (STR SCOPE &OPTIONAL START) -(IL:* IL:|;;;| "Search forward in linearization order for a sequence of nodes whose successive structures match the successive elements of STR. The search is bounded by SCOPE (a pseudo-selection taken to indicate a subtree) and starts at START (a pseudo-selection taken to indicate the left edge of a subtree). START defauts to SCOPE. The return value is a pseudo-selection indicating the sibling sequence of nodes in SCOPE at or to the right of START whose successive node structures are IL:EQUAL to the successive members of STR.") +(IL:* IL:|;;;| "Search forward in linearization order for a sequence of nodes whose successive structures match the successive elements of STR. The search is bounded by SCOPE (a pseudo-selection taken to indicate a subtree) and starts at START (a pseudo-selection taken to indicate the left edge of a subtree). START defauts to SCOPE. The return value is a pseudo-selection indicating the sibling sequence of nodes in SCOPE at or to the right of START whose successive node structures are IL:EQUAL to the successive members of STR.") -(IL:* IL:|;;;| "N.B. For a sequence of sibling nodes, first in linearization order can not be found by doing a preorder search. See find-node-substructure for details about the correct search method.") +(IL:* IL:|;;;| "N.B. For a sequence of sibling nodes, first in linearization order can not be found by doing a preorder search. See find-node-substructure for details about the correct search method.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) @@ -807,18 +798,18 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (COND ((NULL START-NODE) - (IL:* IL:|;;| "just check the entire scope") + (IL:* IL:|;;| "just check the entire scope") (FIND-NODE-SUBSTRUCTURE STR (LENGTH STR) SCOPE-NODE SCOPE-START SCOPE-END)) ((EQ START-NODE SCOPE-NODE) - (IL:* IL:|;;| "just check a terminal subtree of the scope") + (IL:* IL:|;;| "just check a terminal subtree of the scope") (FIND-NODE-SUBSTRUCTURE STR (LENGTH STR) SCOPE-NODE START-START SCOPE-END)) (T - (IL:* IL:|;;| "check each node from the start subtree up and to the right in the scope subtree. We carefully resume the recursion that would have happened if we had started from the root of the subtree. This means checking remaining structure in super-nodes on our way from the start node back up the subtree.") + (IL:* IL:|;;| "check each node from the start subtree up and to the right in the scope subtree. We carefully resume the recursion that would have happened if we had started from the root of the subtree. This means checking remaining structure in super-nodes on our way from the start node back up the subtree.") (DO ((NODE START-NODE SUPER-NODE) (SUPER-NODE (IL:FETCH SUPER-NODE IL:OF START-NODE) @@ -839,7 +830,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN FIND-SUBSTRUCTURE-BACKWARDS (STR SCOPE &OPTIONAL END) -(IL:* IL:|;;;| "Like find-substructure but searches in reverse linearization order.") +(IL:* IL:|;;;| "Like find-substructure but searches in reverse linearization order.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) @@ -848,18 +839,18 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (COND ((NULL END-NODE) - (IL:* IL:|;;| "just check the entire scope") + (IL:* IL:|;;| "just check the entire scope") (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR (LENGTH STR) SCOPE-NODE SCOPE-START SCOPE-END)) ((EQ END-NODE SCOPE-NODE) - (IL:* IL:|;;| "just check an initial subtree of the scope") + (IL:* IL:|;;| "just check an initial subtree of the scope") (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR (LENGTH STR) SCOPE-NODE SCOPE-START END-END)) (T - (IL:* IL:|;;| "check each node in the initial subtree of scope terminated by the end subtree. We carefully resume the recursion that would have happened if we had started from the root of the scope subtree. This means checking remaining structure in super-nodes on our way from the end node back up the subtree.") + (IL:* IL:|;;| "check each node in the initial subtree of scope terminated by the end subtree. We carefully resume the recursion that would have happened if we had started from the root of the scope subtree. This means checking remaining structure in super-nodes on our way from the end node back up the subtree.") (DO ((NODE END-NODE SUPER-NODE) (SUPER-NODE (IL:FETCH SUPER-NODE IL:OF END-NODE) @@ -873,8 +864,8 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (STRLEN (LENGTH STR)) MATCH) ((OR (NULL NODE) - (SETF MATCH (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR STRLEN NODE - START END CONTINUATION?)) + (SETF MATCH (FIND-NODE-SUBSTRUCTURE-BACKWARDS STR STRLEN NODE START + END CONTINUATION?)) (EQ NODE SCOPE-NODE)) MATCH))))))) @@ -885,15 +876,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN SEARCH-OBJ (CONTEXT &OPTIONAL SEARCH-STRING WRAP?) -(IL:* IL:|;;;| "Search for the the structure(s) in the string SEARCH-OBJ and display them. The search starts just after the current point or selection, if any.") +(IL:* IL:|;;;| "Search for the the structure(s) in the string SEARCH-OBJ and display them. The search starts just after the current point or selection, if any.") (MULTIPLE-VALUE-BIND (STR STRLEN) (STRUCTURE-FROM-STRING (OR SEARCH-STRING (SETF SEARCH-STRING - (GET-USER-STRING CONTEXT "Find: " - (OR (IL:|fetch| - FIND-CANDIDATE - IL:|of| CONTEXT) - FIND-CANDIDATE))))) + (GET-USER-STRING CONTEXT "Find: " + (OR (IL:|fetch| FIND-CANDIDATE + IL:|of| CONTEXT) + FIND-CANDIDATE))))) (COND ((< STRLEN 0) (FORMAT (GET-PROMPT-WINDOW CONTEXT) @@ -904,12 +894,12 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) "-- aborted.") (RETURN-FROM SEARCH-OBJ))) - (IL:* IL:|;;| "update the remembered defaults") + (IL:* IL:|;;| "update the remembered defaults") - (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ FIND-CANDIDATE - SEARCH-STRING)) + (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ FIND-CANDIDATE + SEARCH-STRING)) - (IL:* IL:|;;| "figure out where to search and where to start") + (IL:* IL:|;;| "figure out where to search and where to start") (LET* ((SCOPE (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) (START (LET* ((POINT (IL:|fetch| CARET-POINT IL:|of| CONTEXT)) @@ -933,36 +923,35 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (T SCOPE))))) (UNLESS (OR WRAP? START) - (IL:* IL:|;;| "Nothing left to search, and we're not supposed to wrap") + (IL:* IL:|;;| "Nothing left to search, and we're not supposed to wrap") (FORMAT (GET-PROMPT-WINDOW CONTEXT) "~%At end; no more structure to search.") (RETURN-FROM SEARCH-OBJ)) - (IL:* IL:|;;| "do the search") + (IL:* IL:|;;| "do the search") (IF (> STRLEN 1) - (IL:* IL:|;;| "substructure search") + (IL:* IL:|;;| "substructure search") (FIND-AND-DISPLAY-SUBSTRUCTURE CONTEXT STR SCOPE START WRAP?) - (IL:* IL:|;;| "structure search") + (IL:* IL:|;;| "structure search") (FIND-AND-DISPLAY-STRUCTURE CONTEXT (FIRST STR) SCOPE START WRAP?))))) (DEFUN SEARCH-OBJ-BACKWARDS (CONTEXT &OPTIONAL SEARCH-STRING WRAP?) -(IL:* IL:|;;;| "Like search-obj but searches backwards.") +(IL:* IL:|;;;| "Like search-obj but searches backwards.") (MULTIPLE-VALUE-BIND (STR STRLEN) (STRUCTURE-FROM-STRING (OR SEARCH-STRING (SETF SEARCH-STRING - (GET-USER-STRING CONTEXT "Find: " - (OR (IL:|fetch| - FIND-CANDIDATE - IL:|of| CONTEXT) - FIND-CANDIDATE))))) + (GET-USER-STRING CONTEXT "Find: " + (OR (IL:|fetch| FIND-CANDIDATE + IL:|of| CONTEXT) + FIND-CANDIDATE))))) (COND ((< STRLEN 0) (FORMAT (GET-PROMPT-WINDOW CONTEXT) @@ -973,12 +962,12 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) "-- aborted.") (RETURN-FROM SEARCH-OBJ-BACKWARDS))) - (IL:* IL:|;;| "update the remembered defaults") + (IL:* IL:|;;| "update the remembered defaults") - (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ FIND-CANDIDATE - SEARCH-STRING)) + (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ FIND-CANDIDATE + SEARCH-STRING)) - (IL:* IL:|;;| "figure out where to search and where to start") + (IL:* IL:|;;| "figure out where to search and where to start") (LET* ((SCOPE (SUBNODE 1 (IL:FETCH ROOT IL:OF CONTEXT))) (END (LET* ((POINT (IL:|fetch| CARET-POINT IL:|of| CONTEXT)) @@ -1002,30 +991,30 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (T SCOPE))))) (UNLESS (OR WRAP? END) - (IL:* IL:|;;| "Nothing left to search, and we're not supposed to wrap") + (IL:* IL:|;;| "Nothing left to search, and we're not supposed to wrap") (FORMAT (GET-PROMPT-WINDOW CONTEXT) "~%At beginning; no more structure to search.") (RETURN-FROM SEARCH-OBJ-BACKWARDS)) - (IL:* IL:|;;| "do the search") + (IL:* IL:|;;| "do the search") (IF (> STRLEN 1) - (IL:* IL:|;;| "substructure search") + (IL:* IL:|;;| "substructure search") (FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS CONTEXT STR SCOPE END WRAP?) - (IL:* IL:|;;| "structure search") + (IL:* IL:|;;| "structure search") (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS CONTEXT (FIRST STR) SCOPE END WRAP?))))) (DEFUN SUBSTITUTE-OBJ (CONTEXT &OPTIONAL CHARCODE OLDSTR NEWSTR REMOVE?) -(IL:* IL:|;;;| "OLDSTR and NEWSTR are strings. In the scope of the selection, replace every occurence of structure matching OLDSTR by structure parsed from NEWSTR. If REMOVE? is specified, just remove structure matching OLD.") +(IL:* IL:|;;;| "OLDSTR and NEWSTR are strings. In the scope of the selection, replace every occurence of structure matching OLDSTR by structure parsed from NEWSTR. If REMOVE? is specified, just remove structure matching OLD.") -(IL:* IL:|;;;| "We preserve the selection as best we can. Point gets thrown away.") +(IL:* IL:|;;;| "We preserve the selection as best we can. Point gets thrown away.") (CLOSE-OPEN-NODE CONTEXT) (LET* ((PROMPTWINDOW (GET-PROMPT-WINDOW CONTEXT)) @@ -1033,7 +1022,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (SCOPE NIL) (TYPE (IF REMOVE? "delet" - "substitut"))) (IL:* IL:\; "hack!!!") + "substitut"))) (IL:* IL:\; "hack!!!") (UNLESS (AND (IL:|fetch| SELECT-NODE IL:|of| SELECTION) (EQ (IL:|fetch| SELECT-TYPE IL:|of| SELECTION) 'STRUCTURE)) @@ -1041,14 +1030,13 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (RETURN-FROM SUBSTITUTE-OBJ T)) (SETQ SCOPE (PSEUDO-SELECTION-FROM-SELECTION SELECTION)) (MULTIPLE-VALUE-BIND (OLD OLDLEN) - (STRUCTURE-FROM-STRING (OR OLDSTR (SETF OLDSTR - (GET-USER-STRING CONTEXT - (IF REMOVE? - "Delete form: " - "Replace old form: ") - (OR (IL:|fetch| FIND-CANDIDATE - IL:|of| CONTEXT) - FIND-CANDIDATE))))) + (STRUCTURE-FROM-STRING (OR OLDSTR (SETF OLDSTR (GET-USER-STRING CONTEXT + (IF REMOVE? + "Delete form: " + "Replace old form: ") + (OR (IL:|fetch| FIND-CANDIDATE + IL:|of| CONTEXT) + FIND-CANDIDATE))))) (COND ((< OLDLEN 0) (FORMAT PROMPTWINDOW " -- Invalid structure.") @@ -1060,13 +1048,13 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (IF REMOVE? (VALUES NIL 0) (STRUCTURE-FROM-STRING (OR NEWSTR - (SETF NEWSTR - (GET-USER-STRING - CONTEXT "with new form: " - (OR (IL:|fetch| - SUBSTITUTE-CANDIDATE - IL:|of| CONTEXT) - SUBSTITUTE-CANDIDATE)))))) + (SETF NEWSTR + (GET-USER-STRING CONTEXT + "with new form: " + (OR (IL:|fetch| + SUBSTITUTE-CANDIDATE + IL:|of| CONTEXT) + SUBSTITUTE-CANDIDATE)))))) (COND ((< NEWLEN 0) (FORMAT PROMPTWINDOW " -- Invalid structure.") @@ -1076,16 +1064,16 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (FORMAT PROMPTWINDOW "-- aborted.") (RETURN-FROM SUBSTITUTE-OBJ T))) - (IL:* IL:|;;| "update defaults ") + (IL:* IL:|;;| "update defaults ") - (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ - FIND-CANDIDATE - OLDSTR)) + (IL:|replace| FIND-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ FIND-CANDIDATE + OLDSTR)) (UNLESS REMOVE? - (IL:|replace| SUBSTITUTE-CANDIDATE IL:|of| CONTEXT - IL:|with| (IL:SETQ SUBSTITUTE-CANDIDATE NEWSTR))) + (IL:|replace| SUBSTITUTE-CANDIDATE IL:|of| CONTEXT IL:|with| (IL:SETQ + SUBSTITUTE-CANDIDATE + NEWSTR))) - (IL:* IL:|;;| "do the substitution, report, and reselect.") + (IL:* IL:|;;| "do the substitution, report, and reselect.") (MULTIPLE-VALUE-BIND (NEW-SCOPE SUBCOUNT) (IF (> OLDLEN 1) @@ -1101,14 +1089,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN SUBSTITUTE-STRUCTURE (CONTEXT OLD NEW SCOPE &OPTIONAL REMOVE?) -(IL:* IL:|;;;| "Inside SCOPE, replace any node with structure OLD by nodes gotten from parsing NEW. If REMOVE? is given, just delete the old nodes. Returns two values: the final scope after all substitutions are made, and the number of substitutions/deletions made.") +(IL:* IL:|;;;| "Inside SCOPE, replace any node with structure OLD by nodes gotten from parsing NEW. If REMOVE? is given, just delete the old nodes. Returns two values: the final scope after all substitutions are made, and the number of substitutions/deletions made.") -(IL:* IL:|;;;| "The substitution is done as a single undoable operation, and the current selection and point are thrown away.") +(IL:* IL:|;;;| "The substitution is done as a single undoable operation, and the current selection and point are thrown away.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) - (LET* ((ROOT (IL:FETCH ROOT IL:OF CONTEXT))(IL:* IL:\; - "substituting for root is special") + (LET* ((ROOT (IL:FETCH ROOT IL:OF CONTEXT)) (IL:* IL:\; + "substituting for root is special") (POINT (IL:FETCH CARET-POINT IL:OF CONTEXT)) (SELECTION (IL:FETCH SELECTION IL:OF CONTEXT)) (NEWLEN (IF REMOVE? @@ -1139,14 +1127,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (SET-SELECTION-NOWHERE SELECTION) (VALUES SCOPE NUMSUBS)) - (IL:* IL:|;;| "replace the target ") + (IL:* IL:|;;| "replace the target ") (SELECT-NODE CONTEXT TARGET) (COND (REMOVE? (COND ((EQ TARGET-SUPER ROOT) - (IL:* IL:|;;| "\"delete\" the root structure by making it nil") + (IL:* IL:|;;| "\"delete\" the root structure by making it nil") (PENDING-DELETE POINT SELECTION) (INSERT-NULL-LIST CONTEXT)) @@ -1154,19 +1142,19 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (T (PENDING-DELETE POINT SELECTION) (INSERT POINT CONTEXT (COPY-LIST NEW-NODES)))) - (IL:* IL:|;;| "fix up the scope, if necessary") + (IL:* IL:|;;| "fix up the scope, if necessary") (COND ((EQ TARGET SCOPE-NODE) - (IL:* IL:|;;| "matched the scope, so we're done") + (IL:* IL:|;;| "matched the scope, so we're done") (COND (REMOVE? (SETF SCOPE NIL)) ((= NEWLEN 1) (SETF SCOPE (SUBNODE TARGET-INDEX TARGET-SUPER))) (T - (IL:* IL:|;;| "replacing the root structure with multiple nodes inserts a new level of list between the root (target-super) and the multiple nodes inserted. In this case, make the scope node be the new list node instead of the root itself.") + (IL:* IL:|;;| "replacing the root structure with multiple nodes inserts a new level of list between the root (target-super) and the multiple nodes inserted. In this case, make the scope node be the new list node instead of the root itself.") (SETF SCOPE (LIST (IF (EQ TARGET-SUPER ROOT) (SUBNODE 1 ROOT) @@ -1176,7 +1164,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (SETF RESUME NIL)) ((AND SCOPE-START (EQ TARGET-SUPER SCOPE-NODE)) - (IL:* IL:|;;| "matched a direct subnode of an extended scope") + (IL:* IL:|;;| "matched a direct subnode of an extended scope") (WHEN (= TARGET-INDEX SCOPE-END) (SETF RESUME NIL)) @@ -1185,9 +1173,9 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN SUBSTITUTE-SUBSTRUCTURE (CONTEXT OLD NEW SCOPE &OPTIONAL REMOVE?) -(IL:* IL:|;;;| "Inside SCOPE, replace any sequences of nodes whose structures sequentially match the elements of OLD by nodes gotten from parsing NEW. If REMOVE? is given, just delete the old sequences. Returns two values: the final scope after all substitutions are made, and the number of substitutions/deletions made.") +(IL:* IL:|;;;| "Inside SCOPE, replace any sequences of nodes whose structures sequentially match the elements of OLD by nodes gotten from parsing NEW. If REMOVE? is given, just delete the old sequences. Returns two values: the final scope after all substitutions are made, and the number of substitutions/deletions made.") -(IL:* IL:|;;;| "The substitution is done as a single undoable operation, and the current selection and point are thrown away.") +(IL:* IL:|;;;| "The substitution is done as a single undoable operation, and the current selection and point are thrown away.") (MULTIPLE-VALUE-BIND (SCOPE-NODE SCOPE-START SCOPE-END) (DECOMPOSE-PSEUDO-SELECTION SCOPE) @@ -1218,7 +1206,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (MULTIPLE-VALUE-BIND (TNODE TSTART TEND) (DECOMPOSE-PSEUDO-SELECTION TARGET) - (IL:* IL:|;;| "replace the target ") + (IL:* IL:|;;| "replace the target ") (SELECT-PSEUDO-SEGMENT CONTEXT TARGET) (COND @@ -1226,13 +1214,12 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (T (PENDING-DELETE POINT SELECTION) (INSERT POINT CONTEXT (COPY-LIST NEW-NODES)))) - (IL:* IL:|;;| - "fix up the scope, if necessary, and figure where to resume") + (IL:* IL:|;;| "fix up the scope, if necessary, and figure where to resume") (COND ((AND SCOPE-START (EQ TNODE SCOPE-NODE)) - (IL:* IL:|;;| "matched direct subnodes of an extended scope") + (IL:* IL:|;;| "matched direct subnodes of an extended scope") (IF (= TEND SCOPE-END) (SETF RESUME NIL) @@ -1243,7 +1230,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN STRUCTURE-FROM-SELECTION (SELECTION) -(IL:* IL:|;;;| "selection must be a structure selection. Return the structure encompassed by selection, which if the selection is a node is the structure of that node, and if the selection is a segment a list of the structures of the nodes in that segment.") +(IL:* IL:|;;;| "selection must be a structure selection. Return the structure encompassed by selection, which if the selection is a node is the structure of that node, and if the selection is a segment a list of the structures of the nodes in that segment.") (LET* ((NODE (IL:FETCH SELECT-NODE IL:OF SELECTION)) (START (IL:FETCH SELECT-START IL:OF SELECTION)) @@ -1263,7 +1250,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN STRUCTURE-FROM-STRING (STR) -(IL:* IL:|;;;| "return all the structures that can be read from string as a list. return a second value saying how many structures there were. If an error is encountered, a second value of -1 is returned. ") +(IL:* IL:|;;;| "return all the structures that can be read from string as a list. return a second value saying how many structures there were. If an error is encountered, a second value of -1 is returned. ") (COND ((NULL STR) @@ -1285,7 +1272,7 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (DEFUN COMMENT-OUT-SELECTION (CONTEXT CHARCODE) -(IL:* IL:|;;;| "given a sequence of whole structure selections, build a 5 level comment node and replace the nodes with the comment.") +(IL:* IL:|;;;| "given a sequence of whole structure selections, build a 5 level comment node and replace the nodes with the comment.") (LET* ((SELECTION (IL:FETCH SELECTION IL:OF CONTEXT)) (POINT (IL:FETCH CARET-POINT IL:OF CONTEXT)) @@ -1301,14 +1288,14 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (START (WITH-OUTPUT-TO-STRING (S) (IL:BIND BLANK-BEFORE IL:FOR I IL:FROM START IL:TO (OR (IL:FETCH SELECT-END IL:OF SELECTION) - START) IL:AS X + START) IL:AS X IL:ON (CDR (IL:NTH (IL:FETCH SUB-NODES IL:OF NODE) - START)) - IL:DO (IF BLANK-BEFORE - (WRITE-CHAR #\Space S) - (SETQ BLANK-BEFORE T)) - (PRIN1 (IL:FETCH STRUCTURE IL:OF (CAR X)) - S)))) + START)) IL:DO (IF BLANK-BEFORE + (WRITE-CHAR #\Space S) + (SETQ BLANK-BEFORE T)) + (PRIN1 (IL:FETCH STRUCTURE + IL:OF (CAR X)) + S)))) (T (FORMAT NIL "~S" (IL:FETCH STRUCTURE IL:OF NODE)))))) (WHEN STR (LET ((NEW-NODE (PARSE-NEW (LIST 'IL:* 'IL:\| STR) @@ -1585,42 +1572,40 @@ IL:|{DSK}kaplan>Local>medley3.5>git-medley>sources>SEDIT-COMMANDS.;6|) (il:lambda (context node subnodes) (il:* il:\; "Edited 7-Jul-87 09:39 by DCB") (il:* il:|;;;| "sticks subnodes back into node and revives them. ") (rplacd (il:fetch sub-nodes il:of node) subnodes) (il:for subnode il:in subnodes il:as index il:from 1 il:do (il:replace super-node il:of subnode il:with node) (il:replace sub-node-index il:of subnode il:with index) (detach-node subnode) (revive-node subnode (il:fetch depth il:of node))) (il:* il:|;;| "used to reparse here. now if we simply note the change, the format types, format values, and linear forms will be recomputed.") (note-change node context)) ) ) -(IL:PUTPROPS IL:SEDIT-COMMANDS IL:COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1988 1990 1991 2018 - 2021)) (IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL (13643 14213 (PSEUDO-SELECTION-FROM-SELECTION 13643 . 14213)) (14215 14969 ( -COMPOSE-PSEUDO-SELECTION 14215 . 14969)) (14971 15510 (DECOMPOSE-PSEUDO-SELECTION 14971 . 15510)) ( -15512 16309 (SELECTION-FROM-PSEUDO-SELECTION 15512 . 16309)) (16311 16614 (SELECT-PSEUDO-SEGMENT 16311 - . 16614)) (16679 17569 (ADD-COMMAND 16679 . 17569)) (17571 19734 (GET-SELECTION 17571 . 19734)) ( -19736 20916 (REPLACE-SELECTION 19736 . 20916)) (20918 21410 (RESET-COMMANDS 20918 . 21410)) (21412 -21581 (DEFAULT-COMMANDS 21412 . 21581)) (22059 23162 (EQUALIZE-STRING-WIDTHS 22059 . 23162)) (23164 -23362 (MINIMUM-STRING-WIDTH 23164 . 23362)) (23364 23562 (MAXIMUM-STRING-WIDTH 23364 . 23562)) (23564 -24435 (FIND-AND-DISPLAY-STRUCTURE 23564 . 24435)) (24437 25121 (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS -24437 . 25121)) (25123 26027 (FIND-AND-DISPLAY-SUBSTRUCTURE 25123 . 26027)) (26029 26732 ( -FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS 26029 . 26732)) (26734 27375 (FIND-NTH-STRUCTURE 26734 . 27375 -)) (27377 30107 (FIND-NODE-SUBSTRUCTURE 27377 . 30107)) (30109 31362 (FIND-NODE-SUBSTRUCTURE-BACKWARDS - 30109 . 31362)) (31364 32343 (FIND-OBJ 31364 . 32343)) (32345 33745 (FIND-SELECTION 32345 . 33745)) ( -33747 35439 (FIND-SELECTION-BACKWARDS 33747 . 35439)) (35441 38170 (FIND-STRUCTURE 35441 . 38170)) ( -38172 40519 (FIND-STRUCTURE-BACKWARDS 38172 . 40519)) (40521 43450 (FIND-SUBSTRUCTURE 40521 . 43450)) -(43452 45752 (FIND-SUBSTRUCTURE-BACKWARDS 43452 . 45752)) (45754 45990 (GET-USER-STRING 45754 . 45990) -) (45992 49700 (SEARCH-OBJ 45992 . 49700)) (49702 53367 (SEARCH-OBJ-BACKWARDS 49702 . 53367)) (53369 -58195 (SUBSTITUTE-OBJ 53369 . 58195)) (58197 62853 (SUBSTITUTE-STRUCTURE 58197 . 62853)) (62855 66027 -(SUBSTITUTE-SUBSTRUCTURE 62855 . 66027)) (66029 67191 (STRUCTURE-FROM-SELECTION 66029 . 67191)) (67193 - 68036 (STRUCTURE-FROM-STRING 67193 . 68036)) (68038 70179 (COMMENT-OUT-SELECTION 68038 . 70179)) ( -70180 125041 (ADD-MENU 70193 . 70856) (BACKSPACE 70858 . 71837) (CHANGE-PACKAGE 71839 . 74639) ( -CHANGE-PRINTBASE 74641 . 76823) (CHANGE-QUOTE 76825 . 77180) (CONVERT-COMMENT 77182 . 78942) ( -CONVERT-COMMENT-STRUCTURE 78944 . 80247) (CONVERT-COMMENT-TAIL 80249 . 81649) (CREATE-COMMAND-TABLE -81651 . 83629) (DEFAULT-EDIT-FN 83631 . 83768) (DELETE-SELECTION 83770 . 84452) (DELETE-WORD 84454 . -86555) (DO-MUTATION 86557 . 87105) (EDIT-SELECTION 87107 . 87555) (EVAL-SELECTION 87557 . 89426) ( -EXPAND 89428 . 90557) (EXTRACT-CURRENT-SELECTION 90559 . 92927) (FIND-COMMENT 92929 . 93623) (GET-MENU - 93625 . 94002) (EDIT-HELP 94004 . 95079) (HELPMENU 95081 . 97870) (INPUT-DOT 97872 . 100004) ( -INPUT-ESCAPE 100006 . 100254) (INPUT-NORMAL-CHAR 100256 . 102289) (INPUT-QUOTE 102291 . 105373) ( -INPUT-SQUARE-BRACKET 105375 . 105726) (INPUT-STRINGDELIM 105728 . 107127) (INPUT-TOKENDELIM 107129 . -108109) (INSERT-MULTI-ESCAPE 108111 . 109239) (INSERT-SPECIAL-CHARACTER 109241 . 110501) ( -INSPECT-SELECTION 110503 . 111038) (JOIN 111040 . 114710) (MENU-CLOSEFN 114712 . 114930) ( -MENU-FIND-SELECTEDFN 114932 . 115632) (MENU-INIT-STATE 115634 . 116441) (MENU-PACKAGE-SELECTEDFN -116443 . 117494) (MENU-PRINTBASE-SELECTEDFN 117496 . 118372) (MENU-SELECTEDFN 118374 . 118800) ( -MENU-SUBSTITUTE-SELECTEDFN 118802 . 119762) (MUTATE 119764 . 120874) (QUOTE-CURRENT-SELECTION 120876 - . 121643) (REDISPLAY 121645 . 121884) (REDO 121886 . 122380) (SELECTED-FN-NAME 122382 . 122827) ( -SKIP-TO-GAP 122829 . 123606) (UNDO 123608 . 124408) (UNDO-EXTRACT 124410 . 125039))))) + (IL:FILEMAP (NIL (13440 14010 (PSEUDO-SELECTION-FROM-SELECTION 13440 . 14010)) (14012 14766 ( +COMPOSE-PSEUDO-SELECTION 14012 . 14766)) (14768 15307 (DECOMPOSE-PSEUDO-SELECTION 14768 . 15307)) ( +15309 16106 (SELECTION-FROM-PSEUDO-SELECTION 15309 . 16106)) (16108 16411 (SELECT-PSEUDO-SEGMENT 16108 + . 16411)) (16476 17366 (ADD-COMMAND 16476 . 17366)) (17368 19539 (GET-SELECTION 17368 . 19539)) ( +19541 20721 (REPLACE-SELECTION 19541 . 20721)) (20723 21044 (RESET-COMMANDS 20723 . 21044)) (21046 +21215 (DEFAULT-COMMANDS 21046 . 21215)) (21693 22701 (EQUALIZE-STRING-WIDTHS 21693 . 22701)) (22703 +22901 (MINIMUM-STRING-WIDTH 22703 . 22901)) (22903 23101 (MAXIMUM-STRING-WIDTH 22903 . 23101)) (23103 +23974 (FIND-AND-DISPLAY-STRUCTURE 23103 . 23974)) (23976 24660 (FIND-AND-DISPLAY-STRUCTURE-BACKWARDS +23976 . 24660)) (24662 25566 (FIND-AND-DISPLAY-SUBSTRUCTURE 24662 . 25566)) (25568 26271 ( +FIND-AND-DISPLAY-SUBSTRUCTURE-BACKWARDS 25568 . 26271)) (26273 26914 (FIND-NTH-STRUCTURE 26273 . 26914 +)) (26916 29646 (FIND-NODE-SUBSTRUCTURE 26916 . 29646)) (29648 30875 (FIND-NODE-SUBSTRUCTURE-BACKWARDS + 29648 . 30875)) (30877 31856 (FIND-OBJ 30877 . 31856)) (31858 33229 (FIND-SELECTION 31858 . 33229)) ( +33231 34791 (FIND-SELECTION-BACKWARDS 33231 . 34791)) (34793 37522 (FIND-STRUCTURE 34793 . 37522)) ( +37524 39851 (FIND-STRUCTURE-BACKWARDS 37524 . 39851)) (39853 42782 (FIND-SUBSTRUCTURE 39853 . 42782)) +(42784 45084 (FIND-SUBSTRUCTURE-BACKWARDS 42784 . 45084)) (45086 45322 (GET-USER-STRING 45086 . 45322) +) (45324 48925 (SEARCH-OBJ 45324 . 48925)) (48927 52485 (SEARCH-OBJ-BACKWARDS 48927 . 52485)) (52487 +57315 (SUBSTITUTE-OBJ 52487 . 57315)) (57317 61983 (SUBSTITUTE-STRUCTURE 57317 . 61983)) (61985 65128 +(SUBSTITUTE-SUBSTRUCTURE 61985 . 65128)) (65130 66292 (STRUCTURE-FROM-SELECTION 65130 . 66292)) (66294 + 67137 (STRUCTURE-FROM-STRING 66294 . 67137)) (67139 69410 (COMMENT-OUT-SELECTION 67139 . 69410)) ( +69411 124272 (ADD-MENU 69424 . 70087) (BACKSPACE 70089 . 71068) (CHANGE-PACKAGE 71070 . 73870) ( +CHANGE-PRINTBASE 73872 . 76054) (CHANGE-QUOTE 76056 . 76411) (CONVERT-COMMENT 76413 . 78173) ( +CONVERT-COMMENT-STRUCTURE 78175 . 79478) (CONVERT-COMMENT-TAIL 79480 . 80880) (CREATE-COMMAND-TABLE +80882 . 82860) (DEFAULT-EDIT-FN 82862 . 82999) (DELETE-SELECTION 83001 . 83683) (DELETE-WORD 83685 . +85786) (DO-MUTATION 85788 . 86336) (EDIT-SELECTION 86338 . 86786) (EVAL-SELECTION 86788 . 88657) ( +EXPAND 88659 . 89788) (EXTRACT-CURRENT-SELECTION 89790 . 92158) (FIND-COMMENT 92160 . 92854) (GET-MENU + 92856 . 93233) (EDIT-HELP 93235 . 94310) (HELPMENU 94312 . 97101) (INPUT-DOT 97103 . 99235) ( +INPUT-ESCAPE 99237 . 99485) (INPUT-NORMAL-CHAR 99487 . 101520) (INPUT-QUOTE 101522 . 104604) ( +INPUT-SQUARE-BRACKET 104606 . 104957) (INPUT-STRINGDELIM 104959 . 106358) (INPUT-TOKENDELIM 106360 . +107340) (INSERT-MULTI-ESCAPE 107342 . 108470) (INSERT-SPECIAL-CHARACTER 108472 . 109732) ( +INSPECT-SELECTION 109734 . 110269) (JOIN 110271 . 113941) (MENU-CLOSEFN 113943 . 114161) ( +MENU-FIND-SELECTEDFN 114163 . 114863) (MENU-INIT-STATE 114865 . 115672) (MENU-PACKAGE-SELECTEDFN +115674 . 116725) (MENU-PRINTBASE-SELECTEDFN 116727 . 117603) (MENU-SELECTEDFN 117605 . 118031) ( +MENU-SUBSTITUTE-SELECTEDFN 118033 . 118993) (MUTATE 118995 . 120105) (QUOTE-CURRENT-SELECTION 120107 + . 120874) (REDISPLAY 120876 . 121115) (REDO 121117 . 121611) (SELECTED-FN-NAME 121613 . 122058) ( +SKIP-TO-GAP 122060 . 122837) (UNDO 122839 . 123639) (UNDO-EXTRACT 123641 . 124270))))) IL:STOP diff --git a/sources/SEDIT-COMMANDS.DFASL b/sources/SEDIT-COMMANDS.DFASL index 490401d34..1940a7613 100644 Binary files a/sources/SEDIT-COMMANDS.DFASL and b/sources/SEDIT-COMMANDS.DFASL differ