BSD 4_2 development
[unix-history] / usr / lisp / chb.n
CommitLineData
977235e0
C
1." $Header: /na/franz/doc/RCS/chb.n,v 1.1 83/01/31 07:11:40 jkf Exp $
2.Ap 2 Special\ Symbols
3.pp
4The values of these symbols have a predefined meaning.
5Some values are counters
6while others are simply flags whose value the user can change to affect
7the operation of lisp system.
8In all cases, only the value cell of the symbol is important, the function
9cell is not.
10The value of some of the symbols (like \fBER%misc\fP)
11are functions - what this means is that the value cell of those symbols
12either contains a lambda expression,
13a binary object,
14or symbol with a function binding.
15.pp
16The values of the special symbols are:
17.in .5i
18.de Sa
19.sp 1v
20.ti -.5i
21\fB\\$1\fP\ \-\ \\
22..
23.Sa $gccount$
24The number of garbage collections which have occurred.
25.Sa $gcprint
26If bound to a non nil value, then after each garbage collection and
27subsequent storage allocation a summary of storage allocation will
28be printed.
29.Sa $ldprint
30If bound to a non nil value, then during each
31.i fasl
32or
33.i cfasl
34a diagnostic message will be printed.
35.Sa ER%all
36The function which is the error handler for all errors (see \(sc10)
37.Sa ER%brk
38The function which is the handler for the
39error signal generated by the evaluation of the
40.i break
41function (see \(sc10).
42.Sa ER%err
43The function which is the handler for the error
44signal generated by the evaluation of the
45.i err
46function (see \(sc10).
47.Sa ER%misc
48The function which is the handler of the error
49signal generated by one of the unclassified errors (see \(sc10).
50Most errors are unclassified at this point.
51.Sa ER%tpl
52The function which is the handler to be called
53when an error has occurred which
54has not been handled (see \(sc10).
55.Sa ER%undef
56The function which is the handler for the
57error signal generated when a call to an undefined function
58is made.
59.Sa ^w
60When bound to a non nil value this will prevent output to the standard
61output port (poport) from reaching the standard output (usually a terminal).
62Note that ^w is a two character symbol and should not be confused
63with ^W which is how we would denote control-w.
64The value of ^w is checked when the standard output buffer is flushed
65which occurs after a
66.i terpr ,
67.i drain
68or when the buffer overflows.
69This is most useful in conjunction with ptport described below.
70System error handlers rebind ^w to nil when they are invoked to assure
71that error messages are not lost.
72(This was introduced for Maclisp compatibility).
73.Sa defmacro-for-compiling
74The has an effect during compilation.
75If non-nil it causes macros defined by defmacro to be
76compiled and included in the
77object file.
78.Sa environment
79The UNIX environment in assoc list form.
80.Sa errlist
81When a
82.i reset
83is done, the value of errlist is saved away and control is thrown to
84the top level.
85\fIEval\fP
86is then mapped over the saved away
87value of this list.
88.Sa errport
89This port is initially bound to the standard error file.
90.Sa evalhook
91The value of this symbol, if bound, is the name of a function to handle
92evalhook traps (see \(sc14.4)
93.Sa float-format
94The value of this symbol is a string which is the format to be used
95by print to print flonums.
96See the documentation on the UNIX function printf for a list
97of allowable formats.
98.Sa funcallhook
99The value of this symbol, if bound, is the name of a function to handle
100funcallhook traps (see \(sc14.4).
101.Sa gcdisable
102If non nil, then garbage collections will not be done automatically when
103a collectable data type runs out.
104.Sa ibase
105This is the input radix used by the lisp reader.
106It may be either eight or ten.
107Numbers followed by a decimal point are assumed to be decimal regardless
108of what ibase is.
109.Sa linel
110The line length used by the pretty printer, pp.
111This should be used by
112.i print
113but it is not at this time.
114.Sa nil
115This symbol represents the null list and thus can be written ().
116Its value is always nil.
117Any attempt to change the value will result in an error.
118.Sa piport
119Initially bound to the standard input (usually the keyboard).
120A read with no arguments reads from piport.
121.Sa poport
122Initially bound to the standard output (usually the terminal console).
123A print with no second argument writes to poport.
124See also: ^w and ptport.
125.Sa prinlength
126If this is a positive fixnum, then the \fIprint\fP function will print
127no more than prinlength elements of a list or hunk and further elements
128abbreviated as `...'.
129The initial value of prinlength is nil.
130.Sa prinlevel
131If this is a positive fixnum, then the \fIprint\fP function will print
132only prinlevel levels of nested lists or hunks.
133Lists below this level will be abbreviated by `&' and hunks below this
134level will be abbreviated by a `%'.
135The initial value of prinlevel is nil.
136.Sa ptport
137Initially bound to nil.
138If bound to a port, then all output sent to the standard output will
139also be sent to this port as long as this port is not also
140the standard output (as this would cause a loop).
141Note that ptport will not get a copy of whatever is sent to poport
142if poport is not bound to the standard output.
143.Sa readtable
144The value of this is the current readtable.
145It is an array but you should NOT try to change the value of the elements
146of the array using the array functions.
147This is because the readtable is an array of bytes and the smallest
148unit the array functions work with is a full word (4 bytes).
149You can use
150.i setsyntax
151to change the values and
152.i "(status syntax ...)"
153to read the values.
154.Sa t
155This symbol always has the value t.
156It is possible to change the value of this symbol for short
157periods of time but you are strongly advised against it.
158.Sa top-level
159In a lisp system without /usr/lib/lisp/toplevel.l loaded, after a
160.i reset
161is done, the lisp system will
162.i funcall
163the value of top-level if it is
164non nil.
165This provides a way for the user to introduce his own top level interpreter.
166When /usr/lib/lisp/toplevel.l is loaded, it sets top-level to franz-top-level
167and changes the
168.i reset
169function so that once franz-top-level starts, it cannot
170be replaced by changing top-level.
171Franz-top-level does provide a way of changing
172the top level however, and that is
173through user-top-level.
174.Sa user-top-level
175If this is bound then after a
176.i reset ,
177the top level function will
178.i funcall
179the value of this symbol rather than go through a read eval print
180loop.