Skip to content

Commit 2af7324

Browse files
authored
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
1 parent 60dcbe2 commit 2af7324

File tree

2 files changed

+35
-19
lines changed

2 files changed

+35
-19
lines changed

library/CLIPBOARD

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
22

3-
(FILECREATED "21-Apr-2024 09:12:04" {WMEDLEY}<library>CLIPBOARD.;18 7248
3+
(FILECREATED "25-Sep-2025 15:00:01" 
4+
{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>CLIPBOARD.;28 8305
45

56
:EDIT-BY rmk
67

7-
:CHANGES-TO (FNS INSTALL-CLIPBOARD)
8-
(VARS CLIPBOARDCOMS)
8+
:CHANGES-TO (FNS PUTCLIPBOARD CLIPBOARD-COPY-STREAM)
99

10-
:PREVIOUS-DATE " 2-Apr-2024 17:02:09" {WMEDLEY}<library>CLIPBOARD.;17)
10+
:PREVIOUS-DATE "21-Apr-2024 09:12:04" {WMEDLEY}<library>CLIPBOARD.;18)
1111

1212

1313
(PRETTYCOMPRINT CLIPBOARDCOMS)
@@ -58,12 +58,29 @@
5858
(CONCATCODES (BIND C WHILE (SETQ C (READCCODE s)) COLLECT C])
5959

6060
(PUTCLIPBOARD
61-
[LAMBDA (OBJECT PRINTFN) (* ; "Edited 23-Feb-2021 11:32 by rmk:")
62-
(* ; "Edited 25-Apr-2018 16:49 by rmk:")
63-
(CL:WITH-OPEN-STREAM (s (CLIPBOARD-COPY-STREAM))
64-
(IF PRINTFN
65-
THEN (APPLY* PRINTFN OBJECT s)
66-
ELSE (PRIN3 OBJECT s])
61+
[LAMBDA (OBJECT PRINTFN) (* ; "Edited 25-Sep-2025 14:59 by rmk")
62+
(* ; "Edited 23-Feb-2021 11:32 by rmk:")
63+
(* ; "Edited 25-Apr-2018 16:49 by rmk:")
64+
(if (STRPOS "darwin" (UNIX-GETENV "OSTYPE"))
65+
then
66+
(* ;; "pbpaste doesn't seem to take a file argument.")
67+
68+
(CL:WITH-OPEN-STREAM (S (CREATE-PROCESS-STREAM "pbcopy"))
69+
(CL:IF PRINTFN
70+
(APPLY* PRINTFN OBJECT S)
71+
(PRIN3 OBJECT S)))
72+
else
73+
(* ;; "Try to make xclip more reliable by passing a file that already contains the input.")
74+
75+
(LET ((TEMPFILE (OUTFILEP "{DSK}/tmp/xclip-copy.txt")))
76+
(CL:WITH-OPEN-FILE (S TEMPFILE :DIRECTION :OUTPUT :EXTERNAL-FORMAT (
77+
SYSTEM-EXTERNALFORMAT
78+
))
79+
(CL:IF PRINTFN
80+
(APPLY* PRINTFN OBJECT S)
81+
(PRIN3 OBJECT S)))
82+
(ShellCommand (CONCAT "xclip -i -selection clipboard " (UNIX-FILE-NAME TEMPFILE)))
83+
(DELFILE TEMPFILE])
6784

6885
(PASTEFROMCLIPBOARD
6986
[LAMBDA NIL (* ; "Edited 15-Feb-2021 23:43 by rmk:")
@@ -81,13 +98,12 @@
8198
ELSE (BIND C WHILE (SETQ C (GNCCODE STR)) DO (BKSYSCHARCODE C])
8299

83100
(CLIPBOARD-COPY-STREAM
84-
[LAMBDA NIL (* ; "Edited 7-Jul-2022 23:51 by rmk")
101+
[LAMBDA NIL (* ; "Edited 24-Sep-2025 14:27 by rmk")
102+
(* ; "Edited 7-Jul-2022 23:51 by rmk")
85103
(* ; "Edited 23-Feb-2021 22:11 by rmk:")
86-
(LET (STRM (OST (UNIX-GETENV "OSTYPE")))
87-
(SETQ STRM (CREATE-PROCESS-STREAM (CL:IF (STRPOS "darwin" OST)
88-
"pbcopy"
89-
"xclip -i -selection clipboard")))
90-
STRM])
104+
(CREATE-PROCESS-STREAM (CL:IF (STRPOS "darwin" (UNIX-GETENV "OSTYPE"))
105+
"pbcopy"
106+
"xclip -i -selection clipboard")])
91107

92108
(CLIPBOARD-PASTE-STREAM
93109
[LAMBDA NIL (* ; "Edited 7-Jul-2022 23:51 by rmk")
@@ -146,7 +162,7 @@
146162
(ADDTOVAR LAMA )
147163
)
148164
(DECLARE%: DONTCOPY
149-
(FILEMAP (NIL (1148 5429 (INSTALL-CLIPBOARD 1158 . 2485) (GETCLIPBOARD 2487 . 2861) (PUTCLIPBOARD 2863
150-
. 3268) (PASTEFROMCLIPBOARD 3270 . 4188) (CLIPBOARD-COPY-STREAM 4190 . 4705) (CLIPBOARD-PASTE-STREAM
151-
4707 . 5427)) (5430 6969 (SEDIT.COPYTOCLIPBOARD 5440 . 6967)))))
165+
(FILEMAP (NIL (1167 6486 (INSTALL-CLIPBOARD 1177 . 2504) (GETCLIPBOARD 2506 . 2880) (PUTCLIPBOARD 2882
166+
. 4306) (PASTEFROMCLIPBOARD 4308 . 5226) (CLIPBOARD-COPY-STREAM 5228 . 5762) (CLIPBOARD-PASTE-STREAM
167+
5764 . 6484)) (6487 8026 (SEDIT.COPYTOCLIPBOARD 6497 . 8024)))))
152168
STOP

library/CLIPBOARD.LCOM

838 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)