Mercurial > hg > xemacs-beta
comparison src/bufslots.h @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | abe6d1db359e |
comparison
equal
deleted
inserted
replaced
427:0a0253eac470 | 428:3ecd8885ac67 |
---|---|
1 /* Definitions of marked slots in buffers | |
2 Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc. | |
3 | |
4 This file is part of XEmacs. | |
5 | |
6 XEmacs is free software; you can redistribute it and/or modify it | |
7 under the terms of the GNU General Public License as published by the | |
8 Free Software Foundation; either version 2, or (at your option) any | |
9 later version. | |
10 | |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with XEmacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
19 Boston, MA 02111-1307, USA. */ | |
20 | |
21 /* Synched up with: Mule 2.0, FSF 19.30. Split out of buffer.h. */ | |
22 | |
23 /* Authorship: | |
24 | |
25 FSF: long ago (part of buffer.h). | |
26 JWZ: separated out from buffer.h, early in Lemacs. | |
27 XEmacs: a few other changes. | |
28 */ | |
29 | |
30 /* In the declaration of the buffer structure, this file is included | |
31 after defining MARKED_SLOT(x) to be Lisp_Object x; i.e. just a slot | |
32 definition. In the garbage collector this file is included after | |
33 defining MARKED_SLOT(x) to be mark_object(buffer->x). */ | |
34 | |
35 #ifndef BUFFER_SLOTS_FIRST_NAME | |
36 #define BUFFER_SLOTS_FIRST_NAME name | |
37 #endif | |
38 | |
39 /* The name of this buffer. */ | |
40 MARKED_SLOT (name); | |
41 | |
42 /* The name of the file visited in this buffer, or nil. */ | |
43 MARKED_SLOT (filename); | |
44 | |
45 /* Dir for expanding relative file names. */ | |
46 MARKED_SLOT (directory); | |
47 | |
48 /* True iff this buffer has been backed up (if you write to the | |
49 visited file and it hasn't been backed up, then a backup will | |
50 be made). */ | |
51 /* #### This isn't really used by the C code, so could be deleted. */ | |
52 MARKED_SLOT (backed_up); | |
53 | |
54 /* Length of file when last read or saved. | |
55 This is not in the struct buffer_text | |
56 because it's not used in indirect buffers at all. */ | |
57 MARKED_SLOT (saved_size); | |
58 | |
59 /* File name used for auto-saving this buffer. | |
60 This is not in the struct buffer_text | |
61 because it's not used in indirect buffers at all. */ | |
62 MARKED_SLOT (auto_save_file_name); | |
63 | |
64 /* Non-nil if buffer read-only. */ | |
65 MARKED_SLOT (read_only); | |
66 | |
67 /* "The mark". This is a marker which may | |
68 point into this buffer or may point nowhere. */ | |
69 MARKED_SLOT (mark); | |
70 | |
71 /* Alist of elements (SYMBOL . VALUE-IN-THIS-BUFFER) | |
72 for all per-buffer variables of this buffer. | |
73 Specifically, this lists those variables that have | |
74 a buffer-local value in this buffer: i.e. those | |
75 whose value does not shadow the default value. | |
76 (Remember that for any particular variable created | |
77 with `make-local-variable' or `make-variable-buffer-local', | |
78 it will have a per-buffer value in some buffers and a | |
79 default value in others.) | |
80 | |
81 Variables declared in C with DEFVAR_BUFFER_LOCAL() (i.e. | |
82 those stored in the struct buffer) are not listed here. */ | |
83 MARKED_SLOT (local_var_alist); | |
84 | |
85 /* Symbol naming major mode (eg, lisp-mode). */ | |
86 MARKED_SLOT (major_mode); | |
87 | |
88 /* Pretty name of major mode (eg, "Lisp"). */ | |
89 MARKED_SLOT (mode_name); | |
90 | |
91 /* Modeline element that controls format of modeline. */ | |
92 MARKED_SLOT (modeline_format); | |
93 | |
94 /* Keys that are bound local to this buffer. */ | |
95 MARKED_SLOT (keymap); | |
96 | |
97 /* This buffer's local abbrev table. */ | |
98 MARKED_SLOT (abbrev_table); | |
99 /* This buffer's syntax table. */ | |
100 MARKED_SLOT (syntax_table); | |
101 /* Massaged values from the syntax table, for faster lookup. */ | |
102 MARKED_SLOT (mirror_syntax_table); | |
103 | |
104 #ifdef MULE | |
105 /* This buffer's category table. */ | |
106 MARKED_SLOT (category_table); | |
107 #endif /* MULE */ | |
108 #ifdef FILE_CODING | |
109 /* This buffer's coding system. */ | |
110 MARKED_SLOT (buffer_file_coding_system); | |
111 #endif | |
112 /* Values of several buffer-local variables. | |
113 | |
114 tab-width is buffer-local so that redisplay can find it | |
115 in buffers that are not current */ | |
116 MARKED_SLOT (case_fold_search); | |
117 MARKED_SLOT (tab_width); | |
118 MARKED_SLOT (fill_column); | |
119 MARKED_SLOT (left_margin); | |
120 | |
121 /* Function to call when insert space past fill column. */ | |
122 MARKED_SLOT (auto_fill_function); | |
123 | |
124 /* Case table for case-conversion in this buffer. | |
125 This char-table maps each char into its lower-case version. */ | |
126 MARKED_SLOT (downcase_table); | |
127 /* Char-table mapping each char to its upper-case version. */ | |
128 MARKED_SLOT (upcase_table); | |
129 | |
130 /* Char-table for conversion for case-folding search. */ | |
131 MARKED_SLOT (case_canon_table); | |
132 /* Char-table of equivalences for case-folding search. */ | |
133 MARKED_SLOT (case_eqv_table); | |
134 | |
135 #ifdef MULE | |
136 /* #### The purpose of these bogos is to deal with the fact that | |
137 the Boyer-Moore and regex searching routines don't know how to | |
138 deal with translating multi-byte characters. Fixing this is hard, | |
139 so instead we maintain these mirror tables that have all incorrect | |
140 mappings (see casetab.c) sanitized out of them. If we don't do | |
141 this, we may get weird and unpredictable results in the presence | |
142 of extended chars and extended mappings, and it could even lead | |
143 to a crash. | |
144 | |
145 #### Eventually we should deal with this properly. */ | |
146 MARKED_SLOT (mirror_downcase_table); | |
147 MARKED_SLOT (mirror_upcase_table); | |
148 MARKED_SLOT (mirror_case_canon_table); | |
149 MARKED_SLOT (mirror_case_eqv_table); | |
150 #endif | |
151 | |
152 /* #### This ought to be a specifier: */ | |
153 /* Non-nil means do not display continuation lines. */ | |
154 MARKED_SLOT (truncate_lines); | |
155 /* #### This ought to be a specifier: */ | |
156 /* #### Better yet, it ought to be junked. It really sucks. */ | |
157 /* Non-nil means display ctl chars with uparrow. */ | |
158 MARKED_SLOT (ctl_arrow); | |
159 /* #### This ought to be a specifier: */ | |
160 /* #### Better yet, it ought to be junked. It really sucks. */ | |
161 /* Non-nil means do selective display; | |
162 see doc string in syms_of_buffer (buffer.c) for details. */ | |
163 MARKED_SLOT (selective_display); | |
164 /* #### This ought to be a specifier: */ | |
165 /* #### Better yet, it ought to be junked. It really sucks. */ | |
166 /* Non-nil means show ... at end of line followed by invisible lines. */ | |
167 MARKED_SLOT (selective_display_ellipses); | |
168 /* Alist of (FUNCTION . STRING) for each minor mode enabled in buffer. */ | |
169 /* Unused: MARKED_SLOT (minor_modes); */ | |
170 /* t if "self-insertion" should overwrite */ | |
171 MARKED_SLOT (overwrite_mode); | |
172 /* non-nil means abbrev mode is on. Expand abbrevs automatically. */ | |
173 MARKED_SLOT (abbrev_mode); | |
174 | |
175 /* No display table here. It's a specifier. */ | |
176 #if 0 /* FSFmacs */ | |
177 /* t means the mark and region are currently active. */ | |
178 MARKED_SLOT (mark_active); | |
179 #endif | |
180 | |
181 /* Changes in the buffer are recorded here for undo. | |
182 t means don't record anything. | |
183 This information belongs to the base buffer of an indirect buffer, | |
184 But we can't store it in the struct buffer_text | |
185 because local variables have to be right in the struct buffer. | |
186 So we copy it around in set_buffer_internal. */ | |
187 MARKED_SLOT (undo_list); | |
188 | |
189 /* FSFmacs has overlay stuff here. We have extent info elsewhere in the | |
190 struct buffer. */ | |
191 | |
192 /* If dedicated_frame is non-nil, display_buffer tries to use it instead | |
193 of the current frame */ | |
194 MARKED_SLOT (dedicated_frame); | |
195 | |
196 /* Lisp of symbols naming the file format used for visited file. */ | |
197 MARKED_SLOT (file_format); | |
198 | |
199 #ifdef REGION_CACHE_NEEDS_WORK | |
200 /* True if the newline position cache and width run cache are | |
201 enabled. See search.c and indent.c. */ | |
202 MARKED_SLOT (cache_long_line_scans); | |
203 | |
204 /* If the width run cache is enabled, this table contains the | |
205 character widths width_run_cache (see above) assumes. When we | |
206 do a thorough redisplay, we compare this against the buffer's | |
207 current display table to see whether the display table has | |
208 affected the widths of any characters. If it has, we | |
209 invalidate the width run cache, and re-initialize width_table. */ | |
210 MARKED_SLOT (width_table); | |
211 #endif /* REGION_CACHE_NEEDS_WORK */ | |
212 | |
213 /* A redundant copy of text.pt, in the form of a marker. Every time one | |
214 is updated, so is the other. | |
215 */ | |
216 MARKED_SLOT (point_marker); | |
217 | |
218 /* FSFmacs has pt_marker, begv_marker, zv_marker here, used for | |
219 indirect buffers. We don't need them because we handle these | |
220 values directly instead of playing games with markers. */ | |
221 | |
222 /* This holds the point value before the last scroll operation. | |
223 Explicitly setting point sets this to nil. */ | |
224 MARKED_SLOT (point_before_scroll); | |
225 | |
226 /* Truename of the visited file (via the realpath() system call), | |
227 or nil. */ | |
228 MARKED_SLOT (file_truename); | |
229 | |
230 /* Invisibility spec of this buffer. | |
231 t => any non-nil `invisible' property means invisible. | |
232 A list => `invisible' property means invisible | |
233 if it is memq in that list. */ | |
234 MARKED_SLOT (invisibility_spec); | |
235 | |
236 /* The string generated by formatting the modeline in this buffer. */ | |
237 MARKED_SLOT (generated_modeline_string); | |
238 | |
239 /* A hash table that maps from a "generic extent" (an extent in | |
240 `modeline-format') into a buffer-specific extent. */ | |
241 MARKED_SLOT (modeline_extent_table); | |
242 | |
243 #ifndef BUFFER_SLOTS_LAST_NAME | |
244 #define BUFFER_SLOTS_LAST_NAME modeline_extent_table | |
245 #endif | |
246 | |
247 #if 0 /* FSFmacs */ | |
248 /* This is silly and stupid */ | |
249 /* These are so we don't have to recompile everything | |
250 the next few times we add a new slot. */ | |
251 MARKED_SLOT (extra1, extra2, extra3); | |
252 #endif |