Mercurial > emacs
annotate src/buffer.c @ 23323:0800a4f84757
(underlying_strftime):
Set the buffer to a nonzero value before calling
strftime, and check to see whether strftime has set the buffer to zero.
This lets us distinguish between an empty buffer and an error.
I'm installing this patch by hand now; it will be superseded whenever
the glibc sources are propagated back to fsf.org.
| author | Paul Eggert <eggert@twinsun.com> |
|---|---|
| date | Fri, 25 Sep 1998 21:40:23 +0000 |
| parents | eb56d7e8faa1 |
| children | e80c5f687340 |
| rev | line source |
|---|---|
| 333 | 1 /* Buffer manipulation primitives for GNU Emacs. |
| 20706 | 2 Copyright (C) 1985, 1986, 1987, 1988, 1989, 1993, 1994, 1995, 1997, 1998 |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
3 Free Software Foundation, Inc. |
| 333 | 4 |
| 5 This file is part of GNU Emacs. | |
| 6 | |
| 7 GNU Emacs is free software; you can redistribute it and/or modify | |
| 8 it under the terms of the GNU General Public License as published by | |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
9 the Free Software Foundation; either version 2, or (at your option) |
| 333 | 10 any later version. |
| 11 | |
| 12 GNU Emacs is distributed in the hope that it will be useful, | |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 GNU General Public License for more details. | |
| 16 | |
| 17 You should have received a copy of the GNU General Public License | |
| 18 along with GNU Emacs; see the file COPYING. If not, write to | |
|
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14060
diff
changeset
|
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
14060
diff
changeset
|
20 Boston, MA 02111-1307, USA. */ |
| 333 | 21 |
| 22 | |
|
1563
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/types.h> |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
24 #include <sys/stat.h> |
| 333 | 25 #include <sys/param.h> |
| 19581 | 26 #include <errno.h> |
| 27 | |
| 28 extern int errno; | |
| 333 | 29 |
| 30 #ifndef MAXPATHLEN | |
| 31 /* in 4.1, param.h fails to define this. */ | |
| 32 #define MAXPATHLEN 1024 | |
| 33 #endif /* not MAXPATHLEN */ | |
| 34 | |
|
4696
1fc792473491
Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents:
4574
diff
changeset
|
35 #include <config.h> |
| 21514 | 36 #ifdef STDC_HEADERS |
| 37 #include <stdlib.h> | |
| 38 #endif | |
| 39 #ifdef HAVE_UNISTD_H | |
| 40 #include <unistd.h> | |
| 41 #endif | |
| 333 | 42 #include "lisp.h" |
|
1308
2660a7053836
* buffer.c: #include intervals.h.
Joseph Arceneaux <jla@gnu.org>
parents:
1291
diff
changeset
|
43 #include "intervals.h" |
| 333 | 44 #include "window.h" |
| 45 #include "commands.h" | |
| 46 #include "buffer.h" | |
| 17022 | 47 #include "charset.h" |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
48 #include "region-cache.h" |
| 333 | 49 #include "indent.h" |
| 2480 | 50 #include "blockinput.h" |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
51 #include "frame.h" |
| 333 | 52 |
| 53 struct buffer *current_buffer; /* the current buffer */ | |
| 54 | |
| 55 /* First buffer in chain of all buffers (in reverse order of creation). | |
| 56 Threaded through ->next. */ | |
| 57 | |
| 58 struct buffer *all_buffers; | |
| 59 | |
| 60 /* This structure holds the default values of the buffer-local variables | |
| 61 defined with DEFVAR_PER_BUFFER, that have special slots in each buffer. | |
| 62 The default value occupies the same slot in this structure | |
| 63 as an individual buffer's value occupies in that buffer. | |
| 64 Setting the default value also goes through the alist of buffers | |
| 65 and stores into each buffer that does not say it has a local value. */ | |
| 66 | |
| 67 struct buffer buffer_defaults; | |
| 68 | |
| 69 /* A Lisp_Object pointer to the above, used for staticpro */ | |
| 70 | |
| 71 static Lisp_Object Vbuffer_defaults; | |
| 72 | |
| 73 /* This structure marks which slots in a buffer have corresponding | |
| 74 default values in buffer_defaults. | |
| 75 Each such slot has a nonzero value in this structure. | |
| 76 The value has only one nonzero bit. | |
| 77 | |
| 78 When a buffer has its own local value for a slot, | |
| 79 the bit for that slot (found in the same slot in this structure) | |
| 80 is turned on in the buffer's local_var_flags slot. | |
| 81 | |
| 82 If a slot in this structure is -1, then even though there may | |
| 83 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it; | |
| 84 and the corresponding slot in buffer_defaults is not used. | |
| 85 | |
| 86 If a slot is -2, then there is no DEFVAR_PER_BUFFER for it, | |
| 87 but there is a default value which is copied into each buffer. | |
| 88 | |
| 89 If a slot in this structure is negative, then even though there may | |
| 90 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it; | |
| 91 and the corresponding slot in buffer_defaults is not used. | |
| 92 | |
| 93 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is | |
| 94 zero, that is a bug */ | |
| 95 | |
| 96 struct buffer buffer_local_flags; | |
| 97 | |
| 98 /* This structure holds the names of symbols whose values may be | |
| 99 buffer-local. It is indexed and accessed in the same way as the above. */ | |
| 100 | |
| 101 struct buffer buffer_local_symbols; | |
| 102 /* A Lisp_Object pointer to the above, used for staticpro */ | |
| 103 static Lisp_Object Vbuffer_local_symbols; | |
| 104 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
105 /* 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
|
106 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
|
107 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
|
108 slot contains an integer, then prospective values' tags must be |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
109 equal to that integer (except nil is always allowed). |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
110 When a tag does not match, the function |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
111 buffer_slot_type_mismatch will signal an error. |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
112 |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
113 If a slot here contains -1, the corresponding variable is read-only. */ |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
114 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
|
115 |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
116 /* Flags indicating which built-in buffer-local variables |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
117 are permanent locals. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
118 static int buffer_permanent_local_flags; |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
119 |
| 333 | 120 Lisp_Object Fset_buffer (); |
| 392 | 121 void set_buffer_internal (); |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
122 void set_buffer_internal_1 (); |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
123 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
|
124 static void swap_out_buffer_local_variables (); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
125 static void reset_buffer_local_variables (); |
| 333 | 126 |
| 127 /* Alist of all buffer names vs the buffers. */ | |
| 128 /* This used to be a variable, but is no longer, | |
| 129 to prevent lossage due to user rplac'ing this alist or its elements. */ | |
| 130 Lisp_Object Vbuffer_alist; | |
| 131 | |
| 132 /* Functions to call before and after each text change. */ | |
| 133 Lisp_Object Vbefore_change_function; | |
| 134 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
|
135 Lisp_Object Vbefore_change_functions; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
136 Lisp_Object Vafter_change_functions; |
| 333 | 137 |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
138 Lisp_Object Vtransient_mark_mode; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
139 |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
140 /* 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
|
141 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
|
142 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
|
143 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
|
144 |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
145 /* 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
|
146 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
|
147 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
|
148 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
149 /* 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
|
150 Lisp_Object Vfirst_change_hook; |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
151 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
152 Lisp_Object Qfirst_change_hook; |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
153 Lisp_Object Qbefore_change_functions; |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
154 Lisp_Object Qafter_change_functions; |
| 333 | 155 |
| 156 Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local; | |
| 157 | |
| 158 Lisp_Object Qprotected_field; | |
| 159 | |
| 160 Lisp_Object QSFundamental; /* A string "Fundamental" */ | |
| 161 | |
| 162 Lisp_Object Qkill_buffer_hook; | |
| 163 | |
| 5433 | 164 Lisp_Object Qget_file_buffer; |
| 165 | |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
166 Lisp_Object Qoverlayp; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
167 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
168 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
|
169 |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
170 Lisp_Object Qmodification_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
171 Lisp_Object Qinsert_in_front_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
172 Lisp_Object Qinsert_behind_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
173 |
| 333 | 174 /* For debugging; temporary. See set_buffer_internal. */ |
| 175 /* Lisp_Object Qlisp_mode, Vcheck_symbol; */ | |
| 176 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
177 void |
| 333 | 178 nsberror (spec) |
| 179 Lisp_Object spec; | |
| 180 { | |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
181 if (STRINGP (spec)) |
| 333 | 182 error ("No buffer named %s", XSTRING (spec)->data); |
| 183 error ("Invalid buffer argument"); | |
| 184 } | |
| 185 | |
|
14506
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
186 DEFUN ("buffer-live-p", Fbuffer_live_p, Sbuffer_live_p, 1, 1, 0, |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
187 "Return non-nil if OBJECT is a buffer which has not been killed.\n\ |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
188 Value is nil if OBJECT is not a buffer or if it has been killed.") |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
189 (object) |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
190 Lisp_Object object; |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
191 { |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
192 return ((BUFFERP (object) && ! NILP (XBUFFER (object)->name)) |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
193 ? Qt : Qnil); |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
194 } |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
195 |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
196 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0, |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
197 "Return a list of all existing live buffers.\n\ |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
198 If the optional arg FRAME is a frame, we return that frame's buffer list.") |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
199 (frame) |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
200 Lisp_Object frame; |
| 333 | 201 { |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
202 Lisp_Object framelist, general; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
203 general = Fmapcar (Qcdr, Vbuffer_alist); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
204 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
205 if (FRAMEP (frame)) |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
206 { |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
207 Lisp_Object tail; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
208 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
209 CHECK_FRAME (frame, 1); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
210 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
211 framelist = Fcopy_sequence (XFRAME (frame)->buffer_list); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
212 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
213 /* Remove from GENERAL any buffer that duplicates one in FRAMELIST. */ |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
214 tail = framelist; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
215 while (! NILP (tail)) |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
216 { |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
217 general = Fdelq (XCONS (tail)->car, general); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
218 tail = XCONS (tail)->cdr; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
219 } |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
220 return nconc2 (framelist, general); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
221 } |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
222 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
223 return general; |
| 333 | 224 } |
| 225 | |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
226 /* 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
|
227 (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
|
228 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
|
229 |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
230 static Lisp_Object |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
231 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
|
232 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
|
233 Lisp_Object list; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
234 { |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
235 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
|
236 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
|
237 { |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
238 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
|
239 elt = Fcar (tail); |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
240 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
|
241 if (!NILP (tem)) |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
242 return elt; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
243 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
244 return Qnil; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
245 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
246 |
| 333 | 247 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0, |
| 248 "Return the buffer named NAME (a string).\n\ | |
| 249 If there is no live buffer named NAME, return nil.\n\ | |
| 250 NAME may also be a buffer; if so, the value is that buffer.") | |
| 251 (name) | |
| 252 register Lisp_Object name; | |
| 253 { | |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
254 if (BUFFERP (name)) |
| 333 | 255 return name; |
| 256 CHECK_STRING (name, 0); | |
| 257 | |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
258 return Fcdr (assoc_ignore_text_properties (name, Vbuffer_alist)); |
| 333 | 259 } |
| 260 | |
| 261 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0, | |
| 262 "Return the buffer visiting file FILENAME (a string).\n\ | |
| 6169 | 263 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
|
264 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
|
265 See also `find-buffer-visiting'.") |
| 333 | 266 (filename) |
| 267 register Lisp_Object filename; | |
| 268 { | |
| 269 register Lisp_Object tail, buf, tem; | |
| 5433 | 270 Lisp_Object handler; |
| 271 | |
| 333 | 272 CHECK_STRING (filename, 0); |
| 273 filename = Fexpand_file_name (filename, Qnil); | |
| 274 | |
| 5433 | 275 /* If the file name has special constructs in it, |
| 276 call the corresponding file handler. */ | |
|
7028
6915bf781a38
Pass operation to Ffind_file_name_handler.
Karl Heuer <kwzh@gnu.org>
parents:
6785
diff
changeset
|
277 handler = Ffind_file_name_handler (filename, Qget_file_buffer); |
| 5433 | 278 if (!NILP (handler)) |
| 279 return call2 (handler, Qget_file_buffer, filename); | |
| 280 | |
| 333 | 281 for (tail = Vbuffer_alist; CONSP (tail); tail = XCONS (tail)->cdr) |
| 282 { | |
| 283 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
|
284 if (!BUFFERP (buf)) continue; |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
285 if (!STRINGP (XBUFFER (buf)->filename)) continue; |
| 333 | 286 tem = Fstring_equal (XBUFFER (buf)->filename, filename); |
| 485 | 287 if (!NILP (tem)) |
| 333 | 288 return buf; |
| 289 } | |
| 290 return Qnil; | |
| 291 } | |
| 292 | |
|
12810
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
293 Lisp_Object |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
294 get_truename_buffer (filename) |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
295 register Lisp_Object filename; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
296 { |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
297 register Lisp_Object tail, buf, tem; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
298 |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
299 for (tail = Vbuffer_alist; CONSP (tail); tail = XCONS (tail)->cdr) |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
300 { |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
301 buf = Fcdr (XCONS (tail)->car); |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
302 if (!BUFFERP (buf)) continue; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
303 if (!STRINGP (XBUFFER (buf)->file_truename)) continue; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
304 tem = Fstring_equal (XBUFFER (buf)->file_truename, filename); |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
305 if (!NILP (tem)) |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
306 return buf; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
307 } |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
308 return Qnil; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
309 } |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
310 |
| 333 | 311 /* Incremented for each buffer created, to assign the buffer number. */ |
| 312 int buffer_count; | |
| 313 | |
| 314 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0, | |
| 315 "Return the buffer named NAME, or create such a buffer and return it.\n\ | |
| 316 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
|
317 If NAME starts with a space, the new buffer does not keep undo information.\n\ |
| 333 | 318 If NAME is a buffer instead of a string, then it is the value returned.\n\ |
| 319 The value is never nil.") | |
| 320 (name) | |
| 321 register Lisp_Object name; | |
| 322 { | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
323 register Lisp_Object buf; |
| 333 | 324 register struct buffer *b; |
| 325 | |
| 326 buf = Fget_buffer (name); | |
| 485 | 327 if (!NILP (buf)) |
| 333 | 328 return buf; |
| 329 | |
|
6697
28e36f59e856
(Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents:
6675
diff
changeset
|
330 if (XSTRING (name)->size == 0) |
|
28e36f59e856
(Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents:
6675
diff
changeset
|
331 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
|
332 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
333 b = (struct buffer *) xmalloc (sizeof (struct buffer)); |
| 333 | 334 |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
335 b->size = sizeof (struct buffer) / sizeof (EMACS_INT); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
336 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
337 /* 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
|
338 b->text = &b->own_text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
339 b->base_buffer = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
340 |
| 333 | 341 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
|
342 BLOCK_INPUT; |
| 17022 | 343 /* We allocate extra 1-byte at the tail and keep it always '\0' for |
| 344 anchoring a search. */ | |
| 345 BUFFER_ALLOC (BUF_BEG_ADDR (b), (BUF_GAP_SIZE (b) + 1)); | |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
346 UNBLOCK_INPUT; |
| 333 | 347 if (! BUF_BEG_ADDR (b)) |
|
10668
acbd9fab366a
(Fget_buffer_create): Call buffer_memory_full.
Richard M. Stallman <rms@gnu.org>
parents:
10611
diff
changeset
|
348 buffer_memory_full (); |
| 333 | 349 |
| 350 BUF_PT (b) = 1; | |
| 351 BUF_GPT (b) = 1; | |
| 352 BUF_BEGV (b) = 1; | |
| 353 BUF_ZV (b) = 1; | |
| 354 BUF_Z (b) = 1; | |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
355 BUF_PT_BYTE (b) = 1; |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
356 BUF_GPT_BYTE (b) = 1; |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
357 BUF_BEGV_BYTE (b) = 1; |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
358 BUF_ZV_BYTE (b) = 1; |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
359 BUF_Z_BYTE (b) = 1; |
| 333 | 360 BUF_MODIFF (b) = 1; |
|
16213
3b8851bebc76
(Fget_buffer_create): Initialize BUF_OVERLAY_MODIFF.
Richard M. Stallman <rms@gnu.org>
parents:
16193
diff
changeset
|
361 BUF_OVERLAY_MODIFF (b) = 1; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
362 BUF_SAVE_MODIFF (b) = 1; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
363 BUF_INTERVALS (b) = 0; |
| 17022 | 364 *(BUF_GPT_ADDR (b)) = *(BUF_Z_ADDR (b)) = 0; /* Put an anchor '\0'. */ |
| 333 | 365 |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
366 b->newline_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
367 b->width_run_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
368 b->width_table = Qnil; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
369 |
| 333 | 370 /* Put this on the chain of all buffers including killed ones. */ |
| 371 b->next = all_buffers; | |
| 372 all_buffers = b; | |
| 373 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
374 /* An ordinary buffer normally doesn't need markers |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
375 to handle BEGV and ZV. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
376 b->pt_marker = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
377 b->begv_marker = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
378 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
|
379 |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
380 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
|
381 INITIALIZE_INTERVAL (XSTRING (name), NULL_INTERVAL); |
| 333 | 382 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
|
383 |
| 333 | 384 if (XSTRING (name)->data[0] != ' ') |
| 385 b->undo_list = Qnil; | |
| 386 else | |
| 387 b->undo_list = Qt; | |
| 388 | |
| 389 reset_buffer (b); | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
390 reset_buffer_local_variables (b, 1); |
| 333 | 391 |
| 392 /* 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
|
393 XSETBUFFER (buf, b); |
| 333 | 394 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil)); |
| 395 | |
| 396 b->mark = Fmake_marker (); | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
397 BUF_MARKERS (b) = Qnil; |
| 333 | 398 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
|
399 return buf; |
| 333 | 400 } |
| 401 | |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
402 DEFUN ("make-indirect-buffer", 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
|
403 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
404 "Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.\n\ |
|
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
405 BASE-BUFFER should be an existing buffer (or buffer name).\n\ |
|
11000
8482ccc01ec7
(Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents:
10967
diff
changeset
|
406 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
|
407 (base_buffer, name) |
|
8482ccc01ec7
(Fmake_indirect_buffer): Invert the arguments.
Richard M. Stallman <rms@gnu.org>
parents:
10967
diff
changeset
|
408 register Lisp_Object base_buffer, name; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
409 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
410 register Lisp_Object buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
411 register struct buffer *b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
412 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
413 buf = Fget_buffer (name); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
414 if (!NILP (buf)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
415 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
|
416 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
417 base_buffer = Fget_buffer (base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
418 if (NILP (base_buffer)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
419 error ("No such buffer: `%s'", |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
420 XSTRING (XBUFFER (base_buffer)->name)->data); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
421 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
422 if (XSTRING (name)->size == 0) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
423 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
|
424 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
425 b = (struct buffer *) xmalloc (sizeof (struct buffer)); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
426 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
427 b->size = sizeof (struct buffer) / sizeof (EMACS_INT); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
428 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
429 if (XBUFFER (base_buffer)->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
430 b->base_buffer = XBUFFER (base_buffer)->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
431 else |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
432 b->base_buffer = XBUFFER (base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
433 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
434 /* Use the base buffer's text object. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
435 b->text = b->base_buffer->text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
436 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
437 BUF_BEGV (b) = BUF_BEGV (b->base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
438 BUF_ZV (b) = BUF_ZV (b->base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
439 BUF_PT (b) = BUF_PT (b->base_buffer); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
440 BUF_BEGV_BYTE (b) = BUF_BEGV_BYTE (b->base_buffer); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
441 BUF_ZV_BYTE (b) = BUF_ZV_BYTE (b->base_buffer); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
442 BUF_PT_BYTE (b) = BUF_PT_BYTE (b->base_buffer); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
443 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
444 b->newline_cache = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
445 b->width_run_cache = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
446 b->width_table = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
447 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
448 /* 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
|
449 b->next = all_buffers; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
450 all_buffers = b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
451 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
452 name = Fcopy_sequence (name); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
453 INITIALIZE_INTERVAL (XSTRING (name), NULL_INTERVAL); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
454 b->name = name; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
455 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
456 reset_buffer (b); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
457 reset_buffer_local_variables (b, 1); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
458 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
459 /* 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
|
460 XSETBUFFER (buf, b); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
461 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
|
462 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
463 b->mark = Fmake_marker (); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
464 b->name = name; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
465 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
466 /* 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
|
467 if (NILP (b->base_buffer->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
468 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
469 b->base_buffer->pt_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
470 set_marker_both (b->base_buffer->pt_marker, base_buffer, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
471 BUF_PT (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
472 BUF_PT_BYTE (b->base_buffer)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
473 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
474 if (NILP (b->base_buffer->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
475 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
476 b->base_buffer->begv_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
477 set_marker_both (b->base_buffer->begv_marker, base_buffer, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
478 BUF_BEGV (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
479 BUF_BEGV_BYTE (b->base_buffer)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
480 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
481 if (NILP (b->base_buffer->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
482 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
483 b->base_buffer->zv_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
484 set_marker_both (b->base_buffer->zv_marker, base_buffer, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
485 BUF_ZV (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
486 BUF_ZV_BYTE (b->base_buffer)); |
|
12998
404ae27d5148
(Fmake_indirect_buffer): Set the insertion_type of the zv_marker markers to 1.
Richard M. Stallman <rms@gnu.org>
parents:
12810
diff
changeset
|
487 XMARKER (b->base_buffer->zv_marker)->insertion_type = 1; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
488 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
489 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
490 /* Give the indirect buffer markers for its narrowing. */ |
|
13114
c521a85eaafd
(Fmake_indirect_buffer): Was taking marker positions
Richard M. Stallman <rms@gnu.org>
parents:
13110
diff
changeset
|
491 b->pt_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
492 set_marker_both (b->pt_marker, buf, BUF_PT (b), BUF_PT_BYTE (b)); |
|
13114
c521a85eaafd
(Fmake_indirect_buffer): Was taking marker positions
Richard M. Stallman <rms@gnu.org>
parents:
13110
diff
changeset
|
493 b->begv_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
494 set_marker_both (b->begv_marker, buf, BUF_BEGV (b), BUF_BEGV_BYTE (b)); |
|
13114
c521a85eaafd
(Fmake_indirect_buffer): Was taking marker positions
Richard M. Stallman <rms@gnu.org>
parents:
13110
diff
changeset
|
495 b->zv_marker = Fmake_marker (); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
496 set_marker_both (b->zv_marker, buf, BUF_ZV (b), BUF_ZV_BYTE (b)); |
|
12998
404ae27d5148
(Fmake_indirect_buffer): Set the insertion_type of the zv_marker markers to 1.
Richard M. Stallman <rms@gnu.org>
parents:
12810
diff
changeset
|
497 XMARKER (b->zv_marker)->insertion_type = 1; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
498 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
499 return buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
500 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
501 |
|
8873
b58ea8cae183
(reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents:
8839
diff
changeset
|
502 /* 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
|
503 and local variables. */ |
| 333 | 504 |
| 505 void | |
| 506 reset_buffer (b) | |
| 507 register struct buffer *b; | |
| 508 { | |
| 509 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
|
510 b->file_truename = Qnil; |
| 333 | 511 b->directory = (current_buffer) ? current_buffer->directory : Qnil; |
| 512 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
|
513 XSETFASTINT (b->save_length, 0); |
| 333 | 514 b->last_window_start = 1; |
|
17566
7ed40081342f
(reset_buffer): Initialize clip_changed field.
Richard M. Stallman <rms@gnu.org>
parents:
17238
diff
changeset
|
515 /* It is more conservative to start out "changed" than "unchanged". */ |
|
7ed40081342f
(reset_buffer): Initialize clip_changed field.
Richard M. Stallman <rms@gnu.org>
parents:
17238
diff
changeset
|
516 b->clip_changed = 1; |
| 333 | 517 b->backed_up = Qnil; |
| 518 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
|
519 b->auto_save_failure_time = -1; |
| 333 | 520 b->auto_save_file_name = Qnil; |
| 521 b->read_only = Qnil; | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
522 b->overlays_before = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
523 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
|
524 XSETFASTINT (b->overlay_center, 1); |
|
3242
f873e6b9af52
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3226
diff
changeset
|
525 b->mark_active = Qnil; |
|
10561
53f34c870201
(init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
10505
diff
changeset
|
526 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
|
527 b->file_format = Qnil; |
|
16067
5c9f298c9875
(reset_buffer): Initialize last_selected_window slot.
Richard M. Stallman <rms@gnu.org>
parents:
16051
diff
changeset
|
528 b->last_selected_window = Qnil; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
529 XSETINT (b->display_count, 0); |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
530 b->display_time = Qnil; |
|
13263
b135b01ba0e2
(reset_buffer): Initialize extra1, extra2 and extra3 slots.
Richard M. Stallman <rms@gnu.org>
parents:
13262
diff
changeset
|
531 b->extra2 = Qnil; |
|
b135b01ba0e2
(reset_buffer): Initialize extra1, extra2 and extra3 slots.
Richard M. Stallman <rms@gnu.org>
parents:
13262
diff
changeset
|
532 b->extra3 = Qnil; |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
533 b->enable_multibyte_characters = buffer_defaults.enable_multibyte_characters; |
| 333 | 534 } |
| 535 | |
|
8873
b58ea8cae183
(reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents:
8839
diff
changeset
|
536 /* 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
|
537 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
|
538 it does not treat permanent locals consistently. |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
539 Instead, use Fkill_all_local_variables. |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
540 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
541 If PERMANENT_TOO is 1, then we reset permanent built-in |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
542 buffer-local variables. If PERMANENT_TOO is 0, |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
543 we preserve those. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
544 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
545 static void |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
546 reset_buffer_local_variables (b, permanent_too) |
| 333 | 547 register struct buffer *b; |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
548 int permanent_too; |
| 333 | 549 { |
| 550 register int offset; | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
551 int dont_reset; |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
552 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
553 /* Decide which built-in local variables to reset. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
554 if (permanent_too) |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
555 dont_reset = 0; |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
556 else |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
557 dont_reset = buffer_permanent_local_flags; |
| 333 | 558 |
| 559 /* Reset the major mode to Fundamental, together with all the | |
| 560 things that depend on the major mode. | |
| 561 default-major-mode is handled at a higher level. | |
| 562 We ignore it here. */ | |
| 563 b->major_mode = Qfundamental_mode; | |
| 564 b->keymap = Qnil; | |
| 565 b->abbrev_table = Vfundamental_mode_abbrev_table; | |
| 566 b->mode_name = QSFundamental; | |
| 567 b->minor_modes = Qnil; | |
|
13270
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
568 |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
569 /* If the standard case table has been altered and invalidated, |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
570 fix up its insides first. */ |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
571 if (! (CHAR_TABLE_P (XCHAR_TABLE (Vascii_downcase_table)->extras[0]) |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
572 && CHAR_TABLE_P (XCHAR_TABLE (Vascii_downcase_table)->extras[1]) |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
573 && CHAR_TABLE_P (XCHAR_TABLE (Vascii_downcase_table)->extras[2]))) |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
574 Fset_standard_case_table (Vascii_downcase_table); |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
575 |
| 333 | 576 b->downcase_table = Vascii_downcase_table; |
|
13240
f6e51f3f092a
(reset_buffer_local_variables): Init case_table slots the new way.
Richard M. Stallman <rms@gnu.org>
parents:
13175
diff
changeset
|
577 b->upcase_table = XCHAR_TABLE (Vascii_downcase_table)->extras[0]; |
|
f6e51f3f092a
(reset_buffer_local_variables): Init case_table slots the new way.
Richard M. Stallman <rms@gnu.org>
parents:
13175
diff
changeset
|
578 b->case_canon_table = XCHAR_TABLE (Vascii_downcase_table)->extras[1]; |
|
f6e51f3f092a
(reset_buffer_local_variables): Init case_table slots the new way.
Richard M. Stallman <rms@gnu.org>
parents:
13175
diff
changeset
|
579 b->case_eqv_table = XCHAR_TABLE (Vascii_downcase_table)->extras[2]; |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
580 b->invisibility_spec = Qt; |
|
15786
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
581 #ifndef DOS_NT |
|
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
582 b->buffer_file_type = Qnil; |
|
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
583 #endif |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
584 |
| 333 | 585 #if 0 |
| 586 b->sort_table = XSTRING (Vascii_sort_table); | |
| 587 b->folding_sort_table = XSTRING (Vascii_folding_sort_table); | |
| 588 #endif /* 0 */ | |
| 589 | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
590 /* Reset all (or most) per-buffer variables to their defaults. */ |
| 333 | 591 b->local_var_alist = Qnil; |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
592 b->local_var_flags &= dont_reset; |
| 333 | 593 |
| 594 /* For each slot that has a default value, | |
| 595 copy that into the slot. */ | |
| 596 | |
| 597 for (offset = (char *)&buffer_local_flags.name - (char *)&buffer_local_flags; | |
| 598 offset < sizeof (struct buffer); | |
|
8818
0996472bb39d
(reset_buffer_local_variables, Fbuffer_local_variables)
Richard M. Stallman <rms@gnu.org>
parents:
8599
diff
changeset
|
599 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
|
600 { |
|
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
601 int flag = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags)); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
602 if ((flag > 0 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
603 /* Don't reset a permanent local. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
604 && ! (dont_reset & flag)) |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
605 || flag == -2) |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
606 *(Lisp_Object *)(offset + (char *)b) |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
607 = *(Lisp_Object *)(offset + (char *)&buffer_defaults); |
|
9362
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
608 } |
| 333 | 609 } |
| 610 | |
| 392 | 611 /* We split this away from generate-new-buffer, because rename-buffer |
| 612 and set-visited-file-name ought to be able to use this to really | |
| 613 rename the buffer properly. */ | |
| 614 | |
| 615 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
|
616 1, 2, 0, |
| 392 | 617 "Return a string that is the name of no existing buffer based on NAME.\n\ |
| 618 If there is no live buffer named NAME, then return NAME.\n\ | |
| 333 | 619 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
|
620 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
|
621 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
|
622 \(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
|
623 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
|
624 (name, ignore) |
|
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
625 register Lisp_Object name, ignore; |
| 333 | 626 { |
| 627 register Lisp_Object gentemp, tem; | |
| 628 int count; | |
| 629 char number[10]; | |
| 630 | |
| 631 CHECK_STRING (name, 0); | |
| 632 | |
| 633 tem = Fget_buffer (name); | |
| 485 | 634 if (NILP (tem)) |
| 392 | 635 return name; |
| 333 | 636 |
| 637 count = 1; | |
| 638 while (1) | |
| 639 { | |
| 640 sprintf (number, "<%d>", ++count); | |
| 641 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
|
642 tem = Fstring_equal (gentemp, ignore); |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
643 if (!NILP (tem)) |
|
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
644 return gentemp; |
| 333 | 645 tem = Fget_buffer (gentemp); |
| 485 | 646 if (NILP (tem)) |
| 392 | 647 return gentemp; |
| 333 | 648 } |
| 649 } | |
| 650 | |
| 651 | |
| 652 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0, | |
| 653 "Return the name of BUFFER, as a string.\n\ | |
| 392 | 654 With no argument or nil as argument, return the name of the current buffer.") |
| 333 | 655 (buffer) |
| 656 register Lisp_Object buffer; | |
| 657 { | |
| 485 | 658 if (NILP (buffer)) |
| 333 | 659 return current_buffer->name; |
| 660 CHECK_BUFFER (buffer, 0); | |
| 661 return XBUFFER (buffer)->name; | |
| 662 } | |
| 663 | |
| 664 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0, | |
| 665 "Return name of file BUFFER is visiting, or nil if none.\n\ | |
| 666 No argument or nil as argument means use the current buffer.") | |
| 667 (buffer) | |
| 668 register Lisp_Object buffer; | |
| 669 { | |
| 485 | 670 if (NILP (buffer)) |
| 333 | 671 return current_buffer->filename; |
| 672 CHECK_BUFFER (buffer, 0); | |
| 673 return XBUFFER (buffer)->filename; | |
| 674 } | |
| 675 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
676 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
|
677 0, 1, 0, |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
678 "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
|
679 If BUFFER is not indirect, return nil.") |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
680 (buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
681 register Lisp_Object buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
682 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
683 struct buffer *base; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
684 Lisp_Object base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
685 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
686 if (NILP (buffer)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
687 base = current_buffer->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
688 else |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
689 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
690 CHECK_BUFFER (buffer, 0); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
691 base = XBUFFER (buffer)->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
692 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
693 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
694 if (! base) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
695 return Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
696 XSETBUFFER (base_buffer, base); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
697 return base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
698 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
699 |
| 333 | 700 DEFUN ("buffer-local-variables", Fbuffer_local_variables, |
| 701 Sbuffer_local_variables, 0, 1, 0, | |
| 702 "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
|
703 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
|
704 For a symbol that is locally unbound, just the symbol appears in the value.\n\ |
| 333 | 705 Note that storing new VALUEs in these elements doesn't change the variables.\n\ |
| 706 No argument or nil as argument means use current buffer as BUFFER.") | |
| 707 (buffer) | |
| 708 register Lisp_Object buffer; | |
| 709 { | |
| 710 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
|
711 register Lisp_Object result; |
| 333 | 712 |
| 485 | 713 if (NILP (buffer)) |
| 333 | 714 buf = current_buffer; |
| 715 else | |
| 716 { | |
| 717 CHECK_BUFFER (buffer, 0); | |
| 718 buf = XBUFFER (buffer); | |
| 719 } | |
| 720 | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
721 result = Qnil; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
722 |
| 333 | 723 { |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
724 register Lisp_Object tail; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
725 for (tail = buf->local_var_alist; CONSP (tail); tail = XCONS (tail)->cdr) |
| 333 | 726 { |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
727 Lisp_Object val, elt; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
728 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
729 elt = XCONS (tail)->car; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
730 |
|
10505
4f7f9b9ff513
(syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents:
10443
diff
changeset
|
731 /* 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
|
732 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
|
733 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
|
734 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
|
735 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
|
736 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
|
737 /* 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
|
738 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
|
739 val = XCONS (elt)->cdr; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
740 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
741 /* 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
|
742 if (EQ (val, Qunbound)) |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
743 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
|
744 /* 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
|
745 else |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
746 result = Fcons (Fcons (XCONS (elt)->car, val), result); |
| 333 | 747 } |
| 748 } | |
| 749 | |
| 750 /* Add on all the variables stored in special slots. */ | |
| 751 { | |
| 752 register int offset, mask; | |
| 753 | |
| 754 for (offset = (char *)&buffer_local_symbols.name - (char *)&buffer_local_symbols; | |
| 755 offset < sizeof (struct buffer); | |
|
8818
0996472bb39d
(reset_buffer_local_variables, Fbuffer_local_variables)
Richard M. Stallman <rms@gnu.org>
parents:
8599
diff
changeset
|
756 offset += (sizeof (EMACS_INT))) /* sizeof EMACS_INT == sizeof Lisp_Object */ |
| 333 | 757 { |
|
9362
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
758 mask = XINT (*(Lisp_Object *)(offset + (char *)&buffer_local_flags)); |
| 333 | 759 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
|
760 if (SYMBOLP (*(Lisp_Object *)(offset |
|
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
761 + (char *)&buffer_local_symbols))) |
|
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
762 result = Fcons (Fcons (*((Lisp_Object *) |
|
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
763 (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
|
764 *(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
|
765 result); |
| 333 | 766 } |
| 767 } | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
768 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
769 return result; |
| 333 | 770 } |
| 771 | |
| 772 | |
| 773 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p, | |
| 774 0, 1, 0, | |
| 775 "Return t if BUFFER was modified since its file was last read or saved.\n\ | |
| 776 No argument or nil as argument means use current buffer as BUFFER.") | |
| 777 (buffer) | |
| 778 register Lisp_Object buffer; | |
| 779 { | |
| 780 register struct buffer *buf; | |
| 485 | 781 if (NILP (buffer)) |
| 333 | 782 buf = current_buffer; |
| 783 else | |
| 784 { | |
| 785 CHECK_BUFFER (buffer, 0); | |
| 786 buf = XBUFFER (buffer); | |
| 787 } | |
| 788 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
789 return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil; |
| 333 | 790 } |
| 791 | |
| 792 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p, | |
| 793 1, 1, 0, | |
| 794 "Mark current buffer as modified or unmodified according to FLAG.\n\ | |
| 795 A non-nil FLAG means mark the buffer modified.") | |
| 796 (flag) | |
| 797 register Lisp_Object flag; | |
| 798 { | |
| 799 register int already; | |
| 800 register Lisp_Object fn; | |
| 801 | |
| 802 #ifdef CLASH_DETECTION | |
| 803 /* If buffer becoming modified, lock the file. | |
| 804 If buffer becoming unmodified, unlock the file. */ | |
| 805 | |
|
11659
f9b6e65774e7
(Fset_buffer_modified_p): Use the truename for locking.
Richard M. Stallman <rms@gnu.org>
parents:
11473
diff
changeset
|
806 fn = current_buffer->file_truename; |
| 485 | 807 if (!NILP (fn)) |
| 333 | 808 { |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
809 already = SAVE_MODIFF < MODIFF; |
| 485 | 810 if (!already && !NILP (flag)) |
| 333 | 811 lock_file (fn); |
| 485 | 812 else if (already && NILP (flag)) |
| 333 | 813 unlock_file (fn); |
| 814 } | |
| 815 #endif /* CLASH_DETECTION */ | |
| 816 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
817 SAVE_MODIFF = NILP (flag) ? MODIFF : 0; |
| 333 | 818 update_mode_lines++; |
| 819 return flag; | |
| 820 } | |
| 821 | |
| 822 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick, | |
| 823 0, 1, 0, | |
| 824 "Return BUFFER's tick counter, incremented for each change in text.\n\ | |
| 825 Each buffer has a tick counter which is incremented each time the text in\n\ | |
| 826 that buffer is changed. It wraps around occasionally.\n\ | |
| 827 No argument or nil as argument means use current buffer as BUFFER.") | |
| 828 (buffer) | |
| 829 register Lisp_Object buffer; | |
| 830 { | |
| 831 register struct buffer *buf; | |
| 485 | 832 if (NILP (buffer)) |
| 333 | 833 buf = current_buffer; |
| 834 else | |
| 835 { | |
| 836 CHECK_BUFFER (buffer, 0); | |
| 837 buf = XBUFFER (buffer); | |
| 838 } | |
| 839 | |
| 840 return make_number (BUF_MODIFF (buf)); | |
| 841 } | |
| 842 | |
| 392 | 843 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
|
844 "sRename buffer (to new name): \nP", |
| 333 | 845 "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
|
846 If second arg UNIQUE is nil or omitted, it is an error if a\n\ |
| 392 | 847 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
|
848 If UNIQUE is non-nil, come up with a new name using\n\ |
| 392 | 849 `generate-new-buffer-name'.\n\ |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
850 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
|
851 We return the name we actually gave the buffer.\n\ |
| 333 | 852 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
|
853 (newname, unique) |
|
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
854 register Lisp_Object newname, unique; |
| 333 | 855 { |
| 856 register Lisp_Object tem, buf; | |
| 857 | |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
858 CHECK_STRING (newname, 0); |
|
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
859 |
|
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
860 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
|
861 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
|
862 |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
863 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
|
864 /* 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
|
865 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
|
866 It makes UNIQUE equivalent to |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
867 (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
|
868 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
|
869 return current_buffer->name; |
| 485 | 870 if (!NILP (tem)) |
| 392 | 871 { |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
872 if (!NILP (unique)) |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
873 newname = Fgenerate_new_buffer_name (newname, current_buffer->name); |
| 392 | 874 else |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
875 error ("Buffer name `%s' is in use", XSTRING (newname)->data); |
| 392 | 876 } |
| 333 | 877 |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
878 current_buffer->name = newname; |
|
1707
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
879 |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
880 /* 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
|
881 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
|
882 update_mode_lines++; |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
883 |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
884 XSETBUFFER (buf, current_buffer); |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
885 Fsetcar (Frassq (buf, Vbuffer_alist), newname); |
|
8599
cf3233d70e94
(Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents:
8550
diff
changeset
|
886 if (NILP (current_buffer->filename) |
|
cf3233d70e94
(Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents:
8550
diff
changeset
|
887 && !NILP (current_buffer->auto_save_file_name)) |
| 333 | 888 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
|
889 /* 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
|
890 return current_buffer->name; |
| 333 | 891 } |
| 892 | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
893 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0, |
| 333 | 894 "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
|
895 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
|
896 unless optional second argument VISIBLE-OK is non-nil.\n\ |
|
22191
c07c0604d95d
(Fother_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22189
diff
changeset
|
897 If the optional third argument FRAME is non-nil, use that frame's\n\ |
|
c07c0604d95d
(Fother_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22189
diff
changeset
|
898 buffer list instead of the selected frame's buffer list.\n\ |
| 333 | 899 If no other buffer exists, the buffer `*scratch*' is returned.\n\ |
| 900 If BUFFER is omitted or nil, some interesting buffer is returned.") | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
901 (buffer, visible_ok, frame) |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
902 register Lisp_Object buffer, visible_ok, frame; |
| 333 | 903 { |
|
14226
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
904 Lisp_Object Fset_buffer_major_mode (); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
905 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons; |
| 333 | 906 notsogood = Qnil; |
| 907 | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
908 if (NILP (frame)) |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
909 frame = Fselected_frame (); |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
910 |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
911 tail = Vbuffer_alist; |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
912 pred = frame_buffer_predicate (frame); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
913 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
914 /* Consider buffers that have been seen in the selected frame |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
915 before other buffers. */ |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
916 |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
917 tem = frame_buffer_list (frame); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
918 add_ons = Qnil; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
919 while (CONSP (tem)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
920 { |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
921 if (BUFFERP (XCONS (tem)->car)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
922 add_ons = Fcons (Fcons (Qnil, XCONS (tem)->car), add_ons); |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
923 tem = XCONS (tem)->cdr; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
924 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
925 tail = nconc2 (Fnreverse (add_ons), tail); |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
926 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
927 for (; !NILP (tail); tail = Fcdr (tail)) |
| 333 | 928 { |
| 929 buf = Fcdr (Fcar (tail)); | |
| 930 if (EQ (buf, buffer)) | |
| 931 continue; | |
| 932 if (XSTRING (XBUFFER (buf)->name)->data[0] == ' ') | |
| 933 continue; | |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
934 /* 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
|
935 disregard buffers that don't fit the predicate. */ |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
936 if (!NILP (pred)) |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
937 { |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
938 tem = call1 (pred, buf); |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
939 if (NILP (tem)) |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
940 continue; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
941 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
942 |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
943 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
|
944 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
|
945 else |
|
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
946 tem = Qnil; |
| 485 | 947 if (NILP (tem)) |
| 333 | 948 return buf; |
| 485 | 949 if (NILP (notsogood)) |
| 333 | 950 notsogood = buf; |
| 951 } | |
| 485 | 952 if (!NILP (notsogood)) |
| 333 | 953 return notsogood; |
|
14226
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
954 buf = Fget_buffer_create (build_string ("*scratch*")); |
|
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
955 Fset_buffer_major_mode (buf); |
|
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
956 return buf; |
| 333 | 957 } |
| 958 | |
|
12110
d7d7f15f3a92
(Fbuffer_disable_undo): Make this function interactive.
Karl Heuer <kwzh@gnu.org>
parents:
12101
diff
changeset
|
959 DEFUN ("buffer-disable-undo", Fbuffer_disable_undo, Sbuffer_disable_undo, |
|
d7d7f15f3a92
(Fbuffer_disable_undo): Make this function interactive.
Karl Heuer <kwzh@gnu.org>
parents:
12101
diff
changeset
|
960 0, 1, "", |
|
5247
0cf95629f6c4
(Fbuffer_disable_undo): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
5075
diff
changeset
|
961 "Make BUFFER stop keeping undo information.\n\ |
|
0cf95629f6c4
(Fbuffer_disable_undo): Make arg optional.
Richard M. Stallman <rms@gnu.org>
parents:
5075
diff
changeset
|
962 No argument or nil as argument means do this for the current buffer.") |
| 648 | 963 (buffer) |
| 964 register Lisp_Object buffer; | |
| 333 | 965 { |
| 648 | 966 Lisp_Object real_buffer; |
| 967 | |
| 968 if (NILP (buffer)) | |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
969 XSETBUFFER (real_buffer, current_buffer); |
| 648 | 970 else |
| 971 { | |
| 972 real_buffer = Fget_buffer (buffer); | |
| 973 if (NILP (real_buffer)) | |
| 974 nsberror (buffer); | |
| 975 } | |
| 976 | |
| 977 XBUFFER (real_buffer)->undo_list = Qt; | |
| 978 | |
| 333 | 979 return Qnil; |
| 980 } | |
| 981 | |
| 982 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo, | |
| 983 0, 1, "", | |
| 984 "Start keeping undo information for buffer BUFFER.\n\ | |
| 985 No argument or nil as argument means do this for the current buffer.") | |
| 648 | 986 (buffer) |
| 987 register Lisp_Object buffer; | |
| 333 | 988 { |
| 648 | 989 Lisp_Object real_buffer; |
| 333 | 990 |
| 648 | 991 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
992 XSETBUFFER (real_buffer, current_buffer); |
| 333 | 993 else |
| 994 { | |
| 648 | 995 real_buffer = Fget_buffer (buffer); |
| 996 if (NILP (real_buffer)) | |
| 997 nsberror (buffer); | |
| 333 | 998 } |
| 999 | |
| 648 | 1000 if (EQ (XBUFFER (real_buffer)->undo_list, Qt)) |
| 1001 XBUFFER (real_buffer)->undo_list = Qnil; | |
| 333 | 1002 |
| 1003 return Qnil; | |
| 1004 } | |
| 1005 | |
| 1006 /* | |
| 1007 DEFVAR_LISP ("kill-buffer-hook", no_cell, "\ | |
| 1008 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\ | |
| 1009 The buffer being killed will be current while the hook is running.\n\ | |
| 1010 See `kill-buffer'." | |
| 1011 */ | |
| 1012 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ", | |
| 1013 "Kill the buffer BUFFER.\n\ | |
| 1014 The argument may be a buffer or may be the name of a buffer.\n\ | |
| 1015 An argument of nil means kill the current buffer.\n\n\ | |
| 1016 Value is t if the buffer is actually killed, nil if user says no.\n\n\ | |
| 1017 The value of `kill-buffer-hook' (which may be local to that buffer),\n\ | |
| 1018 if not void, is a list of functions to be called, with no arguments,\n\ | |
| 1019 before the buffer is actually killed. The buffer to be killed is current\n\ | |
| 1020 when the hook functions are called.\n\n\ | |
| 1021 Any processes that have this buffer as the `process-buffer' are killed\n\ | |
|
15421
2dc1a3e42a20
(Fkill_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15307
diff
changeset
|
1022 with SIGHUP.") |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1023 (buffer) |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1024 Lisp_Object buffer; |
| 333 | 1025 { |
| 1026 Lisp_Object buf; | |
| 1027 register struct buffer *b; | |
| 1028 register Lisp_Object tem; | |
| 1029 register struct Lisp_Marker *m; | |
| 1030 struct gcpro gcpro1, gcpro2; | |
| 1031 | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1032 if (NILP (buffer)) |
| 333 | 1033 buf = Fcurrent_buffer (); |
| 1034 else | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1035 buf = Fget_buffer (buffer); |
| 485 | 1036 if (NILP (buf)) |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1037 nsberror (buffer); |
| 333 | 1038 |
| 1039 b = XBUFFER (buf); | |
| 1040 | |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1041 /* Avoid trouble for buffer already dead. */ |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1042 if (NILP (b->name)) |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1043 return Qnil; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1044 |
| 333 | 1045 /* Query if the buffer is still modified. */ |
| 485 | 1046 if (INTERACTIVE && !NILP (b->filename) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1047 && BUF_MODIFF (b) > BUF_SAVE_MODIFF (b)) |
| 333 | 1048 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1049 GCPRO1 (buf); |
| 333 | 1050 tem = do_yes_or_no_p (format1 ("Buffer %s modified; kill anyway? ", |
| 1051 XSTRING (b->name)->data)); | |
| 1052 UNGCPRO; | |
| 485 | 1053 if (NILP (tem)) |
| 333 | 1054 return Qnil; |
| 1055 } | |
| 1056 | |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1057 /* Run hooks with the buffer to be killed the current buffer. */ |
| 333 | 1058 { |
| 1059 register Lisp_Object val; | |
| 1060 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
|
1061 Lisp_Object list; |
| 333 | 1062 |
| 1063 record_unwind_protect (save_excursion_restore, save_excursion_save ()); | |
| 1064 set_buffer_internal (b); | |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1065 |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1066 /* 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
|
1067 don't kill the buffer. */ |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1068 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
|
1069 { |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1070 tem = call0 (Fcar (list)); |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1071 if (NILP (tem)) |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1072 return unbind_to (count, Qnil); |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1073 } |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1074 |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1075 /* Then run the hooks. */ |
|
6205
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
1076 if (!NILP (Vrun_hooks)) |
|
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
1077 call1 (Vrun_hooks, Qkill_buffer_hook); |
| 333 | 1078 unbind_to (count, Qnil); |
| 1079 } | |
| 1080 | |
| 1081 /* We have no more questions to ask. Verify that it is valid | |
| 1082 to kill the buffer. This must be done after the questions | |
| 1083 since anything can happen within do_yes_or_no_p. */ | |
| 1084 | |
| 1085 /* Don't kill the minibuffer now current. */ | |
| 1086 if (EQ (buf, XWINDOW (minibuf_window)->buffer)) | |
| 1087 return Qnil; | |
| 1088 | |
| 485 | 1089 if (NILP (b->name)) |
| 333 | 1090 return Qnil; |
| 1091 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1092 /* 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
|
1093 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
|
1094 ask questions or their hooks get errors. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1095 if (! b->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1096 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1097 struct buffer *other; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1098 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1099 GCPRO1 (buf); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1100 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1101 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
|
1102 /* all_buffers contains dead buffers too; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1103 don't re-kill them. */ |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1104 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
|
1105 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1106 Lisp_Object buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1107 XSETBUFFER (buf, other); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1108 Fkill_buffer (buf); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1109 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1110 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1111 UNGCPRO; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1112 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1113 |
| 333 | 1114 /* Make this buffer not be current. |
| 1115 In the process, notice if this is the sole visible buffer | |
| 1116 and give up if so. */ | |
| 1117 if (b == current_buffer) | |
| 1118 { | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1119 tem = Fother_buffer (buf, Qnil, Qnil); |
| 333 | 1120 Fset_buffer (tem); |
| 1121 if (b == current_buffer) | |
| 1122 return Qnil; | |
| 1123 } | |
| 1124 | |
| 1125 /* Now there is no question: we can kill the buffer. */ | |
| 1126 | |
| 1127 #ifdef CLASH_DETECTION | |
| 1128 /* Unlock this buffer's file, if it is locked. */ | |
| 1129 unlock_buffer (b); | |
| 1130 #endif /* CLASH_DETECTION */ | |
| 1131 | |
| 1132 kill_buffer_processes (buf); | |
| 1133 | |
| 1134 tem = Vinhibit_quit; | |
| 1135 Vinhibit_quit = Qt; | |
|
13922
5636ed4243ec
(Fkill_buffer): Delete buffer from Vbuffer_alist after replacing it.
Erik Naggum <erik@naggum.no>
parents:
13917
diff
changeset
|
1136 replace_buffer_in_all_windows (buf); |
| 333 | 1137 Vbuffer_alist = Fdelq (Frassq (buf, Vbuffer_alist), Vbuffer_alist); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1138 frames_discard_buffer (buf); |
| 333 | 1139 Vinhibit_quit = tem; |
| 1140 | |
|
7994
c5b7f74b5023
(Fkill_buffer): Don't delete auto save file
Richard M. Stallman <rms@gnu.org>
parents:
7985
diff
changeset
|
1141 /* 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
|
1142 if (STRINGP (b->auto_save_file_name) |
|
13175
86fef98acedc
(Fkill_buffer): Don't kill auto save file if not recent.
Richard M. Stallman <rms@gnu.org>
parents:
13169
diff
changeset
|
1143 && b->auto_save_modified != 0 |
|
20186
6c9879dee580
(Fkill_buffer): Don't assume buffer is current.
Karl Heuer <kwzh@gnu.org>
parents:
20080
diff
changeset
|
1144 && BUF_SAVE_MODIFF (b) < b->auto_save_modified) |
| 333 | 1145 { |
| 1146 Lisp_Object tem; | |
| 1147 tem = Fsymbol_value (intern ("delete-auto-save-files")); | |
| 485 | 1148 if (! NILP (tem)) |
|
10082
8d3a71736423
(Fkill_buffer): Use internal_delete_file.
Richard M. Stallman <rms@gnu.org>
parents:
9950
diff
changeset
|
1149 internal_delete_file (b->auto_save_file_name); |
| 333 | 1150 } |
| 1151 | |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1152 if (b->base_buffer) |
| 333 | 1153 { |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1154 /* 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
|
1155 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
|
1156 or its other indirect buffers. */ |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1157 for (tem = BUF_MARKERS (b); !NILP (tem); ) |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1158 { |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1159 Lisp_Object next; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1160 m = XMARKER (tem); |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1161 next = m->chain; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1162 if (m->buffer == b) |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1163 unchain_marker (tem); |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1164 tem = next; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1165 } |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1166 } |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1167 else |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1168 { |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1169 /* 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
|
1170 and leave them pointing nowhere. */ |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1171 for (tem = BUF_MARKERS (b); !NILP (tem); ) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1172 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1173 m = XMARKER (tem); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1174 m->buffer = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1175 tem = m->chain; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1176 m->chain = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1177 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1178 BUF_MARKERS (b) = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1179 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1180 #ifdef USE_TEXT_PROPERTIES |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1181 BUF_INTERVALS (b) = NULL_INTERVAL; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1182 #endif |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1183 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1184 /* Perhaps we should explicitly free the interval tree here... */ |
| 333 | 1185 } |
|
1291
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
1186 |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1187 /* 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
|
1188 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
|
1189 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
|
1190 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
|
1191 swap_out_buffer_local_variables (b); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
1192 reset_buffer_local_variables (b, 1); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1193 |
| 333 | 1194 b->name = Qnil; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1195 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
1196 BLOCK_INPUT; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1197 if (! b->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1198 BUFFER_FREE (BUF_BEG_ADDR (b)); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1199 |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1200 if (b->newline_cache) |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1201 { |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1202 free_region_cache (b->newline_cache); |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1203 b->newline_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1204 } |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1205 if (b->width_run_cache) |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1206 { |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1207 free_region_cache (b->width_run_cache); |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1208 b->width_run_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1209 } |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1210 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
|
1211 UNBLOCK_INPUT; |
| 333 | 1212 b->undo_list = Qnil; |
| 1213 | |
| 1214 return Qt; | |
| 1215 } | |
| 1216 | |
| 550 | 1217 /* Move the assoc for buffer BUF to the front of buffer-alist. Since |
| 1218 we do this each time BUF is selected visibly, the more recently | |
| 1219 selected buffers are always closer to the front of the list. This | |
| 1220 means that other_buffer is more likely to choose a relevant buffer. */ | |
| 333 | 1221 |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
1222 void |
| 333 | 1223 record_buffer (buf) |
| 1224 Lisp_Object buf; | |
| 1225 { | |
| 1226 register Lisp_Object link, prev; | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1227 Lisp_Object frame; |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1228 frame = Fselected_frame (); |
| 333 | 1229 |
| 1230 prev = Qnil; | |
| 1231 for (link = Vbuffer_alist; CONSP (link); link = XCONS (link)->cdr) | |
| 1232 { | |
| 1233 if (EQ (XCONS (XCONS (link)->car)->cdr, buf)) | |
| 1234 break; | |
| 1235 prev = link; | |
| 1236 } | |
| 1237 | |
| 550 | 1238 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist); |
| 1239 we cannot use Fdelq itself here because it allows quitting. */ | |
| 333 | 1240 |
| 485 | 1241 if (NILP (prev)) |
| 333 | 1242 Vbuffer_alist = XCONS (Vbuffer_alist)->cdr; |
| 1243 else | |
| 1244 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr; | |
| 1245 | |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1246 XCONS (link)->cdr = Vbuffer_alist; |
| 333 | 1247 Vbuffer_alist = link; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1248 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1249 /* Now move this buffer to the front of frame_buffer_list also. */ |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1250 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1251 prev = Qnil; |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1252 for (link = frame_buffer_list (frame); CONSP (link); |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1253 link = XCONS (link)->cdr) |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1254 { |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1255 if (EQ (XCONS (link)->car, buf)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1256 break; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1257 prev = link; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1258 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1259 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1260 /* Effectively do delq. */ |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1261 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1262 if (CONSP (link)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1263 { |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1264 if (NILP (prev)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1265 set_frame_buffer_list (frame, |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1266 XCONS (frame_buffer_list (frame))->cdr); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1267 else |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1268 XCONS (prev)->cdr = XCONS (XCONS (prev)->cdr)->cdr; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1269 |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1270 XCONS (link)->cdr = frame_buffer_list (frame); |
|
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1271 set_frame_buffer_list (frame, link); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1272 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1273 else |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1274 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame))); |
| 333 | 1275 } |
| 1276 | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1277 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
|
1278 "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
|
1279 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
|
1280 the current buffer's major mode.") |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1281 (buffer) |
|
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1282 Lisp_Object buffer; |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1283 { |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1284 int count; |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1285 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
|
1286 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1287 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
|
1288 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
|
1289 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
|
1290 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1291 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
|
1292 return Qnil; |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1293 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1294 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
|
1295 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1296 /* 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
|
1297 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
|
1298 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1299 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
|
1300 |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1301 Fset_buffer (buffer); |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1302 call0 (function); |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1303 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1304 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
|
1305 } |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1306 |
| 333 | 1307 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ", |
| 1308 "Select buffer BUFFER in the current window.\n\ | |
| 1309 BUFFER may be a buffer or a buffer name.\n\ | |
| 1310 Optional second arg NORECORD non-nil means\n\ | |
| 1311 do not put this buffer at the front of the list of recently selected ones.\n\ | |
| 1312 \n\ | |
| 1313 WARNING: This is NOT the way to work on another buffer temporarily\n\ | |
| 1314 within a Lisp program! Use `set-buffer' instead. That avoids messing with\n\ | |
| 1315 the window-buffer correspondences.") | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1316 (buffer, norecord) |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1317 Lisp_Object buffer, norecord; |
| 333 | 1318 { |
| 1319 register Lisp_Object buf; | |
| 1320 Lisp_Object tem; | |
| 1321 | |
| 1322 if (EQ (minibuf_window, selected_window)) | |
| 1323 error ("Cannot switch buffers in minibuffer window"); | |
| 1324 tem = Fwindow_dedicated_p (selected_window); | |
| 485 | 1325 if (!NILP (tem)) |
| 333 | 1326 error ("Cannot switch buffers in a dedicated window"); |
| 1327 | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1328 if (NILP (buffer)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1329 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil); |
| 333 | 1330 else |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1331 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1332 buf = Fget_buffer (buffer); |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1333 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
|
1334 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1335 buf = Fget_buffer_create (buffer); |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1336 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
|
1337 } |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1338 } |
| 333 | 1339 Fset_buffer (buf); |
| 485 | 1340 if (NILP (norecord)) |
| 333 | 1341 record_buffer (buf); |
| 1342 | |
| 1343 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
|
1344 ? 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
|
1345 : selected_window, |
| 333 | 1346 buf); |
| 1347 | |
|
16840
299b0e0f0a93
Fix typo editing previous change.
Richard M. Stallman <rms@gnu.org>
parents:
16830
diff
changeset
|
1348 return buf; |
| 333 | 1349 } |
| 1350 | |
|
16840
299b0e0f0a93
Fix typo editing previous change.
Richard M. Stallman <rms@gnu.org>
parents:
16830
diff
changeset
|
1351 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0, |
| 333 | 1352 "Select buffer BUFFER in some window, preferably a different one.\n\ |
| 1353 If BUFFER is nil, then some other buffer is chosen.\n\ | |
| 1354 If `pop-up-windows' is non-nil, windows can be split to do this.\n\ | |
| 1355 If optional second arg OTHER-WINDOW is non-nil, insist on finding another\n\ | |
|
15307
08ce5fa97ce3
(Fpop_to_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15122
diff
changeset
|
1356 window even if BUFFER is already visible in the selected window.\n\ |
|
08ce5fa97ce3
(Fpop_to_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
15122
diff
changeset
|
1357 This uses the function `display-buffer' as a subroutine; see the documentation\n\ |
|
16830
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1358 of `display-buffer' for additional customization information.\n\ |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1359 \n\ |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1360 Optional third arg NORECORD non-nil means\n\ |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1361 do not put this buffer at the front of the list of recently selected ones.") |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1362 (buffer, other_window, norecord) |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1363 Lisp_Object buffer, other_window, norecord; |
| 333 | 1364 { |
| 1365 register Lisp_Object buf; | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1366 if (NILP (buffer)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1367 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil); |
| 333 | 1368 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
|
1369 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1370 buf = Fget_buffer (buffer); |
|
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
|
1371 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
|
1372 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1373 buf = Fget_buffer_create (buffer); |
|
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
|
1374 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
|
1375 } |
|
3aea65d9eb68
(Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10751
diff
changeset
|
1376 } |
| 333 | 1377 Fset_buffer (buf); |
|
16830
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1378 if (NILP (norecord)) |
|
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1379 record_buffer (buf); |
|
20853
58bb74217a10
(Fpop_to_buffer): Pass new arg to Fdisplay_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
20706
diff
changeset
|
1380 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil)); |
|
3295
4d405f172c79
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3242
diff
changeset
|
1381 return buf; |
| 333 | 1382 } |
| 1383 | |
| 1384 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0, | |
| 1385 "Return the current buffer as a Lisp object.") | |
| 1386 () | |
| 1387 { | |
| 1388 register Lisp_Object buf; | |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
1389 XSETBUFFER (buf, current_buffer); |
| 333 | 1390 return buf; |
| 1391 } | |
| 1392 | |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1393 /* Set the current buffer to B. */ |
| 333 | 1394 |
| 1395 void | |
| 1396 set_buffer_internal (b) | |
| 1397 register struct buffer *b; | |
| 1398 { | |
| 1399 register struct buffer *old_buf; | |
| 1400 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
|
1401 Lisp_Object tem; |
| 333 | 1402 |
| 1403 if (current_buffer == b) | |
| 1404 return; | |
| 1405 | |
| 1406 windows_or_buffers_changed = 1; | |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1407 set_buffer_internal_1 (b); |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1408 } |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1409 |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1410 /* 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
|
1411 This is used by redisplay. */ |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1412 |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1413 void |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1414 set_buffer_internal_1 (b) |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1415 register struct buffer *b; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1416 { |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1417 register struct buffer *old_buf; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1418 register Lisp_Object tail, valcontents; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1419 Lisp_Object tem; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1420 |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1421 if (current_buffer == b) |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1422 return; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1423 |
| 333 | 1424 old_buf = current_buffer; |
| 1425 current_buffer = b; | |
| 1426 last_known_column_point = -1; /* invalidate indentation cache */ | |
| 1427 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1428 if (old_buf) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1429 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1430 /* 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
|
1431 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
|
1432 if (old_buf->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1433 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
|
1434 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1435 /* 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
|
1436 when it is not current, update them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1437 if (! NILP (old_buf->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1438 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1439 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1440 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1441 set_marker_both (old_buf->pt_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1442 BUF_PT (old_buf), BUF_PT_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1443 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1444 if (! NILP (old_buf->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1445 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1446 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1447 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1448 set_marker_both (old_buf->begv_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1449 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1450 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1451 if (! NILP (old_buf->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1452 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1453 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1454 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1455 set_marker_both (old_buf->zv_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1456 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1457 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1458 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1459 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1460 /* 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
|
1461 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
|
1462 if (b->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1463 b->undo_list = b->base_buffer->undo_list; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1464 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1465 /* 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
|
1466 when it is not current, fetch them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1467 if (! NILP (b->pt_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1468 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1469 BUF_PT (b) = marker_position (b->pt_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1470 BUF_PT_BYTE (b) = marker_byte_position (b->pt_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1471 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1472 if (! NILP (b->begv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1473 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1474 BUF_BEGV (b) = marker_position (b->begv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1475 BUF_BEGV_BYTE (b) = marker_byte_position (b->begv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1476 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1477 if (! NILP (b->zv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1478 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1479 BUF_ZV (b) = marker_position (b->zv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1480 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1481 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1482 |
| 333 | 1483 /* Look down buffer's list of local Lisp variables |
| 1484 to find and update any that forward into C variables. */ | |
| 1485 | |
| 485 | 1486 for (tail = b->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr) |
| 333 | 1487 { |
| 1488 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
|
1489 if ((BUFFER_LOCAL_VALUEP (valcontents) |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1490 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1491 && (tem = XBUFFER_LOCAL_VALUE (valcontents)->realvalue, |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1492 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem)))) |
| 333 | 1493 /* Just reference the variable |
| 1494 to cause it to become set for this buffer. */ | |
| 1495 Fsymbol_value (XCONS (XCONS (tail)->car)->car); | |
| 1496 } | |
| 1497 | |
| 1498 /* Do the same with any others that were local to the previous buffer */ | |
| 1499 | |
| 1500 if (old_buf) | |
| 485 | 1501 for (tail = old_buf->local_var_alist; !NILP (tail); tail = XCONS (tail)->cdr) |
| 333 | 1502 { |
| 1503 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
|
1504 if ((BUFFER_LOCAL_VALUEP (valcontents) |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1505 || SOME_BUFFER_LOCAL_VALUEP (valcontents)) |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1506 && (tem = XBUFFER_LOCAL_VALUE (valcontents)->realvalue, |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1507 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem)))) |
| 333 | 1508 /* Just reference the variable |
| 1509 to cause it to become set for this buffer. */ | |
| 1510 Fsymbol_value (XCONS (XCONS (tail)->car)->car); | |
| 1511 } | |
| 1512 } | |
| 1513 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1514 /* 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
|
1515 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
|
1516 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1517 void |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1518 set_buffer_temp (b) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1519 struct buffer *b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1520 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1521 register struct buffer *old_buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1522 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1523 if (current_buffer == b) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1524 return; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1525 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1526 old_buf = current_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1527 current_buffer = b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1528 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1529 if (old_buf) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1530 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1531 /* 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
|
1532 when it is not current, update them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1533 if (! NILP (old_buf->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1534 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1535 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1536 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1537 set_marker_both (old_buf->pt_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1538 BUF_PT (old_buf), BUF_PT_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1539 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1540 if (! NILP (old_buf->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1541 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1542 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1543 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1544 set_marker_both (old_buf->begv_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1545 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1546 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1547 if (! NILP (old_buf->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1548 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1549 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1550 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1551 set_marker_both (old_buf->zv_marker, obuf, |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1552 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1553 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1554 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1555 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1556 /* 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
|
1557 when it is not current, fetch them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1558 if (! NILP (b->pt_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1559 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1560 BUF_PT (b) = marker_position (b->pt_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1561 BUF_PT_BYTE (b) = marker_byte_position (b->pt_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1562 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1563 if (! NILP (b->begv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1564 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1565 BUF_BEGV (b) = marker_position (b->begv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1566 BUF_BEGV_BYTE (b) = marker_byte_position (b->begv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1567 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1568 if (! NILP (b->zv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1569 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1570 BUF_ZV (b) = marker_position (b->zv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1571 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker); |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1572 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1573 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1574 |
| 333 | 1575 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, |
| 1576 "Make the buffer BUFFER current for editing operations.\n\ | |
| 1577 BUFFER may be a buffer or the name of an existing buffer.\n\ | |
| 1578 See also `save-excursion' when you want to make a buffer current temporarily.\n\ | |
| 1579 This function does not display the buffer, so its effect ends\n\ | |
| 1580 when the current command terminates.\n\ | |
| 1581 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.") | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1582 (buffer) |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1583 register Lisp_Object buffer; |
| 333 | 1584 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1585 register Lisp_Object buf; |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1586 buf = Fget_buffer (buffer); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1587 if (NILP (buf)) |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1588 nsberror (buffer); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1589 if (NILP (XBUFFER (buf)->name)) |
| 333 | 1590 error ("Selecting deleted buffer"); |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1591 set_buffer_internal (XBUFFER (buf)); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1592 return buf; |
| 333 | 1593 } |
|
20698
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1594 |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1595 /* Set the current buffer to BUFFER provided it is alive. */ |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1596 |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1597 Lisp_Object |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1598 set_buffer_if_live (buffer) |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1599 Lisp_Object buffer; |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1600 { |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1601 if (! NILP (XBUFFER (buffer)->name)) |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1602 Fset_buffer (buffer); |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1603 return Qnil; |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1604 } |
| 333 | 1605 |
| 1606 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only, | |
| 1607 Sbarf_if_buffer_read_only, 0, 0, 0, | |
| 1608 "Signal a `buffer-read-only' error if the current buffer is read-only.") | |
| 1609 () | |
| 1610 { | |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
1611 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
|
1612 && NILP (Vinhibit_read_only)) |
| 333 | 1613 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); |
| 1614 return Qnil; | |
| 1615 } | |
| 1616 | |
| 1617 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "", | |
| 1618 "Put BUFFER at the end of the list of all buffers.\n\ | |
| 1619 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
|
1620 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
|
1621 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
|
1622 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
|
1623 selected window if it is displayed there.") |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1624 (buffer) |
|
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1625 register Lisp_Object buffer; |
| 333 | 1626 { |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1627 /* Figure out what buffer we're going to bury. */ |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1628 if (NILP (buffer)) |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
1629 { |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1630 XSETBUFFER (buffer, current_buffer); |
|
18485
d6e8b92585e9
(Fbury_buffer): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18455
diff
changeset
|
1631 |
|
d6e8b92585e9
(Fbury_buffer): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18455
diff
changeset
|
1632 /* If we're burying the current buffer, unshow it. */ |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1633 Fswitch_to_buffer (Fother_buffer (buffer, Qnil, Qnil), Qnil); |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
1634 } |
| 333 | 1635 else |
| 1636 { | |
| 1637 Lisp_Object buf1; | |
| 1638 | |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1639 buf1 = Fget_buffer (buffer); |
| 485 | 1640 if (NILP (buf1)) |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1641 nsberror (buffer); |
|
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1642 buffer = buf1; |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1643 } |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1644 |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1645 /* Move buffer 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
|
1646 { |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1647 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
|
1648 |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1649 aelt = Frassq (buffer, Vbuffer_alist); |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1650 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
|
1651 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
|
1652 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
|
1653 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
|
1654 } |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1655 |
|
17238
ac05fe2b7114
(Fbury_buffer): add missing semi
Erik Naggum <erik@naggum.no>
parents:
17234
diff
changeset
|
1656 frames_bury_buffer (buffer); |
|
17234
bda734eef575
(Fbury_buffer): Call frames_bury_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17220
diff
changeset
|
1657 |
| 333 | 1658 return Qnil; |
| 1659 } | |
| 1660 | |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
1661 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*", |
| 333 | 1662 "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
|
1663 Any narrowing restriction in effect (see `narrow-to-region') is removed,\n\ |
| 333 | 1664 so the buffer is truly empty after this.") |
| 1665 () | |
| 1666 { | |
| 1667 Fwiden (); | |
| 1668 del_range (BEG, Z); | |
| 1669 current_buffer->last_window_start = 1; | |
| 1670 /* Prevent warnings, or suspension of auto saving, that would happen | |
| 1671 if future size is less than past size. Use of erase-buffer | |
| 1672 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
|
1673 XSETFASTINT (current_buffer->save_length, 0); |
| 333 | 1674 return Qnil; |
| 1675 } | |
| 1676 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
1677 void |
| 333 | 1678 validate_region (b, e) |
| 1679 register Lisp_Object *b, *e; | |
| 1680 { | |
| 1681 CHECK_NUMBER_COERCE_MARKER (*b, 0); | |
| 1682 CHECK_NUMBER_COERCE_MARKER (*e, 1); | |
| 1683 | |
| 1684 if (XINT (*b) > XINT (*e)) | |
| 1685 { | |
|
9335
8cf58b38d244
(validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents:
9296
diff
changeset
|
1686 Lisp_Object tem; |
|
8cf58b38d244
(validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents:
9296
diff
changeset
|
1687 tem = *b; *b = *e; *e = tem; |
| 333 | 1688 } |
| 1689 | |
| 1690 if (!(BEGV <= XINT (*b) && XINT (*b) <= XINT (*e) | |
| 1691 && XINT (*e) <= ZV)) | |
| 1692 args_out_of_range (*b, *e); | |
| 1693 } | |
| 1694 | |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1695 /* Advance BYTE_POS up to a character boundary |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1696 and return the adjusted position. */ |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1697 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1698 static int |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1699 advance_to_char_boundary (byte_pos) |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1700 int byte_pos; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1701 { |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1702 int c; |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1703 |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1704 if (byte_pos == BEG) |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1705 /* Beginning of buffer is always a character boundary. */ |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1706 return 1; |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1707 |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1708 c = FETCH_BYTE (byte_pos); |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1709 if (! CHAR_HEAD_P (c)) |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1710 { |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1711 /* We should advance BYTE_POS only when C is a constituen of a |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1712 multibyte sequence. */ |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1713 DEC_POS (byte_pos); |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1714 INC_POS (byte_pos); |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1715 /* If C is a constituent of a multibyte sequence, BYTE_POS was |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1716 surely advance to the correct character boundary. If C is |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
1717 not, BYTE_POS was unchanged. */ |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1718 } |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1719 |
|
20935
2fc5eb0799fe
(advance_to_char_boundary): Make the behaviour
Kenichi Handa <handa@m17n.org>
parents:
20868
diff
changeset
|
1720 return byte_pos; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1721 } |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1722 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1723 DEFUN ("set-buffer-multibyte", Fset_buffer_multibyte, Sset_buffer_multibyte, |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1724 1, 1, 0, |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1725 "Set the multibyte flag of the current buffer to FLAG.\n\ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1726 If FLAG is t, this makes the buffer a multibyte buffer.\n\ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1727 If FLAG is nil, this makes the buffer a single-byte buffer.\n\ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1728 The buffer contents remain unchanged as a sequence of bytes\n\ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1729 but the contents viewed as characters do change.") |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1730 (flag) |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1731 Lisp_Object flag; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1732 { |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1733 Lisp_Object tail, markers; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1734 |
|
21506
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
1735 /* Do nothing if nothing actually changes. */ |
|
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
1736 if (NILP (flag) == NILP (current_buffer->enable_multibyte_characters)) |
|
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
1737 return flag; |
|
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
1738 |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1739 /* It would be better to update the list, |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1740 but this is good enough for now. */ |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1741 if (! EQ (current_buffer->undo_list, Qt)) |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1742 current_buffer->undo_list = Qnil; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1743 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1744 /* If the cached position is for this buffer, clear it out. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1745 clear_charpos_cache (current_buffer); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1746 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1747 if (NILP (flag)) |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1748 { |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1749 /* Do this first, so it can use CHAR_TO_BYTE |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1750 to calculate the old correspondences. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1751 set_intervals_multibyte (0); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1752 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1753 current_buffer->enable_multibyte_characters = Qnil; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1754 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1755 Z = Z_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1756 BEGV = BEGV_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1757 ZV = ZV_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1758 GPT = GPT_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1759 TEMP_SET_PT_BOTH (PT_BYTE, PT_BYTE); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1760 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1761 tail = BUF_MARKERS (current_buffer); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1762 while (XSYMBOL (tail) != XSYMBOL (Qnil)) |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1763 { |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1764 XMARKER (tail)->charpos = XMARKER (tail)->bytepos; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1765 tail = XMARKER (tail)->chain; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1766 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1767 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1768 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1769 { |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1770 /* Be sure not to have a multibyte sequence striding over the GAP. |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1771 Ex: We change this: "...abc\201\241\241 _GAP_ \241\241\241..." |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1772 to: "...abc _GAP_ \201\241\241\241\241\241..." */ |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1773 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1774 if (GPT_BYTE > 1 && GPT_BYTE < Z_BYTE |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1775 && ! CHAR_HEAD_P (*(GAP_END_ADDR))) |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1776 { |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1777 unsigned char *p = GPT_ADDR - 1; |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1778 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1779 while (! CHAR_HEAD_P (*p) && p > BEG_ADDR) p--; |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1780 if (BASE_LEADING_CODE_P (*p)) |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1781 { |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1782 int new_gpt = GPT_BYTE - (GPT_ADDR - p); |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1783 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1784 move_gap_both (new_gpt, new_gpt); |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1785 } |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1786 } |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1787 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1788 /* Do this first, so that chars_in_text asks the right question. |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1789 set_intervals_multibyte needs it too. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1790 current_buffer->enable_multibyte_characters = Qt; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1791 |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1792 GPT_BYTE = advance_to_char_boundary (GPT_BYTE); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1793 GPT = chars_in_text (BEG_ADDR, GPT_BYTE - BEG_BYTE) + BEG; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1794 |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1795 Z = chars_in_text (GAP_END_ADDR, Z_BYTE - GPT_BYTE) + GPT; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1796 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1797 BEGV_BYTE = advance_to_char_boundary (BEGV_BYTE); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1798 if (BEGV_BYTE > GPT_BYTE) |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1799 BEGV = chars_in_text (GAP_END_ADDR, BEGV_BYTE - GPT_BYTE) + GPT; |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1800 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1801 BEGV = chars_in_text (BEG_ADDR, BEGV_BYTE - BEG_BYTE) + BEG; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1802 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1803 ZV_BYTE = advance_to_char_boundary (ZV_BYTE); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1804 if (ZV_BYTE > GPT_BYTE) |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1805 ZV = chars_in_text (GAP_END_ADDR, ZV_BYTE - GPT_BYTE) + GPT; |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1806 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1807 ZV = chars_in_text (BEG_ADDR, ZV_BYTE - BEG_BYTE) + BEG; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1808 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1809 { |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1810 int pt_byte = advance_to_char_boundary (PT_BYTE); |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1811 int pt; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1812 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1813 if (pt_byte > GPT_BYTE) |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
1814 pt = chars_in_text (GAP_END_ADDR, pt_byte - GPT_BYTE) + GPT; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1815 else |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1816 pt = chars_in_text (BEG_ADDR, pt_byte - BEG_BYTE) + BEG; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1817 TEMP_SET_PT_BOTH (pt, pt_byte); |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1818 } |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1819 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1820 tail = markers = BUF_MARKERS (current_buffer); |
| 22021 | 1821 |
| 1822 /* This prevents BYTE_TO_CHAR (that is, buf_bytepos_to_charpos) from | |
| 1823 getting confused by the markers that have not yet been updated. | |
| 1824 It is also a signal that it should never create a marker. */ | |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1825 BUF_MARKERS (current_buffer) = Qnil; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1826 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1827 while (XSYMBOL (tail) != XSYMBOL (Qnil)) |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1828 { |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1829 XMARKER (tail)->bytepos |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1830 = advance_to_char_boundary (XMARKER (tail)->bytepos); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1831 XMARKER (tail)->charpos = BYTE_TO_CHAR (XMARKER (tail)->bytepos); |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
1832 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1833 tail = XMARKER (tail)->chain; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1834 } |
|
22023
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1835 |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1836 /* Make sure no markers were put on the chain |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1837 while the chain value was incorrect. */ |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1838 if (! EQ (BUF_MARKERS (current_buffer), Qnil)) |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1839 abort (); |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
1840 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1841 BUF_MARKERS (current_buffer) = markers; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1842 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1843 /* Do this last, so it can calculate the new correspondences |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1844 between chars and bytes. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1845 set_intervals_multibyte (1); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1846 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1847 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1848 return flag; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1849 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
1850 |
| 333 | 1851 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables, |
| 1852 0, 0, 0, | |
| 1853 "Switch to Fundamental mode by killing current buffer's local variables.\n\ | |
| 1854 Most local variable bindings are eliminated so that the default values\n\ | |
| 1855 become effective once more. Also, the syntax table is set from\n\ | |
| 1856 `standard-syntax-table', the local keymap is set to nil,\n\ | |
| 1857 and the abbrev table from `fundamental-mode-abbrev-table'.\n\ | |
| 1858 This function also forces redisplay of the mode line.\n\ | |
| 1859 \n\ | |
| 1860 Every function to select a new major mode starts by\n\ | |
| 1861 calling this function.\n\n\ | |
| 1862 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
|
1863 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
|
1864 \n\ |
|
6356b8d3144e
(Fkill_all_local_variables): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
7053
diff
changeset
|
1865 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
|
1866 the normal hook `change-major-mode-hook'.") |
| 333 | 1867 () |
| 1868 { | |
| 1869 register Lisp_Object alist, sym, tem; | |
| 1870 Lisp_Object oalist; | |
|
5873
fa8b769ef564
(Fkill_all_local_variables): Run change-major-mode-hook.
Karl Heuer <kwzh@gnu.org>
parents:
5857
diff
changeset
|
1871 |
|
6205
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
1872 if (!NILP (Vrun_hooks)) |
|
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
1873 call1 (Vrun_hooks, intern ("change-major-mode-hook")); |
| 333 | 1874 oalist = current_buffer->local_var_alist; |
| 1875 | |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1876 /* 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
|
1877 remain swapped in, in their symbols. */ |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1878 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1879 swap_out_buffer_local_variables (current_buffer); |
| 333 | 1880 |
| 1881 /* Actually eliminate all local bindings of this buffer. */ | |
| 1882 | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
1883 reset_buffer_local_variables (current_buffer, 0); |
| 333 | 1884 |
| 1885 /* Redisplay mode lines; we are changing major mode. */ | |
| 1886 | |
| 1887 update_mode_lines++; | |
| 1888 | |
| 1889 /* Any which are supposed to be permanent, | |
| 1890 make local again, with the same values they had. */ | |
| 1891 | |
| 485 | 1892 for (alist = oalist; !NILP (alist); alist = XCONS (alist)->cdr) |
| 333 | 1893 { |
| 1894 sym = XCONS (XCONS (alist)->car)->car; | |
| 1895 tem = Fget (sym, Qpermanent_local); | |
| 485 | 1896 if (! NILP (tem)) |
| 392 | 1897 { |
| 1898 Fmake_local_variable (sym); | |
| 1899 Fset (sym, XCONS (XCONS (alist)->car)->cdr); | |
| 1900 } | |
| 333 | 1901 } |
| 1902 | |
| 1903 /* Force mode-line redisplay. Useful here because all major mode | |
| 1904 commands call this function. */ | |
| 1905 update_mode_lines++; | |
| 1906 | |
| 1907 return Qnil; | |
| 1908 } | |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1909 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1910 /* 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
|
1911 for their current values. */ |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1912 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1913 static void |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1914 swap_out_buffer_local_variables (b) |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1915 struct buffer *b; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1916 { |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1917 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
|
1918 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1919 XSETBUFFER (buffer, b); |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1920 oalist = b->local_var_alist; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1921 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1922 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
|
1923 { |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1924 sym = XCONS (XCONS (alist)->car)->car; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1925 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1926 /* Need not do anything if some other buffer's binding is now encached. */ |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1927 tem = XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->buffer; |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1928 if (XBUFFER (tem) == current_buffer) |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1929 { |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1930 /* 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
|
1931 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
|
1932 |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1933 tem = XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->cdr; |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1934 /* 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
|
1935 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
|
1936 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
|
1937 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
|
1938 XCONS (XCONS (tem)->car)->cdr |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1939 = do_symval_forwarding (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->realvalue); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1940 /* 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
|
1941 XCONS (tem)->car = tem; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1942 /* Mark it as current for buffer B. */ |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1943 XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->buffer = buffer; |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1944 /* Store the current value into any forwarding in the symbol. */ |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1945 store_symval_forwarding (sym, |
|
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
1946 XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->realvalue, |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1947 XCONS (tem)->cdr); |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1948 } |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1949 } |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1950 } |
| 333 | 1951 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1952 /* 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
|
1953 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
|
1954 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
|
1955 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
|
1956 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
|
1957 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
|
1958 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
|
1959 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
|
1960 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1961 *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
|
1962 when this function is called. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1963 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1964 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
|
1965 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
|
1966 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
|
1967 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
|
1968 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1969 int |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1970 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
|
1971 int pos; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1972 int extend; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1973 Lisp_Object **vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1974 int *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1975 int *next_ptr; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1976 int *prev_ptr; |
| 333 | 1977 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1978 Lisp_Object tail, overlay, start, end, result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1979 int idx = 0; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1980 int len = *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1981 Lisp_Object *vec = *vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1982 int next = ZV; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1983 int prev = BEGV; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1984 int inhibit_storing = 0; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
1985 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1986 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
|
1987 GC_CONSP (tail); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1988 tail = XCONS (tail)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1989 { |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1990 int startpos, endpos; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
1991 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1992 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1993 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1994 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
1995 end = OVERLAY_END (overlay); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1996 endpos = OVERLAY_POSITION (end); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1997 if (endpos < pos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1998 { |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
1999 if (prev < endpos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2000 prev = endpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2001 break; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2002 } |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2003 if (endpos == pos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2004 continue; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2005 startpos = OVERLAY_POSITION (start); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2006 if (startpos <= pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2007 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2008 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2009 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2010 /* The supplied vector is full. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2011 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
|
2012 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2013 { |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2014 *len_ptr = len *= 2; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2015 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
|
2016 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2017 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2018 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2019 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2020 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2021 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2022 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2023 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2024 /* 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
|
2025 idx++; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2026 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2027 else if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2028 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2029 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2030 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2031 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
|
2032 GC_CONSP (tail); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2033 tail = XCONS (tail)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2034 { |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2035 int startpos, endpos; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2036 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2037 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2038 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2039 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2040 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2041 startpos = OVERLAY_POSITION (start); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2042 if (pos < startpos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2043 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2044 if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2045 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2046 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2047 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2048 endpos = OVERLAY_POSITION (end); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2049 if (pos < endpos) |
|
2389
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 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2052 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2053 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2054 { |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2055 *len_ptr = len *= 2; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2056 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
|
2057 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2058 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2059 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2060 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2061 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2062 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2063 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2064 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2065 idx++; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2066 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2067 else if (endpos < pos && endpos > prev) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2068 prev = endpos; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2069 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2070 |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2071 if (next_ptr) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2072 *next_ptr = next; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2073 if (prev_ptr) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2074 *prev_ptr = prev; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2075 return idx; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2076 } |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2077 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2078 /* Find all the overlays in the current buffer that overlap the range BEG-END |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2079 or are empty at BEG. |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2080 |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2081 Return the number found, and store them in a vector in *VEC_PTR. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2082 Store in *LEN_PTR the size allocated for the vector. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2083 Store in *NEXT_PTR the next position after POS where an overlay starts, |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2084 or ZV if there are no more overlays. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2085 Store in *PREV_PTR the previous position before POS where an overlay ends, |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2086 or BEGV if there are no previous overlays. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2087 NEXT_PTR and/or PREV_PTR may be 0, meaning don't store that info. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2088 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2089 *VEC_PTR and *LEN_PTR should contain a valid vector and size |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2090 when this function is called. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2091 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2092 If EXTEND is non-zero, we make the vector bigger if necessary. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2093 If EXTEND is zero, we never extend the vector, |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2094 and we store only as many overlays as will fit. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2095 But we still return the total number of overlays. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2096 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2097 int |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2098 overlays_in (beg, end, extend, vec_ptr, len_ptr, next_ptr, prev_ptr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2099 int beg, end; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2100 int extend; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2101 Lisp_Object **vec_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2102 int *len_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2103 int *next_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2104 int *prev_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2105 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2106 Lisp_Object tail, overlay, ostart, oend, result; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2107 int idx = 0; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2108 int len = *len_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2109 Lisp_Object *vec = *vec_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2110 int next = ZV; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2111 int prev = BEGV; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2112 int inhibit_storing = 0; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2113 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2114 for (tail = current_buffer->overlays_before; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2115 GC_CONSP (tail); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2116 tail = XCONS (tail)->cdr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2117 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2118 int startpos, endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2119 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2120 overlay = XCONS (tail)->car; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2121 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2122 ostart = OVERLAY_START (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2123 oend = OVERLAY_END (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2124 endpos = OVERLAY_POSITION (oend); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2125 if (endpos < beg) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2126 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2127 if (prev < endpos) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2128 prev = endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2129 break; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2130 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2131 startpos = OVERLAY_POSITION (ostart); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2132 /* Count an interval if it either overlaps the range |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2133 or is empty at the start of the range. */ |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2134 if ((beg < endpos && startpos < end) |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2135 || (startpos == endpos && beg == endpos)) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2136 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2137 if (idx == len) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2138 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2139 /* The supplied vector is full. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2140 Either make it bigger, or don't store any more in it. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2141 if (extend) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2142 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2143 *len_ptr = len *= 2; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2144 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2145 *vec_ptr = vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2146 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2147 else |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2148 inhibit_storing = 1; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2149 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2150 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2151 if (!inhibit_storing) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2152 vec[idx] = overlay; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2153 /* Keep counting overlays even if we can't return them all. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2154 idx++; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2155 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2156 else if (startpos < next) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2157 next = startpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2158 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2159 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2160 for (tail = current_buffer->overlays_after; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2161 GC_CONSP (tail); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2162 tail = XCONS (tail)->cdr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2163 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2164 int startpos, endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2165 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2166 overlay = XCONS (tail)->car; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2167 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2168 ostart = OVERLAY_START (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2169 oend = OVERLAY_END (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2170 startpos = OVERLAY_POSITION (ostart); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2171 if (end < startpos) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2172 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2173 if (startpos < next) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2174 next = startpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2175 break; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2176 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2177 endpos = OVERLAY_POSITION (oend); |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2178 /* Count an interval if it either overlaps the range |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2179 or is empty at the start of the range. */ |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2180 if ((beg < endpos && startpos < end) |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
2181 || (startpos == endpos && beg == endpos)) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2182 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2183 if (idx == len) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2184 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2185 if (extend) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2186 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2187 *len_ptr = len *= 2; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2188 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2189 *vec_ptr = vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2190 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2191 else |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2192 inhibit_storing = 1; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2193 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2194 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2195 if (!inhibit_storing) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2196 vec[idx] = overlay; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2197 idx++; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2198 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2199 else if (endpos < beg && endpos > prev) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2200 prev = endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2201 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2202 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2203 if (next_ptr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2204 *next_ptr = next; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2205 if (prev_ptr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2206 *prev_ptr = prev; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2207 return idx; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2208 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2209 |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2210 /* 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
|
2211 int |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2212 overlay_touches_p (pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2213 int pos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2214 { |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2215 Lisp_Object tail, overlay; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2216 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2217 for (tail = current_buffer->overlays_before; GC_CONSP (tail); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2218 tail = XCONS (tail)->cdr) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2219 { |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2220 int endpos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2221 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2222 overlay = XCONS (tail)->car; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2223 if (!GC_OVERLAYP (overlay)) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2224 abort (); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2225 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2226 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2227 if (endpos < pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2228 break; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2229 if (endpos == pos || OVERLAY_POSITION (OVERLAY_START (overlay)) == pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2230 return 1; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2231 } |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2232 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2233 for (tail = current_buffer->overlays_after; GC_CONSP (tail); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2234 tail = XCONS (tail)->cdr) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2235 { |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2236 int startpos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2237 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2238 overlay = XCONS (tail)->car; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2239 if (!GC_OVERLAYP (overlay)) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2240 abort (); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2241 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2242 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2243 if (pos < startpos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2244 break; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2245 if (startpos == pos || OVERLAY_POSITION (OVERLAY_END (overlay)) == pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2246 return 1; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2247 } |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2248 return 0; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2249 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2250 |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2251 struct sortvec |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2252 { |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2253 Lisp_Object overlay; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2254 int beg, end; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2255 int priority; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2256 }; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2257 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2258 static int |
| 21514 | 2259 compare_overlays (v1, v2) |
| 2260 const void *v1, *v2; | |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2261 { |
| 21514 | 2262 const struct sortvec *s1 = (const struct sortvec *) v1; |
| 2263 const struct sortvec *s2 = (const struct sortvec *) v2; | |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2264 if (s1->priority != s2->priority) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2265 return s1->priority - s2->priority; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2266 if (s1->beg != s2->beg) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2267 return s1->beg - s2->beg; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2268 if (s1->end != s2->end) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2269 return s2->end - s1->end; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2270 return 0; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2271 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2272 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2273 /* 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
|
2274 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
|
2275 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
|
2276 int |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2277 sort_overlays (overlay_vec, noverlays, w) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2278 Lisp_Object *overlay_vec; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2279 int noverlays; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2280 struct window *w; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2281 { |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2282 int i, j; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2283 struct sortvec *sortvec; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2284 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
|
2285 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2286 /* 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
|
2287 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2288 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
|
2289 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2290 Lisp_Object tem; |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2291 Lisp_Object overlay; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2292 |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2293 overlay = overlay_vec[i]; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2294 if (OVERLAY_VALID (overlay) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2295 && OVERLAY_POSITION (OVERLAY_START (overlay)) > 0 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2296 && OVERLAY_POSITION (OVERLAY_END (overlay)) > 0) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2297 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2298 /* 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
|
2299 overlays that are limited to some other window. */ |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2300 if (w) |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2301 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2302 Lisp_Object window; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2303 |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2304 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
|
2305 if (WINDOWP (window) && XWINDOW (window) != w) |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2306 continue; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2307 } |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2308 |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2309 /* 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
|
2310 sortvec[j].overlay = overlay; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2311 sortvec[j].beg = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2312 sortvec[j].end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2313 tem = Foverlay_get (overlay, Qpriority); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2314 if (INTEGERP (tem)) |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2315 sortvec[j].priority = XINT (tem); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2316 else |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2317 sortvec[j].priority = 0; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2318 j++; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2319 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2320 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2321 noverlays = j; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2322 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2323 /* 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
|
2324 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2325 if (noverlays > 1) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2326 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
|
2327 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2328 for (i = 0; i < noverlays; i++) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2329 overlay_vec[i] = sortvec[i].overlay; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2330 return (noverlays); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2331 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2332 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2333 struct sortstr |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2334 { |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2335 Lisp_Object string, string2; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2336 int size; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2337 int priority; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2338 }; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2339 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2340 struct sortstrlist |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2341 { |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2342 struct sortstr *buf; /* An array that expands as needed; never freed. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2343 int size; /* Allocated length of that array. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2344 int used; /* How much of the array is currently in use. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2345 int bytes; /* Total length of the strings in buf. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2346 }; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2347 |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2348 /* Buffers for storing information about the overlays touching a given |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2349 position. These could be automatic variables in overlay_strings, but |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2350 it's more efficient to hold onto the memory instead of repeatedly |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2351 allocating and freeing it. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2352 static struct sortstrlist overlay_heads, overlay_tails; |
|
18526
e0d1b341124c
(overlay_str_buf): Declare as unsigned char *.
Richard M. Stallman <rms@gnu.org>
parents:
18495
diff
changeset
|
2353 static unsigned char *overlay_str_buf; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2354 |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2355 /* Allocated length of overlay_str_buf. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2356 static int overlay_str_len; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2357 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2358 /* A comparison function suitable for passing to qsort. */ |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2359 static int |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2360 cmp_for_strings (as1, as2) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2361 char *as1, *as2; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2362 { |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2363 struct sortstr *s1 = (struct sortstr *)as1; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2364 struct sortstr *s2 = (struct sortstr *)as2; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2365 if (s1->size != s2->size) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2366 return s2->size - s1->size; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2367 if (s1->priority != s2->priority) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2368 return s1->priority - s2->priority; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2369 return 0; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2370 } |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2371 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2372 static void |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2373 record_overlay_string (ssl, str, str2, pri, size) |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2374 struct sortstrlist *ssl; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2375 Lisp_Object str, str2, pri; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2376 int size; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2377 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2378 int nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2379 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2380 if (ssl->used == ssl->size) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2381 { |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2382 if (ssl->buf) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2383 ssl->size *= 2; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2384 else |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2385 ssl->size = 5; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2386 ssl->buf = ((struct sortstr *) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2387 xrealloc (ssl->buf, ssl->size * sizeof (struct sortstr))); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2388 } |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2389 ssl->buf[ssl->used].string = str; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2390 ssl->buf[ssl->used].string2 = str2; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2391 ssl->buf[ssl->used].size = size; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2392 ssl->buf[ssl->used].priority = (INTEGERP (pri) ? XINT (pri) : 0); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2393 ssl->used++; |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2394 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2395 if (NILP (current_buffer->enable_multibyte_characters)) |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2396 nbytes = XSTRING (str)->size; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2397 else if (! STRING_MULTIBYTE (str)) |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2398 nbytes = count_size_as_multibyte (XSTRING (str)->data, |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2399 STRING_BYTES (XSTRING (str))); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2400 else |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2401 nbytes = STRING_BYTES (XSTRING (str)); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2402 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2403 ssl->bytes += nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2404 |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2405 if (STRINGP (str2)) |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2406 { |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2407 if (NILP (current_buffer->enable_multibyte_characters)) |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2408 nbytes = XSTRING (str2)->size; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2409 else if (! STRING_MULTIBYTE (str2)) |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2410 nbytes = count_size_as_multibyte (XSTRING (str2)->data, |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2411 STRING_BYTES (XSTRING (str2))); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2412 else |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2413 nbytes = STRING_BYTES (XSTRING (str2)); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2414 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2415 ssl->bytes += nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2416 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2417 } |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2418 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2419 /* 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
|
2420 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
|
2421 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
|
2422 shorter overlays nest inside longer ones, and higher priority inside |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2423 lower. Normally all of the after-strings come first, but zero-sized |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2424 overlays have their after-strings ride along with the before-strings |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2425 because it would look strange to print them inside-out. |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2426 |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2427 Returns the string length, and stores the contents indirectly through |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2428 PSTR, if that variable is non-null. The string may be overwritten by |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2429 subsequent calls. */ |
|
16243
b311d8755530
(overlay_strings): Declare pstr using unsigned char.
Richard M. Stallman <rms@gnu.org>
parents:
16213
diff
changeset
|
2430 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2431 int |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2432 overlay_strings (pos, w, pstr) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2433 int pos; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2434 struct window *w; |
|
16243
b311d8755530
(overlay_strings): Declare pstr using unsigned char.
Richard M. Stallman <rms@gnu.org>
parents:
16213
diff
changeset
|
2435 unsigned char **pstr; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2436 { |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2437 Lisp_Object ov, overlay, window, str; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2438 int startpos, endpos; |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2439 int multibyte = ! NILP (current_buffer->enable_multibyte_characters); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2440 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2441 overlay_heads.used = overlay_heads.bytes = 0; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2442 overlay_tails.used = overlay_tails.bytes = 0; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2443 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
|
2444 { |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2445 overlay = XCONS (ov)->car; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2446 if (!OVERLAYP (overlay)) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2447 abort (); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2448 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2449 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2450 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2451 if (endpos < pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2452 break; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2453 if (endpos != pos && startpos != pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2454 continue; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2455 window = Foverlay_get (overlay, Qwindow); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2456 if (WINDOWP (window) && XWINDOW (window) != w) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2457 continue; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2458 if (startpos == pos |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2459 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2460 record_overlay_string (&overlay_heads, str, |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2461 (startpos == endpos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2462 ? Foverlay_get (overlay, Qafter_string) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2463 : Qnil), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2464 Foverlay_get (overlay, Qpriority), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2465 endpos - startpos); |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2466 else if (endpos == pos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2467 && (str = Foverlay_get (overlay, Qafter_string), STRINGP (str))) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2468 record_overlay_string (&overlay_tails, str, Qnil, |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2469 Foverlay_get (overlay, Qpriority), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2470 endpos - startpos); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2471 } |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2472 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
|
2473 { |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2474 overlay = XCONS (ov)->car; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2475 if (!OVERLAYP (overlay)) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2476 abort (); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2477 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2478 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2479 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2480 if (startpos > pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2481 break; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2482 if (endpos != pos && startpos != pos) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2483 continue; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2484 window = Foverlay_get (overlay, Qwindow); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2485 if (WINDOWP (window) && XWINDOW (window) != w) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2486 continue; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2487 if (startpos == pos |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2488 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2489 record_overlay_string (&overlay_heads, str, |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2490 (startpos == endpos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2491 ? Foverlay_get (overlay, Qafter_string) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2492 : Qnil), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2493 Foverlay_get (overlay, Qpriority), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2494 endpos - startpos); |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2495 else if (endpos == pos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2496 && (str = Foverlay_get (overlay, Qafter_string), STRINGP (str))) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2497 record_overlay_string (&overlay_tails, str, Qnil, |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2498 Foverlay_get (overlay, Qpriority), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2499 endpos - startpos); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2500 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2501 if (overlay_tails.used > 1) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2502 qsort (overlay_tails.buf, overlay_tails.used, sizeof (struct sortstr), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2503 cmp_for_strings); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2504 if (overlay_heads.used > 1) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2505 qsort (overlay_heads.buf, overlay_heads.used, sizeof (struct sortstr), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2506 cmp_for_strings); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2507 if (overlay_heads.bytes || overlay_tails.bytes) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2508 { |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2509 Lisp_Object tem; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2510 int i; |
|
18603
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2511 unsigned char *p; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2512 int total = overlay_heads.bytes + overlay_tails.bytes; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2513 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2514 if (total > overlay_str_len) |
|
18603
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2515 { |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2516 overlay_str_len = total; |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2517 overlay_str_buf = (unsigned char *)xrealloc (overlay_str_buf, |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2518 total); |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
2519 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2520 p = overlay_str_buf; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2521 for (i = overlay_tails.used; --i >= 0;) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2522 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2523 int nbytes; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2524 tem = overlay_tails.buf[i].string; |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2525 nbytes = copy_text (XSTRING (tem)->data, p, |
|
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2526 STRING_BYTES (XSTRING (tem)), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2527 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2528 p += nbytes; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2529 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2530 for (i = 0; i < overlay_heads.used; ++i) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2531 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2532 int nbytes; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2533 tem = overlay_heads.buf[i].string; |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2534 nbytes = copy_text (XSTRING (tem)->data, p, |
|
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2535 STRING_BYTES (XSTRING (tem)), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2536 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2537 p += nbytes; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2538 tem = overlay_heads.buf[i].string2; |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2539 if (STRINGP (tem)) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2540 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2541 nbytes = copy_text (XSTRING (tem)->data, p, |
|
21244
50929073a0ba
Use STRING_BYTES and SET_STRING_BYTES.
Richard M. Stallman <rms@gnu.org>
parents:
21141
diff
changeset
|
2542 STRING_BYTES (XSTRING (tem)), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2543 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2544 p += nbytes; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2545 } |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2546 } |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2547 if (p != overlay_str_buf + total) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2548 abort (); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2549 if (pstr) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2550 *pstr = overlay_str_buf; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2551 return total; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2552 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2553 return 0; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2554 } |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2555 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2556 /* Shift overlays in BUF's overlay lists, to center the lists at POS. */ |
| 333 | 2557 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2558 void |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2559 recenter_overlay_lists (buf, pos) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2560 struct buffer *buf; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2561 int pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2562 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2563 Lisp_Object overlay, tail, next, prev, beg, end; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2564 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2565 /* 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
|
2566 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2567 /* 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
|
2568 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
|
2569 with some future change. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2570 prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2571 for (tail = buf->overlays_before; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2572 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2573 prev = tail, tail = next) |
| 333 | 2574 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2575 next = XCONS (tail)->cdr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2576 overlay = XCONS (tail)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2577 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2578 /* 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
|
2579 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2580 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2581 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2582 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2583 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2584 /* 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
|
2585 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2586 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2587 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2588 buf->overlays_before = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2589 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2590 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2591 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2592 #endif |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2593 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2594 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2595 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2596 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2597 if (OVERLAY_POSITION (end) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2598 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2599 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2600 int where = OVERLAY_POSITION (beg); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2601 Lisp_Object other, other_prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2602 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2603 /* 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
|
2604 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2605 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2606 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2607 buf->overlays_before = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2608 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2609 /* 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
|
2610 other_prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2611 for (other = buf->overlays_after; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2612 CONSP (other); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2613 other_prev = other, other = XCONS (other)->cdr) |
|
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 Lisp_Object otherbeg, otheroverlay, follower; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2616 int win; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2617 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2618 otheroverlay = XCONS (other)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2619 if (! OVERLAY_VALID (otheroverlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2620 abort (); |
|
2389
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 otherbeg = OVERLAY_START (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2623 if (OVERLAY_POSITION (otherbeg) >= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2624 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2625 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2626 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2627 /* Add TAIL to overlays_after before OTHER. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2628 XCONS (tail)->cdr = other; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2629 if (!NILP (other_prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2630 XCONS (other_prev)->cdr = tail; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2631 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2632 buf->overlays_after = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2633 tail = prev; |
|
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 else |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2636 /* 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
|
2637 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
|
2638 so stop now. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2639 break; |
| 333 | 2640 } |
| 2641 | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2642 /* 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
|
2643 prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2644 for (tail = buf->overlays_after; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2645 CONSP (tail); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2646 prev = tail, tail = next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2647 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2648 next = XCONS (tail)->cdr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2649 overlay = XCONS (tail)->car; |
| 333 | 2650 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2651 /* 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
|
2652 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2653 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2654 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2655 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2656 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2657 /* 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
|
2658 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2659 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2660 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2661 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2662 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2663 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2664 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2665 #endif |
| 333 | 2666 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2667 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2668 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2669 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2670 /* Stop looking, when we know that nothing further |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2671 can possibly end before POS. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2672 if (OVERLAY_POSITION (beg) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2673 break; |
| 333 | 2674 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2675 if (OVERLAY_POSITION (end) <= pos) |
| 333 | 2676 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2677 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2678 int where = OVERLAY_POSITION (end); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2679 Lisp_Object other, other_prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2680 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2681 /* 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
|
2682 if (!NILP (prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2683 XCONS (prev)->cdr = next; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2684 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2685 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2686 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2687 /* 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
|
2688 other_prev = Qnil; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2689 for (other = buf->overlays_before; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2690 CONSP (other); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2691 other_prev = other, other = XCONS (other)->cdr) |
| 333 | 2692 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2693 Lisp_Object otherend, otheroverlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2694 int win; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2695 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2696 otheroverlay = XCONS (other)->car; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2697 if (! OVERLAY_VALID (otheroverlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2698 abort (); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2699 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2700 otherend = OVERLAY_END (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2701 if (OVERLAY_POSITION (otherend) <= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2702 break; |
| 333 | 2703 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2704 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2705 /* Add TAIL to overlays_before before OTHER. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2706 XCONS (tail)->cdr = other; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2707 if (!NILP (other_prev)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2708 XCONS (other_prev)->cdr = tail; |
| 333 | 2709 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2710 buf->overlays_before = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2711 tail = prev; |
| 333 | 2712 } |
| 2713 } | |
| 2714 | |
|
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
|
2715 XSETFASTINT (buf->overlay_center, pos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2716 } |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2717 |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2718 void |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2719 adjust_overlays_for_insert (pos, length) |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2720 int pos; |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2721 int length; |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2722 { |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2723 /* 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
|
2724 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
|
2725 if (XFASTINT (current_buffer->overlay_center) >= pos) |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2726 XSETFASTINT (current_buffer->overlay_center, |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2727 XFASTINT (current_buffer->overlay_center) + length); |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2728 } |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2729 |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2730 void |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2731 adjust_overlays_for_delete (pos, length) |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2732 int pos; |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2733 int length; |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2734 { |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2735 if (XFASTINT (current_buffer->overlay_center) < pos) |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2736 /* 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
|
2737 after-lists are still consistent. */ |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2738 ; |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2739 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
|
2740 /* 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
|
2741 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
|
2742 given the new value. */ |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2743 XSETFASTINT (current_buffer->overlay_center, |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2744 XFASTINT (current_buffer->overlay_center) - length); |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2745 else |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2746 /* 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
|
2747 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
|
2748 and also update the center point. */ |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2749 recenter_overlay_lists (current_buffer, pos); |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2750 } |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
2751 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2752 /* 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
|
2753 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
|
2754 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
|
2755 list and reinserted in its proper place. |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2756 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
|
2757 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
|
2758 better to do in this situation? */ |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2759 void |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2760 fix_overlays_in_range (start, end) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2761 register int start, end; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2762 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2763 Lisp_Object tem, overlay; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2764 Lisp_Object before_list, after_list; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2765 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
|
2766 int startpos, endpos; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2767 |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2768 /* 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
|
2769 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
|
2770 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
|
2771 *pbefore (resp. *pafter) points to, is still uninitialized. |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2772 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
|
2773 it may look strange. */ |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2774 for (ptail = ¤t_buffer->overlays_before; CONSP (*ptail);) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2775 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2776 overlay = XCONS (*ptail)->car; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2777 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2778 if (endpos < start) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2779 break; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2780 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2781 if (endpos < end |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2782 || (startpos >= start && startpos < end)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2783 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2784 /* If the overlay is backwards, fix that now. */ |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2785 if (startpos > endpos) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2786 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2787 int tem; |
|
18751
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2788 Fset_marker (OVERLAY_START (overlay), make_number (endpos), |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2789 Qnil); |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2790 Fset_marker (OVERLAY_END (overlay), make_number (startpos), |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2791 Qnil); |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2792 tem = startpos; startpos = endpos; endpos = tem; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2793 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2794 /* 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
|
2795 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
|
2796 if (endpos < XINT (current_buffer->overlay_center)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2797 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2798 *pafter = *ptail; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2799 pafter = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2800 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2801 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2802 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2803 *pbefore = *ptail; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2804 pbefore = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2805 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2806 *ptail = XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2807 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2808 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2809 ptail = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2810 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2811 for (ptail = ¤t_buffer->overlays_after; CONSP (*ptail);) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2812 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2813 overlay = XCONS (*ptail)->car; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2814 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2815 if (startpos >= end) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2816 break; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2817 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2818 if (startpos >= start |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2819 || (endpos >= start && endpos < end)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2820 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2821 if (startpos > endpos) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2822 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2823 int tem; |
|
18751
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2824 Fset_marker (OVERLAY_START (overlay), make_number (endpos), |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2825 Qnil); |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2826 Fset_marker (OVERLAY_END (overlay), make_number (startpos), |
|
c8135c48a66d
(set_buffer_internal_1): Convert Fset_marker argument to Lisp_Integer.
Richard M. Stallman <rms@gnu.org>
parents:
18613
diff
changeset
|
2827 Qnil); |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2828 tem = startpos; startpos = endpos; endpos = tem; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2829 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2830 if (endpos < XINT (current_buffer->overlay_center)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2831 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2832 *pafter = *ptail; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2833 pafter = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2834 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2835 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2836 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2837 *pbefore = *ptail; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2838 pbefore = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2839 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2840 *ptail = XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2841 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2842 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2843 ptail = &XCONS (*ptail)->cdr; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2844 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2845 |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2846 /* 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
|
2847 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
|
2848 *pbefore = current_buffer->overlays_before; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2849 current_buffer->overlays_before = before_list; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2850 recenter_overlay_lists (current_buffer, |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2851 XINT (current_buffer->overlay_center)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2852 |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2853 *pafter = current_buffer->overlays_after; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2854 current_buffer->overlays_after = after_list; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2855 recenter_overlay_lists (current_buffer, |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2856 XINT (current_buffer->overlay_center)); |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
2857 } |
| 17022 | 2858 |
| 2859 /* We have two types of overlay: the one whose ending marker is | |
| 2860 after-insertion-marker (this is the usual case) and the one whose | |
| 2861 ending marker is before-insertion-marker. When `overlays_before' | |
| 2862 contains overlays of the latter type and the former type in this | |
| 2863 order and both overlays end at inserting position, inserting a text | |
| 2864 increases only the ending marker of the latter type, which results | |
| 2865 in incorrect ordering of `overlays_before'. | |
| 2866 | |
| 2867 This function fixes ordering of overlays in the slot | |
| 2868 `overlays_before' of the buffer *BP. Before the insertion, `point' | |
| 2869 was at PREV, and now is at POS. */ | |
| 2870 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
2871 void |
| 17022 | 2872 fix_overlays_before (bp, prev, pos) |
| 2873 struct buffer *bp; | |
| 2874 int prev, pos; | |
| 2875 { | |
| 2876 Lisp_Object *tailp = &bp->overlays_before; | |
| 2877 Lisp_Object *right_place; | |
| 2878 int end; | |
| 2879 | |
| 2880 /* After the insertion, the several overlays may be in incorrect | |
| 2881 order. The possibility is that, in the list `overlays_before', | |
| 2882 an overlay which ends at POS appears after an overlay which ends | |
| 2883 at PREV. Since POS is greater than PREV, we must fix the | |
| 2884 ordering of these overlays, by moving overlays ends at POS before | |
| 2885 the overlays ends at PREV. */ | |
| 2886 | |
| 2887 /* At first, find a place where disordered overlays should be linked | |
| 2888 in. It is where an overlay which end before POS exists. (i.e. an | |
| 2889 overlay whose ending marker is after-insertion-marker if disorder | |
| 2890 exists). */ | |
| 2891 while (!NILP (*tailp) | |
| 2892 && ((end = OVERLAY_POSITION (OVERLAY_END (XCONS (*tailp)->car))) | |
| 2893 >= pos)) | |
| 2894 tailp = &XCONS (*tailp)->cdr; | |
| 2895 | |
| 2896 /* If we don't find such an overlay, | |
| 2897 or the found one ends before PREV, | |
| 2898 or the found one is the last one in the list, | |
| 2899 we don't have to fix anything. */ | |
| 2900 if (NILP (*tailp) | |
| 2901 || end < prev | |
| 2902 || NILP (XCONS (*tailp)->cdr)) | |
| 2903 return; | |
| 2904 | |
| 2905 right_place = tailp; | |
| 2906 tailp = &XCONS (*tailp)->cdr; | |
| 2907 | |
| 2908 /* Now, end position of overlays in the list *TAILP should be before | |
| 2909 or equal to PREV. In the loop, an overlay which ends at POS is | |
| 2910 moved ahead to the place pointed by RIGHT_PLACE. If we found an | |
| 2911 overlay which ends before PREV, the remaining overlays are in | |
| 2912 correct order. */ | |
| 2913 while (!NILP (*tailp)) | |
| 2914 { | |
| 2915 end = OVERLAY_POSITION (OVERLAY_END (XCONS (*tailp)->car)); | |
| 2916 | |
| 2917 if (end == pos) | |
| 2918 { /* This overlay is disordered. */ | |
| 2919 Lisp_Object found = *tailp; | |
| 2920 | |
| 2921 /* Unlink the found overlay. */ | |
| 2922 *tailp = XCONS (found)->cdr; | |
| 2923 /* Move an overlay at RIGHT_PLACE to the next of the found one. */ | |
| 2924 XCONS (found)->cdr = *right_place; | |
| 2925 /* Link it into the right place. */ | |
| 2926 *right_place = found; | |
| 2927 } | |
| 2928 else if (end == prev) | |
| 2929 tailp = &XCONS (*tailp)->cdr; | |
| 2930 else /* No more disordered overlay. */ | |
| 2931 break; | |
| 2932 } | |
| 2933 } | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2934 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2935 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0, |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2936 "Return t if OBJECT is an overlay.") |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2937 (object) |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2938 Lisp_Object object; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2939 { |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2940 return (OVERLAYP (object) ? Qt : Qnil); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2941 } |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2942 |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2943 DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 5, 0, |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2944 "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
|
2945 If omitted, BUFFER defaults to the current buffer.\n\ |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2946 BEG and END may be integers or markers.\n\ |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2947 The fourth arg FRONT-ADVANCE, if non-nil, makes the\n\ |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2948 front delimiter advance when text is inserted there.\n\ |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2949 The fifth arg REAR-ADVANCE, if non-nil, makes the\n\ |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2950 rear delimiter advance when text is inserted there.") |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2951 (beg, end, buffer, front_advance, rear_advance) |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2952 Lisp_Object beg, end, buffer; |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2953 Lisp_Object front_advance, rear_advance; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2954 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2955 Lisp_Object overlay; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2956 struct buffer *b; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2957 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2958 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
2959 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
|
2960 else |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2961 CHECK_BUFFER (buffer, 2); |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2962 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2963 && ! 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
|
2964 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
|
2965 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2966 && ! 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
|
2967 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
|
2968 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2969 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
|
2970 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
|
2971 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2972 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
|
2973 { |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2974 Lisp_Object temp; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2975 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
|
2976 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2977 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2978 b = XBUFFER (buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2979 |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
2980 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
|
2981 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
|
2982 |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2983 if (!NILP (front_advance)) |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2984 XMARKER (beg)->insertion_type = 1; |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2985 if (!NILP (rear_advance)) |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
2986 XMARKER (end)->insertion_type = 1; |
|
13110
206ed64fe032
(Fmake_overlay): Set end-marker's insertion_type to 1.
Richard M. Stallman <rms@gnu.org>
parents:
12998
diff
changeset
|
2987 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
2988 overlay = allocate_misc (); |
|
11244
f3b11dc9014e
(Fmake_overlay): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents:
11214
diff
changeset
|
2989 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
|
2990 XOVERLAY (overlay)->start = beg; |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
2991 XOVERLAY (overlay)->end = end; |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
2992 XOVERLAY (overlay)->plist = Qnil; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2993 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2994 /* Put the new overlay on the wrong list. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2995 end = OVERLAY_END (overlay); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2996 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
|
2997 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
|
2998 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
2999 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
|
3000 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3001 /* 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
|
3002 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
|
3003 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3004 /* 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
|
3005 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
|
3006 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3007 return overlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3008 } |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3009 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3010 /* Mark a section of BUF as needing redisplay because of overlays changes. */ |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3011 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3012 static void |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3013 modify_overlay (buf, start, end) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3014 struct buffer *buf; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3015 int start, end; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3016 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3017 if (start == end) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3018 return; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3019 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3020 if (start > end) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3021 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3022 int temp = start; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3023 start = end; end = temp; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3024 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3025 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3026 /* If this is a buffer not in the selected window, |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3027 we must do other windows. */ |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3028 if (buf != XBUFFER (XWINDOW (selected_window)->buffer)) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3029 windows_or_buffers_changed = 1; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3030 /* If it's not current, we can't use beg_unchanged, end_unchanged for it. */ |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3031 else if (buf != current_buffer) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3032 windows_or_buffers_changed = 1; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3033 /* If multiple windows show this buffer, we must do other windows. */ |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3034 else if (buffer_shared > 1) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3035 windows_or_buffers_changed = 1; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3036 else |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3037 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3038 if (unchanged_modified == MODIFF |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3039 && overlay_unchanged_modified == OVERLAY_MODIFF) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3040 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3041 beg_unchanged = start - BEG; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3042 end_unchanged = Z - end; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3043 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3044 else |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3045 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3046 if (Z - end < end_unchanged) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3047 end_unchanged = Z - end; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3048 if (start - BEG < beg_unchanged) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3049 beg_unchanged = start - BEG; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3050 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3051 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3052 |
|
19801
7482ad23e430
(modify_overlay): Update overlay_modiff of proper buffer.
Richard M. Stallman <rms@gnu.org>
parents:
19581
diff
changeset
|
3053 ++BUF_OVERLAY_MODIFF (buf); |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3054 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3055 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3056 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3057 Lisp_Object Fdelete_overlay (); |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3058 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3059 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
|
3060 "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
|
3061 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
|
3062 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
|
3063 buffer.") |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3064 (overlay, beg, end, buffer) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3065 Lisp_Object overlay, beg, end, buffer; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3066 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3067 struct buffer *b, *ob; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3068 Lisp_Object obuffer; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3069 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
|
3070 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3071 CHECK_OVERLAY (overlay, 0); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3072 if (NILP (buffer)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3073 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
|
3074 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
3075 XSETBUFFER (buffer, current_buffer); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3076 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
|
3077 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3078 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3079 && ! 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
|
3080 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
|
3081 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3082 && ! 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
|
3083 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
|
3084 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3085 CHECK_NUMBER_COERCE_MARKER (beg, 1); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3086 CHECK_NUMBER_COERCE_MARKER (end, 1); |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3087 |
| 8839 | 3088 if (XINT (beg) == XINT (end) && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 3089 return Fdelete_overlay (overlay); | |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3090 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3091 if (XINT (beg) > XINT (end)) |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3092 { |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3093 Lisp_Object temp; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3094 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
|
3095 } |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3096 |
| 8839 | 3097 specbind (Qinhibit_quit, Qt); |
| 3098 | |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3099 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
|
3100 b = XBUFFER (buffer); |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3101 ob = XBUFFER (obuffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3102 |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3103 /* 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
|
3104 if (!EQ (buffer, obuffer)) |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3105 { |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3106 /* Redisplay where the overlay was. */ |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3107 if (!NILP (obuffer)) |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3108 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3109 int o_beg; |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3110 int o_end; |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3111 |
|
18105
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3112 o_beg = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3113 o_end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3114 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3115 modify_overlay (ob, o_beg, o_end); |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3116 } |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3117 |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3118 /* Redisplay where the overlay is going to be. */ |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3119 modify_overlay (b, XINT (beg), XINT (end)); |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3120 } |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3121 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3122 /* 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
|
3123 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3124 int o_beg, o_end; |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3125 int change_beg, change_end; |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3126 |
|
18105
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3127 o_beg = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3128 o_end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3129 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3130 if (o_beg == XINT (beg)) |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3131 modify_overlay (b, o_end, XINT (end)); |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3132 else if (o_end == XINT (end)) |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3133 modify_overlay (b, o_beg, XINT (beg)); |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3134 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3135 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3136 if (XINT (beg) < o_beg) o_beg = XINT (beg); |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3137 if (XINT (end) > o_end) o_end = XINT (end); |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3138 modify_overlay (b, o_beg, o_end); |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3139 } |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3140 } |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3141 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3142 if (!NILP (obuffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3143 { |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3144 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
|
3145 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
|
3146 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3147 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3148 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
|
3149 Fset_marker (OVERLAY_END (overlay), end, buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3150 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3151 /* Put the overlay on the wrong list. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3152 end = OVERLAY_END (overlay); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3153 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
|
3154 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
|
3155 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3156 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
|
3157 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3158 /* 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
|
3159 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
|
3160 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3161 return unbind_to (count, overlay); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3162 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3163 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3164 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
|
3165 "Delete the overlay OVERLAY from its buffer.") |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3166 (overlay) |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3167 Lisp_Object overlay; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3168 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3169 Lisp_Object buffer; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3170 struct buffer *b; |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3171 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
|
3172 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3173 CHECK_OVERLAY (overlay, 0); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3174 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3175 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
|
3176 if (NILP (buffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3177 return Qnil; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3178 |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3179 b = XBUFFER (buffer); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3180 |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3181 specbind (Qinhibit_quit, Qt); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3182 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3183 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
|
3184 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
|
3185 |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3186 modify_overlay (b, |
| 21898 | 3187 marker_position (OVERLAY_START (overlay)), |
| 3188 marker_position (OVERLAY_END (overlay))); | |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3189 |
|
2791
4f234fbfb02c
* buffer.c (Fmove_overlay): If the overlay is in no buffer and the
Jim Blandy <jimb@redhat.com>
parents:
2787
diff
changeset
|
3190 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
|
3191 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
|
3192 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3193 return unbind_to (count, Qnil); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3194 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3195 |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3196 /* Overlay dissection functions. */ |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3197 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3198 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
|
3199 "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
|
3200 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3201 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3202 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3203 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3204 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3205 return (Fmarker_position (OVERLAY_START (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3206 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3207 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3208 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
|
3209 "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
|
3210 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3211 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3212 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3213 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3214 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3215 return (Fmarker_position (OVERLAY_END (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3216 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3217 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3218 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
|
3219 "Return the buffer OVERLAY belongs to.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3220 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3221 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3222 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3223 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3224 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3225 return Fmarker_buffer (OVERLAY_START (overlay)); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3226 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3227 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3228 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
|
3229 "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
|
3230 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
|
3231 OVERLAY.") |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3232 (overlay) |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3233 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3234 { |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3235 CHECK_OVERLAY (overlay, 0); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3236 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3237 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
|
3238 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3239 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3240 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3241 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
|
3242 "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
|
3243 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3244 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3245 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3246 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3247 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3248 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3249 Lisp_Object result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3250 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3251 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3252 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3253 len = 10; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3254 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
|
3255 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3256 /* 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
|
3257 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
|
3258 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
|
3259 (int *) 0, (int *) 0); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3260 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3261 /* Make a list of them all. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3262 result = Flist (noverlays, overlay_vec); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3263 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
3264 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3265 return result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3266 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3267 |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3268 DEFUN ("overlays-in", Foverlays_in, Soverlays_in, 2, 2, 0, |
|
12488
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
3269 "Return a list of the overlays that overlap the region BEG ... END.\n\ |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
3270 Overlap means that at least one character is contained within the overlay\n\ |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
3271 and also contained within the specified region.\n\ |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
3272 Empty overlays are included in the result if they are located at BEG\n\ |
|
71aa23be0228
(overlays_in): Don't count empty overlays at END.
Richard M. Stallman <rms@gnu.org>
parents:
12382
diff
changeset
|
3273 or between BEG and END.") |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3274 (beg, end) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3275 Lisp_Object beg, end; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3276 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3277 int noverlays; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3278 Lisp_Object *overlay_vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3279 int len; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3280 Lisp_Object result; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3281 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3282 CHECK_NUMBER_COERCE_MARKER (beg, 0); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3283 CHECK_NUMBER_COERCE_MARKER (end, 0); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3284 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3285 len = 10; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3286 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3287 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3288 /* Put all the overlays we want in a vector in overlay_vec. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3289 Store the length in len. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3290 noverlays = overlays_in (XINT (beg), XINT (end), 1, &overlay_vec, &len, |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3291 (int *) 0, (int *) 0); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3292 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3293 /* Make a list of them all. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3294 result = Flist (noverlays, overlay_vec); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3295 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3296 xfree (overlay_vec); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3297 return result; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3298 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3299 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3300 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
|
3301 1, 1, 0, |
| 7492 | 3302 "Return the next position after POS where an overlay starts or ends.\n\ |
| 3303 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
|
3304 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3305 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3306 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3307 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3308 int endpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3309 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3310 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3311 int i; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3312 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3313 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3314 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3315 len = 10; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3316 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
|
3317 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3318 /* 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
|
3319 Store the length in len. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3320 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
|
3321 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
|
3322 &endpos, (int *) 0); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3323 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3324 /* If any of these overlays ends before endpos, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3325 use its ending point instead. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3326 for (i = 0; i < noverlays; i++) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3327 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3328 Lisp_Object oend; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3329 int oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3330 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3331 oend = OVERLAY_END (overlay_vec[i]); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3332 oendpos = OVERLAY_POSITION (oend); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3333 if (oendpos < endpos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3334 endpos = oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3335 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3336 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
3337 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3338 return make_number (endpos); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3339 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3340 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3341 DEFUN ("previous-overlay-change", Fprevious_overlay_change, |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3342 Sprevious_overlay_change, 1, 1, 0, |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3343 "Return the previous position before POS where an overlay starts or ends.\n\ |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3344 If there are no more overlay boundaries before POS, return (point-min).") |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3345 (pos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3346 Lisp_Object pos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3347 { |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3348 int noverlays; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3349 int prevpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3350 Lisp_Object *overlay_vec; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3351 int len; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3352 int i; |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3353 Lisp_Object tail; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3354 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3355 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3356 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3357 len = 10; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3358 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
|
3359 |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3360 /* At beginning of buffer, we know the answer; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3361 avoid bug subtracting 1 below. */ |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3362 if (XINT (pos) == BEGV) |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3363 return pos; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3364 |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3365 /* 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
|
3366 Store the length in len. |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3367 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
|
3368 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
|
3369 (int *) 0, &prevpos); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3370 |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3371 /* If any of these overlays starts after prevpos, |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3372 maybe use its starting point instead. */ |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3373 for (i = 0; i < noverlays; i++) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3374 { |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3375 Lisp_Object ostart; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3376 int ostartpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3377 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3378 ostart = OVERLAY_START (overlay_vec[i]); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3379 ostartpos = OVERLAY_POSITION (ostart); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3380 if (ostartpos > prevpos && ostartpos < XINT (pos)) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3381 prevpos = ostartpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3382 } |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3383 |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3384 /* If any overlay ends at pos, consider its starting point too. */ |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3385 for (tail = current_buffer->overlays_before; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3386 GC_CONSP (tail); |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3387 tail = XCONS (tail)->cdr) |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3388 { |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3389 Lisp_Object overlay, ostart; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3390 int ostartpos; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3391 |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3392 overlay = XCONS (tail)->car; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3393 |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3394 ostart = OVERLAY_START (overlay); |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3395 ostartpos = OVERLAY_POSITION (ostart); |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3396 if (ostartpos > prevpos && ostartpos < XINT (pos)) |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3397 prevpos = ostartpos; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3398 } |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3399 |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3400 xfree (overlay_vec); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3401 return make_number (prevpos); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3402 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3403 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3404 /* These functions are for debugging overlays. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3405 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3406 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
|
3407 "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
|
3408 The car has all the overlays before the overlay center;\n\ |
| 7492 | 3409 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
|
3410 Recentering overlays moves overlays between these lists.\n\ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3411 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
|
3412 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
|
3413 () |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3414 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3415 Lisp_Object before, after; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3416 before = current_buffer->overlays_before; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3417 if (CONSP (before)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3418 before = Fcopy_sequence (before); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3419 after = current_buffer->overlays_after; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3420 if (CONSP (after)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3421 after = Fcopy_sequence (after); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3422 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3423 return Fcons (before, after); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3424 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3425 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3426 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
|
3427 "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
|
3428 (pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3429 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3430 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3431 CHECK_NUMBER_COERCE_MARKER (pos, 0); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3432 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3433 recenter_overlay_lists (current_buffer, XINT (pos)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3434 return Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3435 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3436 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3437 DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0, |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
3438 "Get the property of overlay OVERLAY with property name PROP.") |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3439 (overlay, prop) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3440 Lisp_Object overlay, prop; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3441 { |
|
9211
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3442 Lisp_Object plist, fallback; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3443 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3444 CHECK_OVERLAY (overlay, 0); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3445 |
|
9211
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3446 fallback = Qnil; |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3447 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3448 for (plist = XOVERLAY (overlay)->plist; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3449 CONSP (plist) && CONSP (XCONS (plist)->cdr); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3450 plist = XCONS (XCONS (plist)->cdr)->cdr) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3451 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3452 if (EQ (XCONS (plist)->car, prop)) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3453 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
|
3454 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
|
3455 { |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3456 Lisp_Object tem; |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3457 tem = Fcar (Fcdr (plist)); |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3458 if (SYMBOLP (tem)) |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3459 fallback = Fget (tem, prop); |
|
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3460 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3461 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3462 |
|
9211
c7bfa0da167b
(Foverlay_get): Handle `category' property on overlay.
Richard M. Stallman <rms@gnu.org>
parents:
9146
diff
changeset
|
3463 return fallback; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3464 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3465 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3466 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
|
3467 "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
|
3468 (overlay, prop, value) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3469 Lisp_Object overlay, prop, value; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3470 { |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3471 Lisp_Object tail, buffer; |
| 8839 | 3472 int changed; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3473 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3474 CHECK_OVERLAY (overlay, 0); |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3475 |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
3476 buffer = Fmarker_buffer (OVERLAY_START (overlay)); |
|
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
3477 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3478 for (tail = XOVERLAY (overlay)->plist; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3479 CONSP (tail) && CONSP (XCONS (tail)->cdr); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3480 tail = XCONS (XCONS (tail)->cdr)->cdr) |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
3481 if (EQ (XCONS (tail)->car, prop)) |
|
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
3482 { |
| 8839 | 3483 changed = !EQ (XCONS (XCONS (tail)->cdr)->car, value); |
| 3484 XCONS (XCONS (tail)->cdr)->car = value; | |
| 3485 goto found; | |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
3486 } |
| 8839 | 3487 /* It wasn't in the list, so add it to the front. */ |
| 3488 changed = !NILP (value); | |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3489 XOVERLAY (overlay)->plist |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3490 = Fcons (prop, Fcons (value, XOVERLAY (overlay)->plist)); |
| 8839 | 3491 found: |
| 3492 if (! NILP (buffer)) | |
| 3493 { | |
| 3494 if (changed) | |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3495 modify_overlay (XBUFFER (buffer), |
| 8839 | 3496 marker_position (OVERLAY_START (overlay)), |
| 3497 marker_position (OVERLAY_END (overlay))); | |
| 3498 if (EQ (prop, Qevaporate) && ! NILP (value) | |
| 3499 && (OVERLAY_POSITION (OVERLAY_START (overlay)) | |
| 3500 == OVERLAY_POSITION (OVERLAY_END (overlay)))) | |
| 3501 Fdelete_overlay (overlay); | |
| 3502 } | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3503 return value; |
| 333 | 3504 } |
| 3505 | |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3506 /* Subroutine of report_overlay_modification. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3507 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3508 /* Lisp vector holding overlay hook functions to call. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3509 Vector elements come in pairs. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3510 Each even-index element is a list of hook functions. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3511 The following odd-index element is the overlay they came from. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3512 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3513 Before the buffer change, we fill in this vector |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3514 as we call overlay hook functions. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3515 After the buffer change, we get the functions to call from this vector. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3516 This way we always call the same functions before and after the change. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3517 static Lisp_Object last_overlay_modification_hooks; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3518 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3519 /* Number of elements actually used in last_overlay_modification_hooks. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3520 static int last_overlay_modification_hooks_used; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3521 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3522 /* Add one functionlist/overlay pair |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3523 to the end of last_overlay_modification_hooks. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3524 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3525 static void |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3526 add_overlay_mod_hooklist (functionlist, overlay) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3527 Lisp_Object functionlist, overlay; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3528 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3529 int oldsize = XVECTOR (last_overlay_modification_hooks)->size; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3530 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3531 if (last_overlay_modification_hooks_used == oldsize) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3532 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3533 Lisp_Object old; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3534 old = last_overlay_modification_hooks; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3535 last_overlay_modification_hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3536 = Fmake_vector (make_number (oldsize * 2), Qnil); |
|
15122
a46a40f1c30c
(add_overlay_mod_hooklist): Fix call to bcopy.
Richard M. Stallman <rms@gnu.org>
parents:
15032
diff
changeset
|
3537 bcopy (XVECTOR (old)->contents, |
|
a46a40f1c30c
(add_overlay_mod_hooklist): Fix call to bcopy.
Richard M. Stallman <rms@gnu.org>
parents:
15032
diff
changeset
|
3538 XVECTOR (last_overlay_modification_hooks)->contents, |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3539 sizeof (Lisp_Object) * oldsize); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3540 } |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3541 XVECTOR (last_overlay_modification_hooks)->contents[last_overlay_modification_hooks_used++] = functionlist; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3542 XVECTOR (last_overlay_modification_hooks)->contents[last_overlay_modification_hooks_used++] = overlay; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3543 } |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3544 |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3545 /* Run the modification-hooks of overlays that include |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3546 any part of the text in START to END. |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3547 If this change is an insertion, also |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3548 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
|
3549 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
|
3550 |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3551 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
|
3552 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
|
3553 |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3554 ARG1, ARG2, ARG3 are arguments to pass to the hook functions. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3555 When AFTER is nonzero, they are the start position, |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3556 the position after the inserted new text, |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3557 and the length of deleted or replaced old text. */ |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3558 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3559 void |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3560 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
|
3561 Lisp_Object start, end; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3562 int after; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3563 Lisp_Object arg1, arg2, arg3; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3564 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3565 Lisp_Object prop, overlay, tail; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3566 /* 1 if this change is an insertion. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3567 int insertion = (after ? XFASTINT (arg3) == 0 : EQ (start, end)); |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3568 int tail_copied; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3569 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
|
3570 |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3571 overlay = Qnil; |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3572 tail = Qnil; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3573 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
|
3574 |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3575 if (after) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3576 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3577 /* Call the functions recorded in last_overlay_modification_hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3578 rather than scanning the overlays again. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3579 First copy the vector contents, in case some of these hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3580 do subsequent modification of the buffer. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3581 int size = last_overlay_modification_hooks_used; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3582 Lisp_Object *copy = (Lisp_Object *) alloca (size * sizeof (Lisp_Object)); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3583 int i; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3584 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3585 bcopy (XVECTOR (last_overlay_modification_hooks)->contents, |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3586 copy, size * sizeof (Lisp_Object)); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3587 gcpro1.var = copy; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3588 gcpro1.nvars = size; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3589 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3590 for (i = 0; i < size;) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3591 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3592 Lisp_Object prop, overlay; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3593 prop = copy[i++]; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3594 overlay = copy[i++]; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3595 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3596 } |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3597 UNGCPRO; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3598 return; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3599 } |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3600 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3601 /* We are being called before a change. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3602 Scan the overlays to find the functions to call. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3603 last_overlay_modification_hooks_used = 0; |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3604 tail_copied = 0; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3605 for (tail = current_buffer->overlays_before; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3606 CONSP (tail); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3607 tail = XCONS (tail)->cdr) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3608 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3609 int startpos, endpos; |
|
4416
9657ef911049
(Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents:
4226
diff
changeset
|
3610 Lisp_Object ostart, oend; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3611 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3612 overlay = XCONS (tail)->car; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3613 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3614 ostart = OVERLAY_START (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3615 oend = OVERLAY_END (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3616 endpos = OVERLAY_POSITION (oend); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3617 if (XFASTINT (start) > endpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3618 break; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3619 startpos = OVERLAY_POSITION (ostart); |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3620 if (insertion && (XFASTINT (start) == startpos |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3621 || XFASTINT (end) == startpos)) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3622 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3623 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3624 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3625 { |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3626 /* 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
|
3627 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3628 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3629 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3630 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
|
3631 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3632 } |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3633 if (insertion && (XFASTINT (start) == endpos |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3634 || XFASTINT (end) == endpos)) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3635 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3636 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3637 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3638 { |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3639 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3640 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3641 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3642 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
|
3643 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3644 } |
|
6675
cf38c5af079d
(verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents:
6659
diff
changeset
|
3645 /* 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
|
3646 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
|
3647 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3648 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3649 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3650 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3651 { |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3652 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3653 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3654 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3655 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
|
3656 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3657 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3658 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3659 |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3660 tail_copied = 0; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3661 for (tail = current_buffer->overlays_after; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3662 CONSP (tail); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3663 tail = XCONS (tail)->cdr) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3664 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3665 int startpos, endpos; |
|
4416
9657ef911049
(Fmove_overlay): Avoid initializer for Lisp_Object vars.
Richard M. Stallman <rms@gnu.org>
parents:
4226
diff
changeset
|
3666 Lisp_Object ostart, oend; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3667 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3668 overlay = XCONS (tail)->car; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3669 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3670 ostart = OVERLAY_START (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3671 oend = OVERLAY_END (overlay); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3672 startpos = OVERLAY_POSITION (ostart); |
|
4574
503af6aa135b
(verify_overlay_modification): initialize endpos.
Richard M. Stallman <rms@gnu.org>
parents:
4416
diff
changeset
|
3673 endpos = OVERLAY_POSITION (oend); |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3674 if (XFASTINT (end) < startpos) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3675 break; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3676 if (insertion && (XFASTINT (start) == startpos |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3677 || XFASTINT (end) == startpos)) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3678 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3679 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3680 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3681 { |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3682 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3683 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3684 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3685 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
|
3686 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3687 } |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3688 if (insertion && (XFASTINT (start) == endpos |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3689 || XFASTINT (end) == endpos)) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3690 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3691 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3692 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3693 { |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3694 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3695 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3696 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3697 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
|
3698 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3699 } |
|
6675
cf38c5af079d
(verify_overlay_modification): Run modification-hooks for any deletion that
Karl Heuer <kwzh@gnu.org>
parents:
6659
diff
changeset
|
3700 /* 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
|
3701 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
|
3702 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3703 { |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3704 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3705 if (!NILP (prop)) |
|
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
3706 { |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3707 if (!tail_copied) |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3708 tail = Fcopy_sequence (tail); |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3709 tail_copied = 1; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3710 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
|
3711 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3712 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3713 } |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3714 |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
3715 UNGCPRO; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3716 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3717 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3718 static void |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3719 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
|
3720 Lisp_Object list, overlay; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3721 int after; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3722 Lisp_Object arg1, arg2, arg3; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3723 { |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3724 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3725 |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3726 GCPRO4 (list, arg1, arg2, arg3); |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3727 if (! after) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3728 add_overlay_mod_hooklist (list, overlay); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
3729 |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3730 while (!NILP (list)) |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3731 { |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3732 if (NILP (arg3)) |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3733 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
|
3734 else |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
3735 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
|
3736 list = Fcdr (list); |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3737 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3738 UNGCPRO; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3739 } |
| 8839 | 3740 |
| 3741 /* Delete any zero-sized overlays at position POS, if the `evaporate' | |
| 3742 property is set. */ | |
| 3743 void | |
| 3744 evaporate_overlays (pos) | |
| 3745 int pos; | |
| 3746 { | |
| 3747 Lisp_Object tail, overlay, hit_list; | |
| 3748 | |
| 3749 hit_list = Qnil; | |
| 3750 if (pos <= XFASTINT (current_buffer->overlay_center)) | |
| 3751 for (tail = current_buffer->overlays_before; CONSP (tail); | |
| 3752 tail = XCONS (tail)->cdr) | |
| 3753 { | |
| 3754 int endpos; | |
| 3755 overlay = XCONS (tail)->car; | |
| 3756 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); | |
| 3757 if (endpos < pos) | |
| 3758 break; | |
| 3759 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
|
3760 && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 8839 | 3761 hit_list = Fcons (overlay, hit_list); |
| 3762 } | |
| 3763 else | |
| 3764 for (tail = current_buffer->overlays_after; CONSP (tail); | |
| 3765 tail = XCONS (tail)->cdr) | |
| 3766 { | |
| 3767 int startpos; | |
|
9006
186aff8c1f51
(evaporate_overlays): Overlay is in car, not cdr.
Karl Heuer <kwzh@gnu.org>
parents:
8967
diff
changeset
|
3768 overlay = XCONS (tail)->car; |
| 8839 | 3769 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
| 3770 if (startpos > pos) | |
| 3771 break; | |
| 3772 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
|
3773 && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 8839 | 3774 hit_list = Fcons (overlay, hit_list); |
| 3775 } | |
| 3776 for (; CONSP (hit_list); hit_list = XCONS (hit_list)->cdr) | |
| 3777 Fdelete_overlay (XCONS (hit_list)->car); | |
| 3778 } | |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
3779 |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
3780 /* Somebody has tried to store a value with an unacceptable type |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3781 in the slot with offset OFFSET. */ |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3782 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3783 void |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
3784 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
|
3785 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
|
3786 { |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
3787 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
|
3788 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
|
3789 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
|
3790 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
|
3791 { |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3792 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
|
3793 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
|
3794 case Lisp_Symbol: type_name = "symbols"; break; |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3795 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3796 default: |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3797 abort (); |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3798 } |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3799 |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3800 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
|
3801 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
|
3802 } |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
3803 |
| 21514 | 3804 void |
| 333 | 3805 init_buffer_once () |
| 3806 { | |
| 3807 register Lisp_Object tem; | |
| 3808 | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3809 buffer_permanent_local_flags = 0; |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3810 |
| 333 | 3811 /* Make sure all markable slots in buffer_defaults |
| 3812 are initialized reasonably, so mark_buffer won't choke. */ | |
| 3813 reset_buffer (&buffer_defaults); | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3814 reset_buffer_local_variables (&buffer_defaults, 1); |
| 333 | 3815 reset_buffer (&buffer_local_symbols); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3816 reset_buffer_local_variables (&buffer_local_symbols, 1); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3817 /* Prevent GC from getting confused. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3818 buffer_defaults.text = &buffer_defaults.own_text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3819 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
|
3820 #ifdef USE_TEXT_PROPERTIES |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3821 BUF_INTERVALS (&buffer_defaults) = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3822 BUF_INTERVALS (&buffer_local_symbols) = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
3823 #endif |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
3824 XSETBUFFER (Vbuffer_defaults, &buffer_defaults); |
|
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
3825 XSETBUFFER (Vbuffer_local_symbols, &buffer_local_symbols); |
| 333 | 3826 |
| 3827 /* Set up the default values of various buffer slots. */ | |
| 3828 /* Must do these before making the first buffer! */ | |
| 3829 | |
| 3830 /* real setup is done in loaddefs.el */ | |
| 3831 buffer_defaults.mode_line_format = build_string ("%-"); | |
| 3832 buffer_defaults.abbrev_mode = Qnil; | |
| 3833 buffer_defaults.overwrite_mode = Qnil; | |
| 3834 buffer_defaults.case_fold_search = Qt; | |
| 3835 buffer_defaults.auto_fill_function = Qnil; | |
| 3836 buffer_defaults.selective_display = Qnil; | |
| 3837 #ifndef old | |
| 3838 buffer_defaults.selective_display_ellipses = Qt; | |
| 3839 #endif | |
| 3840 buffer_defaults.abbrev_table = Qnil; | |
| 3841 buffer_defaults.display_table = Qnil; | |
| 3842 buffer_defaults.undo_list = Qnil; | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
3843 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
|
3844 buffer_defaults.file_format = Qnil; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3845 buffer_defaults.overlays_before = Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3846 buffer_defaults.overlays_after = Qnil; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3847 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
|
3848 |
|
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
|
3849 XSETFASTINT (buffer_defaults.tab_width, 8); |
| 333 | 3850 buffer_defaults.truncate_lines = Qnil; |
| 3851 buffer_defaults.ctl_arrow = Qt; | |
| 17022 | 3852 buffer_defaults.direction_reversed = Qnil; |
| 333 | 3853 |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3854 #ifdef DOS_NT |
|
7270
0f79f4bd3c62
(init_buffer_once): Initialize buffer_file_type field right.
Richard M. Stallman <rms@gnu.org>
parents:
7062
diff
changeset
|
3855 buffer_defaults.buffer_file_type = Qnil; /* TEXT */ |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
3856 #endif |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
3857 buffer_defaults.enable_multibyte_characters = Qt; |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
3858 buffer_defaults.buffer_file_coding_system = 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
|
3859 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
|
3860 XSETFASTINT (buffer_defaults.left_margin, 0); |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
3861 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
|
3862 buffer_defaults.file_truename = Qnil; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
3863 XSETFASTINT (buffer_defaults.display_count, 0); |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
3864 buffer_defaults.display_time = Qnil; |
| 333 | 3865 |
| 3866 /* Assign the local-flags to the slots that have default values. | |
| 3867 The local flag is a bit that is used in the buffer | |
| 3868 to say that it has its own local value for the slot. | |
| 3869 The local flag bits are in the local_var_flags slot of the buffer. */ | |
| 3870 | |
| 3871 /* 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
|
3872 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); |
| 333 | 3873 |
| 3874 /* 0 means not a lisp var, -1 means always local, else mask */ | |
| 3875 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
|
3876 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
|
3877 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
|
3878 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
|
3879 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
|
3880 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
|
3881 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
|
3882 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
|
3883 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
|
3884 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
|
3885 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
|
3886 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
|
3887 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
|
3888 XSETINT (buffer_local_flags.invisibility_spec, -1); |
|
13262
fe65b6bde340
(reset_buffer): Initialize redisplay_end_trigger slot.
Richard M. Stallman <rms@gnu.org>
parents:
13240
diff
changeset
|
3889 XSETINT (buffer_local_flags.file_format, -1); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
3890 XSETINT (buffer_local_flags.display_count, -1); |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
3891 XSETINT (buffer_local_flags.display_time, -1); |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3892 XSETINT (buffer_local_flags.enable_multibyte_characters, -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
|
3893 |
|
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
|
3894 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
|
3895 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
|
3896 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
|
3897 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
|
3898 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
|
3899 XSETFASTINT (buffer_local_flags.selective_display, 0x20); |
| 333 | 3900 #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
|
3901 XSETFASTINT (buffer_local_flags.selective_display_ellipses, 0x40); |
| 333 | 3902 #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
|
3903 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
|
3904 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
|
3905 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
|
3906 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
|
3907 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
|
3908 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
|
3909 XSETFASTINT (buffer_local_flags.display_table, 0x2000); |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3910 #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
|
3911 XSETFASTINT (buffer_local_flags.buffer_file_type, 0x4000); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3912 /* Make this one a permanent local. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
3913 buffer_permanent_local_flags |= 0x4000; |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
3914 #endif |
|
15786
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
3915 XSETFASTINT (buffer_local_flags.syntax_table, 0x8000); |
|
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
3916 XSETFASTINT (buffer_local_flags.cache_long_line_scans, 0x10000); |
| 17022 | 3917 XSETFASTINT (buffer_local_flags.category_table, 0x20000); |
| 3918 XSETFASTINT (buffer_local_flags.direction_reversed, 0x40000); | |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
3919 XSETFASTINT (buffer_local_flags.buffer_file_coding_system, 0x80000); |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
3920 /* Make this one a permanent local. */ |
|
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
3921 buffer_permanent_local_flags |= 0x80000; |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
3922 |
| 333 | 3923 Vbuffer_alist = Qnil; |
| 3924 current_buffer = 0; | |
| 3925 all_buffers = 0; | |
| 3926 | |
| 3927 QSFundamental = build_string ("Fundamental"); | |
| 3928 | |
| 3929 Qfundamental_mode = intern ("fundamental-mode"); | |
| 3930 buffer_defaults.major_mode = Qfundamental_mode; | |
| 3931 | |
| 3932 Qmode_class = intern ("mode-class"); | |
| 3933 | |
| 3934 Qprotected_field = intern ("protected-field"); | |
| 3935 | |
| 3936 Qpermanent_local = intern ("permanent-local"); | |
| 3937 | |
| 3938 Qkill_buffer_hook = intern ("kill-buffer-hook"); | |
| 3939 | |
| 3940 Vprin1_to_string_buffer = Fget_buffer_create (build_string (" prin1")); | |
| 14396 | 3941 |
| 333 | 3942 /* super-magic invisible buffer */ |
| 3943 Vbuffer_alist = Qnil; | |
| 3944 | |
| 648 | 3945 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); |
| 333 | 3946 } |
| 3947 | |
| 21514 | 3948 void |
| 333 | 3949 init_buffer () |
| 3950 { | |
| 3951 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
|
3952 char *pwd; |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
3953 struct stat dotstat, pwdstat; |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
3954 Lisp_Object temp; |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3955 int rc; |
| 333 | 3956 |
| 3957 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); | |
|
21141
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
3958 if (NILP (buffer_defaults.enable_multibyte_characters)) |
|
e30cebe8ae7c
(init_buffer): Call Fset_buffer_multibyte for *scratch*.
Richard M. Stallman <rms@gnu.org>
parents:
21085
diff
changeset
|
3959 Fset_buffer_multibyte (Qnil); |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
3960 |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
3961 /* 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
|
3962 when PWD is right, and may avoid a fatal error. */ |
|
22171
e23d16d11ba9
(init_buffer): Support DOS_NT absolute file names.
Richard M. Stallman <rms@gnu.org>
parents:
22150
diff
changeset
|
3963 if ((pwd = getenv ("PWD")) != 0 |
|
e23d16d11ba9
(init_buffer): Support DOS_NT absolute file names.
Richard M. Stallman <rms@gnu.org>
parents:
22150
diff
changeset
|
3964 && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1]))) |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
3965 && 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
|
3966 && 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
|
3967 && 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
|
3968 && 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
|
3969 && 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
|
3970 strcpy (buf, pwd); |
|
19242
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
3971 #ifdef HAVE_GETCWD |
|
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
3972 else if (getcwd (buf, MAXPATHLEN+1) == 0) |
| 19581 | 3973 fatal ("`getcwd' failed: %s\n", strerror (errno)); |
|
19242
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
3974 #else |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
3975 else if (getwd (buf) == 0) |
|
9810
c76b3e670eb3
(init_buffer): Fix error message syntax.
Richard M. Stallman <rms@gnu.org>
parents:
9785
diff
changeset
|
3976 fatal ("`getwd' failed: %s\n", buf); |
|
19242
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
3977 #endif |
| 333 | 3978 |
| 3979 #ifndef VMS | |
| 3980 /* Maybe this should really use some standard subroutine | |
| 3981 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
|
3982 rc = strlen (buf); |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3983 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
|
3984 { |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3985 buf[rc] = DIRECTORY_SEP; |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3986 buf[rc + 1] = '\0'; |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
3987 } |
| 333 | 3988 #endif /* not VMS */ |
|
16384
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
3989 |
| 333 | 3990 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
|
3991 |
|
16384
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
3992 /* Add /: to the front of the name |
|
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
3993 if it would otherwise be treated as magic. */ |
|
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
3994 temp = Ffind_file_name_handler (current_buffer->directory, Qt); |
|
20080
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
3995 if (! NILP (temp) |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
3996 /* If the default dir is just /, TEMP is non-nil |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
3997 because of the ange-ftp completion handler. |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
3998 However, it is not necessary to turn / into /:/. |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
3999 So avoid doing that. */ |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
4000 && strcmp ("/", XSTRING (current_buffer->directory)->data)) |
|
16384
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
4001 current_buffer->directory |
|
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
4002 = concat2 (build_string ("/:"), current_buffer->directory); |
|
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
4003 |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
4004 temp = get_minibuffer (0); |
|
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
4005 XBUFFER (temp)->directory = current_buffer->directory; |
| 333 | 4006 } |
| 4007 | |
| 4008 /* initialize the buffer routines */ | |
| 21514 | 4009 void |
| 333 | 4010 syms_of_buffer () |
| 4011 { | |
|
2060
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
4012 extern Lisp_Object Qdisabled; |
|
7eea4dfc5133
(syms_of_buffer): Make erase-buffer a disabled command.
Roland McGrath <roland@gnu.org>
parents:
2043
diff
changeset
|
4013 |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4014 staticpro (&last_overlay_modification_hooks); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4015 last_overlay_modification_hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4016 = Fmake_vector (make_number (10), Qnil); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4017 |
| 333 | 4018 staticpro (&Vbuffer_defaults); |
| 4019 staticpro (&Vbuffer_local_symbols); | |
| 4020 staticpro (&Qfundamental_mode); | |
| 4021 staticpro (&Qmode_class); | |
| 4022 staticpro (&QSFundamental); | |
| 4023 staticpro (&Vbuffer_alist); | |
| 4024 staticpro (&Qprotected_field); | |
| 4025 staticpro (&Qpermanent_local); | |
| 4026 staticpro (&Qkill_buffer_hook); | |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4027 Qoverlayp = intern ("overlayp"); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
4028 staticpro (&Qoverlayp); |
| 8839 | 4029 Qevaporate = intern ("evaporate"); |
| 4030 staticpro (&Qevaporate); | |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4031 Qmodification_hooks = intern ("modification-hooks"); |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
4032 staticpro (&Qmodification_hooks); |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
4033 Qinsert_in_front_hooks = intern ("insert-in-front-hooks"); |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4034 staticpro (&Qinsert_in_front_hooks); |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
4035 Qinsert_behind_hooks = intern ("insert-behind-hooks"); |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4036 staticpro (&Qinsert_behind_hooks); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4037 Qget_file_buffer = intern ("get-file-buffer"); |
| 5433 | 4038 staticpro (&Qget_file_buffer); |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
4039 Qpriority = intern ("priority"); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
4040 staticpro (&Qpriority); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
4041 Qwindow = intern ("window"); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
4042 staticpro (&Qwindow); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
4043 Qbefore_string = intern ("before-string"); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
4044 staticpro (&Qbefore_string); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
4045 Qafter_string = intern ("after-string"); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
4046 staticpro (&Qafter_string); |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4047 Qfirst_change_hook = intern ("first-change-hook"); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4048 staticpro (&Qfirst_change_hook); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4049 Qbefore_change_functions = intern ("before-change-functions"); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4050 staticpro (&Qbefore_change_functions); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4051 Qafter_change_functions = intern ("after-change-functions"); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
4052 staticpro (&Qafter_change_functions); |
| 333 | 4053 |
| 4054 Fput (Qprotected_field, Qerror_conditions, | |
| 4055 Fcons (Qprotected_field, Fcons (Qerror, Qnil))); | |
| 4056 Fput (Qprotected_field, Qerror_message, | |
| 4057 build_string ("Attempt to modify a protected field")); | |
| 4058 | |
| 4059 /* All these use DEFVAR_LISP_NOPRO because the slots in | |
| 4060 buffer_defaults will all be marked via Vbuffer_defaults. */ | |
| 4061 | |
| 4062 DEFVAR_LISP_NOPRO ("default-mode-line-format", | |
| 4063 &buffer_defaults.mode_line_format, | |
| 4064 "Default value of `mode-line-format' for buffers that don't override it.\n\ | |
| 4065 This is the same as (default-value 'mode-line-format)."); | |
| 4066 | |
| 4067 DEFVAR_LISP_NOPRO ("default-abbrev-mode", | |
| 4068 &buffer_defaults.abbrev_mode, | |
| 4069 "Default value of `abbrev-mode' for buffers that do not override it.\n\ | |
| 4070 This is the same as (default-value 'abbrev-mode)."); | |
| 4071 | |
| 4072 DEFVAR_LISP_NOPRO ("default-ctl-arrow", | |
| 4073 &buffer_defaults.ctl_arrow, | |
| 4074 "Default value of `ctl-arrow' for buffers that do not override it.\n\ | |
| 4075 This is the same as (default-value 'ctl-arrow)."); | |
| 4076 | |
| 17022 | 4077 DEFVAR_LISP_NOPRO ("default-direction-reversed", |
| 4078 &buffer_defaults.direction_reversed, | |
| 4079 "Default value of `direction_reversed' for buffers that do not override it.\n\ | |
| 4080 This is the same as (default-value 'direction-reversed)."); | |
| 4081 | |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4082 DEFVAR_LISP_NOPRO ("default-enable-multibyte-characters", |
|
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4083 &buffer_defaults.enable_multibyte_characters, |
|
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4084 "Default value of `enable-multibyte-characters' for buffers not overriding it.\n\ |
|
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4085 This is the same as (default-value 'enable-multibyte-characters)."); |
|
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4086 |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4087 DEFVAR_LISP_NOPRO ("default-buffer-file-coding-system", |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4088 &buffer_defaults.buffer_file_coding_system, |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4089 "Default value of `buffer-file-coding-system' for buffers not overriding it.\n\ |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4090 This is the same as (default-value 'buffer-file-coding-system)."); |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4091 |
| 333 | 4092 DEFVAR_LISP_NOPRO ("default-truncate-lines", |
| 4093 &buffer_defaults.truncate_lines, | |
| 4094 "Default value of `truncate-lines' for buffers that do not override it.\n\ | |
| 4095 This is the same as (default-value 'truncate-lines)."); | |
| 4096 | |
| 4097 DEFVAR_LISP_NOPRO ("default-fill-column", | |
| 4098 &buffer_defaults.fill_column, | |
| 4099 "Default value of `fill-column' for buffers that do not override it.\n\ | |
| 4100 This is the same as (default-value 'fill-column)."); | |
| 4101 | |
| 4102 DEFVAR_LISP_NOPRO ("default-left-margin", | |
| 4103 &buffer_defaults.left_margin, | |
| 4104 "Default value of `left-margin' for buffers that do not override it.\n\ | |
| 4105 This is the same as (default-value 'left-margin)."); | |
| 4106 | |
| 4107 DEFVAR_LISP_NOPRO ("default-tab-width", | |
| 4108 &buffer_defaults.tab_width, | |
| 4109 "Default value of `tab-width' for buffers that do not override it.\n\ | |
| 4110 This is the same as (default-value 'tab-width)."); | |
| 4111 | |
| 4112 DEFVAR_LISP_NOPRO ("default-case-fold-search", | |
| 4113 &buffer_defaults.case_fold_search, | |
| 4114 "Default value of `case-fold-search' for buffers that don't override it.\n\ | |
| 4115 This is the same as (default-value 'case-fold-search)."); | |
| 4116 | |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
4117 #ifdef DOS_NT |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4118 DEFVAR_LISP_NOPRO ("default-buffer-file-type", |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4119 &buffer_defaults.buffer_file_type, |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4120 "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
|
4121 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
|
4122 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
|
4123 #endif |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4124 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4125 DEFVAR_PER_BUFFER ("mode-line-format", ¤t_buffer->mode_line_format, |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4126 Qnil, 0); |
| 333 | 4127 |
| 4128 /* This doc string is too long for cpp; cpp dies if it isn't in a comment. | |
| 4129 But make-docfile finds it! | |
| 4130 DEFVAR_PER_BUFFER ("mode-line-format", ¤t_buffer->mode_line_format, | |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
4131 Qnil, |
| 333 | 4132 "Template for displaying mode line for current buffer.\n\ |
| 4133 Each buffer has its own value of this variable.\n\ | |
| 4134 Value may be a string, a symbol or a list or cons cell.\n\ | |
| 4135 For a symbol, its value is used (but it is ignored if t or nil).\n\ | |
| 4136 A string appearing directly as the value of a symbol is processed verbatim\n\ | |
| 4137 in that the %-constructs below are not recognized.\n\ | |
| 4138 For a list whose car is a symbol, the symbol's value is taken,\n\ | |
| 4139 and if that is non-nil, the cadr of the list is processed recursively.\n\ | |
| 4140 Otherwise, the caddr of the list (if there is one) is processed.\n\ | |
| 4141 For a list whose car is a string or list, each element is processed\n\ | |
| 4142 recursively and the results are effectively concatenated.\n\ | |
| 4143 For a list whose car is an integer, the cdr of the list is processed\n\ | |
| 4144 and padded (if the number is positive) or truncated (if negative)\n\ | |
| 4145 to the width specified by that number.\n\ | |
| 4146 A string is printed verbatim in the mode line except for %-constructs:\n\ | |
| 4147 (%-constructs are allowed when the string is the entire mode-line-format\n\ | |
| 4148 or when it is found in a cons-cell or a list)\n\ | |
| 4149 %b -- print buffer name. %f -- print visited file name.\n\ | |
| 19977 | 4150 %F -- print frame name.\n\ |
|
8125
3941618b4c2b
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8123
diff
changeset
|
4151 %* -- print %, * or hyphen. %+ -- print *, % or hyphen.\n\ |
|
3941618b4c2b
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
8123
diff
changeset
|
4152 % 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
|
4153 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
|
4154 %s -- print process status. %l -- print the current line number.\n\ |
|
15032
0d32c8a2ae39
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
14506
diff
changeset
|
4155 %c -- print the current column number (this makes editing slower).\n\ |
|
18921
099aeb6bf4ea
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18751
diff
changeset
|
4156 To make the column number update correctly in all cases,\n\ |
|
099aeb6bf4ea
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
18751
diff
changeset
|
4157 `column-number-mode' must be non-nil.\n\ |
|
5904
7f95b8e1ec44
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
5873
diff
changeset
|
4158 %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
|
4159 %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
|
4160 or print Bottom or All.\n\ |
| 333 | 4161 %n -- print Narrow if appropriate.\n\ |
|
16370
d45a787999ef
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
16243
diff
changeset
|
4162 %t -- print T if file is text, B if binary.\n\ |
| 333 | 4163 %[ -- print one [ for each recursive editing level. %] similar.\n\ |
| 4164 %% -- print %. %- -- print infinitely many dashes.\n\ | |
| 4165 Decimal digits after the % specify field width to which to pad."); | |
| 4166 */ | |
| 4167 | |
| 4168 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode, | |
| 4169 "*Major mode for new buffers. Defaults to `fundamental-mode'.\n\ | |
| 4170 nil here means use current buffer's major mode."); | |
| 4171 | |
| 4172 DEFVAR_PER_BUFFER ("major-mode", ¤t_buffer->major_mode, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4173 make_number (Lisp_Symbol), |
| 333 | 4174 "Symbol for current buffer's major mode."); |
| 4175 | |
| 4176 DEFVAR_PER_BUFFER ("mode-name", ¤t_buffer->mode_name, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4177 make_number (Lisp_String), |
| 333 | 4178 "Pretty name of current buffer's major mode (a string)."); |
| 4179 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4180 DEFVAR_PER_BUFFER ("abbrev-mode", ¤t_buffer->abbrev_mode, Qnil, |
| 333 | 4181 "Non-nil turns on automatic expansion of abbrevs as they are inserted.\n\ |
| 4182 Automatically becomes buffer-local when set in any fashion."); | |
| 4183 | |
| 4184 DEFVAR_PER_BUFFER ("case-fold-search", ¤t_buffer->case_fold_search, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4185 Qnil, |
| 333 | 4186 "*Non-nil if searches should ignore case.\n\ |
| 4187 Automatically becomes buffer-local when set in any fashion."); | |
| 4188 | |
| 4189 DEFVAR_PER_BUFFER ("fill-column", ¤t_buffer->fill_column, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4190 make_number (Lisp_Int), |
| 333 | 4191 "*Column beyond which automatic line-wrapping should happen.\n\ |
| 4192 Automatically becomes buffer-local when set in any fashion."); | |
| 4193 | |
| 4194 DEFVAR_PER_BUFFER ("left-margin", ¤t_buffer->left_margin, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4195 make_number (Lisp_Int), |
| 333 | 4196 "*Column for the default indent-line-function to indent to.\n\ |
| 4197 Linefeed indents to this column in Fundamental mode.\n\ | |
| 4198 Automatically becomes buffer-local when set in any fashion."); | |
| 4199 | |
| 4200 DEFVAR_PER_BUFFER ("tab-width", ¤t_buffer->tab_width, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4201 make_number (Lisp_Int), |
| 333 | 4202 "*Distance between tab stops (for display of tab characters), in columns.\n\ |
| 4203 Automatically becomes buffer-local when set in any fashion."); | |
| 4204 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4205 DEFVAR_PER_BUFFER ("ctl-arrow", ¤t_buffer->ctl_arrow, Qnil, |
| 333 | 4206 "*Non-nil means display control chars with uparrow.\n\ |
|
18009
7c256846be75
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
17735
diff
changeset
|
4207 A value of nil means use backslash and octal digits.\n\ |
| 333 | 4208 Automatically becomes buffer-local when set in any fashion.\n\ |
| 4209 This variable does not apply to characters whose display is specified\n\ | |
| 4210 in the current display table (if there is one)."); | |
| 4211 | |
| 17022 | 4212 DEFVAR_PER_BUFFER ("enable-multibyte-characters", |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
4213 ¤t_buffer->enable_multibyte_characters, |
|
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
4214 make_number (-1), |
|
23174
eb56d7e8faa1
(enable-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents:
22191
diff
changeset
|
4215 "*Non-nil means the buffer contents are regarded as multi-byte characters.\n\ |
|
eb56d7e8faa1
(enable-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents:
22191
diff
changeset
|
4216 Otherwise they are regarded as unibyte. This affects the display,\n\ |
|
eb56d7e8faa1
(enable-multibyte-characters): Doc fix.
Dave Love <fx@gnu.org>
parents:
22191
diff
changeset
|
4217 file I/O and the behavior of various editing commands."); |
| 17022 | 4218 |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4219 DEFVAR_PER_BUFFER ("buffer-file-coding-system", |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4220 ¤t_buffer->buffer_file_coding_system, Qnil, |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4221 "Coding system to be used for encoding the buffer contents on saving.\n\ |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4222 If it is nil, the buffer is saved without any code conversion unless\n\ |
|
21969
96ae627335f5
(syms_of_buffer) <buffer-file-coding-system>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21898
diff
changeset
|
4223 some coding system is specified in `file-coding-system-alist'\n\ |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4224 for the buffer file.\n\ |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4225 \n\ |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4226 This variable is never applied to a way of decoding\n\ |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4227 a file while reading it."); |
|
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4228 |
| 17022 | 4229 DEFVAR_PER_BUFFER ("direction-reversed", ¤t_buffer->direction_reversed, |
| 4230 Qnil, | |
| 4231 "*Non-nil means lines in the buffer are displayed right to left."); | |
| 4232 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4233 DEFVAR_PER_BUFFER ("truncate-lines", ¤t_buffer->truncate_lines, Qnil, |
| 333 | 4234 "*Non-nil means do not display continuation lines;\n\ |
| 4235 give each line of text one screen line.\n\ | |
| 4236 Automatically becomes buffer-local when set in any fashion.\n\ | |
| 4237 \n\ | |
| 4238 Note that this is overridden by the variable\n\ | |
| 4239 `truncate-partial-width-windows' if that variable is non-nil\n\ | |
| 764 | 4240 and this buffer is not full-frame width."); |
| 333 | 4241 |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
4242 #ifdef DOS_NT |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4243 DEFVAR_PER_BUFFER ("buffer-file-type", ¤t_buffer->buffer_file_type, |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4244 Qnil, |
|
10253
4aa245b5eb83
(syms_of_buffer): Doc fix for buffer-file-type.
Richard M. Stallman <rms@gnu.org>
parents:
10210
diff
changeset
|
4245 "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
|
4246 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
|
4247 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
|
4248 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
|
4249 #endif |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4250 |
| 333 | 4251 DEFVAR_PER_BUFFER ("default-directory", ¤t_buffer->directory, |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4252 make_number (Lisp_String), |
| 333 | 4253 "Name of default directory of current buffer. Should end with slash.\n\ |
| 4254 Each buffer has its own value of this variable."); | |
| 4255 | |
| 4256 DEFVAR_PER_BUFFER ("auto-fill-function", ¤t_buffer->auto_fill_function, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4257 Qnil, |
| 333 | 4258 "Function called (if non-nil) to perform auto-fill.\n\ |
| 15638 | 4259 It is called after self-inserting a space or newline.\n\ |
| 333 | 4260 Each buffer has its own value of this variable.\n\ |
| 15638 | 4261 NOTE: This variable is not a hook;\n\ |
| 4262 its value may not be a list of functions."); | |
| 333 | 4263 |
| 4264 DEFVAR_PER_BUFFER ("buffer-file-name", ¤t_buffer->filename, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4265 make_number (Lisp_String), |
| 333 | 4266 "Name of file visited in current buffer, or nil if not visiting a file.\n\ |
| 4267 Each buffer has its own value of this variable."); | |
| 4268 | |
|
10751
dea8f022819d
(syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents:
10668
diff
changeset
|
4269 DEFVAR_PER_BUFFER ("buffer-file-truename", ¤t_buffer->file_truename, |
|
dea8f022819d
(syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents:
10668
diff
changeset
|
4270 make_number (Lisp_String), |
|
12354
dfcab1d5249d
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
12214
diff
changeset
|
4271 "Abbreviated truename of file visited in current buffer, or nil if none.\n\ |
|
11823
51194e0d2967
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
11693
diff
changeset
|
4272 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
|
4273 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
|
4274 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
|
4275 |
| 333 | 4276 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name", |
| 1041 | 4277 ¤t_buffer->auto_save_file_name, |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4278 make_number (Lisp_String), |
| 333 | 4279 "Name of file for auto-saving current buffer,\n\ |
| 4280 or nil if buffer should not be auto-saved.\n\ | |
| 4281 Each buffer has its own value of this variable."); | |
| 4282 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4283 DEFVAR_PER_BUFFER ("buffer-read-only", ¤t_buffer->read_only, Qnil, |
| 333 | 4284 "Non-nil if this buffer is read-only.\n\ |
| 4285 Each buffer has its own value of this variable."); | |
| 4286 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4287 DEFVAR_PER_BUFFER ("buffer-backed-up", ¤t_buffer->backed_up, Qnil, |
| 333 | 4288 "Non-nil if this buffer's file has been backed up.\n\ |
| 4289 Backing up is done before the first time the file is saved.\n\ | |
| 4290 Each buffer has its own value of this variable."); | |
| 4291 | |
| 4292 DEFVAR_PER_BUFFER ("buffer-saved-size", ¤t_buffer->save_length, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4293 make_number (Lisp_Int), |
| 333 | 4294 "Length of current buffer when last read in, saved or auto-saved.\n\ |
| 4295 0 initially.\n\ | |
| 4296 Each buffer has its own value of this variable."); | |
| 4297 | |
| 4298 DEFVAR_PER_BUFFER ("selective-display", ¤t_buffer->selective_display, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4299 Qnil, |
| 333 | 4300 "Non-nil enables selective display:\n\ |
| 4301 Integer N as value means display only lines\n\ | |
| 4302 that start with less than n columns of space.\n\ | |
| 4303 A value of t means, after a ^M, all the rest of the line is invisible.\n\ | |
| 4304 Then ^M's in the file are written into files as newlines.\n\n\ | |
| 4305 Automatically becomes buffer-local when set in any fashion."); | |
| 4306 | |
| 4307 #ifndef old | |
| 4308 DEFVAR_PER_BUFFER ("selective-display-ellipses", | |
| 4309 ¤t_buffer->selective_display_ellipses, | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4310 Qnil, |
| 333 | 4311 "t means display ... on previous line when a line is invisible.\n\ |
| 4312 Automatically becomes buffer-local when set in any fashion."); | |
| 4313 #endif | |
| 4314 | |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4315 DEFVAR_PER_BUFFER ("overwrite-mode", ¤t_buffer->overwrite_mode, Qnil, |
| 333 | 4316 "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
|
4317 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
|
4318 `overwrite-mode-binary', or nil.\n\ |
|
eafe5efc009b
(syms_of_buffer): overwrite-mode doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
10561
diff
changeset
|
4319 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
|
4320 inserts at the end of a line, and inserts when point is before a tab,\n\ |
| 2217 | 4321 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
|
4322 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.\n\ |
| 333 | 4323 Automatically becomes buffer-local when set in any fashion."); |
| 4324 | |
|
4226
7c7e33d6386d
(syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
4213
diff
changeset
|
4325 #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
|
4326 but make-docfile can find it in this comment. */ |
| 333 | 4327 DEFVAR_PER_BUFFER ("buffer-display-table", ¤t_buffer->display_table, |
|
1038
59fa7697bb14
(syms_of_buffer): Made buffer-display-table,
Richard M. Stallman <rms@gnu.org>
parents:
1001
diff
changeset
|
4328 Qnil, |
| 333 | 4329 "Display table that controls display of the contents of current buffer.\n\ |
| 4330 Automatically becomes buffer-local when set in any fashion.\n\ | |
|
13169
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4331 The display table is a char-table created with `make-display-table'.\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4332 The ordinary char-table elements control how to display each possible text\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4333 character. Each value should be a vector of characters or nil;\n\ |
| 333 | 4334 nil means display the character in the default fashion.\n\ |
|
13169
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4335 There are six extra slots to control the display of\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4336 the end of a truncated screen line (extra-slot 0, a single character);\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4337 the end of a continued line (extra-slot 1, a single character);\n\ |
|
2645
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
4338 the escape character used to display character codes in octal\n\ |
|
13169
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4339 (extra-slot 2, a single character);\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4340 the character used as an arrow for control characters (extra-slot 3,\n\ |
|
2645
b0462d46afff
* buffer.c (syms_of_buffer): Doc fix for buffer-display-table.
Jim Blandy <jimb@redhat.com>
parents:
2578
diff
changeset
|
4341 a single character);\n\ |
|
13169
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4342 the decoration indicating the presence of invisible lines (extra-slot 4,\n\ |
|
8919
644f69fe736e
Add a new element to display tables controlling side-by-side
Jim Blandy <jimb@redhat.com>
parents:
8873
diff
changeset
|
4343 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
|
4344 the character used to draw the border between side-by-side windows\n\ |
|
13169
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4345 (extra-slot 5, a single character).\n\ |
|
d72f18f068a8
(buffer-display-table): Document new implementation.
Erik Naggum <erik@naggum.no>
parents:
13151
diff
changeset
|
4346 See also the functions `display-table-slot' and `set-display-table-slot'.\n\ |
| 333 | 4347 If this variable is nil, the value of `standard-display-table' is used.\n\ |
| 4348 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
|
4349 #endif |
|
7c7e33d6386d
(syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
4213
diff
changeset
|
4350 DEFVAR_PER_BUFFER ("buffer-display-table", ¤t_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
|
4351 Qnil, 0); |
| 333 | 4352 |
| 4353 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol, | |
| 4354 "Don't ask."); | |
| 4355 */ | |
| 392 | 4356 DEFVAR_LISP ("before-change-function", &Vbefore_change_function, |
|
16144
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4357 "If non-nil, a function to call before each text change (obsolete).\n\ |
| 333 | 4358 Two arguments are passed to the function: the positions of\n\ |
| 4359 the beginning and end of the range of old text to be changed.\n\ | |
| 4360 \(For an insertion, the beginning and end are at the same place.)\n\ | |
| 4361 No information is given about the length of the text after the change.\n\ | |
| 4362 \n\ | |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4363 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
|
4364 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
|
4365 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
|
4366 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
|
4367 these variables. See the Emacs Lisp manual for a way of\n\ |
|
16144
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4368 accomplishing an equivalent result by using other variables.\n\n\ |
|
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4369 This variable is obsolete; use `before-change-functions' instead."); |
| 333 | 4370 Vbefore_change_function = Qnil; |
| 4371 | |
| 4372 DEFVAR_LISP ("after-change-function", &Vafter_change_function, | |
|
16144
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4373 "If non-nil, a Function to call after each text change (obsolete).\n\ |
| 333 | 4374 Three arguments are passed to the function: the positions of\n\ |
| 4375 the beginning and end of the range of changed text,\n\ | |
| 4376 and the length of the pre-change text replaced by that range.\n\ | |
| 4377 \(For an insertion, the pre-change length is zero;\n\ | |
|
19466
3fce1e7c0fd0
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
19242
diff
changeset
|
4378 for a deletion, that length is the number of bytes deleted,\n\ |
| 333 | 4379 and the post-change beginning and end are at the same place.)\n\ |
| 4380 \n\ | |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4381 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
|
4382 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
|
4383 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
|
4384 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
|
4385 these variables. See the Emacs Lisp manual for a way of\n\ |
|
16144
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4386 accomplishing an equivalent result by using other variables.\n\n\ |
|
2ca3765fdc00
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
16067
diff
changeset
|
4387 This variable is obsolete; use `after-change-functions' instead."); |
| 333 | 4388 Vafter_change_function = Qnil; |
| 4389 | |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4390 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
|
4391 "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
|
4392 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
|
4393 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
|
4394 \(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
|
4395 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
|
4396 \n\ |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4397 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
|
4398 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
|
4399 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
|
4400 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
|
4401 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
|
4402 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
|
4403 Vbefore_change_functions = Qnil; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4404 |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4405 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
|
4406 "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
|
4407 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
|
4408 the beginning and end of the range of changed text,\n\ |
|
19466
3fce1e7c0fd0
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
19242
diff
changeset
|
4409 and the length in bytes of the pre-change text replaced by that range.\n\ |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4410 \(For an insertion, the pre-change length is zero;\n\ |
|
19466
3fce1e7c0fd0
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
19242
diff
changeset
|
4411 for a deletion, that length is the number of bytes deleted,\n\ |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4412 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
|
4413 \n\ |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4414 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
|
4415 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
|
4416 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
|
4417 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
|
4418 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
|
4419 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
|
4420 |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4421 Vafter_change_functions = Qnil; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
4422 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
4423 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook, |
|
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
4424 "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
|
4425 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
|
4426 Vfirst_change_hook = Qnil; |
| 333 | 4427 |
|
4226
7c7e33d6386d
(syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
4213
diff
changeset
|
4428 #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
|
4429 but make-docfile can find it in this comment. */ |
| 1041 | 4430 DEFVAR_PER_BUFFER ("buffer-undo-list", ¤t_buffer->undo_list, Qnil, |
| 333 | 4431 "List of undo entries in current buffer.\n\ |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4432 This variable is always local in all buffers.\n\ |
| 333 | 4433 Recent changes come first; older changes follow newer.\n\ |
| 4434 \n\ | |
| 12101 | 4435 An entry (BEG . END) represents an insertion which begins at\n\ |
| 4436 position BEG and ends at position END.\n\ | |
| 333 | 4437 \n\ |
| 4438 An entry (TEXT . POSITION) represents the deletion of the string TEXT\n\ | |
| 4439 from (abs POSITION). If POSITION is positive, point was at the front\n\ | |
| 4440 of the text being deleted; if negative, point was at the end.\n\ | |
| 4441 \n\ | |
|
10365
3a50d7d3ae47
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
10314
diff
changeset
|
4442 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
|
4443 \"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
|
4444 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
|
4445 modification time of the most recent save is different, this entry is\n\ |
| 333 | 4446 obsolete.\n\ |
| 4447 \n\ | |
|
10365
3a50d7d3ae47
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
10314
diff
changeset
|
4448 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
|
4449 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
|
4450 and VALUE is the old value.\n\ |
|
1952
b0ec61f76511
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
1909
diff
changeset
|
4451 \n\ |
|
14481
9785f1180901
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
14396
diff
changeset
|
4452 An entry (MARKER . DISTANCE) indicates that the marker MARKER\n\ |
|
9785f1180901
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
14396
diff
changeset
|
4453 was adjusted in position by the offset DISTANCE (an integer).\n\ |
|
9785f1180901
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
14396
diff
changeset
|
4454 \n\ |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
4455 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
|
4456 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
|
4457 point at POSITION.\n\ |
|
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
4458 \n\ |
| 333 | 4459 nil marks undo boundaries. The undo command treats the changes\n\ |
| 4460 between two undo boundaries as a single step to be undone.\n\ | |
| 4461 \n\ | |
|
1985
666e3f26a8d6
* buffer.c (buffer-undo-list): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1953
diff
changeset
|
4462 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
|
4463 #endif |
|
7c7e33d6386d
(syms_of_buffer): Lisp var doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
4213
diff
changeset
|
4464 DEFVAR_PER_BUFFER ("buffer-undo-list", ¤t_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
|
4465 0); |
| 333 | 4466 |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4467 DEFVAR_PER_BUFFER ("mark-active", ¤t_buffer->mark_active, Qnil, |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4468 "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
|
4469 Automatically local in all buffers."); |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4470 |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
4471 DEFVAR_PER_BUFFER ("cache-long-line-scans", ¤t_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
|
4472 "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
|
4473 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
|
4474 \n\ |
|
9419
b429144f6ace
(syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents:
9403
diff
changeset
|
4475 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
|
4476 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
|
4477 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
|
4478 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
|
4479 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
|
4480 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
|
4481 longer to update the display.\n\ |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
4482 \n\ |
|
9419
b429144f6ace
(syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents:
9403
diff
changeset
|
4483 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
|
4484 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
|
4485 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
|
4486 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
|
4487 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
|
4488 same, fixed screen width.\n\ |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
4489 \n\ |
|
9419
b429144f6ace
(syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents:
9403
diff
changeset
|
4490 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
|
4491 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
|
4492 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
|
4493 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
|
4494 \n\ |
|
b429144f6ace
(syms_of_buffer): Doc fix for cache-long-line-scans.
Jim Blandy <jimb@redhat.com>
parents:
9403
diff
changeset
|
4495 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
|
4496 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
|
4497 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
|
4498 functions; it should only affect their performance."); |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
4499 |
|
10561
53f34c870201
(init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
10505
diff
changeset
|
4500 DEFVAR_PER_BUFFER ("point-before-scroll", ¤t_buffer->point_before_scroll, Qnil, |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4501 "Value of point before the last series of scroll operations, or nil.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4502 This variable is always local in all buffers."); |
|
10561
53f34c870201
(init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
10505
diff
changeset
|
4503 |
|
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
|
4504 DEFVAR_PER_BUFFER ("buffer-file-format", ¤t_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
|
4505 "List of formats to use when saving this buffer.\n\ |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4506 This variable is always local in all buffers.\n\ |
|
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
|
4507 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
|
4508 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
|
4509 |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
4510 DEFVAR_PER_BUFFER ("buffer-invisibility-spec", |
|
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
4511 ¤t_buffer->invisibility_spec, Qnil, |
|
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
4512 "Invisibility spec of this buffer.\n\ |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4513 This variable is always local in all buffers.\n\ |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
4514 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
|
4515 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
|
4516 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
|
4517 property is an element in that list.\n\ |
| 11112 | 4518 If an element is a cons cell of the form (PROP . ELLIPSIS),\n\ |
| 4519 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
|
4520 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
|
4521 |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
4522 DEFVAR_PER_BUFFER ("buffer-display-count", |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
4523 ¤t_buffer->display_count, Qnil, |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4524 "A number incremented each time this buffer is displayed in a window.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4525 This variable is always local in all buffers.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4526 The function `set-window-buffer increments it."); |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4527 |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4528 DEFVAR_PER_BUFFER ("buffer-display-time", |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4529 ¤t_buffer->display_time, Qnil, |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4530 "Time stamp updated each time this buffer is displayed in a window.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4531 This variable is always local in all buffers.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4532 The function `set-window-buffer' updates this variable\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4533 to the value obtained by calling `current-time'.\n\ |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4534 If the buffer has never been shown in a window, the value is nil."); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
4535 |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4536 DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode, |
|
16665
195f7cf6a9f3
(syms_of_buffer): Doc fix (transient-mark-mode).
Richard M. Stallman <rms@gnu.org>
parents:
16384
diff
changeset
|
4537 "*Non-nil means deactivate the mark when the buffer contents change.\n\ |
|
195f7cf6a9f3
(syms_of_buffer): Doc fix (transient-mark-mode).
Richard M. Stallman <rms@gnu.org>
parents:
16384
diff
changeset
|
4538 Non-nil also enables highlighting of the region whenever the mark is active.\n\ |
|
195f7cf6a9f3
(syms_of_buffer): Doc fix (transient-mark-mode).
Richard M. Stallman <rms@gnu.org>
parents:
16384
diff
changeset
|
4539 The variable `highlight-nonselected-windows' controls whether to highlight\n\ |
|
195f7cf6a9f3
(syms_of_buffer): Doc fix (transient-mark-mode).
Richard M. Stallman <rms@gnu.org>
parents:
16384
diff
changeset
|
4540 all windows or just the selected window."); |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4541 Vtransient_mark_mode = Qnil; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4542 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
4543 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
|
4544 "*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
|
4545 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
|
4546 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
|
4547 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
|
4548 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
|
4549 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
|
4550 |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
4551 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
|
4552 "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
|
4553 Vkill_buffer_query_functions = Qnil; |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
4554 |
|
14506
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
4555 defsubr (&Sbuffer_live_p); |
| 333 | 4556 defsubr (&Sbuffer_list); |
| 4557 defsubr (&Sget_buffer); | |
| 4558 defsubr (&Sget_file_buffer); | |
| 4559 defsubr (&Sget_buffer_create); | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
4560 defsubr (&Smake_indirect_buffer); |
| 392 | 4561 defsubr (&Sgenerate_new_buffer_name); |
| 333 | 4562 defsubr (&Sbuffer_name); |
| 4563 /*defsubr (&Sbuffer_number);*/ | |
| 4564 defsubr (&Sbuffer_file_name); | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
4565 defsubr (&Sbuffer_base_buffer); |
| 333 | 4566 defsubr (&Sbuffer_local_variables); |
| 4567 defsubr (&Sbuffer_modified_p); | |
| 4568 defsubr (&Sset_buffer_modified_p); | |
| 4569 defsubr (&Sbuffer_modified_tick); | |
| 4570 defsubr (&Srename_buffer); | |
| 4571 defsubr (&Sother_buffer); | |
| 4572 defsubr (&Sbuffer_disable_undo); | |
| 4573 defsubr (&Sbuffer_enable_undo); | |
| 4574 defsubr (&Skill_buffer); | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
4575 defsubr (&Sset_buffer_major_mode); |
| 333 | 4576 defsubr (&Sswitch_to_buffer); |
| 4577 defsubr (&Spop_to_buffer); | |
| 4578 defsubr (&Scurrent_buffer); | |
| 4579 defsubr (&Sset_buffer); | |
| 4580 defsubr (&Sbarf_if_buffer_read_only); | |
| 4581 defsubr (&Sbury_buffer); | |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
4582 defsubr (&Serase_buffer); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
4583 defsubr (&Sset_buffer_multibyte); |
| 333 | 4584 defsubr (&Skill_all_local_variables); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4585 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
4586 defsubr (&Soverlayp); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4587 defsubr (&Smake_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4588 defsubr (&Sdelete_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4589 defsubr (&Smove_overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
4590 defsubr (&Soverlay_start); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
4591 defsubr (&Soverlay_end); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
4592 defsubr (&Soverlay_buffer); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
4593 defsubr (&Soverlay_properties); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4594 defsubr (&Soverlays_at); |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
4595 defsubr (&Soverlays_in); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4596 defsubr (&Snext_overlay_change); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
4597 defsubr (&Sprevious_overlay_change); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4598 defsubr (&Soverlay_recenter); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4599 defsubr (&Soverlay_lists); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4600 defsubr (&Soverlay_get); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4601 defsubr (&Soverlay_put); |
| 333 | 4602 } |
| 4603 | |
| 21514 | 4604 void |
| 333 | 4605 keys_of_buffer () |
| 4606 { | |
| 4607 initial_define_key (control_x_map, 'b', "switch-to-buffer"); | |
| 4608 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
|
4609 |
|
2c5f3537a1cc
(syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents:
5502
diff
changeset
|
4610 /* 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
|
4611 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
|
4612 Fput (intern ("erase-buffer"), Qdisabled, Qt); |
| 333 | 4613 } |
