]> code.delx.au - gnu-emacs/blob - src/.gdbinit
(xwindow): Update the code to show the window box.
[gnu-emacs] / src / .gdbinit
1 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
2 # 2004, 2005, 2006 Free Software Foundation, Inc.
3 #
4 # This file is part of GNU Emacs.
5 #
6 # GNU Emacs is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10 #
11 # GNU Emacs is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Emacs; see the file COPYING. If not, write to the
18 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 # Boston, MA 02110-1301, USA.
20
21 # Force loading of symbols, enough to give us gdb_valbits etc.
22 set main
23
24 # Find lwlib source files too.
25 dir ../lwlib
26 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
27
28 # Don't enter GDB when user types C-g to quit.
29 # This has one unfortunate effect: you can't type C-c
30 # at the GDB to stop Emacs, when using X.
31 # However, C-z works just as well in that case.
32 handle 2 noprint pass
33
34 # Make it work like SIGINT normally does.
35 handle SIGTSTP nopass
36
37 # Don't pass SIGALRM to Emacs. This makes problems when
38 # debugging.
39 handle SIGALRM ignore
40
41 # $valmask and $tagmask are mask values set up by the xreload macro below.
42
43 # Use $bugfix so that the value isn't a constant.
44 # Using a constant runs into GDB bugs sometimes.
45 define xgetptr
46 set $bugfix = $arg0
47 set $ptr = (gdb_use_union ? $bugfix.u.val : $bugfix & $valmask) | gdb_data_seg_bits
48 end
49
50 define xgetint
51 set $bugfix = $arg0
52 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
53 end
54
55 define xgettype
56 set $bugfix = $arg0
57 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
58 end
59
60 # Set up something to print out s-expressions.
61 define pr
62 set debug_print ($)
63 end
64 document pr
65 Print the emacs s-expression which is $.
66 Works only when an inferior emacs is executing.
67 end
68
69 # Print out s-expressions
70 define pp
71 set $tmp = $arg0
72 set safe_debug_print ($tmp)
73 end
74 document pp
75 Print the argument as an emacs s-expression
76 Works only when an inferior emacs is executing.
77 end
78
79 # Print out s-expressions from tool bar
80 define pp1
81 set $tmp = $arg0
82 echo $arg0
83 printf " = "
84 set safe_debug_print ($tmp)
85 end
86 document pp1
87 Print the argument as an emacs s-expression
88 Works only when an inferior emacs is executing.
89 For use on tool bar when debugging in Emacs
90 where the variable name would not otherwise
91 be recorded in the GUD buffer.
92 end
93
94 # Print value of lisp variable
95 define pv
96 set $tmp = "$arg0"
97 set safe_debug_print ( find_symbol_value (intern ($tmp)))
98 end
99 document pv
100 Print the value of the lisp variable given as argument.
101 Works only when an inferior emacs is executing.
102 end
103
104 # Print value of lisp variable
105 define pv1
106 set $tmp = "$arg0"
107 echo $arg0
108 printf " = "
109 set safe_debug_print (find_symbol_value (intern ($tmp)))
110 end
111 document pv1
112 Print the value of the lisp variable given as argument.
113 Works only when an inferior emacs is executing.
114 For use on tool bar when debugging in Emacs
115 where the variable name would not otherwise
116 be recorded in the GUD buffer.
117 end
118
119 # Print out current buffer point and boundaries
120 define ppt
121 set $b = current_buffer
122 set $t = $b->text
123 printf "BUF PT: %d", $b->pt
124 if ($b->pt != $b->pt_byte)
125 printf "[%d]", $b->pt_byte
126 end
127 printf " of 1..%d", $t->z
128 if ($t->z != $t->z_byte)
129 printf "[%d]", $t->z_byte
130 end
131 if ($b->begv != 1 || $b->zv != $t->z)
132 printf " NARROW=%d..%d", $b->begv, $b->zv
133 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
134 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
135 end
136 end
137 printf " GAP: %d", $t->gpt
138 if ($t->gpt != $t->gpt_byte)
139 printf "[%d]", $t->gpt_byte
140 end
141 printf " SZ=%d\n", $t->gap_size
142 end
143 document ppt
144 Print point, beg, end, narrow, and gap for current buffer.
145 end
146
147 # Print out iterator given as first arg
148 define pitx
149 set $it = $arg0
150 printf "cur=%d", $it->current.pos.charpos
151 if ($it->current.pos.charpos != $it->current.pos.bytepos)
152 printf "[%d]", $it->current.pos.bytepos
153 end
154 printf " start=%d", $it->start.pos.charpos
155 if ($it->start.pos.charpos != $it->start.pos.bytepos)
156 printf "[%d]", $it->start.pos.bytepos
157 end
158 printf " end=%d", $it->end_charpos
159 printf " stop=%d", $it->stop_charpos
160 printf " face=%d", $it->face_id
161 if ($it->multibyte_p)
162 printf " MB"
163 end
164 if ($it->header_line_p)
165 printf " HL"
166 end
167 if ($it->n_overlay_strings > 0)
168 printf " nov=%d", $it->n_overlay_strings
169 end
170 if ($it->sp != 0)
171 printf " sp=%d", $it->sp
172 end
173 if ($it->what == IT_CHARACTER)
174 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
175 printf " ch='%c'", $it->c
176 else
177 printf " ch=[%d,%d]", $it->c, $it->len
178 end
179 else
180 if ($it->what == IT_IMAGE)
181 printf " IMAGE=%d", $it->image_id
182 else
183 printf " "
184 output $it->what
185 end
186 end
187 if ($it->method != GET_FROM_BUFFER)
188 printf " next="
189 output $it->method
190 if ($it->method == GET_FROM_STRING)
191 printf "[%d]", $it->current.string_pos.charpos
192 end
193 end
194 printf "\n"
195 if ($it->region_beg_charpos >= 0)
196 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
197 end
198 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
199 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
200 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
201 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
202 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
203 printf "\n"
204 end
205 document pitx
206 Pretty print a display iterator.
207 Take one arg, an iterator object or pointer.
208 end
209
210 define pit
211 pitx it
212 end
213 document pit
214 Pretty print the display iterator it.
215 end
216
217 define prowx
218 set $row = $arg0
219 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
220 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
221 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
222 printf " vis=%d", $row->visible_height
223 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
224 printf "\n"
225 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
226 if ($row->enabled_p)
227 printf " ENA"
228 end
229 if ($row->displays_text_p)
230 printf " DISP"
231 end
232 if ($row->mode_line_p)
233 printf " MODEL"
234 end
235 if ($row->continued_p)
236 printf " CONT"
237 end
238 if ($row-> truncated_on_left_p)
239 printf " TRUNC:L"
240 end
241 if ($row-> truncated_on_right_p)
242 printf " TRUNC:R"
243 end
244 if ($row->starts_in_middle_of_char_p)
245 printf " STARTMID"
246 end
247 if ($row->ends_in_middle_of_char_p)
248 printf " ENDMID"
249 end
250 if ($row->ends_in_newline_from_string_p)
251 printf " ENDNLFS"
252 end
253 if ($row->ends_at_zv_p)
254 printf " ENDZV"
255 end
256 if ($row->overlapped_p)
257 printf " OLAPD"
258 end
259 if ($row->overlapping_p)
260 printf " OLAPNG"
261 end
262 printf "\n"
263 end
264 document prowx
265 Pretty print information about glyph_row.
266 Takes one argument, a row object or pointer.
267 end
268
269 define prow
270 prowx row
271 end
272 document prow
273 Pretty print information about glyph_row in row.
274 end
275
276
277 define pcursorx
278 set $cp = $arg0
279 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
280 end
281 document pcursorx
282 Pretty print a window cursor
283 end
284
285 define pcursor
286 printf "output: "
287 pcursorx output_cursor
288 printf "\n"
289 end
290 document pcursor
291 Pretty print the output_cursor
292 end
293
294 define pwinx
295 set $w = $arg0
296 xgetint $w->sequence_number
297 if ($w->mini_p != Qnil)
298 printf "Mini "
299 end
300 printf "Window %d ", $int
301 xgetptr $w->buffer
302 set $tem = (struct buffer *) $ptr
303 xgetptr $tem->name
304 printf "%s", ((struct Lisp_String *) $ptr)->data
305 printf "\n"
306 xgetptr $w->start
307 set $tem = (struct Lisp_Marker *) $ptr
308 printf "start=%d end:", $tem->charpos
309 if ($w->window_end_valid != Qnil)
310 xgetint $w->window_end_pos
311 printf "pos=%d", $int
312 xgetint $w->window_end_vpos
313 printf " vpos=%d", $int
314 else
315 printf "invalid"
316 end
317 printf " vscroll=%d", $w->vscroll
318 if ($w->force_start != Qnil)
319 printf " FORCE_START"
320 end
321 if ($w->must_be_updated_p)
322 printf " MUST_UPD"
323 end
324 printf "\n"
325 printf "cursor: "
326 pcursorx $w->cursor
327 printf " phys: "
328 pcursorx $w->phys_cursor
329 if ($w->phys_cursor_on_p)
330 printf " ON"
331 else
332 printf " OFF"
333 end
334 printf " blk="
335 if ($w->last_cursor_off_p != $w->cursor_off_p)
336 if ($w->last_cursor_off_p)
337 printf "ON->"
338 else
339 printf "OFF->"
340 end
341 end
342 if ($w->cursor_off_p)
343 printf "ON"
344 else
345 printf "OFF"
346 end
347 printf "\n"
348 end
349 document pwinx
350 Pretty print a window structure.
351 Takes one argument, a pointer to a window structure
352 end
353
354 define pwin
355 pwinx w
356 end
357 document pwin
358 Pretty print window structure w.
359 end
360
361
362 define xtype
363 xgettype $
364 output $type
365 echo \n
366 if $type == Lisp_Misc
367 xmisctype
368 else
369 if $type == Lisp_Vectorlike
370 xvectype
371 end
372 end
373 end
374 document xtype
375 Print the type of $, assuming it is an Emacs Lisp value.
376 If the first type printed is Lisp_Vector or Lisp_Misc,
377 a second line gives the more precise type.
378 end
379
380 define xvectype
381 xgetptr $
382 set $size = ((struct Lisp_Vector *) $ptr)->size
383 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
384 echo \n
385 end
386 document xvectype
387 Print the size or vector subtype of $, assuming it is a vector or pseudovector.
388 end
389
390 define xmisctype
391 xgetptr $
392 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
393 echo \n
394 end
395 document xmisctype
396 Print the specific type of $, assuming it is some misc type.
397 end
398
399 define xint
400 xgetint $
401 print $int
402 end
403 document xint
404 Print $, assuming it is an Emacs Lisp integer. This gets the sign right.
405 end
406
407 define xptr
408 xgetptr $
409 print (void *) $ptr
410 end
411 document xptr
412 Print the pointer portion of $, assuming it is an Emacs Lisp value.
413 end
414
415 define xmarker
416 xgetptr $
417 print (struct Lisp_Marker *) $ptr
418 end
419 document xmarker
420 Print $ as a marker pointer, assuming it is an Emacs Lisp marker value.
421 end
422
423 define xoverlay
424 xgetptr $
425 print (struct Lisp_Overlay *) $ptr
426 end
427 document xoverlay
428 Print $ as a overlay pointer, assuming it is an Emacs Lisp overlay value.
429 end
430
431 define xmiscfree
432 xgetptr $
433 print (struct Lisp_Free *) $ptr
434 end
435 document xmiscfree
436 Print $ as a misc free-cell pointer, assuming it is an Emacs Lisp Misc value.
437 end
438
439 define xintfwd
440 xgetptr $
441 print (struct Lisp_Intfwd *) $ptr
442 end
443 document xintfwd
444 Print $ as an integer forwarding pointer, assuming it is an Emacs Lisp Misc value.
445 end
446
447 define xboolfwd
448 xgetptr $
449 print (struct Lisp_Boolfwd *) $ptr
450 end
451 document xboolfwd
452 Print $ as a boolean forwarding pointer, assuming it is an Emacs Lisp Misc value.
453 end
454
455 define xobjfwd
456 xgetptr $
457 print (struct Lisp_Objfwd *) $ptr
458 end
459 document xobjfwd
460 Print $ as an object forwarding pointer, assuming it is an Emacs Lisp Misc value.
461 end
462
463 define xbufobjfwd
464 xgetptr $
465 print (struct Lisp_Buffer_Objfwd *) $ptr
466 end
467 document xbufobjfwd
468 Print $ as a buffer-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
469 end
470
471 define xkbobjfwd
472 xgetptr $
473 print (struct Lisp_Kboard_Objfwd *) $ptr
474 end
475 document xkbobjfwd
476 Print $ as a kboard-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
477 end
478
479 define xbuflocal
480 xgetptr $
481 print (struct Lisp_Buffer_Local_Value *) $ptr
482 end
483 document xbuflocal
484 Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value.
485 end
486
487 define xsymbol
488 set $sym = $
489 xgetptr $sym
490 print (struct Lisp_Symbol *) $ptr
491 xprintsym $sym
492 echo \n
493 end
494 document xsymbol
495 Print the name and address of the symbol $.
496 This command assumes that $ is an Emacs Lisp symbol value.
497 end
498
499 define xstring
500 xgetptr $
501 print (struct Lisp_String *) $ptr
502 xprintstr $
503 echo \n
504 end
505 document xstring
506 Print the contents and address of the string $.
507 This command assumes that $ is an Emacs Lisp string value.
508 end
509
510 define xvector
511 xgetptr $
512 print (struct Lisp_Vector *) $ptr
513 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
514 echo \n
515 end
516 document xvector
517 Print the contents and address of the vector $.
518 This command assumes that $ is an Emacs Lisp vector value.
519 end
520
521 define xprocess
522 xgetptr $
523 print (struct Lisp_Process *) $ptr
524 output *$
525 echo \n
526 end
527 document xprocess
528 Print the address of the struct Lisp_process which the Lisp_Object $ points to.
529 end
530
531 define xframe
532 xgetptr $
533 print (struct frame *) $ptr
534 end
535 document xframe
536 Print $ as a frame pointer, assuming it is an Emacs Lisp frame value.
537 end
538
539 define xcompiled
540 xgetptr $
541 print (struct Lisp_Vector *) $ptr
542 output ($->contents[0])@($->size & 0xff)
543 end
544 document xcompiled
545 Print $ as a compiled function pointer, assuming it is an Emacs Lisp compiled value.
546 end
547
548 define xwindow
549 xgetptr $
550 print (struct window *) $ptr
551 set $window = (struct window *) $ptr
552 xgetint $window->total_cols
553 set $width=$int
554 xgetint $window->total_lines
555 set $height=$int
556 xgetint $window->left_col
557 set $left=$int
558 xgetint $window->top_line
559 set $top=$int
560 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
561 end
562 document xwindow
563 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
564 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
565 end
566
567 define xwinconfig
568 xgetptr $
569 print (struct save_window_data *) $ptr
570 end
571 document xwinconfig
572 Print $ as a window configuration pointer, assuming it is an Emacs Lisp window configuration value.
573 end
574
575 define xsubr
576 xgetptr $
577 print (struct Lisp_Subr *) $ptr
578 output *$
579 echo \n
580 end
581 document xsubr
582 Print the address of the subr which the Lisp_Object $ points to.
583 end
584
585 define xchartable
586 xgetptr $
587 print (struct Lisp_Char_Table *) $ptr
588 printf "Purpose: "
589 xprintsym $->purpose
590 printf " %d extra slots", ($->size & 0x1ff) - 388
591 echo \n
592 end
593 document xchartable
594 Print the address of the char-table $, and its purpose.
595 This command assumes that $ is an Emacs Lisp char-table value.
596 end
597
598 define xboolvector
599 xgetptr $
600 print (struct Lisp_Bool_Vector *) $ptr
601 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
602 echo \n
603 end
604 document xboolvector
605 Print the contents and address of the bool-vector $.
606 This command assumes that $ is an Emacs Lisp bool-vector value.
607 end
608
609 define xbuffer
610 xgetptr $
611 print (struct buffer *) $ptr
612 xgetptr $->name
613 output ((struct Lisp_String *) $ptr)->data
614 echo \n
615 end
616 document xbuffer
617 Set $ as a buffer pointer, assuming it is an Emacs Lisp buffer value.
618 Print the name of the buffer.
619 end
620
621 define xhashtable
622 xgetptr $
623 print (struct Lisp_Hash_Table *) $ptr
624 end
625 document xhashtable
626 Set $ as a hash table pointer, assuming it is an Emacs Lisp hash table value.
627 end
628
629 define xcons
630 xgetptr $
631 print (struct Lisp_Cons *) $ptr
632 output/x *$
633 echo \n
634 end
635 document xcons
636 Print the contents of $, assuming it is an Emacs Lisp cons.
637 end
638
639 define nextcons
640 p $.u.cdr
641 xcons
642 end
643 document nextcons
644 Print the contents of the next cell in a list.
645 This assumes that the last thing you printed was a cons cell contents
646 (type struct Lisp_Cons) or a pointer to one.
647 end
648 define xcar
649 xgetptr $
650 xgettype $
651 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
652 end
653 document xcar
654 Print the car of $, assuming it is an Emacs Lisp pair.
655 end
656
657 define xcdr
658 xgetptr $
659 xgettype $
660 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
661 end
662 document xcdr
663 Print the cdr of $, assuming it is an Emacs Lisp pair.
664 end
665
666 define xfloat
667 xgetptr $
668 print ((struct Lisp_Float *) $ptr)->u.data
669 end
670 document xfloat
671 Print $ assuming it is a lisp floating-point number.
672 end
673
674 define xscrollbar
675 xgetptr $
676 print (struct scrollbar *) $ptr
677 output *$
678 echo \n
679 end
680 document xscrollbar
681 Print $ as a scrollbar pointer.
682 end
683
684 define xprintstr
685 set $data = $arg0->data
686 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
687 end
688
689 define xprintsym
690 xgetptr $arg0
691 set $sym = (struct Lisp_Symbol *) $ptr
692 xgetptr $sym->xname
693 set $sym_name = (struct Lisp_String *) $ptr
694 xprintstr $sym_name
695 end
696 document xprintsym
697 Print argument as a symbol.
698 end
699
700 define xbacktrace
701 set $bt = backtrace_list
702 while $bt
703 xgettype (*$bt->function)
704 if $type == Lisp_Symbol
705 xprintsym (*$bt->function)
706 echo \n
707 else
708 printf "0x%x ", *$bt->function
709 if $type == Lisp_Vectorlike
710 xgetptr (*$bt->function)
711 set $size = ((struct Lisp_Vector *) $ptr)->size
712 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
713 else
714 printf "Lisp type %d", $type
715 end
716 echo \n
717 end
718 set $bt = $bt->next
719 end
720 end
721 document xbacktrace
722 Print a backtrace of Lisp function calls from backtrace_list.
723 Set a breakpoint at Fsignal and call this to see from where
724 an error was signaled.
725 end
726
727 # Show Lisp backtrace after normal backtrace.
728 define hookpost-backtrace
729 set $bt = backtrace_list
730 if $bt
731 echo \n
732 echo Lisp Backtrace:\n
733 xbacktrace
734 end
735 end
736
737 define xreload
738 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
739 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
740 end
741 document xreload
742 When starting Emacs a second time in the same gdb session under
743 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
744 their values. (The same happens on current (2000) versions of GNU/Linux
745 with gdb 5.0.)
746 This function reloads them.
747 end
748 xreload
749
750 # Flush display (X only)
751 define ff
752 set x_flush (0)
753 end
754 document ff
755 Flush pending X window display updates to screen.
756 Works only when an inferior emacs is executing.
757 end
758
759
760 define hook-run
761 xreload
762 end
763
764 # Call xreload if a new Emacs executable is loaded.
765 define hookpost-run
766 xreload
767 end
768
769 set print pretty on
770 set print sevenbit-strings
771
772 show environment DISPLAY
773 show environment TERM
774 set args -geometry 80x40+0+0
775
776 # People get bothered when they see messages about non-existent functions...
777 xgetptr Vsystem_type
778 # $ptr is NULL in temacs
779 if ($ptr != 0)
780 set $tem = (struct Lisp_Symbol *) $ptr
781 xgetptr $tem->xname
782 set $tem = (struct Lisp_String *) $ptr
783 set $tem = (char *) $tem->data
784
785 # Don't let abort actually run, as it will make stdio stop working and
786 # therefore the `pr' command above as well.
787 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
788 # The windows-nt build replaces abort with its own function.
789 break w32_abort
790 else
791 break abort
792 end
793 end
794
795 # x_error_quitter is defined only on X. But window-system is set up
796 # only at run time, during Emacs startup, so we need to defer setting
797 # the breakpoint. init_sys_modes is the first function called on
798 # every platform after init_display, where window-system is set.
799 tbreak init_sys_modes
800 commands
801 silent
802 xgetptr Vwindow_system
803 set $tem = (struct Lisp_Symbol *) $ptr
804 xgetptr $tem->xname
805 set $tem = (struct Lisp_String *) $ptr
806 set $tem = (char *) $tem->data
807 # If we are running in synchronous mode, we want a chance to look
808 # around before Emacs exits. Perhaps we should put the break
809 # somewhere else instead...
810 if $tem[0] == 'x' && $tem[1] == '\0'
811 break x_error_quitter
812 end
813 continue
814 end
815 # arch-tag: 12f34321-7bfa-4240-b77a-3cd3a1696dfe