of high-quality configuration runes curated centrally, so I'm happy to
accept submissions in support of any free[fn:free] Lisp implementations.
-[fn:free] Here I mean free as in freedom.
+[fn:free] Here I mean `free' as in freedom: see
+https://www.fsf.org/about/what-is-free-software.
* Writing scripts in Common Lisp
: #-(or sbcl ccl) "an unexpected"
: " Common Lisp!~%"))
+It is not an error to include the name of an unrecognized Lisp system in
+the ~-L~ option: such names are simply ignored. This allows a script to
+declare support for unusual or locally installed Lisp systems without
+compromising its portability to sites where such systems are unknown, or
+which are still running older versions of ~runlisp~ which haven't been
+updated with the necessary configuration for those systems.
+
** Embedded options
If your script requires features of particular Lisp implementations
+ The prevailing Unix standard input, output, and error files are
available through the Lisp ~*standard-input*~, ~*standard-output*~,
- and ~*error-ouptut*~ streams, respectively. (This is, alas, not a
+ and ~*error-output*~ streams, respectively. (This is, alas, not a
foregone conclusion.)
+ The keyword ~:runlisp-script~ is added to the ~*features*~ list.
: $ runlisp -p '"Hello, world!"'
: Hello, world!
-: runlisp -d '"Hello, world!"'
+: $ runlisp -d '"Hello, world!"'
: "Hello, world!"
In addition to evaluating forms with ~-e~, and printing their values
All of the files in this directory named ~SOMETHING.conf~ are read,
in increasing lexicographical order by name. The package comes with
a file ~0base.conf~ intended to be read first, so that it can be
- overridden if necessar. This sets up basic definitions, and defines
+ overridden if necessary. This sets up basic definitions, and defines
the necessary runes for those Lisp implementations which are
supported `out of the box'. New Lisp packages might come with
additional files to drop into this directory.
directories to add support for privately installed Lisp systems, or
to override settings made by earlier configuration files.
-But configuration files generally look like =.ini=-style files. A line
+Configuration files generally look like =.ini=-style files. A line
beginning with a semicolon ~;~ is a comment and is ignored. Most lines
are assignments, which look like
#+BEGIN_QUOTE
effects are subtly different. Again, see the manual pages for details.
[fn:xdg-config] More properly, in ~$XDG_CONFIG_HOME/runlisp.conf~, if
-you set that.
+you set that variable.
** Deciding which Lisp implementation to use
ideal opportunity to explain how ~runlisp~ configuration works, without
getting bogged down in the details of fighting less amenable Lisps.)
-The provided ~0base.conf~ file defines SBCL as follows.
+The provided ~0base.conf~ file used to define SBCL as follows. (The
+real version now contains a kludge for old versions, which needn't
+concern us here.)
: [sbcl]
:
: NIL
As another example, Armed Bear Common Lisp doesn't seem to believe in
-the stderr stream: when it starts up, ~*error-ouptut*~ is bound to the
+the stderr stream: when it starts up, ~*error-output*~ is bound to the
standard output, just like ~*standard-output*~. Also, ~cl-launch~
loading ASDF causes a huge number of ~style-warning~ messages to be
written to stdout, making ABCL pretty much useless for writing filter
then ~cl-launch~ is the way to do that. Of course, I welcome patches to
help ~runlisp~ support other free Lisp implementations. ~cl-launch~
also supports proprietary Lisps: I have very little interest in these,
-so if you want to run scripts using Allegro or LispWorks then
-~cl-launch~ is your only choice.
+so if you want to run scripts using Allegro or LispWorks then your only
+options are to maintain your own ~runlisp~ configuration for these
+systems or to use ~cl-launch~.
+
+* COMMENT Emacs cruft
+
+# LocalWords: abcl Almquist argv ATTR Attr BST clisp CLisp's Clozure CMU ecl
+# LocalWords: env fn ini interp launchrc lua nbsp noinform precompiled prin
+# LocalWords: princ sb SBCL's sed SYSCONFDIR sysinit TBLFM tbp tikz xdg XPS