X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a9f0a989a17f47f9d25b7a426b4e82a8ff684ee4..b3ab615bc11f85df1a242dbdebd713a3ac5534e9:/lispref/streams.texi diff --git a/lispref/streams.texi b/lispref/streams.texi index cf3f14a095..09f8695cd2 100644 --- a/lispref/streams.texi +++ b/lispref/streams.texi @@ -1,6 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998 Free Software Foundation, Inc. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1998, 1999 +@c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/streams @node Read and Print, Minibuffers, Debugging, Top @@ -52,8 +53,8 @@ returns the symbol @code{foo}. Printing a list whose elements are text produces a list (but not the same list) with elements @code{a} and @code{b}. - However, these two operations are not precisely inverses. There are -three kinds of exceptions: + However, these two operations are not precisely inverse to each other. +There are three kinds of exceptions: @itemize @bullet @item @@ -124,7 +125,13 @@ came from''. In this case, it makes no difference what value @code{t} used as a stream means that the input is read from the minibuffer. In fact, the minibuffer is invoked once and the text given by the user is made into a string that is then used as the -input stream. +input stream. If Emacs is running in batch mode, standard input is used +instead of the minibuffer. For example, +@example +(message "%s" (read t)) +@end example +will read a Lisp expression from standard input and print the result +to standard output. @item @code{nil} @cindex @code{nil} input stream @@ -331,6 +338,7 @@ For example: @defvar standard-input This variable holds the default input stream---the stream that @code{read} uses when the @var{stream} argument is @code{nil}. +The default is @code{t}, meaning use the minibuffer. @end defvar @node Output Streams @@ -354,7 +362,9 @@ The output characters are inserted into the buffer that @var{marker} points into, at the marker position. The marker position advances as characters are inserted. The value of point in the buffer has no effect on printing when the stream is a marker, and this kind of printing -does not move point. +does not move point (except that if the marker points at or before the +position of point, point advances with the surrounding text, as +usual). @item @var{function} @cindex function output stream @@ -389,11 +399,6 @@ initially located as shown immediately before the @samp{h} in @cindex print example @example -@group -(setq m (set-marker (make-marker) 10 (get-buffer "foo"))) - @result{} # -@end group - @group ---------- Buffer: foo ---------- This is t@point{}he contents of foo. @@ -403,10 +408,6 @@ This is t@point{}he contents of foo. (print "This is the output" (get-buffer "foo")) @result{} "This is the output" -@group -m - @result{} # -@end group @group ---------- Buffer: foo ---------- This is t @@ -431,8 +432,8 @@ This is the @point{}output @end group @group -m - @result{} # +(setq m (copy-marker 10)) + @result{} # @end group @group @@ -450,7 +451,7 @@ he @point{}output @group m - @result{} # + @result{} # @end group @end example @@ -491,7 +492,7 @@ in reverse order. @group last-output - @result{} (10 34 116 117 112 116 117 111 32 101 104 + @result{} (10 34 116 117 112 116 117 111 32 101 104 116 32 115 105 32 115 105 104 84 34 10) @end group @end example @@ -568,13 +569,12 @@ characters are used. @code{print} returns @var{object}. For example: (progn (print 'The\ cat\ in) (print "the hat") (print " came back")) - @print{} + @print{} @print{} The\ cat\ in - @print{} + @print{} @print{} "the hat" - @print{} + @print{} @print{} " came back" - @print{} @result{} " came back" @end group @end example @@ -588,8 +588,8 @@ This function outputs the printed representation of @var{object} to @example @group -(progn (prin1 'The\ cat\ in) - (prin1 "the hat") +(progn (prin1 'The\ cat\ in) + (prin1 "the hat") (prin1 " came back")) @print{} The\ cat\ in"the hat"" came back" @result{} " came back" @@ -659,12 +659,11 @@ characters in the output. (This argument is supported in Emacs versions @end group @end example -See @code{format}, in @ref{String Conversion}, for other ways to obtain +See @code{format}, in @ref{Formatting Strings}, for other ways to obtain the printed representation of a Lisp object as a string. @end defun @defmac with-output-to-string body... -@tindex with-output-to-string This macro executes the @var{body} forms with @code{standard-output} set up to feed output into a string. Then it returns that string. @@ -686,6 +685,14 @@ returns @code{"The buffer is foo"}. @defvar standard-output The value of this variable is the default output stream---the stream that print functions use when the @var{stream} argument is @code{nil}. +The default is @code{t}, meaning display in the echo area. +@end defvar + +@defvar print-quoted +If this is non-@code{nil}, that means to print quoted forms using +abbreviated reader syntax. @code{(quote foo)} prints as @code{'foo}, +@code{(function foo)} as @code{#'foo}, and backquoted forms print +using modern backquote syntax. @end defvar @defvar print-escape-newlines @@ -723,6 +730,29 @@ In the second expression, the local binding of @code{prin1}, but not during the printing of the result. @end defvar +@defvar print-escape-nonascii +If this variable is non-@code{nil}, then unibyte non-@acronym{ASCII} +characters in strings are unconditionally printed as backslash sequences +by the print functions @code{prin1} and @code{print} that print with +quoting. + +Those functions also use backslash sequences for unibyte non-@acronym{ASCII} +characters, regardless of the value of this variable, when the output +stream is a multibyte buffer or a marker pointing into one. +@end defvar + +@defvar print-escape-multibyte +If this variable is non-@code{nil}, then multibyte non-@acronym{ASCII} +characters in strings are unconditionally printed as backslash sequences +by the print functions @code{prin1} and @code{print} that print with +quoting. + +Those functions also use backslash sequences for multibyte +non-@acronym{ASCII} characters, regardless of the value of this variable, +when the output stream is a unibyte buffer or a marker pointing into +one. +@end defvar + @defvar print-length @cindex printing limits The value of this variable is the maximum number of elements to print in @@ -750,3 +780,59 @@ parentheses and brackets when printed. Any list or vector at a depth exceeding this limit is abbreviated with an ellipsis. A value of @code{nil} (which is the default) means no limit. @end defvar + +@defopt eval-expression-print-length +@defoptx eval-expression-print-level +These are the values for @code{print-length} and @code{print-level} +used by @code{eval-expression}, and thus, indirectly, by many +interactive evaluation commands (@pxref{Lisp Eval,, Evaluating +Emacs-Lisp Expressions, emacs, The GNU Emacs Manual}). +@end defopt + + These variables are used for detecting and reporting circular +and shared structure: + +@tindex print-circle +@defvar print-circle +If non-@code{nil}, this variable enables detection of circular +and shared structure in printing. +@end defvar + +@tindex print-gensym +@defvar print-gensym +If non-@code{nil}, this variable enables detection of uninterned symbols +(@pxref{Creating Symbols}) in printing. When this is enabled, +uninterned symbols print with the prefix @samp{#:}, which tells the Lisp +reader to produce an uninterned symbol. +@end defvar + +@defvar print-continuous-numbering +If non-@code{nil}, that means number continuously across print calls. +This affects the numbers printed for @samp{#@var{n}=} labels and +@samp{#@var{m}#} references. + +Don't set this variable with @code{setq}; you should only bind it +temporarily to @code{t} with @code{let}. When you do that, you should +also bind @code{print-number-table} to @code{nil}. +@end defvar + +@defvar print-number-table +This variable holds a vector used internally by printing to implement +the @code{print-circle} feature. You should not use it except +to bind it to @code{nil} when you bind @code{print-continuous-numbering}. +@end defvar + +@defvar float-output-format +This variable specifies how to print floating point numbers. Its +default value is @code{nil}, meaning use the shortest output +that represents the number without losing information. + +To control output format more precisely, you can put a string in this +variable. The string should hold a @samp{%}-specification to be used +in the C function @code{sprintf}. For further restrictions on what +you can use, see the variable's documentation string. +@end defvar + +@ignore + arch-tag: 07636b8c-c4e3-4735-9e06-2e864320b434 +@end ignore