Commit | Line | Data |
---|---|---|
a6ffc6a2 JB |
1 | # Set up something to print out s-expressions. |
2 | define pr | |
36fa5981 | 3 | set debug_print ($) |
a6ffc6a2 JB |
4 | echo \n |
5 | end | |
a6ffc6a2 JB |
6 | document pr |
7 | Print the emacs s-expression which is $. | |
8 | Works only when an inferior emacs is executing. | |
9 | end | |
10 | ||
ec558adc JB |
11 | # Set this to the same thing as the DATA_SEG_BITS macro in your |
12 | # machine-description files. | |
13 | set $data_seg_bits = 0 | |
14 | ||
45c18993 JB |
15 | define mips |
16 | set $data_seg_bits = 0x10000000 | |
17 | end | |
18 | document mips | |
19 | Set up the xfoo macros to deal with the MIPS processor. | |
20 | Specifically, this sets $data_seg_bits to the right thing. | |
21 | end | |
22 | ||
a6ffc6a2 | 23 | define xtype |
3fe8bda5 RS |
24 | output (enum Lisp_Type) (($ >> 28) & 0x7) |
25 | echo \n | |
26 | output ((($ >> 28) & 0x7) == Lisp_Misc ? (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & 0x0fffffff) | $data_seg_bits))->type) : (($ >> 28) & 0x7) == Lisp_Vectorlike ? ($size = ((struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits))->size, (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0)) : 0) | |
ef15f270 | 27 | echo \n |
a6ffc6a2 | 28 | end |
e065a56e | 29 | document xtype |
ba1e23bf | 30 | Print the type of $, assuming it is an Emacs Lisp value. |
3fe8bda5 RS |
31 | If the first type printed is Lisp_Vector or Lisp_Misc, |
32 | the second line gives the more precise type. | |
33 | Otherwise the second line doesn't mean anything. | |
34 | end | |
35 | ||
36 | define xvectype | |
37 | set $size = ((struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits))->size | |
38 | output (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0) | |
39 | echo \n | |
40 | end | |
41 | document xvectype | |
42 | Print the vector subtype of $, assuming it is a vector or pseudovector. | |
43 | end | |
44 | ||
45 | define xmisctype | |
46 | output (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & 0x0fffffff) | $data_seg_bits))->type) | |
47 | echo \n | |
48 | end | |
49 | document xmisctype | |
50 | Print the specific type of $, assuming it is some misc type. | |
e065a56e | 51 | end |
a6ffc6a2 JB |
52 | |
53 | define xint | |
dcda44dd | 54 | print (($ & 0x0fffffff) << 4) >> 4 |
a6ffc6a2 | 55 | end |
e065a56e | 56 | document xint |
ba1e23bf | 57 | Print $, assuming it is an Emacs Lisp integer. This gets the sign right. |
e065a56e | 58 | end |
a6ffc6a2 JB |
59 | |
60 | define xptr | |
3fe8bda5 | 61 | print (void *) (($ & 0x0fffffff) | $data_seg_bits) |
a6ffc6a2 | 62 | end |
e065a56e | 63 | document xptr |
ba1e23bf | 64 | Print the pointer portion of $, assuming it is an Emacs Lisp value. |
e065a56e | 65 | end |
a6ffc6a2 JB |
66 | |
67 | define xwindow | |
3fe8bda5 | 68 | print (struct window *) (($ & 0x0fffffff) | $data_seg_bits) |
ef15f270 | 69 | printf "%dx%d+%d+%d\n", $->width, $->height, $->left, $->top |
a6ffc6a2 | 70 | end |
e065a56e | 71 | document xwindow |
ba1e23bf | 72 | Print $ as a window pointer, assuming it is an Emacs Lisp window value. |
ef15f270 | 73 | Print the window's position as "WIDTHxHEIGHT+LEFT+TOP". |
e065a56e | 74 | end |
a6ffc6a2 JB |
75 | |
76 | define xmarker | |
3fe8bda5 | 77 | print (struct Lisp_Marker *) (($ & 0x0fffffff) | $data_seg_bits) |
a6ffc6a2 | 78 | end |
e065a56e | 79 | document xmarker |
ba1e23bf | 80 | Print $ as a marker pointer, assuming it is an Emacs Lisp marker value. |
e065a56e | 81 | end |
a6ffc6a2 JB |
82 | |
83 | define xbuffer | |
3fe8bda5 RS |
84 | print (struct buffer *) (($ & 0x0fffffff) | $data_seg_bits) |
85 | output &((struct Lisp_String *) ((($->name) & 0x0fffffff) | $data_seg_bits))->data | |
ef15f270 | 86 | echo \n |
a6ffc6a2 | 87 | end |
e065a56e | 88 | document xbuffer |
ba1e23bf | 89 | Set $ as a buffer pointer, assuming it is an Emacs Lisp buffer value. |
daa37602 | 90 | Print the name of the buffer. |
e065a56e | 91 | end |
a6ffc6a2 JB |
92 | |
93 | define xsymbol | |
3fe8bda5 | 94 | print (struct Lisp_Symbol *) ((((int) $) & 0x0fffffff) | $data_seg_bits) |
ef15f270 JB |
95 | output &$->name->data |
96 | echo \n | |
a6ffc6a2 | 97 | end |
e065a56e JB |
98 | document xsymbol |
99 | Print the name and address of the symbol $. | |
ba1e23bf | 100 | This command assumes that $ is an Emacs Lisp symbol value. |
e065a56e | 101 | end |
a6ffc6a2 JB |
102 | |
103 | define xstring | |
3fe8bda5 | 104 | print (struct Lisp_String *) (($ & 0x0fffffff) | $data_seg_bits) |
4ea0847a | 105 | output ($->size > 1000) ? 0 : ($->data[0])@($->size) |
ef15f270 | 106 | echo \n |
a6ffc6a2 | 107 | end |
a6ffc6a2 | 108 | document xstring |
e065a56e | 109 | Print the contents and address of the string $. |
ba1e23bf | 110 | This command assumes that $ is an Emacs Lisp string value. |
a6ffc6a2 JB |
111 | end |
112 | ||
113 | define xvector | |
3fe8bda5 | 114 | print (struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits) |
4ea0847a | 115 | output ($->size > 50) ? 0 : ($->contents[0])@($->size) |
ef15f270 | 116 | echo \n |
a6ffc6a2 | 117 | end |
a6ffc6a2 | 118 | document xvector |
e065a56e | 119 | Print the contents and address of the vector $. |
ba1e23bf | 120 | This command assumes that $ is an Emacs Lisp vector value. |
a6ffc6a2 JB |
121 | end |
122 | ||
ec558adc | 123 | define xframe |
3fe8bda5 | 124 | print (struct frame *) (($ & 0x0fffffff) | $data_seg_bits) |
a6ffc6a2 | 125 | end |
ec558adc | 126 | document xframe |
ba1e23bf | 127 | Print $ as a frame pointer, assuming it is an Emacs Lisp frame value. |
e065a56e | 128 | end |
a6ffc6a2 JB |
129 | |
130 | define xcons | |
3fe8bda5 | 131 | print (struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits) |
cac29370 | 132 | output *$ |
ef15f270 | 133 | echo \n |
a6ffc6a2 | 134 | end |
e065a56e | 135 | document xcons |
ba1e23bf | 136 | Print the contents of $, assuming it is an Emacs Lisp cons. |
e065a56e | 137 | end |
a6ffc6a2 JB |
138 | |
139 | define xcar | |
6a044d86 | 140 | print ((($ >> 28) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits))->car : 0) |
a6ffc6a2 | 141 | end |
e065a56e | 142 | document xcar |
ba1e23bf | 143 | Print the car of $, assuming it is an Emacs Lisp pair. |
e065a56e | 144 | end |
a6ffc6a2 JB |
145 | |
146 | define xcdr | |
6a044d86 | 147 | print ((($ >> 28) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits))->cdr : 0) |
a6ffc6a2 | 148 | end |
e065a56e | 149 | document xcdr |
ba1e23bf | 150 | Print the cdr of $, assuming it is an Emacs Lisp pair. |
e065a56e | 151 | end |
a6ffc6a2 | 152 | |
ec558adc | 153 | define xsubr |
3fe8bda5 | 154 | print (struct Lisp_Subr *) (($ & 0x0fffffff) | $data_seg_bits) |
ec558adc JB |
155 | output *$ |
156 | echo \n | |
157 | end | |
158 | document xsubr | |
159 | Print the address of the subr which the Lisp_Object $ points to. | |
160 | end | |
161 | ||
8dd926ca | 162 | define xprocess |
3fe8bda5 | 163 | print (struct Lisp_Process *) (($ & 0x0fffffff) | $data_seg_bits) |
8dd926ca JB |
164 | output *$ |
165 | echo \n | |
166 | end | |
167 | document xprocess | |
168 | Print the address of the struct Lisp_process which the Lisp_Object $ points to. | |
169 | end | |
170 | ||
df86e57e | 171 | define xfloat |
3fe8bda5 | 172 | print ((struct Lisp_Float *) (($ & 0x0fffffff) | $data_seg_bits))->data |
df86e57e JB |
173 | end |
174 | document xfloat | |
175 | Print $ assuming it is a lisp floating-point number. | |
176 | end | |
177 | ||
b2367490 | 178 | define xscrollbar |
3fe8bda5 | 179 | print (struct scrollbar *) (($ & 0x0fffffff) | $data_seg_bits) |
b2367490 JB |
180 | output *$ |
181 | echo \n | |
182 | end | |
dec5f4e3 | 183 | document xscrollbar |
b2367490 JB |
184 | Print $ as a scrollbar pointer. |
185 | end | |
186 | ||
e065a56e | 187 | set print pretty on |
df86e57e | 188 | set print sevenbit-strings |
a6ffc6a2 | 189 | |
e5d77022 | 190 | show environment DISPLAY |
6f5d1a4f | 191 | show environment TERM |
6f5d1a4f | 192 | set args -geometry 80x40+0+0 |
e5d77022 | 193 | |
a6ffc6a2 | 194 | # Don't let abort actually run, as it will make |
7f692070 | 195 | # stdio stop working and therefore the `pr' command above as well. |
a6ffc6a2 JB |
196 | break abort |
197 | ||
198 | # If we are running in synchronous mode, we want a chance to look around | |
199 | # before Emacs exits. Perhaps we should put the break somewhere else | |
200 | # instead... | |
998ee976 RS |
201 | break x_error_quitter |
202 | ||
a6ffc6a2 | 203 |