This is mainly a shared config for Lisp REPLs.
Installation
Clone this repo as ~/.config/common-lisp. This way the ASDF registry
conf ends up in the proper place too.
git clone --recursive https://github.com/aartaka/lisp-config ~/.config/common-lisp
In case you did a non-recursive clone or need to get dependencies’ code, do
git submodule update --init -- deps/
To propagate the config to all the installed implementation, use make
make install
Note that this overwrites implementation-specific init files, so make sure you back them up!
Highlights
lisp.sh for better REPL experience
This script, when called with implementation name, starts it with sane rlwrap settings.
Like completion and meaningful break/quote chars.
When you do make install, it’s installed under then name lisp, so call it with
lisp ecl
Dependency resolution script
/aartaka/lisp-config/src/branch/main/deps.lisp is a script to process any .asd file and spit out all of its dependencies.
As Git submodule commands.
So that you can bundle all of your project dependencies with it.
You can build this script into an executable with
make deps
./deps
# Use this script as
# sbcl --load path/to/this/deps.lisp system.asd [system]
# in the project directory. Notice the --load, not --script, because
# SBCL --load allows using Quicklisp and ASDF (as loaded in
# initialization file,) while --script has limitations in that.
Or run it (uncommenting the entry point invocation first) with
sbcl --load path/to/deps.lisp system.asd system/tests
(I mostly use the compiled version, so –load way can fall behind in maintenance.)
Readline customizations
Some readline completions appended from *-completions.txt, so that
rlwrap --remember -c -b "(){}[],^%$#@\"\";''|\\" ecl
Ends up with nice list of completions.
Graven Image Customizations
Also has lots of :around methods for my Graven Image
standard-enhancing library. Mainly making printouts less overwhelming.
Experimental "Talkative Lisp" Code
This feeds REPL output and input to EspeakNG to speak the text. The plan is to turn it into a proper screenreader-ish setup. See /aartaka/lisp-config/src/branch/main/talkative.lisp.
Nicer prompt (CL-USER/D1?)
This one is made for Talkative mode convenience, because this format is most discernible when read with eSpeak. See /aartaka/lisp-config/src/branch/main/prompt.lisp.
Documentation extensions
See /aartaka/lisp-config/src/branch/main/documentation.lisp for my custom methods on documentation, including
- Method with
packagedoctype. - Intuitive T doctype method on symbols.
:doccommand printing docs for arbitrary symbol.
Useful yet highly opinionated reader macros
See /aartaka/lisp-config/src/branch/main/reader.lisp:
-
#?to print meta information about the symbol after it:- documentation (
#?(symbol type)), - apropos (
#?:nameor#?(:name :package)), - arglist (
#?fname).
- documentation (
#!for shell. Harder to type than:shcommand, but why not have it anyway?#{}for Clojure-inspired hash tables- Also includes (
#^and#/) reader macros from lin-edi-table.