Bump version to 24.2
[bpt/emacs.git] / src / .gdbinit
CommitLineData
acaf905b 1# Copyright (C) 1992-1998, 2000-2012 Free Software Foundation, Inc.
e3efab9c
GM
2#
3# This file is part of GNU Emacs.
4#
5# GNU Emacs is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
684d6f5b 7# the Free Software Foundation; either version 3, or (at your option)
e3efab9c
GM
8# any later version.
9#
10# GNU Emacs is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNU Emacs; see the file COPYING. If not, write to the
4fc5845f
LK
17# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18# Boston, MA 02110-1301, USA.
e3efab9c 19
7faa0236
RS
20# Force loading of symbols, enough to give us gdb_valbits etc.
21set main
2d4018aa
EZ
22# With some compilers, we need this to give us struct Lisp_Symbol etc.:
23set Fmake_symbol
7faa0236 24
39d10e52
RS
25# Find lwlib source files too.
26dir ../lwlib
892d8fcd 27#dir /gd/gnu/lesstif-0.89.9/lib/Xm
39d10e52 28
056515d8
KH
29# Don't enter GDB when user types C-g to quit.
30# This has one unfortunate effect: you can't type C-c
31# at the GDB to stop Emacs, when using X.
32# However, C-z works just as well in that case.
33handle 2 noprint pass
34
19b9d1de
NR
35# Make it work like SIGINT normally does.
36handle SIGTSTP nopass
37
6a7d16fe
KS
38# Pass on user signals
39handle SIGUSR1 noprint pass
40handle SIGUSR2 noprint pass
41
3266f62b
GM
42# Don't pass SIGALRM to Emacs. This makes problems when
43# debugging.
44handle SIGALRM ignore
45
0e73312b 46# $valmask and $tagmask are mask values set up by the xreload macro below.
6b61353c 47
0e73312b
RS
48# Use $bugfix so that the value isn't a constant.
49# Using a constant runs into GDB bugs sometimes.
6b61353c 50define xgetptr
0e73312b 51 set $bugfix = $arg0
cf07311b 52 set $ptr = (gdb_use_union ? (gdb_use_lsb ? $bugfix.u.val << gdb_gctypebits : $bugfix.u.val) : $bugfix & $valmask) | gdb_data_seg_bits
6b61353c
KH
53end
54
55define xgetint
0e73312b
RS
56 set $bugfix = $arg0
57 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
6b61353c
KH
58end
59
60define xgettype
0e73312b
RS
61 set $bugfix = $arg0
62 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
6b61353c 63end
b74f15c6 64
a6ffc6a2 65# Set up something to print out s-expressions.
4fccedb5
EZ
66# We save and restore print_output_debug_flag to prevent the w32 port
67# from calling OutputDebugString, which causes GDB to display each
68# character twice (yuk!).
a6ffc6a2 69define pr
3723ec07 70 pp $
a6ffc6a2 71end
a6ffc6a2
JB
72document pr
73Print the emacs s-expression which is $.
74Works only when an inferior emacs is executing.
75end
76
6c5d0c52
KS
77# Print out s-expressions
78define pp
79 set $tmp = $arg0
4fccedb5
EZ
80 set $output_debug = print_output_debug_flag
81 set print_output_debug_flag = 0
1609a963 82 set safe_debug_print ($tmp)
4fccedb5 83 set print_output_debug_flag = $output_debug
6c5d0c52
KS
84end
85document pp
86Print the argument as an emacs s-expression
87Works only when an inferior emacs is executing.
88end
89
1609a963
KS
90# Print value of lisp variable
91define pv
1609a963 92 set $tmp = "$arg0"
4fccedb5
EZ
93 set $output_debug = print_output_debug_flag
94 set print_output_debug_flag = 0
1609a963 95 set safe_debug_print (find_symbol_value (intern ($tmp)))
4fccedb5 96 set print_output_debug_flag = $output_debug
1609a963 97end
3723ec07 98document pv
1609a963
KS
99Print the value of the lisp variable given as argument.
100Works only when an inferior emacs is executing.
1609a963
KS
101end
102
decf4020
KS
103# Print out current buffer point and boundaries
104define ppt
105 set $b = current_buffer
106 set $t = $b->text
107 printf "BUF PT: %d", $b->pt
108 if ($b->pt != $b->pt_byte)
109 printf "[%d]", $b->pt_byte
110 end
111 printf " of 1..%d", $t->z
112 if ($t->z != $t->z_byte)
113 printf "[%d]", $t->z_byte
114 end
115 if ($b->begv != 1 || $b->zv != $t->z)
116 printf " NARROW=%d..%d", $b->begv, $b->zv
117 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
118 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
119 end
120 end
121 printf " GAP: %d", $t->gpt
122 if ($t->gpt != $t->gpt_byte)
123 printf "[%d]", $t->gpt_byte
124 end
125 printf " SZ=%d\n", $t->gap_size
126end
127document ppt
2d5ed88d
EZ
128Print current buffer's point and boundaries.
129Prints values of point, beg, end, narrow, and gap for current buffer.
decf4020
KS
130end
131
be996d82
EZ
132define pitmethod
133 set $itmethod = $arg0
134 # output $itmethod
135 if ($itmethod == 0)
136 printf "GET_FROM_BUFFER"
137 end
138 if ($itmethod == 1)
139 printf "GET_FROM_DISPLAY_VECTOR"
140 end
141 if ($itmethod == 2)
142 printf "GET_FROM_STRING"
143 end
144 if ($itmethod == 3)
145 printf "GET_FROM_C_STRING"
146 end
147 if ($itmethod == 4)
148 printf "GET_FROM_IMAGE"
149 end
150 if ($itmethod == 5)
151 printf "GET_FROM_STRETCH"
152 end
153 if ($itmethod < 0 || $itmethod > 5)
154 output $itmethod
155 end
156end
157document pitmethod
158Pretty print it->method given as first arg
159end
160
afca296c
KS
161# Print out iterator given as first arg
162define pitx
163 set $it = $arg0
164 printf "cur=%d", $it->current.pos.charpos
165 if ($it->current.pos.charpos != $it->current.pos.bytepos)
166 printf "[%d]", $it->current.pos.bytepos
167 end
82d59cb0
KS
168 printf " pos=%d", $it->position.charpos
169 if ($it->position.charpos != $it->position.bytepos)
170 printf "[%d]", $it->position.bytepos
171 end
afca296c
KS
172 printf " start=%d", $it->start.pos.charpos
173 if ($it->start.pos.charpos != $it->start.pos.bytepos)
174 printf "[%d]", $it->start.pos.bytepos
175 end
2fde1500
KS
176 printf " end=%d", $it->end_charpos
177 printf " stop=%d", $it->stop_charpos
178 printf " face=%d", $it->face_id
179 if ($it->multibyte_p)
180 printf " MB"
181 end
182 if ($it->header_line_p)
183 printf " HL"
184 end
185 if ($it->n_overlay_strings > 0)
338fa84a 186 printf " nov=%d", $it->n_overlay_strings
2fde1500
KS
187 end
188 if ($it->sp != 0)
189 printf " sp=%d", $it->sp
190 end
2d20eee3
EZ
191 # IT_CHARACTER
192 if ($it->what == 0)
afca296c 193 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
501b66fa 194 printf " ch='%c'", $it->c
afca296c 195 else
501b66fa 196 printf " ch=[%d,%d]", $it->c, $it->len
2fde1500
KS
197 end
198 else
1e99743b 199 printf " "
be996d82
EZ
200 # output $it->what
201 if ($it->what == 0)
202 printf "IT_CHARACTER"
203 end
204 if ($it->what == 1)
205 printf "IT_COMPOSITION"
206 end
207 if ($it->what == 2)
208 printf "IT_IMAGE"
209 end
210 if ($it->what == 3)
211 printf "IT_STRETCH"
212 end
213 if ($it->what == 4)
214 printf "IT_EOB"
215 end
216 if ($it->what == 5)
217 printf "IT_TRUNCATION"
218 end
219 if ($it->what == 6)
220 printf "IT_CONTINUATION"
221 end
222 if ($it->what < 0 || $it->what > 6)
223 output $it->what
224 end
afca296c 225 end
2d20eee3
EZ
226 if ($it->method != 0)
227 # !GET_FROM_BUFFER
2fde1500 228 printf " next="
be996d82 229 pitmethod $it->method
2d20eee3
EZ
230 if ($it->method == 2)
231 # GET_FROM_STRING
501b66fa
KS
232 printf "[%d]", $it->current.string_pos.charpos
233 end
2d20eee3
EZ
234 if ($it->method == 4)
235 # GET_FROM_IMAGE
1e99743b
KS
236 printf "[%d]", $it->image_id
237 end
2fde1500 238 end
afca296c 239 printf "\n"
241ab1c1
EZ
240 if ($it->bidi_p)
241 printf "BIDI: base_stop=%d prev_stop=%d level=%d\n", $it->base_level_stop, $it->prev_stop, $it->bidi_it.resolved_level
242 end
2fde1500
KS
243 if ($it->region_beg_charpos >= 0)
244 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
245 end
afca296c
KS
246 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
247 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
2fde1500 248 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
28c1e1ca 249 printf " w=%d", $it->pixel_width
afca296c
KS
250 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
251 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
252 printf "\n"
0058964e 253 set $i = 0
82d59cb0 254 while ($i < $it->sp && $i < 4)
0058964e
KS
255 set $e = $it->stack[$i]
256 printf "stack[%d]: ", $i
3eb49e71
EZ
257 pitmethod $e.method
258 printf "[%d]", $e.position.charpos
0058964e
KS
259 printf "\n"
260 set $i = $i + 1
261 end
afca296c
KS
262end
263document pitx
264Pretty print a display iterator.
265Take one arg, an iterator object or pointer.
266end
267
268define pit
269 pitx it
270end
271document pit
272Pretty print the display iterator it.
273end
274
275define prowx
276 set $row = $arg0
277 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
278 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
279 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
b12cd789
EZ
280 printf " vis=%d\n", $row->visible_height
281 printf "used=(LMargin=%d,Text=%d,RMargin=%d) Hash=%d\n", $row->used[0], $row->used[1], $row->used[2], $row->hash
afca296c
KS
282 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
283 if ($row->enabled_p)
284 printf " ENA"
285 end
286 if ($row->displays_text_p)
287 printf " DISP"
288 end
289 if ($row->mode_line_p)
290 printf " MODEL"
291 end
292 if ($row->continued_p)
293 printf " CONT"
294 end
295 if ($row-> truncated_on_left_p)
296 printf " TRUNC:L"
297 end
298 if ($row-> truncated_on_right_p)
299 printf " TRUNC:R"
300 end
301 if ($row->starts_in_middle_of_char_p)
302 printf " STARTMID"
303 end
304 if ($row->ends_in_middle_of_char_p)
305 printf " ENDMID"
306 end
307 if ($row->ends_in_newline_from_string_p)
308 printf " ENDNLFS"
309 end
310 if ($row->ends_at_zv_p)
311 printf " ENDZV"
312 end
313 if ($row->overlapped_p)
314 printf " OLAPD"
315 end
316 if ($row->overlapping_p)
317 printf " OLAPNG"
318 end
319 printf "\n"
320end
321document prowx
322Pretty print information about glyph_row.
323Takes one argument, a row object or pointer.
324end
325
326define prow
327 prowx row
328end
329document prow
330Pretty print information about glyph_row in row.
331end
332
333
334define pcursorx
335 set $cp = $arg0
336 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
337end
338document pcursorx
89955f2e 339Pretty print a window cursor.
afca296c
KS
340end
341
342define pcursor
343 printf "output: "
344 pcursorx output_cursor
345 printf "\n"
346end
347document pcursor
89955f2e 348Pretty print the output_cursor.
afca296c
KS
349end
350
351define pwinx
352 set $w = $arg0
353 xgetint $w->sequence_number
354 if ($w->mini_p != Qnil)
355 printf "Mini "
356 end
357 printf "Window %d ", $int
358 xgetptr $w->buffer
359 set $tem = (struct buffer *) $ptr
c40f8d15 360 xgetptr $tem->name_
afca296c
KS
361 printf "%s", ((struct Lisp_String *) $ptr)->data
362 printf "\n"
363 xgetptr $w->start
364 set $tem = (struct Lisp_Marker *) $ptr
365 printf "start=%d end:", $tem->charpos
366 if ($w->window_end_valid != Qnil)
367 xgetint $w->window_end_pos
368 printf "pos=%d", $int
369 xgetint $w->window_end_vpos
370 printf " vpos=%d", $int
371 else
372 printf "invalid"
373 end
374 printf " vscroll=%d", $w->vscroll
375 if ($w->force_start != Qnil)
376 printf " FORCE_START"
377 end
378 if ($w->must_be_updated_p)
379 printf " MUST_UPD"
380 end
381 printf "\n"
382 printf "cursor: "
383 pcursorx $w->cursor
384 printf " phys: "
385 pcursorx $w->phys_cursor
386 if ($w->phys_cursor_on_p)
387 printf " ON"
388 else
389 printf " OFF"
390 end
391 printf " blk="
392 if ($w->last_cursor_off_p != $w->cursor_off_p)
393 if ($w->last_cursor_off_p)
394 printf "ON->"
395 else
396 printf "OFF->"
397 end
398 end
399 if ($w->cursor_off_p)
400 printf "ON"
401 else
402 printf "OFF"
403 end
404 printf "\n"
405end
406document pwinx
407Pretty print a window structure.
89955f2e 408Takes one argument, a pointer to a window structure.
afca296c
KS
409end
410
411define pwin
412 pwinx w
413end
414document pwin
415Pretty print window structure w.
416end
417
bc5a45f3 418define pbiditype
9443b3c7
EZ
419 if ($arg0 == 0)
420 printf "UNDEF"
421 end
bc5a45f3
EZ
422 if ($arg0 == 1)
423 printf "L"
424 end
425 if ($arg0 == 2)
426 printf "R"
427 end
428 if ($arg0 == 3)
429 printf "EN"
430 end
431 if ($arg0 == 4)
432 printf "AN"
433 end
434 if ($arg0 == 5)
435 printf "BN"
436 end
437 if ($arg0 == 6)
438 printf "B"
439 end
9443b3c7 440 if ($arg0 < 0 || $arg0 > 6)
bc5a45f3
EZ
441 printf "%d??", $arg0
442 end
443end
444document pbiditype
445Print textual description of bidi type given as first argument.
446end
447
1e99743b
KS
448define pgx
449 set $g = $arg0
be996d82 450 # CHAR_GLYPH
a1674f0b
EZ
451 if ($g.type == 0)
452 if ($g.u.ch >= ' ' && $g.u.ch < 127)
453 printf "CHAR[%c]", $g.u.ch
1e99743b 454 else
a1674f0b 455 printf "CHAR[0x%x]", $g.u.ch
1e99743b
KS
456 end
457 end
be996d82 458 # COMPOSITE_GLYPH
a1674f0b
EZ
459 if ($g.type == 1)
460 printf "COMP[%d (%d..%d)]", $g.u.cmp.id, $g.slice.cmp.from, $g.slice.cmp.to
1e99743b 461 end
0eb025fb 462 # GLYPHLESS_GLYPH
a1674f0b 463 if ($g.type == 2)
0eb025fb 464 printf "GLYPHLESS["
a1674f0b 465 if ($g.u.glyphless.method == 0)
0eb025fb
EZ
466 printf "THIN]"
467 end
a1674f0b 468 if ($g.u.glyphless.method == 1)
0eb025fb
EZ
469 printf "EMPTY]"
470 end
a1674f0b 471 if ($g.u.glyphless.method == 2)
0eb025fb
EZ
472 printf "ACRO]"
473 end
a1674f0b 474 if ($g.u.glyphless.method == 3)
0eb025fb
EZ
475 printf "HEX]"
476 end
477 end
478 # IMAGE_GLYPH
a1674f0b
EZ
479 if ($g.type == 3)
480 printf "IMAGE[%d]", $g.u.img_id
1e99743b 481 end
be996d82 482 # STRETCH_GLYPH
a1674f0b
EZ
483 if ($g.type == 4)
484 printf "STRETCH[%d+%d]", $g.u.stretch.height, $g.u.stretch.ascent
1e99743b 485 end
a1674f0b 486 xgettype ($g.object)
1e99743b 487 if ($type == Lisp_String)
a1674f0b 488 printf " str=%x[%d]", $g.object, $g.charpos
1e99743b 489 else
a1674f0b 490 printf " pos=%d", $g.charpos
1e99743b 491 end
bc5a45f3 492 # For characters, print their resolved level and bidi type
a1674f0b
EZ
493 if ($g.type == 0)
494 printf " blev=%d,btyp=", $g.resolved_level
495 pbiditype $g.bidi_type
bc5a45f3 496 end
a1674f0b 497 printf " w=%d a+d=%d+%d", $g.pixel_width, $g.ascent, $g.descent
be996d82 498 # If not DEFAULT_FACE_ID
a1674f0b
EZ
499 if ($g.face_id != 0)
500 printf " face=%d", $g.face_id
1e99743b 501 end
a1674f0b
EZ
502 if ($g.voffset)
503 printf " vof=%d", $g.voffset
1e99743b 504 end
a1674f0b 505 if ($g.multibyte_p)
1e99743b
KS
506 printf " MB"
507 end
a1674f0b 508 if ($g.padding_p)
1e99743b
KS
509 printf " PAD"
510 end
a1674f0b 511 if ($g.glyph_not_available_p)
1e99743b
KS
512 printf " N/A"
513 end
a1674f0b 514 if ($g.overlaps_vertically_p)
1e99743b
KS
515 printf " OVL"
516 end
a1674f0b 517 if ($g.avoid_cursor_p)
cb4545ad
EZ
518 printf " AVOID"
519 end
a1674f0b 520 if ($g.left_box_line_p)
1e99743b
KS
521 printf " ["
522 end
a1674f0b 523 if ($g.right_box_line_p)
1e99743b
KS
524 printf " ]"
525 end
a1674f0b
EZ
526 if ($g.slice.img.x || $g.slice.img.y || $g.slice.img.width || $g.slice.img.height)
527 printf " slice=%d,%d,%d,%d" ,$g.slice.img.x, $g.slice.img.y, $g.slice.img.width, $g.slice.img.height
1e99743b
KS
528 end
529 printf "\n"
530end
531document pgx
532Pretty print a glyph structure.
89955f2e 533Takes one argument, a pointer to a glyph structure.
1e99743b
KS
534end
535
536define pg
537 set $pgidx = 0
538 pgx glyph
539end
540document pg
541Pretty print glyph structure glyph.
542end
543
544define pgi
545 set $pgidx = $arg0
546 pgx (&glyph[$pgidx])
547end
548document pgi
549Pretty print glyph structure glyph[I].
550Takes one argument, a integer I.
551end
552
553define pgn
554 set $pgidx = $pgidx + 1
555 pgx (&glyph[$pgidx])
556end
557document pgn
558Pretty print next glyph structure.
559end
560
561define pgrowx
562 set $row = $arg0
563 set $area = 0
564 set $xofs = $row->x
565 while ($area < 3)
566 set $used = $row->used[$area]
567 if ($used > 0)
568 set $gl0 = $row->glyphs[$area]
569 set $pgidx = 0
570 printf "%s: %d glyphs\n", ($area == 0 ? "LEFT" : $area == 2 ? "RIGHT" : "TEXT"), $used
571 while ($pgidx < $used)
572 printf "%3d %4d: ", $pgidx, $xofs
573 pgx $gl0[$pgidx]
574 set $xofs = $xofs + $gl0[$pgidx]->pixel_width
575 set $pgidx = $pgidx + 1
576 end
577 end
578 set $area = $area + 1
579 end
580end
581document pgrowx
582Pretty print all glyphs in a row structure.
583Takes one argument, a pointer to a row structure.
584end
585
586define pgrow
587 pgrowx row
588end
589document pgrow
590Pretty print all glyphs in row structure row.
591end
afca296c 592
be996d82
EZ
593define pgrowit
594 pgrowx it->glyph_row
595end
596document pgrowit
597Pretty print all glyphs in it->glyph_row.
598end
599
f866d742 600define prowlims
0416466c 601 printf "edges=(%d,%d),r2l=%d,cont=%d,trunc=(%d,%d),at_zv=%d\n", $arg0->minpos.charpos, $arg0->maxpos.charpos, $arg0->reversed_p, $arg0->continued_p, $arg0->truncated_on_left_p, $arg0->truncated_on_right_p, $arg0->ends_at_zv_p
f866d742
EZ
602end
603document prowlims
604Print important attributes of a glyph_row structure.
605Takes one argument, a pointer to a glyph_row structure.
606end
607
608define pmtxrows
609 set $mtx = $arg0
610 set $gl = $mtx->rows
0416466c
EZ
611 set $glend = $mtx->rows + $mtx->nrows - 1
612 set $i = 0
f866d742 613 while ($gl < $glend)
0416466c 614 printf "%d: ", $i
f866d742
EZ
615 prowlims $gl
616 set $gl = $gl + 1
0416466c 617 set $i = $i + 1
f866d742
EZ
618 end
619end
620document pmtxrows
621Print data about glyph rows in a glyph matrix.
622Takes one argument, a pointer to a glyph_matrix structure.
623end
624
a6ffc6a2 625define xtype
6b61353c
KH
626 xgettype $
627 output $type
628 echo \n
629 if $type == Lisp_Misc
630 xmisctype
631 else
632 if $type == Lisp_Vectorlike
633 xvectype
634 end
635 end
a6ffc6a2 636end
e065a56e 637document xtype
ba1e23bf 638Print the type of $, assuming it is an Emacs Lisp value.
3fe8bda5 639If the first type printed is Lisp_Vector or Lisp_Misc,
6b61353c 640a second line gives the more precise type.
3fe8bda5
RS
641end
642
643define xvectype
6b61353c 644 xgetptr $
cc7245e4 645 set $size = ((struct Lisp_Vector *) $ptr)->header.size
fc80da24 646 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
6b61353c 647 echo \n
3fe8bda5
RS
648end
649document xvectype
89955f2e
NR
650Print the size or vector subtype of $.
651This command assumes that $ is a vector or pseudovector.
3fe8bda5
RS
652end
653
654define xmisctype
6b61353c
KH
655 xgetptr $
656 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
657 echo \n
3fe8bda5
RS
658end
659document xmisctype
2d5ed88d 660Assume that $ is some misc type and print its specific type.
e065a56e 661end
a6ffc6a2
JB
662
663define xint
6b61353c
KH
664 xgetint $
665 print $int
a6ffc6a2 666end
e065a56e 667document xint
2d5ed88d 668Print $ as an Emacs Lisp integer. This gets the sign right.
e065a56e 669end
a6ffc6a2
JB
670
671define xptr
6b61353c
KH
672 xgetptr $
673 print (void *) $ptr
a6ffc6a2 674end
e065a56e 675document xptr
2d5ed88d 676Print the pointer portion of an Emacs Lisp value in $.
e065a56e 677end
a6ffc6a2 678
a6ffc6a2 679define xmarker
6b61353c
KH
680 xgetptr $
681 print (struct Lisp_Marker *) $ptr
a6ffc6a2 682end
e065a56e 683document xmarker
2d5ed88d
EZ
684Print $ as a marker pointer.
685This command assumes that $ is an Emacs Lisp marker value.
e065a56e 686end
a6ffc6a2 687
a6a3acf0 688define xoverlay
6b61353c
KH
689 xgetptr $
690 print (struct Lisp_Overlay *) $ptr
a6a3acf0
KH
691end
692document xoverlay
89955f2e
NR
693Print $ as a overlay pointer.
694This command assumes that $ is an Emacs Lisp overlay value.
a6a3acf0
KH
695end
696
697define xmiscfree
6b61353c
KH
698 xgetptr $
699 print (struct Lisp_Free *) $ptr
a6a3acf0
KH
700end
701document xmiscfree
89955f2e
NR
702Print $ as a misc free-cell pointer.
703This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
704end
705
706define xintfwd
6b61353c
KH
707 xgetptr $
708 print (struct Lisp_Intfwd *) $ptr
a6a3acf0
KH
709end
710document xintfwd
89955f2e
NR
711Print $ as an integer forwarding pointer.
712This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
713end
714
715define xboolfwd
6b61353c
KH
716 xgetptr $
717 print (struct Lisp_Boolfwd *) $ptr
a6a3acf0
KH
718end
719document xboolfwd
89955f2e
NR
720Print $ as a boolean forwarding pointer.
721This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
722end
723
724define xobjfwd
6b61353c
KH
725 xgetptr $
726 print (struct Lisp_Objfwd *) $ptr
a6a3acf0
KH
727end
728document xobjfwd
89955f2e
NR
729Print $ as an object forwarding pointer.
730This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
731end
732
029c56f6 733define xbufobjfwd
6b61353c
KH
734 xgetptr $
735 print (struct Lisp_Buffer_Objfwd *) $ptr
a6a3acf0 736end
029c56f6 737document xbufobjfwd
89955f2e
NR
738Print $ as a buffer-local object forwarding pointer.
739This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
740end
741
a0371857 742define xkbobjfwd
6b61353c
KH
743 xgetptr $
744 print (struct Lisp_Kboard_Objfwd *) $ptr
cd39e946 745end
a0371857 746document xkbobjfwd
89955f2e
NR
747Print $ as a kboard-local object forwarding pointer.
748This command assumes that $ is an Emacs Lisp Misc value.
cd39e946
KH
749end
750
029c56f6 751define xbuflocal
6b61353c
KH
752 xgetptr $
753 print (struct Lisp_Buffer_Local_Value *) $ptr
a6a3acf0 754end
029c56f6 755document xbuflocal
89955f2e
NR
756Print $ as a buffer-local-value pointer.
757This command assumes that $ is an Emacs Lisp Misc value.
a6a3acf0
KH
758end
759
a6ffc6a2 760define xsymbol
cfcde636
KS
761 set $sym = $
762 xgetptr $sym
6b61353c 763 print (struct Lisp_Symbol *) $ptr
cfcde636 764 xprintsym $sym
6b61353c 765 echo \n
a6ffc6a2 766end
e065a56e
JB
767document xsymbol
768Print the name and address of the symbol $.
ba1e23bf 769This command assumes that $ is an Emacs Lisp symbol value.
e065a56e 770end
a6ffc6a2
JB
771
772define xstring
6b61353c
KH
773 xgetptr $
774 print (struct Lisp_String *) $ptr
0001e968 775 xprintstr $
6b61353c 776 echo \n
a6ffc6a2 777end
a6ffc6a2 778document xstring
e065a56e 779Print the contents and address of the string $.
ba1e23bf 780This command assumes that $ is an Emacs Lisp string value.
a6ffc6a2
JB
781end
782
783define xvector
6b61353c
KH
784 xgetptr $
785 print (struct Lisp_Vector *) $ptr
cc7245e4 786 output ($->header.size > 50) ? 0 : ($->contents[0])@($->header.size & ~gdb_array_mark_flag)
ef15f270 787echo \n
a6ffc6a2 788end
a6ffc6a2 789document xvector
e065a56e 790Print the contents and address of the vector $.
ba1e23bf 791This command assumes that $ is an Emacs Lisp vector value.
a6ffc6a2
JB
792end
793
14a8902a 794define xprocess
6b61353c
KH
795 xgetptr $
796 print (struct Lisp_Process *) $ptr
797 output *$
798 echo \n
14a8902a
RS
799end
800document xprocess
89955f2e
NR
801Print the address of the struct Lisp_process to which $ points.
802This command assumes that $ is a Lisp_Object.
14a8902a
RS
803end
804
ec558adc 805define xframe
6b61353c
KH
806 xgetptr $
807 print (struct frame *) $ptr
28c1e1ca
KS
808 xgetptr $->name
809 set $ptr = (struct Lisp_String *) $ptr
810 xprintstr $ptr
811 echo \n
a6ffc6a2 812end
ec558adc 813document xframe
2d5ed88d
EZ
814Print $ as a frame pointer.
815This command assumes $ is an Emacs Lisp frame value.
e065a56e 816end
a6ffc6a2 817
14a8902a 818define xcompiled
6b61353c
KH
819 xgetptr $
820 print (struct Lisp_Vector *) $ptr
cc7245e4 821 output ($->contents[0])@($->header.size & 0xff)
14a8902a
RS
822end
823document xcompiled
89955f2e
NR
824Print $ as a compiled function pointer.
825This command assumes that $ is an Emacs Lisp compiled value.
14a8902a
RS
826end
827
828define xwindow
6b61353c
KH
829 xgetptr $
830 print (struct window *) $ptr
25d34643
RS
831 set $window = (struct window *) $ptr
832 xgetint $window->total_cols
833 set $width=$int
834 xgetint $window->total_lines
835 set $height=$int
836 xgetint $window->left_col
837 set $left=$int
838 xgetint $window->top_line
839 set $top=$int
840 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
14a8902a
RS
841end
842document xwindow
843Print $ as a window pointer, assuming it is an Emacs Lisp window value.
844Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
845end
846
029c56f6 847define xwinconfig
6b61353c
KH
848 xgetptr $
849 print (struct save_window_data *) $ptr
a6a3acf0 850end
029c56f6 851document xwinconfig
89955f2e
NR
852Print $ as a window configuration pointer.
853This command assumes that $ is an Emacs Lisp window configuration value.
a6a3acf0
KH
854end
855
14a8902a 856define xsubr
6b61353c
KH
857 xgetptr $
858 print (struct Lisp_Subr *) $ptr
859 output *$
860 echo \n
a6a3acf0 861end
14a8902a
RS
862document xsubr
863Print the address of the subr which the Lisp_Object $ points to.
864end
865
866define xchartable
6b61353c
KH
867 xgetptr $
868 print (struct Lisp_Char_Table *) $ptr
869 printf "Purpose: "
870 xprintsym $->purpose
cc7245e4 871 printf " %d extra slots", ($->header.size & 0x1ff) - 68
6b61353c 872 echo \n
14a8902a
RS
873end
874document xchartable
875Print the address of the char-table $, and its purpose.
876This command assumes that $ is an Emacs Lisp char-table value.
877end
878
d1da276f
EZ
879define xsubchartable
880 xgetptr $
881 print (struct Lisp_Sub_Char_Table *) $ptr
882 xgetint $->depth
883 set $depth = $int
884 xgetint $->min_char
885 printf "Depth: %d, Min char: %d (0x%x)\n", $depth, $int, $int
886end
887document xsubchartable
888Print the address of the sub-char-table $, its depth and min-char.
889This command assumes that $ is an Emacs Lisp sub-char-table value.
890end
891
14a8902a 892define xboolvector
6b61353c
KH
893 xgetptr $
894 print (struct Lisp_Bool_Vector *) $ptr
cc7245e4 895 output ($->header.size > 256) ? 0 : ($->data[0])@((($->header.size & ~gdb_array_mark_flag) + 7)/ 8)
6b61353c 896 echo \n
14a8902a
RS
897end
898document xboolvector
899Print the contents and address of the bool-vector $.
900This command assumes that $ is an Emacs Lisp bool-vector value.
901end
902
903define xbuffer
6b61353c
KH
904 xgetptr $
905 print (struct buffer *) $ptr
c40f8d15 906 xgetptr $->name_
6b61353c
KH
907 output ((struct Lisp_String *) $ptr)->data
908 echo \n
14a8902a
RS
909end
910document xbuffer
2d5ed88d
EZ
911Set $ as a buffer pointer and the name of the buffer.
912This command assumes $ is an Emacs Lisp buffer value.
a6a3acf0
KH
913end
914
3266f62b 915define xhashtable
6b61353c
KH
916 xgetptr $
917 print (struct Lisp_Hash_Table *) $ptr
3266f62b
GM
918end
919document xhashtable
89955f2e
NR
920Set $ as a hash table pointer.
921This command assumes that $ is an Emacs Lisp hash table value.
3266f62b
GM
922end
923
a6ffc6a2 924define xcons
6b61353c
KH
925 xgetptr $
926 print (struct Lisp_Cons *) $ptr
927 output/x *$
928 echo \n
a6ffc6a2 929end
e065a56e 930document xcons
2d5ed88d 931Print the contents of $ as an Emacs Lisp cons.
e065a56e 932end
a6ffc6a2 933
6f493884 934define nextcons
b4483658 935 p $.u.cdr
6b61353c 936 xcons
6f493884
RS
937end
938document nextcons
939Print the contents of the next cell in a list.
89955f2e 940This command assumes that the last thing you printed was a cons cell contents
6f493884
RS
941(type struct Lisp_Cons) or a pointer to one.
942end
a6ffc6a2 943define xcar
6b61353c
KH
944 xgetptr $
945 xgettype $
946 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
a6ffc6a2 947end
e065a56e 948document xcar
2d5ed88d 949Assume that $ is an Emacs Lisp pair and print its car.
e065a56e 950end
a6ffc6a2
JB
951
952define xcdr
6b61353c
KH
953 xgetptr $
954 xgettype $
b4483658 955 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
a6ffc6a2 956end
e065a56e 957document xcdr
2d5ed88d 958Assume that $ is an Emacs Lisp pair and print its cdr.
e065a56e 959end
a6ffc6a2 960
28c1e1ca
KS
961define xlist
962 xgetptr $
963 set $cons = (struct Lisp_Cons *) $ptr
964 xgetptr Qnil
965 set $nil = $ptr
966 set $i = 0
967 while $cons != $nil && $i < 10
968 p/x $cons->car
969 xpr
970 xgetptr $cons->u.cdr
971 set $cons = (struct Lisp_Cons *) $ptr
972 set $i = $i + 1
973 printf "---\n"
974 end
975 if $cons == $nil
976 printf "nil\n"
977 else
978 printf "...\n"
979 p $ptr
980 end
981end
982document xlist
983Print $ assuming it is a list.
984end
985
df86e57e 986define xfloat
6b61353c 987 xgetptr $
b4483658 988 print ((struct Lisp_Float *) $ptr)->u.data
df86e57e
JB
989end
990document xfloat
991Print $ assuming it is a lisp floating-point number.
992end
993
b2367490 994define xscrollbar
6b61353c
KH
995 xgetptr $
996 print (struct scrollbar *) $ptr
b2367490
JB
997output *$
998echo \n
999end
dec5f4e3 1000document xscrollbar
b2367490
JB
1001Print $ as a scrollbar pointer.
1002end
1003
28c1e1ca
KS
1004define xpr
1005 xtype
1006 if $type == Lisp_Int
1007 xint
1008 end
1009 if $type == Lisp_Symbol
1010 xsymbol
1011 end
1012 if $type == Lisp_String
1013 xstring
1014 end
1015 if $type == Lisp_Cons
1016 xcons
1017 end
1018 if $type == Lisp_Float
1019 xfloat
1020 end
1021 if $type == Lisp_Misc
1022 set $misc = (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
1023 if $misc == Lisp_Misc_Free
1024 xmiscfree
1025 end
1026 if $misc == Lisp_Misc_Boolfwd
1027 xboolfwd
1028 end
1029 if $misc == Lisp_Misc_Marker
1030 xmarker
1031 end
1032 if $misc == Lisp_Misc_Intfwd
1033 xintfwd
1034 end
1035 if $misc == Lisp_Misc_Boolfwd
1036 xboolfwd
1037 end
1038 if $misc == Lisp_Misc_Objfwd
1039 xobjfwd
1040 end
1041 if $misc == Lisp_Misc_Buffer_Objfwd
1042 xbufobjfwd
1043 end
1044 if $misc == Lisp_Misc_Buffer_Local_Value
1045 xbuflocal
1046 end
1047# if $misc == Lisp_Misc_Some_Buffer_Local_Value
1048# xvalue
1049# end
1050 if $misc == Lisp_Misc_Overlay
1051 xoverlay
1052 end
1053 if $misc == Lisp_Misc_Kboard_Objfwd
1054 xkbobjfwd
1055 end
1056# if $misc == Lisp_Misc_Save_Value
1057# xsavevalue
1058# end
1059 end
1060 if $type == Lisp_Vectorlike
cc7245e4 1061 set $size = ((struct Lisp_Vector *) $ptr)->header.size
28c1e1ca
KS
1062 if ($size & PVEC_FLAG)
1063 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK)
1064 if $vec == PVEC_NORMAL_VECTOR
1065 xvector
1066 end
1067 if $vec == PVEC_PROCESS
1068 xprocess
1069 end
1070 if $vec == PVEC_FRAME
1071 xframe
1072 end
1073 if $vec == PVEC_COMPILED
1074 xcompiled
1075 end
1076 if $vec == PVEC_WINDOW
1077 xwindow
1078 end
1079 if $vec == PVEC_WINDOW_CONFIGURATION
1080 xwinconfig
1081 end
1082 if $vec == PVEC_SUBR
1083 xsubr
1084 end
1085 if $vec == PVEC_CHAR_TABLE
1086 xchartable
1087 end
1088 if $vec == PVEC_BOOL_VECTOR
1089 xboolvector
1090 end
1091 if $vec == PVEC_BUFFER
1092 xbuffer
1093 end
1094 if $vec == PVEC_HASH_TABLE
1095 xhashtable
1096 end
1097 else
1098 xvector
1099 end
1100 end
1101end
1102document xpr
1103Print $ as a lisp object of any type.
1104end
1105
0001e968 1106define xprintstr
d3332249 1107 set $data = (char *) $arg0->data
0001e968
SM
1108 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
1109end
1110
24b4d1bc 1111define xprintsym
6b61353c
KH
1112 xgetptr $arg0
1113 set $sym = (struct Lisp_Symbol *) $ptr
1114 xgetptr $sym->xname
1115 set $sym_name = (struct Lisp_String *) $ptr
0001e968 1116 xprintstr $sym_name
24b4d1bc
GM
1117end
1118document xprintsym
1119 Print argument as a symbol.
1120end
1121
d5fb9ac8
KH
1122define xcoding
1123 set $tmp = (struct Lisp_Hash_Table *) ((Vcoding_system_hash_table & $valmask) | gdb_data_seg_bits)
1124 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1125 set $name = $tmp->contents[$arg0 * 2]
1126 print $name
1127 pr
1128 print $tmp->contents[$arg0 * 2 + 1]
1129 pr
1130end
1131document xcoding
8f924df7 1132 Print the name and attributes of coding system that has ID (argument).
d5fb9ac8
KH
1133end
1134
1135define xcharset
1136 set $tmp = (struct Lisp_Hash_Table *) ((Vcharset_hash_table & $valmask) | gdb_data_seg_bits)
1137 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
af800dc0 1138 p $tmp->contents[charset_table[$arg0].hash_index * 2]
d5fb9ac8
KH
1139 pr
1140end
1141document xcharset
8f924df7 1142 Print the name of charset that has ID (argument).
d5fb9ac8
KH
1143end
1144
9e067dbc
KH
1145define xfontset
1146 xgetptr $
1147 set $tbl = (struct Lisp_Char_Table *) $ptr
1148 print $tbl
1149 xgetint $tbl->extras[0]
1150 printf " ID:%d", $int
1151 xgettype $tbl->extras[1]
1152 xgetptr $tbl->extras[1]
1153 if $type == Lisp_String
1154 set $ptr = (struct Lisp_String *) $ptr
1155 printf " Name:"
1156 xprintstr $ptr
1157 else
1158 xgetptr $tbl->extras[2]
1159 set $ptr = (struct Lisp_Char_Table *) $ptr
1160 xgetptr $ptr->extras[1]
1161 set $ptr = (struct Lisp_String *) $ptr
1162 printf " Realized from:"
1163 xprintstr $ptr
1164 end
1165 echo \n
1166end
1167
322081f1
KH
1168define xfont
1169 xgetptr $
cc7245e4 1170 set $size = (((struct Lisp_Vector *) $ptr)->header.size & 0x1FF)
322081f1
KH
1171 if $size == FONT_SPEC_MAX
1172 print (struct font_spec *) $ptr
1173 else
1174 if $size == FONT_ENTITY_MAX
1175 print (struct font_entity *) $ptr
1176 else
1177 print (struct font *) $ptr
1178 end
1179 end
1180end
1181document xfont
1182Print $ assuming it is a list font (font-spec, font-entity, or font-object).
1183end
1184
24b4d1bc
GM
1185define xbacktrace
1186 set $bt = backtrace_list
177c0ea7 1187 while $bt
6b61353c 1188 xgettype (*$bt->function)
3176a27e 1189 if $type == Lisp_Symbol
6b61353c 1190 xprintsym (*$bt->function)
c51842ec 1191 printf " (0x%x)\n", $bt->args
3176a27e 1192 else
cf07311b
SM
1193 xgetptr *$bt->function
1194 printf "0x%x ", $ptr
3176a27e 1195 if $type == Lisp_Vectorlike
6b61353c 1196 xgetptr (*$bt->function)
cc7245e4 1197 set $size = ((struct Lisp_Vector *) $ptr)->header.size
fc80da24 1198 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
3176a27e
GM
1199 else
1200 printf "Lisp type %d", $type
1201 end
1202 echo \n
1203 end
24b4d1bc
GM
1204 set $bt = $bt->next
1205 end
1206end
1207document xbacktrace
1208 Print a backtrace of Lisp function calls from backtrace_list.
177c0ea7 1209 Set a breakpoint at Fsignal and call this to see from where
3176a27e 1210 an error was signaled.
24b4d1bc
GM
1211end
1212
8b058d44
EZ
1213define xprintbytestr
1214 set $data = (char *) $arg0->data
1215 printf "Bytecode: "
1216 output/u ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
1217end
1218document xprintbytestr
1219 Print a string of byte code.
1220end
1221
1222define xwhichsymbols
1223 set $output_debug = print_output_debug_flag
1224 set print_output_debug_flag = 0
1225 set safe_debug_print (which_symbols ($arg0, $arg1))
1226 set print_output_debug_flag = $output_debug
28c1e1ca 1227end
8b058d44 1228document xwhichsymbols
89955f2e 1229 Print symbols which references a given lisp object
28c1e1ca 1230 either as its symbol value or symbol function.
8b058d44
EZ
1231 Call with two arguments: the lisp object and the
1232 maximum number of symbols referencing it to produce.
28c1e1ca
KS
1233end
1234
1235define xbytecode
1236 set $bt = byte_stack_list
1237 while $bt
8b058d44
EZ
1238 xgetptr $bt->byte_string
1239 set $ptr = (struct Lisp_String *) $ptr
1240 xprintbytestr $ptr
1241 printf "\n0x%x => ", $bt->byte_string
1242 xwhichsymbols $bt->byte_string 5
28c1e1ca
KS
1243 set $bt = $bt->next
1244 end
1245end
1246document xbytecode
1247 Print a backtrace of the byte code stack.
1248end
1249
338fa84a
KS
1250# Show Lisp backtrace after normal backtrace.
1251define hookpost-backtrace
1252 set $bt = backtrace_list
1253 if $bt
1254 echo \n
1255 echo Lisp Backtrace:\n
1256 xbacktrace
1257 end
1258end
1259
24b4d1bc 1260define xreload
6b61353c 1261 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
cb3a28cc
PE
1262 # The consing_since_gc business widens the 1 to EMACS_INT,
1263 # a symbol not directly visible to GDB.
1264 set $valmask = gdb_use_lsb ? ~($tagmask) : ((consing_since_gc - consing_since_gc + 1) << gdb_valbits) - 1
24b4d1bc
GM
1265end
1266document xreload
1267 When starting Emacs a second time in the same gdb session under
6b61353c 1268 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
be9e8331
DL
1269 their values. (The same happens on current (2000) versions of GNU/Linux
1270 with gdb 5.0.)
c71ea231 1271 This function reloads them.
24b4d1bc 1272end
6b61353c 1273xreload
24b4d1bc 1274
6c5d0c52
KS
1275# Flush display (X only)
1276define ff
1277 set x_flush (0)
1278end
1279document ff
1280Flush pending X window display updates to screen.
1281Works only when an inferior emacs is executing.
1282end
1283
1284
be9e8331
DL
1285define hook-run
1286 xreload
1287end
1288
e869a29d
RS
1289# Call xreload if a new Emacs executable is loaded.
1290define hookpost-run
1291 xreload
1292end
1293
e065a56e 1294set print pretty on
df86e57e 1295set print sevenbit-strings
a6ffc6a2 1296
e5d77022 1297show environment DISPLAY
6f5d1a4f 1298show environment TERM
e5d77022 1299
c2c50958 1300# People get bothered when they see messages about non-existent functions...
2787bba3 1301xgetptr globals.f_Vsystem_type
ea5f3ad4
EZ
1302# $ptr is NULL in temacs
1303if ($ptr != 0)
1304 set $tem = (struct Lisp_Symbol *) $ptr
1305 xgetptr $tem->xname
1306 set $tem = (struct Lisp_String *) $ptr
1307 set $tem = (char *) $tem->data
1308
1309 # Don't let abort actually run, as it will make stdio stop working and
1310 # therefore the `pr' command above as well.
1311 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
1312 # The windows-nt build replaces abort with its own function.
1313 break w32_abort
1314 else
1315 break abort
1316 end
feaf060a 1317end
dd878ee1 1318
feaf060a
EZ
1319# x_error_quitter is defined only on X. But window-system is set up
1320# only at run time, during Emacs startup, so we need to defer setting
1321# the breakpoint. init_sys_modes is the first function called on
1322# every platform after init_display, where window-system is set.
1323tbreak init_sys_modes
1324commands
1325 silent
2787bba3 1326 xgetptr globals.f_Vinitial_window_system
913645cd
EZ
1327 set $tem = (struct Lisp_Symbol *) $ptr
1328 xgetptr $tem->xname
1329 set $tem = (struct Lisp_String *) $ptr
1330 set $tem = (char *) $tem->data
feaf060a
EZ
1331 # If we are running in synchronous mode, we want a chance to look
1332 # around before Emacs exits. Perhaps we should put the break
1333 # somewhere else instead...
913645cd 1334 if $tem[0] == 'x' && $tem[1] == '\0'
2d90e492 1335 break x_error_quitter
913645cd 1336 end
feaf060a 1337 continue
dd878ee1 1338end