annotate src/print.c @ 12076:ee38e93ccf7e

(Fkill_buffer): When killing indirect buffer, unchain that buffer's markers (only) from the common chain. Don't rekill this buffer's indirect buffers that are dead. Do nothing if this buffer is already dead.
author Karl Heuer <kwzh@gnu.org>
date Mon, 05 Jun 1995 17:32:51 +0000
parents 7646040d7383
children 029baa39289d
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.
11235
e6bdaaa6ce1b Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 11114
diff changeset
2 Copyright (C) 1985, 86, 88, 93, 94, 95 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
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4224
diff changeset
21 #include <config.h>
329
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"
11341
e0f3fa4e7bf3 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 11241
diff changeset
33 #include "keyboard.h"
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
36 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
37 #include "intervals.h"
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
38 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
39
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 Lisp_Object Vstandard_output, Qstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 Lisp_Object Vfloat_output_format, Qfloat_output_format;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 /* Avoid actual stack overflow in print. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 int print_depth;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
49 /* Detect most circularities to print finite output. */
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
50 #define PRINT_CIRCLE 200
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
51 Lisp_Object being_printed[PRINT_CIRCLE];
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
52
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 /* Maximum length of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 effectively infinity */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 Lisp_Object Vprint_length;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 /* Maximum depth of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 effectively infinity. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 Lisp_Object Vprint_level;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 /* Nonzero means print newlines in strings as \n. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 int print_escape_newlines;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 Lisp_Object Qprint_escape_newlines;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
69 /* Nonzero means print newline to stdout before next minibuffer message.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 Defined in xdisp.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 extern int noninteractive_need_newline;
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
73
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 static int print_chars;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 static int max_print;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #endif /* MAX_PRINT_CHARS */
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
78
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
79 void print_interval ();
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #if 0
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 /* Convert between chars and GLYPHs */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 int
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 glyphlen (glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 register GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 register int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 while (glyphs[i])
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 i++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 return i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 str_to_glyph_cpy (str, glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 while (*cp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108 str_to_glyph_ncpy (str, glyphs, n)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 register int n;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 while (n-- > 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 glyph_to_str_cpy (glyphs, str)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 while (*gp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 *str++ = *gp++ & 0377;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 #endif
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3377
diff changeset
133 /* Low level output routines for characters and strings */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 /* Lisp functions to do output using a stream
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 must have the stream in a variable called printcharfun
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 and must start with PRINTPREPARE and end with PRINTFINISH.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 Use PRINTCHAR to output one character,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 or call strout to output a block of characters.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 Also, each one must have the declarations
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 int old_point = -1, start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
146 #define PRINTPREPARE \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
147 original = printcharfun; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
148 if (NILP (printcharfun)) printcharfun = Qt; \
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
149 if (BUFFERP (printcharfun)) \
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
150 { if (XBUFFER (printcharfun) != current_buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
151 Fset_buffer (printcharfun); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
152 printcharfun = Qnil;} \
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
153 if (MARKERP (printcharfun)) \
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
154 { if (!(XMARKER (original)->buffer)) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
155 error ("Marker does not point anywhere"); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
156 if (XMARKER (original)->buffer != current_buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
157 set_buffer_internal (XMARKER (original)->buffer); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
158 old_point = point; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
159 SET_PT (marker_position (printcharfun)); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
160 start_point = point; \
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 printcharfun = Qnil;}
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
163 #define PRINTFINISH \
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
164 if (MARKERP (original)) \
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
165 Fset_marker (original, make_number (point), Qnil); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
166 if (old_point >= 0) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
167 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
168 ? point - start_point : 0)); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
169 if (old != current_buffer) \
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 set_buffer_internal (old)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 #define PRINTCHAR(ch) printchar (ch, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
174 /* Index of first unused element of FRAME_MESSAGE_BUF(mini_frame). */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 static int printbufidx;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 printchar (ch, fun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 unsigned char ch;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 Lisp_Object fun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 Lisp_Object ch1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 print_chars++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 if (EQ (fun, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 insert (&ch, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 }
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 (EQ (fun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 {
6808
514a324b3681 (printchar, strout): Use FRAME_PTR, not struct frame *.
Karl Heuer <kwzh@gnu.org>
parents: 6802
diff changeset
198 FRAME_PTR mini_frame
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
199 = XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)));
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
200
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 putchar (ch);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
208 if (echo_area_glyphs != FRAME_MESSAGE_BUF (mini_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 {
10568
275f62e27ee2 (printchar, strout): Use message_log_maybe_newline.
Karl Heuer <kwzh@gnu.org>
parents: 10482
diff changeset
211 message_log_maybe_newline ();
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
212 echo_area_glyphs = FRAME_MESSAGE_BUF (mini_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 printbufidx = 0;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
214 echo_area_glyphs_length = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 message_buf_print = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
218 message_dolog (&ch, 1, 0);
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
219 if (printbufidx < FRAME_WIDTH (mini_frame) - 1)
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
220 FRAME_MESSAGE_BUF (mini_frame)[printbufidx++] = ch;
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
221 FRAME_MESSAGE_BUF (mini_frame)[printbufidx] = 0;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
222 echo_area_glyphs_length = printbufidx;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
9317
58f6a917533b (printchar): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9276
diff changeset
228 XSETFASTINT (ch1, ch);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 call1 (fun, ch1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 strout (ptr, size, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 char *ptr;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 int i = 0;
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, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 insert (ptr, 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 += size >= 0 ? size : strlen(ptr);
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 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
249 if (EQ (printcharfun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 {
6808
514a324b3681 (printchar, strout): Use FRAME_PTR, not struct frame *.
Karl Heuer <kwzh@gnu.org>
parents: 6802
diff changeset
251 FRAME_PTR mini_frame
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
252 = XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)));
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
253
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
254 i = size >= 0 ? size : strlen (ptr);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 print_chars += i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
259
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
260 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 fwrite (ptr, 1, i, stdout);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
267 if (echo_area_glyphs != FRAME_MESSAGE_BUF (mini_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 {
10568
275f62e27ee2 (printchar, strout): Use message_log_maybe_newline.
Karl Heuer <kwzh@gnu.org>
parents: 10482
diff changeset
270 message_log_maybe_newline ();
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
271 echo_area_glyphs = FRAME_MESSAGE_BUF (mini_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 printbufidx = 0;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
273 echo_area_glyphs_length = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 message_buf_print = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
277 message_dolog (ptr, i, 0);
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
278 if (i > FRAME_WIDTH (mini_frame) - printbufidx - 1)
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
279 i = FRAME_WIDTH (mini_frame) - printbufidx - 1;
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
280 bcopy (ptr, &FRAME_MESSAGE_BUF (mini_frame) [printbufidx], i);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 printbufidx += i;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
282 echo_area_glyphs_length = printbufidx;
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
283 FRAME_MESSAGE_BUF (mini_frame) [printbufidx] = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 if (size >= 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
289 while (i < size)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 PRINTCHAR (ptr[i++]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 while (ptr[i])
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 PRINTCHAR (ptr[i++]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 /* Print the contents of a string STRING using PRINTCHARFUN.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 It isn't safe to use strout, because printing one char can relocate. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 print_string (string, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 Lisp_Object string;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 if (EQ (printcharfun, Qnil) || EQ (printcharfun, Qt))
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
304 /* In predictable cases, strout is safe: output to buffer or frame. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 strout (XSTRING (string)->data, XSTRING (string)->size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 /* Otherwise, fetch the string address for each character. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 int size = XSTRING (string)->size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 GCPRO1 (string);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 for (i = 0; i < size; i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 PRINTCHAR (XSTRING (string)->data[i]);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
315 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 DEFUN ("write-char", Fwrite_char, Swrite_char, 1, 2, 0,
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
320 "Output character CHAR to stream PRINTCHARFUN.\n\
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
321 PRINTCHARFUN defaults to the value of `standard-output' (which see).")
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 (ch, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 Lisp_Object ch, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
326 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
330 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 CHECK_NUMBER (ch, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
333 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
334 PRINTCHAR (XINT (ch));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
335 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 return ch;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
338
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 /* 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
340 on the default output stream.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 write_string (data, size)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 strout (data, size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 /* 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
361 on a specified stream PRINTCHARFUN.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
364 write_string_1 (data, size, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 strout (data, size, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 temp_output_buffer_setup (bufname)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 char *bufname;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 register struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 register Lisp_Object buf;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 Fset_buffer (Fget_buffer_create (build_string (bufname)));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390
11114
c8ab5c627f74 (temp_output_buffer_setup): (Re)set the default
Richard M. Stallman <rms@gnu.org>
parents: 11010
diff changeset
391 current_buffer->directory = old->directory;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 current_buffer->read_only = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394
9276
ae62e12feac5 (temp_output_buffer_setup): Use new accessor macros instead of calling XSET
Karl Heuer <kwzh@gnu.org>
parents: 9117
diff changeset
395 XSETBUFFER (buf, current_buffer);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 specbind (Qstandard_output, buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398 set_buffer_internal (old);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 Lisp_Object
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 internal_with_output_to_temp_buffer (bufname, function, args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
403 char *bufname;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 Lisp_Object (*function) ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 Lisp_Object buf, val;
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
409 struct gcpro gcpro1;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
411 GCPRO1 (args);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 temp_output_buffer_setup (bufname);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 buf = Vstandard_output;
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
415 UNGCPRO;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 val = (*function) (args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
419 GCPRO1 (val);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 temp_output_buffer_show (buf);
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
421 UNGCPRO;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
423 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 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
427 1, UNEVALLED, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 "Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 The buffer is cleared out initially, and marked as unmodified when done.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 All output done by BODY is inserted in that buffer by default.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 The buffer is displayed in another window, but not selected.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432 The value of the last form in BODY is returned.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 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
434 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
435 to get the buffer displayed. It gets one argument, the buffer to display.")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 (args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 Lisp_Object name;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 Lisp_Object buf, val;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 GCPRO1(args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 name = Feval (Fcar (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 CHECK_STRING (name, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 temp_output_buffer_setup (XSTRING (name)->data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 buf = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 val = Fprogn (Fcdr (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 temp_output_buffer_show (buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 static void print ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 DEFUN ("terpri", Fterpri, Sterpri, 0, 1, 0,
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
463 "Output a newline to stream PRINTCHARFUN.\n\
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
464 If PRINTCHARFUN is omitted or nil, the value of `standard-output' is used.")
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 (printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
471 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
472
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
473 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
474 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
476 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
477 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 return Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 DEFUN ("prin1", Fprin1, Sprin1, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 can handle, whenever this is possible.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
485 Output stream is PRINTCHARFUN, or value of `standard-output' (which see).")
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
486 (obj, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
487 Lisp_Object obj, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
488 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
493
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
497 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
498 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 print (obj, printcharfun, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 /* 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
507 Lisp_Object Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
509 DEFUN ("prin1-to-string", Fprin1_to_string, Sprin1_to_string, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 "Return a string containing the printed representation of OBJECT,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 any Lisp object. Quoting characters are used when needed to make output\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 that `read' can handle, whenever this is possible, unless the optional\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 second argument NOESCAPE is non-nil.")
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 (obj, noescape)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515 Lisp_Object obj, noescape;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 Lisp_Object original, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 printcharfun = Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 print_depth = 0;
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
526 print (obj, printcharfun, NILP (noescape));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 /* Make Vprin1_to_string_buffer be the default buffer after PRINTFINSH */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 obj = Fbuffer_string ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 GCPRO1 (obj);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 set_buffer_internal (old);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536
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 ("princ", Fprinc, Sprinc, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 No quoting characters are used; no delimiters are printed around\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 the contents of strings.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
544 Output stream is PRINTCHARFUN, or value of standard-output (which see).")
329
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
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
553 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 print (obj, printcharfun, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 DEFUN ("print", Fprint, Sprint, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 "Output the printed representation of OBJECT, with newlines around it.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
564 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 can handle, whenever this is possible.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
566 Output stream is PRINTCHARFUN, or value of `standard-output' (which see).")
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 (obj, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 Lisp_Object obj, printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571 int old_point = -1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 int start_point;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 Lisp_Object original;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
575
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
577 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
578 max_print = MAX_PRINT_CHARS;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
579 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
580 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 GCPRO1 (obj);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
586 print (obj, printcharfun, 1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
592 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 return obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 /* The subroutine object for external-debugging-output is kept here
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 for the convenience of the debugger. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 Lisp_Object Qexternal_debugging_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
601 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
602 "Write CHARACTER to stderr.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
603 You can call print while debugging emacs, and pass it this function\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604 to make it write to the debugging output.\n")
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
605 (character)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
606 Lisp_Object character;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608 CHECK_NUMBER (character, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 putc (XINT (character), stderr);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 return character;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 }
6533
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
613
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
614 /* This is the interface for debugging printing. */
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
615
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
616 void
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
617 debug_print (arg)
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
618 Lisp_Object arg;
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
619 {
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
620 Fprin1 (arg, Qexternal_debugging_output);
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
621 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 /*
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
626 * 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
627 * largest float, printed in the biggest notation. This is undoubtably
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 * 20d float_output_format, with the negative of the C-constant "HUGE"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 * from <math.h>.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 * 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
632 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 * 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
634 * 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
635 * re-writing _doprnt to be more sane)?
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
636 * -wsr
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 */
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
638
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
639 void
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
640 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
641 unsigned char *buf;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 double data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
644 unsigned char *cp;
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
645 int width;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
647 if (NILP (Vfloat_output_format)
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
648 || !STRINGP (Vfloat_output_format))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649 lose:
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
650 {
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
651 sprintf (buf, "%.17g", data);
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
652 width = -1;
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
653 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 else /* oink oink */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 /* Check that the spec we have is fully valid.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 This means not only valid for printf,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 but meant for floats, and reasonable. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 cp = XSTRING (Vfloat_output_format)->data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 if (cp[0] != '%')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 if (cp[1] != '.')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 cp += 2;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
667
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
668 /* 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
669 width = -1;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
670 if ('0' <= *cp && *cp <= '9')
11798
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
671 {
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
672 width = 0;
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
673 do
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
674 width = (width * 10) + (*cp++ - '0');
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
675 while (*cp >= '0' && *cp <= '9');
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
676
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
677 /* A precision of zero is valid only for %f. */
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
678 if (width > DBL_DIG
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
679 || (width == 0 && *cp != 'f'))
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
680 goto lose;
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
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 if (*cp != 'e' && *cp != 'f' && *cp != 'g')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686 if (cp[1] != 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 sprintf (buf, XSTRING (Vfloat_output_format)->data, data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
691
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
692 /* 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
693 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
694 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
695 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
696 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
697 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
698 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
699 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
700 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
701
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
702 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
703 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
704 cp[1] = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
705 cp[2] = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
706 }
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
707
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
708 if (*cp == 0)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
709 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
710 *cp++ = '.';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
711 *cp++ = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
712 *cp++ = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
713 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
714 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 print (obj, printcharfun, escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 Lisp_Object obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 register Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 int escapeflag;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 char buf[30];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
728 #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
729 /* Detect circularities and truncate them.
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
730 No need to offer any alternative--this is better than an error. */
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
731 if (CONSP (obj) || VECTORP (obj) || COMPILEDP (obj))
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
732 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
733 int i;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
734 for (i = 0; i < print_depth; i++)
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
735 if (EQ (obj, being_printed[i]))
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
736 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
737 sprintf (buf, "#%d", i);
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
738 strout (buf, -1, printcharfun);
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
739 return;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
740 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
741 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
742 #endif
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
743
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
744 being_printed[print_depth] = obj;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 print_depth++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
747 if (print_depth > PRINT_CIRCLE)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 error ("Apparently circular structure being printed");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 if (max_print && print_chars > max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
757 switch (XGCTYPE (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
758 {
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
759 case Lisp_Int:
11697
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
760 if (sizeof (int) == sizeof (EMACS_INT))
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
761 sprintf (buf, "%d", XINT (obj));
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
762 else if (sizeof (long) == sizeof (EMACS_INT))
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
763 sprintf (buf, "%ld", XINT (obj));
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
764 else
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
765 abort ();
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 strout (buf, -1, printcharfun);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
767 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
768
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
769 #ifdef LISP_FLOAT_TYPE
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
770 case Lisp_Float:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
771 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
772 char pigbuf[350]; /* see comments in float_to_string */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
774 float_to_string (pigbuf, XFLOAT(obj)->data);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
775 strout (pigbuf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
776 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
777 break;
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
778 #endif
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
779
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
780 case Lisp_String:
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 if (!escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 print_string (obj, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 register int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 register unsigned char c;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
789 GCPRO1 (obj);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
790
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
791 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
792 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
793 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
794 PRINTCHAR ('#');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
795 PRINTCHAR ('(');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
796 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
797 #endif
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 PRINTCHAR ('\"');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 for (i = 0; i < XSTRING (obj)->size; i++)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 c = XSTRING (obj)->data[i];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 if (c == '\n' && print_escape_newlines)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 PRINTCHAR ('n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 }
5852
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
809 else if (c == '\f' && print_escape_newlines)
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
810 {
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
811 PRINTCHAR ('\\');
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
812 PRINTCHAR ('f');
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
813 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
815 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816 if (c == '\"' || c == '\\')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 PRINTCHAR (c);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 PRINTCHAR ('\"');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
822
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
823 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
824 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
825 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
826 traverse_intervals (XSTRING (obj)->intervals,
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
827 0, 0, print_interval, printcharfun);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
828 PRINTCHAR (')');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
829 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
830 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
831
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
834 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
835
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
836 case Lisp_Symbol:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
837 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
838 register int confusing;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
839 register unsigned char *p = XSYMBOL (obj)->name->data;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
840 register unsigned char *end = p + XSYMBOL (obj)->name->size;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
841 register unsigned char c;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
843 if (p != end && (*p == '-' || *p == '+')) p++;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
844 if (p == end)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
845 confusing = 0;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
846 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
847 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
848 while (p != end && *p >= '0' && *p <= '9')
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
849 p++;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
850 confusing = (end == p);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
851 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
853 p = XSYMBOL (obj)->name->data;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
854 while (p != end)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
855 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
856 QUIT;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
857 c = *p++;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
858 if (escapeflag)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
859 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
860 if (c == '\"' || c == '\\' || c == '\'' || c == ';' || c == '#' ||
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
861 c == '(' || c == ')' || c == ',' || c =='.' || c == '`' ||
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
862 c == '[' || c == ']' || c == '?' || c <= 040 || confusing)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
863 PRINTCHAR ('\\'), confusing = 0;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
864 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
865 PRINTCHAR (c);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
866 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
867 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
868 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
869
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
870 case Lisp_Cons:
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 /* If deeper than spec'd depth, print placeholder. */
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
872 if (INTEGERP (Vprint_level)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 && print_depth > XINT (Vprint_level))
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
874 strout ("...", -1, printcharfun);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
875 else
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 {
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
877 PRINTCHAR ('(');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 {
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
879 register int i = 0;
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
880 register int max = 0;
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
881
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
882 if (INTEGERP (Vprint_length))
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
883 max = XINT (Vprint_length);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
884 /* Could recognize circularities in cdrs here,
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
885 but that would make printing of long lists quadratic.
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
886 It's not worth doing. */
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
887 while (CONSP (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 {
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
889 if (i++)
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
890 PRINTCHAR (' ');
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
891 if (max && i > max)
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
892 {
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
893 strout ("...", 3, printcharfun);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
894 break;
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
895 }
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
896 print (Fcar (obj), printcharfun, escapeflag);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
897 obj = Fcdr (obj);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 }
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
900 if (!NILP (obj) && !CONSP (obj))
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
901 {
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
902 strout (" . ", 3, printcharfun);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
903 print (obj, printcharfun, escapeflag);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
904 }
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
905 PRINTCHAR (')');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
907 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
908
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
909 case Lisp_Vectorlike:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
910 if (PROCESSP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
911 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
912 if (escapeflag)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
913 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
914 strout ("#<process ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
915 print_string (XPROCESS (obj)->name, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
916 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
917 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
918 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
919 print_string (XPROCESS (obj)->name, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
920 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
921 else if (SUBRP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
922 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
923 strout ("#<subr ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
924 strout (XSUBR (obj)->symbol_name, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
925 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
926 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
927 #ifndef standalone
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
928 else if (WINDOWP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
929 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
930 strout ("#<window ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
931 sprintf (buf, "%d", XFASTINT (XWINDOW (obj)->sequence_number));
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
932 strout (buf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
933 if (!NILP (XWINDOW (obj)->buffer))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
934 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
935 strout (" on ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
936 print_string (XBUFFER (XWINDOW (obj)->buffer)->name, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
937 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
938 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
939 }
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
940 else if (BUFFERP (obj))
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
941 {
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
942 if (NILP (XBUFFER (obj)->name))
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
943 strout ("#<killed buffer>", -1, printcharfun);
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
944 else if (escapeflag)
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
945 {
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
946 strout ("#<buffer ", -1, printcharfun);
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
947 print_string (XBUFFER (obj)->name, printcharfun);
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
948 PRINTCHAR ('>');
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
949 }
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
950 else
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
951 print_string (XBUFFER (obj)->name, printcharfun);
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
952 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
953 else if (WINDOW_CONFIGURATIONP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
954 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
955 strout ("#<window-configuration>", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
956 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
957 #ifdef MULTI_FRAME
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
958 else if (FRAMEP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
959 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
960 strout ((FRAME_LIVE_P (XFRAME (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
961 ? "#<frame " : "#<dead frame "),
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
962 -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
963 print_string (XFRAME (obj)->name, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
964 sprintf (buf, " 0x%lx", (unsigned long) (XFRAME (obj)));
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
965 strout (buf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
966 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
967 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
968 #endif
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
969 #endif /* not standalone */
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
970 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
971 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
972 int size = XVECTOR (obj)->size;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
973 if (COMPILEDP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
974 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
975 PRINTCHAR ('#');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
976 size &= PSEUDOVECTOR_SIZE_MASK;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
977 }
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
978 if (size & PSEUDOVECTOR_FLAG)
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
979 goto badtype;
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
980
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
981 PRINTCHAR ('[');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
982 {
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
983 register int i;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
984 register Lisp_Object tem;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
985 for (i = 0; i < size; i++)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
986 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
987 if (i) PRINTCHAR (' ');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
988 tem = XVECTOR (obj)->contents[i];
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
989 print (tem, printcharfun, escapeflag);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
990 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
992 PRINTCHAR (']');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
993 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
994 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
995
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 #ifndef standalone
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
997 case Lisp_Misc:
11241
5fed07fb66fb (print): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
998 switch (XMISCTYPE (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999 {
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1000 case Lisp_Misc_Marker:
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1001 strout ("#<marker ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1002 if (!(XMARKER (obj)->buffer))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1003 strout ("in no buffer", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1004 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1005 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1006 sprintf (buf, "at %d", marker_position (obj));
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1007 strout (buf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1008 strout (" in ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1009 print_string (XMARKER (obj)->buffer->name, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1010 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 PRINTCHAR ('>');
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1012 break;
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1013
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1014 case Lisp_Misc_Overlay:
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1015 strout ("#<overlay ", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1016 if (!(XMARKER (OVERLAY_START (obj))->buffer))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1017 strout ("in no buffer", -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1018 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1019 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1020 sprintf (buf, "from %d to %d in ",
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1021 marker_position (OVERLAY_START (obj)),
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1022 marker_position (OVERLAY_END (obj)));
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1023 strout (buf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1024 print_string (XMARKER (OVERLAY_START (obj))->buffer->name,
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1025 printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1026 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1027 PRINTCHAR ('>');
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1028 break;
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1029
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1030 /* Remaining cases shouldn't happen in normal usage, but let's print
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1031 them anyway for the benefit of the debugger. */
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1032 case Lisp_Misc_Free:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1033 strout ("#<misc free cell>", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1034 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1035
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1036 case Lisp_Misc_Intfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1037 sprintf (buf, "#<intfwd to %d>", *XINTFWD (obj)->intvar);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1038 strout (buf, -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1039 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1040
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1041 case Lisp_Misc_Boolfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1042 sprintf (buf, "#<boolfwd to %s>",
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1043 (*XBOOLFWD (obj)->boolvar ? "t" : "nil"));
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1044 strout (buf, -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1045 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1046
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1047 case Lisp_Misc_Objfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1048 strout (buf, "#<objfwd to ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1049 print (*XOBJFWD (obj)->objvar, printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1050 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1051 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1052
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1053 case Lisp_Misc_Buffer_Objfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1054 strout (buf, "#<buffer_objfwd to ", -1, printcharfun);
10583
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1055 print (*(Lisp_Object *)((char *)current_buffer
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1056 + XBUFFER_OBJFWD (obj)->offset),
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1057 printcharfun, escapeflag);
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1058 PRINTCHAR ('>');
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1059 break;
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1060
11010
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1061 case Lisp_Misc_Kboard_Objfwd:
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1062 strout (buf, "#<kboard_objfwd to ", -1, printcharfun);
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1063 print (*(Lisp_Object *)((char *) current_kboard
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1064 + XKBOARD_OBJFWD (obj)->offset),
10993
e72bd65cab70 (print): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents: 10651
diff changeset
1065 printcharfun, escapeflag);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1066 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1067 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1068
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1069 case Lisp_Misc_Buffer_Local_Value:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1070 strout ("#<buffer_local_value ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1071 goto do_buffer_local;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1072 case Lisp_Misc_Some_Buffer_Local_Value:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1073 strout ("#<some_buffer_local_value ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1074 do_buffer_local:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1075 strout ("[realvalue] ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1076 print (XBUFFER_LOCAL_VALUE (obj)->car, printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1077 strout ("[buffer] ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1078 print (XCONS (XBUFFER_LOCAL_VALUE (obj)->cdr)->car,
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1079 printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1080 strout ("[alist-elt] ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1081 print (XCONS (XCONS (XBUFFER_LOCAL_VALUE (obj)->cdr)->cdr)->car,
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1082 printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1083 strout ("[default-value] ", -1, printcharfun);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1084 print (XCONS (XCONS (XBUFFER_LOCAL_VALUE (obj)->cdr)->cdr)->cdr,
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1085 printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1086 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1087 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1088
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1089 default:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1090 goto badtype;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1091 }
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1092 break;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1093 #endif /* standalone */
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1094
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1095 default:
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1096 badtype:
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1097 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1098 /* We're in trouble if this happens!
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1099 Probably should just abort () */
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1100 strout ("#<EMACS BUG: INVALID DATATYPE ", -1, printcharfun);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1101 if (MISCP (obj))
11241
5fed07fb66fb (print): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1102 sprintf (buf, "(MISC 0x%04x)", (int) XMISCTYPE (obj));
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1103 else if (VECTORLIKEP (obj))
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1104 sprintf (buf, "(PVEC 0x%08x)", (int) XVECTOR (obj)->size);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1105 else
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1106 sprintf (buf, "(0x%02x)", (int) XTYPE (obj));
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1107 strout (buf, -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1108 strout (" Save your buffers immediately and please report this bug>",
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1109 -1, printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1110 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 print_depth--;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1116 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1117
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1118 /* Print a description of INTERVAL using PRINTCHARFUN.
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1119 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
1120
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1121 void
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1122 print_interval (interval, printcharfun)
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1123 INTERVAL interval;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1124 Lisp_Object printcharfun;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1125 {
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
1126 PRINTCHAR (' ');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1127 print (make_number (interval->position), printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1128 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1129 print (make_number (interval->position + LENGTH (interval)),
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1130 printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1131 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1132 print (interval->plist, printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1133 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1134
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1135 #endif /* USE_TEXT_PROPERTIES */
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1136
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138 syms_of_print ()
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 staticpro (&Qprint_escape_newlines);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1141 Qprint_escape_newlines = intern ("print-escape-newlines");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1142
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 DEFVAR_LISP ("standard-output", &Vstandard_output,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1144 "Output stream `print' uses by default for outputting a character.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1145 This may be any function of one argument.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1146 It may also be a buffer (output is inserted before point)\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1147 or a marker (output is inserted and the marker is advanced)\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1148 or the symbol t (output appears in the minibuffer line).");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1149 Vstandard_output = Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1150 Qstandard_output = intern ("standard-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1151 staticpro (&Qstandard_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1152
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1153 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1154 DEFVAR_LISP ("float-output-format", &Vfloat_output_format,
687
e2b747dd6a6e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 686
diff changeset
1155 "The format descriptor string used to print floats.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1156 This is a %-spec like those accepted by `printf' in C,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 but with some restrictions. It must start with the two characters `%.'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1158 After that comes an integer precision specification,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 and then a letter which controls the format.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1160 The letters allowed are `e', `f' and `g'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1161 Use `e' for exponential notation \"DIG.DIGITSeEXPT\"\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1162 Use `f' for decimal point notation \"DIGITS.DIGITS\".\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1163 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
1164 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
1165 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
1166 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
1167 A value of nil means to use `%.17g'.");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 Vfloat_output_format = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 Qfloat_output_format = intern ("float-output-format");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 staticpro (&Qfloat_output_format);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 DEFVAR_LISP ("print-length", &Vprint_length,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1174 "Maximum length of list to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 Vprint_length = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 DEFVAR_LISP ("print-level", &Vprint_level,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1179 "Maximum depth of list nesting to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1181 Vprint_level = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1183 DEFVAR_BOOL ("print-escape-newlines", &print_escape_newlines,
6802
7d69da13c140 (syms_of_print): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 6533
diff changeset
1184 "Non-nil means print newlines in strings as backslash-n.\n\
5852
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
1185 Also print formfeeds as backslash-f.");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1186 print_escape_newlines = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1187
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 /* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189 staticpro (&Vprin1_to_string_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1190
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1191 defsubr (&Sprin1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1192 defsubr (&Sprin1_to_string);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1193 defsubr (&Sprinc);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1194 defsubr (&Sprint);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 defsubr (&Sterpri);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196 defsubr (&Swrite_char);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1197 defsubr (&Sexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 Qexternal_debugging_output = intern ("external-debugging-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 staticpro (&Qexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 defsubr (&Swith_output_to_temp_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 }