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