|
1 | 1 | (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) |
2 | 2 |
|
3 | | -(FILECREATED "27-Mar-2024 15:28:15" {WMEDLEY}<library>tedit>TEDIT-COMMAND.;71 46623 |
| 3 | +(FILECREATED "21-Apr-2024 11:55:17" |
| 4 | +{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;87 53604 |
4 | 5 |
|
5 | 6 | :EDIT-BY rmk |
6 | 7 |
|
7 | | - :CHANGES-TO (FNS \TEDIT.INTERRUPT.SETUP) |
| 8 | + :CHANGES-TO (FNS \TEDIT.COPYTOCLIPBOARD \TEDIT.WRITE.SEL) |
| 9 | + (MACROS \TEDIT.MOUSESTATE) |
8 | 10 |
|
9 | | - :PREVIOUS-DATE "20-Mar-2024 11:07:16" {WMEDLEY}<library>tedit>TEDIT-COMMAND.;70) |
| 11 | + :PREVIOUS-DATE "21-Apr-2024 10:17:38" |
| 12 | +{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>tedit>TEDIT-COMMAND.;80) |
10 | 13 |
|
11 | 14 |
|
12 | 15 | (PRETTYCOMPRINT TEDIT-COMMANDCOMS) |
|
70 | 73 | \TEDIT.WORDBOUND.READTABLE |
71 | 74 | ] |
72 | 75 | (GLOBALVARS TEDIT.READTABLE TEDIT.WORDBOUND.READTABLE)) |
73 | | - (COMS (* ; "Wheelscroll") |
| 76 | + [COMS (* ; "Wheelscroll") |
74 | 77 | (FILES (SYSLOAD FROM LISPUSERS) |
75 | 78 | WHEELSCROLL) |
76 | 79 | (FNS \TEDIT.WHEELSCROLL) |
77 | 80 | (GLOBALVARS WHEELSCROLLCHARCODES) |
78 | | - (VARS (WHEELSCROLLCHARCODES (\TEDIT.WHEELSCROLL]) |
| 81 | + (VARS (WHEELSCROLLCHARCODES (\TEDIT.WHEELSCROLL] |
| 82 | + (COMS (* ; "Clipboard") |
| 83 | + (FNS \TEDIT.CLIPBOARD \TEDIT.COPYTOCLIPBOARD \TEDIT.EXTRACTTOCLIPBOARD \TEDIT.WRITE.SEL |
| 84 | + ) |
| 85 | + [DECLARE%: EVAL@LOAD EVAL@COMPILE DONTCOPY (CONSTANTS (CLIPBOARDCODES |
| 86 | + (CHARCODE (meta,C meta,X meta,c |
| 87 | + meta,X] |
| 88 | + (P (\TEDIT.CLIPBOARD]) |
79 | 89 | (DECLARE%: EVAL@COMPILE DONTCOPY |
80 | 90 | (DECLARE%: EVAL@COMPILE |
81 | 91 |
|
|
155 | 165 |
|
156 | 166 | (PUTPROPS \TEDIT.MOUSESTATE MACRO (BUTTON |
157 | 167 |
|
158 | | - (* Test to see if only the specified mouse button is down. |
159 | | - DOES NOT call GETMOUSESTATE, so the mouse-button info is the same as the last |
160 | | - time it WAS called.) |
| 168 | + (* ;; "Test to see if only the specified mouse button is down. DOES NOT call GETMOUSESTATE, so the mouse-button info is the same as the last time it was called.") |
161 | 169 |
|
162 | 170 | (SELECTQ (CAR BUTTON) |
163 | | - (LEFT '(IEQP LASTMOUSEBUTTONS 4)) |
164 | | - (MIDDLE '(IEQP LASTMOUSEBUTTONS 1)) |
165 | | - (RIGHT '(IEQP LASTMOUSEBUTTONS 2)) |
| 171 | + (LEFT '(EQ LASTMOUSEBUTTONS 4)) |
| 172 | + (MIDDLE '(EQ LASTMOUSEBUTTONS 1)) |
| 173 | + (RIGHT '(EQ LASTMOUSEBUTTONS 2)) |
166 | 174 | (SHOULDNT)))) |
167 | 175 |
|
168 | 176 | (PUTPROPS \TEDIT.CHECK MACRO [ARGS (COND |
|
249 | 257 | TEXTOBJ]) |
250 | 258 |
|
251 | 259 | (\TEDIT.COMMAND.LOOP |
252 | | - [LAMBDA (STREAM RTBL) (* ; "Edited 20-Mar-2024 10:59 by rmk") |
| 260 | + [LAMBDA (STREAM RTBL) (* ; "Edited 21-Apr-2024 09:08 by rmk") |
| 261 | + (* ; "Edited 2-Apr-2024 15:35 by rmk") |
| 262 | + (* ; "Edited 20-Mar-2024 10:59 by rmk") |
253 | 263 | (* ; "Edited 15-Mar-2024 14:23 by rmk") |
254 | 264 | (* ; "Edited 9-Mar-2024 11:35 by rmk") |
255 | 265 | (* ; "Edited 24-Feb-2024 15:33 by rmk") |
|
394 | 404 | (* ; "do it") |
395 | 405 | (* ; |
396 | 406 | "After a user function (that is not wheelscroll) no more blue-pending-delete") |
397 | | - (CL:UNLESS (MEMB CH WHEELSCROLLCHARCODES) |
| 407 | + |
| 408 | + (* ;; "We shouldn't have to test for special characters here, there should be a more general way of marking them") |
| 409 | + |
| 410 | + (CL:UNLESS (OR (MEMB CH WHEELSCROLLCHARCODES) |
| 411 | + (MEMB CH CLIPBOARDCODES)) |
398 | 412 | (* ; |
399 | | - "The wheelscroll FN handled the selection. should preserve the highlighting") |
| 413 | + "The FNs handled the selection. should preserve the highlighting") |
400 | 414 | (\TEDIT.SHOWSEL SEL NIL) |
401 | 415 | (\TEDIT.RESET.EXTEND.PENDING.DELETE SEL TEXTOBJ) |
402 | 416 | (\TEDIT.SHOWSEL SEL T)))) |
|
839 | 853 | ) |
840 | 854 |
|
841 | 855 | (RPAQ WHEELSCROLLCHARCODES (\TEDIT.WHEELSCROLL)) |
| 856 | + |
| 857 | + |
| 858 | + |
| 859 | +(* ; "Clipboard") |
| 860 | + |
| 861 | +(DEFINEQ |
| 862 | + |
| 863 | +(\TEDIT.CLIPBOARD |
| 864 | + [LAMBDA NIL (* ; "Edited 21-Apr-2024 09:57 by rmk") |
| 865 | + (* ; "Edited 2-Oct-2023 23:23 by rmk") |
| 866 | + |
| 867 | + (* ;; "TEDIT disables interrupts, so it has to deal with special interrupt behaviors when the caret is in the Tedit window. This localizes the behavior of WHEELSCROLL and CLIPBOARD inside Tedit.") |
| 868 | + |
| 869 | + (* ;; "Clipboard paste") |
| 870 | + |
| 871 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,v") |
| 872 | + (FUNCTION PASTEFROMCLIPBOARD) |
| 873 | + TEDIT.READTABLE) |
| 874 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,V") |
| 875 | + (FUNCTION PASTEFROMCLIPBOARD) |
| 876 | + TEDIT.READTABLE) |
| 877 | + |
| 878 | + (* ;; "Clipboard copy") |
| 879 | + |
| 880 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,c") |
| 881 | + (FUNCTION \TEDIT.COPYTOCLIPBOARD) |
| 882 | + TEDIT.READTABLE) |
| 883 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,C") |
| 884 | + (FUNCTION \TEDIT.COPYTOCLIPBOARD) |
| 885 | + TEDIT.READTABLE) |
| 886 | + |
| 887 | + (* ;; "Clipboard extract") |
| 888 | + |
| 889 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,X") |
| 890 | + (FUNCTION \TEDIT.EXTRACTTOCLIPBOARD) |
| 891 | + TEDIT.READTABLE) |
| 892 | + (TEDIT.SETFUNCTION (CHARCODE "Meta,x") |
| 893 | + (FUNCTION \TEDIT.EXTRACTTOCLIPBOARD) |
| 894 | + TEDIT.READTABLE) |
| 895 | + |
| 896 | + (* ;; "Each of the individual actions is conditioned on WHEELSCROLLENABLED (which may or may not have been loaded).") |
| 897 | + |
| 898 | + (for I in WHEELSCROLLINTERRUPTS collect (TEDIT.SETFUNCTION (CAR I) |
| 899 | + `[LAMBDA NIL |
| 900 | + (AND WHEELSCROLLENABLED ,(CADR I] |
| 901 | + TEDIT.READTABLE) |
| 902 | + (CAR I]) |
| 903 | + |
| 904 | +(\TEDIT.COPYTOCLIPBOARD |
| 905 | + [LAMBDA (TSTREAM TEXTOBJ SEL EXTRACT) (* ; "Edited 21-Apr-2024 11:51 by rmk") |
| 906 | + (* ; "Edited 2-Apr-2024 17:01 by rmk") |
| 907 | + (* ; "Edited 18-Apr-2018 00:02 by rmk:") |
| 908 | + |
| 909 | + (* ;; "If CLIPBOARD is loaded, this copies the characters in the current selection to the clipboard (SEL argument is ignored). .") |
| 910 | + |
| 911 | + (CL:WHEN (FGETD (FUNCTION PUTCLIPBOARD)) |
| 912 | + (SETQ TSTREAM (TEXTSTREAM (OR TSTREAM (TTY.PROCESS)) |
| 913 | + T)) |
| 914 | + (CL:WHEN TSTREAM |
| 915 | + (PUTCLIPBOARD TSTREAM (FUNCTION \TEDIT.WRITE.SEL)) |
| 916 | + (CL:WHEN EXTRACT (TEDIT.DELETE TSTREAM))))]) |
| 917 | + |
| 918 | +(\TEDIT.EXTRACTTOCLIPBOARD |
| 919 | + [LAMBDA (TSTREAM TEXTOBJ SEL) (* ; "Edited 21-Apr-2024 09:20 by rmk") |
| 920 | + (\TEDIT.COPYTOCLIPBOARD TSTREAM TEXTOBJ SEL T]) |
| 921 | + |
| 922 | +(\TEDIT.WRITE.SEL |
| 923 | + [LAMBDA (TSTREAM STREAM) (* ; "Edited 21-Apr-2024 11:55 by rmk") |
| 924 | + |
| 925 | + (* ;; "Writes the selected characters in TSTREAM to STREAM. ") |
| 926 | + |
| 927 | + (* ;; "If there are no image objects, this is equivalent to (PRIN3 (TEDIT.SEL.AS.STRING ...)), but that would trip over image objects. Image objects could be skipped, or as here, represented as the OBJECTBYTE or described in some way.") |
| 928 | + |
| 929 | + (* ;; "For Medley-to-Medley copy/paste we could also create a local tmp stream that shadows the system clipboard, and apply the PUTFN to that stream. Then copy/paste could be used to move image objects around with a single Medley or perhaps across Medley's (if the GETFN is available).") |
| 930 | + |
| 931 | + (LET* ((TEXTOBJ (TEXTOBJ TSTREAM)) |
| 932 | + (SEL (FGETTOBJ TEXTOBJ SEL))) |
| 933 | + (CL:WHEN (IGREATERP (GETSEL SEL DCH) |
| 934 | + 0) |
| 935 | + |
| 936 | + (* ;; "This could be run by setting the fileptr and doing BIN's. This way we don't manipulate TSTREAM's file position FWIW.") |
| 937 | + |
| 938 | + (for I CODE PRE (OBJECTBYTE _ (GETTEXTPROP TEXTOBJ 'OBJECTBYTE)) |
| 939 | + (NOBJECTS _ 0) from (GETSEL SEL CH#) to (SUB1 (GETSEL SEL CHLIM)) |
| 940 | + while (SETQ CODE (TEDIT.NTHCHARCODE TSTREAM I)) |
| 941 | + do (if (CHARCODEP CODE) |
| 942 | + then (PRINTCCODE CODE STREAM) |
| 943 | + elseif (IMAGEOBJP CODE) |
| 944 | + then (add NOBJECTS 1) |
| 945 | + (if OBJECTBYTE |
| 946 | + then (PRINTCCODE OBJECTBYTE STREAM) |
| 947 | + else (PRIN3 "{" STREAM) |
| 948 | + (PRIN4 (IMAGEOBJPROP CODE 'GETFN) |
| 949 | + STREAM) |
| 950 | + (CL:WHEN (SETQ PRE (APPLY* (OR (IMAGEOBJPROP CODE 'PREPRINTFN) |
| 951 | + (FUNCTION NILL)) |
| 952 | + PRE CODE)) |
| 953 | + (PRIN3 " : " STREAM) |
| 954 | + (PRIN4 PRE STREAM)) |
| 955 | + (PRIN3 "}" STREAM)) |
| 956 | + else (ERROR "UNRECOGNIZED TEDIT CHARACTER" CODE)) |
| 957 | + finally (CL:WHEN (IGREATERP NOBJECTS 0) |
| 958 | + (TEDIT.PROMPTPRINT TSTREAM (CONCAT "Note: Selection contains " NOBJECTS |
| 959 | + " image object" |
| 960 | + (CL:IF (EQ NOBJECTS 1) |
| 961 | + "" |
| 962 | + "s")) |
| 963 | + T))))]) |
| 964 | +) |
| 965 | +(DECLARE%: EVAL@LOAD EVAL@COMPILE DONTCOPY |
| 966 | +(DECLARE%: EVAL@COMPILE |
| 967 | + |
| 968 | +(RPAQ CLIPBOARDCODES (CHARCODE (meta,C meta,X meta,c meta,X))) |
| 969 | + |
| 970 | + |
| 971 | +[CONSTANTS (CLIPBOARDCODES (CHARCODE (meta,C meta,X meta,c meta,X] |
| 972 | +) |
| 973 | +) |
| 974 | + |
| 975 | +(\TEDIT.CLIPBOARD) |
842 | 976 | (DECLARE%: DONTCOPY |
843 | | - (FILEMAP (NIL (7795 29756 (\TEDIT.INTERRUPT.SETUP 7805 . 9452) (\TEDIT.MARKACTIVE 9454 . 9666) ( |
844 | | -\TEDIT.MARKINACTIVE 9668 . 9884) (\TEDIT.COMMAND.LOOP 9886 . 23156) (\TEDIT.COMMAND.RESET.SETUP 23158 |
845 | | - . 29754)) (30040 45237 (\TEDIT.READTABLE 30050 . 31707) (\TEDIT.WORDBOUND.READTABLE 31709 . 34302) ( |
846 | | -TEDIT.GETSYNTAX 34304 . 36743) (TEDIT.SETSYNTAX 36745 . 39223) (TEDIT.GETFUNCTION 39225 . 40585) ( |
847 | | -TEDIT.SETFUNCTION 40587 . 43026) (TEDIT.WORDGET 43028 . 43289) (TEDIT.WORDSET 43291 . 43988) ( |
848 | | -TEDIT.ATOMBOUND.READTABLE 43990 . 45235)) (45565 46474 (\TEDIT.WHEELSCROLL 45575 . 46472))))) |
| 977 | + (FILEMAP (NIL (8457 30896 (\TEDIT.INTERRUPT.SETUP 8467 . 10114) (\TEDIT.MARKACTIVE 10116 . 10328) ( |
| 978 | +\TEDIT.MARKINACTIVE 10330 . 10546) (\TEDIT.COMMAND.LOOP 10548 . 24296) (\TEDIT.COMMAND.RESET.SETUP |
| 979 | +24298 . 30894)) (31180 46377 (\TEDIT.READTABLE 31190 . 32847) (\TEDIT.WORDBOUND.READTABLE 32849 . |
| 980 | +35442) (TEDIT.GETSYNTAX 35444 . 37883) (TEDIT.SETSYNTAX 37885 . 40363) (TEDIT.GETFUNCTION 40365 . |
| 981 | +41725) (TEDIT.SETFUNCTION 41727 . 44166) (TEDIT.WORDGET 44168 . 44429) (TEDIT.WORDSET 44431 . 45128) ( |
| 982 | +TEDIT.ATOMBOUND.READTABLE 45130 . 46375)) (46705 47614 (\TEDIT.WHEELSCROLL 46715 . 47612)) (47767 |
| 983 | +53347 (\TEDIT.CLIPBOARD 47777 . 49532) (\TEDIT.COPYTOCLIPBOARD 49534 . 50314) ( |
| 984 | +\TEDIT.EXTRACTTOCLIPBOARD 50316 . 50511) (\TEDIT.WRITE.SEL 50513 . 53345))))) |
849 | 985 | STOP |
0 commit comments