annotate lispref/streams.texi @ 36150:46e59561af4c

Display Vars node renamed Display Custom. Include info there about customizing cursor appearance. Clean up aggressive scrolling. Clarify horizontal scrolling discussion. Fix index entries for line number mode.
author Richard M. Stallman <rms@gnu.org>
date Sat, 17 Feb 2001 16:45:37 +0000
parents 540143cd8527
children 23a1cea22d13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
27189
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 27187
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999
d2e5f1b7d8e2 Update copyrights.
Gerd Moellmann <gerd@gnu.org>
parents: 27187
diff changeset
4 @c Free Software Foundation, Inc.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @c See the file elisp.texi for copying conditions.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 @setfilename ../info/streams
7115
9a9e88e65617 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6381
diff changeset
7 @node Read and Print, Minibuffers, Debugging, Top
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @comment node-name, next, previous, up
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @chapter Reading and Printing Lisp Objects
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 @dfn{Printing} and @dfn{reading} are the operations of converting Lisp
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 objects to textual form and vice versa. They use the printed
7115
9a9e88e65617 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6381
diff changeset
13 representations and read syntax described in @ref{Lisp Data Types}.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 This chapter describes the Lisp functions for reading and printing.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 It also describes @dfn{streams}, which specify where to get the text (if
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 reading) or where to put it (if printing).
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 @menu
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 * Streams Intro:: Overview of streams, reading and printing.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 * Input Streams:: Various data types that can be used as input streams.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 * Input Functions:: Functions to read Lisp objects from text.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 * Output Streams:: Various data types that can be used as output streams.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 * Output Functions:: Functions to print Lisp objects as text.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 * Output Variables:: Variables that control what the printing functions do.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 @end menu
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 @node Streams Intro
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 @section Introduction to Reading and Printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 @cindex Lisp reader
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 @cindex printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 @cindex reading
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 @dfn{Reading} a Lisp object means parsing a Lisp expression in textual
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 form and producing a corresponding Lisp object. This is how Lisp
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 programs get into Lisp from files of Lisp code. We call the text the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 @dfn{read syntax} of the object. For example, the text @samp{(a .@: 5)}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 is the read syntax for a cons cell whose @sc{car} is @code{a} and whose
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 @sc{cdr} is the number 5.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 @dfn{Printing} a Lisp object means producing text that represents that
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
42 object---converting the object to its @dfn{printed representation}
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
43 (@pxref{Printed Representation}). Printing the cons cell described
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
44 above produces the text @samp{(a .@: 5)}.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 Reading and printing are more or less inverse operations: printing the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 object that results from reading a given piece of text often produces
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 the same text, and reading the text that results from printing an object
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 usually produces a similar-looking object. For example, printing the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 symbol @code{foo} produces the text @samp{foo}, and reading that text
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 returns the symbol @code{foo}. Printing a list whose elements are
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 @code{a} and @code{b} produces the text @samp{(a b)}, and reading that
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
53 text produces a list (but not the same list) with elements @code{a}
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 and @code{b}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
56 However, these two operations are not precisely inverse to each other.
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
57 There are three kinds of exceptions:
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 @itemize @bullet
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 @item
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 Printing can produce text that cannot be read. For example, buffers,
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
62 windows, frames, subprocesses and markers print as text that starts
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 with @samp{#}; if you try to read this text, you get an error. There is
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 no way to read those data types.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 @item
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 One object can have multiple textual representations. For example,
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 @samp{1} and @samp{01} represent the same integer, and @samp{(a b)} and
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 @samp{(a .@: (b))} represent the same list. Reading will accept any of
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 the alternatives, but printing must choose one of them.
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7219
diff changeset
71
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7219
diff changeset
72 @item
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7219
diff changeset
73 Comments can appear at certain points in the middle of an object's
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7219
diff changeset
74 read sequence without affecting the result of reading it.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 @end itemize
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 @node Input Streams
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 @section Input Streams
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 @cindex stream (for reading)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 @cindex input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 Most of the Lisp functions for reading text take an @dfn{input stream}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 as an argument. The input stream specifies where or how to get the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 characters of the text to be read. Here are the possible types of input
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 stream:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 @table @asis
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 @item @var{buffer}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 @cindex buffer input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 The input characters are read from @var{buffer}, starting with the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 character directly after point. Point advances as characters are read.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 @item @var{marker}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 @cindex marker input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 The input characters are read from the buffer that @var{marker} is in,
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 starting with the character directly after the marker. The marker
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 position advances as characters are read. The value of point in the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 buffer has no effect when the stream is a marker.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 @item @var{string}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 @cindex string input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 The input characters are taken from @var{string}, starting at the first
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 character in the string and using as many characters as required.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 @item @var{function}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 @cindex function input stream
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
107 The input characters are generated by @var{function}, which must support
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
108 two kinds of calls:
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
109
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
110 @itemize @bullet
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
111 @item
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
112 When it is called with no arguments, it should return the next character.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
114 @item
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
115 When it is called with one argument (always a character), @var{function}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
116 should save the argument and arrange to return it on the next call.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
117 This is called @dfn{unreading} the character; it happens when the Lisp
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
118 reader reads one character too many and wants to ``put it back where it
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
119 came from''. In this case, it makes no difference what value
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
120 @var{function} returns.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
121 @end itemize
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 @item @code{t}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 @cindex @code{t} input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 @code{t} used as a stream means that the input is read from the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 minibuffer. In fact, the minibuffer is invoked once and the text
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 given by the user is made into a string that is then used as the
31078
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
128 input stream. If Emacs is running in batch mode, standard input is used
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
129 instead of the minibuffer. For example,
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
130 @example
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
131 (message "%s" (read t))
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
132 @end example
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
133 will read a Lisp expression from standard input and print the result
540143cd8527 read in batch
Dave Love <fx@gnu.org>
parents: 27189
diff changeset
134 to standard output.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 @item @code{nil}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 @cindex @code{nil} input stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 @code{nil} supplied as an input stream means to use the value of
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 @code{standard-input} instead; that value is the @dfn{default input
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 stream}, and must be a non-@code{nil} input stream.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 @item @var{symbol}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 A symbol as input stream is equivalent to the symbol's function
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 definition (if any).
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 @end table
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
147 Here is an example of reading from a stream that is a buffer, showing
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 where point is located before and after:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 This@point{} is the contents of foo.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 (read (get-buffer "foo"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 @result{} is
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 (read (get-buffer "foo"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 @result{} the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 This is the@point{} contents of foo.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 @noindent
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
174 Note that the first read skips a space. Reading skips any amount of
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
175 whitespace preceding the significant text.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 Here is an example of reading from a stream that is a marker,
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
178 initially positioned at the beginning of the buffer shown. The value
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 read is the symbol @code{This}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 This is the contents of foo.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (setq m (set-marker (make-marker) 1 (get-buffer "foo")))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 @result{} #<marker at 1 in foo>
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 (read m)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 @result{} This
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 m
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
199 @result{} #<marker at 5 in foo> ;; @r{Before the first space.}
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 Here we read from the contents of a string:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 (read "(When in) the course")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 @result{} (When in)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 The following example reads from the minibuffer. The
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 prompt is: @w{@samp{Lisp expression: }}. (That is always the prompt
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 used when you read from the stream @code{t}.) The user's input is shown
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 following the prompt.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (read t)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 @result{} 23
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 ---------- Buffer: Minibuffer ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 Lisp expression: @kbd{23 @key{RET}}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 ---------- Buffer: Minibuffer ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 Finally, here is an example of a stream that is a function, named
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 @code{useless-stream}. Before we use the stream, we initialize the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 variable @code{useless-list} to a list of characters. Then each call to
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
230 the function @code{useless-stream} obtains the next character in the list
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 or unreads a character by adding it to the front of the list.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (setq useless-list (append "XY()" nil))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 @result{} (88 89 40 41)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 (defun useless-stream (&optional unread)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (if unread
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (setq useless-list (cons unread useless-list))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (prog1 (car useless-list)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (setq useless-list (cdr useless-list)))))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 @result{} useless-stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 @noindent
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 Now we read using the stream thus constructed:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (read 'useless-stream)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 @result{} XY
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 useless-list
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
260 @result{} (40 41)
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 @noindent
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
265 Note that the open and close parentheses remain in the list. The Lisp
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
266 reader encountered the open parenthesis, decided that it ended the
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
267 input, and unread it. Another attempt to read from the stream at this
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
268 point would read @samp{()} and return @code{nil}.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 @defun get-file-char
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 This function is used internally as an input stream to read from the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 input file opened by the function @code{load}. Don't use this function
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 yourself.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 @node Input Functions
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 @section Input Functions
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 This section describes the Lisp functions and variables that pertain
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 to reading.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 In the functions below, @var{stream} stands for an input stream (see
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 the previous section). If @var{stream} is @code{nil} or omitted, it
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 defaults to the value of @code{standard-input}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 @kindex end-of-file
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 An @code{end-of-file} error is signaled if reading encounters an
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
288 unterminated list, vector, or string.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 @defun read &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 This function reads one textual Lisp expression from @var{stream},
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 returning it as a Lisp object. This is the basic Lisp input function.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 @defun read-from-string string &optional start end
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 @cindex string to object
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 This function reads the first textual Lisp expression from the text in
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 @var{string}. It returns a cons cell whose @sc{car} is that expression,
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 and whose @sc{cdr} is an integer giving the position of the next
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 remaining character in the string (i.e., the first one not read).
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
302 If @var{start} is supplied, then reading begins at index @var{start} in
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
303 the string (where the first character is at index 0). If you specify
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
304 @var{end}, then reading is forced to stop just before that index, as if
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
305 the rest of the string were not there.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 For example:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (read-from-string "(setq x 55) (setq y 5)")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 @result{} ((setq x 55) . 11)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (read-from-string "\"A short string\"")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 @result{} ("A short string" . 16)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 ;; @r{Read starting at the first character.}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (read-from-string "(list 112)" 0)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 @result{} ((list 112) . 10)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 ;; @r{Read starting at the second character.}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (read-from-string "(list 112)" 1)
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
327 @result{} (list . 5)
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 ;; @r{Read starting at the seventh character,}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 ;; @r{and stopping at the ninth.}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (read-from-string "(list 112)" 6 8)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 @result{} (11 . 8)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 @defvar standard-input
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 This variable holds the default input stream---the stream that
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 @code{read} uses when the @var{stream} argument is @code{nil}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 @end defvar
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 @node Output Streams
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 @section Output Streams
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 @cindex stream (for printing)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 @cindex output stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 An output stream specifies what to do with the characters produced
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 by printing. Most print functions accept an output stream as an
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 optional argument. Here are the possible types of output stream:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 @table @asis
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 @item @var{buffer}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 @cindex buffer output stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 The output characters are inserted into @var{buffer} at point.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 Point advances as characters are inserted.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 @item @var{marker}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 @cindex marker output stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 The output characters are inserted into the buffer that @var{marker}
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
361 points into, at the marker position. The marker position advances as
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 characters are inserted. The value of point in the buffer has no effect
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
363 on printing when the stream is a marker, and this kind of printing
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
364 does not move point.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 @item @var{function}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 @cindex function output stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 The output characters are passed to @var{function}, which is responsible
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 for storing them away. It is called with a single character as
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
370 argument, as many times as there are characters to be output, and
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
371 is responsible for storing the characters wherever you want to put them.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 @item @code{t}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 @cindex @code{t} output stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 The output characters are displayed in the echo area.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 @item @code{nil}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 @cindex @code{nil} output stream
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
379 @code{nil} specified as an output stream means to use the value of
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 @code{standard-output} instead; that value is the @dfn{default output
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
381 stream}, and must not be @code{nil}.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 @item @var{symbol}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 A symbol as output stream is equivalent to the symbol's function
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 definition (if any).
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 @end table
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
388 Many of the valid output streams are also valid as input streams. The
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
389 difference between input and output streams is therefore more a matter
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
390 of how you use a Lisp object, than of different types of object.
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
391
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 Here is an example of a buffer used as an output stream. Point is
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 initially located as shown immediately before the @samp{h} in
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 @samp{the}. At the end, point is located directly before that same
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 @samp{h}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 @cindex print example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 This is t@point{}he contents of foo.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (print "This is the output" (get-buffer "foo"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 @result{} "This is the output"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 This is t
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 "This is the output"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 @point{}he contents of foo.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 Now we show a use of a marker as an output stream. Initially, the
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
418 marker is in buffer @code{foo}, between the @samp{t} and the @samp{h} in
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
419 the word @samp{the}. At the end, the marker has advanced over the
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
420 inserted text so that it remains positioned before the same @samp{h}.
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
421 Note that the location of point, shown in the usual fashion, has no
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
422 effect.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 ---------- Buffer: foo ----------
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
427 This is the @point{}output
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 @group
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
432 (setq m (copy-marker 10))
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
433 @result{} #<marker at 10 in foo>
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (print "More output for foo." m)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 @result{} "More output for foo."
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 ---------- Buffer: foo ----------
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
443 This is t
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 "More output for foo."
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
445 he @point{}output
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 ---------- Buffer: foo ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 m
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
451 @result{} #<marker at 34 in foo>
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 The following example shows output to the echo area:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 (print "Echo Area output" t)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 @result{} "Echo Area output"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 ---------- Echo Area ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 "Echo Area output"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 ---------- Echo Area ----------
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 Finally, we show the use of a function as an output stream. The
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 function @code{eat-output} takes each character that it is given and
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 conses it onto the front of the list @code{last-output} (@pxref{Building
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 Lists}). At the end, the list contains all the characters output, but
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 in reverse order.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 (setq last-output nil)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 @result{} nil
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (defun eat-output (c)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (setq last-output (cons c last-output)))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 @result{} eat-output
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (print "This is the output" 'eat-output)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 @result{} "This is the output"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 last-output
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 @result{} (10 34 116 117 112 116 117 111 32 101 104
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 116 32 115 105 32 115 105 104 84 34 10)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 @noindent
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 Now we can put the output in the proper order by reversing the list:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (concat (nreverse last-output))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 @result{} "
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 \"This is the output\"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 "
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
509 @noindent
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
510 Calling @code{concat} converts the list to a string so you can see its
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
511 contents more clearly.
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
512
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 @node Output Functions
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 @section Output Functions
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
516 This section describes the Lisp functions for printing Lisp
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
517 objects---converting objects into their printed representation.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 @cindex @samp{"} in printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 @cindex @samp{\} in printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 @cindex quoting characters in printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 @cindex escape characters in printing
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 Some of the Emacs printing functions add quoting characters to the
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 output when necessary so that it can be read properly. The quoting
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 characters used are @samp{"} and @samp{\}; they distinguish strings from
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 symbols, and prevent punctuation characters in strings and symbols from
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
527 being taken as delimiters when reading. @xref{Printed Representation},
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
528 for full details. You specify quoting or no quoting by the choice of
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
529 printing function.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
531 If the text is to be read back into Lisp, then you should print with
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
532 quoting characters to avoid ambiguity. Likewise, if the purpose is to
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
533 describe a Lisp object clearly for a Lisp programmer. However, if the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
534 purpose of the output is to look nice for humans, then it is usually
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
535 better to print without quoting.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
537 Lisp objects can refer to themselves. Printing a self-referential
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
538 object in the normal way would require an infinite amount of text, and
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
539 the attempt could cause infinite recursion. Emacs detects such
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
540 recursion and prints @samp{#@var{level}} instead of recursively printing
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
541 an object already being printed. For example, here @samp{#0} indicates
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
542 a recursive reference to the object at level 0 of the current print
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
543 operation:
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (setq foo (list nil))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 @result{} (nil)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 (setcar foo foo)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 @result{} (#0)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 In the functions below, @var{stream} stands for an output stream.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 (See the previous section for a description of output streams.) If
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 @var{stream} is @code{nil} or omitted, it defaults to the value of
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 @code{standard-output}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 @defun print object &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 @cindex Lisp printer
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 The @code{print} function is a convenient way of printing. It outputs
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 the printed representation of @var{object} to @var{stream}, printing in
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 addition one newline before @var{object} and another after it. Quoting
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 characters are used. @code{print} returns @var{object}. For example:
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (progn (print 'The\ cat\ in)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (print "the hat")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 (print " came back"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 @print{}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 @print{} The\ cat\ in
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 @print{}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 @print{} "the hat"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 @print{}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 @print{} " came back"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 @print{}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 @result{} " came back"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 @defun prin1 object &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 This function outputs the printed representation of @var{object} to
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
583 @var{stream}. It does not print newlines to separate output as
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
584 @code{print} does, but it does use quoting characters just like
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
585 @code{print}. It returns @var{object}.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (progn (prin1 'The\ cat\ in)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 (prin1 "the hat")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (prin1 " came back"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @print{} The\ cat\ in"the hat"" came back"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 @result{} " came back"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 @defun princ object &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 This function outputs the printed representation of @var{object} to
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 @var{stream}. It returns @var{object}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 This function is intended to produce output that is readable by people,
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 not by @code{read}, so it doesn't insert quoting characters and doesn't
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 put double-quotes around the contents of strings. It does not add any
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 spacing between calls.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (progn
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (princ 'The\ cat)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (princ " in the \"hat\""))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 @print{} The cat in the "hat"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 @result{} " in the \"hat\""
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 @defun terpri &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 @cindex newline in print
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 This function outputs a newline to @var{stream}. The name stands
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 for ``terminate print''.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 @defun write-char character &optional stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 This function outputs @var{character} to @var{stream}. It returns
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 @var{character}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 @defun prin1-to-string object &optional noescape
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 @cindex object to string
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 This function returns a string containing the text that @code{prin1}
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 would have printed for the same argument.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (prin1-to-string 'foo)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 @result{} "foo"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (prin1-to-string (mark-marker))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 @result{} "#<marker at 2773 in strings.texi>"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 If @var{noescape} is non-@code{nil}, that inhibits use of quoting
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 characters in the output. (This argument is supported in Emacs versions
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 19 and later.)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (prin1-to-string "foo")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 @result{} "\"foo\""
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (prin1-to-string "foo" t)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 @result{} "foo"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 See @code{format}, in @ref{String Conversion}, for other ways to obtain
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 the printed representation of a Lisp object as a string.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 @end defun
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
664 @defmac with-output-to-string body...
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
665 This macro executes the @var{body} forms with @code{standard-output} set
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
666 up to feed output into a string. Then it returns that string.
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
667
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
668 For example, if the current buffer name is @samp{foo},
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
669
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
670 @example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
671 (with-output-to-string
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
672 (princ "The buffer is ")
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
673 (princ (buffer-name)))
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
674 @end example
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
675
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
676 @noindent
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
677 returns @code{"The buffer is foo"}.
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
678 @end defmac
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
679
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 @node Output Variables
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 @section Variables Affecting Output
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 @defvar standard-output
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 The value of this variable is the default output stream---the stream
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 that print functions use when the @var{stream} argument is @code{nil}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 @end defvar
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 @defvar print-escape-newlines
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 @cindex @samp{\n} in print
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 @cindex escape characters
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 If this variable is non-@code{nil}, then newline characters in strings
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 are printed as @samp{\n} and formfeeds are printed as @samp{\f}.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 Normally these characters are printed as actual newlines and formfeeds.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
695 This variable affects the print functions @code{prin1} and @code{print}
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
696 that print with quoting. It does not affect @code{princ}. Here is an
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
697 example using @code{prin1}:
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 (prin1 "a\nb")
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 @print{} "a
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 @print{} b"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 @result{} "a
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 b"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 (let ((print-escape-newlines t))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (prin1 "a\nb"))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 @print{} "a\nb"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 @result{} "a
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 b"
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 @noindent
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 In the second expression, the local binding of
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 @code{print-escape-newlines} is in effect during the call to
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 @code{prin1}, but not during the printing of the result.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 @end defvar
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
723 @defvar print-escape-nonascii
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
724 If this variable is non-@code{nil}, then unibyte non-@sc{ascii}
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
725 characters in strings are unconditionally printed as backslash sequences
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
726 by the print functions @code{prin1} and @code{print} that print with
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
727 quoting.
22829
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
728
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
729 Those functions also use backslash sequences for unibyte non-@sc{ascii}
22829
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
730 characters, regardless of the value of this variable, when the output
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
731 stream is a multibyte buffer or a marker pointing into one.
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
732 @end defvar
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
733
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
734 @defvar print-escape-multibyte
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
735 If this variable is non-@code{nil}, then multibyte non-@sc{ascii}
22829
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
736 characters in strings are unconditionally printed as backslash sequences
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
737 by the print functions @code{prin1} and @code{print} that print with
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
738 quoting.
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
739
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
740 Those functions also use backslash sequences for multibyte
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
741 non-@sc{ascii} characters, regardless of the value of this variable,
22829
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
742 when the output stream is a unibyte buffer or a marker pointing into
6323b7754a76 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
743 one.
22252
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
744 @end defvar
40089afa2b1d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22138
diff changeset
745
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 @defvar print-length
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 @cindex printing limits
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
748 The value of this variable is the maximum number of elements to print in
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
749 any list, vector or bool-vector. If an object being printed has more
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 15800
diff changeset
750 than this many elements, it is abbreviated with an ellipsis.
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 If the value is @code{nil} (the default), then there is no limit.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 @example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (setq print-length 2)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 @result{} 2
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 @group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (print '(1 2 3 4 5))
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 @print{} (1 2 ...)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 @result{} (1 2 ...)
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 @end group
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 @end example
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 @end defvar
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 @defvar print-level
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 The value of this variable is the maximum depth of nesting of
7219
61202823bbb9 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 7115
diff changeset
769 parentheses and brackets when printed. Any list or vector at a depth
6381
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 exceeding this limit is abbreviated with an ellipsis. A value of
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 @code{nil} (which is the default) means no limit.
52f4a94c8c3d Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 @end defvar
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
773
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
774 These variables are used for detecting and reporting circular
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
775 and shared structure---but they are only defined in Emacs 21.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
776
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
777 @tindex print-circle
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
778 @defvar print-circle
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
779 If non-@code{nil}, this variable enables detection of circular
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
780 and shared structure in printing.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
781 @end defvar
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
782
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
783 @tindex print-gensym
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
784 @defvar print-gensym
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
785 If non-@code{nil}, this variable enables detection of uninterned symbols
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
786 (@pxref{Creating Symbols}) in printing. When this is enabled,
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
787 uninterned symbols print with the prefix @samp{#:}, which tells the Lisp
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
788 reader to produce an uninterned symbol.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22829
diff changeset
789 @end defvar