Linedit is a readline-style library written in Common Lisp that provides customizable line-editing features, licensed under a MIT-style license.
Linedit uses UFFI for foreign bindings, so it is a least theoretically portable, though REPL-wrapping is currently SBCL specific.
Linedit version 0.15.12 and later require Osicat 0.4.0 or later.
If you have asdf-install, just:
CL-USER(1): (require :asdf-install) ... CL-USER(2): (asdf-install:install :linedit) ...select restarts as approriate...
Linedit can manually be downloaded from here: linedit_latest.tar.gz .
There is also anonymous CVS and ViewCVS .
;;; Check for --no-linedit command-line option.
(if (member "--no-linedit" sb-ext:*posix-argv* :test 'equal)
(setf sb-ext:*posix-argv*
(remove "--no-linedit" sb-ext:*posix-argv* :test 'equal))
(when (interactive-stream-p *terminal-io*)
(require :sb-aclrepl)
(require :linedit)
(funcall (intern "INSTALL-REPL" :linedit) :wrap-current t)))
Additionally, to prevent Linedit from causing trouble with Slime, in your .emacs:
(setq inferior-lisp-program "sbcl --noinform --no-linedit")
Linedit uses terminfo.lisp by Paul Foley, which is currently kept mirrored in the Linedit CVS.
The terminfo interface is distributed available as a separate asdf-installable bundle: Terminfo.
Questions, feature requests, and bug-reports are welcome on linedit-devel.