.IP
\h'-\w'\fB\\$1\ \fP'u'\fB\\$1\ \fP\c
..
+.ds .. \&.\|.\|.
.
.\"--------------------------------------------------------------------------
.TH runlisp 1 "2 August 2020" "Mark Wooding"
.RB [ \-\- ]
.I script
.RI [ arguments
-\&...]
+\*(..]
.br
.B runlisp
.RI [ options ]
+.RB [ \-d
+.IR form ]
.RB [ \-e
-.IR form ]
+.IR form ]
.RB [ \-l
.IR file ]
.RB [ \-p
-.IR form ]
+.IR form ]
+.if !t \{\
+.br
+ \c
+.\}
.RB [ \-\- ]
.RI [ arguments
-\&...]
+\*(..]
.PP
where
.I options
is
.br
- \&
+ \c
.RB [ \-CDEnqv ]
.RB [ +DEn ]
.RB [ \-L
-.IB sys , sys , \fR...]
+.IB sys , sys , \fR\*(..]
+.if !t \{\
+.br
+ \c
+.\}
.RB [ \-c
.IR conf ]
.RB [ \-o
or
.BR \-\-no-command-line-only .
This has no effect in eval mode.
-which is set at compile time.
.
.TP
-.BI "\-L" "\fR, " "\-\-accept-lisp=" sys , sys ,\fR...
+.BI "\-L" "\fR, " "\-\-accept-lisp=" sys , sys ,\fR\*(..
Use one of the named Lisp systems.
-Each
+The
.I sys
-must name a supported Lisp system;
-the names are separated by a comma
+names are separated by a comma
.RB ` , '
and/or one or more whitespace characters.
This option may be given more than once:
If a system is named more than once,
a warning is issued (at verbosity level 1 or higher),
and all but the first occurrence is ignored.
+System names which do not refer to known Lisp systems
+are silently ignored:
+otherwise, a script which supports an unusual Lisp system
+could never run at a site which doesn't have
+configuration runes for that Lisp system,
+even though they're useless
+if the system isn't actually installed.
.
.TP
.BI "\-c" "\fR, " "\-\-config-file=" conf
.BR runlisp.conf (5).
.
.TP
+.BI "\-d" "\fR, " "\-\-dump-expression=" expr
+Evaluate the expression(s)
+.I expr
+and print the resulting value(s)
+to standard output
+(with
+.B *print-escape*
+true, as if by
+.BR prin1 ).
+If a form produces multiple values,
+they are printed on a single line,
+separated by a single space character;
+if a form produces no values at all,
+then nothing is printed \(en not even a newline character.
+This option causes
+.B runlisp
+to execute in
+.I eval
+mode.
+See also
+.RB ` \-p ',
+which prints with
+.B *print-escape*
+false.
+.
+.TP
.BI "\-e" "\fR, " "\-\-evaluate-expression=" expr
Evaluate the expression(s)
.I expr
.BR "\-\-no-dry-run" .
.
.TP
-.BI "\-p" "\fR, " "\-\-print-expressin=" expr
+.BI "\-o" "\fR, " "\-\-set-option=\fR[" sect :\fR] var = value
+Assign
+.I value
+to the variable
+.I var
+in configuration section
+.IR sect ,
+or
+.B @CONFIG
+if no section is specified.
+The value is unexpandable,
+and overrides any similarly named setting
+from the configuration file(s).
+.
+.TP
+.BI "\-p" "\fR, " "\-\-print-expression=" expr
Evaluate the expression(s)
.I expr
and print the resulting value(s)
to standard output
-(as if by
-.BR prin1 ).
+(with
+.B *print-escape*
+false, as if by
+.BR princ ).
If a form produces multiple values,
they are printed on a single line,
separated by a single space character;
to execute in
.I eval
mode.
+See also
+.RB ` \-d ',
+which prints with
+.B *print-escape*
+true.
.
.TP
.BR "\-q" ", " "\-\-quiet"
.
.PP
The
+.RB ` \-d ',
.RB ` \-e ',
.RB ` \-l ',
and
.RB ` \-p '
options may only be given on the command-line itself,
not following a
-.RB `@ RUNLISP: '
+.RB ` @RUNLISP: '
marker in a script.
These options may be given multiple times:
they will be processed in the order given.
to load code from files.
The
.IR arguments ,
-ppif any,
+if any,
are still made available to the evaluated forms and loaded files.
.
.SS "Operation"
.RB ` \-\- '
if desired.
If the command line contains any of
+.RB ` \-d ',
.RB ` \-e ',
.RB ` \-l ',
or
In
.I script
mode,
+and if the
+.RB ` \-E '
+option was not given,
.B runlisp
reads the second line of the script file,
and checks to see if it contains the string
or
.IR escaping .
Text between single quotes
-.BR ' ... '
+.BR ' \*(.. '
is included literally, without any further interpretation;
text between double quotes
-.BR """" ... """"
+.BR """" \*(.. """"
is treated literally,
except that escaping can still be used
to escape (e.g.) double quotes and the escape character itself.
is now committed to
.I script
mode, so it's too late for
+.RB ` \-d ',
.RB ` \-e ',
.RB ` \-l ',
and