sb-readline implements GNU readline support (including command line editing, history, and so forth) for SBCL. This can be useful during Lisp development, as it allows Lisp users to have editing and history at the SBCL command prompt.
The SBCL train has moved on...
; compiling (IN-PACKAGE :READLINE) ; compiling (LOAD-1-FOREIGN "/lib/libncurses.so") debugger invoked on a SB-INT:UNSUPPORTED-OPERATOR: LOAD-1-FOREIGN is unsupported as of SBCL 0.8.13. Please use LOAD-SHARED-OBJECT.So make a change in
(eval-when (:compile-toplevel :load-toplevel :execute) (load-1-foreign "/lib/libncurses.so") (load-1-foreign "/lib/libreadline.so"))Into
(eval-when (:compile-toplevel :load-toplevel :execute) (load-shared-object "/usr/lib/libncurses.so") (load-shared-object "/usr/lib/libreadline.so"))
If you are using SBCL on Mac OS X, be sure to change this to:
(eval-when (:compile-toplevel :load-toplevel :execute) (load-shared-object "/usr/lib/libncurses.dylib") (load-shared-object "/usr/lib/libreadline.dylib"))
Some differences between linedit and rlwrap: (Tim)
- rlwrap will store history across multiple runs and allow Ctrl-R to search through it
- rlwrap will not dynamically create completions for packages loaded during the environment. So, if you load my-game.lisp, you won't be able to tab-complete any functions or vars within it. linedit will allow you to do this.
- linedit is slow to load (~10 seconds for me), rlwrap loads nearly instantly