Mercurial > emacs
annotate src/buffer.c @ 4100:f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
put just the symbol in the result, not a cons of (symbol . value).
| author | Richard M. Stallman <rms@gnu.org> |
|---|---|
| date | Thu, 15 Jul 1993 05:36:59 +0000 |
| parents | a860278e3ab3 |
| children | 616036bb2427 |
| rev | line source |
|---|---|
| 333 | 1 /* Buffer manipulation primitives for GNU Emacs. |
| 2961 | 2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993 |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
3 Free Software Foundation, Inc. |
| 333 | 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 | |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
9 the Free Software Foundation; either version 2, or (at your option) |
| 333 | 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 | |
| 19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
| 20 | |
| 21 | |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
22 #include <sys/types.h> |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
23 #include <sys/stat.h> |
| 333 | 24 #include <sys/param.h> |
| 25 | |
| 26 #ifndef MAXPATHLEN | |
| 27 /* in 4.1, param.h fails to define this. */ | |
| 28 #define MAXPATHLEN 1024 | |
| 29 #endif /* not MAXPATHLEN */ | |
| 30 | |
| 31 #include "config.h" | |
| 32 #include "lisp.h" | |
|
1308
2660a7053836
* buffer.c: #include intervals.h.
Joseph Arceneaux <jla@gnu.org>
parents:
1291
diff
changeset
|
33 #include "intervals.h" |
| 333 | 34 #include "window.h" |
| 35 #include "commands.h" | |
| 36 #include "buffer.h" | |
| 37 #include "syntax.h" | |
| 38 #include "indent.h" | |
| 2480 | 39 #include "blockinput.h" |
| 333 | 40 |
| 41 struct buffer *current_buffer; /* the current buffer */ | |
| 42 | |
| 43 /* First buffer in chain of all buffers (in reverse order of creation). | |
| 44 Threaded through ->next. */ | |
| 45 | |
| 46 struct buffer *all_buffers; | |
| 47 | |
| 48 /* This structure holds the default values of the buffer-local variables | |
| 49 defined with DEFVAR_PER_BUFFER, that have special slots in each buffer. | |
| 50 The default value occupies the same slot in this structure | |
| 51 as an individual buffer's value occupies in that buffer. | |
| 52 Setting the default value also goes through the alist of buffers | |
| 53 and stores into each buffer that does not say it has a local value. */ | |
| 54 | |
| 55 struct buffer buffer_defaults; | |
| 56 | |
| 57 /* A Lisp_Object pointer to the above, used for staticpro */ | |
| 58 | |
| 59 static Lisp_Object Vbuffer_defaults; | |
| 60 | |
| 61 /* This structure marks which slots in a buffer have corresponding | |
| 62 default values in buffer_defaults. | |
| 63 Each such slot has a nonzero value in this structure. | |
| 64 The value has only one nonzero bit. | |
| 65 | |
| 66 When a buffer has its own local value for a slot, | |
| 67 the bit for that slot (found in the same slot in this structure) | |
| 68 is turned on in the buffer's local_var_flags slot. | |
| 69 | |
| 70 If a slot in this structure is -1, then even though there may | |
| 71 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it; | |
| 72 and the corresponding slot in buffer_defaults is not used. | |
| 73 | |
| 74 If a slot is -2, then there is no DEFVAR_PER_BUFFER for it, | |
| 75 but there is a default value which is copied into each buffer. | |
| 76 | |
| 77 If a slot in this structure is negative, then even though there may | |
| 78 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it; | |
| 79 and the corresponding slot in buffer_defaults is not used. | |
| 80 | |
| 81 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is | |
| 82 zero, that is a bug */ | |
| 83 | |
| 84 struct buffer buffer_local_flags; | |
| 85 | |
| 86 /* This structure holds the names of symbols whose values may be | |
| 87 buffer-local. It is indexed and accessed in the same way as the above. */ | |
| 88 | |
| 89 struct buffer buffer_local_symbols; | |
| 90 /* A Lisp_Object pointer to the above, used for staticpro */ | |
| 91 static Lisp_Object Vbuffer_local_symbols; | |
| 92 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
93 /* This structure holds the required types for the values in the |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
94 buffer-local slots. If a slot contains Qnil, then the |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
95 corresponding buffer slot may contain a value of any type. If a |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
96 slot contains an integer, then prospective values' tags must be |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
97 equal to that integer. When a tag does not match, the function |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
98 buffer_slot_type_mismatch will signal an error. */ |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
99 struct buffer buffer_local_types; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
100 |
| 333 | 101 Lisp_Object Fset_buffer (); |
| 392 | 102 void set_buffer_internal (); |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
103 static void call_overlay_mod_hooks (); |
| 333 | 104 |
| 105 /* Alist of all buffer names vs the buffers. */ | |
| 106 /* This used to be a variable, but is no longer, | |
| 107 to prevent lossage due to user rplac'ing this alist or its elements. */ | |
| 108 Lisp_Object Vbuffer_alist; | |
| 109 | |
| 110 /* Functions to call before and after each text change. */ | |
| 111 Lisp_Object Vbefore_change_function; | |
| 112 Lisp_Object Vafter_change_function; | |
| 113 | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
114 Lisp_Object Vtransient_mark_mode; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
115 |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
116 /* t means ignore all read-only text properties. |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
117 A list means ignore such a property if its value is a member of the list. |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
118 Any non-nil value means ignore buffer-read-only. */ |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
119 Lisp_Object Vinhibit_read_only; |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
120 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
121 /* List of functions to call before changing an unmodified buffer. */ |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
122 Lisp_Object Vfirst_change_hook; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
123 Lisp_Object Qfirst_change_hook; |
| 333 | 124 |
| 125 Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local; | |
| 126 | |
| 127 Lisp_Object Qprotected_field; | |
| 128 | |
| 129 Lisp_Object QSFundamental; /* A string "Fundamental" */ | |
| 130 | |
| 131 Lisp_Object Qkill_buffer_hook; | |
| 132 | |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
133 Lisp_Object Qoverlayp; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
134 |
| 333 | 135 /* For debugging; temporary. See set_buffer_internal. */ |
| 136 /* Lisp_Object Qlisp_mode, Vcheck_symbol; */ | |
| 137 | |
| 138 nsberror (spec) | |
| 139 Lisp_Object spec; | |
| 140 { | |
| 141 if (XTYPE (spec) == Lisp_String) | |
| 142 error ("No buffer named %s", XSTRING (spec)->data); | |
| 143 error ("Invalid buffer argument"); | |
| 144 } | |
| 145 | |
| 146 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 0, 0, | |
| 147 "Return a list of all existing live buffers.") | |
| 148 () | |
| 149 { | |
| 150 return Fmapcar (Qcdr, Vbuffer_alist); | |
| 151 } | |
| 152 | |
| 153 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0, | |
| 154 "Return the buffer named NAME (a string).\n\ | |
| 155 If there is no live buffer named NAME, return nil.\n\ | |
| 156 NAME may also be a buffer; if so, the value is that buffer.") | |
| 157 (name) | |
| 158 register Lisp_Object name; | |
| 159 { | |
| 160 if (XTYPE (name) == Lisp_Buffer) | |
| 161 return name; | |
| 162 CHECK_STRING (name, 0); | |
| 163 | |
| 164 return Fcdr (Fassoc (name, Vbuffer_alist)); | |
| 165 } | |
| 166 | |
| 167 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0, | |
| 168 "Return the buffer visiting file FILENAME (a string).\n\ | |
| 169 If there is no such live buffer, return nil.") | |
| 170 (filename) | |
| 171 register Lisp_Object filename; | |
| 172 { | |
| 173 register Lisp_Object tail, buf, tem; | |
| 174 CHECK_STRING (filename, 0); | |
| 175 filename = Fexpand_file_name (filename, Qnil); | |
| 176 | |
| 177 for (tail = Vbuffer_alist; CONSP (tail); tail = XCONS (tail)->cdr) | |
| 178 { | |
| 179 buf = Fcdr (XCONS (tail)->car); | |
| 180 if (XTYPE (buf) != Lisp_Buffer) continue; | |
| 181 if (XTYPE (XBUFFER (buf)->filename) != Lisp_String) continue; | |
| 182 tem = Fstring_equal (XBUFFER (buf)->filename, filename); | |
| 485 | 183 if (!NILP (tem)) |
| 333 | 184 return buf; |
| 185 } | |
| 186 return Qnil; | |
| 187 } | |
| 188 | |
| 189 /* Incremented for each buffer created, to assign the buffer number. */ | |
| 190 int buffer_count; | |
| 191 | |
| 192 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0, | |
| 193 "Return the buffer named NAME, or create such a buffer and return it.\n\ | |
| 194 A new buffer is created if there is no live buffer named NAME.\n\ | |
|
1195
beefc235076e
* buffer.c (Fget_buffer_create): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1041
diff
changeset
|
195 If NAME starts with a space, the new buffer does not keep undo information.\n\ |
| 333 | 196 If NAME is a buffer instead of a string, then it is the value returned.\n\ |
| 197 The value is never nil.") | |
| 198 (name) | |
| 199 register Lisp_Object name; | |
| 200 { | |
| 201 register Lisp_Object buf, function, tem; | |
| 202 int count = specpdl_ptr - specpdl; | |
| 203 register struct buffer *b; | |
| 204 | |
| 205 buf = Fget_buffer (name); | |
| 485 | 206 if (!NILP (buf)) |
| 333 | 207 return buf; |
| 208 | |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
209 b = (struct buffer *) xmalloc (sizeof (struct buffer)); |
| 333 | 210 |
| 211 BUF_GAP_SIZE (b) = 20; | |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
212 BLOCK_INPUT; |
| 333 | 213 BUFFER_ALLOC (BUF_BEG_ADDR (b), BUF_GAP_SIZE (b)); |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
214 UNBLOCK_INPUT; |
| 333 | 215 if (! BUF_BEG_ADDR (b)) |
| 216 memory_full (); | |
| 217 | |
| 218 BUF_PT (b) = 1; | |
| 219 BUF_GPT (b) = 1; | |
| 220 BUF_BEGV (b) = 1; | |
| 221 BUF_ZV (b) = 1; | |
| 222 BUF_Z (b) = 1; | |
| 223 BUF_MODIFF (b) = 1; | |
| 224 | |
| 225 /* Put this on the chain of all buffers including killed ones. */ | |
| 226 b->next = all_buffers; | |
| 227 all_buffers = b; | |
| 228 | |
| 229 b->mark = Fmake_marker (); | |
| 230 /*b->number = make_number (++buffer_count);*/ | |
| 231 b->name = name; | |
| 232 if (XSTRING (name)->data[0] != ' ') | |
| 233 b->undo_list = Qnil; | |
| 234 else | |
| 235 b->undo_list = Qt; | |
| 236 | |
| 237 reset_buffer (b); | |
| 238 | |
| 239 /* Put this in the alist of all live buffers. */ | |
| 240 XSET (buf, Lisp_Buffer, b); | |
| 241 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil)); | |
| 242 | |
| 243 b->mark = Fmake_marker (); | |
| 244 b->markers = Qnil; | |
| 245 b->name = name; | |
| 246 | |
| 247 function = buffer_defaults.major_mode; | |
| 485 | 248 if (NILP (function)) |
| 333 | 249 { |
| 250 tem = Fget (current_buffer->major_mode, Qmode_class); | |
| 251 if (EQ (tem, Qnil)) | |
| 252 function = current_buffer->major_mode; | |
| 253 } | |
| 254 | |
| 485 | 255 if (NILP (function) || EQ (function, Qfundamental_mode)) |
| 333 | 256 return buf; |
| 257 | |
| 258 /* To select a nonfundamental mode, | |
| 259 select the buffer temporarily and then call the mode function. */ | |
| 260 | |
| 261 record_unwind_protect (save_excursion_restore, save_excursion_save ()); | |
| 262 | |
| 263 Fset_buffer (buf); | |
| 264 call0 (function); | |
| 265 | |
| 266 return unbind_to (count, buf); | |
| 267 } | |
| 268 | |
| 269 /* Reinitialize everything about a buffer except its name and contents. */ | |
| 270 | |
| 271 void | |
| 272 reset_buffer (b) | |
| 273 register struct buffer *b; | |
| 274 { | |
| 275 b->filename = Qnil; | |
| 276 b->directory = (current_buffer) ? current_buffer->directory : Qnil; | |
| 277 b->modtime = 0; | |
| 278 b->save_modified = 1; | |
|
1501
c090f7dcfd27
* buffer.c (reset_buffer): Don't assign to b->save_length as if it
Jim Blandy <jimb@redhat.com>
parents:
1348
diff
changeset
|
279 XFASTINT (b->save_length) = 0; |
| 333 | 280 b->last_window_start = 1; |
| 281 b->backed_up = Qnil; | |
| 282 b->auto_save_modified = 0; | |
| 283 b->auto_save_file_name = Qnil; | |
| 284 b->read_only = Qnil; | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
285 b->overlays_before = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
286 b->overlays_after = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
287 XFASTINT (b->overlay_center) = 1; |
|
3242
f873e6b9af52
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3226
diff
changeset
|
288 b->mark_active = Qnil; |
|
1291
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
289 |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
290 /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */ |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
291 INITIALIZE_INTERVAL (b, NULL_INTERVAL); |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
292 |
| 333 | 293 reset_buffer_local_variables(b); |
| 294 } | |
| 295 | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
296 reset_buffer_local_variables (b) |
| 333 | 297 register struct buffer *b; |
| 298 { | |
| 299 register int offset; | |
| 300 | |
| 301 /* Reset the major mode to Fundamental, together with all the | |
| 302 things that depend on the major mode. | |
| 303 default-major-mode is handled at a higher level. | |
| 304 We ignore it here. */ | |
| 305 b->major_mode = Qfundamental_mode; | |
| 306 b->keymap = Qnil; | |
| 307 b->abbrev_table = Vfundamental_mode_abbrev_table; | |
| 308 b->mode_name = QSFundamental; | |
| 309 b->minor_modes = Qnil; | |
| 310 b->downcase_table = Vascii_downcase_table; | |
| 311 b->upcase_table = Vascii_upcase_table; | |
| 312 b->case_canon_table = Vascii_downcase_table; | |
| 313 b->case_eqv_table = Vascii_upcase_table; | |
| 314 #if 0 | |
| 315 b->sort_table = XSTRING (Vascii_sort_table); | |
| 316 b->folding_sort_table = XSTRING (Vascii_folding_sort_table); | |
| 317 #endif /* 0 */ | |
| 318 | |
| 319 /* Reset all per-buffer variables to their defaults. */ | |
| 320 b->local_var_alist = Qnil; | |
| 321 b->local_var_flags = 0; | |
| 322 | |
| 323 /* For each slot that has a default value, | |
| 324 copy that into the slot. */ | |
| 325 | |
| 326 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags; | |
| 327 offset < sizeof (struct buffer); | |
| 328 offset += sizeof (Lisp_Object)) /* sizeof int == sizeof Lisp_Object */ | |
| 329 if (*(int *)(offset + (char *) &buffer_local_flags) > 0 | |
| 330 || *(int *)(offset + (char *) &buffer_local_flags) == -2) | |
| 331 *(Lisp_Object *)(offset + (char *)b) = | |
| 332 *(Lisp_Object *)(offset + (char *)&buffer_defaults); | |
| 333 } | |
| 334 | |
| 392 | 335 /* We split this away from generate-new-buffer, because rename-buffer |
| 336 and set-visited-file-name ought to be able to use this to really | |
| 337 rename the buffer properly. */ | |
| 338 | |
| 339 DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name, Sgenerate_new_buffer_name, | |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
340 1, 2, 0, |
| 392 | 341 "Return a string that is the name of no existing buffer based on NAME.\n\ |
| 342 If there is no live buffer named NAME, then return NAME.\n\ | |
| 333 | 343 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER\n\ |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
344 until an unused name is found, and then return that name.\n\ |
|
3329
c9443f73d329
(Fgenerate_new_buffer_name): Doc fix.
Roland McGrath <roland@gnu.org>
parents:
3295
diff
changeset
|
345 Optional second argument IGNORE specifies a name that is okay to use\n\ |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
346 \(if it is in the sequence to be tried)\n\ |
|
3295
4d405f172c79
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3242
diff
changeset
|
347 even if a buffer with that name exists.") |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
348 (name, ignore) |
|
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
349 register Lisp_Object name, ignore; |
| 333 | 350 { |
| 351 register Lisp_Object gentemp, tem; | |
| 352 int count; | |
| 353 char number[10]; | |
| 354 | |
| 355 CHECK_STRING (name, 0); | |
| 356 | |
| 357 tem = Fget_buffer (name); | |
| 485 | 358 if (NILP (tem)) |
| 392 | 359 return name; |
| 333 | 360 |
| 361 count = 1; | |
| 362 while (1) | |
| 363 { | |
| 364 sprintf (number, "<%d>", ++count); | |
| 365 gentemp = concat2 (name, build_string (number)); | |
|
3665
0cffa82ec7de
(Fgenerate_new_buffer_name): GENTEMP is the value compare against IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
366 tem = Fstring_equal (gentemp, ignore); |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
367 if (!NILP (tem)) |
|
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
368 return gentemp; |
| 333 | 369 tem = Fget_buffer (gentemp); |
| 485 | 370 if (NILP (tem)) |
| 392 | 371 return gentemp; |
| 333 | 372 } |
| 373 } | |
| 374 | |
| 375 | |
| 376 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0, | |
| 377 "Return the name of BUFFER, as a string.\n\ | |
| 392 | 378 With no argument or nil as argument, return the name of the current buffer.") |
| 333 | 379 (buffer) |
| 380 register Lisp_Object buffer; | |
| 381 { | |
| 485 | 382 if (NILP (buffer)) |
| 333 | 383 return current_buffer->name; |
| 384 CHECK_BUFFER (buffer, 0); | |
| 385 return XBUFFER (buffer)->name; | |
| 386 } | |
| 387 | |
| 388 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0, | |
| 389 "Return name of file BUFFER is visiting, or nil if none.\n\ | |
| 390 No argument or nil as argument means use the current buffer.") | |
| 391 (buffer) | |
| 392 register Lisp_Object buffer; | |
| 393 { | |
| 485 | 394 if (NILP (buffer)) |
| 333 | 395 return current_buffer->filename; |
| 396 CHECK_BUFFER (buffer, 0); | |
| 397 return XBUFFER (buffer)->filename; | |
| 398 } | |
| 399 | |
| 400 DEFUN ("buffer-local-variables", Fbuffer_local_variables, | |
| 401 Sbuffer_local_variables, 0, 1, 0, | |
| 402 "Return an alist of variables that are buffer-local in BUFFER.\n\ | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
403 Most elements look like (SYMBOL . VALUE), describing one variable.\n\ |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
404 For a symbol that is locally unbound, just the symbol appears in the value.\n\ |
| 333 | 405 Note that storing new VALUEs in these elements doesn't change the variables.\n\ |
| 406 No argument or nil as argument means use current buffer as BUFFER.") | |
| 407 (buffer) | |
| 408 register Lisp_Object buffer; | |
| 409 { | |
| 410 register struct buffer *buf; | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
411 register Lisp_Object result; |
| 333 | 412 |
| 485 | 413 if (NILP (buffer)) |
| 333 | 414 buf = current_buffer; |
| 415 else | |
| 416 { | |
| 417 CHECK_BUFFER (buffer, 0); | |
| 418 buf = XBUFFER (buffer); | |
| 419 } | |
| 420 | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
421 result = Qnil; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
422 |
| 333 | 423 { |
| 424 /* Reference each variable in the alist in our current buffer. | |
| 425 If inquiring about the current buffer, this gets the current values, | |
| 426 so store them into the alist so the alist is up to date. | |
| 427 If inquiring about some other buffer, this swaps out any values | |
| 428 for that buffer, making the alist up to date automatically. */ | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
429 register Lisp_Object tail; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
430 for (tail = buf->local_var_alist; CONSP (tail); tail = XCONS (tail)->cdr) |
| 333 | 431 { |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
432 Lisp_Object val, elt; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
433 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
434 elt = XCONS (tail)->car; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
435 |
| 333 | 436 if (buf == current_buffer) |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
437 val = find_symbol_value (XCONS (elt)->car); |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
438 else |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
439 val = XCONS (elt)->cdr; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
440 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
441 /* If symbol is unbound, put just the symbol in the list. */ |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
442 if (EQ (val, Qunbound)) |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
443 result = Fcons (XCONS (elt)->car, result); |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
444 /* Otherwise, put (symbol . value) in the list. */ |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
445 else |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
446 result = Fcons (Fcons (XCONS (elt)->car, val), result); |
| 333 | 447 } |
| 448 } | |
| 449 | |
| 450 /* Add on all the variables stored in special slots. */ | |
| 451 { | |
| 452 register int offset, mask; | |
| 453 | |
| 454 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols; | |
| 455 offset < sizeof (struct buffer); | |
| 456 offset += (sizeof (int))) /* sizeof int == sizeof Lisp_Object */ | |
| 457 { | |
| 458 mask = *(int *)(offset + (char *) &buffer_local_flags); | |
| 459 if (mask == -1 || (buf->local_var_flags & mask)) | |
| 460 if (XTYPE (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols)) | |
| 461 == Lisp_Symbol) | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
462 result = Fcons (Fcons (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols), |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
463 *(Lisp_Object *)(offset + (char *)buf)), |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
464 result); |
| 333 | 465 } |
| 466 } | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
467 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
468 return result; |
| 333 | 469 } |
| 470 | |
| 471 | |
| 472 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p, | |
| 473 0, 1, 0, | |
| 474 "Return t if BUFFER was modified since its file was last read or saved.\n\ | |
| 475 No argument or nil as argument means use current buffer as BUFFER.") | |
| 476 (buffer) | |
| 477 register Lisp_Object buffer; | |
| 478 { | |
| 479 register struct buffer *buf; | |
| 485 | 480 if (NILP (buffer)) |
| 333 | 481 buf = current_buffer; |
| 482 else | |
| 483 { | |
| 484 CHECK_BUFFER (buffer, 0); | |
| 485 buf = XBUFFER (buffer); | |
| 486 } | |
| 487 | |
| 488 return buf->save_modified < BUF_MODIFF (buf) ? Qt : Qnil; | |
| 489 } | |
| 490 | |
| 491 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p, | |
| 492 1, 1, 0, | |
| 493 "Mark current buffer as modified or unmodified according to FLAG.\n\ | |
| 494 A non-nil FLAG means mark the buffer modified.") | |
| 495 (flag) | |
| 496 register Lisp_Object flag; | |
| 497 { | |
| 498 register int already; | |
| 499 register Lisp_Object fn; | |
| 500 | |
| 501 #ifdef CLASH_DETECTION | |
| 502 /* If buffer becoming modified, lock the file. | |
| 503 If buffer becoming unmodified, unlock the file. */ | |
| 504 | |
| 505 fn = current_buffer->filename; | |
| 485 | 506 if (!NILP (fn)) |
| 333 | 507 { |
| 508 already = current_buffer->save_modified < MODIFF; | |
| 485 | 509 if (!already && !NILP (flag)) |
| 333 | 510 lock_file (fn); |
| 485 | 511 else if (already && NILP (flag)) |
| 333 | 512 unlock_file (fn); |
| 513 } | |
| 514 #endif /* CLASH_DETECTION */ | |
| 515 | |
| 485 | 516 current_buffer->save_modified = NILP (flag) ? MODIFF : 0; |
| 333 | 517 update_mode_lines++; |
| 518 return flag; | |
| 519 } | |
| 520 | |
| 521 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick, | |
| 522 0, 1, 0, | |
| 523 "Return BUFFER's tick counter, incremented for each change in text.\n\ | |
| 524 Each buffer has a tick counter which is incremented each time the text in\n\ | |
| 525 that buffer is changed. It wraps around occasionally.\n\ | |
| 526 No argument or nil as argument means use current buffer as BUFFER.") | |
| 527 (buffer) | |
| 528 register Lisp_Object buffer; | |
| 529 { | |
| 530 register struct buffer *buf; | |
| 485 | 531 if (NILP (buffer)) |
| 333 | 532 buf = current_buffer; |
| 533 else | |
| 534 { | |
| 535 CHECK_BUFFER (buffer, 0); | |
| 536 buf = XBUFFER (buffer); | |
| 537 } | |
| 538 | |
| 539 return make_number (BUF_MODIFF (buf)); | |
| 540 } | |
| 541 | |
| 392 | 542 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2, |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
543 "sRename buffer (to new name): \nP", |
| 333 | 544 "Change current buffer's name to NEWNAME (a string).\n\ |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
545 If second arg UNIQUE is nil or omitted, it is an error if a\n\ |
| 392 | 546 buffer named NEWNAME already exists.\n\ |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
547 If UNIQUE is non-nil, come up with a new name using\n\ |
| 392 | 548 `generate-new-buffer-name'.\n\ |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
549 Interactively, you can set UNIQUE with a prefix argument.\n\ |
|
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
550 We return the name we actually gave the buffer.\n\ |
| 333 | 551 This does not change the name of the visited file (if any).") |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
552 (name, unique) |
|
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
553 register Lisp_Object name, unique; |
| 333 | 554 { |
| 555 register Lisp_Object tem, buf; | |
| 556 | |
| 557 CHECK_STRING (name, 0); | |
| 558 tem = Fget_buffer (name); | |
| 392 | 559 if (XBUFFER (tem) == current_buffer) |
| 560 return current_buffer->name; | |
| 485 | 561 if (!NILP (tem)) |
| 392 | 562 { |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
563 if (!NILP (unique)) |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
564 name = Fgenerate_new_buffer_name (name, current_buffer->name); |
| 392 | 565 else |
| 566 error ("Buffer name \"%s\" is in use", XSTRING (name)->data); | |
| 567 } | |
| 333 | 568 |
| 569 current_buffer->name = name; | |
|
1707
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
570 |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
571 /* Catch redisplay's attention. Unless we do this, the mode lines for |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
572 any windows displaying current_buffer will stay unchanged. */ |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
573 update_mode_lines++; |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
574 |
| 333 | 575 XSET (buf, Lisp_Buffer, current_buffer); |
| 576 Fsetcar (Frassq (buf, Vbuffer_alist), name); | |
| 485 | 577 if (NILP (current_buffer->filename) && !NILP (current_buffer->auto_save_file_name)) |
| 333 | 578 call0 (intern ("rename-auto-save-file")); |
| 392 | 579 return name; |
| 333 | 580 } |
| 581 | |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
582 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 2, 0, |
| 333 | 583 "Return most recently selected buffer other than BUFFER.\n\ |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
584 Buffers not visible in windows are preferred to visible buffers,\n\ |
|
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
585 unless optional second argument VISIBLE-OK is non-nil.\n\ |
| 333 | 586 If no other buffer exists, the buffer `*scratch*' is returned.\n\ |
| 587 If BUFFER is omitted or nil, some interesting buffer is returned.") | |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
588 (buffer, visible_ok) |
|
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
589 register Lisp_Object buffer, visible_ok; |
| 333 | 590 { |
| 591 register Lisp_Object tail, buf, notsogood, tem; | |
| 592 notsogood = Qnil; | |
| 593 | |
| 485 | 594 for (tail = Vbuffer_alist; !NILP (tail); tail = Fcdr (tail)) |
| 333 | 595 { |
| 596 buf = Fcdr (Fcar (tail)); | |
| 597 if (EQ (buf, buffer)) | |
| 598 continue; | |
| 599 if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ') | |
| 600 continue; | |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
601 if (NILP (visible_ok)) |
|
3802
594bc11c67ba
Don't let the 'B' interactive spec default to buffers viewed in
Jim Blandy <jimb@redhat.com>
parents:
3785
diff
changeset
|
602 tem = Fget_buffer_window (buf, Qt); |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
603 else |
|
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
604 tem = Qnil; |
| 485 | 605 if (NILP (tem)) |
| 333 | 606 return buf; |
| 485 | 607 if (NILP (notsogood)) |
| 333 | 608 notsogood = buf; |
| 609 } | |
| 485 | 610 if (!NILP (notsogood)) |
| 333 | 611 return notsogood; |
| 612 return Fget_buffer_create (build_string ("*scratch*")); | |
| 613 } | |
| 614 | |
| 615 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo, 1,1, | |
| 616 0, | |
| 617 "Make BUFFER stop keeping undo information.") | |
| 648 | 618 (buffer) |
| 619 register Lisp_Object buffer; | |
| 333 | 620 { |
| 648 | 621 Lisp_Object real_buffer; |
| 622 | |
| 623 if (NILP (buffer)) | |
| 624 XSET (real_buffer, Lisp_Buffer, current_buffer); | |
| 625 else | |
| 626 { | |
| 627 real_buffer = Fget_buffer (buffer); | |
| 628 if (NILP (real_buffer)) | |
| 629 nsberror (buffer); | |
| 630 } | |
| 631 | |
| 632 XBUFFER (real_buffer)->undo_list = Qt; | |
| 633 | |
| 333 | 634 return Qnil; |
| 635 } | |
| 636 | |
| 637 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo, | |
| 638 0, 1, "", | |
| 639 "Start keeping undo information for buffer BUFFER.\n\ | |
| 640 No argument or nil as argument means do this for the current buffer.") | |
| 648 | 641 (buffer) |
| 642 register Lisp_Object buffer; | |
| 333 | 643 { |
| 648 | 644 Lisp_Object real_buffer; |
| 333 | 645 |
| 648 | 646 if (NILP (buffer)) |
| 647 XSET (real_buffer, Lisp_Buffer, current_buffer); | |
| 333 | 648 else |
| 649 { | |
| 648 | 650 real_buffer = Fget_buffer (buffer); |
| 651 if (NILP (real_buffer)) | |
| 652 nsberror (buffer); | |
| 333 | 653 } |
| 654 | |
| 648 | 655 if (EQ (XBUFFER (real_buffer)->undo_list, Qt)) |
| 656 XBUFFER (real_buffer)->undo_list = Qnil; | |
| 333 | 657 |
| 658 return Qnil; | |
| 659 } | |
| 660 | |
| 661 /* | |
| 662 DEFVAR_LISP ("kill-buffer-hook", no_cell, "\ | |
| 663 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\ | |
| 664 The buffer being killed will be current while the hook is running.\n\ | |
| 665 See `kill-buffer'." | |
| 666 */ | |
| 667 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ", | |
| 668 "Kill the buffer BUFFER.\n\ | |
| 669 The argument may be a buffer or may be the name of a buffer.\n\ | |
| 670 An argument of nil means kill the current buffer.\n\n\ | |
| 671 Value is t if the buffer is actually killed, nil if user says no.\n\n\ | |
| 672 The value of `kill-buffer-hook' (which may be local to that buffer),\n\ | |
| 673 if not void, is a list of functions to be called, with no arguments,\n\ | |
| 674 before the buffer is actually killed. The buffer to be killed is current\n\ | |
| 675 when the hook functions are called.\n\n\ | |
| 676 Any processes that have this buffer as the `process-buffer' are killed\n\ | |
| 677 with `delete-process'.") | |
| 678 (bufname) | |
| 679 Lisp_Object bufname; | |
| 680 { | |
| 681 Lisp_Object buf; | |
| 682 register struct buffer *b; | |
| 683 register Lisp_Object tem; | |
| 684 register struct Lisp_Marker *m; | |
| 685 struct gcpro gcpro1, gcpro2; | |
| 686 | |
| 485 | 687 if (NILP (bufname)) |
| 333 | 688 buf = Fcurrent_buffer (); |
| 689 else | |
| 690 buf = Fget_buffer (bufname); | |
| 485 | 691 if (NILP (buf)) |
| 333 | 692 nsberror (bufname); |
| 693 | |
| 694 b = XBUFFER (buf); | |
| 695 | |
| 696 /* Query if the buffer is still modified. */ | |
| 485 | 697 if (INTERACTIVE && !NILP (b->filename) |
| 333 | 698 && BUF_MODIFF (b) > b->save_modified) |
| 699 { | |
| 700 GCPRO2 (buf, bufname); | |
| 701 tem = do_yes_or_no_p (format1 ("Buffer %s modified; kill anyway? ", | |
| 702 XSTRING (b->name)->data)); | |
| 703 UNGCPRO; | |
| 485 | 704 if (NILP (tem)) |
| 333 | 705 return Qnil; |
| 706 } | |
| 707 | |
| 708 /* Run kill-buffer hook with the buffer to be killed the current buffer. */ | |
| 709 { | |
| 710 register Lisp_Object val; | |
| 711 int count = specpdl_ptr - specpdl; | |
| 712 | |
| 713 record_unwind_protect (save_excursion_restore, save_excursion_save ()); | |
| 714 set_buffer_internal (b); | |
| 715 call1 (Vrun_hooks, Qkill_buffer_hook); | |
| 716 unbind_to (count, Qnil); | |
| 717 } | |
| 718 | |
| 719 /* We have no more questions to ask. Verify that it is valid | |
| 720 to kill the buffer. This must be done after the questions | |
| 721 since anything can happen within do_yes_or_no_p. */ | |
| 722 | |
| 723 /* Don't kill the minibuffer now current. */ | |
| 724 if (EQ (buf, XWINDOW (minibuf_window)->buffer)) | |
| 725 return Qnil; | |
| 726 | |
| 485 | 727 if (NILP (b->name)) |
| 333 | 728 return Qnil; |
| 729 | |
| 730 /* Make this buffer not be current. | |
| 731 In the process, notice if this is the sole visible buffer | |
| 732 and give up if so. */ | |
| 733 if (b == current_buffer) | |
| 734 { | |
|
1348
f6ab9d1e1709
(Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
1308
diff
changeset
|
735 tem = Fother_buffer (buf, Qnil); |
| 333 | 736 Fset_buffer (tem); |
| 737 if (b == current_buffer) | |
| 738 return Qnil; | |
| 739 } | |
| 740 | |
| 741 /* Now there is no question: we can kill the buffer. */ | |
| 742 | |
| 743 #ifdef CLASH_DETECTION | |
| 744 /* Unlock this buffer's file, if it is locked. */ | |
| 745 unlock_buffer (b); | |
| 746 #endif /* CLASH_DETECTION */ | |
| 747 | |
| 748 kill_buffer_processes (buf); | |
| 749 | |
| 750 tem = Vinhibit_quit; | |
| 751 Vinhibit_quit = Qt; | |
| 752 Vbuffer_alist = Fdelq (Frassq (buf, Vbuffer_alist), Vbuffer_alist); | |
| 753 Freplace_buffer_in_windows (buf); | |
| 754 Vinhibit_quit = tem; | |
| 755 | |
| 756 /* Delete any auto-save file. */ | |
| 757 if (XTYPE (b->auto_save_file_name) == Lisp_String) | |
| 758 { | |
| 759 Lisp_Object tem; | |
| 760 tem = Fsymbol_value (intern ("delete-auto-save-files")); | |
| 485 | 761 if (! NILP (tem)) |
| 333 | 762 unlink (XSTRING (b->auto_save_file_name)->data); |
| 763 } | |
| 764 | |
| 765 /* Unchain all markers of this buffer | |
| 766 and leave them pointing nowhere. */ | |
| 767 for (tem = b->markers; !EQ (tem, Qnil); ) | |
| 768 { | |
| 769 m = XMARKER (tem); | |
| 770 m->buffer = 0; | |
| 771 tem = m->chain; | |
| 772 m->chain = Qnil; | |
| 773 } | |
| 774 b->markers = Qnil; | |
| 775 | |
|
1291
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
776 /* Only defined if Emacs is compiled with USE_TEXT_PROPERTIES */ |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
777 INITIALIZE_INTERVAL (b, NULL_INTERVAL); |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
778 /* Perhaps we should explicitly free the interval tree here... */ |
|
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
779 |
| 333 | 780 b->name = Qnil; |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
781 BLOCK_INPUT; |
| 333 | 782 BUFFER_FREE (BUF_BEG_ADDR (b)); |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
783 UNBLOCK_INPUT; |
| 333 | 784 b->undo_list = Qnil; |
| 785 | |
| 786 return Qt; | |
| 787 } | |
| 788 | |
| 550 | 789 /* Move the assoc for buffer BUF to the front of buffer-alist. Since |
| 790 we do this each time BUF is selected visibly, the more recently | |
| 791 selected buffers are always closer to the front of the list. This | |
| 792 means that other_buffer is more likely to choose a relevant buffer. */ | |
| 333 | 793 |
| 794 record_buffer (buf) | |
| 795 Lisp_Object buf; | |
| 796 { | |
| 797 register Lisp_Object link, prev; | |
| 798 | |
| 799 prev = Qnil; | |
| 800 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr) | |
| 801 { | |
| 802 if (EQ (XCONS (XCONS (link)->car)->cdr, buf)) | |
| 803 break; | |
| 804 prev = link; | |
| 805 } | |
| 806 | |
| 550 | 807 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist); |
| 808 we cannot use Fdelq itself here because it allows quitting. */ | |
| 333 | 809 |
| 485 | 810 if (NILP (prev)) |
| 333 | 811 Vbuffer_alist = XCONS (Vbuffer_alist)->cdr; |
| 812 else | |
| 813 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr; | |
| 814 | |
| 815 XCONS(link)->cdr = Vbuffer_alist; | |
| 816 Vbuffer_alist = link; | |
| 817 } | |
| 818 | |
| 819 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ", | |
| 820 "Select buffer BUFFER in the current window.\n\ | |
| 821 BUFFER may be a buffer or a buffer name.\n\ | |
| 822 Optional second arg NORECORD non-nil means\n\ | |
| 823 do not put this buffer at the front of the list of recently selected ones.\n\ | |
| 824 \n\ | |
| 825 WARNING: This is NOT the way to work on another buffer temporarily\n\ | |
| 826 within a Lisp program! Use `set-buffer' instead. That avoids messing with\n\ | |
| 827 the window-buffer correspondences.") | |
| 828 (bufname, norecord) | |
| 829 Lisp_Object bufname, norecord; | |
| 830 { | |
| 831 register Lisp_Object buf; | |
| 832 Lisp_Object tem; | |
| 833 | |
| 834 if (EQ (minibuf_window, selected_window)) | |
| 835 error ("Cannot switch buffers in minibuffer window"); | |
| 836 tem = Fwindow_dedicated_p (selected_window); | |
| 485 | 837 if (!NILP (tem)) |
| 333 | 838 error ("Cannot switch buffers in a dedicated window"); |
| 839 | |
| 485 | 840 if (NILP (bufname)) |
|
1348
f6ab9d1e1709
(Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
1308
diff
changeset
|
841 buf = Fother_buffer (Fcurrent_buffer (), Qnil); |
| 333 | 842 else |
| 843 buf = Fget_buffer_create (bufname); | |
| 844 Fset_buffer (buf); | |
| 485 | 845 if (NILP (norecord)) |
| 333 | 846 record_buffer (buf); |
| 847 | |
| 848 Fset_window_buffer (EQ (selected_window, minibuf_window) | |
|
1909
ea6c75bc0d38
* buffer.c (Fswitch_to_buffer): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1876
diff
changeset
|
849 ? Fnext_window (minibuf_window, Qnil, Qnil) |
|
ea6c75bc0d38
* buffer.c (Fswitch_to_buffer): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1876
diff
changeset
|
850 : selected_window, |
| 333 | 851 buf); |
| 852 | |
|
3295
4d405f172c79
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3242
diff
changeset
|
853 return buf; |
| 333 | 854 } |
| 855 | |
| 856 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 2, 0, | |
| 857 "Select buffer BUFFER in some window, preferably a different one.\n\ | |
| 858 If BUFFER is nil, then some other buffer is chosen.\n\ | |
| 859 If `pop-up-windows' is non-nil, windows can be split to do this.\n\ | |
| 860 If optional second arg OTHER-WINDOW is non-nil, insist on finding another\n\ | |
| 861 window even if BUFFER is already visible in the selected window.") | |
| 862 (bufname, other) | |
| 863 Lisp_Object bufname, other; | |
| 864 { | |
| 865 register Lisp_Object buf; | |
| 485 | 866 if (NILP (bufname)) |
|
1348
f6ab9d1e1709
(Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
1308
diff
changeset
|
867 buf = Fother_buffer (Fcurrent_buffer (), Qnil); |
| 333 | 868 else |
| 869 buf = Fget_buffer_create (bufname); | |
| 870 Fset_buffer (buf); | |
| 871 record_buffer (buf); | |
| 872 Fselect_window (Fdisplay_buffer (buf, other)); | |
|
3295
4d405f172c79
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3242
diff
changeset
|
873 return buf; |
| 333 | 874 } |
| 875 | |
| 876 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0, | |
| 877 "Return the current buffer as a Lisp object.") | |
| 878 () | |
| 879 { | |
| 880 register Lisp_Object buf; | |
| 881 XSET (buf, Lisp_Buffer, current_buffer); | |
| 882 return buf; | |
| 883 } | |
| 884 | |
| 885 /* Set the current buffer to b */ | |
| 886 | |
| 887 void | |
| 888 set_buffer_internal (b) | |
| 889 register struct buffer *b; | |
| 890 { | |
| 891 register struct buffer *old_buf; | |
| 892 register Lisp_Object tail, valcontents; | |
| 893 enum Lisp_Type tem; | |
| 894 | |
| 895 if (current_buffer == b) | |
| 896 return; | |
| 897 | |
| 898 windows_or_buffers_changed = 1; | |
| 899 old_buf = current_buffer; | |
| 900 current_buffer = b; | |
| 901 last_known_column_point = -1; /* invalidate indentation cache */ | |
| 902 | |
| 903 /* Look down buffer's list of local Lisp variables | |
| 904 to find and update any that forward into C variables. */ | |
| 905 | |
| 485 | 906 for (tail = b->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr) |
| 333 | 907 { |
| 908 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value; | |
| 909 if ((XTYPE (valcontents) == Lisp_Buffer_Local_Value | |
| 910 || XTYPE (valcontents) == Lisp_Some_Buffer_Local_Value) | |
| 911 && (tem = XTYPE (XCONS (valcontents)->car), | |
| 912 (tem == Lisp_Boolfwd || tem == Lisp_Intfwd | |
| 913 || tem == Lisp_Objfwd))) | |
| 914 /* Just reference the variable | |
| 915 to cause it to become set for this buffer. */ | |
| 916 Fsymbol_value (XCONS (XCONS (tail)->car)->car); | |
| 917 } | |
| 918 | |
| 919 /* Do the same with any others that were local to the previous buffer */ | |
| 920 | |
| 921 if (old_buf) | |
| 485 | 922 for (tail = old_buf->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr) |
| 333 | 923 { |
| 924 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value; | |
| 925 if ((XTYPE (valcontents) == Lisp_Buffer_Local_Value | |
| 926 || XTYPE (valcontents) == Lisp_Some_Buffer_Local_Value) | |
| 927 && (tem = XTYPE (XCONS (valcontents)->car), | |
| 928 (tem == Lisp_Boolfwd || tem == Lisp_Intfwd | |
| 929 || tem == Lisp_Objfwd))) | |
| 930 /* Just reference the variable | |
| 931 to cause it to become set for this buffer. */ | |
| 932 Fsymbol_value (XCONS (XCONS (tail)->car)->car); | |
| 933 } | |
| 934 } | |
| 935 | |
| 936 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, | |
| 937 "Make the buffer BUFFER current for editing operations.\n\ | |
| 938 BUFFER may be a buffer or the name of an existing buffer.\n\ | |
| 939 See also `save-excursion' when you want to make a buffer current temporarily.\n\ | |
| 940 This function does not display the buffer, so its effect ends\n\ | |
| 941 when the current command terminates.\n\ | |
| 942 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.") | |
| 943 (bufname) | |
| 944 register Lisp_Object bufname; | |
| 945 { | |
| 946 register Lisp_Object buffer; | |
| 947 buffer = Fget_buffer (bufname); | |
| 485 | 948 if (NILP (buffer)) |
| 333 | 949 nsberror (bufname); |
| 485 | 950 if (NILP (XBUFFER (buffer)->name)) |
| 333 | 951 error ("Selecting deleted buffer"); |
| 952 set_buffer_internal (XBUFFER (buffer)); | |
| 953 return buffer; | |
| 954 } | |
| 955 | |
| 956 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only, | |
| 957 Sbarf_if_buffer_read_only, 0, 0, 0, | |
| 958 "Signal a `buffer-read-only' error if the current buffer is read-only.") | |
| 959 () | |
| 960 { | |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
961 if (!NILP (current_buffer->read_only) |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
962 && NILP (Vinhibit_read_only)) |
| 333 | 963 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); |
| 964 return Qnil; | |
| 965 } | |
| 966 | |
| 967 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "", | |
| 968 "Put BUFFER at the end of the list of all buffers.\n\ | |
| 969 There it is the least likely candidate for `other-buffer' to return;\n\ | |
|
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
648
diff
changeset
|
970 thus, the least likely buffer for \\[switch-to-buffer] to select by default.\n\ |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
971 If BUFFER is nil or omitted, bury the current buffer.\n\ |
|
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
972 Also, if BUFFER is nil or omitted, remove the current buffer from the\n\ |
|
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
973 selected window if it is displayed there.") |
| 333 | 974 (buf) |
| 975 register Lisp_Object buf; | |
| 976 { | |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
977 /* Figure out what buffer we're going to bury. */ |
| 485 | 978 if (NILP (buf)) |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
979 { |
|
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
980 XSET (buf, Lisp_Buffer, current_buffer); |
|
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
981 |
|
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
982 /* If we're burying the current buffer, unshow it. */ |
|
1909
ea6c75bc0d38
* buffer.c (Fswitch_to_buffer): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1876
diff
changeset
|
983 Fswitch_to_buffer (Fother_buffer (buf, Qnil), Qnil); |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
984 } |
| 333 | 985 else |
| 986 { | |
| 987 Lisp_Object buf1; | |
| 988 | |
| 989 buf1 = Fget_buffer (buf); | |
| 485 | 990 if (NILP (buf1)) |
| 333 | 991 nsberror (buf); |
| 992 buf = buf1; | |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
993 } |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
994 |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
995 /* Move buf to the end of the buffer list. */ |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
996 { |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
997 register Lisp_Object aelt, link; |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
998 |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
999 aelt = Frassq (buf, Vbuffer_alist); |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1000 link = Fmemq (aelt, Vbuffer_alist); |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1001 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist); |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1002 XCONS (link)->cdr = Qnil; |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1003 Vbuffer_alist = nconc2 (Vbuffer_alist, link); |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1004 } |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1005 |
| 333 | 1006 return Qnil; |
| 1007 } | |
| 1008 | |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
1009 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*", |
| 333 | 1010 "Delete the entire contents of the current buffer.\n\ |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
1011 Any clipping restriction in effect (see `narrow-to-region') is removed,\n\ |
| 333 | 1012 so the buffer is truly empty after this.") |
| 1013 () | |
| 1014 { | |
| 1015 Fwiden (); | |
| 1016 del_range (BEG, Z); | |
| 1017 current_buffer->last_window_start = 1; | |
| 1018 /* Prevent warnings, or suspension of auto saving, that would happen | |
| 1019 if future size is less than past size. Use of erase-buffer | |
| 1020 implies that the future text is not really related to the past text. */ | |
| 1021 XFASTINT (current_buffer->save_length) = 0; | |
| 1022 return Qnil; | |
| 1023 } | |
| 1024 | |
| 1025 validate_region (b, e) | |
| 1026 register Lisp_Object *b, *e; | |
| 1027 { | |
| 1028 register int i; | |
| 1029 | |
| 1030 CHECK_NUMBER_COERCE_MARKER (*b, 0); | |
| 1031 CHECK_NUMBER_COERCE_MARKER (*e, 1); | |
| 1032 | |
| 1033 if (XINT (*b) > XINT (*e)) | |
| 1034 { | |
| 1035 i = XFASTINT (*b); /* This is legit even if *b is < 0 */ | |
| 1036 *b = *e; | |
| 1037 XFASTINT (*e) = i; /* because this is all we do with i. */ | |
| 1038 } | |
| 1039 | |
| 1040 if (!(BEGV <= XINT (*b) && XINT (*b) <= XINT (*e) | |
| 1041 && XINT (*e) <= ZV)) | |
| 1042 args_out_of_range (*b, *e); | |
| 1043 } | |
| 1044 | |
| 1045 Lisp_Object | |
| 1046 list_buffers_1 (files) | |
| 1047 Lisp_Object files; | |
| 1048 { | |
| 1049 register Lisp_Object tail, tem, buf; | |
| 1050 Lisp_Object col1, col2, col3, minspace; | |
| 1051 register struct buffer *old = current_buffer, *b; | |
|
3884
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1052 Lisp_Object desired_point; |
| 333 | 1053 Lisp_Object other_file_symbol; |
| 1054 | |
|
3884
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1055 desired_point = Qnil; |
| 333 | 1056 other_file_symbol = intern ("list-buffers-directory"); |
| 1057 | |
| 1058 XFASTINT (col1) = 19; | |
| 1059 XFASTINT (col2) = 25; | |
| 1060 XFASTINT (col3) = 40; | |
| 1061 XFASTINT (minspace) = 1; | |
| 1062 | |
| 1063 Fset_buffer (Vstandard_output); | |
| 1064 | |
| 1065 tail = intern ("Buffer-menu-mode"); | |
| 1066 if (!EQ (tail, current_buffer->major_mode) | |
| 485 | 1067 && (tem = Ffboundp (tail), !NILP (tem))) |
| 333 | 1068 call0 (tail); |
| 1069 Fbuffer_disable_undo (Vstandard_output); | |
| 1070 current_buffer->read_only = Qnil; | |
| 1071 | |
| 1072 write_string ("\ | |
| 1073 MR Buffer Size Mode File\n\ | |
| 1074 -- ------ ---- ---- ----\n", -1); | |
| 1075 | |
| 485 | 1076 for (tail = Vbuffer_alist; !NILP (tail); tail = Fcdr (tail)) |
| 333 | 1077 { |
| 1078 buf = Fcdr (Fcar (tail)); | |
| 1079 b = XBUFFER (buf); | |
| 1080 /* Don't mention the minibuffers. */ | |
| 1081 if (XSTRING (b->name)->data[0] == ' ') | |
| 1082 continue; | |
| 1083 /* Optionally don't mention buffers that lack files. */ | |
| 485 | 1084 if (!NILP (files) && NILP (b->filename)) |
| 333 | 1085 continue; |
| 1086 /* Identify the current buffer. */ | |
| 1087 if (b == old) | |
|
3884
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1088 XFASTINT (desired_point) = point; |
| 333 | 1089 write_string (b == old ? "." : " ", -1); |
| 1090 /* Identify modified buffers */ | |
| 1091 write_string (BUF_MODIFF (b) > b->save_modified ? "*" : " ", -1); | |
| 485 | 1092 write_string (NILP (b->read_only) ? " " : "% ", -1); |
| 333 | 1093 Fprinc (b->name, Qnil); |
| 1094 Findent_to (col1, make_number (2)); | |
| 1095 XFASTINT (tem) = BUF_Z (b) - BUF_BEG (b); | |
| 1096 Fprin1 (tem, Qnil); | |
| 1097 Findent_to (col2, minspace); | |
| 1098 Fprinc (b->mode_name, Qnil); | |
| 1099 Findent_to (col3, minspace); | |
| 1100 | |
| 485 | 1101 if (!NILP (b->filename)) |
| 333 | 1102 Fprinc (b->filename, Qnil); |
| 1103 else | |
| 1104 { | |
| 1105 /* No visited file; check local value of list-buffers-directory. */ | |
| 1106 Lisp_Object tem; | |
| 1107 set_buffer_internal (b); | |
| 1108 tem = Fboundp (other_file_symbol); | |
| 485 | 1109 if (!NILP (tem)) |
| 333 | 1110 { |
| 1111 tem = Fsymbol_value (other_file_symbol); | |
| 1112 Fset_buffer (Vstandard_output); | |
| 1113 if (XTYPE (tem) == Lisp_String) | |
| 1114 Fprinc (tem, Qnil); | |
| 1115 } | |
| 1116 else | |
| 1117 Fset_buffer (Vstandard_output); | |
| 1118 } | |
| 1119 write_string ("\n", -1); | |
| 1120 } | |
| 1121 | |
| 1122 current_buffer->read_only = Qt; | |
| 1123 set_buffer_internal (old); | |
|
3884
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1124 return desired_point; |
| 333 | 1125 } |
| 1126 | |
| 1127 DEFUN ("list-buffers", Flist_buffers, Slist_buffers, 0, 1, "P", | |
| 1128 "Display a list of names of existing buffers.\n\ | |
| 1129 The list is displayed in a buffer named `*Buffer List*'.\n\ | |
| 1130 Note that buffers with names starting with spaces are omitted.\n\ | |
| 1131 Non-null optional arg FILES-ONLY means mention only file buffers.\n\ | |
| 1132 \n\ | |
| 1133 The M column contains a * for buffers that are modified.\n\ | |
| 1134 The R column contains a % for buffers that are read-only.") | |
| 1135 (files) | |
| 1136 Lisp_Object files; | |
| 1137 { | |
|
3753
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1138 Lisp_Object desired_point; |
|
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1139 |
|
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1140 desired_point = |
|
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1141 internal_with_output_to_temp_buffer ("*Buffer List*", |
|
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1142 list_buffers_1, files); |
|
16948869ab5b
* buffer.c (list_buffers_1): Return the desired point.
Jim Blandy <jimb@redhat.com>
parents:
3665
diff
changeset
|
1143 |
|
3884
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1144 if (NUMBERP (desired_point)) |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1145 { |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1146 int count = specpdl_ptr - specpdl; |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1147 record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1148 Fset_buffer (build_string ("*Buffer List*")); |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1149 SET_PT (XINT (desired_point)); |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1150 return unbind_to (count, Qnil); |
|
19b4e1fef348
* buffer.c (list_buffers_1): Make desired_point a lisp object; set
Jim Blandy <jimb@redhat.com>
parents:
3802
diff
changeset
|
1151 } |
| 333 | 1152 } |
| 1153 | |
| 1154 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables, | |
| 1155 0, 0, 0, | |
| 1156 "Switch to Fundamental mode by killing current buffer's local variables.\n\ | |
| 1157 Most local variable bindings are eliminated so that the default values\n\ | |
| 1158 become effective once more. Also, the syntax table is set from\n\ | |
| 1159 `standard-syntax-table', the local keymap is set to nil,\n\ | |
| 1160 and the abbrev table from `fundamental-mode-abbrev-table'.\n\ | |
| 1161 This function also forces redisplay of the mode line.\n\ | |
| 1162 \n\ | |
| 1163 Every function to select a new major mode starts by\n\ | |
| 1164 calling this function.\n\n\ | |
| 1165 As a special exception, local variables whose names have\n\ | |
| 1166 a non-nil `permanent-local' property are not eliminated by this function.") | |
| 1167 () | |
| 1168 { | |
| 1169 register Lisp_Object alist, sym, tem; | |
| 1170 Lisp_Object oalist; | |
| 1171 oalist = current_buffer->local_var_alist; | |
| 1172 | |
| 1173 /* Make sure no local variables remain set up with this buffer | |
| 1174 for their current values. */ | |
| 1175 | |
| 485 | 1176 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr) |
| 333 | 1177 { |
| 1178 sym = XCONS (XCONS (alist)->car)->car; | |
| 1179 | |
| 1180 /* Need not do anything if some other buffer's binding is now encached. */ | |
| 1181 tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car; | |
| 1182 if (XBUFFER (tem) == current_buffer) | |
| 1183 { | |
| 1184 /* Symbol is set up for this buffer's old local value. | |
| 1185 Set it up for the current buffer with the default value. */ | |
| 1186 | |
| 1187 tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr; | |
|
2486
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1188 /* Store the symbol's current value into the alist entry |
|
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1189 it is currently set up for. This is so that, if the |
|
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1190 local is marked permanent, and we make it local again below, |
|
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1191 we don't lose the value. */ |
|
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1192 XCONS (XCONS (tem)->car)->cdr = XCONS (XSYMBOL (sym)->value)->car; |
|
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1193 /* Switch to the symbol's default-value alist entry. */ |
| 333 | 1194 XCONS (tem)->car = tem; |
|
2486
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1195 /* Mark it as current for the current buffer. */ |
| 333 | 1196 XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Fcurrent_buffer (); |
|
2486
d5d7e6996604
(Fkill_all_local_variables): Store each var's current value
Richard M. Stallman <rms@gnu.org>
parents:
2480
diff
changeset
|
1197 /* Store the current value into any forwarding in the symbol. */ |
| 333 | 1198 store_symval_forwarding (sym, XCONS (XSYMBOL (sym)->value)->car, |
| 1199 XCONS (tem)->cdr); | |
| 1200 } | |
| 1201 } | |
| 1202 | |
| 1203 /* Actually eliminate all local bindings of this buffer. */ | |
| 1204 | |
| 1205 reset_buffer_local_variables (current_buffer); | |
| 1206 | |
| 1207 /* Redisplay mode lines; we are changing major mode. */ | |
| 1208 | |
| 1209 update_mode_lines++; | |
| 1210 | |
| 1211 /* Any which are supposed to be permanent, | |
| 1212 make local again, with the same values they had. */ | |
| 1213 | |
| 485 | 1214 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr) |
| 333 | 1215 { |
| 1216 sym = XCONS (XCONS (alist)->car)->car; | |
| 1217 tem = Fget (sym, Qpermanent_local); | |
| 485 | 1218 if (! NILP (tem)) |
| 392 | 1219 { |
| 1220 Fmake_local_variable (sym); | |
| 1221 Fset (sym, XCONS (XCONS (alist)->car)->cdr); | |
| 1222 } | |
| 333 | 1223 } |
| 1224 | |
| 1225 /* Force mode-line redisplay. Useful here because all major mode | |
| 1226 commands call this function. */ | |
| 1227 update_mode_lines++; | |
| 1228 | |
| 1229 return Qnil; | |
| 1230 } | |
| 1231 | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1232 /* Find all the overlays in the current buffer that contain position POS. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1233 Return the number found, and store them in a vector in *VEC_PTR. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1234 Store in *LEN_PTR the size allocated for the vector. |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1235 Store in *NEXT_PTR the next position after POS where an overlay starts, |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1236 or ZV if there are no more overlays. |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1237 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1238 *VEC_PTR and *LEN_PTR should contain a valid vector and size |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1239 when this function is called. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1240 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1241 If EXTEND is non-zero, we make the vector bigger if necessary. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1242 If EXTEND is zero, we never extend the vector, |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1243 and we store only as many overlays as will fit. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1244 But we still return the total number of overlays. */ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1245 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1246 int |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1247 overlays_at (pos, extend, vec_ptr, len_ptr, next_ptr) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1248 int pos; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1249 int extend; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1250 Lisp_Object **vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1251 int *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1252 int *next_ptr; |
| 333 | 1253 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1254 Lisp_Object tail, overlay, start, end, result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1255 int idx = 0; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1256 int len = *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1257 Lisp_Object *vec = *vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1258 int next = ZV; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1259 int inhibit_storing = 0; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1260 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1261 for (tail = current_buffer->overlays_before; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1262 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1263 tail = XCONS (tail)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1264 { |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1265 int startpos; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1266 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1267 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1268 if (! OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1269 abort (); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1270 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1271 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1272 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1273 if (OVERLAY_POSITION (end) <= pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1274 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1275 startpos = OVERLAY_POSITION (start); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1276 if (startpos <= pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1277 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1278 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1279 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1280 /* The supplied vector is full. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1281 Either make it bigger, or don't store any more in it. */ |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1282 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1283 { |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1284 *len_ptr = len *= 2; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1285 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1286 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1287 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1288 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1289 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1290 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1291 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1292 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1293 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1294 /* Keep counting overlays even if we can't return them all. */ |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1295 idx++; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1296 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1297 else if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1298 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1299 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1300 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1301 for (tail = current_buffer->overlays_after; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1302 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1303 tail = XCONS (tail)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1304 { |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1305 int startpos; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1306 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1307 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1308 if (! OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1309 abort (); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1310 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1311 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1312 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1313 startpos = OVERLAY_POSITION (start); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1314 if (pos < startpos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1315 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1316 if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1317 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1318 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1319 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1320 if (pos < OVERLAY_POSITION (end)) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1321 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1322 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1323 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1324 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1325 { |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1326 *len_ptr = len *= 2; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1327 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1328 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1329 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1330 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1331 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1332 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1333 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1334 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1335 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1336 idx++; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1337 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1338 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1339 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1340 *next_ptr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1341 return idx; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1342 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1343 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1344 /* Shift overlays in BUF's overlay lists, to center the lists at POS. */ |
| 333 | 1345 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1346 void |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1347 recenter_overlay_lists (buf, pos) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1348 struct buffer *buf; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1349 int pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1350 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1351 Lisp_Object overlay, tail, next, prev, beg, end; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1352 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1353 /* See if anything in overlays_before should move to overlays_after. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1354 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1355 /* We don't strictly need prev in this loop; it should always be nil. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1356 But we use it for symmetry and in case that should cease to be true |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1357 with some future change. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1358 prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1359 for (tail = buf->overlays_before; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1360 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1361 prev = tail, tail = next) |
| 333 | 1362 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1363 next = XCONS (tail)->cdr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1364 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1365 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1366 /* If the overlay is not valid, get rid of it. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1367 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1368 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1369 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1370 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1371 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1372 /* Splice the cons cell TAIL out of overlays_before. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1373 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1374 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1375 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1376 buf->overlays_before = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1377 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1378 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1379 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1380 #endif |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1381 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1382 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1383 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1384 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1385 if (OVERLAY_POSITION (end) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1386 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1387 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1388 int where = OVERLAY_POSITION (beg); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1389 Lisp_Object other, other_prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1390 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1391 /* Splice the cons cell TAIL out of overlays_before. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1392 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1393 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1394 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1395 buf->overlays_before = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1396 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1397 /* Search thru overlays_after for where to put it. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1398 other_prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1399 for (other = buf->overlays_after; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1400 CONSP (other); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1401 other_prev = other, other = XCONS (other)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1402 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1403 Lisp_Object otherbeg, otheroverlay, follower; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1404 int win; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1405 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1406 otheroverlay = XCONS (other)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1407 if (! OVERLAY_VALID (otheroverlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1408 abort (); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1409 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1410 otherbeg = OVERLAY_START (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1411 if (OVERLAY_POSITION (otherbeg) >= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1412 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1413 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1414 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1415 /* Add TAIL to overlays_after before OTHER. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1416 XCONS (tail)->cdr = other; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1417 if (!NILP (other_prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1418 XCONS (other_prev)->cdr = tail; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1419 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1420 buf->overlays_after = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1421 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1422 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1423 else |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1424 /* We've reached the things that should stay in overlays_before. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1425 All the rest of overlays_before must end even earlier, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1426 so stop now. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1427 break; |
| 333 | 1428 } |
| 1429 | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1430 /* See if anything in overlays_after should be in overlays_before. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1431 prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1432 for (tail = buf->overlays_after; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1433 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1434 prev = tail, tail = next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1435 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1436 next = XCONS (tail)->cdr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1437 overlay = XCONS (tail)->car; |
| 333 | 1438 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1439 /* If the overlay is not valid, get rid of it. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1440 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1441 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1442 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1443 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1444 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1445 /* Splice the cons cell TAIL out of overlays_after. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1446 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1447 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1448 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1449 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1450 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1451 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1452 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1453 #endif |
| 333 | 1454 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1455 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1456 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1457 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1458 /* Stop looking, when we know that nothing further |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1459 can possibly end before POS. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1460 if (OVERLAY_POSITION (beg) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1461 break; |
| 333 | 1462 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1463 if (OVERLAY_POSITION (end) <= pos) |
| 333 | 1464 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1465 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1466 int where = OVERLAY_POSITION (end); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1467 Lisp_Object other, other_prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1468 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1469 /* Splice the cons cell TAIL out of overlays_after. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1470 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1471 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1472 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1473 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1474 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1475 /* Search thru overlays_before for where to put it. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1476 other_prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1477 for (other = buf->overlays_before; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1478 CONSP (other); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1479 other_prev = other, other = XCONS (other)->cdr) |
| 333 | 1480 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1481 Lisp_Object otherend, otheroverlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1482 int win; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1483 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1484 otheroverlay = XCONS (other)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1485 if (! OVERLAY_VALID (otheroverlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1486 abort (); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1487 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1488 otherend = OVERLAY_END (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1489 if (OVERLAY_POSITION (otherend) <= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1490 break; |
| 333 | 1491 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1492 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1493 /* Add TAIL to overlays_before before OTHER. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1494 XCONS (tail)->cdr = other; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1495 if (!NILP (other_prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1496 XCONS (other_prev)->cdr = tail; |
| 333 | 1497 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1498 buf->overlays_before = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1499 tail = prev; |
| 333 | 1500 } |
| 1501 } | |
| 1502 | |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1503 XFASTINT (buf->overlay_center) = pos; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1504 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1505 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1506 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0, |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1507 "Return t if OBJECT is an overlay.") |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1508 (object) |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1509 Lisp_Object object; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1510 { |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1511 return (OVERLAYP (object) ? Qt : Qnil); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1512 } |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1513 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1514 DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 3, 0, |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1515 "Create a new overlay with range BEG to END in BUFFER.\n\ |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1516 If omitted, BUFFER defaults to the current buffer.\n\ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1517 BEG and END may be integers or markers.") |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1518 (beg, end, buffer) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1519 Lisp_Object beg, end, buffer; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1520 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1521 Lisp_Object overlay; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1522 struct buffer *b; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1523 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1524 if (NILP (buffer)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1525 XSET (buffer, Lisp_Buffer, current_buffer); |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1526 else |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1527 CHECK_BUFFER (buffer, 2); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1528 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1529 && ! EQ (Fmarker_buffer (beg), buffer)) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1530 error ("Marker points into wrong buffer"); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1531 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1532 && ! EQ (Fmarker_buffer (end), buffer)) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1533 error ("Marker points into wrong buffer"); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1534 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1535 CHECK_NUMBER_COERCE_MARKER (beg, 1); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1536 CHECK_NUMBER_COERCE_MARKER (end, 1); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1537 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1538 if (XINT (beg) > XINT (end)) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1539 { |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1540 Lisp_Object temp = beg; |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1541 beg = end; end = temp; |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1542 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1543 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1544 b = XBUFFER (buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1545 |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1546 beg = Fset_marker (Fmake_marker (), beg, buffer); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1547 end = Fset_marker (Fmake_marker (), end, buffer); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1548 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1549 overlay = Fcons (Fcons (beg, end), Qnil); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1550 XSETTYPE (overlay, Lisp_Overlay); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1551 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1552 /* Put the new overlay on the wrong list. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1553 end = OVERLAY_END (overlay); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1554 if (OVERLAY_POSITION (end) < XINT (b->overlay_center)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1555 b->overlays_after = Fcons (overlay, b->overlays_after); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1556 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1557 b->overlays_before = Fcons (overlay, b->overlays_before); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1558 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1559 /* This puts it in the right list, and in the right order. */ |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1560 recenter_overlay_lists (b, XINT (b->overlay_center)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1561 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1562 /* We don't need to redisplay the region covered by the overlay, because |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1563 the overlay has no properties at the moment. */ |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1564 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1565 return overlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1566 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1567 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1568 DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1569 "Set the endpoints of OVERLAY to BEG and END in BUFFER.\n\ |
|
2791
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1570 If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now.\n\ |
|
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1571 If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current\n\ |
|
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1572 buffer.") |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1573 (overlay, beg, end, buffer) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1574 Lisp_Object overlay, beg, end, buffer; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1575 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1576 struct buffer *b, *ob; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1577 Lisp_Object obuffer; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1578 int count = specpdl_ptr - specpdl; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1579 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1580 CHECK_OVERLAY (overlay, 0); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1581 if (NILP (buffer)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1582 buffer = Fmarker_buffer (OVERLAY_START (overlay)); |
|
2791
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1583 if (NILP (buffer)) |
|
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1584 XSET (buffer, Lisp_Buffer, current_buffer); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1585 CHECK_BUFFER (buffer, 3); |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1586 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1587 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1588 && ! EQ (Fmarker_buffer (beg), buffer)) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1589 error ("Marker points into wrong buffer"); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1590 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1591 && ! EQ (Fmarker_buffer (end), buffer)) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1592 error ("Marker points into wrong buffer"); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
1593 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1594 CHECK_NUMBER_COERCE_MARKER (beg, 1); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1595 CHECK_NUMBER_COERCE_MARKER (end, 1); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1596 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1597 specbind (Qinhibit_quit, Qt); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1598 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1599 if (XINT (beg) > XINT (end)) |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1600 { |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1601 Lisp_Object temp = beg; |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1602 beg = end; end = temp; |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1603 } |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1604 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1605 obuffer = Fmarker_buffer (OVERLAY_START (overlay)); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1606 b = XBUFFER (buffer); |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1607 ob = XBUFFER (obuffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1608 |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1609 /* If the overlay has changed buffers, do a thorough redisplay. */ |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1610 if (!EQ (buffer, obuffer)) |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1611 windows_or_buffers_changed = 1; |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1612 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1613 /* Redisplay the area the overlay has just left, or just enclosed. */ |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1614 { |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1615 Lisp_Object o_beg = OVERLAY_START (overlay); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1616 Lisp_Object o_end = OVERLAY_END (overlay); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1617 int change_beg, change_end; |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1618 |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1619 o_beg = OVERLAY_POSITION (o_beg); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1620 o_end = OVERLAY_POSITION (o_end); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1621 |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1622 if (XINT (o_beg) == XINT (beg)) |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1623 redisplay_region (b, XINT (o_end), XINT (end)); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1624 else if (XINT (o_end) == XINT (end)) |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1625 redisplay_region (b, XINT (o_beg), XINT (beg)); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1626 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1627 { |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1628 if (XINT (beg) < XINT (o_beg)) o_beg = beg; |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1629 if (XINT (end) > XINT (o_end)) o_end = end; |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1630 redisplay_region (b, XINT (o_beg), XINT (o_end)); |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1631 } |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
1632 } |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1633 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1634 if (!NILP (obuffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1635 { |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1636 ob->overlays_before = Fdelq (overlay, ob->overlays_before); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1637 ob->overlays_after = Fdelq (overlay, ob->overlays_after); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1638 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1639 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1640 Fset_marker (OVERLAY_START (overlay), beg, buffer); |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1641 Fset_marker (OVERLAY_END (overlay), end, buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1642 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1643 /* Put the overlay on the wrong list. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1644 end = OVERLAY_END (overlay); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1645 if (OVERLAY_POSITION (end) < XINT (b->overlay_center)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1646 b->overlays_after = Fcons (overlay, b->overlays_after); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1647 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1648 b->overlays_before = Fcons (overlay, b->overlays_before); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1649 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1650 /* This puts it in the right list, and in the right order. */ |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1651 recenter_overlay_lists (b, XINT (b->overlay_center)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1652 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1653 return unbind_to (count, overlay); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1654 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1655 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1656 DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1657 "Delete the overlay OVERLAY from its buffer.") |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1658 (overlay) |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1659 Lisp_Object overlay; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1660 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1661 Lisp_Object buffer; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1662 struct buffer *b; |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1663 int count = specpdl_ptr - specpdl; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1664 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1665 CHECK_OVERLAY (overlay, 0); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1666 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1667 buffer = Fmarker_buffer (OVERLAY_START (overlay)); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1668 if (NILP (buffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1669 return Qnil; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1670 |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1671 b = XBUFFER (buffer); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1672 |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1673 specbind (Qinhibit_quit, Qt); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1674 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1675 b->overlays_before = Fdelq (overlay, b->overlays_before); |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1676 b->overlays_after = Fdelq (overlay, b->overlays_after); |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1677 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1678 redisplay_region (b, |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1679 OVERLAY_POSITION (OVERLAY_START (overlay)), |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1680 OVERLAY_POSITION (OVERLAY_END (overlay))); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1681 |
|
2791
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1682 Fset_marker (OVERLAY_START (overlay), Qnil, Qnil); |
|
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1683 Fset_marker (OVERLAY_END (overlay), Qnil, Qnil); |
|
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
1684 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
1685 return unbind_to (count, Qnil); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1686 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1687 |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1688 /* Overlay dissection functions. */ |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1689 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1690 DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0, |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1691 "Return the position at which OVERLAY starts.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1692 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1693 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1694 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1695 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1696 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1697 return (Fmarker_position (OVERLAY_START (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1698 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1699 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1700 DEFUN ("overlay-end", Foverlay_end, Soverlay_end, 1, 1, 0, |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1701 "Return the position at which OVERLAY ends.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1702 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1703 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1704 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1705 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1706 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1707 return (Fmarker_position (OVERLAY_END (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1708 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1709 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1710 DEFUN ("overlay-buffer", Foverlay_buffer, Soverlay_buffer, 1, 1, 0, |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1711 "Return the buffer OVERLAY belongs to.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1712 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1713 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1714 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1715 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1716 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1717 return Fmarker_buffer (OVERLAY_START (overlay)); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1718 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1719 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1720 DEFUN ("overlay-properties", Foverlay_properties, Soverlay_properties, 1, 1, 0, |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1721 "Return a list of the properties on OVERLAY.\n\ |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1722 This is a copy of OVERLAY's plist; modifying its conses has no effect on\n\ |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1723 OVERLAY.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1724 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1725 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1726 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1727 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1728 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1729 return Fcopy_sequence (Fcdr_safe (XCONS (overlay)->cdr)); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1730 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1731 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
1732 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1733 DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0, |
|
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3533
diff
changeset
|
1734 "Return a list of the overlays that contain position POS.") |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1735 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1736 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1737 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1738 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1739 int endpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1740 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1741 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1742 Lisp_Object result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1743 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1744 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1745 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1746 len = 10; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1747 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object)); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1748 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1749 /* Put all the overlays we want in a vector in overlay_vec. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1750 Store the length in len. */ |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1751 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, &endpos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1752 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1753 /* Make a list of them all. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1754 result = Flist (noverlays, overlay_vec); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1755 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
1756 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1757 return result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1758 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1759 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1760 DEFUN ("next-overlay-change", Fnext_overlay_change, Snext_overlay_change, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1761 1, 1, 0, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1762 "Return the next position after POS where an overlay starts or ends.") |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1763 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1764 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1765 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1766 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1767 int endpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1768 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1769 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1770 Lisp_Object result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1771 int i; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1772 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1773 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1774 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1775 len = 10; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1776 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object)); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1777 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1778 /* Put all the overlays we want in a vector in overlay_vec. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1779 Store the length in len. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1780 endpos gets the position where the next overlay starts. */ |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1781 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, &endpos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1782 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1783 /* If any of these overlays ends before endpos, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1784 use its ending point instead. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1785 for (i = 0; i < noverlays; i++) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1786 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1787 Lisp_Object oend; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1788 int oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1789 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1790 oend = OVERLAY_END (overlay_vec[i]); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1791 oendpos = OVERLAY_POSITION (oend); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1792 if (oendpos < endpos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1793 endpos = oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1794 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1795 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
1796 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1797 return make_number (endpos); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1798 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1799 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1800 /* These functions are for debugging overlays. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1801 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1802 DEFUN ("overlay-lists", Foverlay_lists, Soverlay_lists, 0, 0, 0, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1803 "Return a pair of lists giving all the overlays of the current buffer.\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1804 The car has all the overlays before the overlay center;\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1805 the cdr has all the overlays before the overlay center.\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1806 Recentering overlays moves overlays between these lists.\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1807 The lists you get are copies, so that changing them has no effect.\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1808 However, the overlays you get are the real objects that the buffer uses.") |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1809 () |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1810 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1811 Lisp_Object before, after; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1812 before = current_buffer->overlays_before; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1813 if (CONSP (before)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1814 before = Fcopy_sequence (before); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1815 after = current_buffer->overlays_after; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1816 if (CONSP (after)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1817 after = Fcopy_sequence (after); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1818 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1819 return Fcons (before, after); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1820 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1821 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1822 DEFUN ("overlay-recenter", Foverlay_recenter, Soverlay_recenter, 1, 1, 0, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1823 "Recenter the overlays of the current buffer around position POS.") |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1824 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1825 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1826 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1827 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1828 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
1829 recenter_overlay_lists (current_buffer, XINT (pos)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1830 return Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1831 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1832 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1833 DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1834 "Get the property of overlay OVERLAY with property name NAME.") |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1835 (overlay, prop) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1836 Lisp_Object overlay, prop; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1837 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1838 Lisp_Object plist; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1839 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1840 CHECK_OVERLAY (overlay, 0); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1841 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1842 for (plist = Fcdr_safe (XCONS (overlay)->cdr); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1843 CONSP (plist) && CONSP (XCONS (plist)->cdr); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1844 plist = XCONS (XCONS (plist)->cdr)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1845 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1846 if (EQ (XCONS (plist)->car, prop)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1847 return XCONS (XCONS (plist)->cdr)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1848 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1849 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1850 return Qnil; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1851 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1852 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1853 DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1854 "Set one property of overlay OVERLAY: give property PROP value VALUE.") |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1855 (overlay, prop, value) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1856 Lisp_Object overlay, prop, value; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1857 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1858 Lisp_Object plist, tail; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1859 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1860 CHECK_OVERLAY (overlay, 0); |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1861 |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1862 redisplay_region (XMARKER (OVERLAY_START (overlay))->buffer, |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1863 OVERLAY_POSITION (OVERLAY_START (overlay)), |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1864 OVERLAY_POSITION (OVERLAY_END (overlay))); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
1865 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1866 plist = Fcdr_safe (XCONS (overlay)->cdr); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1867 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1868 for (tail = plist; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1869 CONSP (tail) && CONSP (XCONS (tail)->cdr); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1870 tail = XCONS (XCONS (tail)->cdr)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1871 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1872 if (EQ (XCONS (tail)->car, prop)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1873 return XCONS (XCONS (tail)->cdr)->car = value; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1874 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1875 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1876 if (! CONSP (XCONS (overlay)->cdr)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1877 XCONS (overlay)->cdr = Fcons (Qnil, Qnil); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1878 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1879 XCONS (XCONS (overlay)->cdr)->cdr |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1880 = Fcons (prop, Fcons (value, plist)); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1881 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1882 return value; |
| 333 | 1883 } |
| 1884 | |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1885 /* Run the modification-hooks of overlays that include |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1886 any part of the text in START to END. |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1887 Run the insert-before-hooks of overlay starting at END, |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1888 and the insert-after-hooks of overlay ending at START. */ |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1889 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1890 void |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1891 verify_overlay_modification (start, end) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1892 Lisp_Object start, end; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1893 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1894 Lisp_Object prop, overlay, tail; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1895 int insertion = EQ (start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1896 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1897 for (tail = current_buffer->overlays_before; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1898 CONSP (tail); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1899 tail = XCONS (tail)->cdr) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1900 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1901 int startpos, endpos; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1902 int ostart, oend; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1903 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1904 overlay = XCONS (tail)->car; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1905 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1906 ostart = OVERLAY_START (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1907 oend = OVERLAY_END (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1908 endpos = OVERLAY_POSITION (oend); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1909 if (XFASTINT (start) > endpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1910 break; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1911 startpos = OVERLAY_POSITION (ostart); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1912 if (XFASTINT (end) == startpos && insertion) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1913 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1914 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1915 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1916 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1917 if (XFASTINT (start) == endpos && insertion) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1918 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1919 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1920 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1921 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1922 if (insertion |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1923 ? (XFASTINT (start) > startpos && XFASTINT (end) < endpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1924 : (XFASTINT (start) >= startpos && XFASTINT (end) <= endpos)) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1925 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1926 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1927 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1928 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1929 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1930 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1931 for (tail = current_buffer->overlays_after; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1932 CONSP (tail); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1933 tail = XCONS (tail)->cdr) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1934 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1935 int startpos, endpos; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1936 int ostart, oend; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1937 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1938 overlay = XCONS (tail)->car; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1939 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1940 ostart = OVERLAY_START (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1941 oend = OVERLAY_END (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1942 startpos = OVERLAY_POSITION (ostart); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1943 if (XFASTINT (end) < startpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1944 break; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1945 if (XFASTINT (end) == startpos && insertion) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1946 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1947 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1948 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1949 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1950 if (XFASTINT (start) == endpos && insertion) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1951 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1952 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1953 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1954 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1955 if (insertion |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1956 ? (XFASTINT (start) > startpos && XFASTINT (end) < endpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1957 : (XFASTINT (start) >= startpos && XFASTINT (end) <= endpos)) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1958 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1959 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1960 call_overlay_mod_hooks (prop, overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1961 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1962 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1963 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1964 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1965 static void |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1966 call_overlay_mod_hooks (list, overlay, start, end) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1967 Lisp_Object list, overlay, start, end; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1968 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1969 struct gcpro gcpro1; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1970 GCPRO1 (list); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1971 while (!NILP (list)) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1972 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1973 call3 (Fcar (list), overlay, start, end); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1974 list = Fcdr (list); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1975 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1976 UNGCPRO; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1977 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
1978 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1979 /* Somebody has tried to store NEWVAL into the buffer-local slot with |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1980 offset XUINT (valcontents), and NEWVAL has an unacceptable type. */ |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1981 void |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1982 buffer_slot_type_mismatch (valcontents, newval) |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1983 Lisp_Object valcontents, newval; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1984 { |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1985 unsigned int offset = XUINT (valcontents); |
|
1909
ea6c75bc0d38
* buffer.c (Fswitch_to_buffer): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1876
diff
changeset
|
1986 unsigned char *symbol_name = |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1987 (XSYMBOL (*(Lisp_Object *)(offset + (char *)&buffer_local_symbols)) |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1988 ->name->data); |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1989 char *type_name; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1990 |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1991 switch (XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_types))) |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1992 { |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1993 case Lisp_Int: type_name = "integers"; break; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1994 case Lisp_String: type_name = "strings"; break; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1995 case Lisp_Marker: type_name = "markers"; break; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1996 case Lisp_Symbol: type_name = "symbols"; break; |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1997 case Lisp_Cons: type_name = "lists"; break; |
|
1909
ea6c75bc0d38
* buffer.c (Fswitch_to_buffer): Pass the correct number of
Jim Blandy <jimb@redhat.com>
parents:
1876
diff
changeset
|
1998 case Lisp_Vector: type_name = "vectors"; break; |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
1999 default: |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2000 abort (); |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2001 } |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2002 |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2003 error ("only %s should be stored in the buffer-local variable %s", |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2004 type_name, symbol_name); |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2005 } |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2006 |
| 333 | 2007 init_buffer_once () |
| 2008 { | |
| 2009 register Lisp_Object tem; | |
| 2010 | |
| 2011 /* Make sure all markable slots in buffer_defaults | |
| 2012 are initialized reasonably, so mark_buffer won't choke. */ | |
| 2013 reset_buffer (&buffer_defaults); | |
| 2014 reset_buffer (&buffer_local_symbols); | |
| 2015 XSET (Vbuffer_defaults, Lisp_Buffer, &buffer_defaults); | |
| 2016 XSET (Vbuffer_local_symbols, Lisp_Buffer, &buffer_local_symbols); | |
| 2017 | |
| 2018 /* Set up the default values of various buffer slots. */ | |
| 2019 /* Must do these before making the first buffer! */ | |
| 2020 | |
| 2021 /* real setup is done in loaddefs.el */ | |
| 2022 buffer_defaults.mode_line_format = build_string ("%-"); | |
| 2023 buffer_defaults.abbrev_mode = Qnil; | |
| 2024 buffer_defaults.overwrite_mode = Qnil; | |
| 2025 buffer_defaults.case_fold_search = Qt; | |
| 2026 buffer_defaults.auto_fill_function = Qnil; | |
| 2027 buffer_defaults.selective_display = Qnil; | |
| 2028 #ifndef old | |
| 2029 buffer_defaults.selective_display_ellipses = Qt; | |
| 2030 #endif | |
| 2031 buffer_defaults.abbrev_table = Qnil; | |
| 2032 buffer_defaults.display_table = Qnil; | |
| 2033 buffer_defaults.undo_list = Qnil; | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2034 buffer_defaults.mark_active = Qnil; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2035 buffer_defaults.overlays_before = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2036 buffer_defaults.overlays_after = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2037 XFASTINT (buffer_defaults.overlay_center) = 1; |
| 333 | 2038 |
| 2039 XFASTINT (buffer_defaults.tab_width) = 8; | |
| 2040 buffer_defaults.truncate_lines = Qnil; | |
| 2041 buffer_defaults.ctl_arrow = Qt; | |
| 2042 | |
| 2043 XFASTINT (buffer_defaults.fill_column) = 70; | |
| 2044 XFASTINT (buffer_defaults.left_margin) = 0; | |
| 2045 | |
| 2046 /* Assign the local-flags to the slots that have default values. | |
| 2047 The local flag is a bit that is used in the buffer | |
| 2048 to say that it has its own local value for the slot. | |
| 2049 The local flag bits are in the local_var_flags slot of the buffer. */ | |
| 2050 | |
| 2051 /* Nothing can work if this isn't true */ | |
| 2052 if (sizeof (int) != sizeof (Lisp_Object)) abort (); | |
| 2053 | |
| 2054 /* 0 means not a lisp var, -1 means always local, else mask */ | |
| 2055 bzero (&buffer_local_flags, sizeof buffer_local_flags); | |
| 2056 XFASTINT (buffer_local_flags.filename) = -1; | |
| 2057 XFASTINT (buffer_local_flags.directory) = -1; | |
| 2058 XFASTINT (buffer_local_flags.backed_up) = -1; | |
| 2059 XFASTINT (buffer_local_flags.save_length) = -1; | |
| 2060 XFASTINT (buffer_local_flags.auto_save_file_name) = -1; | |
| 2061 XFASTINT (buffer_local_flags.read_only) = -1; | |
| 2062 XFASTINT (buffer_local_flags.major_mode) = -1; | |
| 2063 XFASTINT (buffer_local_flags.mode_name) = -1; | |
| 2064 XFASTINT (buffer_local_flags.undo_list) = -1; | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2065 XFASTINT (buffer_local_flags.mark_active) = -1; |
| 333 | 2066 |
| 2067 XFASTINT (buffer_local_flags.mode_line_format) = 1; | |
| 2068 XFASTINT (buffer_local_flags.abbrev_mode) = 2; | |
| 2069 XFASTINT (buffer_local_flags.overwrite_mode) = 4; | |
| 2070 XFASTINT (buffer_local_flags.case_fold_search) = 8; | |
| 2071 XFASTINT (buffer_local_flags.auto_fill_function) = 0x10; | |
| 2072 XFASTINT (buffer_local_flags.selective_display) = 0x20; | |
| 2073 #ifndef old | |
| 2074 XFASTINT (buffer_local_flags.selective_display_ellipses) = 0x40; | |
| 2075 #endif | |
| 2076 XFASTINT (buffer_local_flags.tab_width) = 0x80; | |
| 2077 XFASTINT (buffer_local_flags.truncate_lines) = 0x100; | |
| 2078 XFASTINT (buffer_local_flags.ctl_arrow) = 0x200; | |
| 2079 XFASTINT (buffer_local_flags.fill_column) = 0x400; | |
| 2080 XFASTINT (buffer_local_flags.left_margin) = 0x800; | |
| 2081 XFASTINT (buffer_local_flags.abbrev_table) = 0x1000; | |
| 2082 XFASTINT (buffer_local_flags.display_table) = 0x2000; | |
| 2083 XFASTINT (buffer_local_flags.syntax_table) = 0x8000; | |
| 2084 | |
| 2085 Vbuffer_alist = Qnil; | |
| 2086 current_buffer = 0; | |
| 2087 all_buffers = 0; | |
| 2088 | |
| 2089 QSFundamental = build_string ("Fundamental"); | |
| 2090 | |
| 2091 Qfundamental_mode = intern ("fundamental-mode"); | |
| 2092 buffer_defaults.major_mode = Qfundamental_mode; | |
| 2093 | |
| 2094 Qmode_class = intern ("mode-class"); | |
| 2095 | |
| 2096 Qprotected_field = intern ("protected-field"); | |
| 2097 | |
| 2098 Qpermanent_local = intern ("permanent-local"); | |
| 2099 | |
| 2100 Qkill_buffer_hook = intern ("kill-buffer-hook"); | |
| 2101 | |
| 2102 Vprin1_to_string_buffer = Fget_buffer_create (build_string (" prin1")); | |
| 2103 /* super-magic invisible buffer */ | |
| 2104 Vbuffer_alist = Qnil; | |
| 2105 | |
| 648 | 2106 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); |
| 333 | 2107 } |
| 2108 | |
| 2109 init_buffer () | |
| 2110 { | |
| 2111 char buf[MAXPATHLEN+1]; | |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2112 char *pwd; |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2113 struct stat dotstat, pwdstat; |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
2114 Lisp_Object temp; |
| 333 | 2115 |
| 2116 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); | |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2117 |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2118 /* If PWD is accurate, use it instead of calling getwd. This is faster |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2119 when PWD is right, and may avoid a fatal error. */ |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2120 if ((pwd = getenv ("PWD")) != 0 && *pwd == '/' |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2121 && stat (pwd, &pwdstat) == 0 |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2122 && stat (".", &dotstat) == 0 |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2123 && dotstat.st_ino == pwdstat.st_ino |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2124 && dotstat.st_dev == pwdstat.st_dev |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2125 && strlen (pwd) < MAXPATHLEN) |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2126 strcpy (buf, pwd); |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
2127 else if (getwd (buf) == 0) |
| 333 | 2128 fatal ("`getwd' failed: %s.\n", buf); |
| 2129 | |
| 2130 #ifndef VMS | |
| 2131 /* Maybe this should really use some standard subroutine | |
| 2132 whose definition is filename syntax dependent. */ | |
| 2133 if (buf[strlen (buf) - 1] != '/') | |
| 2134 strcat (buf, "/"); | |
| 2135 #endif /* not VMS */ | |
| 2136 current_buffer->directory = build_string (buf); | |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
2137 |
|
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
2138 temp = get_minibuffer (0); |
|
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
2139 XBUFFER (temp)->directory = current_buffer->directory; |
| 333 | 2140 } |
| 2141 | |
| 2142 /* initialize the buffer routines */ | |
| 2143 syms_of_buffer () | |
| 2144 { | |
|
2060
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
2145 extern Lisp_Object Qdisabled; |
|
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
2146 |
| 333 | 2147 staticpro (&Vbuffer_defaults); |
| 2148 staticpro (&Vbuffer_local_symbols); | |
| 2149 staticpro (&Qfundamental_mode); | |
| 2150 staticpro (&Qmode_class); | |
| 2151 staticpro (&QSFundamental); | |
| 2152 staticpro (&Vbuffer_alist); | |
| 2153 staticpro (&Qprotected_field); | |
| 2154 staticpro (&Qpermanent_local); | |
| 2155 staticpro (&Qkill_buffer_hook); | |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2156 staticpro (&Qoverlayp); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2157 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2158 Qoverlayp = intern ("overlayp"); |
| 333 | 2159 |
| 2160 Fput (Qprotected_field, Qerror_conditions, | |
| 2161 Fcons (Qprotected_field, Fcons (Qerror, Qnil))); | |
| 2162 Fput (Qprotected_field, Qerror_message, | |
| 2163 build_string ("Attempt to modify a protected field")); | |
| 2164 | |
|
2060
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
2165 Fput (intern ("erase-buffer"), Qdisabled, Qt); |
|
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
2166 |
| 333 | 2167 /* All these use DEFVAR_LISP_NOPRO because the slots in |
| 2168 buffer_defaults will all be marked via Vbuffer_defaults. */ | |
| 2169 | |
| 2170 DEFVAR_LISP_NOPRO ("default-mode-line-format", | |
| 2171 &buffer_defaults.mode_line_format, | |
| 2172 "Default value of `mode-line-format' for buffers that don't override it.\n\ | |
| 2173 This is the same as (default-value 'mode-line-format)."); | |
| 2174 | |
| 2175 DEFVAR_LISP_NOPRO ("default-abbrev-mode", | |
| 2176 &buffer_defaults.abbrev_mode, | |
| 2177 "Default value of `abbrev-mode' for buffers that do not override it.\n\ | |
| 2178 This is the same as (default-value 'abbrev-mode)."); | |
| 2179 | |
| 2180 DEFVAR_LISP_NOPRO ("default-ctl-arrow", | |
| 2181 &buffer_defaults.ctl_arrow, | |
| 2182 "Default value of `ctl-arrow' for buffers that do not override it.\n\ | |
| 2183 This is the same as (default-value 'ctl-arrow)."); | |
| 2184 | |
| 2185 DEFVAR_LISP_NOPRO ("default-truncate-lines", | |
| 2186 &buffer_defaults.truncate_lines, | |
| 2187 "Default value of `truncate-lines' for buffers that do not override it.\n\ | |
| 2188 This is the same as (default-value 'truncate-lines)."); | |
| 2189 | |
| 2190 DEFVAR_LISP_NOPRO ("default-fill-column", | |
| 2191 &buffer_defaults.fill_column, | |
| 2192 "Default value of `fill-column' for buffers that do not override it.\n\ | |
| 2193 This is the same as (default-value 'fill-column)."); | |
| 2194 | |
| 2195 DEFVAR_LISP_NOPRO ("default-left-margin", | |
| 2196 &buffer_defaults.left_margin, | |
| 2197 "Default value of `left-margin' for buffers that do not override it.\n\ | |
| 2198 This is the same as (default-value 'left-margin)."); | |
| 2199 | |
| 2200 DEFVAR_LISP_NOPRO ("default-tab-width", | |
| 2201 &buffer_defaults.tab_width, | |
| 2202 "Default value of `tab-width' for buffers that do not override it.\n\ | |
| 2203 This is the same as (default-value 'tab-width)."); | |
| 2204 | |
| 2205 DEFVAR_LISP_NOPRO ("default-case-fold-search", | |
| 2206 &buffer_defaults.case_fold_search, | |
| 2207 "Default value of `case-fold-search' for buffers that don't override it.\n\ | |
| 2208 This is the same as (default-value 'case-fold-search)."); | |
| 2209 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2210 DEFVAR_PER_BUFFER ("mode-line-format", ¤t_buffer->mode_line_format, |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2211 Qnil, 0); |
| 333 | 2212 |
| 2213 /* This doc string is too long for cpp; cpp dies if it isn't in a comment. | |
| 2214 But make-docfile finds it! | |
| 2215 DEFVAR_PER_BUFFER ("mode-line-format", ¤t_buffer->mode_line_format, | |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2216 Qnil, |
| 333 | 2217 "Template for displaying mode line for current buffer.\n\ |
| 2218 Each buffer has its own value of this variable.\n\ | |
| 2219 Value may be a string, a symbol or a list or cons cell.\n\ | |
| 2220 For a symbol, its value is used (but it is ignored if t or nil).\n\ | |
| 2221 A string appearing directly as the value of a symbol is processed verbatim\n\ | |
| 2222 in that the %-constructs below are not recognized.\n\ | |
| 2223 For a list whose car is a symbol, the symbol's value is taken,\n\ | |
| 2224 and if that is non-nil, the cadr of the list is processed recursively.\n\ | |
| 2225 Otherwise, the caddr of the list (if there is one) is processed.\n\ | |
| 2226 For a list whose car is a string or list, each element is processed\n\ | |
| 2227 recursively and the results are effectively concatenated.\n\ | |
| 2228 For a list whose car is an integer, the cdr of the list is processed\n\ | |
| 2229 and padded (if the number is positive) or truncated (if negative)\n\ | |
| 2230 to the width specified by that number.\n\ | |
| 2231 A string is printed verbatim in the mode line except for %-constructs:\n\ | |
| 2232 (%-constructs are allowed when the string is the entire mode-line-format\n\ | |
| 2233 or when it is found in a cons-cell or a list)\n\ | |
| 2234 %b -- print buffer name. %f -- print visited file name.\n\ | |
| 2235 %* -- print *, % or hyphen. %m -- print value of mode-name (obsolete).\n\ | |
|
2578
f694fc6cdd33
(Qmode-line-format): Describe %l in the doc string.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2508
diff
changeset
|
2236 %s -- print process status. %l -- print the current line number.\n\ |
| 333 | 2237 %p -- print percent of buffer above top of window, or top, bot or all.\n\ |
| 2238 %n -- print Narrow if appropriate.\n\ | |
| 2239 %[ -- print one [ for each recursive editing level. %] similar.\n\ | |
| 2240 %% -- print %. %- -- print infinitely many dashes.\n\ | |
| 2241 Decimal digits after the % specify field width to which to pad."); | |
| 2242 */ | |
| 2243 | |
| 2244 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode, | |
| 2245 "*Major mode for new buffers. Defaults to `fundamental-mode'.\n\ | |
| 2246 nil here means use current buffer's major mode."); | |
| 2247 | |
| 2248 DEFVAR_PER_BUFFER ("major-mode", ¤t_buffer->major_mode, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2249 make_number (Lisp_Symbol), |
| 333 | 2250 "Symbol for current buffer's major mode."); |
| 2251 | |
| 2252 DEFVAR_PER_BUFFER ("mode-name", ¤t_buffer->mode_name, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2253 make_number (Lisp_String), |
| 333 | 2254 "Pretty name of current buffer's major mode (a string)."); |
| 2255 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2256 DEFVAR_PER_BUFFER ("abbrev-mode", ¤t_buffer->abbrev_mode, Qnil, |
| 333 | 2257 "Non-nil turns on automatic expansion of abbrevs as they are inserted.\n\ |
| 2258 Automatically becomes buffer-local when set in any fashion."); | |
| 2259 | |
| 2260 DEFVAR_PER_BUFFER ("case-fold-search", ¤t_buffer->case_fold_search, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2261 Qnil, |
| 333 | 2262 "*Non-nil if searches should ignore case.\n\ |
| 2263 Automatically becomes buffer-local when set in any fashion."); | |
| 2264 | |
| 2265 DEFVAR_PER_BUFFER ("fill-column", ¤t_buffer->fill_column, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2266 make_number (Lisp_Int), |
| 333 | 2267 "*Column beyond which automatic line-wrapping should happen.\n\ |
| 2268 Automatically becomes buffer-local when set in any fashion."); | |
| 2269 | |
| 2270 DEFVAR_PER_BUFFER ("left-margin", ¤t_buffer->left_margin, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2271 make_number (Lisp_Int), |
| 333 | 2272 "*Column for the default indent-line-function to indent to.\n\ |
| 2273 Linefeed indents to this column in Fundamental mode.\n\ | |
| 2274 Automatically becomes buffer-local when set in any fashion."); | |
| 2275 | |
| 2276 DEFVAR_PER_BUFFER ("tab-width", ¤t_buffer->tab_width, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2277 make_number (Lisp_Int), |
| 333 | 2278 "*Distance between tab stops (for display of tab characters), in columns.\n\ |
| 2279 Automatically becomes buffer-local when set in any fashion."); | |
| 2280 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2281 DEFVAR_PER_BUFFER ("ctl-arrow", ¤t_buffer->ctl_arrow, Qnil, |
| 333 | 2282 "*Non-nil means display control chars with uparrow.\n\ |
| 2283 Nil means use backslash and octal digits.\n\ | |
| 2284 Automatically becomes buffer-local when set in any fashion.\n\ | |
| 2285 This variable does not apply to characters whose display is specified\n\ | |
| 2286 in the current display table (if there is one)."); | |
| 2287 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2288 DEFVAR_PER_BUFFER ("truncate-lines", ¤t_buffer->truncate_lines, Qnil, |
| 333 | 2289 "*Non-nil means do not display continuation lines;\n\ |
| 2290 give each line of text one screen line.\n\ | |
| 2291 Automatically becomes buffer-local when set in any fashion.\n\ | |
| 2292 \n\ | |
| 2293 Note that this is overridden by the variable\n\ | |
| 2294 `truncate-partial-width-windows' if that variable is non-nil\n\ | |
| 764 | 2295 and this buffer is not full-frame width."); |
| 333 | 2296 |
| 2297 DEFVAR_PER_BUFFER ("default-directory", ¤t_buffer->directory, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2298 make_number (Lisp_String), |
| 333 | 2299 "Name of default directory of current buffer. Should end with slash.\n\ |
| 2300 Each buffer has its own value of this variable."); | |
| 2301 | |
| 2302 DEFVAR_PER_BUFFER ("auto-fill-function", ¤t_buffer->auto_fill_function, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2303 Qnil, |
| 333 | 2304 "Function called (if non-nil) to perform auto-fill.\n\ |
| 2305 It is called after self-inserting a space at a column beyond `fill-column'.\n\ | |
| 2306 Each buffer has its own value of this variable.\n\ | |
| 2307 NOTE: This variable is not an ordinary hook;\n\ | |
| 2308 It may not be a list of functions."); | |
| 2309 | |
| 2310 DEFVAR_PER_BUFFER ("buffer-file-name", ¤t_buffer->filename, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2311 make_number (Lisp_String), |
| 333 | 2312 "Name of file visited in current buffer, or nil if not visiting a file.\n\ |
| 2313 Each buffer has its own value of this variable."); | |
| 2314 | |
| 2315 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name", | |
| 1041 | 2316 ¤t_buffer->auto_save_file_name, |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2317 make_number (Lisp_String), |
| 333 | 2318 "Name of file for auto-saving current buffer,\n\ |
| 2319 or nil if buffer should not be auto-saved.\n\ | |
| 2320 Each buffer has its own value of this variable."); | |
| 2321 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2322 DEFVAR_PER_BUFFER ("buffer-read-only", ¤t_buffer->read_only, Qnil, |
| 333 | 2323 "Non-nil if this buffer is read-only.\n\ |
| 2324 Each buffer has its own value of this variable."); | |
| 2325 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2326 DEFVAR_PER_BUFFER ("buffer-backed-up", ¤t_buffer->backed_up, Qnil, |
| 333 | 2327 "Non-nil if this buffer's file has been backed up.\n\ |
| 2328 Backing up is done before the first time the file is saved.\n\ | |
| 2329 Each buffer has its own value of this variable."); | |
| 2330 | |
| 2331 DEFVAR_PER_BUFFER ("buffer-saved-size", ¤t_buffer->save_length, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2332 make_number (Lisp_Int), |
| 333 | 2333 "Length of current buffer when last read in, saved or auto-saved.\n\ |
| 2334 0 initially.\n\ | |
| 2335 Each buffer has its own value of this variable."); | |
| 2336 | |
| 2337 DEFVAR_PER_BUFFER ("selective-display", ¤t_buffer->selective_display, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2338 Qnil, |
| 333 | 2339 "Non-nil enables selective display:\n\ |
| 2340 Integer N as value means display only lines\n\ | |
| 2341 that start with less than n columns of space.\n\ | |
| 2342 A value of t means, after a ^M, all the rest of the line is invisible.\n\ | |
| 2343 Then ^M's in the file are written into files as newlines.\n\n\ | |
| 2344 Automatically becomes buffer-local when set in any fashion."); | |
| 2345 | |
| 2346 #ifndef old | |
| 2347 DEFVAR_PER_BUFFER ("selective-display-ellipses", | |
| 2348 ¤t_buffer->selective_display_ellipses, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2349 Qnil, |
| 333 | 2350 "t means display ... on previous line when a line is invisible.\n\ |
| 2351 Automatically becomes buffer-local when set in any fashion."); | |
| 2352 #endif | |
| 2353 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
2354 DEFVAR_PER_BUFFER ("overwrite-mode", ¤t_buffer->overwrite_mode, Qnil, |
| 333 | 2355 "Non-nil if self-insertion should replace existing text.\n\ |
|
2214
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2060
diff
changeset
|
2356 If non-nil and not `overwrite-mode-binary', self-insertion still\n\ |
|
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2060
diff
changeset
|
2357 inserts at the end of a line, and inserts when point is before a tab,\n\ |
| 2217 | 2358 until the tab is filled in.\n\ |
|
2214
e5928bec8d5d
* cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents:
2060
diff
changeset
|
2359 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.\n\ |
| 333 | 2360 Automatically becomes buffer-local when set in any fashion."); |
| 2361 | |
| 2362 DEFVAR_PER_BUFFER ("buffer-display-table", ¤t_buffer->display_table, | |
|
1038
59fa7697bb14
(syms_of_buffer): Made buffer-display-table,
Richard M. Stallman <rms@gnu.org>
parents:
1001
diff
changeset
|
2363 Qnil, |
| 333 | 2364 "Display table that controls display of the contents of current buffer.\n\ |
| 2365 Automatically becomes buffer-local when set in any fashion.\n\ | |
| 2366 The display table is a vector created with `make-display-table'.\n\ | |
| 2367 The first 256 elements control how to display each possible text character.\n\ | |
|
2645
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2368 Each value should be a vector of characters or nil;\n\ |
| 333 | 2369 nil means display the character in the default fashion.\n\ |
|
2645
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2370 The remaining five elements control the display of\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2371 the end of a truncated screen line (element 256, a single character);\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2372 the end of a continued line (element 257, a single character);\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2373 the escape character used to display character codes in octal\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2374 (element 258, a single character);\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2375 the character used as an arrow for control characters (element 259,\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2376 a single character);\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2377 the decoration indicating the presence of invisible lines (element 260,\n\ |
|
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
2378 a vector of characters).\n\ |
| 333 | 2379 If this variable is nil, the value of `standard-display-table' is used.\n\ |
| 2380 Each window can have its own, overriding display table."); | |
| 2381 | |
| 2382 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol, | |
| 2383 "Don't ask."); | |
| 2384 */ | |
| 392 | 2385 DEFVAR_LISP ("before-change-function", &Vbefore_change_function, |
| 333 | 2386 "Function to call before each text change.\n\ |
| 2387 Two arguments are passed to the function: the positions of\n\ | |
| 2388 the beginning and end of the range of old text to be changed.\n\ | |
| 2389 \(For an insertion, the beginning and end are at the same place.)\n\ | |
| 2390 No information is given about the length of the text after the change.\n\ | |
| 2391 position of the change\n\ | |
| 2392 \n\ | |
| 2393 While executing the `before-change-function', changes to buffers do not\n\ | |
| 2394 cause calls to any `before-change-function' or `after-change-function'."); | |
| 2395 Vbefore_change_function = Qnil; | |
| 2396 | |
| 2397 DEFVAR_LISP ("after-change-function", &Vafter_change_function, | |
| 2398 "Function to call after each text change.\n\ | |
| 2399 Three arguments are passed to the function: the positions of\n\ | |
| 2400 the beginning and end of the range of changed text,\n\ | |
| 2401 and the length of the pre-change text replaced by that range.\n\ | |
| 2402 \(For an insertion, the pre-change length is zero;\n\ | |
| 2403 for a deletion, that length is the number of characters deleted,\n\ | |
| 2404 and the post-change beginning and end are at the same place.)\n\ | |
| 2405 \n\ | |
| 2406 While executing the `after-change-function', changes to buffers do not\n\ | |
| 2407 cause calls to any `before-change-function' or `after-change-function'."); | |
| 2408 Vafter_change_function = Qnil; | |
| 2409 | |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2410 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook, |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2411 "A list of functions to call before changing a buffer which is unmodified.\n\ |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2412 The functions are run using the `run-hooks' function."); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2413 Vfirst_change_hook = Qnil; |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2414 Qfirst_change_hook = intern ("first-change-hook"); |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
2415 staticpro (&Qfirst_change_hook); |
| 333 | 2416 |
| 1041 | 2417 DEFVAR_PER_BUFFER ("buffer-undo-list", ¤t_buffer->undo_list, Qnil, |
| 333 | 2418 "List of undo entries in current buffer.\n\ |
| 2419 Recent changes come first; older changes follow newer.\n\ | |
| 2420 \n\ | |
| 2421 An entry (START . END) represents an insertion which begins at\n\ | |
| 2422 position START and ends at position END.\n\ | |
| 2423 \n\ | |
| 2424 An entry (TEXT . POSITION) represents the deletion of the string TEXT\n\ | |
| 2425 from (abs POSITION). If POSITION is positive, point was at the front\n\ | |
| 2426 of the text being deleted; if negative, point was at the end.\n\ | |
| 2427 \n\ | |
| 2428 An entry (t HIGHWORD LOWWORD) indicates that the buffer had been\n\ | |
| 2429 previously unmodified. HIGHWORD and LOWWORD are the high and low\n\ | |
| 2430 16-bit words of the buffer's modification count at the time. If the\n\ | |
| 2431 modification count of the most recent save is different, this entry is\n\ | |
| 2432 obsolete.\n\ | |
| 2433 \n\ | |
|
1952
b0ec61f76511
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
1909
diff
changeset
|
2434 An entry (nil PROP VAL BEG . END) indicates that a text property\n\ |
|
b0ec61f76511
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
1909
diff
changeset
|
2435 was modified between BEG and END. PROP is the property name,\n\ |
|
b0ec61f76511
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
1909
diff
changeset
|
2436 and VAL is the old value.\n\ |
|
b0ec61f76511
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
1909
diff
changeset
|
2437 \n\ |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2438 An entry of the form POSITION indicates that point was at the buffer\n\ |
|
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2439 location given by the integer. Undoing an entry of this form places\n\ |
|
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2440 point at POSITION.\n\ |
|
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2441 \n\ |
| 333 | 2442 nil marks undo boundaries. The undo command treats the changes\n\ |
| 2443 between two undo boundaries as a single step to be undone.\n\ | |
| 2444 \n\ | |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
2445 If the value of the variable is t, undo information is not recorded."); |
| 333 | 2446 |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2447 DEFVAR_PER_BUFFER ("mark-active", ¤t_buffer->mark_active, Qnil, |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2448 "Non-nil means the mark and region are currently active in this buffer.\n\ |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2449 Automatically local in all buffers."); |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2450 |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2451 DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode, |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2452 "*Non-nil means deactivate the mark when the buffer contents change."); |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2453 Vtransient_mark_mode = Qnil; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
2454 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
2455 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only, |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2456 "*Non-nil means disregard read-only status of buffers or characters.\n\ |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2457 If the value is t, disregard `buffer-read-only' and all `read-only'\n\ |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2458 text properties. If the value is a list, disregard `buffer-read-only'\n\ |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2459 and disregard a `read-only' text property if the property value\n\ |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2460 is a member of the list."); |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2461 Vinhibit_read_only = Qnil; |
|
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
2462 |
| 333 | 2463 defsubr (&Sbuffer_list); |
| 2464 defsubr (&Sget_buffer); | |
| 2465 defsubr (&Sget_file_buffer); | |
| 2466 defsubr (&Sget_buffer_create); | |
| 392 | 2467 defsubr (&Sgenerate_new_buffer_name); |
| 333 | 2468 defsubr (&Sbuffer_name); |
| 2469 /*defsubr (&Sbuffer_number);*/ | |
| 2470 defsubr (&Sbuffer_file_name); | |
| 2471 defsubr (&Sbuffer_local_variables); | |
| 2472 defsubr (&Sbuffer_modified_p); | |
| 2473 defsubr (&Sset_buffer_modified_p); | |
| 2474 defsubr (&Sbuffer_modified_tick); | |
| 2475 defsubr (&Srename_buffer); | |
| 2476 defsubr (&Sother_buffer); | |
| 2477 defsubr (&Sbuffer_disable_undo); | |
| 2478 defsubr (&Sbuffer_enable_undo); | |
| 2479 defsubr (&Skill_buffer); | |
| 2480 defsubr (&Serase_buffer); | |
| 2481 defsubr (&Sswitch_to_buffer); | |
| 2482 defsubr (&Spop_to_buffer); | |
| 2483 defsubr (&Scurrent_buffer); | |
| 2484 defsubr (&Sset_buffer); | |
| 2485 defsubr (&Sbarf_if_buffer_read_only); | |
| 2486 defsubr (&Sbury_buffer); | |
| 2487 defsubr (&Slist_buffers); | |
| 2488 defsubr (&Skill_all_local_variables); | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2489 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2490 defsubr (&Soverlayp); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2491 defsubr (&Smake_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2492 defsubr (&Sdelete_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2493 defsubr (&Smove_overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
2494 defsubr (&Soverlay_start); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
2495 defsubr (&Soverlay_end); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
2496 defsubr (&Soverlay_buffer); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
2497 defsubr (&Soverlay_properties); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2498 defsubr (&Soverlays_at); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2499 defsubr (&Snext_overlay_change); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2500 defsubr (&Soverlay_recenter); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2501 defsubr (&Soverlay_lists); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2502 defsubr (&Soverlay_get); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2503 defsubr (&Soverlay_put); |
| 333 | 2504 } |
| 2505 | |
| 2506 keys_of_buffer () | |
| 2507 { | |
| 2508 initial_define_key (control_x_map, 'b', "switch-to-buffer"); | |
| 2509 initial_define_key (control_x_map, 'k', "kill-buffer"); | |
| 2510 initial_define_key (control_x_map, Ctl ('B'), "list-buffers"); | |
| 2511 } |
