From 2af7324fffa70e364e100cf31391274ed5686788 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Mon, 6 Oct 2025 10:39:33 -0700 Subject: [PATCH] CLIPBOARD passes file to xclip (windows) (#2297) * CLIPBOARD passes file to xclip (windows) * More careful to specify {UNIX} as the host on the Medley side * Make sure the process stream is closed in the xclip case * This time using ShellCommand * Use DSK and UNIX-FILE-NAME * Added .txt to the tmp file --- library/CLIPBOARD | 54 ++++++++++++++++++++++++++--------------- library/CLIPBOARD.LCOM | Bin 3740 -> 4578 bytes 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/library/CLIPBOARD b/library/CLIPBOARD index 6dfe3bb9..df92fffe 100644 --- a/library/CLIPBOARD +++ b/library/CLIPBOARD @@ -1,13 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "21-Apr-2024 09:12:04" {WMEDLEY}CLIPBOARD.;18 7248 +(FILECREATED "25-Sep-2025 15:00:01"  +{DSK}kaplan>Local>medley3.5>working-medley>library>CLIPBOARD.;28 8305 :EDIT-BY rmk - :CHANGES-TO (FNS INSTALL-CLIPBOARD) - (VARS CLIPBOARDCOMS) + :CHANGES-TO (FNS PUTCLIPBOARD CLIPBOARD-COPY-STREAM) - :PREVIOUS-DATE " 2-Apr-2024 17:02:09" {WMEDLEY}CLIPBOARD.;17) + :PREVIOUS-DATE "21-Apr-2024 09:12:04" {WMEDLEY}CLIPBOARD.;18) (PRETTYCOMPRINT CLIPBOARDCOMS) @@ -58,12 +58,29 @@ (CONCATCODES (BIND C WHILE (SETQ C (READCCODE s)) COLLECT C]) (PUTCLIPBOARD - [LAMBDA (OBJECT PRINTFN) (* ; "Edited 23-Feb-2021 11:32 by rmk:") - (* ; "Edited 25-Apr-2018 16:49 by rmk:") - (CL:WITH-OPEN-STREAM (s (CLIPBOARD-COPY-STREAM)) - (IF PRINTFN - THEN (APPLY* PRINTFN OBJECT s) - ELSE (PRIN3 OBJECT s]) + [LAMBDA (OBJECT PRINTFN) (* ; "Edited 25-Sep-2025 14:59 by rmk") + (* ; "Edited 23-Feb-2021 11:32 by rmk:") + (* ; "Edited 25-Apr-2018 16:49 by rmk:") + (if (STRPOS "darwin" (UNIX-GETENV "OSTYPE")) + then + (* ;; "pbpaste doesn't seem to take a file argument.") + + (CL:WITH-OPEN-STREAM (S (CREATE-PROCESS-STREAM "pbcopy")) + (CL:IF PRINTFN + (APPLY* PRINTFN OBJECT S) + (PRIN3 OBJECT S))) + else + (* ;; "Try to make xclip more reliable by passing a file that already contains the input.") + + (LET ((TEMPFILE (OUTFILEP "{DSK}/tmp/xclip-copy.txt"))) + (CL:WITH-OPEN-FILE (S TEMPFILE :DIRECTION :OUTPUT :EXTERNAL-FORMAT ( + SYSTEM-EXTERNALFORMAT + )) + (CL:IF PRINTFN + (APPLY* PRINTFN OBJECT S) + (PRIN3 OBJECT S))) + (ShellCommand (CONCAT "xclip -i -selection clipboard " (UNIX-FILE-NAME TEMPFILE))) + (DELFILE TEMPFILE]) (PASTEFROMCLIPBOARD [LAMBDA NIL (* ; "Edited 15-Feb-2021 23:43 by rmk:") @@ -81,13 +98,12 @@ ELSE (BIND C WHILE (SETQ C (GNCCODE STR)) DO (BKSYSCHARCODE C]) (CLIPBOARD-COPY-STREAM - [LAMBDA NIL (* ; "Edited 7-Jul-2022 23:51 by rmk") + [LAMBDA NIL (* ; "Edited 24-Sep-2025 14:27 by rmk") + (* ; "Edited 7-Jul-2022 23:51 by rmk") (* ; "Edited 23-Feb-2021 22:11 by rmk:") - (LET (STRM (OST (UNIX-GETENV "OSTYPE"))) - (SETQ STRM (CREATE-PROCESS-STREAM (CL:IF (STRPOS "darwin" OST) - "pbcopy" - "xclip -i -selection clipboard"))) - STRM]) + (CREATE-PROCESS-STREAM (CL:IF (STRPOS "darwin" (UNIX-GETENV "OSTYPE")) + "pbcopy" + "xclip -i -selection clipboard")]) (CLIPBOARD-PASTE-STREAM [LAMBDA NIL (* ; "Edited 7-Jul-2022 23:51 by rmk") @@ -146,7 +162,7 @@ (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (1148 5429 (INSTALL-CLIPBOARD 1158 . 2485) (GETCLIPBOARD 2487 . 2861) (PUTCLIPBOARD 2863 - . 3268) (PASTEFROMCLIPBOARD 3270 . 4188) (CLIPBOARD-COPY-STREAM 4190 . 4705) (CLIPBOARD-PASTE-STREAM -4707 . 5427)) (5430 6969 (SEDIT.COPYTOCLIPBOARD 5440 . 6967))))) + (FILEMAP (NIL (1167 6486 (INSTALL-CLIPBOARD 1177 . 2504) (GETCLIPBOARD 2506 . 2880) (PUTCLIPBOARD 2882 + . 4306) (PASTEFROMCLIPBOARD 4308 . 5226) (CLIPBOARD-COPY-STREAM 5228 . 5762) (CLIPBOARD-PASTE-STREAM +5764 . 6484)) (6487 8026 (SEDIT.COPYTOCLIPBOARD 6497 . 8024))))) STOP diff --git a/library/CLIPBOARD.LCOM b/library/CLIPBOARD.LCOM index f5565a4fc245977d76feeb6360d8f89f0fdb9f92..b077be285e6fbbd0a97f069e4b04c325eb34de7d 100644 GIT binary patch delta 1286 zcmb_c%Wl(95Ou0FkW__MAc{b!g8|VjoL;{Y$Dl~5Ad4M*0vq}P{SDTv`3D#~p^jR?iY%_?+&lN2Gcz~-eDBAD4_hOValAgm5l#eF zlnIduOT!A?>~;EW-)ljy3p8ZjR-BEKr}YDGa8TNB^!-M+r1zQ)ztr(szIV*$#L{7J zu;1?PG2@+*-`*WG2FE2u*Q_N2UY|@`yuGRLtxSymL+Os6RM(B!g9V z&#yxpja2Kp4$};|T#klTV~9pCG9xid=xk=Cs_Cj?t7TWMVA6$popHhct3Z%=A_gxL zchab9IAH~WJiok<1=+IIP0g%3Oa+|;_Y=1hnU5!M`ZMt=Ip;tXcqkK*7lV50b%fao zK1-Em%Y+aqVYv3I7?MWLPR2gh4knKIB?aP6?O!{ zL;<7lqK4SAHN&kM7!xqp)>XyL0`+y4qGoy&{-PxvMwxK=M&gb3;!I*M+>DN+<@p{J z__NnWanfR9W<5%Zm#g8Oc~qb%q)1+%*od$`7apHIOeJnaTrAhYK1KjsHl2W z9-9}ydE@#1Na=MtjcyB{cM%lRP|7Zb0@Mv{iwRR1qg+#gL?J*i5Aq*7%*0QT1sM%t zEg<1>MYD0fnrVQDXiO%MnCm+JXTw@K)I$eSu#;X^@LN#efQ~)~tHVxz^{DB$`%JUf zKh6!0hBRQ~=>BeqX($41I_|cm(jWlcY77qBT{;_(`J1QTuOt(Kq3J+94rd#UHGU`2 l>-rSo_wg6i4c!>`pE%fX3=6@q8ZYSM4`nsmbRdlL!i^%;i^8;+^<`6LpW$G&maH;T&&wB``S9V!1^WLX%c2Ht*}%S z)yo~EfMEt9=#XY%Tm&(nF(lnr)GInrdnD9qg2=v$3j5LAV1l&9em7SdUXu1%y>+{t z_KHP#7h_C#hx3i)^*Vbax9eN%R90`?tnp)+h;bN63K);sH|gF(9>fMz4iBg083Nq` eG#XUzCnpF@KuKQoQ;OJg`3_rMZOsMwXX6iq&5;)X