annotate src/buffer.c @ 12076:ee38e93ccf7e

(Fkill_buffer): When killing indirect buffer, unchain that buffer's markers (only) from the common chain. Don't rekill this buffer's indirect buffers that are dead. Do nothing if this buffer is already dead.
author Karl Heuer <kwzh@gnu.org>
date Mon, 05 Jun 1995 17:32:51 +0000
parents 1067ddd12dfc
children 30adadd79bf9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1 /* Buffer manipulation primitives for GNU Emacs.
10967
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995
1953
714df59790af (Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents: 1952
diff changeset
3 Free Software Foundation, Inc.
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
4
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
5 This file is part of GNU Emacs.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
6
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
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
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
10 any later version.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
11
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
15 GNU General Public License for more details.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
16
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
20
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
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
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
24 #include <sys/param.h>
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
25
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
26 #ifndef MAXPATHLEN
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
27 /* in 4.1, param.h fails to define this. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
28 #define MAXPATHLEN 1024
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
29 #endif /* not MAXPATHLEN */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
30
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4574
diff changeset
31 #include <config.h>
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
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
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
34 #include "window.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
35 #include "commands.h"
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
36 #include "buffer.h"
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
37 #include "region-cache.h"
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
38 #include "indent.h"
2480
6f4b9c548425 Include blockinput.h.
Richard M. Stallman <rms@gnu.org>
parents: 2439
diff changeset
39 #include "blockinput.h"
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
40
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
41 struct buffer *current_buffer; /* the current buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
42
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
43 /* First buffer in chain of all buffers (in reverse order of creation).
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
44 Threaded through ->next. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
45
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
46 struct buffer *all_buffers;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
47
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
48 /* This structure holds the default values of the buffer-local variables
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
49 defined with DEFVAR_PER_BUFFER, that have special slots in each buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
50 The default value occupies the same slot in this structure
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
51 as an individual buffer's value occupies in that buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
52 Setting the default value also goes through the alist of buffers
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
53 and stores into each buffer that does not say it has a local value. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
54
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
55 struct buffer buffer_defaults;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
56
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
57 /* A Lisp_Object pointer to the above, used for staticpro */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
58
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
59 static Lisp_Object Vbuffer_defaults;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
60
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
61 /* This structure marks which slots in a buffer have corresponding
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
62 default values in buffer_defaults.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
63 Each such slot has a nonzero value in this structure.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
64 The value has only one nonzero bit.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
65
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
66 When a buffer has its own local value for a slot,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
67 the bit for that slot (found in the same slot in this structure)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
68 is turned on in the buffer's local_var_flags slot.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
69
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
70 If a slot in this structure is -1, then even though there may
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
71 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
72 and the corresponding slot in buffer_defaults is not used.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
73
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
74 If a slot is -2, then there is no DEFVAR_PER_BUFFER for it,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
75 but there is a default value which is copied into each buffer.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
76
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
77 If a slot in this structure is negative, then even though there may
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
78 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
79 and the corresponding slot in buffer_defaults is not used.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
80
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
81 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
82 zero, that is a bug */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
83
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
84 struct buffer buffer_local_flags;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
85
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
86 /* This structure holds the names of symbols whose values may be
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
87 buffer-local. It is indexed and accessed in the same way as the above. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
88
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
89 struct buffer buffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
90 /* A Lisp_Object pointer to the above, used for staticpro */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
91 static Lisp_Object Vbuffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
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
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
101 Lisp_Object Fset_buffer ();
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
102 void set_buffer_internal ();
11889
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
103 void set_buffer_internal_1 ();
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
104 static void call_overlay_mod_hooks ();
11214
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
105 static void swap_out_buffer_local_variables ();
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
106
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
107 /* Alist of all buffer names vs the buffers. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
108 /* This used to be a variable, but is no longer,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
109 to prevent lossage due to user rplac'ing this alist or its elements. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
110 Lisp_Object Vbuffer_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
111
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
112 /* Functions to call before and after each text change. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
113 Lisp_Object Vbefore_change_function;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
114 Lisp_Object Vafter_change_function;
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
115 Lisp_Object Vbefore_change_functions;
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
116 Lisp_Object Vafter_change_functions;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
117
2043
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
118 Lisp_Object Vtransient_mark_mode;
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
119
3481
56424e6245c2 (syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 3463
diff changeset
120 /* 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
121 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
122 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
123 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
124
6051
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
125 /* List of functions to call that can query about killing a buffer.
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
126 If any of these functions returns nil, we don't kill it. */
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
127 Lisp_Object Vkill_buffer_query_functions;
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
128
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
129 /* 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
130 Lisp_Object Vfirst_change_hook;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
131 Lisp_Object Qfirst_change_hook;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
132
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
133 Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
134
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
135 Lisp_Object Qprotected_field;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
136
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
137 Lisp_Object QSFundamental; /* A string "Fundamental" */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
138
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
139 Lisp_Object Qkill_buffer_hook;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
140
5433
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
141 Lisp_Object Qget_file_buffer;
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
142
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
143 Lisp_Object Qoverlayp;
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
144
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
145 Lisp_Object Qpriority, Qwindow, Qevaporate, Qbefore_string, Qafter_string;
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
146
4213
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
147 Lisp_Object Qmodification_hooks;
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
148 Lisp_Object Qinsert_in_front_hooks;
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
149 Lisp_Object Qinsert_behind_hooks;
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
150
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
151 /* For debugging; temporary. See set_buffer_internal. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
152 /* Lisp_Object Qlisp_mode, Vcheck_symbol; */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
153
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
154 nsberror (spec)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
155 Lisp_Object spec;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
156 {
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
157 if (STRINGP (spec))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
158 error ("No buffer named %s", XSTRING (spec)->data);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
159 error ("Invalid buffer argument");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
160 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
161
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
162 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
163 "Return a list of all existing live buffers.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
164 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
165 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
166 return Fmapcar (Qcdr, Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
167 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
168
10210
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
169 /* Like Fassoc, but use Fstring_equal to compare
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
170 (which ignores text properties),
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
171 and don't ever QUIT. */
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
172
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
173 static Lisp_Object
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
174 assoc_ignore_text_properties (key, list)
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
175 register Lisp_Object key;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
176 Lisp_Object list;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
177 {
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
178 register Lisp_Object tail;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
179 for (tail = list; !NILP (tail); tail = Fcdr (tail))
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
180 {
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
181 register Lisp_Object elt, tem;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
182 elt = Fcar (tail);
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
183 tem = Fstring_equal (Fcar (elt), key);
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
184 if (!NILP (tem))
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
185 return elt;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
186 }
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
187 return Qnil;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
188 }
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
189
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
190 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
191 "Return the buffer named NAME (a string).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
192 If there is no live buffer named NAME, return nil.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
193 NAME may also be a buffer; if so, the value is that buffer.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
194 (name)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
195 register Lisp_Object name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
196 {
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
197 if (BUFFERP (name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
198 return name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
199 CHECK_STRING (name, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
200
10210
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
201 return Fcdr (assoc_ignore_text_properties (name, Vbuffer_alist));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
202 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
203
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
204 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
205 "Return the buffer visiting file FILENAME (a string).\n\
6169
16fdee72722b (Fget_file_buffer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 6061
diff changeset
206 The buffer's `buffer-file-name' must match exactly the expansion of FILENAME.\n\
9047
122d7c1a868b (get-file-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 9006
diff changeset
207 If there is no such live buffer, return nil.\n\
122d7c1a868b (get-file-buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 9006
diff changeset
208 See also `find-buffer-visiting'.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
209 (filename)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
210 register Lisp_Object filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
211 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
212 register Lisp_Object tail, buf, tem;
5433
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
213 Lisp_Object handler;
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
214
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
215 CHECK_STRING (filename, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
216 filename = Fexpand_file_name (filename, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
217
5433
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
218 /* If the file name has special constructs in it,
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
219 call the corresponding file handler. */
7028
6915bf781a38 Pass operation to Ffind_file_name_handler.
Karl Heuer <kwzh@gnu.org>
parents: 6785
diff changeset
220 handler = Ffind_file_name_handler (filename, Qget_file_buffer);
5433
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
221 if (!NILP (handler))
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
222 return call2 (handler, Qget_file_buffer, filename);
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
223
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
224 for (tail = Vbuffer_alist; CONSP (tail); tail = XCONS (tail)->cdr)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
225 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
226 buf = Fcdr (XCONS (tail)->car);
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
227 if (!BUFFERP (buf)) continue;
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
228 if (!STRINGP (XBUFFER (buf)->filename)) continue;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
229 tem = Fstring_equal (XBUFFER (buf)->filename, filename);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
230 if (!NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
231 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
232 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
233 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
234 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
235
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
236 /* Incremented for each buffer created, to assign the buffer number. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
237 int buffer_count;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
238
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
239 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
240 "Return the buffer named NAME, or create such a buffer and return it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
241 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
242 If NAME starts with a space, the new buffer does not keep undo information.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
243 If NAME is a buffer instead of a string, then it is the value returned.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
244 The value is never nil.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
245 (name)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
246 register Lisp_Object name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
247 {
9732
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
248 register Lisp_Object buf;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
249 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
250
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
251 buf = Fget_buffer (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
252 if (!NILP (buf))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
253 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
254
6697
28e36f59e856 (Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents: 6675
diff changeset
255 if (XSTRING (name)->size == 0)
28e36f59e856 (Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents: 6675
diff changeset
256 error ("Empty string for buffer name is not allowed");
28e36f59e856 (Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents: 6675
diff changeset
257
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2389
diff changeset
258 b = (struct buffer *) xmalloc (sizeof (struct buffer));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
259
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
260 b->size = sizeof (struct buffer) / sizeof (EMACS_INT);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
261
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
262 /* An ordinary buffer uses its own struct buffer_text. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
263 b->text = &b->own_text;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
264 b->base_buffer = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
265
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
266 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
267 BLOCK_INPUT;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
268 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
269 UNBLOCK_INPUT;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
270 if (! BUF_BEG_ADDR (b))
10668
acbd9fab366a (Fget_buffer_create): Call buffer_memory_full.
Richard M. Stallman <rms@gnu.org>
parents: 10611
diff changeset
271 buffer_memory_full ();
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
272
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
273 BUF_PT (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
274 BUF_GPT (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
275 BUF_BEGV (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
276 BUF_ZV (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
277 BUF_Z (b) = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
278 BUF_MODIFF (b) = 1;
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
279 BUF_SAVE_MODIFF (b) = 1;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
280 BUF_INTERVALS (b) = 0;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
281
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
282 b->newline_cache = 0;
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
283 b->width_run_cache = 0;
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
284 b->width_table = Qnil;
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
285
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
286 /* Put this on the chain of all buffers including killed ones. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
287 b->next = all_buffers;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
288 all_buffers = b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
289
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
290 /* An ordinary buffer normally doesn't need markers
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
291 to handle BEGV and ZV. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
292 b->pt_marker = Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
293 b->begv_marker = Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
294 b->zv_marker = Qnil;
10210
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
295
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
296 name = Fcopy_sequence (name);
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
297 INITIALIZE_INTERVAL (XSTRING (name), NULL_INTERVAL);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
298 b->name = name;
10210
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
299
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
300 if (XSTRING (name)->data[0] != ' ')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
301 b->undo_list = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
302 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
303 b->undo_list = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
304
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
305 reset_buffer (b);
8873
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
306 reset_buffer_local_variables (b);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
307
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
308 /* Put this in the alist of all live buffers. */
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
309 XSETBUFFER (buf, b);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
310 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
311
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
312 b->mark = Fmake_marker ();
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
313 BUF_MARKERS (b) = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
314 b->name = name;
9732
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
315 return buf;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
316 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
317
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
318 DEFUN ("make-indirect-buffer",
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
319 Fmake_indirect_buffer, Smake_indirect_buffer, 2, 2,
11838
92a61e91ec05 (Fmake_indirect_buffer): Fix interactive spec.
Karl Heuer <kwzh@gnu.org>
parents: 11823
diff changeset
320 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
11000
8482ccc01ec7 (Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents: 10967
diff changeset
321 "Create and return an indirect buffer for buffer BASE, named NAME.\n\
8482ccc01ec7 (Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents: 10967
diff changeset
322 BASE should be an existing buffer (or buffer name).\n\
8482ccc01ec7 (Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents: 10967
diff changeset
323 NAME should be a string which is not the name of an existing buffer.")
8482ccc01ec7 (Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents: 10967
diff changeset
324 (base_buffer, name)
8482ccc01ec7 (Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents: 10967
diff changeset
325 register Lisp_Object base_buffer, name;
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
326 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
327 register Lisp_Object buf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
328 register struct buffer *b;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
329
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
330 buf = Fget_buffer (name);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
331 if (!NILP (buf))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
332 error ("Buffer name `%s' is in use", XSTRING (name)->data);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
333
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
334 base_buffer = Fget_buffer (base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
335 if (NILP (base_buffer))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
336 error ("No such buffer: `%s'",
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
337 XSTRING (XBUFFER (base_buffer)->name)->data);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
338
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
339 if (XSTRING (name)->size == 0)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
340 error ("Empty string for buffer name is not allowed");
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
341
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
342 b = (struct buffer *) xmalloc (sizeof (struct buffer));
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
343
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
344 b->size = sizeof (struct buffer) / sizeof (EMACS_INT);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
345
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
346 if (XBUFFER (base_buffer)->base_buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
347 b->base_buffer = XBUFFER (base_buffer)->base_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
348 else
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
349 b->base_buffer = XBUFFER (base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
350
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
351 /* Use the base buffer's text object. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
352 b->text = b->base_buffer->text;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
353
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
354 BUF_BEGV (b) = BUF_BEGV (b->base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
355 BUF_ZV (b) = BUF_ZV (b->base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
356 BUF_PT (b) = BUF_PT (b->base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
357
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
358 b->newline_cache = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
359 b->width_run_cache = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
360 b->width_table = Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
361
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
362 /* Put this on the chain of all buffers including killed ones. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
363 b->next = all_buffers;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
364 all_buffers = b;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
365
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
366 name = Fcopy_sequence (name);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
367 INITIALIZE_INTERVAL (XSTRING (name), NULL_INTERVAL);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
368 b->name = name;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
369
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
370 reset_buffer (b);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
371 reset_buffer_local_variables (b);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
372
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
373 /* Put this in the alist of all live buffers. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
374 XSETBUFFER (buf, b);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
375 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil));
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
376
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
377 b->mark = Fmake_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
378 b->name = name;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
379
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
380 /* Make sure the base buffer has markers for its narrowing. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
381 if (NILP (b->base_buffer->pt_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
382 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
383 b->base_buffer->pt_marker = Fmake_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
384 Fset_marker (b->base_buffer->pt_marker,
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
385 make_number (BUF_PT (b->base_buffer)), base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
386 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
387 if (NILP (b->base_buffer->begv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
388 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
389 b->base_buffer->begv_marker = Fmake_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
390 Fset_marker (b->base_buffer->begv_marker,
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
391 make_number (BUF_BEGV (b->base_buffer)), base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
392 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
393 if (NILP (b->base_buffer->zv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
394 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
395 b->base_buffer->zv_marker = Fmake_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
396 Fset_marker (b->base_buffer->zv_marker,
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
397 make_number (BUF_ZV (b->base_buffer)), base_buffer);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
398 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
399
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
400 /* Give the indirect buffer markers for its narrowing. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
401 b->pt_marker = Fpoint_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
402 b->begv_marker = Fpoint_min_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
403 b->zv_marker = Fpoint_max_marker ();
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
404
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
405 return buf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
406 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
407
8873
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
408 /* Reinitialize everything about a buffer except its name and contents
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
409 and local variables. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
410
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
411 void
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
412 reset_buffer (b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
413 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
414 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
415 b->filename = Qnil;
10751
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
416 b->file_truename = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
417 b->directory = (current_buffer) ? current_buffer->directory : Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
418 b->modtime = 0;
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
419 XSETFASTINT (b->save_length, 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
420 b->last_window_start = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
421 b->backed_up = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
422 b->auto_save_modified = 0;
6477
95a4c1f81d0c (reset_buffer): Init auto_save_failure_time slot.
Richard M. Stallman <rms@gnu.org>
parents: 6348
diff changeset
423 b->auto_save_failure_time = -1;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
424 b->auto_save_file_name = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
425 b->read_only = Qnil;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
426 b->overlays_before = Qnil;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
427 b->overlays_after = Qnil;
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
428 XSETFASTINT (b->overlay_center, 1);
3242
f873e6b9af52 (reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents: 3226
diff changeset
429 b->mark_active = Qnil;
10561
53f34c870201 (init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 10505
diff changeset
430 b->point_before_scroll = Qnil;
11052
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
431 b->file_format = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
432 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
433
8873
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
434 /* Reset buffer B's local variables info.
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
435 Don't use this on a buffer that has already been in use;
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
436 it does not treat permanent locals consistently.
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
437 Instead, use Fkill_all_local_variables. */
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
438
2043
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
439 reset_buffer_local_variables (b)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
440 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
441 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
442 register int offset;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
443
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
444 /* Reset the major mode to Fundamental, together with all the
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
445 things that depend on the major mode.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
446 default-major-mode is handled at a higher level.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
447 We ignore it here. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
448 b->major_mode = Qfundamental_mode;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
449 b->keymap = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
450 b->abbrev_table = Vfundamental_mode_abbrev_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
451 b->mode_name = QSFundamental;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
452 b->minor_modes = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
453 b->downcase_table = Vascii_downcase_table;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
454 b->upcase_table = Vascii_upcase_table;
7053
5b1390770a36 (reset_buffer_local_variables): Use Vascii_eqv_table
Richard M. Stallman <rms@gnu.org>
parents: 7028
diff changeset
455 b->case_canon_table = Vascii_canon_table;
5b1390770a36 (reset_buffer_local_variables): Use Vascii_eqv_table
Richard M. Stallman <rms@gnu.org>
parents: 7028
diff changeset
456 b->case_eqv_table = Vascii_eqv_table;
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
457 b->buffer_file_type = Qnil;
10967
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
458 b->invisibility_spec = Qt;
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
459
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
460 #if 0
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
461 b->sort_table = XSTRING (Vascii_sort_table);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
462 b->folding_sort_table = XSTRING (Vascii_folding_sort_table);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
463 #endif /* 0 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
464
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
465 /* Reset all per-buffer variables to their defaults. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
466 b->local_var_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
467 b->local_var_flags = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
468
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
469 /* For each slot that has a default value,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
470 copy that into the slot. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
471
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
472 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
473 offset < sizeof (struct buffer);
8818
0996472bb39d (reset_buffer_local_variables, Fbuffer_local_variables)
Richard M. Stallman <rms@gnu.org>
parents: 8599
diff changeset
474 offset += sizeof (Lisp_Object)) /* sizeof EMACS_INT == sizeof Lisp_Object */
9362
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
475 {
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
476 int flag = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags));
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
477 if (flag > 0 || flag == -2)
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
478 *(Lisp_Object *)(offset + (char *)b) =
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
479 *(Lisp_Object *)(offset + (char *)&buffer_defaults);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
480 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
481 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
482
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
483 /* We split this away from generate-new-buffer, because rename-buffer
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
484 and set-visited-file-name ought to be able to use this to really
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
485 rename the buffer properly. */
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
486
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
487 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
488 1, 2, 0,
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
489 "Return a string that is the name of no existing buffer based on NAME.\n\
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
490 If there is no live buffer named NAME, then return NAME.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
491 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
492 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
493 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
494 \(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
495 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
496 (name, ignore)
bc4beddaf2c7 (Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents: 3204
diff changeset
497 register Lisp_Object name, ignore;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
498 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
499 register Lisp_Object gentemp, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
500 int count;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
501 char number[10];
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
502
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
503 CHECK_STRING (name, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
504
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
505 tem = Fget_buffer (name);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
506 if (NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
507 return name;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
508
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
509 count = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
510 while (1)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
511 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
512 sprintf (number, "<%d>", ++count);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
513 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
514 tem = Fstring_equal (gentemp, ignore);
3226
bc4beddaf2c7 (Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents: 3204
diff changeset
515 if (!NILP (tem))
bc4beddaf2c7 (Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents: 3204
diff changeset
516 return gentemp;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
517 tem = Fget_buffer (gentemp);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
518 if (NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
519 return gentemp;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
520 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
521 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
522
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
523
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
524 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
525 "Return the name of BUFFER, as a string.\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
526 With no argument or nil as argument, return the name of the current buffer.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
527 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
528 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
529 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
530 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
531 return current_buffer->name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
532 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
533 return XBUFFER (buffer)->name;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
534 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
535
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
536 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
537 "Return name of file BUFFER is visiting, or nil if none.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
538 No argument or nil as argument means use the current buffer.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
539 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
540 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
541 {
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
542 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
543 return current_buffer->filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
544 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
545 return XBUFFER (buffer)->filename;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
546 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
547
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
548 DEFUN ("buffer-base-buffer", Fbuffer_base_buffer, Sbuffer_base_buffer,
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
549 0, 1, 0,
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
550 "Return the base buffer of indirect buffer BUFFER.\n\
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
551 If BUFFER is not indirect, return nil.")
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
552 (buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
553 register Lisp_Object buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
554 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
555 struct buffer *base;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
556 Lisp_Object base_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
557
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
558 if (NILP (buffer))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
559 base = current_buffer->base_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
560 else
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
561 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
562 CHECK_BUFFER (buffer, 0);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
563 base = XBUFFER (buffer)->base_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
564 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
565
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
566 if (! base)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
567 return Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
568 XSETBUFFER (base_buffer, base);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
569 return base_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
570 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
571
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
572 DEFUN ("buffer-local-variables", Fbuffer_local_variables,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
573 Sbuffer_local_variables, 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
574 "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
575 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
576 For a symbol that is locally unbound, just the symbol appears in the value.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
577 Note that storing new VALUEs in these elements doesn't change the variables.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
578 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
579 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
580 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
581 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
582 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
583 register Lisp_Object result;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
584
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
585 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
586 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
587 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
588 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
589 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
590 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
591 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
592
4100
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
593 result = Qnil;
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
594
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
595 {
4100
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
596 register Lisp_Object tail;
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
597 for (tail = buf->local_var_alist; CONSP (tail); tail = XCONS (tail)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
598 {
4100
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
599 Lisp_Object val, elt;
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
600
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
601 elt = XCONS (tail)->car;
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
602
10505
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
603 /* Reference each variable in the alist in buf.
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
604 If inquiring about the current buffer, this gets the current values,
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
605 so store them into the alist so the alist is up to date.
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
606 If inquiring about some other buffer, this swaps out any values
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
607 for that buffer, making the alist up to date automatically. */
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
608 val = find_symbol_value (XCONS (elt)->car);
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
609 /* Use the current buffer value only if buf is the current buffer. */
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
610 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
611 val = XCONS (elt)->cdr;
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
612
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
613 /* 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
614 if (EQ (val, Qunbound))
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
615 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
616 /* 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
617 else
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
618 result = Fcons (Fcons (XCONS (elt)->car, val), result);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
619 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
620 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
621
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
622 /* Add on all the variables stored in special slots. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
623 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
624 register int offset, mask;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
625
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
626 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
627 offset < sizeof (struct buffer);
8818
0996472bb39d (reset_buffer_local_variables, Fbuffer_local_variables)
Richard M. Stallman <rms@gnu.org>
parents: 8599
diff changeset
628 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
629 {
9362
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
630 mask = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
631 if (mask == -1 || (buf->local_var_flags & mask))
9362
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
632 if (SYMBOLP (*(Lisp_Object *)(offset
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
633 + (char *)&buffer_local_symbols)))
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
634 result = Fcons (Fcons (*((Lisp_Object *)
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
635 (offset + (char *)&buffer_local_symbols)),
4100
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
636 *(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
637 result);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
638 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
639 }
4100
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
640
f8c6e5e9603f (Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents: 4077
diff changeset
641 return result;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
642 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
643
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
644
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
645 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
646 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
647 "Return t if BUFFER was modified since its file was last read or saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
648 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
649 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
650 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
651 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
652 register struct buffer *buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
653 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
654 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
655 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
656 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
657 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
658 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
659 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
660
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
661 return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
662 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
663
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
664 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
665 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
666 "Mark current buffer as modified or unmodified according to FLAG.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
667 A non-nil FLAG means mark the buffer modified.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
668 (flag)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
669 register Lisp_Object flag;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
670 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
671 register int already;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
672 register Lisp_Object fn;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
673
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
674 #ifdef CLASH_DETECTION
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
675 /* If buffer becoming modified, lock the file.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
676 If buffer becoming unmodified, unlock the file. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
677
11659
f9b6e65774e7 (Fset_buffer_modified_p): Use the truename for locking.
Richard M. Stallman <rms@gnu.org>
parents: 11473
diff changeset
678 fn = current_buffer->file_truename;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
679 if (!NILP (fn))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
680 {
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
681 already = SAVE_MODIFF < MODIFF;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
682 if (!already && !NILP (flag))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
683 lock_file (fn);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
684 else if (already && NILP (flag))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
685 unlock_file (fn);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
686 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
687 #endif /* CLASH_DETECTION */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
688
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
689 SAVE_MODIFF = NILP (flag) ? MODIFF : 0;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
690 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
691 return flag;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
692 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
693
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
694 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
695 0, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
696 "Return BUFFER's tick counter, incremented for each change in text.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
697 Each buffer has a tick counter which is incremented each time the text in\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
698 that buffer is changed. It wraps around occasionally.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
699 No argument or nil as argument means use current buffer as BUFFER.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
700 (buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
701 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
702 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
703 register struct buffer *buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
704 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
705 buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
706 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
707 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
708 CHECK_BUFFER (buffer, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
709 buf = XBUFFER (buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
710 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
711
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
712 return make_number (BUF_MODIFF (buf));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
713 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
714
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
715 DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 1, 2,
5074
bbc2accd226a Undo last change. SPC feeping at you is too annoying.
Roland McGrath <roland@gnu.org>
parents: 5073
diff changeset
716 "sRename buffer (to new name): \nP",
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
717 "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
718 If second arg UNIQUE is nil or omitted, it is an error if a\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
719 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
720 If UNIQUE is non-nil, come up with a new name using\n\
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
721 `generate-new-buffer-name'.\n\
1876
0ddafa88e654 (Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
722 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
723 We return the name we actually gave the buffer.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
724 This does not change the name of the visited file (if any).")
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
725 (newname, unique)
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
726 register Lisp_Object newname, unique;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
727 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
728 register Lisp_Object tem, buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
729
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
730 CHECK_STRING (newname, 0);
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
731
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
732 if (XSTRING (newname)->size == 0)
7455
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
733 error ("Empty string is invalid as a buffer name");
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
734
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
735 tem = Fget_buffer (newname);
5075
8deb7113bbdf (Frename_buffer): When the current buffer is already named NAME, don't
Roland McGrath <roland@gnu.org>
parents: 5074
diff changeset
736 /* Don't short-circuit if UNIQUE is t. That is a useful way to rename
8deb7113bbdf (Frename_buffer): When the current buffer is already named NAME, don't
Roland McGrath <roland@gnu.org>
parents: 5074
diff changeset
737 the buffer automatically so you can create another with the original name.
8deb7113bbdf (Frename_buffer): When the current buffer is already named NAME, don't
Roland McGrath <roland@gnu.org>
parents: 5074
diff changeset
738 It makes UNIQUE equivalent to
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
739 (rename-buffer (generate-new-buffer-name NEWNAME)). */
5075
8deb7113bbdf (Frename_buffer): When the current buffer is already named NAME, don't
Roland McGrath <roland@gnu.org>
parents: 5074
diff changeset
740 if (NILP (unique) && XBUFFER (tem) == current_buffer)
9939
686916b836b4 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9933
diff changeset
741 return current_buffer->name;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
742 if (!NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
743 {
1876
0ddafa88e654 (Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents: 1821
diff changeset
744 if (!NILP (unique))
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
745 newname = Fgenerate_new_buffer_name (newname, current_buffer->name);
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
746 else
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
747 error ("Buffer name `%s' is in use", XSTRING (newname)->data);
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
748 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
749
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
750 current_buffer->name = newname;
1707
86c951f6a444 * buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents: 1586
diff changeset
751
86c951f6a444 * buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents: 1586
diff changeset
752 /* 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
753 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
754 update_mode_lines++;
86c951f6a444 * buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents: 1586
diff changeset
755
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
756 XSETBUFFER (buf, current_buffer);
9933
d3f22955b872 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9922
diff changeset
757 Fsetcar (Frassq (buf, Vbuffer_alist), newname);
8599
cf3233d70e94 (Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents: 8550
diff changeset
758 if (NILP (current_buffer->filename)
cf3233d70e94 (Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents: 8550
diff changeset
759 && !NILP (current_buffer->auto_save_file_name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
760 call0 (intern ("rename-auto-save-file"));
9939
686916b836b4 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9933
diff changeset
761 /* Refetch since that last call may have done GC. */
686916b836b4 (Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents: 9933
diff changeset
762 return current_buffer->name;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
763 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
764
1281
1f6cfa3ea4cb * buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents: 1253
diff changeset
765 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 2, 0,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
766 "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
767 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
768 unless optional second argument VISIBLE-OK is non-nil.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
769 If no other buffer exists, the buffer `*scratch*' is returned.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
770 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
771 (buffer, visible_ok)
1f6cfa3ea4cb * buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents: 1253
diff changeset
772 register Lisp_Object buffer, visible_ok;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
773 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
774 register Lisp_Object tail, buf, notsogood, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
775 notsogood = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
776
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
777 for (tail = Vbuffer_alist; !NILP (tail); tail = Fcdr (tail))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
778 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
779 buf = Fcdr (Fcar (tail));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
780 if (EQ (buf, buffer))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
781 continue;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
782 if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ')
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
783 continue;
10210
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
784 #ifdef MULTI_FRAME
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
785 /* If the selected frame has a buffer_predicate,
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
786 disregard buffers that don't fit the predicate. */
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
787 tem = frame_buffer_predicate ();
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
788 if (!NILP (tem))
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
789 {
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
790 tem = call1 (tem, buf);
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
791 if (NILP (tem))
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
792 continue;
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
793 }
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
794 #endif
43e95429ffa0 (Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents: 10146
diff changeset
795
1281
1f6cfa3ea4cb * buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents: 1253
diff changeset
796 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
797 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
798 else
1f6cfa3ea4cb * buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents: 1253
diff changeset
799 tem = Qnil;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
800 if (NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
801 return buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
802 if (NILP (notsogood))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
803 notsogood = buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
804 }
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
805 if (!NILP (notsogood))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
806 return notsogood;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
807 return Fget_buffer_create (build_string ("*scratch*"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
808 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
809
5247
0cf95629f6c4 (Fbuffer_disable_undo): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 5075
diff changeset
810 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo, 0, 1,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
811 0,
5247
0cf95629f6c4 (Fbuffer_disable_undo): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 5075
diff changeset
812 "Make BUFFER stop keeping undo information.\n\
0cf95629f6c4 (Fbuffer_disable_undo): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents: 5075
diff changeset
813 No argument or nil as argument means do this for the current buffer.")
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
814 (buffer)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
815 register Lisp_Object buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
816 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
817 Lisp_Object real_buffer;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
818
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
819 if (NILP (buffer))
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
820 XSETBUFFER (real_buffer, current_buffer);
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
821 else
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
822 {
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
823 real_buffer = Fget_buffer (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
824 if (NILP (real_buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
825 nsberror (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
826 }
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
827
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
828 XBUFFER (real_buffer)->undo_list = Qt;
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
829
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
830 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
831 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
832
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
833 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
834 0, 1, "",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
835 "Start keeping undo information for buffer BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
836 No argument or nil as argument means do this for the current buffer.")
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
837 (buffer)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
838 register Lisp_Object buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
839 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
840 Lisp_Object real_buffer;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
841
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
842 if (NILP (buffer))
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
843 XSETBUFFER (real_buffer, current_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
844 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
845 {
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
846 real_buffer = Fget_buffer (buffer);
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
847 if (NILP (real_buffer))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
848 nsberror (buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
849 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
850
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
851 if (EQ (XBUFFER (real_buffer)->undo_list, Qt))
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
852 XBUFFER (real_buffer)->undo_list = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
853
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
854 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
855 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
856
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
857 /*
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
858 DEFVAR_LISP ("kill-buffer-hook", no_cell, "\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
859 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
860 The buffer being killed will be current while the hook is running.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
861 See `kill-buffer'."
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
862 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
863 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
864 "Kill the buffer BUFFER.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
865 The argument may be a buffer or may be the name of a buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
866 An argument of nil means kill the current buffer.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
867 Value is t if the buffer is actually killed, nil if user says no.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
868 The value of `kill-buffer-hook' (which may be local to that buffer),\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
869 if not void, is a list of functions to be called, with no arguments,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
870 before the buffer is actually killed. The buffer to be killed is current\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
871 when the hook functions are called.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
872 Any processes that have this buffer as the `process-buffer' are killed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
873 with `delete-process'.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
874 (bufname)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
875 Lisp_Object bufname;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
876 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
877 Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
878 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
879 register Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
880 register struct Lisp_Marker *m;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
881 struct gcpro gcpro1, gcpro2;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
882
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
883 if (NILP (bufname))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
884 buf = Fcurrent_buffer ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
885 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
886 buf = Fget_buffer (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
887 if (NILP (buf))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
888 nsberror (bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
889
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
890 b = XBUFFER (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
891
12076
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
892 /* Avoid trouble for buffer already dead. */
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
893 if (NILP (b->name))
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
894 return Qnil;
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
895
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
896 /* Query if the buffer is still modified. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
897 if (INTERACTIVE && !NILP (b->filename)
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
898 && BUF_MODIFF (b) > BUF_SAVE_MODIFF (b))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
899 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
900 GCPRO2 (buf, bufname);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
901 tem = do_yes_or_no_p (format1 ("Buffer %s modified; kill anyway? ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
902 XSTRING (b->name)->data));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
903 UNGCPRO;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
904 if (NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
905 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
906 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
907
6051
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
908 /* Run hooks with the buffer to be killed the current buffer. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
909 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
910 register Lisp_Object val;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
911 int count = specpdl_ptr - specpdl;
6051
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
912 Lisp_Object list;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
913
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
914 record_unwind_protect (save_excursion_restore, save_excursion_save ());
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
915 set_buffer_internal (b);
6051
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
916
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
917 /* First run the query functions; if any query is answered no,
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
918 don't kill the buffer. */
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
919 for (list = Vkill_buffer_query_functions; !NILP (list); list = Fcdr (list))
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
920 {
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
921 tem = call0 (Fcar (list));
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
922 if (NILP (tem))
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
923 return unbind_to (count, Qnil);
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
924 }
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
925
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
926 /* Then run the hooks. */
6205
88e41d7d1e27 (Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents: 6169
diff changeset
927 if (!NILP (Vrun_hooks))
88e41d7d1e27 (Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents: 6169
diff changeset
928 call1 (Vrun_hooks, Qkill_buffer_hook);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
929 unbind_to (count, Qnil);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
930 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
931
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
932 /* We have no more questions to ask. Verify that it is valid
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
933 to kill the buffer. This must be done after the questions
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
934 since anything can happen within do_yes_or_no_p. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
935
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
936 /* Don't kill the minibuffer now current. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
937 if (EQ (buf, XWINDOW (minibuf_window)->buffer))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
938 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
939
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
940 if (NILP (b->name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
941 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
942
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
943 /* When we kill a base buffer, kill all its indirect buffers.
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
944 We do it at this stage so nothing terrible happens if they
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
945 ask questions or their hooks get errors. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
946 if (! b->base_buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
947 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
948 struct buffer *other;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
949
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
950 GCPRO1 (buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
951
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
952 for (other = all_buffers; other; other = other->next)
12076
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
953 /* all_buffers contains dead buffers too;
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
954 don't re-kill them. */
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
955 if (other->base_buffer == b && !NILP (other->name))
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
956 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
957 Lisp_Object buf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
958 XSETBUFFER (buf, other);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
959 Fkill_buffer (buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
960 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
961
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
962 UNGCPRO;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
963 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
964
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
965 /* Make this buffer not be current.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
966 In the process, notice if this is the sole visible buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
967 and give up if so. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
968 if (b == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
969 {
1348
f6ab9d1e1709 (Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1308
diff changeset
970 tem = Fother_buffer (buf, Qnil);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
971 Fset_buffer (tem);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
972 if (b == current_buffer)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
973 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
974 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
975
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
976 /* Now there is no question: we can kill the buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
977
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
978 #ifdef CLASH_DETECTION
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
979 /* Unlock this buffer's file, if it is locked. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
980 unlock_buffer (b);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
981 #endif /* CLASH_DETECTION */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
982
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
983 kill_buffer_processes (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
984
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
985 tem = Vinhibit_quit;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
986 Vinhibit_quit = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
987 Vbuffer_alist = Fdelq (Frassq (buf, Vbuffer_alist), Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
988 Freplace_buffer_in_windows (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
989 Vinhibit_quit = tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
990
7994
c5b7f74b5023 (Fkill_buffer): Don't delete auto save file
Richard M. Stallman <rms@gnu.org>
parents: 7985
diff changeset
991 /* Delete any auto-save file, if we saved it in this session. */
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
992 if (STRINGP (b->auto_save_file_name)
7994
c5b7f74b5023 (Fkill_buffer): Don't delete auto save file
Richard M. Stallman <rms@gnu.org>
parents: 7985
diff changeset
993 && b->auto_save_modified != 0)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
994 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
995 Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
996 tem = Fsymbol_value (intern ("delete-auto-save-files"));
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
997 if (! NILP (tem))
10082
8d3a71736423 (Fkill_buffer): Use internal_delete_file.
Richard M. Stallman <rms@gnu.org>
parents: 9950
diff changeset
998 internal_delete_file (b->auto_save_file_name);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
999 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1000
12076
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1001 if (b->base_buffer)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1002 {
12076
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1003 /* Unchain all markers that belong to this indirect buffer.
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1004 Don't unchain the markers that belong to the base buffer
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1005 or its other indirect buffers. */
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1006 for (tem = BUF_MARKERS (b); !NILP (tem); )
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1007 {
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1008 Lisp_Object next;
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1009 m = XMARKER (tem);
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1010 next = m->chain;
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1011 if (m->buffer == b)
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1012 unchain_marker (tem);
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1013 tem = next;
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1014 }
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1015 }
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1016 else
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1017 {
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1018 /* Unchain all markers of this buffer and its indirect buffers.
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1019 and leave them pointing nowhere. */
12076
ee38e93ccf7e (Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents: 11889
diff changeset
1020 for (tem = BUF_MARKERS (b); !NILP (tem); )
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1021 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1022 m = XMARKER (tem);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1023 m->buffer = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1024 tem = m->chain;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1025 m->chain = Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1026 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1027 BUF_MARKERS (b) = Qnil;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1028
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1029 #ifdef USE_TEXT_PROPERTIES
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1030 BUF_INTERVALS (b) = NULL_INTERVAL;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1031 #endif
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1032
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1033 /* Perhaps we should explicitly free the interval tree here... */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1034 }
1291
7c32612174c3 * buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents: 1281
diff changeset
1035
11214
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1036 /* Reset the local variables, so that this buffer's local values
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1037 won't be protected from GC. They would be protected
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1038 if they happened to remain encached in their symbols.
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1039 This gets rid of them for certain. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1040 swap_out_buffer_local_variables (b);
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1041 reset_buffer_local_variables (b);
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1042
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1043 b->name = Qnil;
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1044
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2389
diff changeset
1045 BLOCK_INPUT;
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1046 if (! b->base_buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1047 BUFFER_FREE (BUF_BEG_ADDR (b));
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1048
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1049 if (b->newline_cache)
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1050 {
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1051 free_region_cache (b->newline_cache);
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1052 b->newline_cache = 0;
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1053 }
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1054 if (b->width_run_cache)
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1055 {
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1056 free_region_cache (b->width_run_cache);
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1057 b->width_run_cache = 0;
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1058 }
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
1059 b->width_table = Qnil;
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2389
diff changeset
1060 UNBLOCK_INPUT;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1061 b->undo_list = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1062
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1063 return Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1064 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1065
550
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1066 /* Move the assoc for buffer BUF to the front of buffer-alist. Since
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1067 we do this each time BUF is selected visibly, the more recently
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1068 selected buffers are always closer to the front of the list. This
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1069 means that other_buffer is more likely to choose a relevant buffer. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1070
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1071 record_buffer (buf)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1072 Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1073 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1074 register Lisp_Object link, prev;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1075
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1076 prev = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1077 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1078 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1079 if (EQ (XCONS (XCONS (link)->car)->cdr, buf))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1080 break;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1081 prev = link;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1082 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1083
550
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1084 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist);
3072b38789a7 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
1085 we cannot use Fdelq itself here because it allows quitting. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1086
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1087 if (NILP (prev))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1088 Vbuffer_alist = XCONS (Vbuffer_alist)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1089 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1090 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1091
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1092 XCONS(link)->cdr = Vbuffer_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1093 Vbuffer_alist = link;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1094 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1095
9732
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1096 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0,
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1097 "Set an appropriate major mode for BUFFER, according to `default-major-mode'.\n\
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1098 Use this function before selecting the buffer, since it may need to inspect\n\
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1099 the current buffer's major mode.")
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1100 (buf)
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1101 Lisp_Object buf;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1102 {
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1103 int count;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1104 Lisp_Object function;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1105
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1106 function = buffer_defaults.major_mode;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1107 if (NILP (function) && NILP (Fget (current_buffer->major_mode, Qmode_class)))
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1108 function = current_buffer->major_mode;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1109
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1110 if (NILP (function) || EQ (function, Qfundamental_mode))
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1111 return Qnil;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1112
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1113 count = specpdl_ptr - specpdl;
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1114
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1115 /* To select a nonfundamental mode,
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1116 select the buffer temporarily and then call the mode function. */
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1117
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1118 record_unwind_protect (save_excursion_restore, save_excursion_save ());
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1119
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1120 Fset_buffer (buf);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1121 call0 (function);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1122
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1123 return unbind_to (count, Qnil);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1124 }
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1125
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1126 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1127 "Select buffer BUFFER in the current window.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1128 BUFFER may be a buffer or a buffer name.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1129 Optional second arg NORECORD non-nil means\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1130 do not put this buffer at the front of the list of recently selected ones.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1131 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1132 WARNING: This is NOT the way to work on another buffer temporarily\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1133 within a Lisp program! Use `set-buffer' instead. That avoids messing with\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1134 the window-buffer correspondences.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1135 (bufname, norecord)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1136 Lisp_Object bufname, norecord;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1137 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1138 register Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1139 Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1140
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1141 if (EQ (minibuf_window, selected_window))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1142 error ("Cannot switch buffers in minibuffer window");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1143 tem = Fwindow_dedicated_p (selected_window);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1144 if (!NILP (tem))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1145 error ("Cannot switch buffers in a dedicated window");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1146
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1147 if (NILP (bufname))
1348
f6ab9d1e1709 (Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1308
diff changeset
1148 buf = Fother_buffer (Fcurrent_buffer (), Qnil);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1149 else
9732
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1150 {
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1151 buf = Fget_buffer (bufname);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1152 if (NILP (buf))
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1153 {
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1154 buf = Fget_buffer_create (bufname);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1155 Fset_buffer_major_mode (buf);
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1156 }
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
1157 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1158 Fset_buffer (buf);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1159 if (NILP (norecord))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1160 record_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1161
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1162 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
1163 ? 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
1164 : selected_window,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1165 buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1166
3295
4d405f172c79 (reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents: 3242
diff changeset
1167 return buf;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1168 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1169
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1170 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 2, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1171 "Select buffer BUFFER in some window, preferably a different one.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1172 If BUFFER is nil, then some other buffer is chosen.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1173 If `pop-up-windows' is non-nil, windows can be split to do this.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1174 If optional second arg OTHER-WINDOW is non-nil, insist on finding another\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1175 window even if BUFFER is already visible in the selected window.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1176 (bufname, other)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1177 Lisp_Object bufname, other;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1178 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1179 register Lisp_Object buf;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1180 if (NILP (bufname))
1348
f6ab9d1e1709 (Fkill_buffer): Pass 2nd arg to Fother_buffer.
Richard M. Stallman <rms@gnu.org>
parents: 1308
diff changeset
1181 buf = Fother_buffer (Fcurrent_buffer (), Qnil);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1182 else
10916
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1183 {
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1184 buf = Fget_buffer (bufname);
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1185 if (NILP (buf))
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1186 {
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1187 buf = Fget_buffer_create (bufname);
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1188 Fset_buffer_major_mode (buf);
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1189 }
3aea65d9eb68 (Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents: 10751
diff changeset
1190 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1191 Fset_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1192 record_buffer (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1193 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
1194 return buf;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1195 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1196
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1197 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1198 "Return the current buffer as a Lisp object.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1199 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1200 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1201 register Lisp_Object buf;
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
1202 XSETBUFFER (buf, current_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1203 return buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1204 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1205
11889
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1206 /* Set the current buffer to B. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1207
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1208 void
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1209 set_buffer_internal (b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1210 register struct buffer *b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1211 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1212 register struct buffer *old_buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1213 register Lisp_Object tail, valcontents;
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1214 Lisp_Object tem;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1215
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1216 if (current_buffer == b)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1217 return;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1218
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1219 windows_or_buffers_changed = 1;
11889
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1220 set_buffer_internal_1 (b);
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1221 }
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1222
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1223 /* Set the current buffer to B, and do not set windows_or_buffers_changed.
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1224 This is used by redisplay. */
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1225
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1226 void
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1227 set_buffer_internal_1 (b)
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1228 register struct buffer *b;
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1229 {
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1230 register struct buffer *old_buf;
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1231 register Lisp_Object tail, valcontents;
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1232 Lisp_Object tem;
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1233
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1234 if (current_buffer == b)
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1235 return;
1067ddd12dfc (set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents: 11838
diff changeset
1236
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1237 old_buf = current_buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1238 current_buffer = b;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1239 last_known_column_point = -1; /* invalidate indentation cache */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1240
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1241 if (old_buf)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1242 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1243 /* Put the undo list back in the base buffer, so that it appears
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1244 that an indirect buffer shares the undo list of its base. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1245 if (old_buf->base_buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1246 old_buf->base_buffer->undo_list = old_buf->undo_list;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1247
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1248 /* If the old current buffer has markers to record PT, BEGV and ZV
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1249 when it is not current, update them now. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1250 if (! NILP (old_buf->pt_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1251 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1252 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1253 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1254 Fset_marker (old_buf->pt_marker, BUF_PT (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1255 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1256 if (! NILP (old_buf->begv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1257 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1258 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1259 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1260 Fset_marker (old_buf->begv_marker, BUF_BEGV (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1261 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1262 if (! NILP (old_buf->zv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1263 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1264 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1265 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1266 Fset_marker (old_buf->zv_marker, BUF_ZV (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1267 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1268 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1269
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1270 /* Get the undo list from the base buffer, so that it appears
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1271 that an indirect buffer shares the undo list of its base. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1272 if (b->base_buffer)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1273 b->undo_list = b->base_buffer->undo_list;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1274
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1275 /* If the new current buffer has markers to record PT, BEGV and ZV
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1276 when it is not current, fetch them now. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1277 if (! NILP (b->pt_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1278 BUF_PT (b) = marker_position (b->pt_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1279 if (! NILP (b->begv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1280 BUF_BEGV (b) = marker_position (b->begv_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1281 if (! NILP (b->zv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1282 BUF_ZV (b) = marker_position (b->zv_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1283
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1284 /* Look down buffer's list of local Lisp variables
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1285 to find and update any that forward into C variables. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1286
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1287 for (tail = b->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1288 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1289 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value;
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1290 if ((BUFFER_LOCAL_VALUEP (valcontents)
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1291 || SOME_BUFFER_LOCAL_VALUEP (valcontents))
9892
beb59716f299 (set_buffer_internal): Use XBUFFER_LOCAL_VALUE, not XCONS.
Karl Heuer <kwzh@gnu.org>
parents: 9810
diff changeset
1292 && (tem = XBUFFER_LOCAL_VALUE (valcontents)->car,
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1293 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem))))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1294 /* Just reference the variable
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1295 to cause it to become set for this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1296 Fsymbol_value (XCONS (XCONS (tail)->car)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1297 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1298
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1299 /* Do the same with any others that were local to the previous buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1300
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1301 if (old_buf)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1302 for (tail = old_buf->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1303 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1304 valcontents = XSYMBOL (XCONS (XCONS (tail)->car)->car)->value;
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1305 if ((BUFFER_LOCAL_VALUEP (valcontents)
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1306 || SOME_BUFFER_LOCAL_VALUEP (valcontents))
9892
beb59716f299 (set_buffer_internal): Use XBUFFER_LOCAL_VALUE, not XCONS.
Karl Heuer <kwzh@gnu.org>
parents: 9810
diff changeset
1307 && (tem = XBUFFER_LOCAL_VALUE (valcontents)->car,
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1308 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem))))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1309 /* Just reference the variable
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1310 to cause it to become set for this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1311 Fsymbol_value (XCONS (XCONS (tail)->car)->car);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1312 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1313 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1314
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1315 /* Switch to buffer B temporarily for redisplay purposes.
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1316 This avoids certain things that don't need to be done within redisplay. */
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1317
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1318 void
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1319 set_buffer_temp (b)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1320 struct buffer *b;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1321 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1322 register struct buffer *old_buf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1323
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1324 if (current_buffer == b)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1325 return;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1326
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1327 old_buf = current_buffer;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1328 current_buffer = b;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1329
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1330 if (old_buf)
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1331 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1332 /* If the old current buffer has markers to record PT, BEGV and ZV
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1333 when it is not current, update them now. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1334 if (! NILP (old_buf->pt_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1335 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1336 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1337 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1338 Fset_marker (old_buf->pt_marker, BUF_PT (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1339 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1340 if (! NILP (old_buf->begv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1341 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1342 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1343 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1344 Fset_marker (old_buf->begv_marker, BUF_BEGV (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1345 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1346 if (! NILP (old_buf->zv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1347 {
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1348 Lisp_Object obuf;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1349 XSETBUFFER (obuf, old_buf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1350 Fset_marker (old_buf->zv_marker, BUF_ZV (old_buf), obuf);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1351 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1352 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1353
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1354 /* If the new current buffer has markers to record PT, BEGV and ZV
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1355 when it is not current, fetch them now. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1356 if (! NILP (b->pt_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1357 BUF_PT (b) = marker_position (b->pt_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1358 if (! NILP (b->begv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1359 BUF_BEGV (b) = marker_position (b->begv_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1360 if (! NILP (b->zv_marker))
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1361 BUF_ZV (b) = marker_position (b->zv_marker);
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1362 }
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
1363
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1364 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1365 "Make the buffer BUFFER current for editing operations.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1366 BUFFER may be a buffer or the name of an existing buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1367 See also `save-excursion' when you want to make a buffer current temporarily.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1368 This function does not display the buffer, so its effect ends\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1369 when the current command terminates.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1370 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1371 (bufname)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1372 register Lisp_Object bufname;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1373 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1374 register Lisp_Object buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1375 buffer = Fget_buffer (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1376 if (NILP (buffer))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1377 nsberror (bufname);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1378 if (NILP (XBUFFER (buffer)->name))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1379 error ("Selecting deleted buffer");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1380 set_buffer_internal (XBUFFER (buffer));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1381 return buffer;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1382 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1383
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1384 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1385 Sbarf_if_buffer_read_only, 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1386 "Signal a `buffer-read-only' error if the current buffer is read-only.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1387 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1388 {
3481
56424e6245c2 (syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 3463
diff changeset
1389 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
1390 && NILP (Vinhibit_read_only))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1391 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil)));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1392 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1393 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1394
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1395 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1396 "Put BUFFER at the end of the list of all buffers.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1397 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
1398 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
1399 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
1400 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
1401 selected window if it is displayed there.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1402 (buf)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1403 register Lisp_Object buf;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1404 {
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1405 /* Figure out what buffer we're going to bury. */
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1406 if (NILP (buf))
1586
f84e400808d0 * buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1563
diff changeset
1407 {
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
1408 XSETBUFFER (buf, current_buffer);
1586
f84e400808d0 * buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1563
diff changeset
1409
f84e400808d0 * buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1563
diff changeset
1410 /* 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
1411 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
1412 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1413 else
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1414 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1415 Lisp_Object buf1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1416
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1417 buf1 = Fget_buffer (buf);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1418 if (NILP (buf1))
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1419 nsberror (buf);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1420 buf = buf1;
1252
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1421 }
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1422
1586
f84e400808d0 * buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1563
diff changeset
1423 /* 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
1424 {
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1425 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
1426
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1427 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
1428 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
1429 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
1430 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
1431 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
1432 }
86a17674c2a1 * buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents: 1195
diff changeset
1433
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1434 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1435 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1436
1953
714df59790af (Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents: 1952
diff changeset
1437 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*",
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1438 "Delete the entire contents of the current buffer.\n\
4942
0ea29f510ba0 (Ferase_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 4852
diff changeset
1439 Any narrowing restriction in effect (see `narrow-to-region') is removed,\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1440 so the buffer is truly empty after this.")
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1441 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1442 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1443 Fwiden ();
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1444 del_range (BEG, Z);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1445 current_buffer->last_window_start = 1;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1446 /* Prevent warnings, or suspension of auto saving, that would happen
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1447 if future size is less than past size. Use of erase-buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1448 implies that the future text is not really related to the past text. */
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
1449 XSETFASTINT (current_buffer->save_length, 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1450 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1451 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1452
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1453 validate_region (b, e)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1454 register Lisp_Object *b, *e;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1455 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1456 CHECK_NUMBER_COERCE_MARKER (*b, 0);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1457 CHECK_NUMBER_COERCE_MARKER (*e, 1);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1458
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1459 if (XINT (*b) > XINT (*e))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1460 {
9335
8cf58b38d244 (validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents: 9296
diff changeset
1461 Lisp_Object tem;
8cf58b38d244 (validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents: 9296
diff changeset
1462 tem = *b; *b = *e; *e = tem;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1463 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1464
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1465 if (!(BEGV <= XINT (*b) && XINT (*b) <= XINT (*e)
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1466 && XINT (*e) <= ZV))
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1467 args_out_of_range (*b, *e);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1468 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1469
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1470 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1471 0, 0, 0,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1472 "Switch to Fundamental mode by killing current buffer's local variables.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1473 Most local variable bindings are eliminated so that the default values\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1474 become effective once more. Also, the syntax table is set from\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1475 `standard-syntax-table', the local keymap is set to nil,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1476 and the abbrev table from `fundamental-mode-abbrev-table'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1477 This function also forces redisplay of the mode line.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1478 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1479 Every function to select a new major mode starts by\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1480 calling this function.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1481 As a special exception, local variables whose names have\n\
7062
6356b8d3144e (Fkill_all_local_variables): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7053
diff changeset
1482 a non-nil `permanent-local' property are not eliminated by this function.\n\
6356b8d3144e (Fkill_all_local_variables): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7053
diff changeset
1483 \n\
6356b8d3144e (Fkill_all_local_variables): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7053
diff changeset
1484 The first thing this function does is run\n\
6356b8d3144e (Fkill_all_local_variables): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7053
diff changeset
1485 the normal hook `change-major-mode-hook'.")
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1486 ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1487 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1488 register Lisp_Object alist, sym, tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1489 Lisp_Object oalist;
5873
fa8b769ef564 (Fkill_all_local_variables): Run change-major-mode-hook.
Karl Heuer <kwzh@gnu.org>
parents: 5857
diff changeset
1490
6205
88e41d7d1e27 (Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents: 6169
diff changeset
1491 if (!NILP (Vrun_hooks))
88e41d7d1e27 (Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents: 6169
diff changeset
1492 call1 (Vrun_hooks, intern ("change-major-mode-hook"));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1493 oalist = current_buffer->local_var_alist;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1494
11214
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1495 /* Make sure none of the bindings in oalist
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1496 remain swapped in, in their symbols. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1497
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1498 swap_out_buffer_local_variables (current_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1499
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1500 /* Actually eliminate all local bindings of this buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1501
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1502 reset_buffer_local_variables (current_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1503
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1504 /* Redisplay mode lines; we are changing major mode. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1505
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1506 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1507
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1508 /* Any which are supposed to be permanent,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1509 make local again, with the same values they had. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1510
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1511 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1512 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1513 sym = XCONS (XCONS (alist)->car)->car;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1514 tem = Fget (sym, Qpermanent_local);
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 392
diff changeset
1515 if (! NILP (tem))
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1516 {
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1517 Fmake_local_variable (sym);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1518 Fset (sym, XCONS (XCONS (alist)->car)->cdr);
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
1519 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1520 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1521
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1522 /* Force mode-line redisplay. Useful here because all major mode
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1523 commands call this function. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1524 update_mode_lines++;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1525
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1526 return Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1527 }
11214
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1528
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1529 /* Make sure no local variables remain set up with buffer B
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1530 for their current values. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1531
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1532 static void
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1533 swap_out_buffer_local_variables (b)
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1534 struct buffer *b;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1535 {
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1536 Lisp_Object oalist, alist, sym, tem, buffer;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1537
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1538 XSETBUFFER (buffer, b);
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1539 oalist = b->local_var_alist;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1540
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1541 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr)
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1542 {
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1543 sym = XCONS (XCONS (alist)->car)->car;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1544
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1545 /* Need not do anything if some other buffer's binding is now encached. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1546 tem = XCONS (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->cdr)->car;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1547 if (XBUFFER (tem) == current_buffer)
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1548 {
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1549 /* Symbol is set up for this buffer's old local value.
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1550 Set it up for the current buffer with the default value. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1551
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1552 tem = XCONS (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->cdr)->cdr;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1553 /* Store the symbol's current value into the alist entry
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1554 it is currently set up for. This is so that, if the
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1555 local is marked permanent, and we make it local again
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1556 later in Fkill_all_local_variables, we don't lose the value. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1557 XCONS (XCONS (tem)->car)->cdr
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1558 = do_symval_forwarding (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->car);
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1559 /* Switch to the symbol's default-value alist entry. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1560 XCONS (tem)->car = tem;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1561 /* Mark it as current for buffer B. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1562 XCONS (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->cdr)->car
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1563 = buffer;
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1564 /* Store the current value into any forwarding in the symbol. */
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1565 store_symval_forwarding (sym, XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->car,
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1566 XCONS (tem)->cdr);
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1567 }
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1568 }
b880572ce431 (Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents: 11112
diff changeset
1569 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1570
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1571 /* 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
1572 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
1573 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
1574 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
1575 or ZV if there are no more overlays.
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1576 Store in *PREV_PTR the previous position before POS where an overlay ends,
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1577 or BEGV if there are no previous overlays.
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1578 NEXT_PTR and/or PREV_PTR may be 0, meaning don't store that info.
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1579
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1580 *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
1581 when this function is called.
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1582
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1583 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
1584 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
1585 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
1586 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
1587
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1588 int
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1589 overlays_at (pos, extend, vec_ptr, len_ptr, next_ptr, prev_ptr)
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1590 int pos;
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1591 int extend;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1592 Lisp_Object **vec_ptr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1593 int *len_ptr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1594 int *next_ptr;
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1595 int *prev_ptr;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
1596 {
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1597 Lisp_Object tail, overlay, start, end, result;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1598 int idx = 0;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1599 int len = *len_ptr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1600 Lisp_Object *vec = *vec_ptr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1601 int next = ZV;
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1602 int prev = BEGV;
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1603 int inhibit_storing = 0;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1604
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1605 for (tail = current_buffer->overlays_before;
9950
605bd2a8f816 (overlays_at): Use the new type-test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9939
diff changeset
1606 GC_CONSP (tail);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1607 tail = XCONS (tail)->cdr)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1608 {
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1609 int startpos, endpos;
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
1610
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1611 overlay = XCONS (tail)->car;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1612
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1613 start = OVERLAY_START (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1614 end = OVERLAY_END (overlay);
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1615 endpos = OVERLAY_POSITION (end);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1616 if (endpos < pos)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1617 {
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1618 if (prev < endpos)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1619 prev = endpos;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1620 break;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1621 }
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1622 if (endpos == pos)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1623 continue;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1624 startpos = OVERLAY_POSITION (start);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1625 if (startpos <= pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1626 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1627 if (idx == len)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1628 {
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1629 /* The supplied vector is full.
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1630 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
1631 if (extend)
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1632 {
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1633 *len_ptr = len *= 2;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1634 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
1635 *vec_ptr = vec;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1636 }
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1637 else
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1638 inhibit_storing = 1;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1639 }
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1640
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1641 if (!inhibit_storing)
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1642 vec[idx] = overlay;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1643 /* 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
1644 idx++;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1645 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1646 else if (startpos < next)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1647 next = startpos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1648 }
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 for (tail = current_buffer->overlays_after;
9950
605bd2a8f816 (overlays_at): Use the new type-test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9939
diff changeset
1651 GC_CONSP (tail);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1652 tail = XCONS (tail)->cdr)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1653 {
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1654 int startpos, endpos;
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
1655
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1656 overlay = XCONS (tail)->car;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1657
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1658 start = OVERLAY_START (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1659 end = OVERLAY_END (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1660 startpos = OVERLAY_POSITION (start);
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
1661 if (pos < startpos)
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1662 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1663 if (startpos < next)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1664 next = startpos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1665 break;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1666 }
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1667 endpos = OVERLAY_POSITION (end);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1668 if (pos < endpos)
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1669 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1670 if (idx == len)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1671 {
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1672 if (extend)
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1673 {
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1674 *len_ptr = len *= 2;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1675 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
1676 *vec_ptr = vec;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1677 }
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1678 else
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1679 inhibit_storing = 1;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1680 }
2839
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1681
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1682 if (!inhibit_storing)
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1683 vec[idx] = overlay;
8c43cc245dd2 (overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents: 2791
diff changeset
1684 idx++;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1685 }
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1686 else if (endpos < pos && endpos > prev)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1687 prev = endpos;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1688 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1689
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1690 if (next_ptr)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1691 *next_ptr = next;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1692 if (prev_ptr)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
1693 *prev_ptr = prev;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1694 return idx;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1695 }
11097
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1696
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1697 /* Fast function to just test if we're at an overlay boundary. */
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1698 int
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1699 overlay_touches_p (pos)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1700 int pos;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1701 {
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1702 Lisp_Object tail, overlay;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1703
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1704 for (tail = current_buffer->overlays_before; GC_CONSP (tail);
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1705 tail = XCONS (tail)->cdr)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1706 {
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1707 int endpos;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1708
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1709 overlay = XCONS (tail)->car;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1710 if (!GC_OVERLAYP (overlay))
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1711 abort ();
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1712
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1713 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1714 if (endpos < pos)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1715 break;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1716 if (endpos == pos || OVERLAY_POSITION (OVERLAY_START (overlay)) == pos)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1717 return 1;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1718 }
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1719
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1720 for (tail = current_buffer->overlays_after; GC_CONSP (tail);
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1721 tail = XCONS (tail)->cdr)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1722 {
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1723 int startpos;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1724
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1725 overlay = XCONS (tail)->car;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1726 if (!GC_OVERLAYP (overlay))
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1727 abort ();
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1728
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1729 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1730 if (pos < startpos)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1731 break;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1732 if (startpos == pos || OVERLAY_POSITION (OVERLAY_END (overlay)) == pos)
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1733 return 1;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1734 }
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1735 return 0;
e1b4b0d66bf3 (overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11052
diff changeset
1736 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
1737
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1738 struct sortvec
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1739 {
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1740 Lisp_Object overlay;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1741 int beg, end;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1742 int priority;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1743 };
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1744
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1745 static int
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1746 compare_overlays (s1, s2)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1747 struct sortvec *s1, *s2;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1748 {
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1749 if (s1->priority != s2->priority)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1750 return s1->priority - s2->priority;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1751 if (s1->beg != s2->beg)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1752 return s1->beg - s2->beg;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1753 if (s1->end != s2->end)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1754 return s2->end - s1->end;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1755 return 0;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1756 }
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1757
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1758 /* Sort an array of overlays by priority. The array is modified in place.
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1759 The return value is the new size; this may be smaller than the original
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1760 size if some of the overlays were invalid or were window-specific. */
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1761 int
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1762 sort_overlays (overlay_vec, noverlays, w)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1763 Lisp_Object *overlay_vec;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1764 int noverlays;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1765 struct window *w;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1766 {
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1767 int i, j;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1768 struct sortvec *sortvec;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1769 sortvec = (struct sortvec *) alloca (noverlays * sizeof (struct sortvec));
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1770
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1771 /* Put the valid and relevant overlays into sortvec. */
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1772
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1773 for (i = 0, j = 0; i < noverlays; i++)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1774 {
6061
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1775 Lisp_Object tem;
6493
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
1776 Lisp_Object overlay;
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
1777
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
1778 overlay = overlay_vec[i];
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1779 if (OVERLAY_VALID (overlay)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1780 && OVERLAY_POSITION (OVERLAY_START (overlay)) > 0
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1781 && OVERLAY_POSITION (OVERLAY_END (overlay)) > 0)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1782 {
6061
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1783 /* If we're interested in a specific window, then ignore
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1784 overlays that are limited to some other window. */
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1785 if (w)
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1786 {
6061
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1787 Lisp_Object window;
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1788
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1789 window = Foverlay_get (overlay, Qwindow);
9146
8f966cc4652b (nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents: 9047
diff changeset
1790 if (WINDOWP (window) && XWINDOW (window) != w)
6061
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1791 continue;
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1792 }
6061
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1793
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1794 /* This overlay is good and counts: put it into sortvec. */
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1795 sortvec[j].overlay = overlay;
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1796 sortvec[j].beg = OVERLAY_POSITION (OVERLAY_START (overlay));
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1797 sortvec[j].end = OVERLAY_POSITION (OVERLAY_END (overlay));
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1798 tem = Foverlay_get (overlay, Qpriority);
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1799 if (INTEGERP (tem))
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1800 sortvec[j].priority = XINT (tem);
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1801 else
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1802 sortvec[j].priority = 0;
e40292d5c167 (sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents: 6051
diff changeset
1803 j++;
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1804 }
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1805 }
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1806 noverlays = j;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1807
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1808 /* Sort the overlays into the proper order: increasing priority. */
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1809
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1810 if (noverlays > 1)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1811 qsort (sortvec, noverlays, sizeof (struct sortvec), compare_overlays);
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1812
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1813 for (i = 0; i < noverlays; i++)
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1814 overlay_vec[i] = sortvec[i].overlay;
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1815 return (noverlays);
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1816 }
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
1817
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1818 struct sortstr
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1819 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1820 Lisp_Object string;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1821 int size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1822 int priority;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1823 };
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1824
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1825 /* A comparison function suitable for passing to qsort. */
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1826 static int
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1827 cmp_for_strings (as1, as2)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1828 char *as1, *as2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1829 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1830 struct sortstr *s1 = (struct sortstr *)as1;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1831 struct sortstr *s2 = (struct sortstr *)as2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1832 if (s1->size != s2->size)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1833 return s2->size - s1->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1834 if (s1->priority != s2->priority)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1835 return s1->priority - s2->priority;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1836 return 0;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1837 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1838
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1839 /* Buffers for storing the overlays touching a given position.
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1840 These are expanded as needed, but never freed. */
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1841 static struct sortstr *overlay_heads, *overlay_tails;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1842 static char *overlay_str_buf;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1843
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1844 /* Allocated length of those buffers. */
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1845 static int overlay_heads_len, overlay_tails_len, overlay_str_len;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1846
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1847 /* Return the concatenation of the strings associated with overlays that
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1848 begin or end at POS, ignoring overlays that are specific to a window
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1849 other than W. The strings are concatenated in the appropriate order:
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1850 shorter overlays nest inside longer ones, and higher priority inside
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1851 lower. Returns the string length, and stores the contents indirectly
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1852 through PSTR, if that variable is non-null. The string may be
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1853 overwritten by subsequent calls. */
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1854 int
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1855 overlay_strings (pos, w, pstr)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1856 int pos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1857 struct window *w;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1858 char **pstr;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1859 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1860 Lisp_Object ov, overlay, window, str, tem;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1861 int ntail = 0, nhead = 0;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1862 int total = 0;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1863 int startpos, endpos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1864
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1865 for (ov = current_buffer->overlays_before; CONSP (ov); ov = XCONS (ov)->cdr)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1866 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1867 overlay = XCONS (ov)->car;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1868 if (!OVERLAYP (overlay))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1869 abort ();
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1870
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1871 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1872 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1873 if (endpos < pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1874 break;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1875 if (endpos != pos && startpos != pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1876 continue;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1877 window = Foverlay_get (overlay, Qwindow);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1878 if (WINDOWP (window) && XWINDOW (window) != w)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1879 continue;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1880 if (endpos == pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1881 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1882 str = Foverlay_get (overlay, Qafter_string);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1883 if (STRINGP (str))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1884 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1885 if (ntail == overlay_tails_len)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1886 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1887 if (! overlay_tails)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1888 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1889 overlay_tails_len = 5;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1890 overlay_tails = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1891 xmalloc (5 * sizeof (struct sortstr)));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1892 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1893 else
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1894 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1895 overlay_tails_len *= 2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1896 overlay_tails = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1897 xrealloc ((overlay_tails_len
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1898 * sizeof (struct sortstr))));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1899 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1900 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1901 overlay_tails[ntail].string = str;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1902 overlay_tails[ntail].size = endpos - startpos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1903 tem = Foverlay_get (overlay, Qpriority);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1904 overlay_tails[ntail].priority = (INTEGERP (tem) ? XINT (tem) : 0);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1905 ntail++;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1906 total += XSTRING (str)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1907 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1908 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1909 if (startpos == pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1910 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1911 str = Foverlay_get (overlay, Qbefore_string);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1912 if (STRINGP (str))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1913 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1914 if (nhead == overlay_heads_len)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1915 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1916 if (! overlay_heads)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1917 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1918 overlay_heads_len = 5;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1919 overlay_heads = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1920 xmalloc (5 * sizeof (struct sortstr)));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1921 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1922 else
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1923 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1924 overlay_heads_len *= 2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1925 overlay_heads = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1926 xrealloc ((overlay_heads_len
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1927 * sizeof (struct sortstr))));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1928 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1929 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1930 overlay_heads[nhead].string = str;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1931 overlay_heads[nhead].size = endpos - startpos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1932 tem = Foverlay_get (overlay, Qpriority);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1933 overlay_heads[nhead].priority = (INTEGERP (tem) ? XINT (tem) : 0);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1934 nhead++;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1935 total += XSTRING (str)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1936 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1937 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1938 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1939 for (ov = current_buffer->overlays_after; CONSP (ov); ov = XCONS (ov)->cdr)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1940 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1941 overlay = XCONS (ov)->car;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1942 if (!OVERLAYP (overlay))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1943 abort ();
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1944
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1945 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1946 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1947 if (startpos > pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1948 break;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1949 if (endpos == pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1950 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1951 str = Foverlay_get (overlay, Qafter_string);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1952 if (STRINGP (str))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1953 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1954 if (ntail == overlay_tails_len)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1955 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1956 if (! overlay_tails)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1957 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1958 overlay_tails_len = 5;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1959 overlay_tails = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1960 xmalloc (5 * sizeof (struct sortstr)));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1961 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1962 else
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1963 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1964 overlay_tails_len *= 2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1965 overlay_tails = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1966 xrealloc ((overlay_tails_len
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1967 * sizeof (struct sortstr))));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1968 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1969 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1970 overlay_tails[ntail].string = str;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1971 overlay_tails[ntail].size = endpos - startpos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1972 tem = Foverlay_get (overlay, Qpriority);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1973 overlay_tails[ntail].priority = (INTEGERP (tem) ? XINT (tem) : 0);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1974 ntail++;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1975 total += XSTRING (str)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1976 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1977 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1978 if (startpos == pos)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1979 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1980 str = Foverlay_get (overlay, Qbefore_string);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1981 if (STRINGP (str))
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1982 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1983 if (nhead == overlay_heads_len)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1984 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1985 if (! overlay_heads)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1986 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1987 overlay_heads_len = 5;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1988 overlay_heads = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1989 xmalloc (5 * sizeof (struct sortstr)));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1990 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1991 else
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1992 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1993 overlay_heads_len *= 2;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1994 overlay_heads = ((struct sortstr *)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1995 xrealloc ((overlay_heads_len
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1996 * sizeof (struct sortstr))));
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1997 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1998 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
1999 overlay_heads[nhead].string = str;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2000 overlay_heads[nhead].size = endpos - startpos;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2001 tem = Foverlay_get (overlay, Qpriority);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2002 overlay_heads[nhead].priority = (INTEGERP (tem) ? XINT (tem) : 0);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2003 nhead++;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2004 total += XSTRING (str)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2005 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2006 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2007 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2008 if (ntail > 1)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2009 qsort (overlay_tails, ntail, sizeof (struct sortstr), cmp_for_strings);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2010 if (nhead > 1)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2011 qsort (overlay_heads, nhead, sizeof (struct sortstr), cmp_for_strings);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2012 if (total)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2013 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2014 int i;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2015 char *p;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2016
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2017 if (total > overlay_str_len)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2018 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2019 if (! overlay_str_buf)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2020 overlay_str_buf = (char *)xmalloc (total);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2021 else
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2022 overlay_str_buf = (char *)xrealloc (overlay_str_buf, total);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2023 overlay_str_len = total;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2024 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2025 p = overlay_str_buf;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2026 for (i = ntail; --i >= 0;)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2027 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2028 tem = overlay_tails[i].string;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2029 bcopy (XSTRING (tem)->data, p, XSTRING (tem)->size);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2030 p += XSTRING (tem)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2031 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2032 for (i = 0; i < nhead; ++i)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2033 {
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2034 tem = overlay_heads[i].string;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2035 bcopy (XSTRING (tem)->data, p, XSTRING (tem)->size);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2036 p += XSTRING (tem)->size;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2037 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2038 if (pstr)
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2039 *pstr = overlay_str_buf;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2040 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2041 return total;
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2042 }
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
2043
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2044 /* Shift overlays in BUF's overlay lists, to center the lists at POS. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2045
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2046 void
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2047 recenter_overlay_lists (buf, pos)
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2048 struct buffer *buf;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2049 int pos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2050 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2051 Lisp_Object overlay, tail, next, prev, beg, end;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2052
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2053 /* 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
2054
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2055 /* 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
2056 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
2057 with some future change. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2058 prev = Qnil;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2059 for (tail = buf->overlays_before;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2060 CONSP (tail);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2061 prev = tail, tail = next)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2062 {
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2063 next = XCONS (tail)->cdr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2064 overlay = XCONS (tail)->car;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2065
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2066 /* 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
2067 if (!OVERLAY_VALID (overlay))
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2068 #if 1
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2069 abort ();
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2070 #else
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2071 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2072 /* 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
2073 if (!NILP (prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2074 XCONS (prev)->cdr = next;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2075 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2076 buf->overlays_before = next;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2077 tail = prev;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2078 continue;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2079 }
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2080 #endif
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2081
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2082 beg = OVERLAY_START (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2083 end = OVERLAY_END (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2084
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2085 if (OVERLAY_POSITION (end) > pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2086 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2087 /* OVERLAY needs to be moved. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2088 int where = OVERLAY_POSITION (beg);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2089 Lisp_Object other, other_prev;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2090
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2091 /* 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
2092 if (!NILP (prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2093 XCONS (prev)->cdr = next;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2094 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2095 buf->overlays_before = next;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2096
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2097 /* 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
2098 other_prev = Qnil;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2099 for (other = buf->overlays_after;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2100 CONSP (other);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2101 other_prev = other, other = XCONS (other)->cdr)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2102 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2103 Lisp_Object otherbeg, otheroverlay, follower;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2104 int win;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2105
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2106 otheroverlay = XCONS (other)->car;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2107 if (! OVERLAY_VALID (otheroverlay))
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2108 abort ();
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2109
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2110 otherbeg = OVERLAY_START (otheroverlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2111 if (OVERLAY_POSITION (otherbeg) >= where)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2112 break;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2113 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2114
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2115 /* Add TAIL to overlays_after before OTHER. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2116 XCONS (tail)->cdr = other;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2117 if (!NILP (other_prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2118 XCONS (other_prev)->cdr = tail;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2119 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2120 buf->overlays_after = tail;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2121 tail = prev;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2122 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2123 else
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2124 /* 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
2125 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
2126 so stop now. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2127 break;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2128 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2129
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2130 /* 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
2131 prev = Qnil;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2132 for (tail = buf->overlays_after;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2133 CONSP (tail);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2134 prev = tail, tail = next)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2135 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2136 next = XCONS (tail)->cdr;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2137 overlay = XCONS (tail)->car;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2138
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2139 /* 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
2140 if (!OVERLAY_VALID (overlay))
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2141 #if 1
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2142 abort ();
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2143 #else
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2144 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2145 /* 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
2146 if (!NILP (prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2147 XCONS (prev)->cdr = next;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2148 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2149 buf->overlays_after = next;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2150 tail = prev;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2151 continue;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2152 }
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2153 #endif
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2154
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2155 beg = OVERLAY_START (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2156 end = OVERLAY_END (overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2157
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2158 /* Stop looking, when we know that nothing further
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2159 can possibly end before POS. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2160 if (OVERLAY_POSITION (beg) > pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2161 break;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2162
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2163 if (OVERLAY_POSITION (end) <= pos)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2164 {
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2165 /* OVERLAY needs to be moved. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2166 int where = OVERLAY_POSITION (end);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2167 Lisp_Object other, other_prev;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2168
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2169 /* 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
2170 if (!NILP (prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2171 XCONS (prev)->cdr = next;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2172 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2173 buf->overlays_after = next;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2174
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2175 /* 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
2176 other_prev = Qnil;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2177 for (other = buf->overlays_before;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2178 CONSP (other);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2179 other_prev = other, other = XCONS (other)->cdr)
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2180 {
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2181 Lisp_Object otherend, otheroverlay;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2182 int win;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2183
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2184 otheroverlay = XCONS (other)->car;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2185 if (! OVERLAY_VALID (otheroverlay))
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2186 abort ();
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2187
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2188 otherend = OVERLAY_END (otheroverlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2189 if (OVERLAY_POSITION (otherend) <= where)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2190 break;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2191 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2192
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2193 /* Add TAIL to overlays_before before OTHER. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2194 XCONS (tail)->cdr = other;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2195 if (!NILP (other_prev))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2196 XCONS (other_prev)->cdr = tail;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2197 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2198 buf->overlays_before = tail;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2199 tail = prev;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2200 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2201 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2202
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
2203 XSETFASTINT (buf->overlay_center, pos);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2204 }
7520
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2205
11473
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2206 void
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2207 adjust_overlays_for_insert (pos, length)
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2208 int pos;
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2209 int length;
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2210 {
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2211 /* After an insertion, the lists are still sorted properly,
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2212 but we may need to update the value of the overlay center. */
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2213 if (XFASTINT (current_buffer->overlay_center) >= pos)
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2214 XSETFASTINT (current_buffer->overlay_center,
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2215 XFASTINT (current_buffer->overlay_center) + length);
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2216 }
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2217
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2218 void
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2219 adjust_overlays_for_delete (pos, length)
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2220 int pos;
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2221 int length;
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2222 {
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2223 if (XFASTINT (current_buffer->overlay_center) < pos)
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2224 /* The deletion was to our right. No change needed; the before- and
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2225 after-lists are still consistent. */
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2226 ;
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2227 else if (XFASTINT (current_buffer->overlay_center) > pos + length)
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2228 /* The deletion was to our left. We need to adjust the center value
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2229 to account for the change in position, but the lists are consistent
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2230 given the new value. */
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2231 XSETFASTINT (current_buffer->overlay_center,
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2232 XFASTINT (current_buffer->overlay_center) - length);
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2233 else
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2234 /* We're right in the middle. There might be things on the after-list
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2235 that now belong on the before-list. Recentering will move them,
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2236 and also update the center point. */
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2237 recenter_overlay_lists (current_buffer, pos);
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2238 }
24ede15e0aaa (adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11418
diff changeset
2239
7520
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2240 /* Fix up overlays that were garbled as a result of permuting markers
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2241 in the range START through END. Any overlay with at least one
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2242 endpoint in this range will need to be unlinked from the overlay
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2243 list and reinserted in its proper place.
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2244 Such an overlay might even have negative size at this point.
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2245 If so, we'll reverse the endpoints. Can you think of anything
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2246 better to do in this situation? */
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2247 void
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2248 fix_overlays_in_range (start, end)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2249 register int start, end;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2250 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2251 Lisp_Object tem, overlay;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2252 Lisp_Object before_list, after_list;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2253 Lisp_Object *ptail, *pbefore = &before_list, *pafter = &after_list;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2254 int startpos, endpos;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2255
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2256 /* This algorithm shifts links around instead of consing and GCing.
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2257 The loop invariant is that before_list (resp. after_list) is a
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2258 well-formed list except that its last element, the one that
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2259 *pbefore (resp. *pafter) points to, is still uninitialized.
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2260 So it's not a bug that before_list isn't initialized, although
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2261 it may look strange. */
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2262 for (ptail = &current_buffer->overlays_before; CONSP (*ptail);)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2263 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2264 overlay = XCONS (*ptail)->car;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2265 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2266 if (endpos < start)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2267 break;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2268 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2269 if (endpos < end
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2270 || (startpos >= start && startpos < end))
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2271 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2272 /* If the overlay is backwards, fix that now. */
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2273 if (startpos > endpos)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2274 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2275 int tem;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2276 Fset_marker (OVERLAY_START (overlay), endpos, Qnil);
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2277 Fset_marker (OVERLAY_END (overlay), startpos, Qnil);
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2278 tem = startpos; startpos = endpos; endpos = tem;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2279 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2280 /* Add it to the end of the wrong list. Later on,
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2281 recenter_overlay_lists will move it to the right place. */
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2282 if (endpos < XINT (current_buffer->overlay_center))
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2283 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2284 *pafter = *ptail;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2285 pafter = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2286 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2287 else
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2288 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2289 *pbefore = *ptail;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2290 pbefore = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2291 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2292 *ptail = XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2293 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2294 else
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2295 ptail = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2296 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2297 for (ptail = &current_buffer->overlays_after; CONSP (*ptail);)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2298 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2299 overlay = XCONS (*ptail)->car;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2300 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2301 if (startpos >= end)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2302 break;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2303 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2304 if (startpos >= start
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2305 || (endpos >= start && endpos < end))
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2306 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2307 if (startpos > endpos)
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2308 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2309 int tem;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2310 Fset_marker (OVERLAY_START (overlay), endpos, Qnil);
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2311 Fset_marker (OVERLAY_END (overlay), startpos, Qnil);
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2312 tem = startpos; startpos = endpos; endpos = tem;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2313 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2314 if (endpos < XINT (current_buffer->overlay_center))
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2315 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2316 *pafter = *ptail;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2317 pafter = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2318 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2319 else
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2320 {
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2321 *pbefore = *ptail;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2322 pbefore = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2323 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2324 *ptail = XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2325 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2326 else
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2327 ptail = &XCONS (*ptail)->cdr;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2328 }
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2329
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2330 /* Splice the constructed (wrong) lists into the buffer's lists,
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2331 and let the recenter function make it sane again. */
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2332 *pbefore = current_buffer->overlays_before;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2333 current_buffer->overlays_before = before_list;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2334 recenter_overlay_lists (current_buffer,
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2335 XINT (current_buffer->overlay_center));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2336
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2337 *pafter = current_buffer->overlays_after;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2338 current_buffer->overlays_after = after_list;
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2339 recenter_overlay_lists (current_buffer,
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2340 XINT (current_buffer->overlay_center));
6cc6328992d6 (fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents: 7492
diff changeset
2341 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2342
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2343 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0,
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2344 "Return t if OBJECT is an overlay.")
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2345 (object)
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2346 Lisp_Object object;
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2347 {
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2348 return (OVERLAYP (object) ? Qt : Qnil);
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2349 }
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2350
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2351 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
2352 "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
2353 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
2354 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
2355 (beg, end, buffer)
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2356 Lisp_Object beg, end, buffer;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2357 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2358 Lisp_Object overlay;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2359 struct buffer *b;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2360
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2361 if (NILP (buffer))
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
2362 XSETBUFFER (buffer, current_buffer);
3031
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2363 else
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2364 CHECK_BUFFER (buffer, 2);
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2365 if (MARKERP (beg)
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2366 && ! 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
2367 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
2368 if (MARKERP (end)
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2369 && ! 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
2370 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
2371
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2372 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
2373 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
2374
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2375 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
2376 {
6493
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
2377 Lisp_Object temp;
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
2378 temp = beg; beg = end; end = temp;
3031
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2379 }
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2380
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2381 b = XBUFFER (buffer);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2382
3031
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2383 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
2384 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
2385
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2386 overlay = allocate_misc ();
11244
f3b11dc9014e (Fmake_overlay): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents: 11214
diff changeset
2387 XMISCTYPE (overlay) = Lisp_Misc_Overlay;
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2388 XOVERLAY (overlay)->start = beg;
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2389 XOVERLAY (overlay)->end = end;
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2390 XOVERLAY (overlay)->plist = Qnil;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2391
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2392 /* Put the new overlay on the wrong list. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2393 end = OVERLAY_END (overlay);
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2394 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
2395 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
2396 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2397 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
2398
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2399 /* 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
2400 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
2401
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2402 /* 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
2403 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
2404
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2405 return overlay;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2406 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2407
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2408 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
2409 "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
2410 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
2411 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
2412 buffer.")
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2413 (overlay, beg, end, buffer)
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2414 Lisp_Object overlay, beg, end, buffer;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2415 {
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2416 struct buffer *b, *ob;
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2417 Lisp_Object obuffer;
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2418 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
2419
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2420 CHECK_OVERLAY (overlay, 0);
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2421 if (NILP (buffer))
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2422 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
2423 if (NILP (buffer))
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
2424 XSETBUFFER (buffer, current_buffer);
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2425 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
2426
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2427 if (MARKERP (beg)
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2428 && ! 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
2429 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
2430 if (MARKERP (end)
5c96dfc52433 * buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents: 2961
diff changeset
2431 && ! 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
2432 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
2433
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2434 CHECK_NUMBER_COERCE_MARKER (beg, 1);
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2435 CHECK_NUMBER_COERCE_MARKER (end, 1);
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2436
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2437 if (XINT (beg) == XINT (end) && ! NILP (Foverlay_get (overlay, Qevaporate)))
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2438 return Fdelete_overlay (overlay);
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2439
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2440 if (XINT (beg) > XINT (end))
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2441 {
6493
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
2442 Lisp_Object temp;
33a461f14903 (sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents: 6477
diff changeset
2443 temp = beg; beg = end; end = temp;
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2444 }
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2445
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2446 specbind (Qinhibit_quit, Qt);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2447
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2448 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
2449 b = XBUFFER (buffer);
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2450 ob = XBUFFER (obuffer);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2451
3204
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2452 /* 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
2453 if (!EQ (buffer, obuffer))
7985
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2454 {
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2455 /* Redisplay where the overlay was. */
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2456 if (!NILP (obuffer))
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2457 {
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2458 Lisp_Object o_beg;
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2459 Lisp_Object o_end;
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2460
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2461 o_beg = OVERLAY_START (overlay);
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2462 o_end = OVERLAY_END (overlay);
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2463 o_beg = OVERLAY_POSITION (o_beg);
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2464 o_end = OVERLAY_POSITION (o_end);
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2465
8035
e16ebbd6f14b (Fmove_overlay): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 7995
diff changeset
2466 redisplay_region (ob, XINT (o_beg), XINT (o_end));
7985
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2467 }
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2468
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2469 /* Redisplay where the overlay is going to be. */
8035
e16ebbd6f14b (Fmove_overlay): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 7995
diff changeset
2470 redisplay_region (b, XINT (beg), XINT (end));
7985
f6c309d5d314 (Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents: 7670
diff changeset
2471 }
3204
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2472 else
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2473 /* 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
2474 {
4416
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2475 Lisp_Object o_beg;
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2476 Lisp_Object o_end;
3204
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2477 int change_beg, change_end;
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2478
4416
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2479 o_beg = OVERLAY_START (overlay);
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2480 o_end = OVERLAY_END (overlay);
3204
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2481 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
2482 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
2483
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2484 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
2485 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
2486 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
2487 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
2488 else
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2489 {
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2490 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
2491 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
2492 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
2493 }
a3007f83650c * buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents: 3031
diff changeset
2494 }
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2495
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2496 if (!NILP (obuffer))
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2497 {
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2498 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
2499 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
2500 }
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2501
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2502 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
2503 Fset_marker (OVERLAY_END (overlay), end, buffer);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2504
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2505 /* Put the overlay on the wrong list. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2506 end = OVERLAY_END (overlay);
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2507 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
2508 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
2509 else
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2510 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
2511
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2512 /* 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
2513 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
2514
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2515 return unbind_to (count, overlay);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2516 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2517
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2518 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
2519 "Delete the overlay OVERLAY from its buffer.")
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2520 (overlay)
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2521 Lisp_Object overlay;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2522 {
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2523 Lisp_Object buffer;
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2524 struct buffer *b;
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2525 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
2526
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2527 CHECK_OVERLAY (overlay, 0);
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2528
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2529 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
2530 if (NILP (buffer))
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2531 return Qnil;
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2532
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2533 b = XBUFFER (buffer);
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2534
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2535 specbind (Qinhibit_quit, Qt);
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2536
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2537 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
2538 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
2539
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2540 redisplay_region (b,
4852
ef44bf38f456 (Fdelete_overlay, Foverlay_put): Use marker_position,
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2541 marker_position (OVERLAY_START (overlay)),
ef44bf38f456 (Fdelete_overlay, Foverlay_put): Use marker_position,
Richard M. Stallman <rms@gnu.org>
parents: 4696
diff changeset
2542 marker_position (OVERLAY_END (overlay)));
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2543
2791
4f234fbfb02c * buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents: 2787
diff changeset
2544 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
2545 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
2546
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
2547 return unbind_to (count, Qnil);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2548 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2549
2787
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2550 /* Overlay dissection functions. */
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2551
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2552 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
2553 "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
2554 (overlay)
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2555 Lisp_Object overlay;
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2556 {
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2557 CHECK_OVERLAY (overlay, 0);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2558
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2559 return (Fmarker_position (OVERLAY_START (overlay)));
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2560 }
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2561
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2562 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
2563 "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
2564 (overlay)
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2565 Lisp_Object overlay;
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2566 {
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2567 CHECK_OVERLAY (overlay, 0);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2568
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2569 return (Fmarker_position (OVERLAY_END (overlay)));
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2570 }
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2571
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2572 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
2573 "Return the buffer OVERLAY belongs to.")
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2574 (overlay)
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2575 Lisp_Object overlay;
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2576 {
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2577 CHECK_OVERLAY (overlay, 0);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2578
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2579 return Fmarker_buffer (OVERLAY_START (overlay));
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2580 }
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2581
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2582 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
2583 "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
2584 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
2585 OVERLAY.")
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2586 (overlay)
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2587 Lisp_Object overlay;
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2588 {
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2589 CHECK_OVERLAY (overlay, 0);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2590
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2591 return Fcopy_sequence (XOVERLAY (overlay)->plist);
2787
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2592 }
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2593
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
2594
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2595 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
2596 "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
2597 (pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2598 Lisp_Object pos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2599 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2600 int noverlays;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2601 Lisp_Object *overlay_vec;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2602 int len;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2603 Lisp_Object result;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2604
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2605 CHECK_NUMBER_COERCE_MARKER (pos, 0);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2606
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2607 len = 10;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2608 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
2609
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2610 /* 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
2611 Store the length in len. */
11418
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2612 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len,
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2613 (int *) 0, (int *) 0);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2614
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2615 /* Make a list of them all. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2616 result = Flist (noverlays, overlay_vec);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2617
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2389
diff changeset
2618 xfree (overlay_vec);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2619 return result;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2620 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2621
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2622 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
2623 1, 1, 0,
7492
4ba64e05dad6 (Foverlay_lists): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7455
diff changeset
2624 "Return the next position after POS where an overlay starts or ends.\n\
4ba64e05dad6 (Foverlay_lists): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7455
diff changeset
2625 If there are no more overlay boundaries after POS, return (point-max).")
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2626 (pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2627 Lisp_Object pos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2628 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2629 int noverlays;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2630 int endpos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2631 Lisp_Object *overlay_vec;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2632 int len;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2633 int i;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2634
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2635 CHECK_NUMBER_COERCE_MARKER (pos, 0);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2636
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2637 len = 10;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2638 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
2639
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2640 /* 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
2641 Store the length in len.
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2642 endpos gets the position where the next overlay starts. */
11418
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2643 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len,
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2644 &endpos, (int *) 0);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2645
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2646 /* If any of these overlays ends before endpos,
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2647 use its ending point instead. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2648 for (i = 0; i < noverlays; i++)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2649 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2650 Lisp_Object oend;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2651 int oendpos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2652
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2653 oend = OVERLAY_END (overlay_vec[i]);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2654 oendpos = OVERLAY_POSITION (oend);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2655 if (oendpos < endpos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2656 endpos = oendpos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2657 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2658
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2389
diff changeset
2659 xfree (overlay_vec);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2660 return make_number (endpos);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2661 }
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2662
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2663 DEFUN ("previous-overlay-change", Fprevious_overlay_change,
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2664 Sprevious_overlay_change, 1, 1, 0,
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2665 "Return the previous position before POS where an overlay starts or ends.\n\
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2666 If there are no more overlay boundaries after POS, return (point-min).")
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2667 (pos)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2668 Lisp_Object pos;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2669 {
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2670 int noverlays;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2671 int prevpos;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2672 Lisp_Object *overlay_vec;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2673 int len;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2674 int i;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2675
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2676 CHECK_NUMBER_COERCE_MARKER (pos, 0);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2677
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2678 len = 10;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2679 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object));
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2680
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2681 /* Put all the overlays we want in a vector in overlay_vec.
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2682 Store the length in len.
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2683 prevpos gets the position of an overlay end. */
11418
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2684 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len,
f892e7cb7f51 (Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents: 11414
diff changeset
2685 (int *) 0, &prevpos);
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2686
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2687 /* If any of these overlays starts before endpos,
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2688 maybe use its starting point instead. */
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2689 for (i = 0; i < noverlays; i++)
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2690 {
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2691 Lisp_Object ostart;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2692 int ostartpos;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2693
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2694 ostart = OVERLAY_START (overlay_vec[i]);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2695 ostartpos = OVERLAY_POSITION (ostart);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2696 if (ostartpos > prevpos && ostartpos < XINT (pos))
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2697 prevpos = ostartpos;
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2698 }
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2699
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2700 xfree (overlay_vec);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2701 return make_number (prevpos);
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
2702 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2703
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2704 /* These functions are for debugging overlays. */
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2705
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2706 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
2707 "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
2708 The car has all the overlays before the overlay center;\n\
7492
4ba64e05dad6 (Foverlay_lists): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 7455
diff changeset
2709 the cdr has all the overlays after the overlay center.\n\
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2710 Recentering overlays moves overlays between these lists.\n\
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2711 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
2712 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
2713 ()
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2714 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2715 Lisp_Object before, after;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2716 before = current_buffer->overlays_before;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2717 if (CONSP (before))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2718 before = Fcopy_sequence (before);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2719 after = current_buffer->overlays_after;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2720 if (CONSP (after))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2721 after = Fcopy_sequence (after);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2722
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2723 return Fcons (before, after);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2724 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2725
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2726 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
2727 "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
2728 (pos)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2729 Lisp_Object pos;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2730 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2731 CHECK_NUMBER_COERCE_MARKER (pos, 0);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2732
2508
3aa2f3b35353 * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents: 2486
diff changeset
2733 recenter_overlay_lists (current_buffer, XINT (pos));
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2734 return Qnil;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2735 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2736
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2737 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
2738 "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
2739 (overlay, prop)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2740 Lisp_Object overlay, prop;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2741 {
9211
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2742 Lisp_Object plist, fallback;
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2743
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2744 CHECK_OVERLAY (overlay, 0);
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2745
9211
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2746 fallback = Qnil;
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2747
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2748 for (plist = XOVERLAY (overlay)->plist;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2749 CONSP (plist) && CONSP (XCONS (plist)->cdr);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2750 plist = XCONS (XCONS (plist)->cdr)->cdr)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2751 {
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2752 if (EQ (XCONS (plist)->car, prop))
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2753 return XCONS (XCONS (plist)->cdr)->car;
9211
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2754 else if (EQ (XCONS (plist)->car, Qcategory))
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2755 {
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2756 Lisp_Object tem;
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2757 tem = Fcar (Fcdr (plist));
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2758 if (SYMBOLP (tem))
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2759 fallback = Fget (tem, prop);
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2760 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2761 }
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2762
9211
c7bfa0da167b (Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents: 9146
diff changeset
2763 return fallback;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2764 }
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2765
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2766 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
2767 "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
2768 (overlay, prop, value)
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2769 Lisp_Object overlay, prop, value;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2770 {
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2771 Lisp_Object tail, buffer;
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2772 int changed;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2773
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
2774 CHECK_OVERLAY (overlay, 0);
2722
16db9d1af886 Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents: 2645
diff changeset
2775
8062
ad595e4e165c (send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 8035
diff changeset
2776 buffer = Fmarker_buffer (OVERLAY_START (overlay));
ad595e4e165c (send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 8035
diff changeset
2777
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2778 for (tail = XOVERLAY (overlay)->plist;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2779 CONSP (tail) && CONSP (XCONS (tail)->cdr);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2780 tail = XCONS (XCONS (tail)->cdr)->cdr)
8062
ad595e4e165c (send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 8035
diff changeset
2781 if (EQ (XCONS (tail)->car, prop))
ad595e4e165c (send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 8035
diff changeset
2782 {
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2783 changed = !EQ (XCONS (XCONS (tail)->cdr)->car, value);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2784 XCONS (XCONS (tail)->cdr)->car = value;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2785 goto found;
8062
ad595e4e165c (send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 8035
diff changeset
2786 }
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2787 /* It wasn't in the list, so add it to the front. */
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2788 changed = !NILP (value);
9922
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2789 XOVERLAY (overlay)->plist
f653d8aac66a (Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents: 9920
diff changeset
2790 = Fcons (prop, Fcons (value, XOVERLAY (overlay)->plist));
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2791 found:
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2792 if (! NILP (buffer))
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2793 {
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2794 if (changed)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2795 redisplay_region (XBUFFER (buffer),
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2796 marker_position (OVERLAY_START (overlay)),
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2797 marker_position (OVERLAY_END (overlay)));
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2798 if (EQ (prop, Qevaporate) && ! NILP (value)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2799 && (OVERLAY_POSITION (OVERLAY_START (overlay))
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2800 == OVERLAY_POSITION (OVERLAY_END (overlay))))
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2801 Fdelete_overlay (overlay);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2802 }
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
2803 return value;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2804 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
2805
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2806 /* Run the modification-hooks of overlays that include
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2807 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
2808 Run the insert-before-hooks of overlay starting at END,
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2809 and the insert-after-hooks of overlay ending at START.
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2810
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2811 This is called both before and after the modification.
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2812 AFTER is nonzero when we call after the modification.
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2813
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2814 ARG1, ARG2, ARG3 are arguments to pass to the hook functions. */
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2815
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2816 void
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2817 report_overlay_modification (start, end, after, arg1, arg2, arg3)
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2818 Lisp_Object start, end;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2819 int after;
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2820 Lisp_Object arg1, arg2, arg3;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2821 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2822 Lisp_Object prop, overlay, tail;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2823 int insertion = EQ (start, end);
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2824 int tail_copied;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2825 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2826
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2827 overlay = Qnil;
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2828 tail = Qnil;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2829 GCPRO5 (overlay, tail, arg1, arg2, arg3);
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2830
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2831 tail_copied = 0;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2832 for (tail = current_buffer->overlays_before;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2833 CONSP (tail);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2834 tail = XCONS (tail)->cdr)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2835 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2836 int startpos, endpos;
4416
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2837 Lisp_Object ostart, oend;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2838
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2839 overlay = XCONS (tail)->car;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2840
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2841 ostart = OVERLAY_START (overlay);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2842 oend = OVERLAY_END (overlay);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2843 endpos = OVERLAY_POSITION (oend);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2844 if (XFASTINT (start) > endpos)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2845 break;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2846 startpos = OVERLAY_POSITION (ostart);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2847 if (XFASTINT (end) == startpos && insertion)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2848 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2849 prop = Foverlay_get (overlay, Qinsert_in_front_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2850 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2851 {
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2852 /* Copy TAIL in case the hook recenters the overlay lists. */
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2853 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2854 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2855 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2856 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2857 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2858 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2859 if (XFASTINT (start) == endpos && insertion)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2860 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2861 prop = Foverlay_get (overlay, Qinsert_behind_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2862 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2863 {
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2864 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2865 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2866 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2867 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2868 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2869 }
6675
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2870 /* Test for intersecting intervals. This does the right thing
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2871 for both insertion and deletion. */
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2872 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos)
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2873 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2874 prop = Foverlay_get (overlay, Qmodification_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2875 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2876 {
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2877 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2878 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2879 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2880 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2881 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2882 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2883 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2884
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2885 tail_copied = 0;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2886 for (tail = current_buffer->overlays_after;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2887 CONSP (tail);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2888 tail = XCONS (tail)->cdr)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2889 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2890 int startpos, endpos;
4416
9657ef911049 (Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents: 4226
diff changeset
2891 Lisp_Object ostart, oend;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2892
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2893 overlay = XCONS (tail)->car;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2894
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2895 ostart = OVERLAY_START (overlay);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2896 oend = OVERLAY_END (overlay);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2897 startpos = OVERLAY_POSITION (ostart);
4574
503af6aa135b (verify_overlay_modification): initialize endpos.
Richard M. Stallman <rms@gnu.org>
parents: 4416
diff changeset
2898 endpos = OVERLAY_POSITION (oend);
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2899 if (XFASTINT (end) < startpos)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2900 break;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2901 if (XFASTINT (end) == startpos && insertion)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2902 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2903 prop = Foverlay_get (overlay, Qinsert_in_front_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2904 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2905 {
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2906 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2907 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2908 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2909 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2910 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2911 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2912 if (XFASTINT (start) == endpos && insertion)
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2913 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2914 prop = Foverlay_get (overlay, Qinsert_behind_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2915 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2916 {
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2917 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2918 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2919 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2920 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2921 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2922 }
6675
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2923 /* Test for intersecting intervals. This does the right thing
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2924 for both insertion and deletion. */
cf38c5af079d (verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents: 6659
diff changeset
2925 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos)
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2926 {
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2927 prop = Foverlay_get (overlay, Qmodification_hooks);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2928 if (!NILP (prop))
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2929 {
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2930 if (!tail_copied)
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2931 tail = Fcopy_sequence (tail);
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2932 tail_copied = 1;
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2933 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3);
6591
60f70854e73f (verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents: 6493
diff changeset
2934 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2935 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2936 }
7670
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2937
b3be53811505 (verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents: 7520
diff changeset
2938 UNGCPRO;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2939 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2940
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2941 static void
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2942 call_overlay_mod_hooks (list, overlay, after, arg1, arg2, arg3)
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2943 Lisp_Object list, overlay;
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2944 int after;
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2945 Lisp_Object arg1, arg2, arg3;
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2946 {
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2947 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2948 GCPRO4 (list, arg1, arg2, arg3);
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2949 while (!NILP (list))
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2950 {
10146
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2951 if (NILP (arg3))
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2952 call4 (Fcar (list), overlay, after ? Qt : Qnil, arg1, arg2);
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2953 else
24032289479c (report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents: 10143
diff changeset
2954 call5 (Fcar (list), overlay, after ? Qt : Qnil, arg1, arg2, arg3);
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2955 list = Fcdr (list);
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2956 }
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2957 UNGCPRO;
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2958 }
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2959
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2960 /* Delete any zero-sized overlays at position POS, if the `evaporate'
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2961 property is set. */
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2962 void
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2963 evaporate_overlays (pos)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2964 int pos;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2965 {
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2966 Lisp_Object tail, overlay, hit_list;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2967
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2968 hit_list = Qnil;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2969 if (pos <= XFASTINT (current_buffer->overlay_center))
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2970 for (tail = current_buffer->overlays_before; CONSP (tail);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2971 tail = XCONS (tail)->cdr)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2972 {
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2973 int endpos;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2974 overlay = XCONS (tail)->car;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2975 endpos = OVERLAY_POSITION (OVERLAY_END (overlay));
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2976 if (endpos < pos)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2977 break;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2978 if (endpos == pos && OVERLAY_POSITION (OVERLAY_START (overlay)) == pos
11414
60d40ca8c16b (evaporate_overlays): Fix type error.
Richard M. Stallman <rms@gnu.org>
parents: 11244
diff changeset
2979 && ! NILP (Foverlay_get (overlay, Qevaporate)))
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2980 hit_list = Fcons (overlay, hit_list);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2981 }
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2982 else
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2983 for (tail = current_buffer->overlays_after; CONSP (tail);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2984 tail = XCONS (tail)->cdr)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2985 {
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2986 int startpos;
9006
186aff8c1f51 (evaporate_overlays): Overlay is in car, not cdr.
Karl Heuer <kwzh@gnu.org>
parents: 8967
diff changeset
2987 overlay = XCONS (tail)->car;
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2988 startpos = OVERLAY_POSITION (OVERLAY_START (overlay));
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2989 if (startpos > pos)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2990 break;
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2991 if (startpos == pos && OVERLAY_POSITION (OVERLAY_END (overlay)) == pos
11414
60d40ca8c16b (evaporate_overlays): Fix type error.
Richard M. Stallman <rms@gnu.org>
parents: 11244
diff changeset
2992 && ! NILP (Foverlay_get (overlay, Qevaporate)))
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2993 hit_list = Fcons (overlay, hit_list);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2994 }
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2995 for (; CONSP (hit_list); hit_list = XCONS (hit_list)->cdr)
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2996 Fdelete_overlay (XCONS (hit_list)->car);
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
2997 }
4077
a860278e3ab3 (verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3884
diff changeset
2998
9464
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
2999 /* Somebody has tried to store a value with an unacceptable type
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3000 into the buffer-local slot with offset OFFSET. */
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3001 void
9464
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3002 buffer_slot_type_mismatch (offset)
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3003 int offset;
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3004 {
9464
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3005 Lisp_Object sym;
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3006 char *type_name;
9464
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3007 sym = *(Lisp_Object *)(offset + (char *)&buffer_local_symbols);
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3008 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
3009 {
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3010 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
3011 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
3012 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
3013 default:
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3014 abort ();
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3015 }
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3016
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3017 error ("only %s should be stored in the buffer-local variable %s",
9464
4bb620c9a075 (buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents: 9438
diff changeset
3018 type_name, XSYMBOL (sym)->name->data);
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3019 }
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3020
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3021 init_buffer_once ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3022 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3023 register Lisp_Object tem;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3024
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3025 /* Make sure all markable slots in buffer_defaults
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3026 are initialized reasonably, so mark_buffer won't choke. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3027 reset_buffer (&buffer_defaults);
8873
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
3028 reset_buffer_local_variables (&buffer_defaults);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3029 reset_buffer (&buffer_local_symbols);
8873
b58ea8cae183 (reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents: 8839
diff changeset
3030 reset_buffer_local_variables (&buffer_local_symbols);
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3031 /* Prevent GC from getting confused. */
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3032 buffer_defaults.text = &buffer_defaults.own_text;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3033 buffer_local_symbols.text = &buffer_local_symbols.own_text;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3034 #ifdef USE_TEXT_PROPERTIES
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3035 BUF_INTERVALS (&buffer_defaults) = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3036 BUF_INTERVALS (&buffer_local_symbols) = 0;
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3037 #endif
9262
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
3038 XSETBUFFER (Vbuffer_defaults, &buffer_defaults);
582534b6e763 (Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents: 9211
diff changeset
3039 XSETBUFFER (Vbuffer_local_symbols, &buffer_local_symbols);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3040
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3041 /* Set up the default values of various buffer slots. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3042 /* Must do these before making the first buffer! */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3043
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3044 /* real setup is done in loaddefs.el */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3045 buffer_defaults.mode_line_format = build_string ("%-");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3046 buffer_defaults.abbrev_mode = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3047 buffer_defaults.overwrite_mode = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3048 buffer_defaults.case_fold_search = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3049 buffer_defaults.auto_fill_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3050 buffer_defaults.selective_display = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3051 #ifndef old
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3052 buffer_defaults.selective_display_ellipses = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3053 #endif
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3054 buffer_defaults.abbrev_table = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3055 buffer_defaults.display_table = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3056 buffer_defaults.undo_list = Qnil;
2043
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3057 buffer_defaults.mark_active = Qnil;
11052
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3058 buffer_defaults.file_format = Qnil;
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3059 buffer_defaults.overlays_before = Qnil;
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3060 buffer_defaults.overlays_after = Qnil;
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
3061 XSETFASTINT (buffer_defaults.overlay_center, BEG);
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3062
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3063 XSETFASTINT (buffer_defaults.tab_width, 8);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3064 buffer_defaults.truncate_lines = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3065 buffer_defaults.ctl_arrow = Qt;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3066
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3067 #ifdef DOS_NT
7270
0f79f4bd3c62 (init_buffer_once): Initialize buffer_file_type field right.
Richard M. Stallman <rms@gnu.org>
parents: 7062
diff changeset
3068 buffer_defaults.buffer_file_type = Qnil; /* TEXT */
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3069 #endif
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3070 XSETFASTINT (buffer_defaults.fill_column, 70);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3071 XSETFASTINT (buffer_defaults.left_margin, 0);
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3072 buffer_defaults.cache_long_line_scans = Qnil;
10751
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3073 buffer_defaults.file_truename = Qnil;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3074
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3075 /* Assign the local-flags to the slots that have default values.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3076 The local flag is a bit that is used in the buffer
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3077 to say that it has its own local value for the slot.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3078 The local flag bits are in the local_var_flags slot of the buffer. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3079
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3080 /* Nothing can work if this isn't true */
8818
0996472bb39d (reset_buffer_local_variables, Fbuffer_local_variables)
Richard M. Stallman <rms@gnu.org>
parents: 8599
diff changeset
3081 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort ();
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3082
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3083 /* 0 means not a lisp var, -1 means always local, else mask */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3084 bzero (&buffer_local_flags, sizeof buffer_local_flags);
9362
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3085 XSETINT (buffer_local_flags.filename, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3086 XSETINT (buffer_local_flags.directory, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3087 XSETINT (buffer_local_flags.backed_up, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3088 XSETINT (buffer_local_flags.save_length, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3089 XSETINT (buffer_local_flags.auto_save_file_name, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3090 XSETINT (buffer_local_flags.read_only, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3091 XSETINT (buffer_local_flags.major_mode, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3092 XSETINT (buffer_local_flags.mode_name, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3093 XSETINT (buffer_local_flags.undo_list, -1);
f6dc29e7e986 (init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents: 9335
diff changeset
3094 XSETINT (buffer_local_flags.mark_active, -1);
10561
53f34c870201 (init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 10505
diff changeset
3095 XSETINT (buffer_local_flags.point_before_scroll, -1);
10751
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3096 XSETINT (buffer_local_flags.file_truename, -1);
10967
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3097 XSETINT (buffer_local_flags.invisibility_spec, -1);
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3098
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3099 XSETFASTINT (buffer_local_flags.mode_line_format, 1);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3100 XSETFASTINT (buffer_local_flags.abbrev_mode, 2);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3101 XSETFASTINT (buffer_local_flags.overwrite_mode, 4);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3102 XSETFASTINT (buffer_local_flags.case_fold_search, 8);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3103 XSETFASTINT (buffer_local_flags.auto_fill_function, 0x10);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3104 XSETFASTINT (buffer_local_flags.selective_display, 0x20);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3105 #ifndef old
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3106 XSETFASTINT (buffer_local_flags.selective_display_ellipses, 0x40);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3107 #endif
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3108 XSETFASTINT (buffer_local_flags.tab_width, 0x80);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3109 XSETFASTINT (buffer_local_flags.truncate_lines, 0x100);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3110 XSETFASTINT (buffer_local_flags.ctl_arrow, 0x200);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3111 XSETFASTINT (buffer_local_flags.fill_column, 0x400);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3112 XSETFASTINT (buffer_local_flags.left_margin, 0x800);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3113 XSETFASTINT (buffer_local_flags.abbrev_table, 0x1000);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3114 XSETFASTINT (buffer_local_flags.display_table, 0x2000);
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3115 XSETFASTINT (buffer_local_flags.syntax_table, 0x8000);
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3116 XSETFASTINT (buffer_local_flags.cache_long_line_scans, 0x10000);
11052
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3117 XSETFASTINT (buffer_local_flags.file_format, 0x20000);
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3118 #ifdef DOS_NT
9296
a1a7fc21ded9 (reset_buffer, Ferase_buffer, validate_region, list_buffers_1, recenter_overlay_lists, init_buffer_once): Don't use XFASTINT as an lvalue.
Karl Heuer <kwzh@gnu.org>
parents: 9262
diff changeset
3119 XSETFASTINT (buffer_local_flags.buffer_file_type, 0x4000);
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3120 #endif
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3121
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3122 Vbuffer_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3123 current_buffer = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3124 all_buffers = 0;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3125
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3126 QSFundamental = build_string ("Fundamental");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3127
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3128 Qfundamental_mode = intern ("fundamental-mode");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3129 buffer_defaults.major_mode = Qfundamental_mode;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3130
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3131 Qmode_class = intern ("mode-class");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3132
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3133 Qprotected_field = intern ("protected-field");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3134
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3135 Qpermanent_local = intern ("permanent-local");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3136
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3137 Qkill_buffer_hook = intern ("kill-buffer-hook");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3138
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3139 Vprin1_to_string_buffer = Fget_buffer_create (build_string (" prin1"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3140 /* super-magic invisible buffer */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3141 Vbuffer_alist = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3142
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 585
diff changeset
3143 Fset_buffer (Fget_buffer_create (build_string ("*scratch*")));
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3144 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3145
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3146 init_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3147 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3148 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
3149 char *pwd;
e721339972b0 * buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents: 1501
diff changeset
3150 struct stat dotstat, pwdstat;
3463
aa78c7babb8e (init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 3329
diff changeset
3151 Lisp_Object temp;
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3152 int rc;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3153
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3154 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
3155
e721339972b0 * buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents: 1501
diff changeset
3156 /* 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
3157 when PWD is right, and may avoid a fatal error. */
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3158 if ((pwd = getenv ("PWD")) != 0 && IS_DIRECTORY_SEP (*pwd)
1563
e721339972b0 * buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents: 1501
diff changeset
3159 && 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
3160 && 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
3161 && 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
3162 && 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
3163 && 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
3164 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
3165 else if (getwd (buf) == 0)
9810
c76b3e670eb3 (init_buffer): Fix error message syntax.
Richard M. Stallman <rms@gnu.org>
parents: 9785
diff changeset
3166 fatal ("`getwd' failed: %s\n", buf);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3167
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3168 #ifndef VMS
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3169 /* Maybe this should really use some standard subroutine
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3170 whose definition is filename syntax dependent. */
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3171 rc = strlen (buf);
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3172 if (!(IS_DIRECTORY_SEP (buf[rc - 1])))
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3173 {
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3174 buf[rc] = DIRECTORY_SEP;
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3175 buf[rc + 1] = '\0';
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3176 }
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3177 #endif /* not VMS */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3178 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
3179
aa78c7babb8e (init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 3329
diff changeset
3180 temp = get_minibuffer (0);
aa78c7babb8e (init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents: 3329
diff changeset
3181 XBUFFER (temp)->directory = current_buffer->directory;
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3182 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3183
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3184 /* initialize the buffer routines */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3185 syms_of_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3186 {
2060
7eea4dfc5133 (syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents: 2043
diff changeset
3187 extern Lisp_Object Qdisabled;
7eea4dfc5133 (syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents: 2043
diff changeset
3188
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3189 staticpro (&Vbuffer_defaults);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3190 staticpro (&Vbuffer_local_symbols);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3191 staticpro (&Qfundamental_mode);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3192 staticpro (&Qmode_class);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3193 staticpro (&QSFundamental);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3194 staticpro (&Vbuffer_alist);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3195 staticpro (&Qprotected_field);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3196 staticpro (&Qpermanent_local);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3197 staticpro (&Qkill_buffer_hook);
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
3198 staticpro (&Qoverlayp);
8839
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
3199 Qevaporate = intern ("evaporate");
41981db9ad8e (Qevaporate): New symbol.
Karl Heuer <kwzh@gnu.org>
parents: 8818
diff changeset
3200 staticpro (&Qevaporate);
4213
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3201 staticpro (&Qmodification_hooks);
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3202 Qmodification_hooks = intern ("modification-hooks");
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3203 staticpro (&Qinsert_in_front_hooks);
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3204 Qinsert_in_front_hooks = intern ("insert-in-front-hooks");
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3205 staticpro (&Qinsert_behind_hooks);
616036bb2427 (Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents: 4100
diff changeset
3206 Qinsert_behind_hooks = intern ("insert-behind-hooks");
5433
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
3207 staticpro (&Qget_file_buffer);
7ac1e6f1565f Don't include syntax.h.
Richard M. Stallman <rms@gnu.org>
parents: 5247
diff changeset
3208 Qget_file_buffer = intern ("get-file-buffer");
5857
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
3209 Qpriority = intern ("priority");
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
3210 staticpro (&Qpriority);
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
3211 Qwindow = intern ("window");
03f8720af7fb (sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents: 5703
diff changeset
3212 staticpro (&Qwindow);
11693
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
3213 Qbefore_string = intern ("before-string");
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
3214 staticpro (&Qbefore_string);
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
3215 Qafter_string = intern ("after-string");
efef31f1c42d (Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents: 11659
diff changeset
3216 staticpro (&Qafter_string);
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
3217
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
3218 Qoverlayp = intern ("overlayp");
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3219
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3220 Fput (Qprotected_field, Qerror_conditions,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3221 Fcons (Qprotected_field, Fcons (Qerror, Qnil)));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3222 Fput (Qprotected_field, Qerror_message,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3223 build_string ("Attempt to modify a protected field"));
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3224
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3225 /* All these use DEFVAR_LISP_NOPRO because the slots in
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3226 buffer_defaults will all be marked via Vbuffer_defaults. */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3227
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3228 DEFVAR_LISP_NOPRO ("default-mode-line-format",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3229 &buffer_defaults.mode_line_format,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3230 "Default value of `mode-line-format' for buffers that don't override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3231 This is the same as (default-value 'mode-line-format).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3232
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3233 DEFVAR_LISP_NOPRO ("default-abbrev-mode",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3234 &buffer_defaults.abbrev_mode,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3235 "Default value of `abbrev-mode' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3236 This is the same as (default-value 'abbrev-mode).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3237
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3238 DEFVAR_LISP_NOPRO ("default-ctl-arrow",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3239 &buffer_defaults.ctl_arrow,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3240 "Default value of `ctl-arrow' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3241 This is the same as (default-value 'ctl-arrow).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3242
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3243 DEFVAR_LISP_NOPRO ("default-truncate-lines",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3244 &buffer_defaults.truncate_lines,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3245 "Default value of `truncate-lines' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3246 This is the same as (default-value 'truncate-lines).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3247
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3248 DEFVAR_LISP_NOPRO ("default-fill-column",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3249 &buffer_defaults.fill_column,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3250 "Default value of `fill-column' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3251 This is the same as (default-value 'fill-column).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3252
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3253 DEFVAR_LISP_NOPRO ("default-left-margin",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3254 &buffer_defaults.left_margin,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3255 "Default value of `left-margin' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3256 This is the same as (default-value 'left-margin).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3257
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3258 DEFVAR_LISP_NOPRO ("default-tab-width",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3259 &buffer_defaults.tab_width,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3260 "Default value of `tab-width' for buffers that do not override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3261 This is the same as (default-value 'tab-width).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3262
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3263 DEFVAR_LISP_NOPRO ("default-case-fold-search",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3264 &buffer_defaults.case_fold_search,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3265 "Default value of `case-fold-search' for buffers that don't override it.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3266 This is the same as (default-value 'case-fold-search).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3267
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3268 #ifdef DOS_NT
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3269 DEFVAR_LISP_NOPRO ("default-buffer-file-type",
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3270 &buffer_defaults.buffer_file_type,
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3271 "Default file type for buffers that do not override it.\n\
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3272 This is the same as (default-value 'buffer-file-type).\n\
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3273 The file type is nil for text, t for binary.");
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3274 #endif
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3275
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3276 DEFVAR_PER_BUFFER ("mode-line-format", &current_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
3277 Qnil, 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3278
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3279 /* This doc string is too long for cpp; cpp dies if it isn't in a comment.
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3280 But make-docfile finds it!
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3281 DEFVAR_PER_BUFFER ("mode-line-format", &current_buffer->mode_line_format,
1985
666e3f26a8d6 * buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1953
diff changeset
3282 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3283 "Template for displaying mode line for current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3284 Each buffer has its own value of this variable.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3285 Value may be a string, a symbol or a list or cons cell.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3286 For a symbol, its value is used (but it is ignored if t or nil).\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3287 A string appearing directly as the value of a symbol is processed verbatim\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3288 in that the %-constructs below are not recognized.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3289 For a list whose car is a symbol, the symbol's value is taken,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3290 and if that is non-nil, the cadr of the list is processed recursively.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3291 Otherwise, the caddr of the list (if there is one) is processed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3292 For a list whose car is a string or list, each element is processed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3293 recursively and the results are effectively concatenated.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3294 For a list whose car is an integer, the cdr of the list is processed\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3295 and padded (if the number is positive) or truncated (if negative)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3296 to the width specified by that number.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3297 A string is printed verbatim in the mode line except for %-constructs:\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3298 (%-constructs are allowed when the string is the entire mode-line-format\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3299 or when it is found in a cons-cell or a list)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3300 %b -- print buffer name. %f -- print visited file name.\n\
8125
3941618b4c2b (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8123
diff changeset
3301 %* -- print %, * or hyphen. %+ -- print *, % or hyphen.\n\
3941618b4c2b (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8123
diff changeset
3302 % means buffer is read-only and * means it is modified.\n\
3941618b4c2b (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 8123
diff changeset
3303 For a modified read-only buffer, %* gives % and %+ gives *.\n\
2578
f694fc6cdd33 (Qmode-line-format): Describe %l in the doc string.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2508
diff changeset
3304 %s -- print process status. %l -- print the current line number.\n\
5904
7f95b8e1ec44 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5873
diff changeset
3305 %p -- print percent of buffer above top of window, or Top, Bot or All.\n\
7295
3f9ea1ad1c65 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 7270
diff changeset
3306 %P -- print percent of buffer above bottom of window, perhaps plus Top,\n\
5904
7f95b8e1ec44 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 5873
diff changeset
3307 or print Bottom or All.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3308 %n -- print Narrow if appropriate.\n\
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3309 %t -- print T if files is text, B if binary.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3310 %[ -- print one [ for each recursive editing level. %] similar.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3311 %% -- print %. %- -- print infinitely many dashes.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3312 Decimal digits after the % specify field width to which to pad.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3313 */
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3314
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3315 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3316 "*Major mode for new buffers. Defaults to `fundamental-mode'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3317 nil here means use current buffer's major mode.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3318
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3319 DEFVAR_PER_BUFFER ("major-mode", &current_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
3320 make_number (Lisp_Symbol),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3321 "Symbol for current buffer's major mode.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3322
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3323 DEFVAR_PER_BUFFER ("mode-name", &current_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
3324 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3325 "Pretty name of current buffer's major mode (a string).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3326
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3327 DEFVAR_PER_BUFFER ("abbrev-mode", &current_buffer->abbrev_mode, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3328 "Non-nil turns on automatic expansion of abbrevs as they are inserted.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3329 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3330
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3331 DEFVAR_PER_BUFFER ("case-fold-search", &current_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
3332 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3333 "*Non-nil if searches should ignore case.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3334 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3335
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3336 DEFVAR_PER_BUFFER ("fill-column", &current_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
3337 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3338 "*Column beyond which automatic line-wrapping should happen.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3339 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3340
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3341 DEFVAR_PER_BUFFER ("left-margin", &current_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
3342 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3343 "*Column for the default indent-line-function to indent to.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3344 Linefeed indents to this column in Fundamental mode.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3345 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3346
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3347 DEFVAR_PER_BUFFER ("tab-width", &current_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
3348 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3349 "*Distance between tab stops (for display of tab characters), in columns.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3350 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3351
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3352 DEFVAR_PER_BUFFER ("ctl-arrow", &current_buffer->ctl_arrow, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3353 "*Non-nil means display control chars with uparrow.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3354 Nil means use backslash and octal digits.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3355 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3356 This variable does not apply to characters whose display is specified\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3357 in the current display table (if there is one).");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3358
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3359 DEFVAR_PER_BUFFER ("truncate-lines", &current_buffer->truncate_lines, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3360 "*Non-nil means do not display continuation lines;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3361 give each line of text one screen line.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3362 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3363 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3364 Note that this is overridden by the variable\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3365 `truncate-partial-width-windows' if that variable is non-nil\n\
764
bb24f1180bb6 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 739
diff changeset
3366 and this buffer is not full-frame width.");
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3367
9785
a72386110d83 (init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents: 9732
diff changeset
3368 #ifdef DOS_NT
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3369 DEFVAR_PER_BUFFER ("buffer-file-type", &current_buffer->buffer_file_type,
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3370 Qnil,
10253
4aa245b5eb83 (syms_of_buffer): Doc fix for buffer-file-type.
Richard M. Stallman <rms@gnu.org>
parents: 10210
diff changeset
3371 "Non-nil if the visited file is a binary file.\n\
4aa245b5eb83 (syms_of_buffer): Doc fix for buffer-file-type.
Richard M. Stallman <rms@gnu.org>
parents: 10210
diff changeset
3372 This variable is meaningful on MS-DOG and Windows NT.\n\
4aa245b5eb83 (syms_of_buffer): Doc fix for buffer-file-type.
Richard M. Stallman <rms@gnu.org>
parents: 10210
diff changeset
3373 On those systems, it is automatically local in every buffer.\n\
10505
4f7f9b9ff513 (syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents: 10443
diff changeset
3374 On other systems, this variable is normally always nil.");
5502
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3375 #endif
2b48fd9bc80e [MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents: 5433
diff changeset
3376
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3377 DEFVAR_PER_BUFFER ("default-directory", &current_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
3378 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3379 "Name of default directory of current buffer. Should end with slash.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3380 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3381
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3382 DEFVAR_PER_BUFFER ("auto-fill-function", &current_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
3383 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3384 "Function called (if non-nil) to perform auto-fill.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3385 It is called after self-inserting a space at a column beyond `fill-column'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3386 Each buffer has its own value of this variable.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3387 NOTE: This variable is not an ordinary hook;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3388 It may not be a list of functions.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3389
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3390 DEFVAR_PER_BUFFER ("buffer-file-name", &current_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
3391 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3392 "Name of file visited in current buffer, or nil if not visiting a file.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3393 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3394
10751
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3395 DEFVAR_PER_BUFFER ("buffer-file-truename", &current_buffer->file_truename,
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3396 make_number (Lisp_String),
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3397 "Truename of file visited in current buffer, or nil if not visiting a file.\n\
11823
51194e0d2967 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11693
diff changeset
3398 The truename of a file is calculated by `file-truename'\n\
51194e0d2967 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11693
diff changeset
3399 and then abbreviated with `abbreviate-file-name'.\n\
10751
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3400 Each buffer has its own value of this variable.");
dea8f022819d (syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents: 10668
diff changeset
3401
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3402 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name",
1041
da04b25b1759 Formatting change
Jim Blandy <jimb@redhat.com>
parents: 1038
diff changeset
3403 &current_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
3404 make_number (Lisp_String),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3405 "Name of file for auto-saving current buffer,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3406 or nil if buffer should not be auto-saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3407 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3408
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3409 DEFVAR_PER_BUFFER ("buffer-read-only", &current_buffer->read_only, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3410 "Non-nil if this buffer is read-only.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3411 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3412
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3413 DEFVAR_PER_BUFFER ("buffer-backed-up", &current_buffer->backed_up, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3414 "Non-nil if this buffer's file has been backed up.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3415 Backing up is done before the first time the file is saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3416 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3417
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3418 DEFVAR_PER_BUFFER ("buffer-saved-size", &current_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
3419 make_number (Lisp_Int),
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3420 "Length of current buffer when last read in, saved or auto-saved.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3421 0 initially.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3422 Each buffer has its own value of this variable.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3423
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3424 DEFVAR_PER_BUFFER ("selective-display", &current_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
3425 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3426 "Non-nil enables selective display:\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3427 Integer N as value means display only lines\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3428 that start with less than n columns of space.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3429 A value of t means, after a ^M, all the rest of the line is invisible.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3430 Then ^M's in the file are written into files as newlines.\n\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3431 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3432
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3433 #ifndef old
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3434 DEFVAR_PER_BUFFER ("selective-display-ellipses",
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3435 &current_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
3436 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3437 "t means display ... on previous line when a line is invisible.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3438 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3439 #endif
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3440
1001
c1ebe69206df * buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents: 764
diff changeset
3441 DEFVAR_PER_BUFFER ("overwrite-mode", &current_buffer->overwrite_mode, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3442 "Non-nil if self-insertion should replace existing text.\n\
10611
eafe5efc009b (syms_of_buffer): overwrite-mode doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10561
diff changeset
3443 The value should be one of `overwrite-mode-textual',\n\
eafe5efc009b (syms_of_buffer): overwrite-mode doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10561
diff changeset
3444 `overwrite-mode-binary', or nil.\n\
eafe5efc009b (syms_of_buffer): overwrite-mode doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10561
diff changeset
3445 If it is `overwrite-mode-textual', self-insertion still\n\
2214
e5928bec8d5d * cmds.c (overwrite_binary_mode): Deleted; this implements the
Jim Blandy <jimb@redhat.com>
parents: 2060
diff changeset
3446 inserts at the end of a line, and inserts when point is before a tab,\n\
2217
f650efceb0fb Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 2214
diff changeset
3447 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
3448 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3449 Automatically becomes buffer-local when set in any fashion.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3450
4226
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3451 #if 0 /* The doc string is too long for some compilers,
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3452 but make-docfile can find it in this comment. */
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3453 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
1038
59fa7697bb14 (syms_of_buffer): Made buffer-display-table,
Richard M. Stallman <rms@gnu.org>
parents: 1001
diff changeset
3454 Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3455 "Display table that controls display of the contents of current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3456 Automatically becomes buffer-local when set in any fashion.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3457 The display table is a vector created with `make-display-table'.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3458 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
3459 Each value should be a vector of characters or nil;\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3460 nil means display the character in the default fashion.\n\
8919
644f69fe736e Add a new element to display tables controlling side-by-side
Jim Blandy <jimb@redhat.com>
parents: 8873
diff changeset
3461 The remaining six elements control the display of\n\
2645
b0462d46afff * buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents: 2578
diff changeset
3462 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
3463 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
3464 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
3465 (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
3466 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
3467 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
3468 the decoration indicating the presence of invisible lines (element 260,\n\
8919
644f69fe736e Add a new element to display tables controlling side-by-side
Jim Blandy <jimb@redhat.com>
parents: 8873
diff changeset
3469 a vector of characters);\n\
644f69fe736e Add a new element to display tables controlling side-by-side
Jim Blandy <jimb@redhat.com>
parents: 8873
diff changeset
3470 the character used to draw the border between side-by-side windows\n\
8924
c64235231b19 (syms_of_buffer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 8919
diff changeset
3471 (element 261, a single character).\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3472 If this variable is nil, the value of `standard-display-table' is used.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3473 Each window can have its own, overriding display table.");
4226
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3474 #endif
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3475 DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
6348
f5a437637850 (buffer-display-table, buffer-undo-list): Delete docstring of second version
Karl Heuer <kwzh@gnu.org>
parents: 6205
diff changeset
3476 Qnil, 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3477
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3478 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3479 "Don't ask.");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3480 */
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
3481 DEFVAR_LISP ("before-change-function", &Vbefore_change_function,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3482 "Function to call before each text change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3483 Two arguments are passed to the function: the positions of\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3484 the beginning and end of the range of old text to be changed.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3485 \(For an insertion, the beginning and end are at the same place.)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3486 No information is given about the length of the text after the change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3487 \n\
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3488 Buffer changes made while executing the `before-change-function'\n\
7434
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3489 don't call any before-change or after-change functions.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3490 That's because these variables are temporarily set to nil.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3491 As a result, a hook function cannot straightforwardly alter the value of\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3492 these variables. See the Emacs Lisp manual for a way of\n\
7455
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
3493 accomplishing an equivalent result by using other variables.");
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3494 Vbefore_change_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3495
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3496 DEFVAR_LISP ("after-change-function", &Vafter_change_function,
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3497 "Function to call after each text change.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3498 Three arguments are passed to the function: the positions of\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3499 the beginning and end of the range of changed text,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3500 and the length of the pre-change text replaced by that range.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3501 \(For an insertion, the pre-change length is zero;\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3502 for a deletion, that length is the number of characters deleted,\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3503 and the post-change beginning and end are at the same place.)\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3504 \n\
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3505 Buffer changes made while executing the `after-change-function'\n\
7434
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3506 don't call any before-change or after-change functions.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3507 That's because these variables are temporarily set to nil.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3508 As a result, a hook function cannot straightforwardly alter the value of\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3509 these variables. See the Emacs Lisp manual for a way of\n\
7455
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
3510 accomplishing an equivalent result by using other variables.");
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3511 Vafter_change_function = Qnil;
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3512
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3513 DEFVAR_LISP ("before-change-functions", &Vbefore_change_functions,
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3514 "List of functions to call before each text change.\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3515 Two arguments are passed to each function: the positions of\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3516 the beginning and end of the range of old text to be changed.\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3517 \(For an insertion, the beginning and end are at the same place.)\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3518 No information is given about the length of the text after the change.\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3519 \n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3520 Buffer changes made while executing the `before-change-functions'\n\
7434
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3521 don't call any before-change or after-change functions.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3522 That's because these variables are temporarily set to nil.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3523 As a result, a hook function cannot straightforwardly alter the value of\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3524 these variables. See the Emacs Lisp manual for a way of\n\
7455
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
3525 accomplishing an equivalent result by using other variables.");
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3526 Vbefore_change_functions = Qnil;
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3527
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3528 DEFVAR_LISP ("after-change-functions", &Vafter_change_functions,
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3529 "List of function to call after each text change.\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3530 Three arguments are passed to each function: the positions of\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3531 the beginning and end of the range of changed text,\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3532 and the length of the pre-change text replaced by that range.\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3533 \(For an insertion, the pre-change length is zero;\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3534 for a deletion, that length is the number of characters deleted,\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3535 and the post-change beginning and end are at the same place.)\n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3536 \n\
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3537 Buffer changes made while executing the `after-change-functions'\n\
7434
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3538 don't call any before-change or after-change functions.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3539 That's because these variables are temporarily set to nil.\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3540 As a result, a hook function cannot straightforwardly alter the value of\n\
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3541 these variables. See the Emacs Lisp manual for a way of\n\
7455
35657813817c (Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents: 7434
diff changeset
3542 accomplishing an equivalent result by using other variables.");
7434
7b5d67590d57 (Qbuffer_file_type): Var deleted.
Richard M. Stallman <rms@gnu.org>
parents: 7295
diff changeset
3543
6785
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3544 Vafter_change_functions = Qnil;
121f2c5eba5e (Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 6697
diff changeset
3545
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
3546 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook,
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
3547 "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
3548 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
3549 Vfirst_change_hook = Qnil;
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
3550 Qfirst_change_hook = intern ("first-change-hook");
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1707
diff changeset
3551 staticpro (&Qfirst_change_hook);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3552
4226
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3553 #if 0 /* The doc string is too long for some compilers,
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3554 but make-docfile can find it in this comment. */
1041
da04b25b1759 Formatting change
Jim Blandy <jimb@redhat.com>
parents: 1038
diff changeset
3555 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil,
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3556 "List of undo entries in current buffer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3557 Recent changes come first; older changes follow newer.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3558 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3559 An entry (START . END) represents an insertion which begins at\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3560 position START and ends at position END.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3561 \n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3562 An entry (TEXT . POSITION) represents the deletion of the string TEXT\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3563 from (abs POSITION). If POSITION is positive, point was at the front\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3564 of the text being deleted; if negative, point was at the end.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3565 \n\
10365
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3566 An entry (t HIGH . LOW) indicates that the buffer previously had\n\
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3567 \"unmodified\" status. HIGH and LOW are the high and low 16-bit portions\n\
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3568 of the visited file's modification time, as of that time. If the\n\
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3569 modification time of the most recent save is different, this entry is\n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3570 obsolete.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3571 \n\
10365
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3572 An entry (nil PROPERTY VALUE BEG . END) indicates that a text property\n\
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3573 was modified between BEG and END. PROPERTY is the property name,\n\
3a50d7d3ae47 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 10314
diff changeset
3574 and VALUE is the old value.\n\
1952
b0ec61f76511 (syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 1909
diff changeset
3575 \n\
1985
666e3f26a8d6 * buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1953
diff changeset
3576 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
3577 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
3578 point at POSITION.\n\
666e3f26a8d6 * buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1953
diff changeset
3579 \n\
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3580 nil marks undo boundaries. The undo command treats the changes\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3581 between two undo boundaries as a single step to be undone.\n\
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3582 \n\
1985
666e3f26a8d6 * buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 1953
diff changeset
3583 If the value of the variable is t, undo information is not recorded.");
4226
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3584 #endif
7c7e33d6386d (syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4213
diff changeset
3585 DEFVAR_PER_BUFFER ("buffer-undo-list", &current_buffer->undo_list, Qnil,
6348
f5a437637850 (buffer-display-table, buffer-undo-list): Delete docstring of second version
Karl Heuer <kwzh@gnu.org>
parents: 6205
diff changeset
3586 0);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3587
2043
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3588 DEFVAR_PER_BUFFER ("mark-active", &current_buffer->mark_active, Qnil,
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3589 "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
3590 Automatically local in all buffers.");
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3591
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3592 DEFVAR_PER_BUFFER ("cache-long-line-scans", &current_buffer->cache_long_line_scans, Qnil,
9419
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3593 "Non-nil means that Emacs should use caches to handle long lines more quickly.\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3594 This variable is buffer-local, in all buffers.\n\
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3595 \n\
9419
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3596 Normally, the line-motion functions work by scanning the buffer for\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3597 newlines. Columnar operations (like move-to-column and\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3598 compute-motion) also work by scanning the buffer, summing character\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3599 widths as they go. This works well for ordinary text, but if the\n\
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3600 buffer's lines are very long (say, more than 500 characters), these\n\
9419
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3601 motion functions will take longer to execute. Emacs may also take\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3602 longer to update the display.\n\
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3603 \n\
9419
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3604 If cache-long-line-scans is non-nil, these motion functions cache the\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3605 results of their scans, and consult the cache to avoid rescanning\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3606 regions of the buffer until the text is modified. The caches are most\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3607 beneficial when they prevent the most searching---that is, when the\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3608 buffer contains long lines and large regions of characters with the\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3609 same, fixed screen width.\n\
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3610 \n\
9419
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3611 When cache-long-line-scans is non-nil, processing short lines will\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3612 become slightly slower (because of the overhead of consulting the\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3613 cache), and the caches will use memory roughly proportional to the\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3614 number of newlines and characters whose screen width varies.\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3615 \n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3616 The caches require no explicit maintenance; their accuracy is\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3617 maintained internally by the Emacs primitives. Enabling or disabling\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3618 the cache should not affect the behavior of any of the motion\n\
b429144f6ace (syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents: 9403
diff changeset
3619 functions; it should only affect their performance.");
9403
9f797989b817 * buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents: 9362
diff changeset
3620
10561
53f34c870201 (init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 10505
diff changeset
3621 DEFVAR_PER_BUFFER ("point-before-scroll", &current_buffer->point_before_scroll, Qnil,
53f34c870201 (init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 10505
diff changeset
3622 "Value of point before the last series of scroll operations, or nil.");
53f34c870201 (init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 10505
diff changeset
3623
11052
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3624 DEFVAR_PER_BUFFER ("buffer-file-format", &current_buffer->file_format, Qnil,
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3625 "List of formats to use when saving this buffer.\n\
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3626 Formats are defined by `format-alist'. This variable is\n\
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3627 set when a file is visited. Automatically local in all buffers.");
35664a2851e7 (reset_buffer): Reset file_format element too.(init_buffer_once): Define file_format flag; reset file_format.
Boris Goldowsky <boris@gnu.org>
parents: 11000
diff changeset
3628
10967
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3629 DEFVAR_PER_BUFFER ("buffer-invisibility-spec",
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3630 &current_buffer->invisibility_spec, Qnil,
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3631 "Invisibility spec of this buffer.\n\
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3632 The default is t, which means that text is invisible\n\
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3633 if it has a non-nil `invisible' property.\n\
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3634 If the value is a list, a text character is invisible if its `invisible'\n\
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3635 property is an element in that list.\n\
11112
20ff2eaa8bf8 (syms_of_buffer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 11097
diff changeset
3636 If an element is a cons cell of the form (PROP . ELLIPSIS),\n\
20ff2eaa8bf8 (syms_of_buffer): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 11097
diff changeset
3637 then characters with property value PROP are invisible,\n\
10967
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3638 and they have an ellipsis as well if ELLIPSIS is non-nil.");
b53b84b6f46d (reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents: 10916
diff changeset
3639
2043
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3640 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
3641 "*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
3642 Vtransient_mark_mode = Qnil;
a1ab3501653c (reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 2020
diff changeset
3643
3533
78b4e6241f85 (Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents: 3481
diff changeset
3644 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
3645 "*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
3646 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
3647 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
3648 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
3649 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
3650 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
3651
6051
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
3652 DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions,
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
3653 "List of functions called with no args to query before killing a buffer.");
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
3654 Vkill_buffer_query_functions = Qnil;
0b144d967f30 (Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents: 5904
diff changeset
3655
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3656 defsubr (&Sbuffer_list);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3657 defsubr (&Sget_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3658 defsubr (&Sget_file_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3659 defsubr (&Sget_buffer_create);
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3660 defsubr (&Smake_indirect_buffer);
392
dce611246f59 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 333
diff changeset
3661 defsubr (&Sgenerate_new_buffer_name);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3662 defsubr (&Sbuffer_name);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3663 /*defsubr (&Sbuffer_number);*/
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3664 defsubr (&Sbuffer_file_name);
10314
b5260fe3dfdd (Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 10253
diff changeset
3665 defsubr (&Sbuffer_base_buffer);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3666 defsubr (&Sbuffer_local_variables);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3667 defsubr (&Sbuffer_modified_p);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3668 defsubr (&Sset_buffer_modified_p);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3669 defsubr (&Sbuffer_modified_tick);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3670 defsubr (&Srename_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3671 defsubr (&Sother_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3672 defsubr (&Sbuffer_disable_undo);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3673 defsubr (&Sbuffer_enable_undo);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3674 defsubr (&Skill_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3675 defsubr (&Serase_buffer);
9732
577db538b0b6 (Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents: 9632
diff changeset
3676 defsubr (&Sset_buffer_major_mode);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3677 defsubr (&Sswitch_to_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3678 defsubr (&Spop_to_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3679 defsubr (&Scurrent_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3680 defsubr (&Sset_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3681 defsubr (&Sbarf_if_buffer_read_only);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3682 defsubr (&Sbury_buffer);
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3683 defsubr (&Skill_all_local_variables);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3684
2776
8bf3bb4c20dd * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2722
diff changeset
3685 defsubr (&Soverlayp);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3686 defsubr (&Smake_overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3687 defsubr (&Sdelete_overlay);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3688 defsubr (&Smove_overlay);
2787
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
3689 defsubr (&Soverlay_start);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
3690 defsubr (&Soverlay_end);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
3691 defsubr (&Soverlay_buffer);
995c6e665599 * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents: 2776
diff changeset
3692 defsubr (&Soverlay_properties);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3693 defsubr (&Soverlays_at);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3694 defsubr (&Snext_overlay_change);
8967
80b92977ed08 (overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents: 8924
diff changeset
3695 defsubr (&Sprevious_overlay_change);
2389
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3696 defsubr (&Soverlay_recenter);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3697 defsubr (&Soverlay_lists);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3698 defsubr (&Soverlay_get);
6048be0eedcd (init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents: 2217
diff changeset
3699 defsubr (&Soverlay_put);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3700 }
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3701
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3702 keys_of_buffer ()
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3703 {
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3704 initial_define_key (control_x_map, 'b', "switch-to-buffer");
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3705 initial_define_key (control_x_map, 'k', "kill-buffer");
5570
2c5f3537a1cc (syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents: 5502
diff changeset
3706
2c5f3537a1cc (syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents: 5502
diff changeset
3707 /* This must not be in syms_of_buffer, because Qdisabled is not
2c5f3537a1cc (syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents: 5502
diff changeset
3708 initialized when that function gets called. */
2c5f3537a1cc (syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents: 5502
diff changeset
3709 Fput (intern ("erase-buffer"), Qdisabled, Qt);
333
885bf0750dbb Initial revision
Roland McGrath <roland@gnu.org>
parents:
diff changeset
3710 }