cmd icon indicating copy to clipboard operation
cmd copied to clipboard

Support $cmd on Lispworks

Open tdrhq opened this issue 4 years ago • 5 comments

Or in particular, according to ASDF's source code, this should make it work on abcl, clisp, lispworks and allegro. Though I haven't tested on the others except Lispworks 7.1.2

tdrhq avatar Jan 26 '21 22:01 tdrhq

(cmd:cmd "echo hello") still fails for me unless I put :output nil and :error-output nil, let me see if I can fix those too

tdrhq avatar Jan 26 '21 22:01 tdrhq

Hmm, uiop:run-program seems to do a lot of work to make sure that output to interactive streams work. In particular it seems to write to a temporary file and then re-write it the interactive stream. So solution 1, would be to make cmd use run-program for the synchronous case. I'm going to skip for now and in the next few days try to see if I can build a multi-threaded version which streams the result from the stream returned by launch-program into the interactive stream

tdrhq avatar Jan 26 '21 23:01 tdrhq

With a fresh QuickLisp install (2021-01-24), while loading your fork with latest patch, I have a compilation error due to shlex.

Related part of link above:

[package shlex].
...
Error: +STORAGE-FOR-DEFLEX-VAR-SAFE-CHAR-MAP+ is an already defined constant whose value
       #*10100010110011101100011010000110000011101011111111111111111001001111111111111111111111111110111111111111111111111111111111110110
       is not equal to the provided initial value
       #*00000000000000000000000000000000000001000001111111111111111001001111111111111111111111111110000101111111111111111111111111100000
       under SERAPEUM::SAME-LITERAL-P.

lispstudent avatar Jan 27 '21 11:01 lispstudent

That shlex error is strange. The constant is supposed to hold a bitmap of alphanumeric ASCII characters (plus "_@%+=:,./-"), so the second value is the correct one. Maybe the file was previously compiled in a different locale?

ruricolist avatar Jan 30 '21 00:01 ruricolist

Seeing the same problem on ECL:

;;; +STORAGE-FOR-DEFLEX-VAR-SAFE-CHAR-MAP+ is an already defined constant whose value #*00000000000000000000000000000000000001000001111111111111111001001111111111111111111111111110000101111111111111111111111111100000 is not equal to the provided initial value #*00000000000000000000000000000000000001000001111111111111111001001111111111111111111111111110110101111111111111111111111111111111 under SERAPEUM::SAME-LITERAL-P.

So it's not just LispWorks.

ruricolist avatar Feb 11 '21 16:02 ruricolist