Show HN: Interactive Common Lisp: An Enhanced REPL

Posted by atgreen 2 days ago

Counter70Comment2OpenOriginal

I created this because sometimes I want more than rlwrap but less than emacs. icl aims to hit that middle sweet spot.

It's a terminal application with context-aware auto-complete, an interactive object inspector, auto-indentation, syntax colouring, persistent history, and much more. It uses sly to communicate with the child lisp process and aims to be compatible with any sly-supporting implementation. I hope others find it useful!

Comments

Comment by dcassett 2 hours ago

Perhaps because I'm still on Debian 12 (or more likely I did something wrong), I had trouble getting it working by compiling the icl/ocicl sources with sbcl. It complained "Failed to connect to Slynk after 10 seconds". I tried running a Slynk server in sbcl, but icl froze up, and the server said "slynk:close-connection: end of file on #<dynamic-extent STRING-INPUT-STREAM (unavailable) from "#A">. Then I tried running a swank server, and got the icl prompt (good), but then tab completion invoked the debugger: "Package SLYNK does not exist". Finally, I ran the swank server after first running "(asdf:load-system :slynk)" and everything seems to work.

One thing I immediately miss (that rlwrap provides) are the keyboard functions such as reverse-search-history (usually mapped to C-r) and history-search-backward (have this mapped to M-p). History recall only seems possible with the up arrow.

Also, be in for some surprises if you try to paste some lisp code into the REPL, especially if there are long lines. The interaction is apparently meant for a human typing, not pasting.

Comment by atgreen 1 hour ago

I fixed the paste issue. Thanks! (edit: And Ctrl-R)

Comment by 1 hour ago

Comment by 18 hours ago