annotate src/print.c @ 23323:0800a4f84757

(underlying_strftime): Set the buffer to a nonzero value before calling strftime, and check to see whether strftime has set the buffer to zero. This lets us distinguish between an empty buffer and an error. I'm installing this patch by hand now; it will be superseded whenever the glibc sources are propagated back to fsf.org.
author Paul Eggert <eggert@twinsun.com>
date Fri, 25 Sep 1998 21:40:23 +0000
parents d8013246bf0d
children 8c829259606f
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.
21250
c6212caa6fe2 (PRINTPREPARE): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
2 Copyright (C) 1985, 86, 88, 93, 94, 95, 97, 1998
c6212caa6fe2 (PRINTPREPARE): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
3 Free Software Foundation, Inc.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 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
9 the Free Software Foundation; either version 2, or (at your option)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 any later version.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14084
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14084
diff changeset
20 Boston, MA 02111-1307, USA. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4224
diff changeset
23 #include <config.h>
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24 #include <stdio.h>
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include "lisp.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include "buffer.h"
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
29 #include "charset.h"
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
30 #include "frame.h"
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include "window.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 #include "process.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 #include "dispextern.h"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 #include "termchar.h"
11341
e0f3fa4e7bf3 Include keyboard.h.
Richard M. Stallman <rms@gnu.org>
parents: 11241
diff changeset
35 #include "keyboard.h"
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
38 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
39 #include "intervals.h"
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
40 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
41
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 Lisp_Object Vstandard_output, Qstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
44 /* These are used to print like we read. */
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
45 extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
46
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 Lisp_Object Vfloat_output_format, Qfloat_output_format;
20121
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
49
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
50 /* Work around a problem that happens because math.h on hpux 7
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
51 defines two static variables--which, in Emacs, are not really static,
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
52 because `static' is defined as nothing. The problem is that they are
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
53 defined both here and in lread.c.
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
54 These macros prevent the name conflict. */
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
55 #if defined (HPUX) && !defined (HPUX8)
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
56 #define _MAXLDBL print_maxldbl
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
57 #define _NMAXLDBL print_nmaxldbl
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
58 #endif
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
59
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
60 #include <math.h>
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
61
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
62 #if STDC_HEADERS
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
63 #include <float.h>
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
64 #include <stdlib.h>
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
65 #endif
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
66
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
67 /* Default to values appropriate for IEEE floating point. */
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
68 #ifndef FLT_RADIX
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
69 #define FLT_RADIX 2
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
70 #endif
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
71 #ifndef DBL_MANT_DIG
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
72 #define DBL_MANT_DIG 53
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
73 #endif
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
74 #ifndef DBL_DIG
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
75 #define DBL_DIG 15
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
76 #endif
20200
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
77 #ifndef DBL_MIN
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
78 #define DBL_MIN 2.2250738585072014e-308
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
79 #endif
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
80
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
81 #ifdef DBL_MIN_REPLACEMENT
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
82 #undef DBL_MIN
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
83 #define DBL_MIN DBL_MIN_REPLACEMENT
b69f8ea35fef (DBL_MIN): Use workaround if DBL_MIN_REPLACEMENT is defined.
Paul Eggert <eggert@twinsun.com>
parents: 20121
diff changeset
84 #endif
20121
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
85
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
86 /* Define DOUBLE_DIGITS_BOUND, an upper bound on the number of decimal digits
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
87 needed to express a float without losing information.
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
88 The general-case formula is valid for the usual case, IEEE floating point,
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
89 but many compilers can't optimize the formula to an integer constant,
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
90 so make a special case for it. */
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
91 #if FLT_RADIX == 2 && DBL_MANT_DIG == 53
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
92 #define DOUBLE_DIGITS_BOUND 17 /* IEEE floating point */
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
93 #else
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
94 #define DOUBLE_DIGITS_BOUND ((int) ceil (log10 (pow (FLT_RADIX, DBL_MANT_DIG))))
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
95 #endif
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
96
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 /* Avoid actual stack overflow in print. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 int print_depth;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
102 /* Detect most circularities to print finite output. */
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
103 #define PRINT_CIRCLE 200
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
104 Lisp_Object being_printed[PRINT_CIRCLE];
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
105
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
106 /* When printing into a buffer, first we put the text in this
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
107 block, then insert it all at once. */
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
108 char *print_buffer;
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
109
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
110 /* Size allocated in print_buffer. */
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
111 int print_buffer_size;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
112 /* Chars stored in print_buffer. */
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
113 int print_buffer_pos;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
114 /* Bytes stored in print_buffer. */
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
115 int print_buffer_pos_byte;
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
116
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 /* Maximum length of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 effectively infinity */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 Lisp_Object Vprint_length;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 /* Maximum depth of list to print in full; noninteger means
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 effectively infinity. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 Lisp_Object Vprint_level;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 /* Nonzero means print newlines in strings as \n. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 int print_escape_newlines;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130
22240
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
131 /* Nonzero means to print single-byte non-ascii characters in strings as
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
132 octal escapes. */
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
133
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
134 int print_escape_nonascii;
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
135
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
136 /* Nonzero means to print multibyte characters in strings as hex escapes. */
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
137
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
138 int print_escape_multibyte;
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
139
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
140 Lisp_Object Qprint_escape_newlines;
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
141 Lisp_Object Qprint_escape_multibyte, Qprint_escape_nonascii;
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
142
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
143 /* Nonzero means print (quote foo) forms as 'foo, etc. */
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
144
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
145 int print_quoted;
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
146
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
147 /* Non-nil means print #: before uninterned symbols.
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
148 Neither t nor nil means so that and don't clear Vprint_gensym_alist
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
149 on entry to and exit from print functions. */
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
150
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
151 Lisp_Object Vprint_gensym;
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
152
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
153 /* Association list of certain objects that are `eq' in the form being
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
154 printed and which should be `eq' when read back in, using the #n=object
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
155 and #n# reader forms. Each element has the form (object . n). */
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
156
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
157 Lisp_Object Vprint_gensym_alist;
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
158
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
159 /* Nonzero means print newline to stdout before next minibuffer message.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 Defined in xdisp.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 extern int noninteractive_need_newline;
10418
fdad41459fd6 (printchar, strout): Call message_dolog.
Karl Heuer <kwzh@gnu.org>
parents: 10301
diff changeset
163
19001
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
164 extern int minibuffer_auto_raise;
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
165
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 static int print_chars;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 static int max_print;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 #endif /* MAX_PRINT_CHARS */
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
170
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
171 void print_interval ();
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 #if 0
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 /* Convert between chars and GLYPHs */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 int
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 glyphlen (glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 register GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 register int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 while (glyphs[i])
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 i++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 return i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 str_to_glyph_cpy (str, glyphs)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 while (*cp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 str_to_glyph_ncpy (str, glyphs, n)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 register int n;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 while (n-- > 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 *gp++ = *cp++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 glyph_to_str_cpy (glyphs, str)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 GLYPH *glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 char *str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 register GLYPH *gp = glyphs;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 register char *cp = str;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 while (*gp)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 *str++ = *gp++ & 0377;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 #endif
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3377
diff changeset
225 /* Low level output routines for characters and strings */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 /* Lisp functions to do output using a stream
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
228 must have the stream in a variable called printcharfun
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
229 and must start with PRINTPREPARE, end with PRINTFINISH,
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
230 and use PRINTDECLARE to declare common variables.
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
231 Use PRINTCHAR to output one character,
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
232 or call strout to output a block of characters.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
235 #define PRINTDECLARE \
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
236 struct buffer *old = current_buffer; \
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
237 int old_point = -1, start_point; \
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
238 int old_point_byte, start_point_byte; \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
239 int specpdl_count = specpdl_ptr - specpdl; \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
240 int free_print_buffer = 0; \
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
241 Lisp_Object original
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
242
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
243 #define PRINTPREPARE \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
244 original = printcharfun; \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
245 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
246 if (BUFFERP (printcharfun)) \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
247 { \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
248 if (XBUFFER (printcharfun) != current_buffer) \
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
249 Fset_buffer (printcharfun); \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
250 printcharfun = Qnil; \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
251 } \
9117
f69e6cf74874 (PRINTPREPARE, PRINTFINISH, float_to_string, print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 8854
diff changeset
252 if (MARKERP (printcharfun)) \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
253 { \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
254 if (!(XMARKER (original)->buffer)) \
2193
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
255 error ("Marker does not point anywhere"); \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
256 if (XMARKER (original)->buffer != current_buffer) \
652b38173a63 (PRINTPREPARE): Handle marker that points nowhere.
Richard M. Stallman <rms@gnu.org>
parents: 1991
diff changeset
257 set_buffer_internal (XMARKER (original)->buffer); \
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15908
diff changeset
258 old_point = PT; \
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
259 old_point_byte = PT_BYTE; \
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
260 SET_PT_BOTH (marker_position (printcharfun), \
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
261 marker_byte_position (printcharfun)); \
16039
855c8d8ba0f0 Change all references from point to PT.
Karl Heuer <kwzh@gnu.org>
parents: 15908
diff changeset
262 start_point = PT; \
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
263 start_point_byte = PT_BYTE; \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
264 printcharfun = Qnil; \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
265 } \
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
266 if (NILP (printcharfun)) \
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
267 { \
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
268 Lisp_Object string; \
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
269 if (NILP (current_buffer->enable_multibyte_characters) \
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
270 && ! print_escape_multibyte) \
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
271 specbind (Qprint_escape_multibyte, Qt); \
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
272 if (! NILP (current_buffer->enable_multibyte_characters) \
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
273 && ! print_escape_nonascii) \
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
274 specbind (Qprint_escape_nonascii, Qt); \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
275 if (print_buffer != 0) \
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
276 { \
21250
c6212caa6fe2 (PRINTPREPARE): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
277 string = make_string_from_bytes (print_buffer, \
c6212caa6fe2 (PRINTPREPARE): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
278 print_buffer_pos, \
c6212caa6fe2 (PRINTPREPARE): Use make_string_from_bytes.
Richard M. Stallman <rms@gnu.org>
parents: 21244
diff changeset
279 print_buffer_pos_byte); \
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
280 record_unwind_protect (print_unwind, string); \
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
281 } \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
282 else \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
283 { \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
284 print_buffer_size = 1000; \
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
285 print_buffer = (char *) xmalloc (print_buffer_size); \
16513
ecf0700e9550 (PRINTPREPARE): Really do set free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16512
diff changeset
286 free_print_buffer = 1; \
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
287 } \
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
288 print_buffer_pos = 0; \
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
289 print_buffer_pos_byte = 0; \
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
290 } \
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
291 if (!CONSP (Vprint_gensym)) \
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
292 Vprint_gensym_alist = Qnil
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293
22605
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
294 #define PRINTFINISH \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
295 if (NILP (printcharfun)) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
296 { \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
297 if (print_buffer_pos != print_buffer_pos_byte \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
298 && NILP (current_buffer->enable_multibyte_characters)) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
299 { \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
300 unsigned char *temp \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
301 = (unsigned char *) alloca (print_buffer_pos + 1); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
302 copy_text (print_buffer, temp, print_buffer_pos_byte, \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
303 1, 0); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
304 insert_1_both (temp, print_buffer_pos, \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
305 print_buffer_pos, 0, 1, 0); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
306 } \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
307 else \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
308 insert_1_both (print_buffer, print_buffer_pos, \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
309 print_buffer_pos_byte, 0, 1, 0); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
310 } \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
311 if (free_print_buffer) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
312 { \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
313 xfree (print_buffer); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
314 print_buffer = 0; \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
315 } \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
316 unbind_to (specpdl_count, Qnil); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
317 if (MARKERP (original)) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
318 set_marker_both (original, Qnil, PT, PT_BYTE); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
319 if (old_point >= 0) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
320 SET_PT_BOTH (old_point + (old_point >= start_point \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
321 ? PT - start_point : 0), \
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
322 old_point_byte + (old_point_byte >= start_point_byte \
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
323 ? PT_BYTE - start_point_byte : 0)); \
22605
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
324 if (old != current_buffer) \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
325 set_buffer_internal (old); \
c3ffffc994d1 (PRINTFINISH): Convert text to unibyte before
Richard M. Stallman <rms@gnu.org>
parents: 22544
diff changeset
326 if (!CONSP (Vprint_gensym)) \
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
327 Vprint_gensym_alist = Qnil
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 #define PRINTCHAR(ch) printchar (ch, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
331 /* Nonzero if there is no room to print any more characters
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
332 so print might as well return right away. */
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
333
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
334 #define PRINTFULLP() \
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
335 (EQ (printcharfun, Qt) && !noninteractive \
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
336 && printbufidx >= FRAME_WIDTH (XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)))))
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
337
16512
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
338 /* This is used to restore the saved contents of print_buffer
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
339 when there is a recursive call to print. */
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
340 static Lisp_Object
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
341 print_unwind (saved_text)
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
342 Lisp_Object saved_text;
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
343 {
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
344 bcopy (XSTRING (saved_text)->data, print_buffer, XSTRING (saved_text)->size);
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
345 }
59835b743b93 (PRINTDECLARE): Declare specpdl_count and free_print_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 16496
diff changeset
346
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
347 /* Index of first unused element of FRAME_MESSAGE_BUF (mini_frame). */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 static int printbufidx;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 printchar (ch, fun)
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
352 unsigned int ch;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
353 Lisp_Object fun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
355 Lisp_Object ch1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 if (max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 print_chars++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 if (EQ (fun, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 {
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
364 int len;
20303
13efdf0fe96e (printchar): Declare `work' as unsigned char.
Andreas Schwab <schwab@suse.de>
parents: 20200
diff changeset
365 unsigned char work[4], *str;
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
366
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 QUIT;
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
368 len = CHAR_STRING (ch, work, str);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
369 if (print_buffer_pos_byte + len >= print_buffer_size)
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
370 print_buffer = (char *) xrealloc (print_buffer,
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
371 print_buffer_size *= 2);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
372 bcopy (str, print_buffer + print_buffer_pos_byte, len);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
373 print_buffer_pos += 1;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
374 print_buffer_pos_byte += len;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
376 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 if (EQ (fun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 {
6808
514a324b3681 (printchar, strout): Use FRAME_PTR, not struct frame *.
Karl Heuer <kwzh@gnu.org>
parents: 6802
diff changeset
380 FRAME_PTR mini_frame
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
381 = XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)));
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
382 unsigned char work[4], *str;
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
383 int len = CHAR_STRING (ch, work, str);
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
384
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
385 QUIT;
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
386
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 {
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
389 while (len--)
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
390 putchar (*str), str++;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
395 if (echo_area_glyphs != FRAME_MESSAGE_BUF (mini_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 {
10568
275f62e27ee2 (printchar, strout): Use message_log_maybe_newline.
Karl Heuer <kwzh@gnu.org>
parents: 10482
diff changeset
398 message_log_maybe_newline ();
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
399 echo_area_glyphs = FRAME_MESSAGE_BUF (mini_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 printbufidx = 0;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
401 echo_area_glyphs_length = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 message_buf_print = 1;
19001
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
403
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
404 if (minibuffer_auto_raise)
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
405 {
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
406 Lisp_Object mini_window;
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
407
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
408 /* Get the frame containing the minibuffer
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
409 that the selected frame is using. */
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
410 mini_window = FRAME_MINIBUF_WINDOW (selected_frame);
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
411
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
412 Fraise_frame (WINDOW_FRAME (XWINDOW (mini_window)));
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
413 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
416 message_dolog (str, len, 0, len > 1);
20888
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
417
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
418 /* Convert message to multibyte if we are now adding multibyte text. */
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
419 if (! NILP (current_buffer->enable_multibyte_characters)
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
420 && ! message_enable_multibyte
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
421 && printbufidx > 0)
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
422 {
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
423 int size = count_size_as_multibyte (FRAME_MESSAGE_BUF (mini_frame),
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
424 printbufidx);
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
425 unsigned char *tembuf = (unsigned char *) alloca (size + 1);
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
426 copy_text (FRAME_MESSAGE_BUF (mini_frame), tembuf, printbufidx,
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
427 0, 1);
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
428 printbufidx = size;
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
429 if (printbufidx > FRAME_MESSAGE_BUF_SIZE (mini_frame))
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
430 {
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
431 printbufidx = FRAME_MESSAGE_BUF_SIZE (mini_frame);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
432 /* Rewind incomplete multi-byte form. */
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
433 while (printbufidx > 0 && tembuf[printbufidx] >= 0xA0)
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
434 printbufidx--;
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
435 }
20888
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
436 bcopy (tembuf, FRAME_MESSAGE_BUF (mini_frame), printbufidx);
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
437 message_enable_multibyte = 1;
20888
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
438 }
98172ad9f511 (printchar): When outputting to echo area,
Richard M. Stallman <rms@gnu.org>
parents: 20862
diff changeset
439
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
440 if (printbufidx < FRAME_MESSAGE_BUF_SIZE (mini_frame) - len)
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
441 bcopy (str, &FRAME_MESSAGE_BUF (mini_frame)[printbufidx], len),
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
442 printbufidx += len;
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
443 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
444 echo_area_glyphs_length = printbufidx;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449
9317
58f6a917533b (printchar): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9276
diff changeset
450 XSETFASTINT (ch1, ch);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 call1 (fun, ch1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 static void
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
455 strout (ptr, size, size_byte, printcharfun, multibyte)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 char *ptr;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
457 int size, size_byte;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 Lisp_Object printcharfun;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
459 int multibyte;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
461 int i = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
463 if (size < 0)
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
464 size_byte = size = strlen (ptr);
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
465
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466 if (EQ (printcharfun, Qnil))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
468 if (print_buffer_pos_byte + size_byte > print_buffer_size)
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
469 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
470 print_buffer_size = print_buffer_size * 2 + size_byte;
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
471 print_buffer = (char *) xrealloc (print_buffer,
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
472 print_buffer_size);
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
473 }
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
474 bcopy (ptr, print_buffer + print_buffer_pos_byte, size_byte);
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
475 print_buffer_pos += size;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
476 print_buffer_pos_byte += size_byte;
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
477
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
479 if (max_print)
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
480 print_chars += size;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
481 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
482 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
483 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
484 if (EQ (printcharfun, Qt))
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 {
6808
514a324b3681 (printchar, strout): Use FRAME_PTR, not struct frame *.
Karl Heuer <kwzh@gnu.org>
parents: 6802
diff changeset
486 FRAME_PTR mini_frame
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
487 = XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)));
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
488
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
489 QUIT;
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
490
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 if (max_print)
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
493 print_chars += size;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
496 if (noninteractive)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
497 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
498 fwrite (ptr, 1, size_byte, stdout);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 noninteractive_need_newline = 1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
503 if (echo_area_glyphs != FRAME_MESSAGE_BUF (mini_frame)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 || !message_buf_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 {
10568
275f62e27ee2 (printchar, strout): Use message_log_maybe_newline.
Karl Heuer <kwzh@gnu.org>
parents: 10482
diff changeset
506 message_log_maybe_newline ();
5487
58a9bb23c3ea (strout, printchar): Use proper frame for minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 5233
diff changeset
507 echo_area_glyphs = FRAME_MESSAGE_BUF (mini_frame);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 printbufidx = 0;
5233
83e771f33251 (printchar, strout): Set echo_area_glyphs_length.
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
509 echo_area_glyphs_length = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 message_buf_print = 1;
19001
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
511
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
512 if (minibuffer_auto_raise)
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
513 {
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
514 Lisp_Object mini_window;
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
515
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
516 /* Get the frame containing the minibuffer
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
517 that the selected frame is using. */
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
518 mini_window = FRAME_MINIBUF_WINDOW (selected_frame);
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
519
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
520 Fraise_frame (WINDOW_FRAME (XWINDOW (mini_window)));
2190c39dc640 (strout, printchar): Handle minibuffer_auto_raise.
Richard M. Stallman <rms@gnu.org>
parents: 18961
diff changeset
521 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
524 message_dolog (ptr, size_byte, 0, multibyte);
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
525
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
526 /* Convert message to multibyte if we are now adding multibyte text. */
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
527 if (multibyte
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
528 && ! message_enable_multibyte
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
529 && printbufidx > 0)
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
530 {
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
531 int size = count_size_as_multibyte (FRAME_MESSAGE_BUF (mini_frame),
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
532 printbufidx);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
533 unsigned char *tembuf = (unsigned char *) alloca (size + 1);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
534 copy_text (FRAME_MESSAGE_BUF (mini_frame), tembuf, printbufidx,
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
535 0, 1);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
536 printbufidx = size;
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
537 if (printbufidx > FRAME_MESSAGE_BUF_SIZE (mini_frame))
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
538 {
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
539 printbufidx = FRAME_MESSAGE_BUF_SIZE (mini_frame);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
540 /* Rewind incomplete multi-byte form. */
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
541 while (printbufidx > 0 && tembuf[printbufidx] >= 0xA0)
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
542 printbufidx--;
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
543 }
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
544
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
545 bcopy (tembuf, FRAME_MESSAGE_BUF (mini_frame), printbufidx);
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
546 }
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
547
22528
917ec8bf0d89 (strout): Show multibyte message correctly.
Karl Heuer <kwzh@gnu.org>
parents: 22243
diff changeset
548 if (multibyte)
917ec8bf0d89 (strout): Show multibyte message correctly.
Karl Heuer <kwzh@gnu.org>
parents: 22243
diff changeset
549 message_enable_multibyte = 1;
917ec8bf0d89 (strout): Show multibyte message correctly.
Karl Heuer <kwzh@gnu.org>
parents: 22243
diff changeset
550
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
551 /* Compute how much of the new text will fit there. */
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
552 if (size_byte > FRAME_MESSAGE_BUF_SIZE (mini_frame) - printbufidx - 1)
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
553 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
554 size_byte = FRAME_MESSAGE_BUF_SIZE (mini_frame) - printbufidx - 1;
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
555 /* Rewind incomplete multi-byte form. */
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
556 while (size_byte && (unsigned char) ptr[size_byte] >= 0xA0)
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
557 size_byte--;
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
558 }
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
559
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
560 /* Put that part of the new text in. */
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
561 bcopy (ptr, &FRAME_MESSAGE_BUF (mini_frame) [printbufidx], size_byte);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
562 printbufidx += size_byte;
21499
a063399999d8 (strout): Convert old echo area to multibyte, like printchar.
Karl Heuer <kwzh@gnu.org>
parents: 21484
diff changeset
563 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
564 echo_area_glyphs_length = printbufidx;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 return;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
569 i = 0;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
570 if (size == size_byte)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
571 while (i < size_byte)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
572 {
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
573 int ch = ptr[i++];
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
574
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
575 PRINTCHAR (ch);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
576 }
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
577 else
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
578 while (i < size_byte)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
579 {
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
580 /* Here, we must convert each multi-byte form to the
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
581 corresponding character code before handing it to PRINTCHAR. */
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
582 int len;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
583 int ch = STRING_CHAR_AND_LENGTH (ptr + i, size_byte - i, len);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
584
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
585 PRINTCHAR (ch);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
586 i += len;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
587 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
588 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
590 /* Print the contents of a string STRING using PRINTCHARFUN.
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
591 It isn't safe to use strout in many cases,
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
592 because printing one char can relocate. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
594 static void
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 print_string (string, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
596 Lisp_Object string;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
597 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 {
15801
b0bd5de2ce82 When printing into a buffer, generate all the text
Richard M. Stallman <rms@gnu.org>
parents: 15707
diff changeset
599 if (EQ (printcharfun, Qt) || NILP (printcharfun))
22544
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
600 {
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
601 int chars;
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
602
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
603 if (STRING_MULTIBYTE (string))
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
604 chars = XSTRING (string)->size;
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
605 else if (EQ (printcharfun, Qt)
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
606 ? ! NILP (buffer_defaults.enable_multibyte_characters)
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
607 : ! NILP (current_buffer->enable_multibyte_characters))
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
608 chars = multibyte_chars_in_text (XSTRING (string)->data,
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
609 STRING_BYTES (XSTRING (string)));
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
610 else
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
611 chars = STRING_BYTES (XSTRING (string));
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
612
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
613 /* strout is safe for output to a frame (echo area) or to print_buffer. */
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
614 strout (XSTRING (string)->data,
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
615 chars, STRING_BYTES (XSTRING (string)),
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
616 printcharfun, STRING_MULTIBYTE (string));
f2d3eeec754e (print_string): Properly compute number of chars
Karl Heuer <kwzh@gnu.org>
parents: 22528
diff changeset
617 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
619 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
620 /* Otherwise, string may be relocated by printing one char.
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
621 So re-fetch the string address for each character. */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 int i;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 int size = XSTRING (string)->size;
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 21142
diff changeset
624 int size_byte = STRING_BYTES (XSTRING (string));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
625 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
626 GCPRO1 (string);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
627 if (size == size_byte)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
628 for (i = 0; i < size; i++)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
629 PRINTCHAR (XSTRING (string)->data[i]);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
630 else
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
631 for (i = 0; i < size_byte; i++)
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
632 {
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
633 /* Here, we must convert each multi-byte form to the
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
634 corresponding character code before handing it to PRINTCHAR. */
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
635 int len;
22183
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
636 int ch = STRING_CHAR_AND_CHAR_LENGTH (XSTRING (string)->data + i,
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
637 size_byte - i, len);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
638
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
639 PRINTCHAR (ch);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
640 i += len;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
641 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 DEFUN ("write-char", Fwrite_char, Swrite_char, 1, 2, 0,
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
647 "Output character CHARACTER to stream PRINTCHARFUN.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
648 PRINTCHARFUN defaults to the value of `standard-output' (which see).")
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
649 (character, printcharfun)
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
650 Lisp_Object character, printcharfun;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
652 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
654 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 printcharfun = Vstandard_output;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
656 CHECK_NUMBER (character, 0);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 PRINTPREPARE;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
658 PRINTCHAR (XINT (character));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
659 PRINTFINISH;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
660 return character;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
663 /* Used from outside of print.c to print a block of SIZE
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
664 single-byte chars at DATA on the default output stream.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666
20303
13efdf0fe96e (printchar): Declare `work' as unsigned char.
Andreas Schwab <schwab@suse.de>
parents: 20200
diff changeset
667 void
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 write_string (data, size)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
672 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
674
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677 PRINTPREPARE;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
678 strout (data, size, size, printcharfun, 0);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
679 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
682 /* Used from outside of print.c to print a block of SIZE
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
683 single-byte chars at DATA on a specified stream PRINTCHARFUN.
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
684 Do not use this on the contents of a Lisp string. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685
20303
13efdf0fe96e (printchar): Declare `work' as unsigned char.
Andreas Schwab <schwab@suse.de>
parents: 20200
diff changeset
686 void
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 write_string_1 (data, size, printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 char *data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 int size;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
692 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 PRINTPREPARE;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
695 strout (data, size, size, printcharfun, 0);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 temp_output_buffer_setup (bufname)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 char *bufname;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 register struct buffer *old = current_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707 register Lisp_Object buf;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
709 Fset_buffer (Fget_buffer_create (build_string (bufname)));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710
11114
c8ab5c627f74 (temp_output_buffer_setup): (Re)set the default
Richard M. Stallman <rms@gnu.org>
parents: 11010
diff changeset
711 current_buffer->directory = old->directory;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 current_buffer->read_only = Qnil;
21484
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
713 current_buffer->filename = Qnil;
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
714 current_buffer->undo_list = Qt;
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
715 current_buffer->overlays_before = Qnil;
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
716 current_buffer->overlays_after = Qnil;
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
717 current_buffer->enable_multibyte_characters
e4f63bf20c03 (temp_output_buffer_setup): Clear out overlays,
Karl Heuer <kwzh@gnu.org>
parents: 21480
diff changeset
718 = buffer_defaults.enable_multibyte_characters;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720
9276
ae62e12feac5 (temp_output_buffer_setup): Use new accessor macros instead of calling XSET
Karl Heuer <kwzh@gnu.org>
parents: 9117
diff changeset
721 XSETBUFFER (buf, current_buffer);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 specbind (Qstandard_output, buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 set_buffer_internal (old);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 Lisp_Object
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 internal_with_output_to_temp_buffer (bufname, function, args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 char *bufname;
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 21499
diff changeset
730 Lisp_Object (*function) P_ ((Lisp_Object));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 Lisp_Object buf, val;
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
735 struct gcpro gcpro1;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
737 GCPRO1 (args);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 temp_output_buffer_setup (bufname);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 buf = Vstandard_output;
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
741 UNGCPRO;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 val = (*function) (args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744
8315
8921d0012bd5 (internal_with_output_to_temp_buffer): gcpro things.
Richard M. Stallman <rms@gnu.org>
parents: 7185
diff changeset
745 GCPRO1 (val);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 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
747 UNGCPRO;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 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
753 1, UNEVALLED, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 "Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 The buffer is cleared out initially, and marked as unmodified when done.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756 All output done by BODY is inserted in that buffer by default.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
757 The buffer is displayed in another window, but not selected.\n\
23236
d8013246bf0d (Fwith_output_to_temp_buffer): Doc fix.
Dave Love <fx@gnu.org>
parents: 22933
diff changeset
758 The hook `temp-buffer-show-hook' is run with that window selected\n\
d8013246bf0d (Fwith_output_to_temp_buffer): Doc fix.
Dave Love <fx@gnu.org>
parents: 22933
diff changeset
759 temporarily and its buffer current.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 The value of the last form in BODY is returned.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
761 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
762 If variable `temp-buffer-show-function' is non-nil, call it at the end\n\
23236
d8013246bf0d (Fwith_output_to_temp_buffer): Doc fix.
Dave Love <fx@gnu.org>
parents: 22933
diff changeset
763 to get the buffer displayed instead of just displaying the non-selected\n\
d8013246bf0d (Fwith_output_to_temp_buffer): Doc fix.
Dave Love <fx@gnu.org>
parents: 22933
diff changeset
764 buffer and calling the hook. It gets one argument, the buffer to display.")
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
765 (args)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
766 Lisp_Object args;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 Lisp_Object name;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770 int count = specpdl_ptr - specpdl;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
771 Lisp_Object buf, val;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 GCPRO1(args);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 name = Feval (Fcar (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 CHECK_STRING (name, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 temp_output_buffer_setup (XSTRING (name)->data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 buf = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 val = Fprogn (Fcdr (args));
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 temp_output_buffer_show (buf);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 return unbind_to (count, val);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 static void print ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
791 DEFUN ("terpri", Fterpri, Sterpri, 0, 1, 0,
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
792 "Output a newline to stream PRINTCHARFUN.\n\
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
793 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
794 (printcharfun)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
795 Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
797 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
799 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 return Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 DEFUN ("prin1", Fprin1, Sprin1, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 can handle, whenever this is possible.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
811 Output stream is PRINTCHARFUN, or value of `standard-output' (which see).")
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
812 (object, printcharfun)
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
813 Lisp_Object object, printcharfun;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
815 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
816
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
819 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
820 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823 print_depth = 0;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
824 print (object, printcharfun, 1);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 PRINTFINISH;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
826 return object;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 /* 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
830 Lisp_Object Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 DEFUN ("prin1-to-string", Fprin1_to_string, Sprin1_to_string, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 "Return a string containing the printed representation of OBJECT,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 any Lisp object. Quoting characters are used when needed to make output\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 that `read' can handle, whenever this is possible, unless the optional\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 second argument NOESCAPE is non-nil.")
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
837 (object, noescape)
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
838 Lisp_Object object, noescape;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
840 PRINTDECLARE;
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
841 Lisp_Object printcharfun;
15270
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
842 struct gcpro gcpro1, gcpro2;
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
843 Lisp_Object tem;
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
844
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
845 /* Save and restore this--we are altering a buffer
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
846 but we don't want to deactivate the mark just for that.
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
847 No need for specbind, since errors deactivate the mark. */
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
848 tem = Vdeactivate_mark;
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
849 GCPRO2 (object, tem);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851 printcharfun = Vprin1_to_string_buffer;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853 print_depth = 0;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
854 print (object, printcharfun, NILP (noescape));
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 /* Make Vprin1_to_string_buffer be the default buffer after PRINTFINSH */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
858 object = Fbuffer_string ();
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
860 Ferase_buffer ();
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 set_buffer_internal (old);
15270
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
862
22867e90511f (Fprin1_to_string): Preserve Vdeactivate_mark.
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
863 Vdeactivate_mark = tem;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
866 return object;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 DEFUN ("princ", Fprinc, Sprinc, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 "Output the printed representation of OBJECT, any Lisp object.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 No quoting characters are used; no delimiters are printed around\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 the contents of strings.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
873 Output stream is PRINTCHARFUN, or value of standard-output (which see).")
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
874 (object, printcharfun)
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
875 Lisp_Object object, printcharfun;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
877 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
879 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 printcharfun = Vstandard_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
882 print_depth = 0;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
883 print (object, printcharfun, 0);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 PRINTFINISH;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
885 return object;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 DEFUN ("print", Fprint, Sprint, 1, 2, 0,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
889 "Output the printed representation of OBJECT, with newlines around it.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 Quoting characters are printed when needed to make output that `read'\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891 can handle, whenever this is possible.\n\
7185
3d155f671ac2 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 6808
diff changeset
892 Output stream is PRINTCHARFUN, or value of `standard-output' (which see).")
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
893 (object, printcharfun)
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
894 Lisp_Object object, printcharfun;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 {
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
896 PRINTDECLARE;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897 struct gcpro gcpro1;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
900 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 max_print = MAX_PRINT_CHARS;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 #endif /* MAX_PRINT_CHARS */
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
903 if (NILP (printcharfun))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 printcharfun = Vstandard_output;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
905 GCPRO1 (object);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 PRINTPREPARE;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
907 print_depth = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 PRINTCHAR ('\n');
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
909 print (object, printcharfun, 1);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 PRINTFINISH;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 max_print = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 UNGCPRO;
14084
8765a56417ac (Fwrite_char, Fprin1, Fprin1_to_string, Fprinc, Fprint): Harmonize
Erik Naggum <erik@naggum.no>
parents: 14036
diff changeset
917 return object;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 /* The subroutine object for external-debugging-output is kept here
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 for the convenience of the debugger. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 Lisp_Object Qexternal_debugging_output;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
924 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
925 "Write CHARACTER to stderr.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926 You can call print while debugging emacs, and pass it this function\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 to make it write to the debugging output.\n")
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
928 (character)
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 520
diff changeset
929 Lisp_Object character;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 CHECK_NUMBER (character, 0);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 putc (XINT (character), stderr);
19882
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
933
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
934 #ifdef WINDOWSNT
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
935 /* Send the output to a debugger (nothing happens if there isn't one). */
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
936 {
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
937 char buf[2] = {(char) XINT (character), '\0'};
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
938 OutputDebugString (buf);
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
939 }
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
940 #endif
b6aaf1f70676 (Fexternal_debugging_output): On Windows output to debugger.
Richard M. Stallman <rms@gnu.org>
parents: 19001
diff changeset
941
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
942 return character;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 }
6533
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
944
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
945 /* This is the interface for debugging printing. */
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
946
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
947 void
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
948 debug_print (arg)
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
949 Lisp_Object arg;
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
950 {
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
951 Fprin1 (arg, Qexternal_debugging_output);
13456
b66f0626addb (debug_print): Explicitly print a CR.
Richard M. Stallman <rms@gnu.org>
parents: 13405
diff changeset
952 fprintf (stderr, "\r\n");
6533
49f896769be4 (debug_print): New function.
Richard M. Stallman <rms@gnu.org>
parents: 5852
diff changeset
953 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954
13776
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
955 DEFUN ("error-message-string", Ferror_message_string, Serror_message_string,
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
956 1, 1, 0,
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
957 "Convert an error value (ERROR-SYMBOL . DATA) to an error message.")
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
958 (obj)
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
959 Lisp_Object obj;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
960 {
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
961 struct buffer *old = current_buffer;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
962 Lisp_Object original, printcharfun, value;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
963 struct gcpro gcpro1;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
964
18342
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
965 /* If OBJ is (error STRING), just return STRING.
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
966 That is not only faster, it also avoids the need to allocate
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
967 space here when the error is due to memory full. */
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
968 if (CONSP (obj) && EQ (XCONS (obj)->car, Qerror)
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
969 && CONSP (XCONS (obj)->cdr)
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
970 && STRINGP (XCONS (XCONS (obj)->cdr)->car)
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
971 && NILP (XCONS (XCONS (obj)->cdr)->cdr))
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
972 return XCONS (XCONS (obj)->cdr)->car;
913d2cc5a6aa (Ferror_message_string): Optimize (error STRING) case.
Richard M. Stallman <rms@gnu.org>
parents: 17509
diff changeset
973
20303
13efdf0fe96e (printchar): Declare `work' as unsigned char.
Andreas Schwab <schwab@suse.de>
parents: 20200
diff changeset
974 print_error_message (obj, Vprin1_to_string_buffer);
13776
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
975
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
976 set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
977 value = Fbuffer_string ();
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
978
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
979 GCPRO1 (value);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
980 Ferase_buffer ();
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
981 set_buffer_internal (old);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
982 UNGCPRO;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
983
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
984 return value;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
985 }
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
986
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
987 /* Print an error message for the error DATA
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
988 onto Lisp output stream STREAM (suitable for the print functions). */
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
989
20303
13efdf0fe96e (printchar): Declare `work' as unsigned char.
Andreas Schwab <schwab@suse.de>
parents: 20200
diff changeset
990 void
13776
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
991 print_error_message (data, stream)
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
992 Lisp_Object data, stream;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
993 {
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
994 Lisp_Object errname, errmsg, file_error, tail;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
995 struct gcpro gcpro1;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
996 int i;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
997
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
998 errname = Fcar (data);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
999
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1000 if (EQ (errname, Qerror))
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1001 {
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1002 data = Fcdr (data);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1003 if (!CONSP (data)) data = Qnil;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1004 errmsg = Fcar (data);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1005 file_error = Qnil;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1006 }
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1007 else
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1008 {
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1009 errmsg = Fget (errname, Qerror_message);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1010 file_error = Fmemq (Qfile_error,
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1011 Fget (errname, Qerror_conditions));
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1012 }
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1013
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1014 /* Print an error message including the data items. */
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1015
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1016 tail = Fcdr_safe (data);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1017 GCPRO1 (tail);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1018
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1019 /* For file-error, make error message by concatenating
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1020 all the data items. They are all strings. */
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1021 if (!NILP (file_error) && !NILP (tail))
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1022 errmsg = XCONS (tail)->car, tail = XCONS (tail)->cdr;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1023
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1024 if (STRINGP (errmsg))
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1025 Fprinc (errmsg, stream);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1026 else
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1027 write_string_1 ("peculiar error", -1, stream);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1028
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1029 for (i = 0; CONSP (tail); tail = Fcdr (tail), i++)
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1030 {
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1031 write_string_1 (i ? ", " : ": ", 2, stream);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1032 if (!NILP (file_error))
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1033 Fprinc (Fcar (tail), stream);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1034 else
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1035 Fprin1 (Fcar (tail), stream);
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1036 }
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1037 UNGCPRO;
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1038 }
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1039
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1040 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1041
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 /*
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1043 * The buffer should be at least as large as the max string size of the
14036
621a575db6f7 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13861
diff changeset
1044 * largest float, printed in the biggest notation. This is undoubtedly
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1045 * 20d float_output_format, with the negative of the C-constant "HUGE"
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 * from <math.h>.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 * 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
1049 *
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1050 * 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
1051 * 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
1052 * re-writing _doprnt to be more sane)?
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 * -wsr
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1054 */
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1055
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1056 void
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1057 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
1058 unsigned char *buf;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 double data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1060 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1061 unsigned char *cp;
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
1062 int width;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1063
20816
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1064 /* Check for plus infinity in a way that won't lose
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1065 if there is no plus infinity. */
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1066 if (data == data / 2 && data > 1.0)
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1067 {
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1068 strcpy (buf, "1.0e+INF");
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1069 return;
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1070 }
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1071 /* Likewise for minus infinity. */
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1072 if (data == data / 2 && data < -1.0)
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1073 {
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1074 strcpy (buf, "-1.0e+INF");
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1075 return;
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1076 }
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1077 /* Check for NaN in a way that won't fail if there are no NaNs. */
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1078 if (! (data * 0.0 >= 0.0))
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1079 {
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1080 strcpy (buf, "0.0e+NaN");
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1081 return;
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1082 }
6397d7a97277 (float_to_string): Handle infinities and NaN specially.
Richard M. Stallman <rms@gnu.org>
parents: 20706
diff changeset
1083
520
2851ef574f20 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 430
diff changeset
1084 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
1085 || !STRINGP (Vfloat_output_format))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1086 lose:
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
1087 {
20121
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1088 /* Generate the fewest number of digits that represent the
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1089 floating point value without losing information.
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1090 The following method is simple but a bit slow.
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1091 For ideas about speeding things up, please see:
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1092
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1093 Guy L Steele Jr & Jon L White, How to print floating-point numbers
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1094 accurately. SIGPLAN notices 25, 6 (June 1990), 112-126.
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1095
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1096 Robert G Burger & R Kent Dybvig, Printing floating point numbers
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1097 quickly and accurately, SIGPLAN notices 31, 5 (May 1996), 108-116. */
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1098
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1099 width = fabs (data) < DBL_MIN ? 1 : DBL_DIG;
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1100 do
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1101 sprintf (buf, "%.*g", width, data);
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1102 while (width++ < DOUBLE_DIGITS_BOUND && atof (buf) != data);
4224
6cb1cfba6500 (float_to_string): Don't use uninitialized pointer `cp'.
Richard M. Stallman <rms@gnu.org>
parents: 4140
diff changeset
1103 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1104 else /* oink oink */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1106 /* Check that the spec we have is fully valid.
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1107 This means not only valid for printf,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 but meant for floats, and reasonable. */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 cp = XSTRING (Vfloat_output_format)->data;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 if (cp[0] != '%')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1112 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1113 if (cp[1] != '.')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1115
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1116 cp += 2;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1117
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1118 /* 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
1119 width = -1;
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1120 if ('0' <= *cp && *cp <= '9')
11798
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1121 {
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1122 width = 0;
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1123 do
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1124 width = (width * 10) + (*cp++ - '0');
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1125 while (*cp >= '0' && *cp <= '9');
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1126
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1127 /* 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
1128 if (width > DBL_DIG
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1129 || (width == 0 && *cp != 'f'))
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1130 goto lose;
7646040d7383 (float_to_string): Fix type mismatch and simplify.
Karl Heuer <kwzh@gnu.org>
parents: 11697
diff changeset
1131 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1132
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1133 if (*cp != 'e' && *cp != 'f' && *cp != 'g')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1134 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1136 if (cp[1] != 0)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 goto lose;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1138
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1139 sprintf (buf, XSTRING (Vfloat_output_format)->data, data);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1141
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1142 /* 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
1143 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
1144 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
1145 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
1146 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
1147 {
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1148 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
1149 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
1150 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
1151
4140
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1152 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
1153 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1154 cp[1] = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1155 cp[2] = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1156 }
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1157
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1158 if (*cp == 0)
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1159 {
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1160 *cp++ = '.';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1161 *cp++ = '0';
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1162 *cp++ = 0;
2738089e8383 * print.c (float_to_string): Distinguish between a precision of
Jim Blandy <jimb@redhat.com>
parents: 4003
diff changeset
1163 }
1759
3c615a9dcd64 (float_to_string): Add `.0' at end if needed.
Richard M. Stallman <rms@gnu.org>
parents: 1521
diff changeset
1164 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1165 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1166 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1167
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1168 static void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1169 print (obj, printcharfun, escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1170 Lisp_Object obj;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1171 register Lisp_Object printcharfun;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1172 int escapeflag;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1173 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1174 char buf[30];
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1175
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 QUIT;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1178 #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
1179 /* Detect circularities and truncate them.
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1180 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
1181 if (CONSP (obj) || VECTORP (obj) || COMPILEDP (obj))
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1182 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1183 int i;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1184 for (i = 0; i < print_depth; i++)
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1185 if (EQ (obj, being_printed[i]))
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1186 {
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1187 sprintf (buf, "#%d", i);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1188 strout (buf, -1, -1, printcharfun, 0);
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1189 return;
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1190 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1191 }
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1192 #endif
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1193
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1194 being_printed[print_depth] = obj;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1195 print_depth++;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1196
379
34ec8957c6c0 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 373
diff changeset
1197 if (print_depth > PRINT_CIRCLE)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1198 error ("Apparently circular structure being printed");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1199 #ifdef MAX_PRINT_CHARS
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1200 if (max_print && print_chars > max_print)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1201 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1202 PRINTCHAR ('\n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1203 print_chars = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1204 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1205 #endif /* MAX_PRINT_CHARS */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1206
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1207 switch (XGCTYPE (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1208 {
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1209 case Lisp_Int:
11697
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
1210 if (sizeof (int) == sizeof (EMACS_INT))
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
1211 sprintf (buf, "%d", XINT (obj));
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
1212 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
1213 sprintf (buf, "%ld", XINT (obj));
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
1214 else
2de5b0c89802 (print): Make the printing understand EMACS_INTs
Richard M. Stallman <rms@gnu.org>
parents: 11341
diff changeset
1215 abort ();
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1216 strout (buf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1217 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1218
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1219 #ifdef LISP_FLOAT_TYPE
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1220 case Lisp_Float:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1221 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1222 char pigbuf[350]; /* see comments in float_to_string */
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1224 float_to_string (pigbuf, XFLOAT(obj)->data);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1225 strout (pigbuf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1226 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1227 break;
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1228 #endif
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1229
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1230 case Lisp_String:
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 if (!escapeflag)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232 print_string (obj, printcharfun);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1233 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1234 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1235 register int i, i_byte;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1236 register unsigned char c;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 struct gcpro gcpro1;
22183
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1238 unsigned char *str;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1239 int size_byte;
21373
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1240 /* 1 means we must ensure that the next character we output
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1241 cannot be taken as part of a hex character escape. */
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1242 int need_nonhex = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1244 GCPRO1 (obj);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1245
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1246 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1247 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1248 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1249 PRINTCHAR ('#');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1250 PRINTCHAR ('(');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1251 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1252 #endif
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1253
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 PRINTCHAR ('\"');
22183
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1255 str = XSTRING (obj)->data;
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 21142
diff changeset
1256 size_byte = STRING_BYTES (XSTRING (obj));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1257
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1258 for (i = 0, i_byte = 0; i_byte < size_byte;)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1259 {
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1260 /* Here, we must convert each multi-byte form to the
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1261 corresponding character code before handing it to PRINTCHAR. */
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1262 int len;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1263 int c;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1264
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1265 if (STRING_MULTIBYTE (obj))
22183
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1266 {
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1267 c = STRING_CHAR_AND_CHAR_LENGTH (str + i_byte,
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1268 size_byte - i_byte, len);
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1269 i_byte += len;
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1270 }
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1271 else
22183
3eedfddbbadd (print_string): Don't ignore garbage bytes following a
Kenichi Handa <handa@m17n.org>
parents: 21514
diff changeset
1272 c = str[i_byte++];
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1273
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 QUIT;
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1275
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 if (c == '\n' && print_escape_newlines)
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279 PRINTCHAR ('n');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 }
5852
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
1281 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
1282 {
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
1283 PRINTCHAR ('\\');
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
1284 PRINTCHAR ('f');
f2e341b1f908 (print): If print_escapes_newlines, print '\f' as "\\f".
Roland McGrath <roland@gnu.org>
parents: 5487
diff changeset
1285 }
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1286 else if (! SINGLE_BYTE_CHAR_P (c) && print_escape_multibyte)
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1287 {
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1288 /* When multibyte is disabled,
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1289 print multibyte string chars using hex escapes. */
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1290 unsigned char outbuf[50];
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1291 sprintf (outbuf, "\\x%x", c);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1292 strout (outbuf, -1, -1, printcharfun, 0);
21373
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1293 need_nonhex = 1;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1294 }
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1295 else if (SINGLE_BYTE_CHAR_P (c) && ! ASCII_BYTE_P (c)
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1296 && print_escape_nonascii)
20670
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1297 {
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1298 /* When printing in a multibyte buffer
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1299 or when explicitly requested,
20670
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1300 print single-byte non-ASCII string chars
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1301 using octal escapes. */
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1302 unsigned char outbuf[5];
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1303 sprintf (outbuf, "\\%03o", c);
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1304 strout (outbuf, -1, -1, printcharfun, 0);
b818d996d923 (print) <Lisp_String>: When multibyte is enabled, print
Karl Heuer <kwzh@gnu.org>
parents: 20591
diff changeset
1305 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 else
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307 {
21373
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1308 /* If we just had a hex escape, and this character
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1309 could be taken as part of it,
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1310 output `\ ' to prevent that. */
21480
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1311 if (need_nonhex)
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1312 {
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1313 need_nonhex = 0;
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1314 if ((c >= 'a' && c <= 'f')
21373
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1315 || (c >= 'A' && c <= 'F')
21480
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1316 || (c >= '0' && c <= '9'))
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1317 strout ("\\ ", -1, -1, printcharfun, 0);
20aab049dc4a (print) <Lisp_String>: Fix "\ " handling.
Karl Heuer <kwzh@gnu.org>
parents: 21455
diff changeset
1318 }
21373
e53943cd93b2 (print) <Lisp_String>: Follow a hex escape with `\ ' if nec.
Richard M. Stallman <rms@gnu.org>
parents: 21250
diff changeset
1319
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 if (c == '\"' || c == '\\')
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 PRINTCHAR ('\\');
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 PRINTCHAR (c);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 PRINTCHAR ('\"');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1326
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1327 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1328 if (!NULL_INTERVAL_P (XSTRING (obj)->intervals))
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1329 {
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1330 traverse_intervals (XSTRING (obj)->intervals,
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1331 0, 0, print_interval, printcharfun);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1332 PRINTCHAR (')');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1333 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1334 #endif
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1335
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 UNGCPRO;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1338 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1339
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1340 case Lisp_Symbol:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1341 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1342 register int confusing;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1343 register unsigned char *p = XSYMBOL (obj)->name->data;
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 21142
diff changeset
1344 register unsigned char *end = p + STRING_BYTES (XSYMBOL (obj)->name);
20862
f4efe8aa6133 (print): Declare local variable C as `int' instead of
Richard M. Stallman <rms@gnu.org>
parents: 20816
diff changeset
1345 register int c;
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1346 int i, i_byte, size_byte;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1347 Lisp_Object name;
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1348
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1349 XSETSTRING (name, XSYMBOL (obj)->name);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1350
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1351 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
1352 if (p == end)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1353 confusing = 0;
17509
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1354 /* If symbol name begins with a digit, and ends with a digit,
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1355 and contains nothing but digits and `e', it could be treated
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1356 as a number. So set CONFUSING.
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1357
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1358 Symbols that contain periods could also be taken as numbers,
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1359 but periods are always escaped, so we don't have to worry
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1360 about them here. */
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1361 else if (*p >= '0' && *p <= '9'
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1362 && end[-1] >= '0' && end[-1] <= '9')
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1363 {
17223
ed068c0c1648 (print): Generate a backslash in \2e10.
Richard M. Stallman <rms@gnu.org>
parents: 17040
diff changeset
1364 while (p != end && ((*p >= '0' && *p <= '9')
ed068c0c1648 (print): Generate a backslash in \2e10.
Richard M. Stallman <rms@gnu.org>
parents: 17040
diff changeset
1365 /* Needed for \2e10. */
ed068c0c1648 (print): Generate a backslash in \2e10.
Richard M. Stallman <rms@gnu.org>
parents: 17040
diff changeset
1366 || *p == 'e'))
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1367 p++;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1368 confusing = (end == p);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1369 }
17509
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1370 else
0c38918fbf13 (print): Symbols like e2 and 2e are not confusing.
Richard M. Stallman <rms@gnu.org>
parents: 17325
diff changeset
1371 confusing = 0;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1373 /* If we print an uninterned symbol as part of a complex object and
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1374 the flag print-gensym is non-nil, prefix it with #n= to read the
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1375 object back with the #n# reader syntax later if needed. */
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1376 if (! NILP (Vprint_gensym) && NILP (XSYMBOL (obj)->obarray))
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1377 {
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1378 if (print_depth > 1)
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1379 {
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1380 Lisp_Object tem;
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1381 tem = Fassq (obj, Vprint_gensym_alist);
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1382 if (CONSP (tem))
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1383 {
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1384 PRINTCHAR ('#');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1385 print (XCDR (tem), printcharfun, escapeflag);
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1386 PRINTCHAR ('#');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1387 break;
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1388 }
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1389 else
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1390 {
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1391 if (CONSP (Vprint_gensym_alist))
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1392 XSETFASTINT (tem, XFASTINT (XCDR (XCAR (Vprint_gensym_alist))) + 1);
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1393 else
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1394 XSETFASTINT (tem, 1);
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1395 Vprint_gensym_alist = Fcons (Fcons (obj, tem), Vprint_gensym_alist);
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1396
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1397 PRINTCHAR ('#');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1398 print (tem, printcharfun, escapeflag);
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1399 PRINTCHAR ('=');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1400 }
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1401 }
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1402 PRINTCHAR ('#');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1403 PRINTCHAR (':');
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1404 }
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1405
21244
50929073a0ba Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents: 21142
diff changeset
1406 size_byte = STRING_BYTES (XSTRING (name));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1407
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1408 for (i = 0, i_byte = 0; i_byte < size_byte;)
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1409 {
20549
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1410 /* Here, we must convert each multi-byte form to the
ba676f083e7c (PRINTDECLARE): Declare old_point_byte and start_point_byte.
Richard M. Stallman <rms@gnu.org>
parents: 20377
diff changeset
1411 corresponding character code before handing it to PRINTCHAR. */
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1412
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1413 if (STRING_MULTIBYTE (name))
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1414 FETCH_STRING_CHAR_ADVANCE (c, name, i, i_byte);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1415 else
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1416 c = XSTRING (name)->data[i_byte++];
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1417
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1418 QUIT;
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1419
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1420 if (escapeflag)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1421 {
16496
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1422 if (c == '\"' || c == '\\' || c == '\''
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1423 || c == ';' || c == '#' || c == '(' || c == ')'
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1424 || c == ',' || c =='.' || c == '`'
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1425 || c == '[' || c == ']' || c == '?' || c <= 040
a4e5a8ee32cc (printchar, strout): Do QUIT for echo area output.
Richard M. Stallman <rms@gnu.org>
parents: 16140
diff changeset
1426 || confusing)
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1427 PRINTCHAR ('\\'), confusing = 0;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1428 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1429 PRINTCHAR (c);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1430 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1431 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1432 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1433
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1434 case Lisp_Cons:
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1435 /* 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
1436 if (INTEGERP (Vprint_level)
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1437 && print_depth > XINT (Vprint_level))
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1438 strout ("...", -1, -1, printcharfun, 0);
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1439 else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1440 && (EQ (XCAR (obj), Qquote)))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1441 {
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1442 PRINTCHAR ('\'');
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1443 print (XCAR (XCDR (obj)), printcharfun, escapeflag);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1444 }
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1445 else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1446 && (EQ (XCAR (obj), Qfunction)))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1447 {
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1448 PRINTCHAR ('#');
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1449 PRINTCHAR ('\'');
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1450 print (XCAR (XCDR (obj)), printcharfun, escapeflag);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1451 }
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1452 else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1453 && ((EQ (XCAR (obj), Qbackquote)
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1454 || EQ (XCAR (obj), Qcomma)
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1455 || EQ (XCAR (obj), Qcomma_at)
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1456 || EQ (XCAR (obj), Qcomma_dot))))
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1457 {
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1458 print (XCAR (obj), printcharfun, 0);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1459 print (XCAR (XCDR (obj)), printcharfun, escapeflag);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1460 }
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1461 else
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1462 {
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1463 PRINTCHAR ('(');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1464 {
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1465 register int i = 0;
21455
4a457fda49b5 * print.c (print): Avoid `min'/`max' as variable names.
Karl Heuer <kwzh@gnu.org>
parents: 21373
diff changeset
1466 register int print_length = 0;
22231
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1467 Lisp_Object halftail = obj;
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1468
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1469 if (INTEGERP (Vprint_length))
21455
4a457fda49b5 * print.c (print): Avoid `min'/`max' as variable names.
Karl Heuer <kwzh@gnu.org>
parents: 21373
diff changeset
1470 print_length = XINT (Vprint_length);
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1471 while (CONSP (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1472 {
22231
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1473 /* Detect circular list. */
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1474 if (i != 0 && EQ (obj, halftail))
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1475 {
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1476 sprintf (buf, " . #%d", i / 2);
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1477 strout (buf, -1, -1, printcharfun, 0);
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1478 obj = Qnil;
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1479 break;
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1480 }
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1481 if (i++)
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1482 PRINTCHAR (' ');
21455
4a457fda49b5 * print.c (print): Avoid `min'/`max' as variable names.
Karl Heuer <kwzh@gnu.org>
parents: 21373
diff changeset
1483 if (print_length && i > print_length)
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1484 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1485 strout ("...", 3, 3, printcharfun, 0);
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1486 break;
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1487 }
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1488 print (XCAR (obj), printcharfun, escapeflag);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1489 obj = XCDR (obj);
22231
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1490 if (!(i & 1))
35af9a276272 (print) <Lisp_Cons>: Detect circular list.
Richard M. Stallman <rms@gnu.org>
parents: 22183
diff changeset
1491 halftail = XCDR (halftail);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1492 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1493 }
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1494 if (!NILP (obj))
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1495 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1496 strout (" . ", 3, 3, printcharfun, 0);
10001
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1497 print (obj, printcharfun, escapeflag);
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1498 }
d615506e81be (print): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9923
diff changeset
1499 PRINTCHAR (')');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1501 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1502
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1503 case Lisp_Vectorlike:
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1504 if (PROCESSP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1505 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1506 if (escapeflag)
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1507 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1508 strout ("#<process ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1509 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
1510 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1511 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1512 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1513 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
1514 }
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1515 else if (BOOL_VECTOR_P (obj))
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1516 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1517 register int i;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1518 register unsigned char c;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1519 struct gcpro gcpro1;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1520 int size_in_chars
16893
5889a6e7c71b (print): Round size of bool-vector properly.
Richard M. Stallman <rms@gnu.org>
parents: 16520
diff changeset
1521 = (XBOOL_VECTOR (obj)->size + BITS_PER_CHAR - 1) / BITS_PER_CHAR;
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1522
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1523 GCPRO1 (obj);
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1524
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1525 PRINTCHAR ('#');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1526 PRINTCHAR ('&');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1527 sprintf (buf, "%d", XBOOL_VECTOR (obj)->size);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1528 strout (buf, -1, -1, printcharfun, 0);
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1529 PRINTCHAR ('\"');
15563
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1530
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1531 /* Don't print more characters than the specified maximum. */
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1532 if (INTEGERP (Vprint_length)
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1533 && XINT (Vprint_length) < size_in_chars)
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1534 size_in_chars = XINT (Vprint_length);
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1535
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1536 for (i = 0; i < size_in_chars; i++)
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1537 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1538 QUIT;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1539 c = XBOOL_VECTOR (obj)->data[i];
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1540 if (c == '\n' && print_escape_newlines)
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1541 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1542 PRINTCHAR ('\\');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1543 PRINTCHAR ('n');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1544 }
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1545 else if (c == '\f' && print_escape_newlines)
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1546 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1547 PRINTCHAR ('\\');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1548 PRINTCHAR ('f');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1549 }
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1550 else
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1551 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1552 if (c == '\"' || c == '\\')
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1553 PRINTCHAR ('\\');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1554 PRINTCHAR (c);
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1555 }
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1556 }
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1557 PRINTCHAR ('\"');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1558
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1559 UNGCPRO;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1560 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1561 else if (SUBRP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1562 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1563 strout ("#<subr ", -1, -1, printcharfun, 0);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1564 strout (XSUBR (obj)->symbol_name, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1565 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1566 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1567 #ifndef standalone
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1568 else if (WINDOWP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1569 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1570 strout ("#<window ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1571 sprintf (buf, "%d", XFASTINT (XWINDOW (obj)->sequence_number));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1572 strout (buf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1573 if (!NILP (XWINDOW (obj)->buffer))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1574 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1575 strout (" on ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1576 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
1577 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1578 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1579 }
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1580 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
1581 {
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1582 if (NILP (XBUFFER (obj)->name))
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1583 strout ("#<killed buffer>", -1, -1, printcharfun, 0);
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1584 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
1585 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1586 strout ("#<buffer ", -1, -1, printcharfun, 0);
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1587 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
1588 PRINTCHAR ('>');
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1589 }
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1590 else
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1591 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
1592 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1593 else if (WINDOW_CONFIGURATIONP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1594 {
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1595 strout ("#<window-configuration>", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1596 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1597 else if (FRAMEP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1598 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1599 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
1600 ? "#<frame " : "#<dead frame "),
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1601 -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1602 print_string (XFRAME (obj)->name, printcharfun);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1603 sprintf (buf, " 0x%lx\\ ", (unsigned long) (XFRAME (obj)));
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1604 strout (buf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1605 PRINTCHAR ('>');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1606 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1607 #endif /* not standalone */
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1608 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1609 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1610 int size = XVECTOR (obj)->size;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1611 if (COMPILEDP (obj))
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1612 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1613 PRINTCHAR ('#');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1614 size &= PSEUDOVECTOR_SIZE_MASK;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1615 }
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1616 if (CHAR_TABLE_P (obj))
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1617 {
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1618 /* We print a char-table as if it were a vector,
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1619 lumping the parent and default slots in with the
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1620 character slots. But we add #^ as a prefix. */
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1621 PRINTCHAR ('#');
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1622 PRINTCHAR ('^');
17325
c19c552c486f (read1): Adjusted for the new structure of Lisp_Char_Table.
Kenichi Handa <handa@m17n.org>
parents: 17223
diff changeset
1623 if (SUB_CHAR_TABLE_P (obj))
c19c552c486f (read1): Adjusted for the new structure of Lisp_Char_Table.
Kenichi Handa <handa@m17n.org>
parents: 17223
diff changeset
1624 PRINTCHAR ('^');
13147
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1625 size &= PSEUDOVECTOR_SIZE_MASK;
bd9ff4ee6cd4 (print): Handle chartables and boolvectors.
Richard M. Stallman <rms@gnu.org>
parents: 12782
diff changeset
1626 }
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1627 if (size & PSEUDOVECTOR_FLAG)
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1628 goto badtype;
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1629
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1630 PRINTCHAR ('[');
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1631 {
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1632 register int i;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1633 register Lisp_Object tem;
15563
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1634
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1635 /* Don't print more elements than the specified maximum. */
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1636 if (INTEGERP (Vprint_length)
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1637 && XINT (Vprint_length) < size)
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1638 size = XINT (Vprint_length);
e47df82909ff (print): Obey Vprint_length for vectors, bitvectors.
Richard M. Stallman <rms@gnu.org>
parents: 15270
diff changeset
1639
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1640 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
1641 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1642 if (i) PRINTCHAR (' ');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1643 tem = XVECTOR (obj)->contents[i];
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1644 print (tem, printcharfun, escapeflag);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1645 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1646 }
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1647 PRINTCHAR (']');
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1648 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1649 break;
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1650
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1651 #ifndef standalone
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1652 case Lisp_Misc:
11241
5fed07fb66fb (print): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1653 switch (XMISCTYPE (obj))
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1654 {
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1655 case Lisp_Misc_Marker:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1656 strout ("#<marker ", -1, -1, printcharfun, 0);
17040
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
1657 /* Do you think this is necessary? */
74d21e4a28f9 Include charset.h.
Karl Heuer <kwzh@gnu.org>
parents: 16893
diff changeset
1658 if (XMARKER (obj)->insertion_type != 0)
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1659 strout ("(before-insertion) ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1660 if (!(XMARKER (obj)->buffer))
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1661 strout ("in no buffer", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1662 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1663 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1664 sprintf (buf, "at %d", marker_position (obj));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1665 strout (buf, -1, -1, printcharfun, 0);
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1666 strout (" in ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1667 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
1668 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1669 PRINTCHAR ('>');
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1670 break;
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1671
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1672 case Lisp_Misc_Overlay:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1673 strout ("#<overlay ", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1674 if (!(XMARKER (OVERLAY_START (obj))->buffer))
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1675 strout ("in no buffer", -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1676 else
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1677 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1678 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
1679 marker_position (OVERLAY_START (obj)),
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1680 marker_position (OVERLAY_END (obj)));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1681 strout (buf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1682 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
1683 printcharfun);
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1684 }
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1685 PRINTCHAR ('>');
10301
aa73a5c0d1f2 (print): Don't drop thru to error for markers and overlays.
Richard M. Stallman <rms@gnu.org>
parents: 10293
diff changeset
1686 break;
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1687
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1688 /* 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
1689 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
1690 case Lisp_Misc_Free:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1691 strout ("#<misc free cell>", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1692 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1693
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1694 case Lisp_Misc_Intfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1695 sprintf (buf, "#<intfwd to %d>", *XINTFWD (obj)->intvar);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1696 strout (buf, -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1697 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1698
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1699 case Lisp_Misc_Boolfwd:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1700 sprintf (buf, "#<boolfwd to %s>",
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1701 (*XBOOLFWD (obj)->boolvar ? "t" : "nil"));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1702 strout (buf, -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1703 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1704
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1705 case Lisp_Misc_Objfwd:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1706 strout ("#<objfwd to ", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1707 print (*XOBJFWD (obj)->objvar, printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1708 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1709 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1710
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1711 case Lisp_Misc_Buffer_Objfwd:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1712 strout ("#<buffer_objfwd to ", -1, -1, printcharfun, 0);
10583
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1713 print (*(Lisp_Object *)((char *)current_buffer
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1714 + XBUFFER_OBJFWD (obj)->offset),
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1715 printcharfun, escapeflag);
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1716 PRINTCHAR ('>');
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1717 break;
6736693cb8c8 (print): Handle internal display-local object.
Karl Heuer <kwzh@gnu.org>
parents: 10568
diff changeset
1718
11010
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1719 case Lisp_Misc_Kboard_Objfwd:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1720 strout ("#<kboard_objfwd to ", -1, -1, printcharfun, 0);
11010
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1721 print (*(Lisp_Object *)((char *) current_kboard
45ae0022c48a (print): Rename perdisplay to kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10993
diff changeset
1722 + XKBOARD_OBJFWD (obj)->offset),
10993
e72bd65cab70 (print): current_perdisplay now is never null.
Karl Heuer <kwzh@gnu.org>
parents: 10651
diff changeset
1723 printcharfun, escapeflag);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1724 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1725 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1726
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1727 case Lisp_Misc_Buffer_Local_Value:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1728 strout ("#<buffer_local_value ", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1729 goto do_buffer_local;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1730 case Lisp_Misc_Some_Buffer_Local_Value:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1731 strout ("#<some_buffer_local_value ", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1732 do_buffer_local:
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1733 strout ("[realvalue] ", -1, -1, printcharfun, 0);
21142
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1734 print (XBUFFER_LOCAL_VALUE (obj)->realvalue, printcharfun, escapeflag);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1735 if (XBUFFER_LOCAL_VALUE (obj)->found_for_buffer)
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1736 strout ("[local in buffer] ", -1, -1, printcharfun, 0);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1737 else
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1738 strout ("[buffer] ", -1, -1, printcharfun, 0);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1739 print (XBUFFER_LOCAL_VALUE (obj)->buffer,
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1740 printcharfun, escapeflag);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1741 if (XBUFFER_LOCAL_VALUE (obj)->check_frame)
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1742 {
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1743 if (XBUFFER_LOCAL_VALUE (obj)->found_for_frame)
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1744 strout ("[local in frame] ", -1, -1, printcharfun, 0);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1745 else
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1746 strout ("[frame] ", -1, -1, printcharfun, 0);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1747 print (XBUFFER_LOCAL_VALUE (obj)->frame,
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1748 printcharfun, escapeflag);
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1749 }
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1750 strout ("[alist-elt] ", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1751 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
1752 printcharfun, escapeflag);
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1753 strout ("[default-value] ", -1, -1, printcharfun, 0);
21142
77b24424ae6b (print): Handle new data structure
Richard M. Stallman <rms@gnu.org>
parents: 20888
diff changeset
1754 print (XCONS (XBUFFER_LOCAL_VALUE (obj)->cdr)->cdr,
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1755 printcharfun, escapeflag);
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1756 PRINTCHAR ('>');
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1757 break;
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1758
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1759 default:
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1760 goto badtype;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1761 }
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1762 break;
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1763 #endif /* standalone */
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1764
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1765 default:
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1766 badtype:
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1767 {
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1768 /* 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
1769 Probably should just abort () */
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1770 strout ("#<EMACS BUG: INVALID DATATYPE ", -1, -1, printcharfun, 0);
10482
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1771 if (MISCP (obj))
11241
5fed07fb66fb (print): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1772 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
1773 else if (VECTORLIKEP (obj))
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1774 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
1775 else
a15a058ec779 (print): Print internal types too, for debugging.
Karl Heuer <kwzh@gnu.org>
parents: 10418
diff changeset
1776 sprintf (buf, "(0x%02x)", (int) XTYPE (obj));
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1777 strout (buf, -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1778 strout (" Save your buffers immediately and please report this bug>",
20591
0b00b6a96288 (print_string): Now static.
Richard M. Stallman <rms@gnu.org>
parents: 20549
diff changeset
1779 -1, -1, printcharfun, 0);
10293
96cc5c0a7ada (print): Get size of compiled function as pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10001
diff changeset
1780 }
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1781 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1782
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 print_depth--;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 }
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1785
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1786 #ifdef USE_TEXT_PROPERTIES
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1787
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1788 /* Print a description of INTERVAL using PRINTCHARFUN.
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1789 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
1790
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1791 void
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1792 print_interval (interval, printcharfun)
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1793 INTERVAL interval;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1794 Lisp_Object printcharfun;
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1795 {
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
1796 PRINTCHAR (' ');
1967
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1797 print (make_number (interval->position), printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1798 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1799 print (make_number (interval->position + LENGTH (interval)),
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1800 printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1801 PRINTCHAR (' ');
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1802 print (interval->plist, printcharfun, 1);
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1803 }
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1804
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1805 #endif /* USE_TEXT_PROPERTIES */
239a8c1cb40f (print--string case):
Richard M. Stallman <rms@gnu.org>
parents: 1764
diff changeset
1806
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1807 void
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808 syms_of_print ()
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1809 {
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1810 DEFVAR_LISP ("standard-output", &Vstandard_output,
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1811 "Output stream `print' uses by default for outputting a character.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1812 This may be any function of one argument.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1813 It may also be a buffer (output is inserted before point)\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1814 or a marker (output is inserted and the marker is advanced)\n\
13776
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1815 or the symbol t (output appears in the echo area).");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1816 Vstandard_output = Qt;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1817 Qstandard_output = intern ("standard-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 staticpro (&Qstandard_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820 #ifdef LISP_FLOAT_TYPE
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 DEFVAR_LISP ("float-output-format", &Vfloat_output_format,
687
e2b747dd6a6e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 686
diff changeset
1822 "The format descriptor string used to print floats.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 This is a %-spec like those accepted by `printf' in C,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 but with some restrictions. It must start with the two characters `%.'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825 After that comes an integer precision specification,\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1826 and then a letter which controls the format.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827 The letters allowed are `e', `f' and `g'.\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 Use `e' for exponential notation \"DIG.DIGITSeEXPT\"\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 Use `f' for decimal point notation \"DIGITS.DIGITS\".\n\
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 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
1831 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
1832 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
1833 decimal point. 0 is not allowed with `e' or `g'.\n\n\
20121
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1834 A value of nil means to use the shortest notation\n\
1e352b03fd8a (_MAXLDBL, _NMAXLDBL):
Paul Eggert <eggert@twinsun.com>
parents: 20025
diff changeset
1835 that represents the number without losing information.");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1836 Vfloat_output_format = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1837 Qfloat_output_format = intern ("float-output-format");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1838 staticpro (&Qfloat_output_format);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1839 #endif /* LISP_FLOAT_TYPE */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1840
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1841 DEFVAR_LISP ("print-length", &Vprint_length,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1842 "Maximum length of list to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1843 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1844 Vprint_length = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1845
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1846 DEFVAR_LISP ("print-level", &Vprint_level,
686
bd3068742807 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 621
diff changeset
1847 "Maximum depth of list nesting to print before abbreviating.\n\
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1848 A value of nil means no limit.");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1849 Vprint_level = Qnil;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1850
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1851 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
1852 "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
1853 Also print formfeeds as backslash-f.");
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1854 print_escape_newlines = 0;
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1855
22240
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
1856 DEFVAR_BOOL ("print-escape-nonascii", &print_escape_nonascii,
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1857 "Non-nil means print unibyte non-ASCII chars in strings as \\OOO.\n\
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1858 \(OOO is the octal representation of the character code.)\n\
22243
ec7420aa37f3 (sms_of_print): Doc fix in prev change.
Richard M. Stallman <rms@gnu.org>
parents: 22240
diff changeset
1859 Only single-byte characters are affected, and only in `prin1'.");
22240
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
1860 print_escape_nonascii = 0;
4e4c377f3310 (print_escape_nonascii): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 22231
diff changeset
1861
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1862 DEFVAR_BOOL ("print-escape-multibyte", &print_escape_multibyte,
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1863 "Non-nil means print multibyte characters in strings as \\xXXXX.\n\
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1864 \(XXX is the hex representation of the character code.)\n\
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1865 This affects only `prin1'.");
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1866 print_escape_multibyte = 0;
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1867
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1868 DEFVAR_BOOL ("print-quoted", &print_quoted,
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1869 "Non-nil means print quoted forms with reader syntax.\n\
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1870 I.e., (quote foo) prints as 'foo, (function foo) as #'foo, and, backquoted\n\
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1871 forms print in the new syntax.");
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1872 print_quoted = 0;
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1873
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1874 DEFVAR_LISP ("print-gensym", &Vprint_gensym,
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1875 "Non-nil means print uninterned symbols so they will read as uninterned.\n\
20025
37e3d9d78ad7 (syms_of_print): Fix doc string of print-gensym.
Karl Heuer <kwzh@gnu.org>
parents: 19882
diff changeset
1876 I.e., the value of (make-symbol \"foobar\") prints as #:foobar.\n\
18961
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1877 When the uninterned symbol appears within a larger data structure,\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1878 in addition use the #...# and #...= constructs as needed,\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1879 so that multiple references to the same symbol are shared once again\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1880 when the text is read back.\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1881 \n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1882 If the value of `print-gensym' is a cons cell, then in addition refrain from\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1883 clearing `print-gensym-alist' on entry to and exit from printing functions,\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1884 so that the use of #...# and #...= can carry over for several separately\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1885 printed objects.");
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1886 Vprint_gensym = Qnil;
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1887
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1888 DEFVAR_LISP ("print-gensym-alist", &Vprint_gensym_alist,
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1889 "Association list of elements (GENSYM . N) to guide use of #N# and #N=.\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1890 In each element, GENSYM is an uninterned symbol that has been associated\n\
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1891 with #N= for the specified value of N.");
e537071624ee (Vprint_gensym_alist): Renamed from printed_gensyms.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
1892 Vprint_gensym_alist = Qnil;
16140
e7de214aac01 Add #n=object, #n#, and #:symbol constructs to printer.
Erik Naggum <erik@naggum.no>
parents: 16051
diff changeset
1893
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1894 /* prin1_to_string_buffer initialized in init_buffer_once in buffer.c */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1895 staticpro (&Vprin1_to_string_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1896
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1897 defsubr (&Sprin1);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1898 defsubr (&Sprin1_to_string);
13776
8160ed43603e (Ferror_message_string): New function.
Karl Heuer <kwzh@gnu.org>
parents: 13456
diff changeset
1899 defsubr (&Serror_message_string);
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1900 defsubr (&Sprinc);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 defsubr (&Sprint);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1902 defsubr (&Sterpri);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903 defsubr (&Swrite_char);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904 defsubr (&Sexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1906 Qexternal_debugging_output = intern ("external-debugging-output");
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1907 staticpro (&Qexternal_debugging_output);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1908
15908
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1909 Qprint_escape_newlines = intern ("print-escape-newlines");
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1910 staticpro (&Qprint_escape_newlines);
045bf20a0e7c (print-quoted): New variable.
Erik Naggum <erik@naggum.no>
parents: 15801
diff changeset
1911
22933
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1912 Qprint_escape_multibyte = intern ("print-escape-multibyte");
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1913 staticpro (&Qprint_escape_multibyte);
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1914
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1915 Qprint_escape_nonascii = intern ("print-escape-nonascii");
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1916 staticpro (&Qprint_escape_nonascii);
f85d55276ec5 (print_escape_multibyte, Qprint_escape_multibyte)
Richard M. Stallman <rms@gnu.org>
parents: 22605
diff changeset
1917
329
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1918 #ifndef standalone
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919 defsubr (&Swith_output_to_temp_buffer);
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 #endif /* not standalone */
52f53a69e5c4 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1921 }