annotate src/print.c @ 4413:5a00cec8e9b0

(fill-region-as-paragraph): When we take one word after the fill column, don't stop at period with just one space. When checking whether at beginning of line, if no fill prefix, ignore intervening whitespace.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Aug 1993 05:55:56 +0000
parents 6cb1cfba6500
children 1fc792473491
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Lisp object printing and output streams.
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
2 Copyright (C) 1985, 1986, 1988, 1993 Free Software Foundation, Inc.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21 #include "config.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include <stdio.h>
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #undef NULL
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include "lisp.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include "buffer.h"
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
28 #include "frame.h"
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 #include "window.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 #include "process.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include "dispextern.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 #include "termchar.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
35 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
36 #include "intervals.h"
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
37 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
38
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 Lisp_Object Vstandard_output, Qstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 Lisp_Object Vfloat_output_format, Qfloat_output_format;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 /* Avoid actual stack overflow in print. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 int print_depth;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
48 /* Detect most circularities to print finite output. */
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
49 #define PRINT_CIRCLE 200
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
50 Lisp_Object being_printed[PRINT_CIRCLE];
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
51
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 /* Maximum length of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 effectively infinity */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 Lisp_Object Vprint_length;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 /* Maximum depth of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 effectively infinity. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 Lisp_Object Vprint_level;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 /* Nonzero means print newlines in strings as \n. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 int print_escape_newlines;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 Lisp_Object Qprint_escape_newlines;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 /* Nonzero means print newline before next minibuffer message.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 Defined in xdisp.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 extern int noninteractive_need_newline;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 static int print_chars;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 static int max_print;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 #endif /* MAX_PRINT_CHARS */
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
76
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
77 void print_interval ();
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 #if 0
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 /* Convert between chars and GLYPHs */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 int
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 glyphlen (glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 register GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 register int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 while (glyphs[i])
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 i++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 return i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 str_to_glyph_cpy (str, glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 while (*cp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 str_to_glyph_ncpy (str, glyphs, n)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 register int n;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 while (n-- > 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 glyph_to_str_cpy (glyphs, str)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 while (*gp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 *str++ = *gp++ & 0377;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 #endif
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3377
diff changeset
131 /* Low level output routines for characters and strings */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 /* Lisp functions to do output using a stream
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 must have the stream in a variable called printcharfun
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 and must start with PRINTPREPARE and end with PRINTFINISH.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 Use PRINTCHAR to output one character,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 or call strout to output a block of characters.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 Also, each one must have the declarations
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 int old_point = -1, start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
144 #define PRINTPREPARE \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
145 original = printcharfun; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
146 if (NILP (printcharfun)) printcharfun = Qt; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
147 if (XTYPE (printcharfun) == Lisp_Buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
148 { if (XBUFFER (printcharfun) != current_buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
149 Fset_buffer (printcharfun); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
150 printcharfun = Qnil;} \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
151 if (XTYPE (printcharfun) == Lisp_Marker) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
152 { if (!(XMARKER (original)->buffer)) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
153 error ("Marker does not point anywhere"); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
154 if (XMARKER (original)->buffer != current_buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
155 set_buffer_internal (XMARKER (original)->buffer); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
156 old_point = point; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
157 SET_PT (marker_position (printcharfun)); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
158 start_point = point; \
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 printcharfun = Qnil;}
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
161 #define PRINTFINISH \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
162 if (XTYPE (original) == Lisp_Marker) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
163 Fset_marker (original, make_number (point), Qnil); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
164 if (old_point >= 0) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
165 SET_PT (old_point + (old_point >= start_point \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
166 ? point - start_point : 0)); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
167 if (old != current_buffer) \
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 set_buffer_internal (old)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 #define PRINTCHAR(ch) printchar (ch, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
172 /* Index of first unused element of FRAME_MESSAGE_BUF(selected_frame). */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 static int printbufidx;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 printchar (ch, fun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 unsigned char ch;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 Lisp_Object fun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 Lisp_Object ch1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 print_chars++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 if (EQ (fun, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 insert (&ch, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 if (EQ (fun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 putchar (ch);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
203 if (echo_area_glyphs != FRAME_MESSAGE_BUF (selected_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 {
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
206 echo_area_glyphs = FRAME_MESSAGE_BUF (selected_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 printbufidx = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 message_buf_print = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
211 if (printbufidx < FRAME_WIDTH (selected_frame) - 1)
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
212 FRAME_MESSAGE_BUF (selected_frame)[printbufidx++] = ch;
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
213 FRAME_MESSAGE_BUF (selected_frame)[printbufidx] = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 XFASTINT (ch1) = ch;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 call1 (fun, ch1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 strout (ptr, size, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 char *ptr;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 if (EQ (printcharfun, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 insert (ptr, size >= 0 ? size : strlen (ptr));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 print_chars += size >= 0 ? size : strlen(ptr);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 if (EQ (printcharfun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 i = size >= 0 ? size : strlen (ptr);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 print_chars += i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
246 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 fwrite (ptr, 1, i, stdout);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
255 if (echo_area_glyphs != FRAME_MESSAGE_BUF (selected_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 {
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
258 echo_area_glyphs = FRAME_MESSAGE_BUF (selected_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259 printbufidx = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 message_buf_print = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
263 if (i > FRAME_WIDTH (selected_frame) - printbufidx - 1)
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
264 i = FRAME_WIDTH (selected_frame) - printbufidx - 1;
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
265 bcopy (ptr, &FRAME_MESSAGE_BUF (selected_frame) [printbufidx], i);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266 printbufidx += i;
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
267 FRAME_MESSAGE_BUF (selected_frame) [printbufidx] = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 if (size >= 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 while (i < size)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 PRINTCHAR (ptr[i++]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 while (ptr[i])
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 PRINTCHAR (ptr[i++]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 /* Print the contents of a string STRING using PRINTCHARFUN.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 It isn't safe to use strout, because printing one char can relocate. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 print_string (string, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 Lisp_Object string;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 if (EQ (printcharfun, Qnil) || EQ (printcharfun, Qt))
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
288 /* In predictable cases, strout is safe: output to buffer or frame. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 strout (XSTRING (string)->data, XSTRING (string)->size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 /* Otherwise, fetch the string address for each character. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 int size = XSTRING (string)->size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 GCPRO1 (string);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 for (i = 0; i < size; i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 PRINTCHAR (XSTRING (string)->data[i]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 DEFUN ("write-char", Fwrite_char, Swrite_char, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 "Output character CHAR to stream STREAM.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 STREAM defaults to the value of `standard-output' (which see).")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 (ch, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 Lisp_Object ch, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
314 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 CHECK_NUMBER (ch, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318 PRINTCHAR (XINT (ch));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 return ch;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 /* Used from outside of print.c to print a block of SIZE chars at DATA
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 on the default output stream.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 write_string (data, size)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340 strout (data, size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 /* Used from outside of print.c to print a block of SIZE chars at DATA
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 on a specified stream PRINTCHARFUN.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 write_string_1 (data, size, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 strout (data, size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 temp_output_buffer_setup (bufname)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 char *bufname;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 register struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 register Lisp_Object buf;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 Fset_buffer (Fget_buffer_create (build_string (bufname)));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 current_buffer->read_only = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 XSET (buf, Lisp_Buffer, current_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 specbind (Qstandard_output, buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 set_buffer_internal (old);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 Lisp_Object
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 internal_with_output_to_temp_buffer (bufname, function, args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 char *bufname;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 Lisp_Object (*function) ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 Lisp_Object buf, val;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 temp_output_buffer_setup (bufname);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 buf = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 val = (*function) (args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 temp_output_buffer_show (buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 DEFUN ("with-output-to-temp-buffer", Fwith_output_to_temp_buffer, Swith_output_to_temp_buffer,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 1, UNEVALLED, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 "Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 The buffer is cleared out initially, and marked as unmodified when done.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 All output done by BODY is inserted in that buffer by default.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 The buffer is displayed in another window, but not selected.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 The value of the last form in BODY is returned.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 If BODY does not finish normally, the buffer BUFNAME is not displayed.\n\n\
3337
f5f76ebe6286 (Fwith_output_to_temp_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2782
diff changeset
412 If variable `temp-buffer-show-function' is non-nil, call it at the end\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 to get the buffer displayed. It gets one argument, the buffer to display.")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 (args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 Lisp_Object name;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 Lisp_Object buf, val;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 GCPRO1(args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 name = Feval (Fcar (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 CHECK_STRING (name, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 temp_output_buffer_setup (XSTRING (name)->data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 buf = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 val = Fprogn (Fcdr (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 temp_output_buffer_show (buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 static void print ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 DEFUN ("terpri", Fterpri, Sterpri, 0, 1, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 "Output a newline to STREAM.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 If STREAM is omitted or nil, the value of `standard-output' is used.")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 (printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
451 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 return Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 DEFUN ("prin1", Fprin1, Sprin1, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 can handle, whenever this is possible.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 Output stream is STREAM, or value of `standard-output' (which see).")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 (obj, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 Lisp_Object obj, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
473 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
475 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 print (obj, printcharfun, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 /* a buffer which is used to hold output being built by prin1-to-string */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 Lisp_Object Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 DEFUN ("prin1-to-string", Fprin1_to_string, Sprin1_to_string, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 "Return a string containing the printed representation of OBJECT,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 any Lisp object. Quoting characters are used when needed to make output\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 that `read' can handle, whenever this is possible, unless the optional\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 second argument NOESCAPE is non-nil.")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 (obj, noescape)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493 Lisp_Object obj, noescape;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 Lisp_Object original, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 printcharfun = Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 print_depth = 0;
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
504 print (obj, printcharfun, NILP (noescape));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 /* Make Vprin1_to_string_buffer be the default buffer after PRINTFINSH */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 obj = Fbuffer_string ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 GCPRO1 (obj);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 set_buffer_internal (old);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 DEFUN ("princ", Fprinc, Sprinc, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 No quoting characters are used; no delimiters are printed around\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 the contents of strings.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 Output stream is STREAM, or value of standard-output (which see).")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 (obj, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 Lisp_Object obj, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
531 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 print (obj, printcharfun, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 DEFUN ("print", Fprint, Sprint, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 "Output the printed representation of OBJECT, with newlines around it.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 can handle, whenever this is possible.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 Output stream is STREAM, or value of `standard-output' (which see).")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 (obj, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 Lisp_Object obj, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 max_print = MAX_PRINT_CHARS;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
558 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 GCPRO1 (obj);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 print (obj, printcharfun, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575 /* The subroutine object for external-debugging-output is kept here
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 for the convenience of the debugger. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 Lisp_Object Qexternal_debugging_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
579 DEFUN ("external-debugging-output", Fexternal_debugging_output, Sexternal_debugging_output, 1, 1, 0,
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
580 "Write CHARACTER to stderr.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 You can call print while debugging emacs, and pass it this function\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 to make it write to the debugging output.\n")
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
583 (character)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
584 Lisp_Object character;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586 CHECK_NUMBER (character, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 putc (XINT (character), stderr);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 return character;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 /*
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
595 * The buffer should be at least as large as the max string size of the
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 * largest float, printed in the biggest notation. This is undoubtably
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 * 20d float_output_format, with the negative of the C-constant "HUGE"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 * from <math.h>.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 * On the vax the worst case is -1e38 in 20d format which takes 61 bytes.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
602 * I assume that IEEE-754 format numbers can take 329 bytes for the worst
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 * case of -1e307 in 20d float_output_format. What is one to do (short of
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 * re-writing _doprnt to be more sane)?
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605 * -wsr
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 */
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
607
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
608 void
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
609 float_to_string (buf, data)
1991
0f88f314fc34 * print.c (float_to_string): Define buf to be an unsigned char, to
Jim Blandy <jimb@redhat.com>
parents: 1967
diff changeset
610 unsigned char *buf;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 double data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
613 unsigned char *cp;
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
614 int width;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
616 if (NILP (Vfloat_output_format)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
617 || XTYPE (Vfloat_output_format) != Lisp_String)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 lose:
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
619 {
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
620 sprintf (buf, "%.17g", data);
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
621 width = -1;
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
622 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 else /* oink oink */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 /* Check that the spec we have is fully valid.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 This means not only valid for printf,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 but meant for floats, and reasonable. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 cp = XSTRING (Vfloat_output_format)->data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 if (cp[0] != '%')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
632 if (cp[1] != '.')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 cp += 2;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
636
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
637 /* Check the width specification. */
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
638 width = -1;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
639 if ('0' <= *cp && *cp <= '9')
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
640 for (width = 0; (*cp >= '0' && *cp <= '9'); cp++)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
641 width = (width * 10) + (*cp - '0');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 if (*cp != 'e' && *cp != 'f' && *cp != 'g')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
646 /* A precision of zero is valid for %f; everything else requires
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
647 at least one. Width may be omitted anywhere. */
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
648 if (width != -1
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
649 && (width < (*cp != 'f')
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
650 || width > DBL_DIG))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 if (cp[1] != 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 sprintf (buf, XSTRING (Vfloat_output_format)->data, data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
658
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
659 /* Make sure there is a decimal point with digit after, or an
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
660 exponent, so that the value is readable as a float. But don't do
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
661 this with "%.0f"; it's valid for that not to produce a decimal
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
662 point. Note that width can be 0 only for %.0f. */
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
663 if (width != 0)
1764
94ff5d9ef48a (float_to_string): Add final 0 if text ends with decimal pt.
Richard M. Stallman <rms@gnu.org>
parents: 1759
diff changeset
664 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
665 for (cp = buf; *cp; cp++)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
666 if ((*cp < '0' || *cp > '9') && *cp != '-')
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
667 break;
1764
94ff5d9ef48a (float_to_string): Add final 0 if text ends with decimal pt.
Richard M. Stallman <rms@gnu.org>
parents: 1759
diff changeset
668
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
669 if (*cp == '.' && cp[1] == 0)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
670 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
671 cp[1] = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
672 cp[2] = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
673 }
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
674
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
675 if (*cp == 0)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
676 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
677 *cp++ = '.';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
678 *cp++ = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
679 *cp++ = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
680 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
681 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 print (obj, printcharfun, escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 Lisp_Object obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 register Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 int escapeflag;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 char buf[30];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
695 #if 1 /* I'm not sure this is really worth doing. */
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
696 /* Detect circularities and truncate them.
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
697 No need to offer any alternative--this is better than an error. */
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
698 if (XTYPE (obj) == Lisp_Cons || XTYPE (obj) == Lisp_Vector
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
699 || XTYPE (obj) == Lisp_Compiled)
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
700 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
701 int i;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
702 for (i = 0; i < print_depth; i++)
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
703 if (EQ (obj, being_printed[i]))
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
704 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
705 sprintf (buf, "#%d", i);
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
706 strout (buf, -1, printcharfun);
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
707 return;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
708 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
709 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
710 #endif
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
711
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
712 being_printed[print_depth] = obj;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713 print_depth++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
715 if (print_depth > PRINT_CIRCLE)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 error ("Apparently circular structure being printed");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 if (max_print && print_chars > max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 #ifdef SWITCH_ENUM_BUG
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 switch ((int) XTYPE (obj))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 #else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 switch (XTYPE (obj))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 #endif
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 default:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 /* We're in trouble if this happens!
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 Probably should just abort () */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 strout ("#<EMACS BUG: INVALID DATATYPE ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 sprintf (buf, "(#o%3o)", (int) XTYPE (obj));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 strout (buf, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 strout (" Save your buffers immediately and please report this bug>",
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 case Lisp_Float:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 char pigbuf[350]; /* see comments in float_to_string */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 float_to_string (pigbuf, XFLOAT(obj)->data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 strout (pigbuf, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 case Lisp_Int:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 sprintf (buf, "%d", XINT (obj));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 strout (buf, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 case Lisp_String:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 if (!escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 print_string (obj, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
762 register int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
763 register unsigned char c;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
766 GCPRO1 (obj);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
767
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
768 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
769 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
770 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
771 PRINTCHAR ('#');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
772 PRINTCHAR ('(');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
773 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
774 #endif
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776 PRINTCHAR ('\"');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 for (i = 0; i < XSTRING (obj)->size; i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 c = XSTRING (obj)->data[i];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 if (c == '\n' && print_escape_newlines)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 PRINTCHAR ('n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 if (c == '\"' || c == '\\')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790 PRINTCHAR (c);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
792 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
793 PRINTCHAR ('\"');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
794
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
795 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
796 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
797 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
798 traverse_intervals (XSTRING (obj)->intervals,
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
799 0, 0, print_interval, printcharfun);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
800 PRINTCHAR (')');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
801 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
802 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
803
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 case Lisp_Symbol:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 register int confusing;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 register unsigned char *p = XSYMBOL (obj)->name->data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 register unsigned char *end = p + XSYMBOL (obj)->name->size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 register unsigned char c;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 if (p != end && (*p == '-' || *p == '+')) p++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 if (p == end)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 confusing = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 while (p != end && *p >= '0' && *p <= '9')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 p++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 confusing = (end == p);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 p = XSYMBOL (obj)->name->data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 while (p != end)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 c = *p++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
830 if (escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 if (c == '\"' || c == '\\' || c == '\'' || c == ';' || c == '#' ||
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 c == '(' || c == ')' || c == ',' || c =='.' || c == '`' ||
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 c == '[' || c == ']' || c == '?' || c <= 040 || confusing)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 PRINTCHAR ('\\'), confusing = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 PRINTCHAR (c);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 case Lisp_Cons:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
843 /* If deeper than spec'd depth, print placeholder. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
844 if (XTYPE (Vprint_level) == Lisp_Int
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 && print_depth > XINT (Vprint_level))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 strout ("...", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
848 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 PRINTCHAR ('(');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 register int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 register int max = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 if (XTYPE (Vprint_length) == Lisp_Int)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 max = XINT (Vprint_length);
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
858 /* Could recognize circularities in cdrs here,
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
859 but that would make printing of long lists quadratic.
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
860 It's not worth doing. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 while (CONSP (obj))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 if (i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 PRINTCHAR (' ');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865 if (max && i > max)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
866 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 strout ("...", 3, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 print (Fcar (obj), printcharfun, escapeflag);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 obj = Fcdr (obj);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 }
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
874 if (!NILP (obj) && !CONSP (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 strout (" . ", 3, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 print (obj, printcharfun, escapeflag);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 PRINTCHAR (')');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 case Lisp_Compiled:
373
7c6f74ef31a3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 329
diff changeset
883 strout ("#", -1, printcharfun);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 case Lisp_Vector:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 PRINTCHAR ('[');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 register int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 register Lisp_Object tem;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 for (i = 0; i < XVECTOR (obj)->size; i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 if (i) PRINTCHAR (' ');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 tem = XVECTOR (obj)->contents[i];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 print (tem, printcharfun, escapeflag);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 PRINTCHAR (']');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 case Lisp_Buffer:
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
901 if (NILP (XBUFFER (obj)->name))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 strout ("#<killed buffer>", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903 else if (escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 strout ("#<buffer ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 print_string (XBUFFER (obj)->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 PRINTCHAR ('>');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 print_string (XBUFFER (obj)->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 case Lisp_Process:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 if (escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 strout ("#<process ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 print_string (XPROCESS (obj)->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 PRINTCHAR ('>');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 print_string (XPROCESS (obj)->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 case Lisp_Window:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 strout ("#<window ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 sprintf (buf, "%d", XFASTINT (XWINDOW (obj)->sequence_number));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 strout (buf, -1, printcharfun);
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
928 if (!NILP (XWINDOW (obj)->buffer))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 strout (" on ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 print_string (XBUFFER (XWINDOW (obj)->buffer)->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
933 PRINTCHAR ('>');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 case Lisp_Window_Configuration:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937 strout ("#<window-configuration>", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
938 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
940 #ifdef MULTI_FRAME
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
941 case Lisp_Frame:
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
942 strout ((FRAME_LIVE_P (XFRAME (obj))
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
943 ? "#<frame " : "#<dead frame "),
430
62d4447676c1 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 379
diff changeset
944 -1, printcharfun);
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
945 print_string (XFRAME (obj)->name, printcharfun);
1521
5d58b9e933ee * print.c (print): Cast the frame's address to an integer before
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
946 sprintf (buf, " 0x%x", (unsigned int) (XFRAME (obj)));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947 strout (buf, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 strout (">", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
949 break;
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
950 #endif /* MULTI_FRAME */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 case Lisp_Marker:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953 strout ("#<marker ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 if (!(XMARKER (obj)->buffer))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955 strout ("in no buffer", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 sprintf (buf, "at %d", marker_position (obj));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959 strout (buf, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
960 strout (" in ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961 print_string (XMARKER (obj)->buffer->name, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
963 PRINTCHAR ('>');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
964 break;
2782
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
965
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
966 case Lisp_Overlay:
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
967 strout ("#<overlay ", -1, printcharfun);
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
968 if (!(XMARKER (OVERLAY_START (obj))->buffer))
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
969 strout ("in no buffer", -1, printcharfun);
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
970 else
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
971 {
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
972 sprintf (buf, "from %d to %d in ",
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
973 marker_position (OVERLAY_START (obj)),
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
974 marker_position (OVERLAY_END (obj)));
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
975 strout (buf, -1, printcharfun);
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
976 print_string (XMARKER (OVERLAY_START (obj))->buffer->name,
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
977 printcharfun);
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
978 }
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
979 PRINTCHAR ('>');
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
980 break;
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2193
diff changeset
981
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 #endif /* standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
983
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
984 case Lisp_Subr:
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 strout ("#<subr ", -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 strout (XSUBR (obj)->symbol_name, -1, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987 PRINTCHAR ('>');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988 break;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 print_depth--;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
994 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
995
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
996 /* Print a description of INTERVAL using PRINTCHARFUN.
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
997 This is part of printing a string that has text properties. */
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
998
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
999 void
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1000 print_interval (interval, printcharfun)
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1001 INTERVAL interval;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1002 Lisp_Object printcharfun;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1003 {
4003
49918d6c6dda * print.c: Get rid of extra space at the end of print syntax for
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1004 PRINTCHAR (' ');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1005 print (make_number (interval->position), printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1006 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1007 print (make_number (interval->position + LENGTH (interval)),
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1008 printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1009 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1010 print (interval->plist, printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1011 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1012
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1013 #endif /* USE_TEXT_PROPERTIES */
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1014
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1015 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1016 syms_of_print ()
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1017 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1018 staticpro (&Qprint_escape_newlines);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1019 Qprint_escape_newlines = intern ("print-escape-newlines");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1020
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1021 DEFVAR_LISP ("standard-output", &Vstandard_output,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1022 "Output stream `print' uses by default for outputting a character.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1023 This may be any function of one argument.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1024 It may also be a buffer (output is inserted before point)\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1025 or a marker (output is inserted and the marker is advanced)\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 or the symbol t (output appears in the minibuffer line).");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1027 Vstandard_output = Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1028 Qstandard_output = intern ("standard-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1029 staticpro (&Qstandard_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1030
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 DEFVAR_LISP ("float-output-format", &Vfloat_output_format,
687
e2b747dd6a6e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 686
diff changeset
1033 "The format descriptor string used to print floats.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1034 This is a %-spec like those accepted by `printf' in C,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1035 but with some restrictions. It must start with the two characters `%.'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1036 After that comes an integer precision specification,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 and then a letter which controls the format.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 The letters allowed are `e', `f' and `g'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1039 Use `e' for exponential notation \"DIG.DIGITSeEXPT\"\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 Use `f' for decimal point notation \"DIGITS.DIGITS\".\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041 Use `g' to choose the shorter of those two formats for the number at hand.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 The precision in any of these cases is the number of digits following\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 the decimal point. With `f', a precision of 0 means to omit the\n\
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1044 decimal point. 0 is not allowed with `e' or `g'.\n\n\
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
1045 A value of nil means to use `%.17g'.");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 Vfloat_output_format = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 Qfloat_output_format = intern ("float-output-format");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 staticpro (&Qfloat_output_format);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 DEFVAR_LISP ("print-length", &Vprint_length,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1052 "Maximum length of list to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 Vprint_length = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056 DEFVAR_LISP ("print-level", &Vprint_level,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1057 "Maximum depth of list nesting to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 Vprint_level = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1061 DEFVAR_BOOL ("print-escape-newlines", &print_escape_newlines,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062 "Non-nil means print newlines in strings as backslash-n.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063 print_escape_newlines = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1064
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065 /* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1066 staticpro (&Vprin1_to_string_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1068 defsubr (&Sprin1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1069 defsubr (&Sprin1_to_string);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1070 defsubr (&Sprinc);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1071 defsubr (&Sprint);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1072 defsubr (&Sterpri);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1073 defsubr (&Swrite_char);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 defsubr (&Sexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1075
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 Qexternal_debugging_output = intern ("external-debugging-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 staticpro (&Qexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 defsubr (&Swith_output_to_temp_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 }