Mercurial > emacs
annotate src/buffer.c @ 54786:870b7a6bffb8
(Fgenerate_new_buffer_name): Return NAME argument if IGNORE argument
equals NAME. Doc fix.
| author | Luc Teirlinck <teirllm@auburn.edu> |
|---|---|
| date | Sun, 11 Apr 2004 15:40:56 +0000 |
| parents | 956112814473 |
| children | 8df5ed349fc2 |
| rev | line source |
|---|---|
| 333 | 1 /* Buffer manipulation primitives for GNU Emacs. |
|
53655
4f64423a6040
(buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53602
diff
changeset
|
2 Copyright (C) 1985,86,87,88,89,93,94,95,97,98, 1999, 2000, 2001, 02, 03, 2004 |
|
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 |
|
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
26056
diff
changeset
|
22 #include <config.h> |
| 333 | 23 |
|
1563
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/types.h> |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
25 #include <sys/stat.h> |
| 333 | 26 #include <sys/param.h> |
| 19581 | 27 #include <errno.h> |
| 31886 | 28 #include <stdio.h> |
| 19581 | 29 |
|
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30911
diff
changeset
|
30 #ifndef USE_CRT_DLL |
| 19581 | 31 extern int errno; |
|
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30911
diff
changeset
|
32 #endif |
| 333 | 33 |
| 34 #ifndef MAXPATHLEN | |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
35 /* in 4.1 [probably SunOS? -stef] , param.h fails to define this. */ |
| 333 | 36 #define MAXPATHLEN 1024 |
| 37 #endif /* not MAXPATHLEN */ | |
| 38 | |
| 21514 | 39 #ifdef HAVE_UNISTD_H |
| 40 #include <unistd.h> | |
| 41 #endif | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
42 |
| 333 | 43 #include "lisp.h" |
|
1308
2660a7053836
* buffer.c: #include intervals.h.
Joseph Arceneaux <jla@gnu.org>
parents:
1291
diff
changeset
|
44 #include "intervals.h" |
| 333 | 45 #include "window.h" |
| 46 #include "commands.h" | |
| 47 #include "buffer.h" | |
| 17022 | 48 #include "charset.h" |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
49 #include "region-cache.h" |
| 333 | 50 #include "indent.h" |
| 2480 | 51 #include "blockinput.h" |
|
31102
6a0caa788013
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
30911
diff
changeset
|
52 #include "keyboard.h" |
|
39748
42b7a798ff79
Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39581
diff
changeset
|
53 #include "keymap.h" |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
54 #include "frame.h" |
| 333 | 55 |
| 56 struct buffer *current_buffer; /* the current buffer */ | |
| 57 | |
| 58 /* First buffer in chain of all buffers (in reverse order of creation). | |
| 59 Threaded through ->next. */ | |
| 60 | |
| 61 struct buffer *all_buffers; | |
| 62 | |
| 63 /* This structure holds the default values of the buffer-local variables | |
| 64 defined with DEFVAR_PER_BUFFER, that have special slots in each buffer. | |
| 65 The default value occupies the same slot in this structure | |
| 66 as an individual buffer's value occupies in that buffer. | |
| 67 Setting the default value also goes through the alist of buffers | |
| 68 and stores into each buffer that does not say it has a local value. */ | |
| 69 | |
|
53655
4f64423a6040
(buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53602
diff
changeset
|
70 DECL_ALIGN (struct buffer, buffer_defaults); |
| 333 | 71 |
| 72 /* A Lisp_Object pointer to the above, used for staticpro */ | |
| 73 | |
| 74 static Lisp_Object Vbuffer_defaults; | |
| 75 | |
| 76 /* This structure marks which slots in a buffer have corresponding | |
| 77 default values in buffer_defaults. | |
| 78 Each such slot has a nonzero value in this structure. | |
| 79 The value has only one nonzero bit. | |
| 80 | |
| 81 When a buffer has its own local value for a slot, | |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
82 the entry for that slot (found in the same slot in this structure) |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
83 is turned on in the buffer's local_flags array. |
| 333 | 84 |
| 85 If a slot in this structure is -1, then even though there may | |
| 86 be a DEFVAR_PER_BUFFER for the slot, there is no default value for it; | |
| 87 and the corresponding slot in buffer_defaults is not used. | |
| 88 | |
| 89 If a slot is -2, then there is no DEFVAR_PER_BUFFER for it, | |
| 90 but there is a default value which is copied into each buffer. | |
| 91 | |
| 92 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is | |
| 93 zero, that is a bug */ | |
| 94 | |
| 95 struct buffer buffer_local_flags; | |
| 96 | |
| 97 /* This structure holds the names of symbols whose values may be | |
| 98 buffer-local. It is indexed and accessed in the same way as the above. */ | |
| 99 | |
|
53655
4f64423a6040
(buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53602
diff
changeset
|
100 DECL_ALIGN (struct buffer, buffer_local_symbols); |
|
4f64423a6040
(buffer_defaults, buffer_local_symbols): Use DECL_ALIGN.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53602
diff
changeset
|
101 |
| 333 | 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. */ |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
118 static char buffer_permanent_local_flags[MAX_PER_BUFFER_VARS]; |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
119 |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
120 /* Number of per-buffer variables used. */ |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
121 |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
122 int last_per_buffer_idx; |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
123 |
| 333 | 124 Lisp_Object Fset_buffer (); |
| 392 | 125 void set_buffer_internal (); |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
126 void set_buffer_internal_1 (); |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
127 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
|
128 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
|
129 static void reset_buffer_local_variables (); |
| 333 | 130 |
| 131 /* Alist of all buffer names vs the buffers. */ | |
| 132 /* This used to be a variable, but is no longer, | |
| 133 to prevent lossage due to user rplac'ing this alist or its elements. */ | |
| 134 Lisp_Object Vbuffer_alist; | |
| 135 | |
| 136 /* Functions to call before and after each text change. */ | |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
137 Lisp_Object Vbefore_change_functions; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
138 Lisp_Object Vafter_change_functions; |
| 333 | 139 |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
140 Lisp_Object Vtransient_mark_mode; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
141 |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
142 /* 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
|
143 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
|
144 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
|
145 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
|
146 |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
147 /* 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
|
148 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
|
149 Lisp_Object Vkill_buffer_query_functions; |
|
50014
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
150 Lisp_Object Qkill_buffer_query_functions; |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
151 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
152 /* 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
|
153 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
|
154 |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
155 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
|
156 Lisp_Object Qbefore_change_functions; |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
157 Lisp_Object Qafter_change_functions; |
| 48635 | 158 Lisp_Object Qucs_set_table_for_input; |
| 333 | 159 |
|
23399
e80c5f687340
(inhibit_modification_hooks): New variable.
Kenichi Handa <handa@m17n.org>
parents:
23174
diff
changeset
|
160 /* If nonzero, all modification hooks are suppressed. */ |
|
e80c5f687340
(inhibit_modification_hooks): New variable.
Kenichi Handa <handa@m17n.org>
parents:
23174
diff
changeset
|
161 int inhibit_modification_hooks; |
|
e80c5f687340
(inhibit_modification_hooks): New variable.
Kenichi Handa <handa@m17n.org>
parents:
23174
diff
changeset
|
162 |
| 333 | 163 Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local; |
| 164 | |
| 165 Lisp_Object Qprotected_field; | |
| 166 | |
| 167 Lisp_Object QSFundamental; /* A string "Fundamental" */ | |
| 168 | |
| 169 Lisp_Object Qkill_buffer_hook; | |
| 170 | |
| 5433 | 171 Lisp_Object Qget_file_buffer; |
| 172 | |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
173 Lisp_Object Qoverlayp; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
174 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
175 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
|
176 |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
177 Lisp_Object Qmodification_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
178 Lisp_Object Qinsert_in_front_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
179 Lisp_Object Qinsert_behind_hooks; |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
180 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
181 static void alloc_buffer_text P_ ((struct buffer *, size_t)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
182 static void free_buffer_text P_ ((struct buffer *b)); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
183 static struct Lisp_Overlay * copy_overlays P_ ((struct buffer *, struct Lisp_Overlay *)); |
|
51867
6713947da36f
(modify_overlay): Update prototype.
Andreas Schwab <schwab@suse.de>
parents:
51853
diff
changeset
|
184 static void modify_overlay P_ ((struct buffer *, EMACS_INT, EMACS_INT)); |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
185 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
186 |
| 333 | 187 /* For debugging; temporary. See set_buffer_internal. */ |
| 188 /* Lisp_Object Qlisp_mode, Vcheck_symbol; */ | |
| 189 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
190 void |
| 333 | 191 nsberror (spec) |
| 192 Lisp_Object spec; | |
| 193 { | |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
194 if (STRINGP (spec)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
195 error ("No buffer named %s", SDATA (spec)); |
| 333 | 196 error ("Invalid buffer argument"); |
| 197 } | |
| 198 | |
|
14506
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
199 DEFUN ("buffer-live-p", Fbuffer_live_p, Sbuffer_live_p, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
200 doc: /* Return non-nil if OBJECT is a buffer which has not been killed. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
201 Value is nil if OBJECT is not a buffer or if it has been killed. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
202 (object) |
|
14506
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
203 Lisp_Object object; |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
204 { |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
205 return ((BUFFERP (object) && ! NILP (XBUFFER (object)->name)) |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
206 ? Qt : Qnil); |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
207 } |
|
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
208 |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
209 DEFUN ("buffer-list", Fbuffer_list, Sbuffer_list, 0, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
210 doc: /* Return a list of all existing live buffers. |
|
46599
44651cb24a24
(Fbuffer_list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46588
diff
changeset
|
211 If the optional arg FRAME is a frame, we return the buffer list |
|
44651cb24a24
(Fbuffer_list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46588
diff
changeset
|
212 in the proper order for that frame: the buffers in FRAME's `buffer-list' |
|
44651cb24a24
(Fbuffer_list): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46588
diff
changeset
|
213 frame parameter come first, followed by the rest of the buffers. */) |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
214 (frame) |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
215 Lisp_Object frame; |
| 333 | 216 { |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
217 Lisp_Object framelist, general; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
218 general = Fmapcar (Qcdr, Vbuffer_alist); |
|
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 if (FRAMEP (frame)) |
|
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 Lisp_Object tail; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
223 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
224 CHECK_FRAME (frame); |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
225 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
226 framelist = Fcopy_sequence (XFRAME (frame)->buffer_list); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
227 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
228 /* 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
|
229 tail = framelist; |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
230 while (! NILP (tail)) |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
231 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
232 general = Fdelq (XCAR (tail), general); |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
233 tail = XCDR (tail); |
|
18455
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
234 } |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
235 return nconc2 (framelist, general); |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
236 } |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
237 |
|
9f5626727351
(Fbuffer_list): New optional argument FRAME.
Richard M. Stallman <rms@gnu.org>
parents:
18178
diff
changeset
|
238 return general; |
| 333 | 239 } |
| 240 | |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
241 /* 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
|
242 (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
|
243 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
|
244 |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
245 static Lisp_Object |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
246 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
|
247 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
|
248 Lisp_Object list; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
249 { |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
250 register Lisp_Object tail; |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
251 for (tail = list; CONSP (tail); tail = XCDR (tail)) |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
252 { |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
253 register Lisp_Object elt, tem; |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
254 elt = XCAR (tail); |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
255 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
|
256 if (!NILP (tem)) |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
257 return elt; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
258 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
259 return Qnil; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
260 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
261 |
| 333 | 262 DEFUN ("get-buffer", Fget_buffer, Sget_buffer, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
263 doc: /* Return the buffer named NAME (a string). |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
264 If there is no live buffer named NAME, return nil. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
265 NAME may also be a buffer; if so, the value is that buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
266 (name) |
| 333 | 267 register Lisp_Object name; |
| 268 { | |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
269 if (BUFFERP (name)) |
| 333 | 270 return name; |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
271 CHECK_STRING (name); |
| 333 | 272 |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
273 return Fcdr (assoc_ignore_text_properties (name, Vbuffer_alist)); |
| 333 | 274 } |
| 275 | |
| 276 DEFUN ("get-file-buffer", Fget_file_buffer, Sget_file_buffer, 1, 1, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
277 doc: /* Return the buffer visiting file FILENAME (a string). |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
278 The buffer's `buffer-file-name' must match exactly the expansion of FILENAME. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
279 If there is no such live buffer, return nil. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
280 See also `find-buffer-visiting'. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
281 (filename) |
| 333 | 282 register Lisp_Object filename; |
| 283 { | |
| 284 register Lisp_Object tail, buf, tem; | |
| 5433 | 285 Lisp_Object handler; |
| 286 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
287 CHECK_STRING (filename); |
| 333 | 288 filename = Fexpand_file_name (filename, Qnil); |
| 289 | |
| 5433 | 290 /* If the file name has special constructs in it, |
| 291 call the corresponding file handler. */ | |
|
7028
6915bf781a38
Pass operation to Ffind_file_name_handler.
Karl Heuer <kwzh@gnu.org>
parents:
6785
diff
changeset
|
292 handler = Ffind_file_name_handler (filename, Qget_file_buffer); |
| 5433 | 293 if (!NILP (handler)) |
| 294 return call2 (handler, Qget_file_buffer, filename); | |
| 295 | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
296 for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail)) |
| 333 | 297 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
298 buf = Fcdr (XCAR (tail)); |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
299 if (!BUFFERP (buf)) continue; |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
300 if (!STRINGP (XBUFFER (buf)->filename)) continue; |
| 333 | 301 tem = Fstring_equal (XBUFFER (buf)->filename, filename); |
| 485 | 302 if (!NILP (tem)) |
| 333 | 303 return buf; |
| 304 } | |
| 305 return Qnil; | |
| 306 } | |
| 307 | |
|
12810
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
308 Lisp_Object |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
309 get_truename_buffer (filename) |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
310 register Lisp_Object filename; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
311 { |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
312 register Lisp_Object tail, buf, tem; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
313 |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
314 for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail)) |
|
12810
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
315 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
316 buf = Fcdr (XCAR (tail)); |
|
12810
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
317 if (!BUFFERP (buf)) continue; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
318 if (!STRINGP (XBUFFER (buf)->file_truename)) continue; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
319 tem = Fstring_equal (XBUFFER (buf)->file_truename, filename); |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
320 if (!NILP (tem)) |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
321 return buf; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
322 } |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
323 return Qnil; |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
324 } |
|
bd486675e103
(get_truename_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12785
diff
changeset
|
325 |
| 333 | 326 /* Incremented for each buffer created, to assign the buffer number. */ |
| 327 int buffer_count; | |
| 328 | |
| 329 DEFUN ("get-buffer-create", Fget_buffer_create, Sget_buffer_create, 1, 1, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
330 doc: /* Return the buffer named NAME, or create such a buffer and return it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
331 A new buffer is created if there is no live buffer named NAME. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
332 If NAME starts with a space, the new buffer does not keep undo information. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
333 If NAME is a buffer instead of a string, then it is the value returned. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
334 The value is never nil. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
335 (name) |
| 333 | 336 register Lisp_Object name; |
| 337 { | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
338 register Lisp_Object buf; |
| 333 | 339 register struct buffer *b; |
| 340 | |
| 341 buf = Fget_buffer (name); | |
| 485 | 342 if (!NILP (buf)) |
| 333 | 343 return buf; |
| 344 | |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
345 if (SCHARS (name) == 0) |
|
6697
28e36f59e856
(Fget_buffer_create): Disallow empty string.
Karl Heuer <kwzh@gnu.org>
parents:
6675
diff
changeset
|
346 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
|
347 |
|
27739
e272d652619a
(Fget_buffer_create, Fmake_indirect_buffer): Use
Gerd Moellmann <gerd@gnu.org>
parents:
27480
diff
changeset
|
348 b = (struct buffer *) allocate_buffer (); |
| 333 | 349 |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
350 b->size = sizeof (struct buffer) / sizeof (EMACS_INT); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
351 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
352 /* 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
|
353 b->text = &b->own_text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
354 b->base_buffer = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
355 |
| 333 | 356 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
|
357 BLOCK_INPUT; |
| 17022 | 358 /* We allocate extra 1-byte at the tail and keep it always '\0' for |
| 359 anchoring a search. */ | |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
360 alloc_buffer_text (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
|
361 UNBLOCK_INPUT; |
| 333 | 362 if (! BUF_BEG_ADDR (b)) |
|
10668
acbd9fab366a
(Fget_buffer_create): Call buffer_memory_full.
Richard M. Stallman <rms@gnu.org>
parents:
10611
diff
changeset
|
363 buffer_memory_full (); |
| 333 | 364 |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
365 BUF_PT (b) = BEG; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
366 BUF_GPT (b) = BEG; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
367 BUF_BEGV (b) = BEG; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
368 BUF_ZV (b) = BEG; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
369 BUF_Z (b) = BEG; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
370 BUF_PT_BYTE (b) = BEG_BYTE; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
371 BUF_GPT_BYTE (b) = BEG_BYTE; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
372 BUF_BEGV_BYTE (b) = BEG_BYTE; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
373 BUF_ZV_BYTE (b) = BEG_BYTE; |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
374 BUF_Z_BYTE (b) = BEG_BYTE; |
| 333 | 375 BUF_MODIFF (b) = 1; |
|
16213
3b8851bebc76
(Fget_buffer_create): Initialize BUF_OVERLAY_MODIFF.
Richard M. Stallman <rms@gnu.org>
parents:
16193
diff
changeset
|
376 BUF_OVERLAY_MODIFF (b) = 1; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
377 BUF_SAVE_MODIFF (b) = 1; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
378 BUF_INTERVALS (b) = 0; |
|
25368
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
379 BUF_UNCHANGED_MODIFIED (b) = 1; |
|
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
380 BUF_OVERLAY_UNCHANGED_MODIFIED (b) = 1; |
|
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
381 BUF_END_UNCHANGED (b) = 0; |
|
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
382 BUF_BEG_UNCHANGED (b) = 0; |
| 17022 | 383 *(BUF_GPT_ADDR (b)) = *(BUF_Z_ADDR (b)) = 0; /* Put an anchor '\0'. */ |
| 333 | 384 |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
385 b->newline_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
386 b->width_run_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
387 b->width_table = Qnil; |
|
25368
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
388 b->prevent_redisplay_optimizations_p = 1; |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
389 |
| 333 | 390 /* Put this on the chain of all buffers including killed ones. */ |
| 391 b->next = all_buffers; | |
| 392 all_buffers = b; | |
| 393 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
394 /* An ordinary buffer normally doesn't need markers |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
395 to handle BEGV and ZV. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
396 b->pt_marker = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
397 b->begv_marker = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
398 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
|
399 |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
400 name = Fcopy_sequence (name); |
|
46378
ef7dc46ecd0b
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
401 STRING_SET_INTERVALS (name, NULL_INTERVAL); |
| 333 | 402 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
|
403 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
404 if (SREF (name, 0) != ' ') |
| 333 | 405 b->undo_list = Qnil; |
| 406 else | |
| 407 b->undo_list = Qt; | |
| 408 | |
| 409 reset_buffer (b); | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
410 reset_buffer_local_variables (b, 1); |
| 333 | 411 |
|
48776
67a496befc04
(Fget_buffer_create): Call Qucs_set_table_for_input as the last thing.
Richard M. Stallman <rms@gnu.org>
parents:
48635
diff
changeset
|
412 b->mark = Fmake_marker (); |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
413 BUF_MARKERS (b) = NULL; |
|
48776
67a496befc04
(Fget_buffer_create): Call Qucs_set_table_for_input as the last thing.
Richard M. Stallman <rms@gnu.org>
parents:
48635
diff
changeset
|
414 b->name = name; |
|
67a496befc04
(Fget_buffer_create): Call Qucs_set_table_for_input as the last thing.
Richard M. Stallman <rms@gnu.org>
parents:
48635
diff
changeset
|
415 |
| 333 | 416 /* 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
|
417 XSETBUFFER (buf, b); |
| 333 | 418 Vbuffer_alist = nconc2 (Vbuffer_alist, Fcons (Fcons (name, buf), Qnil)); |
| 419 | |
| 51318 | 420 /* An error in calling the function here (should someone redfine it) |
| 421 can lead to infinite regress until you run out of stack. rms | |
| 422 says that's not worth protecting against. */ | |
| 48635 | 423 if (!NILP (Ffboundp (Qucs_set_table_for_input))) |
| 51318 | 424 /* buf is on buffer-alist, so no gcpro. */ |
| 48635 | 425 call1 (Qucs_set_table_for_input, buf); |
| 426 | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
427 return buf; |
| 333 | 428 } |
| 429 | |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
430 |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
431 /* Return a list of overlays which is a copy of the overlay list |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
432 LIST, but for buffer B. */ |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
433 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
434 static struct Lisp_Overlay * |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
435 copy_overlays (b, list) |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
436 struct buffer *b; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
437 struct Lisp_Overlay *list; |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
438 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
439 Lisp_Object buffer; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
440 struct Lisp_Overlay *result = NULL, *tail = NULL; |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
441 |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
442 XSETBUFFER (buffer, b); |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
443 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
444 for (; list; list = list->next) |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
445 { |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
446 Lisp_Object overlay, start, end, old_overlay; |
|
51939
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
447 EMACS_INT charpos; |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
448 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
449 XSETMISC (old_overlay, list); |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
450 charpos = marker_position (OVERLAY_START (old_overlay)); |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
451 start = Fmake_marker (); |
|
37950
f01f454ea6bf
(copy_overlays): Make ENABLE_CHECKING happy.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37752
diff
changeset
|
452 Fset_marker (start, make_number (charpos), buffer); |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
453 XMARKER (start)->insertion_type |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
454 = XMARKER (OVERLAY_START (old_overlay))->insertion_type; |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
455 |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
456 charpos = marker_position (OVERLAY_END (old_overlay)); |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
457 end = Fmake_marker (); |
|
37950
f01f454ea6bf
(copy_overlays): Make ENABLE_CHECKING happy.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37752
diff
changeset
|
458 Fset_marker (end, make_number (charpos), buffer); |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
459 XMARKER (end)->insertion_type |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
460 = XMARKER (OVERLAY_END (old_overlay))->insertion_type; |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
461 |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
462 overlay = allocate_misc (); |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
463 XMISCTYPE (overlay) = Lisp_Misc_Overlay; |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
464 OVERLAY_START (overlay) = start; |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
465 OVERLAY_END (overlay) = end; |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
466 OVERLAY_PLIST (overlay) = Fcopy_sequence (OVERLAY_PLIST (old_overlay)); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
467 XOVERLAY (overlay)->next = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
468 |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
469 if (tail) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
470 tail = tail->next = XOVERLAY (overlay); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
471 else |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
472 result = tail = XOVERLAY (overlay); |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
473 } |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
474 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
475 return result; |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
476 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
477 |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
478 |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
479 /* Clone per-buffer values of buffer FROM. |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
480 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
481 Buffer TO gets the same per-buffer values as FROM, with the |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
482 following exceptions: (1) TO's name is left untouched, (2) markers |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
483 are copied and made to refer to TO, and (3) overlay lists are |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
484 copied. */ |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
485 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
486 static void |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
487 clone_per_buffer_values (from, to) |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
488 struct buffer *from, *to; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
489 { |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
490 Lisp_Object to_buffer; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
491 int offset; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
492 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
493 XSETBUFFER (to_buffer, to); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
494 |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
495 for (offset = PER_BUFFER_VAR_OFFSET (name) + sizeof (Lisp_Object); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
496 offset < sizeof *to; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
497 offset += sizeof (Lisp_Object)) |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
498 { |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
499 Lisp_Object obj; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
500 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
501 obj = PER_BUFFER_VALUE (from, offset); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
502 if (MARKERP (obj)) |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
503 { |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
504 struct Lisp_Marker *m = XMARKER (obj); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
505 obj = Fmake_marker (); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
506 XMARKER (obj)->insertion_type = m->insertion_type; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
507 set_marker_both (obj, to_buffer, m->charpos, m->bytepos); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
508 } |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
509 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
510 PER_BUFFER_VALUE (to, offset) = obj; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
511 } |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
512 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
513 bcopy (from->local_flags, to->local_flags, sizeof to->local_flags); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
514 |
|
37752
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
515 to->overlays_before = copy_overlays (to, from->overlays_before); |
|
1085e1cfebaf
(copy_overlays): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
37463
diff
changeset
|
516 to->overlays_after = copy_overlays (to, from->overlays_after); |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
517 } |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
518 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
519 |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
520 DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer, |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
521 2, 3, |
|
11838
92a61e91ec05
(Fmake_indirect_buffer): Fix interactive spec.
Karl Heuer <kwzh@gnu.org>
parents:
11823
diff
changeset
|
522 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
523 doc: /* Create and return an indirect buffer for buffer BASE-BUFFER, named NAME. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
524 BASE-BUFFER should be an existing buffer (or buffer name). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
525 NAME should be a string which is not the name of an existing buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
526 Optional argument CLONE non-nil means preserve BASE-BUFFER's state, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
527 such as major and minor modes, in the indirect buffer. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
528 CLONE nil means the indirect buffer's state is reset to default values. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
529 (base_buffer, name, clone) |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
530 Lisp_Object base_buffer, name, clone; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
531 { |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
532 Lisp_Object buf; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
533 struct buffer *b; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
534 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
535 buf = Fget_buffer (name); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
536 if (!NILP (buf)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
537 error ("Buffer name `%s' is in use", SDATA (name)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
538 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
539 base_buffer = Fget_buffer (base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
540 if (NILP (base_buffer)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
541 error ("No such buffer: `%s'", SDATA (name)); |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
542 |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
543 if (SCHARS (name) == 0) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
544 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
|
545 |
|
27739
e272d652619a
(Fget_buffer_create, Fmake_indirect_buffer): Use
Gerd Moellmann <gerd@gnu.org>
parents:
27480
diff
changeset
|
546 b = (struct buffer *) allocate_buffer (); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
547 b->size = sizeof (struct buffer) / sizeof (EMACS_INT); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
548 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
549 if (XBUFFER (base_buffer)->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
550 b->base_buffer = XBUFFER (base_buffer)->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
551 else |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
552 b->base_buffer = XBUFFER (base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
553 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
554 /* Use the base buffer's text object. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
555 b->text = b->base_buffer->text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
556 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
557 BUF_BEGV (b) = BUF_BEGV (b->base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
558 BUF_ZV (b) = BUF_ZV (b->base_buffer); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
559 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
|
560 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
|
561 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
|
562 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
|
563 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
564 b->newline_cache = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
565 b->width_run_cache = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
566 b->width_table = Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
567 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
568 /* 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
|
569 b->next = all_buffers; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
570 all_buffers = b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
571 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
572 name = Fcopy_sequence (name); |
|
46378
ef7dc46ecd0b
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it.
Ken Raeburn <raeburn@raeburn.org>
parents:
46370
diff
changeset
|
573 STRING_SET_INTERVALS (name, NULL_INTERVAL); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
574 b->name = name; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
575 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
576 reset_buffer (b); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
577 reset_buffer_local_variables (b, 1); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
578 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
579 /* 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
|
580 XSETBUFFER (buf, b); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
581 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
|
582 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
583 b->mark = Fmake_marker (); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
584 b->name = name; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
585 |
|
24604
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
586 /* The multibyte status belongs to the base buffer. */ |
|
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
587 b->enable_multibyte_characters = b->base_buffer->enable_multibyte_characters; |
|
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
588 |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
589 /* 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
|
590 if (NILP (b->base_buffer->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
591 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
592 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
|
593 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
|
594 BUF_PT (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
595 BUF_PT_BYTE (b->base_buffer)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
596 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
597 if (NILP (b->base_buffer->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
598 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
599 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
|
600 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
|
601 BUF_BEGV (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
602 BUF_BEGV_BYTE (b->base_buffer)); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
603 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
604 if (NILP (b->base_buffer->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
605 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
606 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
|
607 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
|
608 BUF_ZV (b->base_buffer), |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
609 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
|
610 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
|
611 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
612 |
|
28625
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
613 if (NILP (clone)) |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
614 { |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
615 /* Give the indirect buffer markers for its narrowing. */ |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
616 b->pt_marker = Fmake_marker (); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
617 set_marker_both (b->pt_marker, buf, BUF_PT (b), BUF_PT_BYTE (b)); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
618 b->begv_marker = Fmake_marker (); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
619 set_marker_both (b->begv_marker, buf, BUF_BEGV (b), BUF_BEGV_BYTE (b)); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
620 b->zv_marker = Fmake_marker (); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
621 set_marker_both (b->zv_marker, buf, BUF_ZV (b), BUF_ZV_BYTE (b)); |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
622 XMARKER (b->zv_marker)->insertion_type = 1; |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
623 } |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
624 else |
|
5d68443d3df1
(clone_per_buffer_values): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28518
diff
changeset
|
625 clone_per_buffer_values (b->base_buffer, b); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
626 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
627 return buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
628 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
629 |
|
52012
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
630 void |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
631 delete_all_overlays (b) |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
632 struct buffer *b; |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
633 { |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
634 Lisp_Object overlay; |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
635 |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
636 /* `reset_buffer' blindly sets the list of overlays to NULL, so we |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
637 have to empty the list, otherwise we end up with overlays that |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
638 think they belong to this buffer while the buffer doesn't know about |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
639 them any more. */ |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
640 while (b->overlays_before) |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
641 { |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
642 XSETMISC (overlay, b->overlays_before); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
643 Fdelete_overlay (overlay); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
644 } |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
645 while (b->overlays_after) |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
646 { |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
647 XSETMISC (overlay, b->overlays_after); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
648 Fdelete_overlay (overlay); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
649 } |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
650 eassert (b->overlays_before == NULL); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
651 eassert (b->overlays_after == NULL); |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
652 } |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
653 |
|
8873
b58ea8cae183
(reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents:
8839
diff
changeset
|
654 /* Reinitialize everything about a buffer except its name and contents |
|
52012
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
655 and local variables. |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
656 If called on an already-initialized buffer, the list of overlays |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
657 should be deleted before calling this function, otherwise we end up |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
658 with overlays that claim to belong to the buffer but the buffer |
|
d116f572d76b
(delete_all_overlays): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51939
diff
changeset
|
659 claims it doesn't belong to it. */ |
| 333 | 660 |
| 661 void | |
| 662 reset_buffer (b) | |
| 663 register struct buffer *b; | |
| 664 { | |
| 665 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
|
666 b->file_truename = Qnil; |
| 333 | 667 b->directory = (current_buffer) ? current_buffer->directory : Qnil; |
| 668 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
|
669 XSETFASTINT (b->save_length, 0); |
| 333 | 670 b->last_window_start = 1; |
|
17566
7ed40081342f
(reset_buffer): Initialize clip_changed field.
Richard M. Stallman <rms@gnu.org>
parents:
17238
diff
changeset
|
671 /* It is more conservative to start out "changed" than "unchanged". */ |
|
25368
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
672 b->clip_changed = 0; |
|
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
673 b->prevent_redisplay_optimizations_p = 1; |
| 333 | 674 b->backed_up = Qnil; |
| 675 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
|
676 b->auto_save_failure_time = -1; |
| 333 | 677 b->auto_save_file_name = Qnil; |
| 678 b->read_only = Qnil; | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
679 b->overlays_before = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
680 b->overlays_after = NULL; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
681 b->overlay_center = BEG; |
|
3242
f873e6b9af52
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3226
diff
changeset
|
682 b->mark_active = Qnil; |
|
10561
53f34c870201
(init_buffer_once, syms_of_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
10505
diff
changeset
|
683 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
|
684 b->file_format = Qnil; |
|
16067
5c9f298c9875
(reset_buffer): Initialize last_selected_window slot.
Richard M. Stallman <rms@gnu.org>
parents:
16051
diff
changeset
|
685 b->last_selected_window = Qnil; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
686 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
|
687 b->display_time = Qnil; |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
688 b->enable_multibyte_characters = buffer_defaults.enable_multibyte_characters; |
|
28322
986882bafaf1
(reset_buffer): Initialize buffer's cursor_type.
Gerd Moellmann <gerd@gnu.org>
parents:
28314
diff
changeset
|
689 b->cursor_type = buffer_defaults.cursor_type; |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
690 b->extra_line_spacing = buffer_defaults.extra_line_spacing; |
|
42088
11a505aa1322
(reset_buffer): Initialize `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents:
41524
diff
changeset
|
691 |
|
11a505aa1322
(reset_buffer): Initialize `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents:
41524
diff
changeset
|
692 b->display_error_modiff = 0; |
| 333 | 693 } |
| 694 | |
|
8873
b58ea8cae183
(reset_buffer): Don't call reset_buffer_local_variables.
Richard M. Stallman <rms@gnu.org>
parents:
8839
diff
changeset
|
695 /* 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
|
696 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
|
697 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
|
698 Instead, use Fkill_all_local_variables. |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
699 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
700 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
|
701 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
|
702 we preserve those. */ |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
703 |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
704 static void |
|
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
705 reset_buffer_local_variables (b, permanent_too) |
| 333 | 706 register struct buffer *b; |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
707 int permanent_too; |
| 333 | 708 { |
| 709 register int offset; | |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
710 int i; |
| 333 | 711 |
| 712 /* Reset the major mode to Fundamental, together with all the | |
| 713 things that depend on the major mode. | |
| 714 default-major-mode is handled at a higher level. | |
| 715 We ignore it here. */ | |
| 716 b->major_mode = Qfundamental_mode; | |
| 717 b->keymap = Qnil; | |
| 718 b->mode_name = QSFundamental; | |
| 719 b->minor_modes = Qnil; | |
|
13270
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
720 |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
721 /* 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
|
722 fix up its insides first. */ |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
723 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
|
724 && 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
|
725 && 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
|
726 Fset_standard_case_table (Vascii_downcase_table); |
|
76e69b0af94d
(reset_buffer_local_variables): Call
Richard M. Stallman <rms@gnu.org>
parents:
13263
diff
changeset
|
727 |
| 333 | 728 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
|
729 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
|
730 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
|
731 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
|
732 b->invisibility_spec = Qt; |
|
15786
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
733 #ifndef DOS_NT |
|
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
734 b->buffer_file_type = Qnil; |
|
f2d0e8928d57
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15776
diff
changeset
|
735 #endif |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
736 |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
737 /* Reset all (or most) per-buffer variables to their defaults. */ |
| 333 | 738 b->local_var_alist = Qnil; |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
739 for (i = 0; i < last_per_buffer_idx; ++i) |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
740 if (permanent_too || buffer_permanent_local_flags[i] == 0) |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
741 SET_PER_BUFFER_VALUE_P (b, i, 0); |
| 333 | 742 |
| 743 /* For each slot that has a default value, | |
| 744 copy that into the slot. */ | |
| 745 | |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
746 for (offset = PER_BUFFER_VAR_OFFSET (name); |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
747 offset < sizeof *b; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
748 offset += sizeof (Lisp_Object)) |
|
9362
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
749 { |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
750 int idx = PER_BUFFER_IDX (offset); |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
751 if ((idx > 0 |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
752 && (permanent_too |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
753 || buffer_permanent_local_flags[idx] == 0)) |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
754 /* Is -2 used anywhere? */ |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
755 || idx == -2) |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
756 PER_BUFFER_VALUE (b, offset) = PER_BUFFER_DEFAULT (offset); |
|
9362
f6dc29e7e986
(init_buffer_once): Don't use XSETFASTINT when negative.
Karl Heuer <kwzh@gnu.org>
parents:
9335
diff
changeset
|
757 } |
| 333 | 758 } |
| 759 | |
| 392 | 760 /* We split this away from generate-new-buffer, because rename-buffer |
| 761 and set-visited-file-name ought to be able to use this to really | |
| 762 rename the buffer properly. */ | |
| 763 | |
| 764 DEFUN ("generate-new-buffer-name", Fgenerate_new_buffer_name, Sgenerate_new_buffer_name, | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
765 1, 2, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
766 doc: /* Return a string that is the name of no existing buffer based on NAME. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
767 If there is no live buffer named NAME, then return NAME. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
768 Otherwise modify name by appending `<NUMBER>', incrementing NUMBER |
|
54786
870b7a6bffb8
(Fgenerate_new_buffer_name): Return NAME argument if IGNORE argument
Luc Teirlinck <teirllm@auburn.edu>
parents:
54772
diff
changeset
|
769 \(starting at 2) until an unused name is found, and then return that name. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
770 Optional second argument IGNORE specifies a name that is okay to use |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
771 \(if it is in the sequence to be tried) |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
772 even if a buffer with that name exists. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
773 (name, ignore) |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
774 register Lisp_Object name, ignore; |
| 333 | 775 { |
| 776 register Lisp_Object gentemp, tem; | |
| 777 int count; | |
| 778 char number[10]; | |
| 779 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
780 CHECK_STRING (name); |
| 333 | 781 |
|
54786
870b7a6bffb8
(Fgenerate_new_buffer_name): Return NAME argument if IGNORE argument
Luc Teirlinck <teirllm@auburn.edu>
parents:
54772
diff
changeset
|
782 tem = Fstring_equal (name, ignore); |
|
870b7a6bffb8
(Fgenerate_new_buffer_name): Return NAME argument if IGNORE argument
Luc Teirlinck <teirllm@auburn.edu>
parents:
54772
diff
changeset
|
783 if (!NILP (tem)) |
|
870b7a6bffb8
(Fgenerate_new_buffer_name): Return NAME argument if IGNORE argument
Luc Teirlinck <teirllm@auburn.edu>
parents:
54772
diff
changeset
|
784 return name; |
| 333 | 785 tem = Fget_buffer (name); |
| 485 | 786 if (NILP (tem)) |
| 392 | 787 return name; |
| 333 | 788 |
| 789 count = 1; | |
| 790 while (1) | |
| 791 { | |
| 792 sprintf (number, "<%d>", ++count); | |
| 793 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
|
794 tem = Fstring_equal (gentemp, ignore); |
|
3226
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
795 if (!NILP (tem)) |
|
bc4beddaf2c7
(Fgenerate_new_buffer_name): New arg IGNORE.
Richard M. Stallman <rms@gnu.org>
parents:
3204
diff
changeset
|
796 return gentemp; |
| 333 | 797 tem = Fget_buffer (gentemp); |
| 485 | 798 if (NILP (tem)) |
| 392 | 799 return gentemp; |
| 333 | 800 } |
| 801 } | |
| 802 | |
| 803 | |
| 804 DEFUN ("buffer-name", Fbuffer_name, Sbuffer_name, 0, 1, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
805 doc: /* Return the name of BUFFER, as a string. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
806 With no argument or nil as argument, return the name of the current buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
807 (buffer) |
| 333 | 808 register Lisp_Object buffer; |
| 809 { | |
| 485 | 810 if (NILP (buffer)) |
| 333 | 811 return current_buffer->name; |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
812 CHECK_BUFFER (buffer); |
| 333 | 813 return XBUFFER (buffer)->name; |
| 814 } | |
| 815 | |
| 816 DEFUN ("buffer-file-name", Fbuffer_file_name, Sbuffer_file_name, 0, 1, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
817 doc: /* Return name of file BUFFER is visiting, or nil if none. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
818 No argument or nil as argument means use the current buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
819 (buffer) |
| 333 | 820 register Lisp_Object buffer; |
| 821 { | |
| 485 | 822 if (NILP (buffer)) |
| 333 | 823 return current_buffer->filename; |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
824 CHECK_BUFFER (buffer); |
| 333 | 825 return XBUFFER (buffer)->filename; |
| 826 } | |
| 827 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
828 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
|
829 0, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
830 doc: /* Return the base buffer of indirect buffer BUFFER. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
831 If BUFFER is not indirect, return nil. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
832 (buffer) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
833 register Lisp_Object buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
834 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
835 struct buffer *base; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
836 Lisp_Object base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
837 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
838 if (NILP (buffer)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
839 base = current_buffer->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
840 else |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
841 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
842 CHECK_BUFFER (buffer); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
843 base = XBUFFER (buffer)->base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
844 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
845 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
846 if (! base) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
847 return Qnil; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
848 XSETBUFFER (base_buffer, base); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
849 return base_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
850 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
851 |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
852 DEFUN ("buffer-local-value", Fbuffer_local_value, |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
853 Sbuffer_local_value, 2, 2, 0, |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
854 doc: /* Return the value of VARIABLE in BUFFER. |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
855 If VARIABLE does not have a buffer-local binding in BUFFER, the value |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
856 is the default binding of variable. */) |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
857 (symbol, buffer) |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
858 register Lisp_Object symbol; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
859 register Lisp_Object buffer; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
860 { |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
861 register struct buffer *buf; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
862 register Lisp_Object result; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
863 |
|
40735
d3065bec433f
(Fbuffer_local_value): Remove extra args from CHECK_SYMBOL and CHECK_BUFFER.
Richard M. Stallman <rms@gnu.org>
parents:
40725
diff
changeset
|
864 CHECK_SYMBOL (symbol); |
|
d3065bec433f
(Fbuffer_local_value): Remove extra args from CHECK_SYMBOL and CHECK_BUFFER.
Richard M. Stallman <rms@gnu.org>
parents:
40725
diff
changeset
|
865 CHECK_BUFFER (buffer); |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
866 buf = XBUFFER (buffer); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
867 |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
868 /* Look in local_var_list */ |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
869 result = Fassoc (symbol, buf->local_var_alist); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
870 if (NILP (result)) |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
871 { |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
872 int offset, idx; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
873 int found = 0; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
874 |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
875 /* Look in special slots */ |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
876 for (offset = PER_BUFFER_VAR_OFFSET (name); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
877 offset < sizeof (struct buffer); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
878 /* sizeof EMACS_INT == sizeof Lisp_Object */ |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
879 offset += (sizeof (EMACS_INT))) |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
880 { |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
881 idx = PER_BUFFER_IDX (offset); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
882 if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
883 && SYMBOLP (PER_BUFFER_SYMBOL (offset)) |
|
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
884 && EQ (PER_BUFFER_SYMBOL (offset), symbol)) |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
885 { |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
886 result = PER_BUFFER_VALUE (buf, offset); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
887 found = 1; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
888 break; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
889 } |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
890 } |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
891 |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
892 if (!found) |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
893 result = Fdefault_value (symbol); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
894 } |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
895 else |
|
46199
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
896 { |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
897 Lisp_Object valcontents; |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
898 Lisp_Object current_alist_element; |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
899 |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
900 /* What binding is loaded right now? */ |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
901 valcontents = SYMBOL_VALUE (symbol); |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
902 current_alist_element |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
903 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
904 |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
905 /* The value of the currently loaded binding is not |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
906 stored in it, but rather in the realvalue slot. |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
907 Store that value into the binding it belongs to |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
908 in case that is the one we are about to use. */ |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
909 |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
910 Fsetcdr (current_alist_element, |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
911 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue)); |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
912 |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
913 /* Now get the (perhaps updated) value out of the binding. */ |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
914 result = XCDR (result); |
|
ca604a52d267
(Fbuffer_local_value): Store current value into its binding
Richard M. Stallman <rms@gnu.org>
parents:
46016
diff
changeset
|
915 } |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
916 |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
917 if (EQ (result, Qunbound)) |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
918 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
919 |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
920 return result; |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
921 } |
|
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
922 |
| 333 | 923 DEFUN ("buffer-local-variables", Fbuffer_local_variables, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
924 Sbuffer_local_variables, 0, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
925 doc: /* Return an alist of variables that are buffer-local in BUFFER. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
926 Most elements look like (SYMBOL . VALUE), describing one variable. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
927 For a symbol that is locally unbound, just the symbol appears in the value. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
928 Note that storing new VALUEs in these elements doesn't change the variables. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
929 No argument or nil as argument means use current buffer as BUFFER. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
930 (buffer) |
| 333 | 931 register Lisp_Object buffer; |
| 932 { | |
| 933 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
|
934 register Lisp_Object result; |
| 333 | 935 |
| 485 | 936 if (NILP (buffer)) |
| 333 | 937 buf = current_buffer; |
| 938 else | |
| 939 { | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
940 CHECK_BUFFER (buffer); |
| 333 | 941 buf = XBUFFER (buffer); |
| 942 } | |
| 943 | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
944 result = Qnil; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
945 |
| 333 | 946 { |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
947 register Lisp_Object tail; |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
948 for (tail = buf->local_var_alist; CONSP (tail); tail = XCDR (tail)) |
| 333 | 949 { |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
950 Lisp_Object val, elt; |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
951 |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
952 elt = XCAR (tail); |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
953 |
|
10505
4f7f9b9ff513
(syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents:
10443
diff
changeset
|
954 /* 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
|
955 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
|
956 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
|
957 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
|
958 for that buffer, making the alist up to date automatically. */ |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
959 val = find_symbol_value (XCAR (elt)); |
|
10505
4f7f9b9ff513
(syms_of_buffer) [DOS_NT]: Add missing ';'.
Richard M. Stallman <rms@gnu.org>
parents:
10443
diff
changeset
|
960 /* 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
|
961 if (buf != current_buffer) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
962 val = XCDR (elt); |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
963 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
964 /* 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
|
965 if (EQ (val, Qunbound)) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
966 result = Fcons (XCAR (elt), result); |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
967 /* 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
|
968 else |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
969 result = Fcons (Fcons (XCAR (elt), val), result); |
| 333 | 970 } |
| 971 } | |
| 972 | |
| 973 /* Add on all the variables stored in special slots. */ | |
| 974 { | |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
975 int offset, idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
976 |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
977 for (offset = PER_BUFFER_VAR_OFFSET (name); |
| 333 | 978 offset < sizeof (struct buffer); |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
979 /* sizeof EMACS_INT == sizeof Lisp_Object */ |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
980 offset += (sizeof (EMACS_INT))) |
| 333 | 981 { |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
982 idx = PER_BUFFER_IDX (offset); |
|
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
983 if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) |
|
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
984 && SYMBOLP (PER_BUFFER_SYMBOL (offset))) |
|
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
985 result = Fcons (Fcons (PER_BUFFER_SYMBOL (offset), |
|
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
986 PER_BUFFER_VALUE (buf, offset)), |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
987 result); |
| 333 | 988 } |
| 989 } | |
|
4100
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
990 |
|
f8c6e5e9603f
(Fbuffer_local_variables): For local var that is unbound,
Richard M. Stallman <rms@gnu.org>
parents:
4077
diff
changeset
|
991 return result; |
| 333 | 992 } |
| 993 | |
| 994 | |
| 995 DEFUN ("buffer-modified-p", Fbuffer_modified_p, Sbuffer_modified_p, | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
996 0, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
997 doc: /* Return t if BUFFER was modified since its file was last read or saved. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
998 No argument or nil as argument means use current buffer as BUFFER. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
999 (buffer) |
| 333 | 1000 register Lisp_Object buffer; |
| 1001 { | |
| 1002 register struct buffer *buf; | |
| 485 | 1003 if (NILP (buffer)) |
| 333 | 1004 buf = current_buffer; |
| 1005 else | |
| 1006 { | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
1007 CHECK_BUFFER (buffer); |
| 333 | 1008 buf = XBUFFER (buffer); |
| 1009 } | |
| 1010 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1011 return BUF_SAVE_MODIFF (buf) < BUF_MODIFF (buf) ? Qt : Qnil; |
| 333 | 1012 } |
| 1013 | |
| 1014 DEFUN ("set-buffer-modified-p", Fset_buffer_modified_p, Sset_buffer_modified_p, | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
1015 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1016 doc: /* Mark current buffer as modified or unmodified according to FLAG. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1017 A non-nil FLAG means mark the buffer modified. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1018 (flag) |
| 333 | 1019 register Lisp_Object flag; |
| 1020 { | |
| 1021 register int already; | |
| 1022 register Lisp_Object fn; | |
|
28207
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1023 Lisp_Object buffer, window; |
| 333 | 1024 |
| 1025 #ifdef CLASH_DETECTION | |
| 1026 /* If buffer becoming modified, lock the file. | |
| 1027 If buffer becoming unmodified, unlock the file. */ | |
| 1028 | |
|
11659
f9b6e65774e7
(Fset_buffer_modified_p): Use the truename for locking.
Richard M. Stallman <rms@gnu.org>
parents:
11473
diff
changeset
|
1029 fn = current_buffer->file_truename; |
|
24520
e8b7cb3fac8c
(Fset_buffer_modified_p): Don't lock or unlock
Karl Heuer <kwzh@gnu.org>
parents:
24434
diff
changeset
|
1030 /* Test buffer-file-name so that binding it to nil is effective. */ |
|
e8b7cb3fac8c
(Fset_buffer_modified_p): Don't lock or unlock
Karl Heuer <kwzh@gnu.org>
parents:
24434
diff
changeset
|
1031 if (!NILP (fn) && ! NILP (current_buffer->filename)) |
| 333 | 1032 { |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1033 already = SAVE_MODIFF < MODIFF; |
| 485 | 1034 if (!already && !NILP (flag)) |
| 333 | 1035 lock_file (fn); |
| 485 | 1036 else if (already && NILP (flag)) |
| 333 | 1037 unlock_file (fn); |
| 1038 } | |
| 1039 #endif /* CLASH_DETECTION */ | |
| 1040 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1041 SAVE_MODIFF = NILP (flag) ? MODIFF : 0; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1042 |
|
28207
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1043 /* Set update_mode_lines only if buffer is displayed in some window. |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1044 Packages like jit-lock or lazy-lock preserve a buffer's modified |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1045 state by recording/restoring the state around blocks of code. |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1046 Setting update_mode_lines makes redisplay consider all windows |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1047 (on all frames). Stealth fontification of buffers not displayed |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1048 would incur additional redisplay costs if we'd set |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1049 update_modes_lines unconditionally. |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1050 |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1051 Ideally, I think there should be another mechanism for fontifying |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1052 buffers without "modifying" buffers, or redisplay should be |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1053 smarter about updating the `*' in mode lines. --gerd */ |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1054 XSETBUFFER (buffer, current_buffer); |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1055 window = Fget_buffer_window (buffer, Qt); |
|
fd3ece8a61e5
(Fset_buffer_modified_p): Set update_mode_lines
Gerd Moellmann <gerd@gnu.org>
parents:
27739
diff
changeset
|
1056 if (WINDOWP (window)) |
|
35339
e5e6579e8308
(Fset_buffer_modified_p): Set buffer's
Gerd Moellmann <gerd@gnu.org>
parents:
34488
diff
changeset
|
1057 { |
|
e5e6579e8308
(Fset_buffer_modified_p): Set buffer's
Gerd Moellmann <gerd@gnu.org>
parents:
34488
diff
changeset
|
1058 ++update_mode_lines; |
|
e5e6579e8308
(Fset_buffer_modified_p): Set buffer's
Gerd Moellmann <gerd@gnu.org>
parents:
34488
diff
changeset
|
1059 current_buffer->prevent_redisplay_optimizations_p = 1; |
|
e5e6579e8308
(Fset_buffer_modified_p): Set buffer's
Gerd Moellmann <gerd@gnu.org>
parents:
34488
diff
changeset
|
1060 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1061 |
| 333 | 1062 return flag; |
| 1063 } | |
| 1064 | |
|
28518
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1065 DEFUN ("restore-buffer-modified-p", Frestore_buffer_modified_p, |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1066 Srestore_buffer_modified_p, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1067 doc: /* Like `set-buffer-modified-p', with a differences concerning redisplay. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1068 It is not ensured that mode lines will be updated to show the modified |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1069 state of the current buffer. Use with care. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1070 (flag) |
|
28518
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1071 Lisp_Object flag; |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1072 { |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1073 #ifdef CLASH_DETECTION |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1074 Lisp_Object fn; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1075 |
|
28518
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1076 /* If buffer becoming modified, lock the file. |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1077 If buffer becoming unmodified, unlock the file. */ |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1078 |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1079 fn = current_buffer->file_truename; |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1080 /* Test buffer-file-name so that binding it to nil is effective. */ |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1081 if (!NILP (fn) && ! NILP (current_buffer->filename)) |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1082 { |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1083 int already = SAVE_MODIFF < MODIFF; |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1084 if (!already && !NILP (flag)) |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1085 lock_file (fn); |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1086 else if (already && NILP (flag)) |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1087 unlock_file (fn); |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1088 } |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1089 #endif /* CLASH_DETECTION */ |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1090 |
|
28518
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1091 SAVE_MODIFF = NILP (flag) ? MODIFF : 0; |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1092 return flag; |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1093 } |
|
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
1094 |
| 333 | 1095 DEFUN ("buffer-modified-tick", Fbuffer_modified_tick, Sbuffer_modified_tick, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
1096 0, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1097 doc: /* Return BUFFER's tick counter, incremented for each change in text. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1098 Each buffer has a tick counter which is incremented each time the text in |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1099 that buffer is changed. It wraps around occasionally. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1100 No argument or nil as argument means use current buffer as BUFFER. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1101 (buffer) |
| 333 | 1102 register Lisp_Object buffer; |
| 1103 { | |
| 1104 register struct buffer *buf; | |
| 485 | 1105 if (NILP (buffer)) |
| 333 | 1106 buf = current_buffer; |
| 1107 else | |
| 1108 { | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
1109 CHECK_BUFFER (buffer); |
| 333 | 1110 buf = XBUFFER (buffer); |
| 1111 } | |
| 1112 | |
| 1113 return make_number (BUF_MODIFF (buf)); | |
| 1114 } | |
| 1115 | |
| 392 | 1116 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
|
1117 "sRename buffer (to new name): \nP", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1118 doc: /* Change current buffer's name to NEWNAME (a string). |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1119 If second arg UNIQUE is nil or omitted, it is an error if a |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1120 buffer named NEWNAME already exists. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1121 If UNIQUE is non-nil, come up with a new name using |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1122 `generate-new-buffer-name'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1123 Interactively, you can set UNIQUE with a prefix argument. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1124 We return the name we actually gave the buffer. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1125 This does not change the name of the visited file (if any). */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1126 (newname, unique) |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1127 register Lisp_Object newname, unique; |
| 333 | 1128 { |
| 1129 register Lisp_Object tem, buf; | |
| 1130 | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
1131 CHECK_STRING (newname); |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1132 |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
1133 if (SCHARS (newname) == 0) |
|
7455
35657813817c
(Frename_buffer): Reject empty string as new name.
Richard M. Stallman <rms@gnu.org>
parents:
7434
diff
changeset
|
1134 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
|
1135 |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1136 tem = Fget_buffer (newname); |
| 485 | 1137 if (!NILP (tem)) |
| 392 | 1138 { |
|
28417
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1139 /* Don't short-circuit if UNIQUE is t. That is a useful way to |
|
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1140 rename the buffer automatically so you can create another |
|
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1141 with the original name. It makes UNIQUE equivalent to |
|
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1142 (rename-buffer (generate-new-buffer-name NEWNAME)). */ |
|
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1143 if (NILP (unique) && XBUFFER (tem) == current_buffer) |
|
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
1144 return current_buffer->name; |
|
1876
0ddafa88e654
(Frename_buffer): Make prefix arg set UNIQUE.
Richard M. Stallman <rms@gnu.org>
parents:
1821
diff
changeset
|
1145 if (!NILP (unique)) |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1146 newname = Fgenerate_new_buffer_name (newname, current_buffer->name); |
| 392 | 1147 else |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
1148 error ("Buffer name `%s' is in use", SDATA (newname)); |
| 392 | 1149 } |
| 333 | 1150 |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1151 current_buffer->name = newname; |
|
1707
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
1152 |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
1153 /* 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
|
1154 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
|
1155 update_mode_lines++; |
|
86c951f6a444
* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy <jimb@redhat.com>
parents:
1586
diff
changeset
|
1156 |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
1157 XSETBUFFER (buf, current_buffer); |
|
9933
d3f22955b872
(Frename_buffer): Rename arg NAME to NEWNAME.
Richard M. Stallman <rms@gnu.org>
parents:
9922
diff
changeset
|
1158 Fsetcar (Frassq (buf, Vbuffer_alist), newname); |
|
8599
cf3233d70e94
(Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents:
8550
diff
changeset
|
1159 if (NILP (current_buffer->filename) |
|
cf3233d70e94
(Frename_buffer): Fix gcpro problems.
Karl Heuer <kwzh@gnu.org>
parents:
8550
diff
changeset
|
1160 && !NILP (current_buffer->auto_save_file_name)) |
| 333 | 1161 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
|
1162 /* 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
|
1163 return current_buffer->name; |
| 333 | 1164 } |
| 1165 | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1166 DEFUN ("other-buffer", Fother_buffer, Sother_buffer, 0, 3, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1167 doc: /* Return most recently selected buffer other than BUFFER. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1168 Buffers not visible in windows are preferred to visible buffers, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1169 unless optional second argument VISIBLE-OK is non-nil. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1170 If the optional third argument FRAME is non-nil, use that frame's |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1171 buffer list instead of the selected frame's buffer list. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1172 If no other buffer exists, the buffer `*scratch*' is returned. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1173 If BUFFER is omitted or nil, some interesting buffer is returned. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1174 (buffer, visible_ok, frame) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1175 register Lisp_Object buffer, visible_ok, frame; |
| 333 | 1176 { |
|
14226
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1177 Lisp_Object Fset_buffer_major_mode (); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1178 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons; |
| 333 | 1179 notsogood = Qnil; |
| 1180 | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1181 if (NILP (frame)) |
|
25664
832aeb9c3996
(Fother_buffer): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25653
diff
changeset
|
1182 frame = selected_frame; |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1183 |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1184 tail = Vbuffer_alist; |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1185 pred = frame_buffer_predicate (frame); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1186 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1187 /* 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
|
1188 before other buffers. */ |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1189 |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1190 tem = frame_buffer_list (frame); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1191 add_ons = Qnil; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1192 while (CONSP (tem)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1193 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1194 if (BUFFERP (XCAR (tem))) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1195 add_ons = Fcons (Fcons (Qnil, XCAR (tem)), add_ons); |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1196 tem = XCDR (tem); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1197 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1198 tail = nconc2 (Fnreverse (add_ons), tail); |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1199 |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
1200 for (; CONSP (tail); tail = XCDR (tail)) |
| 333 | 1201 { |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
1202 buf = Fcdr (XCAR (tail)); |
| 333 | 1203 if (EQ (buf, buffer)) |
| 1204 continue; | |
|
53350
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1205 if (NILP (buf)) |
|
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1206 continue; |
|
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1207 if (NILP (XBUFFER (buf)->name)) |
|
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1208 continue; |
|
46419
46ff766afaaf
* buffer.c (Fother_buffer): Use SREF when retrieving a byte from
Ken Raeburn <raeburn@raeburn.org>
parents:
46378
diff
changeset
|
1209 if (SREF (XBUFFER (buf)->name, 0) == ' ') |
| 333 | 1210 continue; |
|
10210
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
1211 /* 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
|
1212 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
|
1213 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
|
1214 { |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1215 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
|
1216 if (NILP (tem)) |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
1217 continue; |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
1218 } |
|
43e95429ffa0
(Fget_buffer_create): Copy the name, and clear text props.
Richard M. Stallman <rms@gnu.org>
parents:
10146
diff
changeset
|
1219 |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
1220 if (NILP (visible_ok)) |
|
31395
d0f522cf422b
(Fother_buffer): Consider buffers as invisible when
Gerd Moellmann <gerd@gnu.org>
parents:
31128
diff
changeset
|
1221 tem = Fget_buffer_window (buf, Qvisible); |
|
1281
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
1222 else |
|
1f6cfa3ea4cb
* buffer.c (Fother_buffer): Add back the VISIBLE_OK argument. It
Jim Blandy <jimb@redhat.com>
parents:
1253
diff
changeset
|
1223 tem = Qnil; |
| 485 | 1224 if (NILP (tem)) |
| 333 | 1225 return buf; |
| 485 | 1226 if (NILP (notsogood)) |
| 333 | 1227 notsogood = buf; |
| 1228 } | |
| 485 | 1229 if (!NILP (notsogood)) |
| 333 | 1230 return notsogood; |
|
27480
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1231 buf = Fget_buffer (build_string ("*scratch*")); |
|
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1232 if (NILP (buf)) |
|
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1233 { |
|
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1234 buf = Fget_buffer_create (build_string ("*scratch*")); |
|
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1235 Fset_buffer_major_mode (buf); |
|
90165d2202f9
(Fother_buffer): Don't call Fset_buffer_major_mode
Gerd Moellmann <gerd@gnu.org>
parents:
27012
diff
changeset
|
1236 } |
|
14226
ad275aca6fc5
(Fother_buffer): If we have to create a new buffer, use
Karl Heuer <kwzh@gnu.org>
parents:
14186
diff
changeset
|
1237 return buf; |
| 333 | 1238 } |
| 1239 | |
|
12110
d7d7f15f3a92
(Fbuffer_disable_undo): Make this function interactive.
Karl Heuer <kwzh@gnu.org>
parents:
12101
diff
changeset
|
1240 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
|
1241 0, 1, "", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1242 doc: /* Make BUFFER stop keeping undo information. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1243 No argument or nil as argument means do this for the current buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1244 (buffer) |
| 648 | 1245 register Lisp_Object buffer; |
| 333 | 1246 { |
| 648 | 1247 Lisp_Object real_buffer; |
| 1248 | |
| 1249 if (NILP (buffer)) | |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
1250 XSETBUFFER (real_buffer, current_buffer); |
| 648 | 1251 else |
| 1252 { | |
| 1253 real_buffer = Fget_buffer (buffer); | |
| 1254 if (NILP (real_buffer)) | |
| 1255 nsberror (buffer); | |
| 1256 } | |
| 1257 | |
| 1258 XBUFFER (real_buffer)->undo_list = Qt; | |
| 1259 | |
| 333 | 1260 return Qnil; |
| 1261 } | |
| 1262 | |
| 1263 DEFUN ("buffer-enable-undo", Fbuffer_enable_undo, Sbuffer_enable_undo, | |
| 1264 0, 1, "", | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1265 doc: /* Start keeping undo information for buffer BUFFER. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1266 No argument or nil as argument means do this for the current buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1267 (buffer) |
| 648 | 1268 register Lisp_Object buffer; |
| 333 | 1269 { |
| 648 | 1270 Lisp_Object real_buffer; |
| 333 | 1271 |
| 648 | 1272 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
1273 XSETBUFFER (real_buffer, current_buffer); |
| 333 | 1274 else |
| 1275 { | |
| 648 | 1276 real_buffer = Fget_buffer (buffer); |
| 1277 if (NILP (real_buffer)) | |
| 1278 nsberror (buffer); | |
| 333 | 1279 } |
| 1280 | |
| 648 | 1281 if (EQ (XBUFFER (real_buffer)->undo_list, Qt)) |
| 1282 XBUFFER (real_buffer)->undo_list = Qnil; | |
| 333 | 1283 |
| 1284 return Qnil; | |
| 1285 } | |
| 1286 | |
| 1287 /* | |
| 1288 DEFVAR_LISP ("kill-buffer-hook", no_cell, "\ | |
| 1289 Hook to be run (by `run-hooks', which see) when a buffer is killed.\n\ | |
| 1290 The buffer being killed will be current while the hook is running.\n\ | |
| 1291 See `kill-buffer'." | |
| 1292 */ | |
| 1293 DEFUN ("kill-buffer", Fkill_buffer, Skill_buffer, 1, 1, "bKill buffer: ", | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1294 doc: /* Kill the buffer BUFFER. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1295 The argument may be a buffer or may be the name of a buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1296 An argument of nil means kill the current buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1297 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1298 Value is t if the buffer is actually killed, nil if user says no. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1299 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1300 The value of `kill-buffer-hook' (which may be local to that buffer), |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1301 if not void, is a list of functions to be called, with no arguments, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1302 before the buffer is actually killed. The buffer to be killed is current |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1303 when the hook functions are called. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1304 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1305 Any processes that have this buffer as the `process-buffer' are killed |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1306 with SIGHUP. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1307 (buffer) |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1308 Lisp_Object buffer; |
| 333 | 1309 { |
| 1310 Lisp_Object buf; | |
| 1311 register struct buffer *b; | |
| 1312 register Lisp_Object tem; | |
| 1313 register struct Lisp_Marker *m; | |
|
25744
8b89b961f7d1
(Fkill_buffer): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25664
diff
changeset
|
1314 struct gcpro gcpro1; |
| 333 | 1315 |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1316 if (NILP (buffer)) |
| 333 | 1317 buf = Fcurrent_buffer (); |
| 1318 else | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1319 buf = Fget_buffer (buffer); |
| 485 | 1320 if (NILP (buf)) |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1321 nsberror (buffer); |
| 333 | 1322 |
| 1323 b = XBUFFER (buf); | |
| 1324 | |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1325 /* Avoid trouble for buffer already dead. */ |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1326 if (NILP (b->name)) |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1327 return Qnil; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1328 |
| 333 | 1329 /* Query if the buffer is still modified. */ |
| 485 | 1330 if (INTERACTIVE && !NILP (b->filename) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1331 && BUF_MODIFF (b) > BUF_SAVE_MODIFF (b)) |
| 333 | 1332 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1333 GCPRO1 (buf); |
|
49444
a80513b20297
(Fkill_buffer): Call format2 instead of format1.
Richard M. Stallman <rms@gnu.org>
parents:
49057
diff
changeset
|
1334 tem = do_yes_or_no_p (format2 ("Buffer %s modified; kill anyway? ", |
|
a80513b20297
(Fkill_buffer): Call format2 instead of format1.
Richard M. Stallman <rms@gnu.org>
parents:
49057
diff
changeset
|
1335 b->name, make_number (0))); |
| 333 | 1336 UNGCPRO; |
| 485 | 1337 if (NILP (tem)) |
| 333 | 1338 return Qnil; |
| 1339 } | |
| 1340 | |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1341 /* Run hooks with the buffer to be killed the current buffer. */ |
| 333 | 1342 { |
|
46293
1fb8f75062c6
Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents:
46199
diff
changeset
|
1343 int count = SPECPDL_INDEX (); |
|
50014
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
1344 Lisp_Object arglist[1]; |
| 333 | 1345 |
| 1346 record_unwind_protect (save_excursion_restore, save_excursion_save ()); | |
| 1347 set_buffer_internal (b); | |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1348 |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1349 /* 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
|
1350 don't kill the buffer. */ |
|
50014
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
1351 arglist[0] = Qkill_buffer_query_functions; |
|
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
1352 if (NILP (Frun_hook_with_args_until_failure (1, arglist))) |
|
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
1353 return unbind_to (count, Qnil); |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1354 |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
1355 /* Then run the hooks. */ |
|
41524
095a45698793
(Fkill_buffer): Use Frun_hooks, not Vrun_hooks.
Richard M. Stallman <rms@gnu.org>
parents:
41027
diff
changeset
|
1356 Frun_hooks (1, &Qkill_buffer_hook); |
| 333 | 1357 unbind_to (count, Qnil); |
| 1358 } | |
| 1359 | |
| 1360 /* We have no more questions to ask. Verify that it is valid | |
| 1361 to kill the buffer. This must be done after the questions | |
| 1362 since anything can happen within do_yes_or_no_p. */ | |
| 1363 | |
| 1364 /* Don't kill the minibuffer now current. */ | |
| 1365 if (EQ (buf, XWINDOW (minibuf_window)->buffer)) | |
| 1366 return Qnil; | |
| 1367 | |
| 485 | 1368 if (NILP (b->name)) |
| 333 | 1369 return Qnil; |
| 1370 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1371 /* 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
|
1372 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
|
1373 ask questions or their hooks get errors. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1374 if (! b->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1375 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1376 struct buffer *other; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1377 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1378 GCPRO1 (buf); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1379 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1380 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
|
1381 /* all_buffers contains dead buffers too; |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1382 don't re-kill them. */ |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1383 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
|
1384 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1385 Lisp_Object buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1386 XSETBUFFER (buf, other); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1387 Fkill_buffer (buf); |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1388 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1389 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1390 UNGCPRO; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1391 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1392 |
| 333 | 1393 /* Make this buffer not be current. |
| 1394 In the process, notice if this is the sole visible buffer | |
| 1395 and give up if so. */ | |
| 1396 if (b == current_buffer) | |
| 1397 { | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1398 tem = Fother_buffer (buf, Qnil, Qnil); |
| 333 | 1399 Fset_buffer (tem); |
| 1400 if (b == current_buffer) | |
| 1401 return Qnil; | |
| 1402 } | |
| 1403 | |
|
33698
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1404 /* Notice if the buffer to kill is the sole visible buffer |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1405 when we're currently in the mini-buffer, and give up if so. */ |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1406 XSETBUFFER (tem, current_buffer); |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1407 if (EQ (tem, XWINDOW (minibuf_window)->buffer)) |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1408 { |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1409 tem = Fother_buffer (buf, Qnil, Qnil); |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1410 if (EQ (buf, tem)) |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1411 return Qnil; |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1412 } |
|
6864fead9622
(Fkill_buffer): Notice if the buffer to kill is the
Gerd Moellmann <gerd@gnu.org>
parents:
33675
diff
changeset
|
1413 |
| 333 | 1414 /* Now there is no question: we can kill the buffer. */ |
| 1415 | |
| 1416 #ifdef CLASH_DETECTION | |
| 1417 /* Unlock this buffer's file, if it is locked. */ | |
| 1418 unlock_buffer (b); | |
| 1419 #endif /* CLASH_DETECTION */ | |
| 1420 | |
| 1421 kill_buffer_processes (buf); | |
|
51782
3b58843e8f3f
(Fkill_buffer): Clear charpos cache if necessary.
Kenichi Handa <handa@m17n.org>
parents:
51669
diff
changeset
|
1422 clear_charpos_cache (b); |
| 333 | 1423 |
| 1424 tem = Vinhibit_quit; | |
| 1425 Vinhibit_quit = Qt; | |
|
13922
5636ed4243ec
(Fkill_buffer): Delete buffer from Vbuffer_alist after replacing it.
Erik Naggum <erik@naggum.no>
parents:
13917
diff
changeset
|
1426 replace_buffer_in_all_windows (buf); |
| 333 | 1427 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
|
1428 frames_discard_buffer (buf); |
| 333 | 1429 Vinhibit_quit = tem; |
| 1430 | |
|
40760
aa9b081b3a0d
(Fkill_buffer): Don't delete auto save file if buffer is modified.
Richard M. Stallman <rms@gnu.org>
parents:
40735
diff
changeset
|
1431 /* Delete any auto-save file, if we saved it in this session. |
|
aa9b081b3a0d
(Fkill_buffer): Don't delete auto save file if buffer is modified.
Richard M. Stallman <rms@gnu.org>
parents:
40735
diff
changeset
|
1432 But not if the buffer is modified. */ |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1433 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
|
1434 && b->auto_save_modified != 0 |
|
40760
aa9b081b3a0d
(Fkill_buffer): Don't delete auto save file if buffer is modified.
Richard M. Stallman <rms@gnu.org>
parents:
40735
diff
changeset
|
1435 && BUF_SAVE_MODIFF (b) < b->auto_save_modified |
|
53350
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1436 && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b) |
|
89a24e997838
(Fother_buffer): Don't crash if BUF is nil
Richard M. Stallman <rms@gnu.org>
parents:
52459
diff
changeset
|
1437 && NILP (Fsymbol_value (intern ("auto-save-visited-file-name")))) |
| 333 | 1438 { |
| 1439 Lisp_Object tem; | |
| 1440 tem = Fsymbol_value (intern ("delete-auto-save-files")); | |
| 485 | 1441 if (! NILP (tem)) |
|
10082
8d3a71736423
(Fkill_buffer): Use internal_delete_file.
Richard M. Stallman <rms@gnu.org>
parents:
9950
diff
changeset
|
1442 internal_delete_file (b->auto_save_file_name); |
| 333 | 1443 } |
| 1444 | |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1445 if (b->base_buffer) |
| 333 | 1446 { |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1447 /* 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
|
1448 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
|
1449 or its other indirect buffers. */ |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1450 for (m = BUF_MARKERS (b); m; ) |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1451 { |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1452 struct Lisp_Marker *next = m->next; |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1453 if (m->buffer == b) |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1454 unchain_marker (m); |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1455 m = next; |
|
12076
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1456 } |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1457 } |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1458 else |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1459 { |
|
ee38e93ccf7e
(Fkill_buffer): When killing indirect buffer,
Karl Heuer <kwzh@gnu.org>
parents:
11889
diff
changeset
|
1460 /* 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
|
1461 and leave them pointing nowhere. */ |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1462 for (m = BUF_MARKERS (b); m; ) |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1463 { |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1464 struct Lisp_Marker *next = m->next; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1465 m->buffer = 0; |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1466 m->next = NULL; |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1467 m = next; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1468 } |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1469 BUF_MARKERS (b) = NULL; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1470 BUF_INTERVALS (b) = NULL_INTERVAL; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1471 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1472 /* Perhaps we should explicitly free the interval tree here... */ |
| 333 | 1473 } |
|
1291
7c32612174c3
* buffer.c (reset_buffer): Do INITIALIZE_INTERVAL on the buffer's
Joseph Arceneaux <jla@gnu.org>
parents:
1281
diff
changeset
|
1474 |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
1475 /* 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
|
1476 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
|
1477 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
|
1478 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
|
1479 swap_out_buffer_local_variables (b); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
1480 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
|
1481 |
| 333 | 1482 b->name = Qnil; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1483 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
1484 BLOCK_INPUT; |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1485 if (! b->base_buffer) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
1486 free_buffer_text (b); |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1487 |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1488 if (b->newline_cache) |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1489 { |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1490 free_region_cache (b->newline_cache); |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1491 b->newline_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1492 } |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1493 if (b->width_run_cache) |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1494 { |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1495 free_region_cache (b->width_run_cache); |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1496 b->width_run_cache = 0; |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1497 } |
|
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
1498 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
|
1499 UNBLOCK_INPUT; |
| 333 | 1500 b->undo_list = Qnil; |
| 1501 | |
| 1502 return Qt; | |
| 1503 } | |
| 1504 | |
| 550 | 1505 /* Move the assoc for buffer BUF to the front of buffer-alist. Since |
| 1506 we do this each time BUF is selected visibly, the more recently | |
| 1507 selected buffers are always closer to the front of the list. This | |
| 1508 means that other_buffer is more likely to choose a relevant buffer. */ | |
| 333 | 1509 |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
1510 void |
| 333 | 1511 record_buffer (buf) |
| 1512 Lisp_Object buf; | |
| 1513 { | |
| 1514 register Lisp_Object link, prev; | |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1515 Lisp_Object frame; |
|
25664
832aeb9c3996
(Fother_buffer): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents:
25653
diff
changeset
|
1516 frame = selected_frame; |
| 333 | 1517 |
| 1518 prev = Qnil; | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1519 for (link = Vbuffer_alist; CONSP (link); link = XCDR (link)) |
| 333 | 1520 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1521 if (EQ (XCDR (XCAR (link)), buf)) |
| 333 | 1522 break; |
| 1523 prev = link; | |
| 1524 } | |
| 1525 | |
| 550 | 1526 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist); |
| 1527 we cannot use Fdelq itself here because it allows quitting. */ | |
| 333 | 1528 |
| 485 | 1529 if (NILP (prev)) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1530 Vbuffer_alist = XCDR (Vbuffer_alist); |
| 333 | 1531 else |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
1532 XSETCDR (prev, XCDR (XCDR (prev))); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1533 |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
1534 XSETCDR (link, Vbuffer_alist); |
| 333 | 1535 Vbuffer_alist = link; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1536 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1537 /* 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
|
1538 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1539 prev = Qnil; |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1540 for (link = frame_buffer_list (frame); CONSP (link); |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1541 link = XCDR (link)) |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1542 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1543 if (EQ (XCAR (link), buf)) |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1544 break; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1545 prev = link; |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1546 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1547 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1548 /* Effectively do delq. */ |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1549 |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1550 if (CONSP (link)) |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1551 { |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1552 if (NILP (prev)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1553 set_frame_buffer_list (frame, |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1554 XCDR (frame_buffer_list (frame))); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1555 else |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
1556 XSETCDR (prev, XCDR (XCDR (prev))); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1557 |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
1558 XSETCDR (link, frame_buffer_list (frame)); |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1559 set_frame_buffer_list (frame, link); |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1560 } |
|
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
1561 else |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1562 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame))); |
| 333 | 1563 } |
| 1564 | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1565 DEFUN ("set-buffer-major-mode", Fset_buffer_major_mode, Sset_buffer_major_mode, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1566 doc: /* Set an appropriate major mode for BUFFER. |
| 40605 | 1567 For the *scratch* buffer, use `initial-major-mode', otherwise choose a mode |
|
39974
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1568 according to `default-major-mode'. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1569 Use this function before selecting the buffer, since it may need to inspect |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1570 the current buffer's major mode. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1571 (buffer) |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1572 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
|
1573 { |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1574 int count; |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1575 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
|
1576 |
|
39974
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1577 if (STRINGP (XBUFFER (buffer)->name) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
1578 && strcmp (SDATA (XBUFFER (buffer)->name), "*scratch*") == 0) |
|
39974
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1579 function = find_symbol_value (intern ("initial-major-mode")); |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1580 else |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1581 { |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1582 function = buffer_defaults.major_mode; |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1583 if (NILP (function) |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1584 && NILP (Fget (current_buffer->major_mode, Qmode_class))) |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1585 function = current_buffer->major_mode; |
|
a72c97b251de
(Fset_buffer_major_mode): Use initial-major-mode for
Gerd Moellmann <gerd@gnu.org>
parents:
39973
diff
changeset
|
1586 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1587 |
| 48635 | 1588 if (NILP (function) || EQ (function, Qfundamental_mode)) |
| 1589 return Qnil; | |
| 1590 | |
|
46293
1fb8f75062c6
Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents:
46199
diff
changeset
|
1591 count = SPECPDL_INDEX (); |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1592 |
| 48635 | 1593 /* To select a nonfundamental mode, |
| 1594 select the buffer temporarily and then call the mode function. */ | |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1595 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1596 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
|
1597 |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1598 Fset_buffer (buffer); |
| 48635 | 1599 call0 (function); |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1600 |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1601 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
|
1602 } |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1603 |
|
25181
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1604 /* If switching buffers in WINDOW would be an error, return |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1605 a C string saying what the error would be. */ |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1606 |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1607 char * |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1608 no_switch_window (window) |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1609 Lisp_Object window; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1610 { |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1611 Lisp_Object tem; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1612 if (EQ (minibuf_window, window)) |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1613 return "Cannot switch buffers in minibuffer window"; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1614 tem = Fwindow_dedicated_p (window); |
|
43712
223f1f5d160d
(syms_of_buffer): Allow non-string `mode-name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43630
diff
changeset
|
1615 if (EQ (tem, Qt)) |
|
25181
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1616 return "Cannot switch buffers in a dedicated window"; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1617 return NULL; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1618 } |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1619 |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1620 /* Switch to buffer BUFFER in the selected window. |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1621 If NORECORD is non-nil, don't call record_buffer. */ |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1622 |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1623 Lisp_Object |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1624 switch_to_buffer_1 (buffer, norecord) |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1625 Lisp_Object buffer, norecord; |
| 333 | 1626 { |
| 1627 register Lisp_Object buf; | |
| 1628 | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1629 if (NILP (buffer)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1630 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil); |
| 333 | 1631 else |
|
9732
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1632 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1633 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
|
1634 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
|
1635 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1636 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
|
1637 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
|
1638 } |
|
577db538b0b6
(Fset_buffer_major_mode): New function. Set the default major mode here.
Karl Heuer <kwzh@gnu.org>
parents:
9632
diff
changeset
|
1639 } |
| 333 | 1640 Fset_buffer (buf); |
| 485 | 1641 if (NILP (norecord)) |
| 333 | 1642 record_buffer (buf); |
| 1643 | |
| 1644 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
|
1645 ? 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
|
1646 : selected_window, |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
1647 buf, Qnil); |
| 333 | 1648 |
|
16840
299b0e0f0a93
Fix typo editing previous change.
Richard M. Stallman <rms@gnu.org>
parents:
16830
diff
changeset
|
1649 return buf; |
| 333 | 1650 } |
| 1651 | |
|
25181
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1652 DEFUN ("switch-to-buffer", Fswitch_to_buffer, Sswitch_to_buffer, 1, 2, "BSwitch to buffer: ", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1653 doc: /* Select buffer BUFFER in the current window. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1654 BUFFER may be a buffer or a buffer name. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1655 Optional second arg NORECORD non-nil means |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1656 do not put this buffer at the front of the list of recently selected ones. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1657 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1658 WARNING: This is NOT the way to work on another buffer temporarily |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1659 within a Lisp program! Use `set-buffer' instead. That avoids messing with |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1660 the window-buffer correspondences. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1661 (buffer, norecord) |
|
25181
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1662 Lisp_Object buffer, norecord; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1663 { |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1664 char *err; |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1665 |
|
51939
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
1666 if (EQ (buffer, Fwindow_buffer (selected_window))) |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
1667 /* Basically a NOP. Avoid signalling an error if the selected window |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
1668 is dedicated, or a minibuffer, ... */ |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
1669 return Fset_buffer (buffer); |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
1670 |
|
25181
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1671 err = no_switch_window (selected_window); |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1672 if (err) error (err); |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1673 |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1674 return switch_to_buffer_1 (buffer, norecord); |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1675 } |
|
847441efad8d
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25021
diff
changeset
|
1676 |
|
16840
299b0e0f0a93
Fix typo editing previous change.
Richard M. Stallman <rms@gnu.org>
parents:
16830
diff
changeset
|
1677 DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1678 doc: /* Select buffer BUFFER in some window, preferably a different one. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1679 If BUFFER is nil, then some other buffer is chosen. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1680 If `pop-up-windows' is non-nil, windows can be split to do this. |
|
54266
840b8997440d
(Fpop_to_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
53958
diff
changeset
|
1681 If optional second arg OTHER-WINDOW is nil, insist on finding another |
|
840b8997440d
(Fpop_to_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
53958
diff
changeset
|
1682 window even if BUFFER is already visible in the selected window, |
|
840b8997440d
(Fpop_to_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
53958
diff
changeset
|
1683 and ignore `same-window-regexps' and `same-window-buffer-names'. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1684 This uses the function `display-buffer' as a subroutine; see the documentation |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1685 of `display-buffer' for additional customization information. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1686 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1687 Optional third arg NORECORD non-nil means |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1688 do not put this buffer at the front of the list of recently selected ones. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1689 (buffer, other_window, norecord) |
|
16830
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1690 Lisp_Object buffer, other_window, norecord; |
| 333 | 1691 { |
| 1692 register Lisp_Object buf; | |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1693 if (NILP (buffer)) |
|
22189
2a61a0a3a9be
(Fother_buffer): New arg FRAME. Calls changed.
Richard M. Stallman <rms@gnu.org>
parents:
22171
diff
changeset
|
1694 buf = Fother_buffer (Fcurrent_buffer (), Qnil, Qnil); |
| 333 | 1695 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
|
1696 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1697 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
|
1698 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
|
1699 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1700 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
|
1701 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
|
1702 } |
|
3aea65d9eb68
(Fpop_to_buffer): Call Fset_buffer_major_mode if we create a buffer.
Richard M. Stallman <rms@gnu.org>
parents:
10751
diff
changeset
|
1703 } |
| 333 | 1704 Fset_buffer (buf); |
|
16830
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1705 if (NILP (norecord)) |
|
51048
7ac9c3bea5ea
(Fselect_window): Add optional arg `norecord'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50605
diff
changeset
|
1706 /* Why bother ? Fselect_window will do it for us anyway. -stef */ |
|
16830
4792e73d511f
(Fpop_to_buffer): New arg NORECORD.
Richard M. Stallman <rms@gnu.org>
parents:
16665
diff
changeset
|
1707 record_buffer (buf); |
|
51048
7ac9c3bea5ea
(Fselect_window): Add optional arg `norecord'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50605
diff
changeset
|
1708 Fselect_window (Fdisplay_buffer (buf, other_window, Qnil), norecord); |
|
3295
4d405f172c79
(reset_buffer): Clear mark_active field here.
Richard M. Stallman <rms@gnu.org>
parents:
3242
diff
changeset
|
1709 return buf; |
| 333 | 1710 } |
| 1711 | |
| 1712 DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1713 doc: /* Return the current buffer as a Lisp object. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1714 () |
| 333 | 1715 { |
| 1716 register Lisp_Object buf; | |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
1717 XSETBUFFER (buf, current_buffer); |
| 333 | 1718 return buf; |
| 1719 } | |
| 1720 | |
|
25491
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1721 /* Set the current buffer to B. |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1722 |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1723 We previously set windows_or_buffers_changed here to invalidate |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1724 global unchanged information in beg_unchanged and end_unchanged. |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1725 This is no longer necessary because we now compute unchanged |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1726 information on a buffer-basis. Every action affecting other |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1727 windows than the selected one requires a select_window at some |
|
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1728 time, and that increments windows_or_buffers_changed. */ |
| 333 | 1729 |
| 1730 void | |
| 1731 set_buffer_internal (b) | |
| 1732 register struct buffer *b; | |
| 1733 { | |
|
25368
f9949db6ca7d
(set_buffer_internal): Set windows_or_buffers_changed
Gerd Moellmann <gerd@gnu.org>
parents:
25351
diff
changeset
|
1734 if (current_buffer != b) |
|
25491
0359edc6e428
(set_buffer_internal): Never set
Gerd Moellmann <gerd@gnu.org>
parents:
25368
diff
changeset
|
1735 set_buffer_internal_1 (b); |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1736 } |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1737 |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1738 /* 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
|
1739 This is used by redisplay. */ |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1740 |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1741 void |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1742 set_buffer_internal_1 (b) |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1743 register struct buffer *b; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1744 { |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1745 register struct buffer *old_buf; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1746 register Lisp_Object tail, valcontents; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1747 Lisp_Object tem; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1748 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
1749 #ifdef USE_MMAP_FOR_BUFFERS |
|
31416
9b8c5bea5e8d
(set_buffer_internal_1) [REL_ALLOC_MMAP]: If
Gerd Moellmann <gerd@gnu.org>
parents:
31412
diff
changeset
|
1750 if (b->text->beg == NULL) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
1751 enlarge_buffer_text (b, 0); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
1752 #endif /* USE_MMAP_FOR_BUFFERS */ |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1753 |
|
11889
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1754 if (current_buffer == b) |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1755 return; |
|
1067ddd12dfc
(set_buffer_internal_1): New subroutine.
Karl Heuer <kwzh@gnu.org>
parents:
11838
diff
changeset
|
1756 |
| 333 | 1757 old_buf = current_buffer; |
| 1758 current_buffer = b; | |
| 1759 last_known_column_point = -1; /* invalidate indentation cache */ | |
| 1760 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1761 if (old_buf) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1762 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1763 /* 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
|
1764 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
|
1765 if (old_buf->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1766 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
|
1767 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1768 /* 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
|
1769 when it is not current, update them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1770 if (! NILP (old_buf->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1771 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1772 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1773 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1774 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
|
1775 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
|
1776 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1777 if (! NILP (old_buf->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1778 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1779 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1780 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1781 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
|
1782 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
|
1783 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1784 if (! NILP (old_buf->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1785 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1786 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1787 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1788 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
|
1789 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
|
1790 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1791 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1792 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1793 /* 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
|
1794 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
|
1795 if (b->base_buffer) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1796 b->undo_list = b->base_buffer->undo_list; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1797 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1798 /* 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
|
1799 when it is not current, fetch them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1800 if (! NILP (b->pt_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1801 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1802 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
|
1803 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
|
1804 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1805 if (! NILP (b->begv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1806 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1807 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
|
1808 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
|
1809 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1810 if (! NILP (b->zv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1811 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1812 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
|
1813 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
|
1814 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1815 |
| 333 | 1816 /* Look down buffer's list of local Lisp variables |
| 1817 to find and update any that forward into C variables. */ | |
| 1818 | |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1819 for (tail = b->local_var_alist; CONSP (tail); tail = XCDR (tail)) |
| 333 | 1820 { |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
1821 valcontents = SYMBOL_VALUE (XCAR (XCAR (tail))); |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1822 if ((BUFFER_LOCAL_VALUEP (valcontents) |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1823 || 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
|
1824 && (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
|
1825 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem)))) |
| 333 | 1826 /* Just reference the variable |
| 1827 to cause it to become set for this buffer. */ | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1828 Fsymbol_value (XCAR (XCAR (tail))); |
| 333 | 1829 } |
| 1830 | |
| 1831 /* Do the same with any others that were local to the previous buffer */ | |
| 1832 | |
| 1833 if (old_buf) | |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
1834 for (tail = old_buf->local_var_alist; CONSP (tail); tail = XCDR (tail)) |
| 333 | 1835 { |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
1836 valcontents = SYMBOL_VALUE (XCAR (XCAR (tail))); |
|
9146
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1837 if ((BUFFER_LOCAL_VALUEP (valcontents) |
|
8f966cc4652b
(nsberror, Fget_buffer, Fget_file_buffer, Fbuffer_local_variables,
Karl Heuer <kwzh@gnu.org>
parents:
9047
diff
changeset
|
1838 || 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
|
1839 && (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
|
1840 (BOOLFWDP (tem) || INTFWDP (tem) || OBJFWDP (tem)))) |
| 333 | 1841 /* Just reference the variable |
| 1842 to cause it to become set for this buffer. */ | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
1843 Fsymbol_value (XCAR (XCAR (tail))); |
| 333 | 1844 } |
| 1845 } | |
| 1846 | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1847 /* 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
|
1848 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
|
1849 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1850 void |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1851 set_buffer_temp (b) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1852 struct buffer *b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1853 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1854 register struct buffer *old_buf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1855 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1856 if (current_buffer == b) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1857 return; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1858 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1859 old_buf = current_buffer; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1860 current_buffer = b; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1861 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1862 if (old_buf) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1863 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1864 /* 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
|
1865 when it is not current, update them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1866 if (! NILP (old_buf->pt_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1867 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1868 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1869 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1870 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
|
1871 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
|
1872 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1873 if (! NILP (old_buf->begv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1874 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1875 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1876 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1877 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
|
1878 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
|
1879 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1880 if (! NILP (old_buf->zv_marker)) |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1881 { |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1882 Lisp_Object obuf; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1883 XSETBUFFER (obuf, old_buf); |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1884 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
|
1885 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
|
1886 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1887 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1888 |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1889 /* 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
|
1890 when it is not current, fetch them now. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1891 if (! NILP (b->pt_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1892 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1893 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
|
1894 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
|
1895 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1896 if (! NILP (b->begv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1897 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1898 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
|
1899 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
|
1900 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1901 if (! NILP (b->zv_marker)) |
|
20538
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1902 { |
|
b964f3facafa
(Fmake_indirect_buffer): Use set_marker_both.
Richard M. Stallman <rms@gnu.org>
parents:
20368
diff
changeset
|
1903 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
|
1904 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
|
1905 } |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1906 } |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
1907 |
| 333 | 1908 DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1909 doc: /* Make the buffer BUFFER current for editing operations. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1910 BUFFER may be a buffer or the name of an existing buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1911 See also `save-excursion' when you want to make a buffer current temporarily. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1912 This function does not display the buffer, so its effect ends |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1913 when the current command terminates. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1914 Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1915 (buffer) |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1916 register Lisp_Object buffer; |
| 333 | 1917 { |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1918 register Lisp_Object buf; |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1919 buf = Fget_buffer (buffer); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1920 if (NILP (buf)) |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1921 nsberror (buffer); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1922 if (NILP (XBUFFER (buf)->name)) |
| 333 | 1923 error ("Selecting deleted buffer"); |
|
13762
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1924 set_buffer_internal (XBUFFER (buf)); |
|
71c14edf7d6d
(Fkill_buffer): Rename arg bufname to buffer.
Karl Heuer <kwzh@gnu.org>
parents:
13446
diff
changeset
|
1925 return buf; |
| 333 | 1926 } |
|
20698
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1927 |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1928 /* 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
|
1929 |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1930 Lisp_Object |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1931 set_buffer_if_live (buffer) |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1932 Lisp_Object buffer; |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1933 { |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1934 if (! NILP (XBUFFER (buffer)->name)) |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1935 Fset_buffer (buffer); |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1936 return Qnil; |
|
ec08780e4c42
(set_buffer_if_live): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20679
diff
changeset
|
1937 } |
| 333 | 1938 |
| 1939 DEFUN ("barf-if-buffer-read-only", Fbarf_if_buffer_read_only, | |
| 1940 Sbarf_if_buffer_read_only, 0, 0, 0, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1941 doc: /* Signal a `buffer-read-only' error if the current buffer is read-only. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1942 () |
| 333 | 1943 { |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
1944 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
|
1945 && NILP (Vinhibit_read_only)) |
| 333 | 1946 Fsignal (Qbuffer_read_only, (Fcons (Fcurrent_buffer (), Qnil))); |
| 1947 return Qnil; | |
| 1948 } | |
| 1949 | |
| 1950 DEFUN ("bury-buffer", Fbury_buffer, Sbury_buffer, 0, 1, "", | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1951 doc: /* Put BUFFER at the end of the list of all buffers. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1952 There it is the least likely candidate for `other-buffer' to return; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1953 thus, the least likely buffer for \\[switch-to-buffer] to select by default. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1954 If BUFFER is nil or omitted, bury the current buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
1955 Also, if BUFFER is nil or omitted, remove the current buffer from the |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1956 selected window if it is displayed there. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
1957 (buffer) |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1958 register Lisp_Object buffer; |
| 333 | 1959 { |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1960 /* 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
|
1961 if (NILP (buffer)) |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
1962 { |
|
39802
efbac46c874c
(Fbury_buffer): Don't try to remove the buffer from the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39748
diff
changeset
|
1963 Lisp_Object tem; |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1964 XSETBUFFER (buffer, current_buffer); |
|
18485
d6e8b92585e9
(Fbury_buffer): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18455
diff
changeset
|
1965 |
|
39802
efbac46c874c
(Fbury_buffer): Don't try to remove the buffer from the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39748
diff
changeset
|
1966 tem = Fwindow_buffer (selected_window); |
|
18485
d6e8b92585e9
(Fbury_buffer): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18455
diff
changeset
|
1967 /* If we're burying the current buffer, unshow it. */ |
|
39802
efbac46c874c
(Fbury_buffer): Don't try to remove the buffer from the
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39748
diff
changeset
|
1968 if (EQ (buffer, tem)) |
|
40840
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1969 { |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1970 if (NILP (Fwindow_dedicated_p (selected_window))) |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1971 Fswitch_to_buffer (Fother_buffer (buffer, Qnil, Qnil), Qnil); |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1972 else if (NILP (XWINDOW (selected_window)->parent)) |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1973 Ficonify_frame (Fwindow_frame (selected_window)); |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1974 else |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1975 Fdelete_window (selected_window); |
|
2b65fb0dbd2d
(Fbury_buffer): Use braces to follow GNU Coding Standards.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40760
diff
changeset
|
1976 } |
|
1586
f84e400808d0
* buffer.c (Ferase_buffer): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1563
diff
changeset
|
1977 } |
| 333 | 1978 else |
| 1979 { | |
| 1980 Lisp_Object buf1; | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
1981 |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1982 buf1 = Fget_buffer (buffer); |
| 485 | 1983 if (NILP (buf1)) |
|
14060
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1984 nsberror (buffer); |
|
b62397f49a24
(Fmake_indirect_buffer, Fset_buffer_major_mode, Fpop_to_buffer,
Erik Naggum <erik@naggum.no>
parents:
13922
diff
changeset
|
1985 buffer = buf1; |
|
1252
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1986 } |
|
86a17674c2a1
* buffer.c (Fbury_buffer): This used to undisplay the buffer being
Jim Blandy <jimb@redhat.com>
parents:
1195
diff
changeset
|
1987 |
|
28991
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1988 /* Move buffer to the end of the buffer list. Do nothing if the |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1989 buffer is killed. */ |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1990 if (!NILP (XBUFFER (buffer)->name)) |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1991 { |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1992 Lisp_Object aelt, link; |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1993 |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1994 aelt = Frassq (buffer, Vbuffer_alist); |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1995 link = Fmemq (aelt, Vbuffer_alist); |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1996 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist); |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
1997 XSETCDR (link, Qnil); |
|
28991
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1998 Vbuffer_alist = nconc2 (Vbuffer_alist, link); |
|
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
1999 |
|
46016
3ba98b59cb49
(Fbury_buffer): Use frames_discard_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
45683
diff
changeset
|
2000 /* Removing BUFFER from frame-specific lists |
|
3ba98b59cb49
(Fbury_buffer): Use frames_discard_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
45683
diff
changeset
|
2001 has the effect of putting BUFFER at the end |
|
3ba98b59cb49
(Fbury_buffer): Use frames_discard_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
45683
diff
changeset
|
2002 of the combined list in each frame. */ |
|
3ba98b59cb49
(Fbury_buffer): Use frames_discard_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
45683
diff
changeset
|
2003 frames_discard_buffer (buffer); |
|
28991
f8bcf3bec2a6
(Fbury_buffer): Avoid trouble from burying a killed buffer.
Gerd Moellmann <gerd@gnu.org>
parents:
28878
diff
changeset
|
2004 } |
|
17234
bda734eef575
(Fbury_buffer): Call frames_bury_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
17220
diff
changeset
|
2005 |
| 333 | 2006 return Qnil; |
| 2007 } | |
| 2008 | |
|
1953
714df59790af
(Ferase_buffer): Added interactive spec.
Roland McGrath <roland@gnu.org>
parents:
1952
diff
changeset
|
2009 DEFUN ("erase-buffer", Ferase_buffer, Serase_buffer, 0, 0, "*", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2010 doc: /* Delete the entire contents of the current buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2011 Any narrowing restriction in effect (see `narrow-to-region') is removed, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2012 so the buffer is truly empty after this. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2013 () |
| 333 | 2014 { |
| 2015 Fwiden (); | |
|
26056
9c4556ef15de
(Fget_buffer_create, Fmake_indirect_buffer, Fkill_buffer):
Gerd Moellmann <gerd@gnu.org>
parents:
25744
diff
changeset
|
2016 |
|
9c4556ef15de
(Fget_buffer_create, Fmake_indirect_buffer, Fkill_buffer):
Gerd Moellmann <gerd@gnu.org>
parents:
25744
diff
changeset
|
2017 del_range (BEG, Z); |
|
25626
acfb741e6e24
(Ferase_buffer): Don't erase the minibuffer prompt.
Richard M. Stallman <rms@gnu.org>
parents:
25546
diff
changeset
|
2018 |
| 333 | 2019 current_buffer->last_window_start = 1; |
| 2020 /* Prevent warnings, or suspension of auto saving, that would happen | |
| 2021 if future size is less than past size. Use of erase-buffer | |
| 2022 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
|
2023 XSETFASTINT (current_buffer->save_length, 0); |
| 333 | 2024 return Qnil; |
| 2025 } | |
| 2026 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
2027 void |
| 333 | 2028 validate_region (b, e) |
| 2029 register Lisp_Object *b, *e; | |
| 2030 { | |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
2031 CHECK_NUMBER_COERCE_MARKER (*b); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
2032 CHECK_NUMBER_COERCE_MARKER (*e); |
| 333 | 2033 |
| 2034 if (XINT (*b) > XINT (*e)) | |
| 2035 { | |
|
9335
8cf58b38d244
(validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents:
9296
diff
changeset
|
2036 Lisp_Object tem; |
|
8cf58b38d244
(validate_region): Swap using temp Lisp_Object, not int.
Karl Heuer <kwzh@gnu.org>
parents:
9296
diff
changeset
|
2037 tem = *b; *b = *e; *e = tem; |
| 333 | 2038 } |
| 2039 | |
| 2040 if (!(BEGV <= XINT (*b) && XINT (*b) <= XINT (*e) | |
| 2041 && XINT (*e) <= ZV)) | |
| 2042 args_out_of_range (*b, *e); | |
| 2043 } | |
| 2044 | |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2045 /* 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
|
2046 and return the adjusted position. */ |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2047 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2048 static int |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2049 advance_to_char_boundary (byte_pos) |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2050 int byte_pos; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2051 { |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2052 int c; |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2053 |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2054 if (byte_pos == BEG) |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2055 /* Beginning of buffer is always a character boundary. */ |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
2056 return BEG; |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2057 |
|
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2058 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
|
2059 if (! CHAR_HEAD_P (c)) |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2060 { |
| 25508 | 2061 /* We should advance BYTE_POS only when C is a constituent of a |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2062 multibyte sequence. */ |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2063 int orig_byte_pos = byte_pos; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2064 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2065 do |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2066 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2067 byte_pos--; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2068 c = FETCH_BYTE (byte_pos); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2069 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2070 while (! CHAR_HEAD_P (c) && byte_pos > BEG); |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2071 INC_POS (byte_pos); |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2072 if (byte_pos < orig_byte_pos) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2073 byte_pos = orig_byte_pos; |
|
21085
6b0336de5fbe
(advance_to_char_boundary): Handle the case the code
Richard M. Stallman <rms@gnu.org>
parents:
21065
diff
changeset
|
2074 /* 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
|
2075 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
|
2076 not, BYTE_POS was unchanged. */ |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2077 } |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2078 |
|
20935
2fc5eb0799fe
(advance_to_char_boundary): Make the behaviour
Kenichi Handa <handa@m17n.org>
parents:
20868
diff
changeset
|
2079 return byte_pos; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2080 } |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2081 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2082 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
|
2083 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2084 doc: /* Set the multibyte flag of the current buffer to FLAG. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2085 If FLAG is t, this makes the buffer a multibyte buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2086 If FLAG is nil, this makes the buffer a single-byte buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2087 The buffer contents remain unchanged as a sequence of bytes |
|
53815
004f4b57ea3f
(Fset_buffer_multibyte): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
53655
diff
changeset
|
2088 but the contents viewed as characters do change. |
|
53816
0987c11386f1
(Fset_buffer_multibyte): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
53815
diff
changeset
|
2089 If the multibyte flag was really changed, undo information of the |
|
53815
004f4b57ea3f
(Fset_buffer_multibyte): Fix docstring.
Kenichi Handa <handa@m17n.org>
parents:
53655
diff
changeset
|
2090 current buffer is cleared. */) |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2091 (flag) |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2092 Lisp_Object flag; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2093 { |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2094 struct Lisp_Marker *tail, *markers; |
|
24604
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2095 struct buffer *other; |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2096 int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); |
|
51391
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2097 int begv, zv; |
|
51394
d1641e2dfc5b
(Fset_buffer_multibyte): Fix previous change.
Kenichi Handa <handa@m17n.org>
parents:
51391
diff
changeset
|
2098 int narrowed = (BEG != BEGV || Z != ZV); |
|
29456
1aa0c1122f75
(Fset_buffer_multibyte): Don't make the current buffer as modified if
Kenichi Handa <handa@m17n.org>
parents:
29380
diff
changeset
|
2099 int modified_p = !NILP (Fbuffer_modified_p (Qnil)); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2100 |
|
24240
6ea9058180ec
(Fset_buffer_multibyte): Error if buffer is multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
23760
diff
changeset
|
2101 if (current_buffer->base_buffer) |
|
6ea9058180ec
(Fset_buffer_multibyte): Error if buffer is multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
23760
diff
changeset
|
2102 error ("Cannot do `set-buffer-multibyte' on an indirect buffer"); |
|
6ea9058180ec
(Fset_buffer_multibyte): Error if buffer is multibyte.
Richard M. Stallman <rms@gnu.org>
parents:
23760
diff
changeset
|
2103 |
|
21506
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
2104 /* Do nothing if nothing actually changes. */ |
|
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
2105 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
|
2106 return flag; |
|
a44f9f59c656
(Fset_buffer_multibyte): Do nothing if nothing actually
Andreas Schwab <schwab@suse.de>
parents:
21244
diff
changeset
|
2107 |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2108 /* 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
|
2109 but this is good enough for now. */ |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2110 if (undo_enabled_p) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2111 current_buffer->undo_list = Qt; |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2112 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2113 /* 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
|
2114 clear_charpos_cache (current_buffer); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2115 |
|
51391
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2116 if (NILP (flag)) |
|
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2117 begv = BEGV_BYTE, zv = ZV_BYTE; |
|
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2118 else |
|
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2119 begv = BEGV, zv = ZV; |
|
61ea5c492ffb
(Fset_buffer_multibyte): Correctly recover a narrowed
Kenichi Handa <handa@m17n.org>
parents:
51318
diff
changeset
|
2120 |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2121 if (narrowed) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2122 Fwiden (); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2123 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2124 if (NILP (flag)) |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2125 { |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2126 int pos, stop; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2127 unsigned char *p; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2128 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2129 /* 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
|
2130 to calculate the old correspondences. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2131 set_intervals_multibyte (0); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2132 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2133 current_buffer->enable_multibyte_characters = Qnil; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2134 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2135 Z = Z_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2136 BEGV = BEGV_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2137 ZV = ZV_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2138 GPT = GPT_BYTE; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2139 TEMP_SET_PT_BOTH (PT_BYTE, PT_BYTE); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2140 |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2141 |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2142 for (tail = BUF_MARKERS (current_buffer); tail; tail = tail->next) |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2143 tail->charpos = tail->bytepos; |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2144 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2145 /* Convert multibyte form of 8-bit characters to unibyte. */ |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2146 pos = BEG; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2147 stop = GPT; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2148 p = BEG_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2149 while (1) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2150 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2151 int c, bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2152 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2153 if (pos == stop) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2154 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2155 if (pos == Z) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2156 break; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2157 p = GAP_END_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2158 stop = Z; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2159 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2160 if (MULTIBYTE_STR_AS_UNIBYTE_P (p, bytes)) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2161 p += bytes, pos += bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2162 else |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2163 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2164 c = STRING_CHAR (p, stop - pos); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2165 /* Delete all bytes for this 8-bit character but the |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2166 last one, and change the last one to the charcter |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2167 code. */ |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2168 bytes--; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2169 del_range_2 (pos, pos, pos + bytes, pos + bytes, 0); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2170 p = GAP_END_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2171 *p++ = c; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2172 pos++; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2173 if (begv > pos) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2174 begv -= bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2175 if (zv > pos) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2176 zv -= bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2177 stop = Z; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2178 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2179 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2180 if (narrowed) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2181 Fnarrow_to_region (make_number (begv), make_number (zv)); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2182 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2183 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2184 { |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2185 int pt = PT; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2186 int pos, stop; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2187 unsigned char *p; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2188 |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2189 /* Be sure not to have a multibyte sequence striding over the GAP. |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2190 Ex: We change this: "...abc\201 _GAP_ \241def..." |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2191 to: "...abc _GAP_ \201\241def..." */ |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2192 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2193 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
|
2194 && ! 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
|
2195 { |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2196 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
|
2197 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2198 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
|
2199 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
|
2200 { |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2201 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
|
2202 |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2203 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
|
2204 } |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2205 } |
|
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2206 |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2207 /* Make the buffer contents valid as multibyte by converting |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2208 8-bit characters to multibyte form. */ |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2209 pos = BEG; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2210 stop = GPT; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2211 p = BEG_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2212 while (1) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2213 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2214 int bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2215 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2216 if (pos == stop) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2217 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2218 if (pos == Z) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2219 break; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2220 p = GAP_END_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2221 stop = Z; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2222 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
2223 |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2224 if (UNIBYTE_STR_AS_MULTIBYTE_P (p, stop - pos, bytes)) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2225 p += bytes, pos += bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2226 else |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2227 { |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2228 unsigned char tmp[MAX_MULTIBYTE_LENGTH]; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2229 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2230 bytes = CHAR_STRING (*p, tmp); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2231 *p = tmp[0]; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2232 TEMP_SET_PT_BOTH (pos + 1, pos + 1); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2233 bytes--; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2234 insert_1_both (tmp + 1, bytes, bytes, 1, 0, 0); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2235 /* Now the gap is after the just inserted data. */ |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2236 pos = GPT; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2237 p = GAP_END_ADDR; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2238 if (pos <= begv) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2239 begv += bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2240 if (pos <= zv) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2241 zv += bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2242 if (pos <= pt) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2243 pt += bytes; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2244 stop = Z; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2245 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2246 } |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2247 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2248 if (pt != PT) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2249 TEMP_SET_PT (pt); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2250 |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2251 if (narrowed) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2252 Fnarrow_to_region (make_number (begv), make_number (zv)); |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2253 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2254 /* 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
|
2255 set_intervals_multibyte needs it too. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2256 current_buffer->enable_multibyte_characters = Qt; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2257 |
|
20868
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2258 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
|
2259 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
|
2260 |
|
21065
fde58556c616
(Fset_buffer_multibyte): Fix arg for chars_in_text.
Kenichi Handa <handa@m17n.org>
parents:
20995
diff
changeset
|
2261 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
|
2262 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2263 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
|
2264 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
|
2265 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
|
2266 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2267 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
|
2268 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2269 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
|
2270 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
|
2271 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
|
2272 else |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2273 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
|
2274 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2275 { |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2276 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
|
2277 int pt; |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2278 |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2279 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
|
2280 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
|
2281 else |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2282 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
|
2283 TEMP_SET_PT_BOTH (pt, pt_byte); |
|
83f23c9f7c4d
(advance_to_char_boundary): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20853
diff
changeset
|
2284 } |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2285 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2286 tail = markers = BUF_MARKERS (current_buffer); |
| 22021 | 2287 |
| 2288 /* This prevents BYTE_TO_CHAR (that is, buf_bytepos_to_charpos) from | |
| 2289 getting confused by the markers that have not yet been updated. | |
| 2290 It is also a signal that it should never create a marker. */ | |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2291 BUF_MARKERS (current_buffer) = NULL; |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2292 |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2293 for (; tail; tail = tail->next) |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2294 { |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2295 tail->bytepos = advance_to_char_boundary (tail->bytepos); |
|
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2296 tail->charpos = BYTE_TO_CHAR (tail->bytepos); |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2297 } |
|
22023
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
2298 |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
2299 /* 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
|
2300 while the chain value was incorrect. */ |
|
51669
f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51431
diff
changeset
|
2301 if (BUF_MARKERS (current_buffer)) |
|
22023
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
2302 abort (); |
|
8c00a2d112cc
(Fset_buffer_multibyte): Error if marker is put
Richard M. Stallman <rms@gnu.org>
parents:
22021
diff
changeset
|
2303 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2304 BUF_MARKERS (current_buffer) = markers; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2305 |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2306 /* 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
|
2307 between chars and bytes. */ |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2308 set_intervals_multibyte (1); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2309 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2310 |
|
28998
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2311 if (undo_enabled_p) |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2312 current_buffer->undo_list = Qnil; |
|
d8c9e2f7022f
(advance_to_char_boundary): Don't use DEC_POS to find a
Kenichi Handa <handa@m17n.org>
parents:
28991
diff
changeset
|
2313 |
|
26970
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2314 /* Changing the multibyteness of a buffer means that all windows |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2315 showing that buffer must be updated thoroughly. */ |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2316 current_buffer->prevent_redisplay_optimizations_p = 1; |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2317 ++windows_or_buffers_changed; |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2318 |
|
24604
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2319 /* Copy this buffer's new multibyte status |
|
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2320 into all of its indirect buffers. */ |
|
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2321 for (other = all_buffers; other; other = other->next) |
|
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2322 if (other->base_buffer == current_buffer && !NILP (other->name)) |
|
26970
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2323 { |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2324 other->enable_multibyte_characters |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2325 = current_buffer->enable_multibyte_characters; |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2326 other->prevent_redisplay_optimizations_p = 1; |
|
7b3d9b3a9d69
(Fset_buffer_multibyte): Arrange for a thorough
Gerd Moellmann <gerd@gnu.org>
parents:
26555
diff
changeset
|
2327 } |
|
24604
a9eb0deae6c0
(Fmake_indirect_buffer): Copy multibyte status from the base buffer.
Richard M. Stallman <rms@gnu.org>
parents:
24520
diff
changeset
|
2328 |
|
29456
1aa0c1122f75
(Fset_buffer_multibyte): Don't make the current buffer as modified if
Kenichi Handa <handa@m17n.org>
parents:
29380
diff
changeset
|
2329 /* Restore the modifiedness of the buffer. */ |
|
1aa0c1122f75
(Fset_buffer_multibyte): Don't make the current buffer as modified if
Kenichi Handa <handa@m17n.org>
parents:
29380
diff
changeset
|
2330 if (!modified_p && !NILP (Fbuffer_modified_p (Qnil))) |
|
1aa0c1122f75
(Fset_buffer_multibyte): Don't make the current buffer as modified if
Kenichi Handa <handa@m17n.org>
parents:
29380
diff
changeset
|
2331 Fset_buffer_modified_p (Qnil); |
|
1aa0c1122f75
(Fset_buffer_multibyte): Don't make the current buffer as modified if
Kenichi Handa <handa@m17n.org>
parents:
29380
diff
changeset
|
2332 |
|
49974
3420da3e4b0f
(Fset_buffer_multibyte): Pay attention to the buffer
Kenichi Handa <handa@m17n.org>
parents:
49664
diff
changeset
|
2333 #ifdef subprocesses |
|
49664
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2334 /* Update coding systems of this buffer's process (if any). */ |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2335 { |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2336 Lisp_Object process; |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2337 |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2338 process = Fget_buffer_process (Fcurrent_buffer ()); |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2339 if (PROCESSP (process)) |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2340 setup_process_coding_systems (process); |
|
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2341 } |
|
49974
3420da3e4b0f
(Fset_buffer_multibyte): Pay attention to the buffer
Kenichi Handa <handa@m17n.org>
parents:
49664
diff
changeset
|
2342 #endif /* subprocesses */ |
|
49664
8bcbac2617a9
(Fset_buffer_multibyte): If the current buffer has a
Kenichi Handa <handa@m17n.org>
parents:
49600
diff
changeset
|
2343 |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2344 return flag; |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2345 } |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
2346 |
| 333 | 2347 DEFUN ("kill-all-local-variables", Fkill_all_local_variables, Skill_all_local_variables, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
2348 0, 0, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2349 doc: /* Switch to Fundamental mode by killing current buffer's local variables. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2350 Most local variable bindings are eliminated so that the default values |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2351 become effective once more. Also, the syntax table is set from |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2352 `standard-syntax-table', the local keymap is set to nil, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2353 and the abbrev table from `fundamental-mode-abbrev-table'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2354 This function also forces redisplay of the mode line. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2355 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2356 Every function to select a new major mode starts by |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2357 calling this function. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2358 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2359 As a special exception, local variables whose names have |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2360 a non-nil `permanent-local' property are not eliminated by this function. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2361 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
2362 The first thing this function does is run |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2363 the normal hook `change-major-mode-hook'. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
2364 () |
| 333 | 2365 { |
| 2366 register Lisp_Object alist, sym, tem; | |
| 2367 Lisp_Object oalist; | |
|
5873
fa8b769ef564
(Fkill_all_local_variables): Run change-major-mode-hook.
Karl Heuer <kwzh@gnu.org>
parents:
5857
diff
changeset
|
2368 |
|
6205
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
2369 if (!NILP (Vrun_hooks)) |
|
88e41d7d1e27
(Fkill_buffer, Fkill_all_local_variables):
Richard M. Stallman <rms@gnu.org>
parents:
6169
diff
changeset
|
2370 call1 (Vrun_hooks, intern ("change-major-mode-hook")); |
| 333 | 2371 oalist = current_buffer->local_var_alist; |
| 2372 | |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2373 /* 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
|
2374 remain swapped in, in their symbols. */ |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2375 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2376 swap_out_buffer_local_variables (current_buffer); |
| 333 | 2377 |
| 2378 /* Actually eliminate all local bindings of this buffer. */ | |
| 2379 | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
2380 reset_buffer_local_variables (current_buffer, 0); |
| 333 | 2381 |
| 2382 /* Any which are supposed to be permanent, | |
| 2383 make local again, with the same values they had. */ | |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
2384 |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2385 for (alist = oalist; !NILP (alist); alist = XCDR (alist)) |
| 333 | 2386 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2387 sym = XCAR (XCAR (alist)); |
| 333 | 2388 tem = Fget (sym, Qpermanent_local); |
| 485 | 2389 if (! NILP (tem)) |
| 392 | 2390 { |
| 2391 Fmake_local_variable (sym); | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2392 Fset (sym, XCDR (XCAR (alist))); |
| 392 | 2393 } |
| 333 | 2394 } |
| 2395 | |
| 2396 /* Force mode-line redisplay. Useful here because all major mode | |
| 2397 commands call this function. */ | |
| 2398 update_mode_lines++; | |
| 2399 | |
| 2400 return Qnil; | |
| 2401 } | |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2402 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2403 /* 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
|
2404 for their current values. */ |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2405 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2406 static void |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2407 swap_out_buffer_local_variables (b) |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2408 struct buffer *b; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2409 { |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2410 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
|
2411 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2412 XSETBUFFER (buffer, b); |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2413 oalist = b->local_var_alist; |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2414 |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2415 for (alist = oalist; !NILP (alist); alist = XCDR (alist)) |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2416 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
2417 sym = XCAR (XCAR (alist)); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2418 |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2419 /* Need not do anything if some other buffer's binding is now encached. */ |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
2420 tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer; |
|
28417
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
2421 if (BUFFERP (tem) && XBUFFER (tem) == current_buffer) |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2422 { |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2423 /* 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
|
2424 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
|
2425 |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
2426 tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->cdr; |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2427 /* 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
|
2428 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
|
2429 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
|
2430 later in Fkill_all_local_variables, we don't lose the value. */ |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
2431 XSETCDR (XCAR (tem), |
|
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
2432 do_symval_forwarding (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue)); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2433 /* Switch to the symbol's default-value alist entry. */ |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
2434 XSETCAR (tem, tem); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2435 /* Mark it as current for buffer B. */ |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
2436 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer = buffer; |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2437 /* 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
|
2438 store_symval_forwarding (sym, |
|
39581
6d9fa06012a6
Use SYMBOL_VALUE/SET_SYMBOL_VALUE macros instead of accessing
Gerd Moellmann <gerd@gnu.org>
parents:
39337
diff
changeset
|
2439 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue, |
|
36818
c2640df9b55b
(swap_out_buffer_local_variables): Call
Gerd Moellmann <gerd@gnu.org>
parents:
36626
diff
changeset
|
2440 XCDR (tem), NULL); |
|
11214
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2441 } |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2442 } |
|
b880572ce431
(Fkill_buffer): Call reset_buffer_local_variables
Richard M. Stallman <rms@gnu.org>
parents:
11112
diff
changeset
|
2443 } |
| 333 | 2444 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2445 /* Find all the overlays in the current buffer that contain position POS. |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
2446 Return the number found, and store them in a vector in *VEC_PTR. |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2447 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
|
2448 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
|
2449 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
|
2450 Store in *PREV_PTR the previous position before POS where an overlay ends, |
|
25184
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2451 or where an overlay starts which ends at or after POS; |
|
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2452 or BEGV if there are no such overlays. |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2453 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
|
2454 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2455 *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
|
2456 when this function is called. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2457 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2458 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
|
2459 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
|
2460 and we store only as many overlays as will fit. |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2461 But we still return the total number of overlays. |
|
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2462 |
|
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2463 If CHANGE_REQ is true, then any position written into *PREV_PTR or |
|
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2464 *NEXT_PTR is guaranteed to be not equal to POS, unless it is the |
|
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2465 default (BEGV or ZV). */ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2466 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2467 int |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2468 overlays_at (pos, extend, vec_ptr, len_ptr, next_ptr, prev_ptr, change_req) |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
2469 EMACS_INT pos; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2470 int extend; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2471 Lisp_Object **vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2472 int *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2473 int *next_ptr; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2474 int *prev_ptr; |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
2475 int change_req; |
| 333 | 2476 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2477 Lisp_Object overlay, start, end; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2478 struct Lisp_Overlay *tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2479 int idx = 0; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2480 int len = *len_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2481 Lisp_Object *vec = *vec_ptr; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2482 int next = ZV; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2483 int prev = BEGV; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2484 int inhibit_storing = 0; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2485 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2486 for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2487 { |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2488 int startpos, endpos; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2489 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2490 XSETMISC (overlay, tail); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2491 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2492 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2493 end = OVERLAY_END (overlay); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2494 endpos = OVERLAY_POSITION (end); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2495 if (endpos < pos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2496 { |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2497 if (prev < endpos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2498 prev = endpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2499 break; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2500 } |
|
25184
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2501 startpos = OVERLAY_POSITION (start); |
|
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2502 /* This one ends at or after POS |
|
25205
14269f6d315b
(Fprevious_overlay_change): Just return the answer obtained from overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
25184
diff
changeset
|
2503 so its start counts for PREV_PTR if it's before POS. */ |
|
25184
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2504 if (prev < startpos && startpos < pos) |
|
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2505 prev = startpos; |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2506 if (endpos == pos) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2507 continue; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2508 if (startpos <= pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2509 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2510 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2511 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2512 /* The supplied vector is full. |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2513 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
|
2514 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2515 { |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2516 /* Make it work with an initial len == 0. */ |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2517 len *= 2; |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2518 if (len == 0) |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2519 len = 4; |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2520 *len_ptr = len; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2521 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
|
2522 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2523 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2524 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2525 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2526 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2527 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2528 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2529 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2530 /* 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
|
2531 idx++; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2532 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2533 else if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2534 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2535 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2536 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2537 for (tail = current_buffer->overlays_after; tail; tail = tail->next) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2538 { |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2539 int startpos, endpos; |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2540 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2541 XSETMISC (overlay, tail); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2542 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2543 start = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2544 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2545 startpos = OVERLAY_POSITION (start); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
2546 if (pos < startpos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2547 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2548 if (startpos < next) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2549 next = startpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2550 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2551 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2552 endpos = OVERLAY_POSITION (end); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2553 if (pos < endpos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2554 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2555 if (idx == len) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2556 { |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2557 if (extend) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2558 { |
|
46920
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2559 /* Make it work with an initial len == 0. */ |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2560 len *= 2; |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
2561 if (len == 0) |
|
46920
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2562 len = 4; |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2563 *len_ptr = len; |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2564 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
|
2565 *vec_ptr = vec; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2566 } |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2567 else |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2568 inhibit_storing = 1; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2569 } |
|
2839
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2570 |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2571 if (!inhibit_storing) |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2572 vec[idx] = overlay; |
|
8c43cc245dd2
(overlays_at): New arg EXTEND.
Richard M. Stallman <rms@gnu.org>
parents:
2791
diff
changeset
|
2573 idx++; |
|
25184
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2574 |
|
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2575 if (startpos < pos && startpos > prev) |
|
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2576 prev = startpos; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2577 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2578 else if (endpos < pos && endpos > prev) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2579 prev = endpos; |
|
32856
5fe3b3dc5dd9
(overlays_at): Only let CHANGE_REQ inhibit an assignment of startpos to
Miles Bader <miles@gnu.org>
parents:
31886
diff
changeset
|
2580 else if (endpos == pos && startpos > prev |
|
5fe3b3dc5dd9
(overlays_at): Only let CHANGE_REQ inhibit an assignment of startpos to
Miles Bader <miles@gnu.org>
parents:
31886
diff
changeset
|
2581 && (!change_req || startpos < pos)) |
|
25184
290fceb2b1c0
(switch_to_buffer_1): New subroutine, taken out from Fswitch_to_buffer.
Richard M. Stallman <rms@gnu.org>
parents:
25181
diff
changeset
|
2582 prev = startpos; |
|
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 |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2585 if (next_ptr) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2586 *next_ptr = next; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2587 if (prev_ptr) |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
2588 *prev_ptr = prev; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2589 return idx; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2590 } |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2591 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2592 /* 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
|
2593 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
|
2594 |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
2595 Return the number found, and store them in a vector in *VEC_PTR. |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2596 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
|
2597 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
|
2598 or ZV if there are no more overlays. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2599 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
|
2600 or BEGV if there are no previous overlays. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2601 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
|
2602 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2603 *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
|
2604 when this function is called. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2605 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2606 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
|
2607 If EXTEND is zero, we never extend the vector, |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2608 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
|
2609 But we still return the total number of overlays. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2610 |
|
50304
d9d826db650f
(overlays_in): Declare static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50014
diff
changeset
|
2611 static int |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2612 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
|
2613 int beg, end; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2614 int extend; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2615 Lisp_Object **vec_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2616 int *len_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2617 int *next_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2618 int *prev_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2619 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2620 Lisp_Object overlay, ostart, oend; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2621 struct Lisp_Overlay *tail; |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2622 int idx = 0; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2623 int len = *len_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2624 Lisp_Object *vec = *vec_ptr; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2625 int next = ZV; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2626 int prev = BEGV; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2627 int inhibit_storing = 0; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2628 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2629 for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2630 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2631 int startpos, endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2632 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2633 XSETMISC (overlay, tail); |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2634 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2635 ostart = OVERLAY_START (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2636 oend = OVERLAY_END (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2637 endpos = OVERLAY_POSITION (oend); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2638 if (endpos < beg) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2639 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2640 if (prev < endpos) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2641 prev = endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2642 break; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2643 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2644 startpos = OVERLAY_POSITION (ostart); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2645 /* 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
|
2646 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
|
2647 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
|
2648 || (startpos == endpos && beg == endpos)) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2649 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2650 if (idx == len) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2651 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2652 /* The supplied vector is full. |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2653 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
|
2654 if (extend) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2655 { |
|
46920
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2656 /* Make it work with an initial len == 0. */ |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2657 len *= 2; |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2658 if (len == 0) |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2659 len = 4; |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2660 *len_ptr = len; |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2661 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2662 *vec_ptr = vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2663 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2664 else |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2665 inhibit_storing = 1; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2666 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2667 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2668 if (!inhibit_storing) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2669 vec[idx] = overlay; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2670 /* 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
|
2671 idx++; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2672 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2673 else if (startpos < next) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2674 next = startpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2675 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2676 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2677 for (tail = current_buffer->overlays_after; tail; tail = tail->next) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2678 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2679 int startpos, endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2680 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2681 XSETMISC (overlay, tail); |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2682 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2683 ostart = OVERLAY_START (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2684 oend = OVERLAY_END (overlay); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2685 startpos = OVERLAY_POSITION (ostart); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2686 if (end < startpos) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2687 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2688 if (startpos < next) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2689 next = startpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2690 break; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2691 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2692 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
|
2693 /* 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
|
2694 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
|
2695 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
|
2696 || (startpos == endpos && beg == endpos)) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2697 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2698 if (idx == len) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2699 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2700 if (extend) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2701 { |
|
46920
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2702 /* Make it work with an initial len == 0. */ |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2703 len *= 2; |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2704 if (len == 0) |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2705 len = 4; |
|
a92cb918558c
(overlays_at): Handle extending vec uniformly.
Richard M. Stallman <rms@gnu.org>
parents:
46864
diff
changeset
|
2706 *len_ptr = len; |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2707 vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2708 *vec_ptr = vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2709 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2710 else |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2711 inhibit_storing = 1; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2712 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2713 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2714 if (!inhibit_storing) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2715 vec[idx] = overlay; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2716 idx++; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2717 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2718 else if (endpos < beg && endpos > prev) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2719 prev = endpos; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2720 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2721 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2722 if (next_ptr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2723 *next_ptr = next; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2724 if (prev_ptr) |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2725 *prev_ptr = prev; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2726 return idx; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2727 } |
|
36584
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2728 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2729 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2730 /* Return non-zero if there exists an overlay with a non-nil |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2731 `mouse-face' property overlapping OVERLAY. */ |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2732 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2733 int |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2734 mouse_face_overlay_overlaps (overlay) |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2735 Lisp_Object overlay; |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2736 { |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2737 int start = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2738 int end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
37463
7db9a70334b7
(mouse_face_overlay_overlaps): Fix the computation
Gerd Moellmann <gerd@gnu.org>
parents:
37011
diff
changeset
|
2739 int n, i, size; |
|
36584
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2740 Lisp_Object *v, tem; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
2741 |
|
37463
7db9a70334b7
(mouse_face_overlay_overlaps): Fix the computation
Gerd Moellmann <gerd@gnu.org>
parents:
37011
diff
changeset
|
2742 size = 10; |
|
7db9a70334b7
(mouse_face_overlay_overlaps): Fix the computation
Gerd Moellmann <gerd@gnu.org>
parents:
37011
diff
changeset
|
2743 v = (Lisp_Object *) alloca (size * sizeof *v); |
|
7db9a70334b7
(mouse_face_overlay_overlaps): Fix the computation
Gerd Moellmann <gerd@gnu.org>
parents:
37011
diff
changeset
|
2744 n = overlays_in (start, end, 0, &v, &size, NULL, NULL); |
|
7db9a70334b7
(mouse_face_overlay_overlaps): Fix the computation
Gerd Moellmann <gerd@gnu.org>
parents:
37011
diff
changeset
|
2745 if (n > size) |
|
36584
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2746 { |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2747 v = (Lisp_Object *) alloca (n * sizeof *v); |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2748 overlays_in (start, end, 0, &v, &n, NULL, NULL); |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2749 } |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2750 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2751 for (i = 0; i < n; ++i) |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2752 if (!EQ (v[i], overlay) |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2753 && (tem = Foverlay_get (overlay, Qmouse_face), |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2754 !NILP (tem))) |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2755 break; |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2756 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2757 return i < n; |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2758 } |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2759 |
|
1f80152aeddc
(mouse_face_overlay_overlaps): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
35339
diff
changeset
|
2760 |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
2761 |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2762 /* 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
|
2763 int |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2764 overlay_touches_p (pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2765 int pos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2766 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2767 Lisp_Object overlay; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2768 struct Lisp_Overlay *tail; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2769 |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2770 for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2771 { |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2772 int endpos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2773 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2774 XSETMISC (overlay ,tail); |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2775 if (!GC_OVERLAYP (overlay)) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2776 abort (); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2777 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2778 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2779 if (endpos < pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2780 break; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2781 if (endpos == pos || OVERLAY_POSITION (OVERLAY_START (overlay)) == pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2782 return 1; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2783 } |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2784 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2785 for (tail = current_buffer->overlays_after; tail; tail = tail->next) |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2786 { |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2787 int startpos; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2788 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2789 XSETMISC (overlay, tail); |
|
11097
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2790 if (!GC_OVERLAYP (overlay)) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2791 abort (); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2792 |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2793 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2794 if (pos < startpos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2795 break; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2796 if (startpos == pos || OVERLAY_POSITION (OVERLAY_END (overlay)) == pos) |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2797 return 1; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2798 } |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2799 return 0; |
|
e1b4b0d66bf3
(overlay_touches_p): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11052
diff
changeset
|
2800 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
2801 |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2802 struct sortvec |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2803 { |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2804 Lisp_Object overlay; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2805 int beg, end; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2806 int priority; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2807 }; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2808 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2809 static int |
| 21514 | 2810 compare_overlays (v1, v2) |
| 2811 const void *v1, *v2; | |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2812 { |
| 21514 | 2813 const struct sortvec *s1 = (const struct sortvec *) v1; |
| 2814 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
|
2815 if (s1->priority != s2->priority) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2816 return s1->priority - s2->priority; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2817 if (s1->beg != s2->beg) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2818 return s1->beg - s2->beg; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2819 if (s1->end != s2->end) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2820 return s2->end - s1->end; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2821 return 0; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2822 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2823 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2824 /* 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
|
2825 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
|
2826 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
|
2827 int |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2828 sort_overlays (overlay_vec, noverlays, w) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2829 Lisp_Object *overlay_vec; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2830 int noverlays; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2831 struct window *w; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2832 { |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2833 int i, j; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2834 struct sortvec *sortvec; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2835 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
|
2836 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2837 /* 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
|
2838 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2839 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
|
2840 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2841 Lisp_Object tem; |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2842 Lisp_Object overlay; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2843 |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
2844 overlay = overlay_vec[i]; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2845 if (OVERLAY_VALID (overlay) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2846 && OVERLAY_POSITION (OVERLAY_START (overlay)) > 0 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2847 && OVERLAY_POSITION (OVERLAY_END (overlay)) > 0) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2848 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2849 /* 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
|
2850 overlays that are limited to some other window. */ |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2851 if (w) |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2852 { |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2853 Lisp_Object window; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2854 |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2855 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
|
2856 if (WINDOWP (window) && XWINDOW (window) != w) |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2857 continue; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2858 } |
|
6061
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2859 |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2860 /* 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
|
2861 sortvec[j].overlay = overlay; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2862 sortvec[j].beg = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2863 sortvec[j].end = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2864 tem = Foverlay_get (overlay, Qpriority); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2865 if (INTEGERP (tem)) |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2866 sortvec[j].priority = XINT (tem); |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2867 else |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2868 sortvec[j].priority = 0; |
|
e40292d5c167
(sort_overlays): Allow for null window.
Karl Heuer <kwzh@gnu.org>
parents:
6051
diff
changeset
|
2869 j++; |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2870 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2871 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2872 noverlays = j; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2873 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2874 /* 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
|
2875 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2876 if (noverlays > 1) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2877 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
|
2878 |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2879 for (i = 0; i < noverlays; i++) |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2880 overlay_vec[i] = sortvec[i].overlay; |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2881 return (noverlays); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2882 } |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
2883 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2884 struct sortstr |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2885 { |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2886 Lisp_Object string, string2; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2887 int size; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2888 int priority; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2889 }; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2890 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2891 struct sortstrlist |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2892 { |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2893 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
|
2894 int size; /* Allocated length of that array. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2895 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
|
2896 int bytes; /* Total length of the strings in buf. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2897 }; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2898 |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2899 /* Buffers for storing information about the overlays touching a given |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2900 position. These could be automatic variables in overlay_strings, but |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2901 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
|
2902 allocating and freeing it. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2903 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
|
2904 static unsigned char *overlay_str_buf; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2905 |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2906 /* Allocated length of overlay_str_buf. */ |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2907 static int overlay_str_len; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2908 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2909 /* A comparison function suitable for passing to qsort. */ |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2910 static int |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2911 cmp_for_strings (as1, as2) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2912 char *as1, *as2; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2913 { |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2914 struct sortstr *s1 = (struct sortstr *)as1; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2915 struct sortstr *s2 = (struct sortstr *)as2; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2916 if (s1->size != s2->size) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2917 return s2->size - s1->size; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2918 if (s1->priority != s2->priority) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2919 return s1->priority - s2->priority; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2920 return 0; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2921 } |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2922 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2923 static void |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2924 record_overlay_string (ssl, str, str2, pri, size) |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2925 struct sortstrlist *ssl; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2926 Lisp_Object str, str2, pri; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2927 int size; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2928 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2929 int nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2930 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2931 if (ssl->used == ssl->size) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2932 { |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2933 if (ssl->buf) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2934 ssl->size *= 2; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2935 else |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2936 ssl->size = 5; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2937 ssl->buf = ((struct sortstr *) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2938 xrealloc (ssl->buf, ssl->size * sizeof (struct sortstr))); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2939 } |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2940 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
|
2941 ssl->buf[ssl->used].string2 = str2; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2942 ssl->buf[ssl->used].size = size; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2943 ssl->buf[ssl->used].priority = (INTEGERP (pri) ? XINT (pri) : 0); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2944 ssl->used++; |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2945 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2946 if (NILP (current_buffer->enable_multibyte_characters)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2947 nbytes = SCHARS (str); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2948 else if (! STRING_MULTIBYTE (str)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2949 nbytes = count_size_as_multibyte (SDATA (str), |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2950 SBYTES (str)); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2951 else |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2952 nbytes = SBYTES (str); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2953 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2954 ssl->bytes += nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2955 |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2956 if (STRINGP (str2)) |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2957 { |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2958 if (NILP (current_buffer->enable_multibyte_characters)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2959 nbytes = SCHARS (str2); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2960 else if (! STRING_MULTIBYTE (str2)) |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2961 nbytes = count_size_as_multibyte (SDATA (str2), |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2962 SBYTES (str2)); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2963 else |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
2964 nbytes = SBYTES (str2); |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2965 |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2966 ssl->bytes += nbytes; |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2967 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2968 } |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2969 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2970 /* 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
|
2971 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
|
2972 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
|
2973 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
|
2974 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
|
2975 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
|
2976 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
|
2977 |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
2978 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
|
2979 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
|
2980 subsequent calls. */ |
|
16243
b311d8755530
(overlay_strings): Declare pstr using unsigned char.
Richard M. Stallman <rms@gnu.org>
parents:
16213
diff
changeset
|
2981 |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2982 int |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2983 overlay_strings (pos, w, pstr) |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
2984 EMACS_INT pos; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2985 struct window *w; |
|
16243
b311d8755530
(overlay_strings): Declare pstr using unsigned char.
Richard M. Stallman <rms@gnu.org>
parents:
16213
diff
changeset
|
2986 unsigned char **pstr; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2987 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2988 Lisp_Object overlay, window, str; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2989 struct Lisp_Overlay *ov; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2990 int startpos, endpos; |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
2991 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
|
2992 |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2993 overlay_heads.used = overlay_heads.bytes = 0; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
2994 overlay_tails.used = overlay_tails.bytes = 0; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2995 for (ov = current_buffer->overlays_before; ov; ov = ov->next) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2996 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
2997 XSETMISC (overlay, ov); |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
2998 eassert (OVERLAYP (overlay)); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
2999 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3000 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3001 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3002 if (endpos < pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3003 break; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3004 if (endpos != pos && startpos != pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3005 continue; |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3006 window = Foverlay_get (overlay, Qwindow); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3007 if (WINDOWP (window) && XWINDOW (window) != w) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3008 continue; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3009 if (startpos == pos |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3010 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3011 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
|
3012 (startpos == endpos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3013 ? 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
|
3014 : Qnil), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3015 Foverlay_get (overlay, Qpriority), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3016 endpos - startpos); |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3017 else if (endpos == pos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3018 && (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
|
3019 record_overlay_string (&overlay_tails, str, Qnil, |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3020 Foverlay_get (overlay, Qpriority), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3021 endpos - startpos); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3022 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3023 for (ov = current_buffer->overlays_after; ov; ov = ov->next) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3024 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3025 XSETMISC (overlay, ov); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3026 eassert (OVERLAYP (overlay)); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3027 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3028 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3029 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3030 if (startpos > pos) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3031 break; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3032 if (endpos != pos && startpos != pos) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3033 continue; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3034 window = Foverlay_get (overlay, Qwindow); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3035 if (WINDOWP (window) && XWINDOW (window) != w) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3036 continue; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3037 if (startpos == pos |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3038 && (str = Foverlay_get (overlay, Qbefore_string), STRINGP (str))) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3039 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
|
3040 (startpos == endpos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3041 ? 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
|
3042 : Qnil), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3043 Foverlay_get (overlay, Qpriority), |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3044 endpos - startpos); |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3045 else if (endpos == pos |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3046 && (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
|
3047 record_overlay_string (&overlay_tails, str, Qnil, |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3048 Foverlay_get (overlay, Qpriority), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3049 endpos - startpos); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3050 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3051 if (overlay_tails.used > 1) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3052 qsort (overlay_tails.buf, overlay_tails.used, sizeof (struct sortstr), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3053 cmp_for_strings); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3054 if (overlay_heads.used > 1) |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3055 qsort (overlay_heads.buf, overlay_heads.used, sizeof (struct sortstr), |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3056 cmp_for_strings); |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3057 if (overlay_heads.bytes || overlay_tails.bytes) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3058 { |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3059 Lisp_Object tem; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3060 int i; |
|
18603
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
3061 unsigned char *p; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3062 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
|
3063 |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3064 if (total > overlay_str_len) |
|
18603
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
3065 { |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
3066 overlay_str_len = total; |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
3067 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
|
3068 total); |
|
525fb9a7cc96
(overlay_strings): Finish up previous change.
Richard M. Stallman <rms@gnu.org>
parents:
18526
diff
changeset
|
3069 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3070 p = overlay_str_buf; |
|
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3071 for (i = overlay_tails.used; --i >= 0;) |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3072 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3073 int nbytes; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3074 tem = overlay_tails.buf[i].string; |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3075 nbytes = copy_text (SDATA (tem), p, |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3076 SBYTES (tem), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3077 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3078 p += nbytes; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3079 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3080 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
|
3081 { |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3082 int nbytes; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3083 tem = overlay_heads.buf[i].string; |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3084 nbytes = copy_text (SDATA (tem), p, |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3085 SBYTES (tem), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3086 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3087 p += nbytes; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3088 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
|
3089 if (STRINGP (tem)) |
|
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3090 { |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3091 nbytes = copy_text (SDATA (tem), p, |
|
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
3092 SBYTES (tem), |
|
20586
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3093 STRING_MULTIBYTE (tem), multibyte); |
|
90d6a75210d6
(record_overlay_string): Totalize sizes assuming
Richard M. Stallman <rms@gnu.org>
parents:
20538
diff
changeset
|
3094 p += nbytes; |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3095 } |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3096 } |
|
12699
d0f4113de2ea
(record_overlay_string, overlay_strings): Handle zero-sized overlays better.
Karl Heuer <kwzh@gnu.org>
parents:
12697
diff
changeset
|
3097 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
|
3098 abort (); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3099 if (pstr) |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3100 *pstr = overlay_str_buf; |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3101 return total; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3102 } |
|
12697
9ebf33d6d07c
(struct sortstrlist): New type.
Karl Heuer <kwzh@gnu.org>
parents:
12538
diff
changeset
|
3103 return 0; |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3104 } |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
3105 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3106 /* Shift overlays in BUF's overlay lists, to center the lists at POS. */ |
| 333 | 3107 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3108 void |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3109 recenter_overlay_lists (buf, pos) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3110 struct buffer *buf; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3111 EMACS_INT pos; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3112 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3113 Lisp_Object overlay, beg, end; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3114 struct Lisp_Overlay *prev, *tail, *next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3115 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3116 /* 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
|
3117 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3118 /* 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
|
3119 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
|
3120 with some future change. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3121 prev = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3122 for (tail = buf->overlays_before; tail; prev = tail, tail = next) |
| 333 | 3123 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3124 next = tail->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3125 XSETMISC (overlay, tail); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3126 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3127 /* 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
|
3128 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3129 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3130 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3131 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3132 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3133 /* 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
|
3134 if (!NILP (prev)) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
3135 XCDR (prev) = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3136 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3137 buf->overlays_before = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3138 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3139 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3140 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3141 #endif |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3142 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3143 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3144 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3145 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3146 if (OVERLAY_POSITION (end) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3147 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3148 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3149 int where = OVERLAY_POSITION (beg); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3150 struct Lisp_Overlay *other, *other_prev; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3151 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3152 /* Splice the cons cell TAIL out of overlays_before. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3153 if (prev) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3154 prev->next = next; |
|
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 buf->overlays_before = next; |
|
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 /* Search thru overlays_after for where to put it. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3159 other_prev = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3160 for (other = buf->overlays_after; other; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3161 other_prev = other, other = other->next) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3162 { |
|
25744
8b89b961f7d1
(Fkill_buffer): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25664
diff
changeset
|
3163 Lisp_Object otherbeg, otheroverlay; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3164 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3165 XSETMISC (otheroverlay, other); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3166 eassert (OVERLAY_VALID (otheroverlay)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3167 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3168 otherbeg = OVERLAY_START (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3169 if (OVERLAY_POSITION (otherbeg) >= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3170 break; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3171 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3172 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3173 /* Add TAIL to overlays_after before OTHER. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3174 tail->next = other; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3175 if (other_prev) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3176 other_prev->next = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3177 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3178 buf->overlays_after = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3179 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3180 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3181 else |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3182 /* 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
|
3183 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
|
3184 so stop now. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3185 break; |
| 333 | 3186 } |
| 3187 | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3188 /* See if anything in overlays_after should be in overlays_before. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3189 prev = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3190 for (tail = buf->overlays_after; tail; prev = tail, tail = next) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3191 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3192 next = tail->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3193 XSETMISC (overlay, tail); |
| 333 | 3194 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3195 /* 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
|
3196 if (!OVERLAY_VALID (overlay)) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3197 #if 1 |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3198 abort (); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3199 #else |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3200 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3201 /* 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
|
3202 if (!NILP (prev)) |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
3203 XCDR (prev) = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3204 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3205 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3206 tail = prev; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3207 continue; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3208 } |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3209 #endif |
| 333 | 3210 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3211 beg = OVERLAY_START (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3212 end = OVERLAY_END (overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3213 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3214 /* Stop looking, when we know that nothing further |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3215 can possibly end before POS. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3216 if (OVERLAY_POSITION (beg) > pos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3217 break; |
| 333 | 3218 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3219 if (OVERLAY_POSITION (end) <= pos) |
| 333 | 3220 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3221 /* OVERLAY needs to be moved. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3222 int where = OVERLAY_POSITION (end); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3223 struct Lisp_Overlay *other, *other_prev; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3224 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3225 /* Splice the cons cell TAIL out of overlays_after. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3226 if (prev) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3227 prev->next = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3228 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3229 buf->overlays_after = next; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3230 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3231 /* Search thru overlays_before for where to put it. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3232 other_prev = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3233 for (other = buf->overlays_before; other; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3234 other_prev = other, other = other->next) |
| 333 | 3235 { |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3236 Lisp_Object otherend, otheroverlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3237 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3238 XSETMISC (otheroverlay, other); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3239 eassert (OVERLAY_VALID (otheroverlay)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3240 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3241 otherend = OVERLAY_END (otheroverlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3242 if (OVERLAY_POSITION (otherend) <= where) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3243 break; |
| 333 | 3244 } |
|
2389
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 /* Add TAIL to overlays_before before OTHER. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3247 tail->next = other; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3248 if (other_prev) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3249 other_prev->next = tail; |
| 333 | 3250 else |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3251 buf->overlays_before = tail; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3252 tail = prev; |
| 333 | 3253 } |
| 3254 } | |
| 3255 | |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3256 buf->overlay_center = pos; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3257 } |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3258 |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3259 void |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3260 adjust_overlays_for_insert (pos, length) |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3261 EMACS_INT pos; |
|
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3262 EMACS_INT length; |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3263 { |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3264 /* 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
|
3265 but we may need to update the value of the overlay center. */ |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3266 if (current_buffer->overlay_center >= pos) |
|
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3267 current_buffer->overlay_center += length; |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3268 } |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3269 |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3270 void |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3271 adjust_overlays_for_delete (pos, length) |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3272 EMACS_INT pos; |
|
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3273 EMACS_INT length; |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3274 { |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3275 if (current_buffer->overlay_center < pos) |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3276 /* 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
|
3277 after-lists are still consistent. */ |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3278 ; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3279 else if (current_buffer->overlay_center > pos + length) |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3280 /* 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
|
3281 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
|
3282 given the new value. */ |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3283 current_buffer->overlay_center -= length; |
|
11473
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3284 else |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3285 /* 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
|
3286 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
|
3287 and also update the center point. */ |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3288 recenter_overlay_lists (current_buffer, pos); |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3289 } |
|
24ede15e0aaa
(adjust_overlays_for_insert): New function.
Karl Heuer <kwzh@gnu.org>
parents:
11418
diff
changeset
|
3290 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3291 /* 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
|
3292 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
|
3293 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
|
3294 list and reinserted in its proper place. |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3295 Such an overlay might even have negative size at this point. |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3296 If so, we'll make the overlay empty. */ |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3297 void |
|
54555
b136a4512609
* insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays.
Masatake YAMATO <jet@gyve.org>
parents:
54266
diff
changeset
|
3298 fix_start_end_in_overlays (start, end) |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3299 register int start, end; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3300 { |
|
25744
8b89b961f7d1
(Fkill_buffer): Remove unused variables.
Gerd Moellmann <gerd@gnu.org>
parents:
25664
diff
changeset
|
3301 Lisp_Object overlay; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3302 struct Lisp_Overlay *before_list, *after_list; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3303 /* These are either nil, indicating that before_list or after_list |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3304 should be assigned, or the cons cell the cdr of which should be |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3305 assigned. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3306 struct Lisp_Overlay *beforep = NULL, *afterp = NULL; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3307 /* 'Parent', likewise, indicates a cons cell or |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3308 current_buffer->overlays_before or overlays_after, depending |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3309 which loop we're in. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3310 struct Lisp_Overlay *tail, *parent; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3311 int startpos, endpos; |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3312 |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3313 /* 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
|
3314 The loop invariant is that before_list (resp. after_list) is a |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3315 well-formed list except that its last element, the CDR of beforep |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3316 (resp. afterp) if beforep (afterp) isn't nil or before_list |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3317 (after_list) if it is, is still uninitialized. So it's not a bug |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3318 that before_list isn't initialized, although it may look |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3319 strange. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3320 for (parent = NULL, tail = current_buffer->overlays_before; tail;) |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3321 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3322 XSETMISC (overlay, tail); |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3323 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3324 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3325 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3326 |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3327 /* If the overlay is backwards, make it empty. */ |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3328 if (endpos < startpos) |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3329 { |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3330 startpos = endpos; |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3331 Fset_marker (OVERLAY_START (overlay), make_number (startpos), |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3332 Qnil); |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3333 } |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3334 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3335 if (endpos < start) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3336 break; |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3337 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3338 if (endpos < end |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3339 || (startpos >= start && startpos < end)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3340 { |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3341 /* 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
|
3342 recenter_overlay_lists will move it to the right place. */ |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3343 if (endpos < current_buffer->overlay_center) |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3344 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3345 if (!afterp) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3346 after_list = tail; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3347 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3348 afterp->next = tail; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3349 afterp = tail; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3350 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3351 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3352 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3353 if (!beforep) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3354 before_list = tail; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3355 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3356 beforep->next = tail; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3357 beforep = tail; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3358 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3359 if (!parent) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3360 current_buffer->overlays_before = tail->next; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3361 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3362 parent->next = tail->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3363 tail = tail->next; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3364 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3365 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3366 parent = tail, tail = parent->next; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3367 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3368 for (parent = NULL, tail = current_buffer->overlays_after; tail;) |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3369 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3370 XSETMISC (overlay, tail); |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3371 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3372 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3373 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3374 |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3375 /* If the overlay is backwards, make it empty. */ |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3376 if (endpos < startpos) |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3377 { |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3378 startpos = endpos; |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3379 Fset_marker (OVERLAY_START (overlay), make_number (startpos), |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3380 Qnil); |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3381 } |
|
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3382 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3383 if (startpos >= end) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3384 break; |
|
54772
956112814473
(fix_start_end_in_overlays): make overlays empty if they are backwards.
Masatake YAMATO <jet@gyve.org>
parents:
54555
diff
changeset
|
3385 |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3386 if (startpos >= start |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3387 || (endpos >= start && endpos < end)) |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3388 { |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3389 if (endpos < current_buffer->overlay_center) |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3390 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3391 if (!afterp) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3392 after_list = tail; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3393 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3394 afterp->next = tail; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3395 afterp = tail; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3396 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3397 else |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3398 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3399 if (!beforep) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3400 before_list = tail; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3401 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3402 beforep->next = tail; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3403 beforep = tail; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3404 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3405 if (!parent) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3406 current_buffer->overlays_after = tail->next; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3407 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3408 parent->next = tail->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3409 tail = tail->next; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3410 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3411 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3412 parent = tail, tail = parent->next; |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3413 } |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3414 |
|
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3415 /* 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
|
3416 and let the recenter function make it sane again. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3417 if (beforep) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3418 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3419 beforep->next = current_buffer->overlays_before; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3420 current_buffer->overlays_before = before_list; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3421 } |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3422 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3423 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3424 if (afterp) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3425 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3426 afterp->next = current_buffer->overlays_after; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3427 current_buffer->overlays_after = after_list; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3428 } |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3429 recenter_overlay_lists (current_buffer, current_buffer->overlay_center); |
|
7520
6cc6328992d6
(fix_overlays_in_range): New function.
Karl Heuer <kwzh@gnu.org>
parents:
7492
diff
changeset
|
3430 } |
| 17022 | 3431 |
| 3432 /* We have two types of overlay: the one whose ending marker is | |
| 3433 after-insertion-marker (this is the usual case) and the one whose | |
| 3434 ending marker is before-insertion-marker. When `overlays_before' | |
| 3435 contains overlays of the latter type and the former type in this | |
| 3436 order and both overlays end at inserting position, inserting a text | |
| 3437 increases only the ending marker of the latter type, which results | |
| 3438 in incorrect ordering of `overlays_before'. | |
| 3439 | |
| 3440 This function fixes ordering of overlays in the slot | |
| 3441 `overlays_before' of the buffer *BP. Before the insertion, `point' | |
| 3442 was at PREV, and now is at POS. */ | |
| 3443 | |
|
20368
9f5fab56f4b3
(nsberror, record_buffer, validate_region,
Kenichi Handa <handa@m17n.org>
parents:
20186
diff
changeset
|
3444 void |
| 17022 | 3445 fix_overlays_before (bp, prev, pos) |
| 3446 struct buffer *bp; | |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3447 EMACS_INT prev, pos; |
| 17022 | 3448 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3449 /* If parent is nil, replace overlays_before; otherwise, parent->next. */ |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3450 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3451 Lisp_Object tem; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3452 EMACS_INT end; |
| 17022 | 3453 |
| 3454 /* After the insertion, the several overlays may be in incorrect | |
| 3455 order. The possibility is that, in the list `overlays_before', | |
| 3456 an overlay which ends at POS appears after an overlay which ends | |
| 3457 at PREV. Since POS is greater than PREV, we must fix the | |
| 3458 ordering of these overlays, by moving overlays ends at POS before | |
| 3459 the overlays ends at PREV. */ | |
| 3460 | |
| 3461 /* At first, find a place where disordered overlays should be linked | |
| 3462 in. It is where an overlay which end before POS exists. (i.e. an | |
| 3463 overlay whose ending marker is after-insertion-marker if disorder | |
| 3464 exists). */ | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3465 while (tail |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3466 && (XSETMISC (tem, tail), |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3467 (end = OVERLAY_POSITION (OVERLAY_END (tem))) >= pos)) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3468 { |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3469 parent = tail; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3470 tail = tail->next; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3471 } |
| 17022 | 3472 |
| 3473 /* If we don't find such an overlay, | |
| 3474 or the found one ends before PREV, | |
| 3475 or the found one is the last one in the list, | |
| 3476 we don't have to fix anything. */ | |
|
51853
fd71e1aaa838
(fix_overlays_before): Fix typo in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51844
diff
changeset
|
3477 if (!tail || end < prev || !tail->next) |
| 17022 | 3478 return; |
| 3479 | |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3480 right_pair = parent; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3481 parent = tail; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3482 tail = tail->next; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3483 |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3484 /* Now, end position of overlays in the list TAIL should be before |
| 17022 | 3485 or equal to PREV. In the loop, an overlay which ends at POS is |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3486 moved ahead to the place indicated by the CDR of RIGHT_PAIR. If |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3487 we found an overlay which ends before PREV, the remaining |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3488 overlays are in correct order. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3489 while (tail) |
| 17022 | 3490 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3491 XSETMISC (tem, tail); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3492 end = OVERLAY_POSITION (OVERLAY_END (tem)); |
| 17022 | 3493 |
| 3494 if (end == pos) | |
| 3495 { /* This overlay is disordered. */ | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3496 struct Lisp_Overlay *found = tail; |
| 17022 | 3497 |
| 3498 /* Unlink the found overlay. */ | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3499 tail = found->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3500 parent->next = tail; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3501 /* Move an overlay at RIGHT_PLACE to the next of the found one, |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3502 and link it into the right place. */ |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3503 if (!right_pair) |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3504 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3505 found->next = bp->overlays_before; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3506 bp->overlays_before = found; |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3507 } |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3508 else |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3509 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3510 found->next = right_pair->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3511 right_pair->next = found; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3512 } |
| 17022 | 3513 } |
| 3514 else if (end == prev) | |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3515 { |
|
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3516 parent = tail; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3517 tail = tail->next; |
|
45374
030fb28e7ec2
* buffer.c (fix_overlays_in_range, fix_overlays_before): Don't take the address
Ken Raeburn <raeburn@raeburn.org>
parents:
44790
diff
changeset
|
3518 } |
| 17022 | 3519 else /* No more disordered overlay. */ |
| 3520 break; | |
| 3521 } | |
| 3522 } | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3523 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3524 DEFUN ("overlayp", Foverlayp, Soverlayp, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3525 doc: /* Return t if OBJECT is an overlay. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3526 (object) |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3527 Lisp_Object object; |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3528 { |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3529 return (OVERLAYP (object) ? Qt : Qnil); |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3530 } |
|
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3531 |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
3532 DEFUN ("make-overlay", Fmake_overlay, Smake_overlay, 2, 5, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3533 doc: /* Create a new overlay with range BEG to END in BUFFER. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3534 If omitted, BUFFER defaults to the current buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3535 BEG and END may be integers or markers. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3536 The fourth arg FRONT-ADVANCE, if non-nil, makes the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3537 front delimiter advance when text is inserted there. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3538 The fifth arg REAR-ADVANCE, if non-nil, makes the |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3539 rear delimiter advance when text is inserted there. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3540 (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
|
3541 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
|
3542 Lisp_Object front_advance, rear_advance; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3543 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3544 Lisp_Object overlay; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3545 struct buffer *b; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3546 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3547 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
3548 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
|
3549 else |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3550 CHECK_BUFFER (buffer); |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3551 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3552 && ! 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
|
3553 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
|
3554 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3555 && ! 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
|
3556 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
|
3557 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3558 CHECK_NUMBER_COERCE_MARKER (beg); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3559 CHECK_NUMBER_COERCE_MARKER (end); |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3560 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3561 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
|
3562 { |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3563 Lisp_Object temp; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3564 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
|
3565 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3566 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3567 b = XBUFFER (buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3568 |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3569 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
|
3570 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
|
3571 |
|
13446
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
3572 if (!NILP (front_advance)) |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
3573 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
|
3574 if (!NILP (rear_advance)) |
|
005d7ed9d69b
(Fmake_overlay): New args front-advance and rear-advance.
Richard M. Stallman <rms@gnu.org>
parents:
13270
diff
changeset
|
3575 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
|
3576 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3577 overlay = allocate_misc (); |
|
11244
f3b11dc9014e
(Fmake_overlay): Use XMISCTYPE.
Richard M. Stallman <rms@gnu.org>
parents:
11214
diff
changeset
|
3578 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
|
3579 XOVERLAY (overlay)->start = beg; |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3580 XOVERLAY (overlay)->end = end; |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3581 XOVERLAY (overlay)->plist = Qnil; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3582 XOVERLAY (overlay)->next = NULL; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3583 |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
3584 /* Put the new overlay on the wrong list. */ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3585 end = OVERLAY_END (overlay); |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3586 if (OVERLAY_POSITION (end) < b->overlay_center) |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3587 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3588 if (b->overlays_after) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3589 XOVERLAY (overlay)->next = b->overlays_after; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3590 b->overlays_after = XOVERLAY (overlay); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3591 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3592 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3593 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3594 if (b->overlays_before) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3595 XOVERLAY (overlay)->next = b->overlays_before; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3596 b->overlays_before = XOVERLAY (overlay); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3597 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3598 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3599 /* This puts it in the right list, and in the right order. */ |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3600 recenter_overlay_lists (b, b->overlay_center); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3601 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3602 /* 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
|
3603 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
|
3604 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3605 return overlay; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3606 } |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3607 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3608 /* 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
|
3609 |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3610 static void |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3611 modify_overlay (buf, start, end) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3612 struct buffer *buf; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3613 EMACS_INT start, end; |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3614 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3615 if (start > end) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3616 { |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3617 int temp = start; |
|
39333
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3618 start = end; |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3619 end = temp; |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3620 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3621 |
|
27012
520f982f3a9a
(modify_overlay): Always compute unchanged info.
Gerd Moellmann <gerd@gnu.org>
parents:
26970
diff
changeset
|
3622 BUF_COMPUTE_UNCHANGED (buf, start, end); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
3623 |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3624 /* 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
|
3625 we must do other windows. */ |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3626 if (buf != XBUFFER (XWINDOW (selected_window)->buffer)) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3627 windows_or_buffers_changed = 1; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3628 /* 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
|
3629 else if (buffer_shared > 1) |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3630 windows_or_buffers_changed = 1; |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3631 |
|
19801
7482ad23e430
(modify_overlay): Update overlay_modiff of proper buffer.
Richard M. Stallman <rms@gnu.org>
parents:
19581
diff
changeset
|
3632 ++BUF_OVERLAY_MODIFF (buf); |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3633 } |
|
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3634 |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3635 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3636 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
|
3637 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3638 static struct Lisp_Overlay * |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3639 unchain_overlay (list, overlay) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3640 struct Lisp_Overlay *list, *overlay; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3641 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3642 struct Lisp_Overlay *tmp, *prev; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3643 for (tmp = list, prev = NULL; tmp; prev = tmp, tmp = tmp->next) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3644 if (tmp == overlay) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3645 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3646 if (prev) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3647 prev->next = tmp->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3648 else |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3649 list = tmp->next; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3650 overlay->next = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3651 break; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3652 } |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3653 return list; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3654 } |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3655 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3656 DEFUN ("move-overlay", Fmove_overlay, Smove_overlay, 3, 4, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3657 doc: /* Set the endpoints of OVERLAY to BEG and END in BUFFER. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3658 If BUFFER is omitted, leave OVERLAY in the same buffer it inhabits now. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3659 If BUFFER is omitted, and OVERLAY is in no buffer, put it in the current |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3660 buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3661 (overlay, beg, end, buffer) |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3662 Lisp_Object overlay, beg, end, buffer; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3663 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3664 struct buffer *b, *ob; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3665 Lisp_Object obuffer; |
|
46293
1fb8f75062c6
Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents:
46199
diff
changeset
|
3666 int count = SPECPDL_INDEX (); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3667 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3668 CHECK_OVERLAY (overlay); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3669 if (NILP (buffer)) |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3670 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
|
3671 if (NILP (buffer)) |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
3672 XSETBUFFER (buffer, current_buffer); |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3673 CHECK_BUFFER (buffer); |
|
3031
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3674 |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3675 if (MARKERP (beg) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3676 && ! 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
|
3677 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
|
3678 if (MARKERP (end) |
|
5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
Jim Blandy <jimb@redhat.com>
parents:
2961
diff
changeset
|
3679 && ! 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
|
3680 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
|
3681 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3682 CHECK_NUMBER_COERCE_MARKER (beg); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3683 CHECK_NUMBER_COERCE_MARKER (end); |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3684 |
| 8839 | 3685 if (XINT (beg) == XINT (end) && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 3686 return Fdelete_overlay (overlay); | |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3687 |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3688 if (XINT (beg) > XINT (end)) |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3689 { |
|
6493
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3690 Lisp_Object temp; |
|
33a461f14903
(sort_overlays, Fmake_overlay): Use assignment, not initialization.
Karl Heuer <kwzh@gnu.org>
parents:
6477
diff
changeset
|
3691 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
|
3692 } |
|
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3693 |
| 8839 | 3694 specbind (Qinhibit_quit, Qt); |
| 3695 | |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3696 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
|
3697 b = XBUFFER (buffer); |
|
28417
4b675266db04
* lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents:
28352
diff
changeset
|
3698 ob = BUFFERP (obuffer) ? XBUFFER (obuffer) : (struct buffer *) 0; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3699 |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3700 /* 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
|
3701 if (!EQ (buffer, obuffer)) |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3702 { |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3703 /* Redisplay where the overlay was. */ |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3704 if (!NILP (obuffer)) |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3705 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3706 int o_beg; |
|
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3707 int o_end; |
|
7985
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3708 |
|
18105
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3709 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
|
3710 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
|
3711 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3712 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
|
3713 } |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3714 |
|
f6c309d5d314
(Fmove_overlay): Call redisplay_region even when
Richard M. Stallman <rms@gnu.org>
parents:
7670
diff
changeset
|
3715 /* 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
|
3716 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
|
3717 } |
|
3204
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3718 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3719 /* 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
|
3720 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3721 int o_beg, o_end; |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3722 |
|
18105
bc690c1e1950
(Fmove_overlay): Clean up setting o_beg and o_end.
Richard M. Stallman <rms@gnu.org>
parents:
18009
diff
changeset
|
3723 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
|
3724 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
|
3725 |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3726 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
|
3727 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
|
3728 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
|
3729 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
|
3730 else |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3731 { |
|
18613
614b916ff5bf
Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents:
18603
diff
changeset
|
3732 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
|
3733 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
|
3734 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
|
3735 } |
|
a3007f83650c
* buffer.c (Fmove_overlay): If the overlay is changing buffers,
Jim Blandy <jimb@redhat.com>
parents:
3031
diff
changeset
|
3736 } |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
3737 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3738 if (!NILP (obuffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3739 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3740 ob->overlays_before |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3741 = unchain_overlay (ob->overlays_before, XOVERLAY (overlay)); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3742 ob->overlays_after |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3743 = unchain_overlay (ob->overlays_after, XOVERLAY (overlay)); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3744 eassert (XOVERLAY (overlay)->next == NULL); |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3745 } |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3746 |
|
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3747 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
|
3748 Fset_marker (OVERLAY_END (overlay), end, buffer); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3749 |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
3750 /* Put the overlay on the wrong list. */ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3751 end = OVERLAY_END (overlay); |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3752 if (OVERLAY_POSITION (end) < b->overlay_center) |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3753 { |
|
52253
79185e10e92f
(Fmove_overlay): Set overlay's next pointer
Gerd Moellmann <gerd@gnu.org>
parents:
52012
diff
changeset
|
3754 XOVERLAY (overlay)->next = b->overlays_after; |
|
79185e10e92f
(Fmove_overlay): Set overlay's next pointer
Gerd Moellmann <gerd@gnu.org>
parents:
52012
diff
changeset
|
3755 b->overlays_after = XOVERLAY (overlay); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3756 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3757 else |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3758 { |
|
52253
79185e10e92f
(Fmove_overlay): Set overlay's next pointer
Gerd Moellmann <gerd@gnu.org>
parents:
52012
diff
changeset
|
3759 XOVERLAY (overlay)->next = b->overlays_before; |
|
79185e10e92f
(Fmove_overlay): Set overlay's next pointer
Gerd Moellmann <gerd@gnu.org>
parents:
52012
diff
changeset
|
3760 b->overlays_before = XOVERLAY (overlay); |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3761 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3762 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3763 /* This puts it in the right list, and in the right order. */ |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
3764 recenter_overlay_lists (b, b->overlay_center); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3765 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3766 return unbind_to (count, overlay); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3767 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3768 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3769 DEFUN ("delete-overlay", Fdelete_overlay, Sdelete_overlay, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3770 doc: /* Delete the overlay OVERLAY from its buffer. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3771 (overlay) |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3772 Lisp_Object overlay; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3773 { |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3774 Lisp_Object buffer; |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3775 struct buffer *b; |
|
46293
1fb8f75062c6
Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents:
46199
diff
changeset
|
3776 int count = SPECPDL_INDEX (); |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
3777 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3778 CHECK_OVERLAY (overlay); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
3779 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3780 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
|
3781 if (NILP (buffer)) |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3782 return Qnil; |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3783 |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3784 b = XBUFFER (buffer); |
|
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3785 specbind (Qinhibit_quit, Qt); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
3786 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3787 b->overlays_before = unchain_overlay (b->overlays_before,XOVERLAY (overlay)); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3788 b->overlays_after = unchain_overlay (b->overlays_after, XOVERLAY (overlay)); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3789 eassert (XOVERLAY (overlay)->next == NULL); |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
3790 modify_overlay (b, |
| 21898 | 3791 marker_position (OVERLAY_START (overlay)), |
| 3792 marker_position (OVERLAY_END (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
|
3793 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
|
3794 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
|
3795 |
| 39337 | 3796 /* When deleting an overlay with before or after strings, turn off |
|
39333
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3797 display optimizations for the affected buffer, on the basis that |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3798 these strings may contain newlines. This is easier to do than to |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3799 check for that situation during redisplay. */ |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3800 if (!windows_or_buffers_changed |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3801 && (!NILP (Foverlay_get (overlay, Qbefore_string)) |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3802 || !NILP (Foverlay_get (overlay, Qafter_string)))) |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3803 b->prevent_redisplay_optimizations_p = 1; |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
3804 |
|
3533
78b4e6241f85
(Fdelete_overlay): Do nothing if overlay already deleted.
Richard M. Stallman <rms@gnu.org>
parents:
3481
diff
changeset
|
3805 return unbind_to (count, Qnil); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3806 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3807 |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3808 /* Overlay dissection functions. */ |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3809 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3810 DEFUN ("overlay-start", Foverlay_start, Soverlay_start, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3811 doc: /* Return the position at which OVERLAY starts. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3812 (overlay) |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3813 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3814 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3815 CHECK_OVERLAY (overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3816 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3817 return (Fmarker_position (OVERLAY_START (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3818 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3819 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3820 DEFUN ("overlay-end", Foverlay_end, Soverlay_end, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3821 doc: /* Return the position at which OVERLAY ends. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3822 (overlay) |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3823 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3824 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3825 CHECK_OVERLAY (overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3826 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3827 return (Fmarker_position (OVERLAY_END (overlay))); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3828 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3829 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3830 DEFUN ("overlay-buffer", Foverlay_buffer, Soverlay_buffer, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3831 doc: /* Return the buffer OVERLAY belongs to. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3832 (overlay) |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3833 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3834 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3835 CHECK_OVERLAY (overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3836 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3837 return Fmarker_buffer (OVERLAY_START (overlay)); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3838 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3839 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3840 DEFUN ("overlay-properties", Foverlay_properties, Soverlay_properties, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3841 doc: /* Return a list of the properties on OVERLAY. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3842 This is a copy of OVERLAY's plist; modifying its conses has no effect on |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3843 OVERLAY. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3844 (overlay) |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3845 Lisp_Object overlay; |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3846 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3847 CHECK_OVERLAY (overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3848 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
3849 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
|
3850 } |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3851 |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
3852 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3853 DEFUN ("overlays-at", Foverlays_at, Soverlays_at, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3854 doc: /* Return a list of the overlays that contain position POS. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3855 (pos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3856 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3857 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3858 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3859 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3860 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3861 Lisp_Object result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3862 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3863 CHECK_NUMBER_COERCE_MARKER (pos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3864 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3865 len = 10; |
|
30911
c1de0fc3a34b
(Fget_buffer_create, Fmake_indirect_buffer): Avoid
Dave Love <fx@gnu.org>
parents:
30695
diff
changeset
|
3866 /* We can't use alloca here because overlays_at can call xrealloc. */ |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3867 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
|
3868 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3869 /* 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
|
3870 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
|
3871 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
3872 (int *) 0, (int *) 0, 0); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3873 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3874 /* Make a list of them all. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3875 result = Flist (noverlays, overlay_vec); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3876 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
3877 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3878 return result; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3879 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3880 |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3881 DEFUN ("overlays-in", Foverlays_in, Soverlays_in, 2, 2, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3882 doc: /* Return a list of the overlays that overlap the region BEG ... END. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3883 Overlap means that at least one character is contained within the overlay |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3884 and also contained within the specified region. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3885 Empty overlays are included in the result if they are located at BEG |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3886 or between BEG and END. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3887 (beg, end) |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3888 Lisp_Object beg, end; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3889 { |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3890 int noverlays; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3891 Lisp_Object *overlay_vec; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3892 int len; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3893 Lisp_Object result; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3894 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3895 CHECK_NUMBER_COERCE_MARKER (beg); |
|
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3896 CHECK_NUMBER_COERCE_MARKER (end); |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3897 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3898 len = 10; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3899 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object)); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3900 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3901 /* 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
|
3902 Store the length in len. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3903 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
|
3904 (int *) 0, (int *) 0); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3905 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3906 /* Make a list of them all. */ |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3907 result = Flist (noverlays, overlay_vec); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3908 |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3909 xfree (overlay_vec); |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3910 return result; |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3911 } |
|
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
3912 |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3913 DEFUN ("next-overlay-change", Fnext_overlay_change, Snext_overlay_change, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
3914 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3915 doc: /* Return the next position after POS where an overlay starts or ends. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3916 If there are no more overlay boundaries after POS, return (point-max). */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3917 (pos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3918 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3919 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3920 int noverlays; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3921 int endpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3922 Lisp_Object *overlay_vec; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3923 int len; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3924 int i; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3925 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3926 CHECK_NUMBER_COERCE_MARKER (pos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3927 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3928 len = 10; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3929 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
|
3930 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3931 /* 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
|
3932 Store the length in len. |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3933 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
|
3934 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
3935 &endpos, (int *) 0, 1); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3936 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3937 /* If any of these overlays ends before endpos, |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3938 use its ending point instead. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3939 for (i = 0; i < noverlays; i++) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3940 { |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3941 Lisp_Object oend; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3942 int oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3943 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3944 oend = OVERLAY_END (overlay_vec[i]); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3945 oendpos = OVERLAY_POSITION (oend); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3946 if (oendpos < endpos) |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3947 endpos = oendpos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3948 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3949 |
|
2439
b6c62e4abf59
Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents:
2389
diff
changeset
|
3950 xfree (overlay_vec); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3951 return make_number (endpos); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3952 } |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3953 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3954 DEFUN ("previous-overlay-change", Fprevious_overlay_change, |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3955 Sprevious_overlay_change, 1, 1, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3956 doc: /* Return the previous position before POS where an overlay starts or ends. |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3957 If there are no more overlay boundaries before POS, return (point-min). */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3958 (pos) |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3959 Lisp_Object pos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3960 { |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3961 int noverlays; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3962 int prevpos; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3963 Lisp_Object *overlay_vec; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3964 int len; |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3965 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
3966 CHECK_NUMBER_COERCE_MARKER (pos); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3967 |
|
12214
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3968 /* 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
|
3969 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
|
3970 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
|
3971 return pos; |
|
c6ee462394fe
(Fprevious_overlay_change): Check for overlays that end at POS.
Richard M. Stallman <rms@gnu.org>
parents:
12110
diff
changeset
|
3972 |
|
30360
92f92a541686
(Fprevious_overlay_change): Avoid memory leak.
Gerd Moellmann <gerd@gnu.org>
parents:
29456
diff
changeset
|
3973 len = 10; |
|
92f92a541686
(Fprevious_overlay_change): Avoid memory leak.
Gerd Moellmann <gerd@gnu.org>
parents:
29456
diff
changeset
|
3974 overlay_vec = (Lisp_Object *) xmalloc (len * sizeof (Lisp_Object)); |
|
92f92a541686
(Fprevious_overlay_change): Avoid memory leak.
Gerd Moellmann <gerd@gnu.org>
parents:
29456
diff
changeset
|
3975 |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3976 /* 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
|
3977 Store the length in len. |
|
25205
14269f6d315b
(Fprevious_overlay_change): Just return the answer obtained from overlays_at.
Richard M. Stallman <rms@gnu.org>
parents:
25184
diff
changeset
|
3978 prevpos gets the position of the previous change. */ |
|
11418
f892e7cb7f51
(Foverlays_at, Fnext_overlay_change): Don't use NULL.
Richard M. Stallman <rms@gnu.org>
parents:
11414
diff
changeset
|
3979 noverlays = overlays_at (XINT (pos), 1, &overlay_vec, &len, |
|
30695
48cc3d076524
(overlays_at): Add CHANGE_REQ parameter.
Miles Bader <miles@gnu.org>
parents:
30360
diff
changeset
|
3980 (int *) 0, &prevpos, 1); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3981 |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3982 xfree (overlay_vec); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3983 return make_number (prevpos); |
|
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
3984 } |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3985 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3986 /* These functions are for debugging overlays. */ |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3987 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3988 DEFUN ("overlay-lists", Foverlay_lists, Soverlay_lists, 0, 0, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3989 doc: /* Return a pair of lists giving all the overlays of the current buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3990 The car has all the overlays before the overlay center; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3991 the cdr has all the overlays after the overlay center. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3992 Recentering overlays moves overlays between these lists. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
3993 The lists you get are copies, so that changing them has no effect. |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3994 However, the overlays you get are the real objects that the buffer uses. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
3995 () |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
3996 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3997 struct Lisp_Overlay *ol; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3998 Lisp_Object before = Qnil, after = Qnil, tmp; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
3999 for (ol = current_buffer->overlays_before; ol; ol = ol->next) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4000 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4001 XSETMISC (tmp, ol); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4002 before = Fcons (tmp, before); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4003 } |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4004 for (ol = current_buffer->overlays_after; ol; ol = ol->next) |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4005 { |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4006 XSETMISC (tmp, ol); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4007 after = Fcons (tmp, after); |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4008 } |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4009 return Fcons (Fnreverse (before), Fnreverse (after)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4010 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4011 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4012 DEFUN ("overlay-recenter", Foverlay_recenter, Soverlay_recenter, 1, 1, 0, |
|
50605
d91f2dfe45eb
(Foverlay_recenter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
50304
diff
changeset
|
4013 doc: /* Recenter the overlays of the current buffer around position POS. |
|
d91f2dfe45eb
(Foverlay_recenter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
50304
diff
changeset
|
4014 That makes overlay lookup faster for positions near POS (but perhaps slower |
|
d91f2dfe45eb
(Foverlay_recenter): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
50304
diff
changeset
|
4015 for positions far away from POS). */) |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
4016 (pos) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4017 Lisp_Object pos; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4018 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
4019 CHECK_NUMBER_COERCE_MARKER (pos); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4020 |
|
2508
3aa2f3b35353
* buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER
Jim Blandy <jimb@redhat.com>
parents:
2486
diff
changeset
|
4021 recenter_overlay_lists (current_buffer, XINT (pos)); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4022 return Qnil; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4023 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4024 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4025 DEFUN ("overlay-get", Foverlay_get, Soverlay_get, 2, 2, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
4026 doc: /* Get the property of overlay OVERLAY with property name PROP. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
4027 (overlay, prop) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4028 Lisp_Object overlay, prop; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4029 { |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
4030 CHECK_OVERLAY (overlay); |
|
45683
9e40bb8e9a60
(Foverlay_get): Use lookup_char_property.
Colin Walters <walters@gnu.org>
parents:
45626
diff
changeset
|
4031 return lookup_char_property (XOVERLAY (overlay)->plist, prop, 0); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4032 } |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4033 |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4034 DEFUN ("overlay-put", Foverlay_put, Soverlay_put, 3, 3, 0, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
4035 doc: /* Set one property of overlay OVERLAY: give property PROP value VALUE. */) |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
4036 (overlay, prop, value) |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4037 Lisp_Object overlay, prop, value; |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4038 { |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
4039 Lisp_Object tail, buffer; |
| 8839 | 4040 int changed; |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4041 |
|
40656
cdfd4d09b79a
Update usage of CHECK_ macros (remove unused second argument).
Pavel Jan?k <Pavel@Janik.cz>
parents:
40605
diff
changeset
|
4042 CHECK_OVERLAY (overlay); |
|
2722
16db9d1af886
Arrange to tell redisplay about changes in overlays.
Jim Blandy <jimb@redhat.com>
parents:
2645
diff
changeset
|
4043 |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
4044 buffer = Fmarker_buffer (OVERLAY_START (overlay)); |
|
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
4045 |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
4046 for (tail = XOVERLAY (overlay)->plist; |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4047 CONSP (tail) && CONSP (XCDR (tail)); |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4048 tail = XCDR (XCDR (tail))) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4049 if (EQ (XCAR (tail), prop)) |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
4050 { |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4051 changed = !EQ (XCAR (XCDR (tail)), value); |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39971
diff
changeset
|
4052 XSETCAR (XCDR (tail), value); |
| 8839 | 4053 goto found; |
|
8062
ad595e4e165c
(send_process): Major rewrite.
Richard M. Stallman <rms@gnu.org>
parents:
8035
diff
changeset
|
4054 } |
| 8839 | 4055 /* It wasn't in the list, so add it to the front. */ |
| 4056 changed = !NILP (value); | |
|
9922
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
4057 XOVERLAY (overlay)->plist |
|
f653d8aac66a
(Fmake_overlay, Foverlay_properties, Foverlay_get, Foverlay_put): Use new
Karl Heuer <kwzh@gnu.org>
parents:
9920
diff
changeset
|
4058 = Fcons (prop, Fcons (value, XOVERLAY (overlay)->plist)); |
| 8839 | 4059 found: |
| 4060 if (! NILP (buffer)) | |
| 4061 { | |
| 4062 if (changed) | |
|
16193
6ff2ef91c618
(modify_overlay): Renamed from redisplay_region
Richard M. Stallman <rms@gnu.org>
parents:
16144
diff
changeset
|
4063 modify_overlay (XBUFFER (buffer), |
|
39333
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
4064 marker_position (OVERLAY_START (overlay)), |
|
7af35736264f
(modify_overlay): Don't do nothing if START == END;
Gerd Moellmann <gerd@gnu.org>
parents:
39087
diff
changeset
|
4065 marker_position (OVERLAY_END (overlay))); |
| 8839 | 4066 if (EQ (prop, Qevaporate) && ! NILP (value) |
| 4067 && (OVERLAY_POSITION (OVERLAY_START (overlay)) | |
| 4068 == OVERLAY_POSITION (OVERLAY_END (overlay)))) | |
| 4069 Fdelete_overlay (overlay); | |
| 4070 } | |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
4071 return value; |
| 333 | 4072 } |
| 4073 | |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4074 /* Subroutine of report_overlay_modification. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4075 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4076 /* Lisp vector holding overlay hook functions to call. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4077 Vector elements come in pairs. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4078 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
|
4079 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
|
4080 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4081 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
|
4082 as we call overlay hook functions. |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4083 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
|
4084 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
|
4085 static Lisp_Object last_overlay_modification_hooks; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4086 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4087 /* 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
|
4088 static int last_overlay_modification_hooks_used; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4089 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4090 /* Add one functionlist/overlay pair |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4091 to the end of last_overlay_modification_hooks. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4092 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4093 static void |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4094 add_overlay_mod_hooklist (functionlist, overlay) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4095 Lisp_Object functionlist, overlay; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4096 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4097 int oldsize = XVECTOR (last_overlay_modification_hooks)->size; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4098 |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4099 if (last_overlay_modification_hooks_used == oldsize) |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4100 { |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4101 Lisp_Object old; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4102 old = last_overlay_modification_hooks; |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4103 last_overlay_modification_hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4104 = 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
|
4105 bcopy (XVECTOR (old)->contents, |
|
a46a40f1c30c
(add_overlay_mod_hooklist): Fix call to bcopy.
Richard M. Stallman <rms@gnu.org>
parents:
15032
diff
changeset
|
4106 XVECTOR (last_overlay_modification_hooks)->contents, |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4107 sizeof (Lisp_Object) * oldsize); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4108 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4109 AREF (last_overlay_modification_hooks, last_overlay_modification_hooks_used++) = functionlist; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4110 AREF (last_overlay_modification_hooks, last_overlay_modification_hooks_used++) = overlay; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4111 } |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4112 |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4113 /* Run the modification-hooks of overlays that include |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4114 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
|
4115 If this change is an insertion, also |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4116 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
|
4117 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
|
4118 |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4119 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
|
4120 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
|
4121 |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4122 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
|
4123 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
|
4124 the position after the inserted new text, |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4125 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
|
4126 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4127 void |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4128 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
|
4129 Lisp_Object start, end; |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4130 int after; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4131 Lisp_Object arg1, arg2, arg3; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4132 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4133 Lisp_Object prop, overlay; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4134 struct Lisp_Overlay *tail; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4135 /* 1 if this change is an insertion. */ |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4136 int insertion = (after ? XFASTINT (arg3) == 0 : EQ (start, end)); |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4137 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
4138 |
|
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
4139 overlay = Qnil; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4140 tail = NULL; |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4141 |
|
51939
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4142 /* We used to run the functions as soon as we found them and only register |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4143 them in last_overlay_modification_hooks for the purpose of the `after' |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4144 case. But running elisp code as we traverse the list of overlays is |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4145 painful because the list can be modified by the elisp code so we had to |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4146 copy at several places. We now simply do a read-only traversal that |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4147 only collects the functions to run and we run them afterwards. It's |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4148 simpler, especially since all the code was already there. -stef */ |
|
d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51867
diff
changeset
|
4149 |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4150 if (!after) |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4151 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4152 /* We are being called before a change. |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4153 Scan the overlays to find the functions to call. */ |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4154 last_overlay_modification_hooks_used = 0; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4155 for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4156 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4157 int startpos, endpos; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4158 Lisp_Object ostart, oend; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4159 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4160 XSETMISC (overlay, tail); |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4161 |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4162 ostart = OVERLAY_START (overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4163 oend = OVERLAY_END (overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4164 endpos = OVERLAY_POSITION (oend); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4165 if (XFASTINT (start) > endpos) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4166 break; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4167 startpos = OVERLAY_POSITION (ostart); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4168 if (insertion && (XFASTINT (start) == startpos |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4169 || XFASTINT (end) == startpos)) |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4170 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4171 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4172 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4173 add_overlay_mod_hooklist (prop, overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4174 } |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4175 if (insertion && (XFASTINT (start) == endpos |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4176 || XFASTINT (end) == endpos)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4177 { |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4178 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4179 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4180 add_overlay_mod_hooklist (prop, overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4181 } |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4182 /* Test for intersecting intervals. This does the right thing |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4183 for both insertion and deletion. */ |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4184 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4185 { |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4186 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4187 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4188 add_overlay_mod_hooklist (prop, overlay); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4189 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4190 } |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4191 |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4192 for (tail = current_buffer->overlays_after; tail; tail = tail->next) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4193 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4194 int startpos, endpos; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4195 Lisp_Object ostart, oend; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4196 |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4197 XSETMISC (overlay, tail); |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4198 |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4199 ostart = OVERLAY_START (overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4200 oend = OVERLAY_END (overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4201 startpos = OVERLAY_POSITION (ostart); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4202 endpos = OVERLAY_POSITION (oend); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4203 if (XFASTINT (end) < startpos) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4204 break; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4205 if (insertion && (XFASTINT (start) == startpos |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4206 || XFASTINT (end) == startpos)) |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4207 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4208 prop = Foverlay_get (overlay, Qinsert_in_front_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4209 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4210 add_overlay_mod_hooklist (prop, overlay); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4211 } |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4212 if (insertion && (XFASTINT (start) == endpos |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4213 || XFASTINT (end) == endpos)) |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4214 { |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4215 prop = Foverlay_get (overlay, Qinsert_behind_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4216 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4217 add_overlay_mod_hooklist (prop, overlay); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4218 } |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4219 /* Test for intersecting intervals. This does the right thing |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4220 for both insertion and deletion. */ |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4221 if (XFASTINT (end) > startpos && XFASTINT (start) < endpos) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4222 { |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4223 prop = Foverlay_get (overlay, Qmodification_hooks); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4224 if (!NILP (prop)) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4225 add_overlay_mod_hooklist (prop, overlay); |
|
6591
60f70854e73f
(verify_overlay_modification):
Richard M. Stallman <rms@gnu.org>
parents:
6493
diff
changeset
|
4226 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4227 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4228 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4229 |
|
51827
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4230 GCPRO4 (overlay, arg1, arg2, arg3); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4231 { |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4232 /* Call the functions recorded in last_overlay_modification_hooks. |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4233 First copy the vector contents, in case some of these hooks |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4234 do subsequent modification of the buffer. */ |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4235 int size = last_overlay_modification_hooks_used; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4236 Lisp_Object *copy = (Lisp_Object *) alloca (size * sizeof (Lisp_Object)); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4237 int i; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4238 |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4239 bcopy (XVECTOR (last_overlay_modification_hooks)->contents, |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4240 copy, size * sizeof (Lisp_Object)); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4241 gcpro1.var = copy; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4242 gcpro1.nvars = size; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4243 |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4244 for (i = 0; i < size;) |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4245 { |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4246 Lisp_Object prop, overlay; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4247 prop = copy[i++]; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4248 overlay = copy[i++]; |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4249 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3); |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4250 } |
|
8f62ae8e410c
(report_overlay_modification): Don't run hooks while
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51824
diff
changeset
|
4251 } |
|
7670
b3be53811505
(verify_overlay_modification): GCPRO tail and overlay.
Richard M. Stallman <rms@gnu.org>
parents:
7520
diff
changeset
|
4252 UNGCPRO; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4253 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4254 |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4255 static void |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4256 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
|
4257 Lisp_Object list, overlay; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4258 int after; |
|
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4259 Lisp_Object arg1, arg2, arg3; |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4260 { |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4261 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4262 |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4263 GCPRO4 (list, arg1, arg2, arg3); |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
4264 |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
4265 while (CONSP (list)) |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4266 { |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4267 if (NILP (arg3)) |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
4268 call4 (XCAR (list), overlay, after ? Qt : Qnil, arg1, arg2); |
|
10146
24032289479c
(report_overlay_modification): Renamed from verify_overlay_modification.
Richard M. Stallman <rms@gnu.org>
parents:
10143
diff
changeset
|
4269 else |
|
47972
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
4270 call5 (XCAR (list), overlay, after ? Qt : Qnil, arg1, arg2, arg3); |
|
287494c5e770
(assoc_ignore_text_properties, Fother_buffer, Fkill_buffer)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46920
diff
changeset
|
4271 list = XCDR (list); |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4272 } |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4273 UNGCPRO; |
|
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4274 } |
| 8839 | 4275 |
| 4276 /* Delete any zero-sized overlays at position POS, if the `evaporate' | |
| 4277 property is set. */ | |
| 4278 void | |
| 4279 evaporate_overlays (pos) | |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
4280 EMACS_INT pos; |
| 8839 | 4281 { |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4282 Lisp_Object overlay, hit_list; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4283 struct Lisp_Overlay *tail; |
| 8839 | 4284 |
| 4285 hit_list = Qnil; | |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
4286 if (pos <= current_buffer->overlay_center) |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4287 for (tail = current_buffer->overlays_before; tail; tail = tail->next) |
| 8839 | 4288 { |
| 4289 int endpos; | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4290 XSETMISC (overlay, tail); |
| 8839 | 4291 endpos = OVERLAY_POSITION (OVERLAY_END (overlay)); |
| 4292 if (endpos < pos) | |
| 4293 break; | |
| 4294 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
|
4295 && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 8839 | 4296 hit_list = Fcons (overlay, hit_list); |
| 4297 } | |
| 4298 else | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4299 for (tail = current_buffer->overlays_after; tail; tail = tail->next) |
| 8839 | 4300 { |
| 4301 int startpos; | |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4302 XSETMISC (overlay, tail); |
| 8839 | 4303 startpos = OVERLAY_POSITION (OVERLAY_START (overlay)); |
| 4304 if (startpos > pos) | |
| 4305 break; | |
| 4306 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
|
4307 && ! NILP (Foverlay_get (overlay, Qevaporate))) |
| 8839 | 4308 hit_list = Fcons (overlay, hit_list); |
| 4309 } | |
|
26164
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4310 for (; CONSP (hit_list); hit_list = XCDR (hit_list)) |
|
d39ec0a27081
more XCAR/XCDR/XFLOAT_DATA uses, to help isolete lisp engine
Ken Raeburn <raeburn@raeburn.org>
parents:
26088
diff
changeset
|
4311 Fdelete_overlay (XCAR (hit_list)); |
| 8839 | 4312 } |
|
4077
a860278e3ab3
(verify_overlay_modification): New function.
Richard M. Stallman <rms@gnu.org>
parents:
3884
diff
changeset
|
4313 |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
4314 /* 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
|
4315 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
|
4316 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4317 void |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
4318 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
|
4319 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
|
4320 { |
|
9464
4bb620c9a075
(buffer_slot_type_mismatch): Take just the offset as argument. Only check
Karl Heuer <kwzh@gnu.org>
parents:
9438
diff
changeset
|
4321 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
|
4322 char *type_name; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4323 |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
4324 switch (XINT (PER_BUFFER_TYPE (offset))) |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4325 { |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4326 case Lisp_Int: |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4327 type_name = "integers"; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4328 break; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4329 |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4330 case Lisp_String: |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4331 type_name = "strings"; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4332 break; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4333 |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4334 case Lisp_Symbol: |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4335 type_name = "symbols"; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4336 break; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4337 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4338 default: |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4339 abort (); |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4340 } |
|
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4341 |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
4342 sym = PER_BUFFER_SYMBOL (offset); |
|
20995
abc60038dd2b
(syms_of_buffer): enable-multibyte-characters is read-only.
Karl Heuer <kwzh@gnu.org>
parents:
20935
diff
changeset
|
4343 error ("Only %s should be stored in the buffer-local variable %s", |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
4344 type_name, SDATA (SYMBOL_NAME (sym))); |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4345 } |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4346 |
|
1001
c1ebe69206df
* buffer.c (syms_of_buffer): Call DEFVAR_PER_BUFFER with the new
Jim Blandy <jimb@redhat.com>
parents:
764
diff
changeset
|
4347 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4348 /*********************************************************************** |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4349 Allocation with mmap |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4350 ***********************************************************************/ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4351 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4352 #ifdef USE_MMAP_FOR_BUFFERS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4353 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4354 #include <sys/types.h> |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4355 #include <sys/mman.h> |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4356 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4357 #ifndef MAP_ANON |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4358 #ifdef MAP_ANONYMOUS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4359 #define MAP_ANON MAP_ANONYMOUS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4360 #else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4361 #define MAP_ANON 0 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4362 #endif |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4363 #endif |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4364 |
|
33645
e822f94eb7d9
(MAP_FAILED): Define it as `((void *) -1)' if it's
Gerd Moellmann <gerd@gnu.org>
parents:
33598
diff
changeset
|
4365 #ifndef MAP_FAILED |
|
e822f94eb7d9
(MAP_FAILED): Define it as `((void *) -1)' if it's
Gerd Moellmann <gerd@gnu.org>
parents:
33598
diff
changeset
|
4366 #define MAP_FAILED ((void *) -1) |
|
e822f94eb7d9
(MAP_FAILED): Define it as `((void *) -1)' if it's
Gerd Moellmann <gerd@gnu.org>
parents:
33598
diff
changeset
|
4367 #endif |
|
e822f94eb7d9
(MAP_FAILED): Define it as `((void *) -1)' if it's
Gerd Moellmann <gerd@gnu.org>
parents:
33598
diff
changeset
|
4368 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4369 #include <stdio.h> |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4370 #include <errno.h> |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4371 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4372 #if MAP_ANON == 0 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4373 #include <fcntl.h> |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4374 #endif |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4375 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4376 #include "coding.h" |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4377 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4378 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4379 /* Memory is allocated in regions which are mapped using mmap(2). |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4380 The current implementation lets the system select mapped |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4381 addresses; we're not using MAP_FIXED in general, except when |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4382 trying to enlarge regions. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4383 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4384 Each mapped region starts with a mmap_region structure, the user |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4385 area starts after that structure, aligned to MEM_ALIGN. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4386 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4387 +-----------------------+ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4388 | struct mmap_info + | |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4389 | padding | |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4390 +-----------------------+ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4391 | user data | |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4392 | | |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4393 | | |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4394 +-----------------------+ */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4395 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4396 struct mmap_region |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4397 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4398 /* User-specified size. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4399 size_t nbytes_specified; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4400 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4401 /* Number of bytes mapped */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4402 size_t nbytes_mapped; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4403 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4404 /* Pointer to the location holding the address of the memory |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4405 allocated with the mmap'd block. The variable actually points |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4406 after this structure. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4407 POINTER_TYPE **var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4408 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4409 /* Next and previous in list of all mmap'd regions. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4410 struct mmap_region *next, *prev; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4411 }; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4412 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4413 /* Doubly-linked list of mmap'd regions. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4414 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4415 static struct mmap_region *mmap_regions; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4416 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4417 /* File descriptor for mmap. If we don't have anonymous mapping, |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4418 /dev/zero will be opened on it. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4419 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4420 static int mmap_fd; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4421 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4422 /* Temporary storage for mmap_set_vars, see there. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4423 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4424 static struct mmap_region *mmap_regions_1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4425 static int mmap_fd_1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4426 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4427 /* Page size on this system. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4428 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4429 static int mmap_page_size; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4430 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4431 /* 1 means mmap has been intialized. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4432 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4433 static int mmap_initialized_p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4434 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4435 /* Value is X rounded up to the next multiple of N. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4436 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4437 #define ROUND(X, N) (((X) + (N) - 1) / (N) * (N)) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4438 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4439 /* Size of mmap_region structure plus padding. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4440 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4441 #define MMAP_REGION_STRUCT_SIZE \ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4442 ROUND (sizeof (struct mmap_region), MEM_ALIGN) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4443 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4444 /* Given a pointer P to the start of the user-visible part of a mapped |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4445 region, return a pointer to the start of the region. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4446 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4447 #define MMAP_REGION(P) \ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4448 ((struct mmap_region *) ((char *) (P) - MMAP_REGION_STRUCT_SIZE)) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4449 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4450 /* Given a pointer P to the start of a mapped region, return a pointer |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4451 to the start of the user-visible part of the region. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4452 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4453 #define MMAP_USER_AREA(P) \ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4454 ((POINTER_TYPE *) ((char *) (P) + MMAP_REGION_STRUCT_SIZE)) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4455 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4456 #define MEM_ALIGN sizeof (double) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4457 |
| 48090 | 4458 /* Predicate returning true if part of the address range [START .. END] |
| 4459 is currently mapped. Used to prevent overwriting an existing | |
|
44617
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4460 memory mapping. |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4461 |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4462 Default is to conservativly assume the address range is occupied by |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4463 something else. This can be overridden by system configuration |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4464 files if system-specific means to determine this exists. */ |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4465 |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4466 #ifndef MMAP_ALLOCATED_P |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4467 #define MMAP_ALLOCATED_P(start, end) 1 |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4468 #endif |
|
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4469 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4470 /* Function prototypes. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4471 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4472 static int mmap_free_1 P_ ((struct mmap_region *)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4473 static int mmap_enlarge P_ ((struct mmap_region *, int)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4474 static struct mmap_region *mmap_find P_ ((POINTER_TYPE *, POINTER_TYPE *)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4475 static POINTER_TYPE *mmap_alloc P_ ((POINTER_TYPE **, size_t)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4476 static POINTER_TYPE *mmap_realloc P_ ((POINTER_TYPE **, size_t)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4477 static void mmap_free P_ ((POINTER_TYPE **ptr)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4478 static void mmap_init P_ ((void)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4479 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4480 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4481 /* Return a region overlapping address range START...END, or null if |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4482 none. END is not including, i.e. the last byte in the range |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4483 is at END - 1. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4484 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4485 static struct mmap_region * |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4486 mmap_find (start, end) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4487 POINTER_TYPE *start, *end; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4488 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4489 struct mmap_region *r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4490 char *s = (char *) start, *e = (char *) end; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4491 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4492 for (r = mmap_regions; r; r = r->next) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4493 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4494 char *rstart = (char *) r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4495 char *rend = rstart + r->nbytes_mapped; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4496 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4497 if (/* First byte of range, i.e. START, in this region? */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4498 (s >= rstart && s < rend) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4499 /* Last byte of range, i.e. END - 1, in this region? */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4500 || (e > rstart && e <= rend) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4501 /* First byte of this region in the range? */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4502 || (rstart >= s && rstart < e) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4503 /* Last byte of this region in the range? */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4504 || (rend > s && rend <= e)) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4505 break; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4506 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4507 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4508 return r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4509 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4510 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4511 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4512 /* Unmap a region. P is a pointer to the start of the user-araa of |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4513 the region. Value is non-zero if successful. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4514 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4515 static int |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4516 mmap_free_1 (r) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4517 struct mmap_region *r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4518 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4519 if (r->next) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4520 r->next->prev = r->prev; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4521 if (r->prev) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4522 r->prev->next = r->next; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4523 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4524 mmap_regions = r->next; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4525 |
|
33675
cd12ade4547d
(mmap_free_1): Avoid a compiler warning.
Gerd Moellmann <gerd@gnu.org>
parents:
33645
diff
changeset
|
4526 if (munmap ((POINTER_TYPE *) r, r->nbytes_mapped) == -1) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4527 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4528 fprintf (stderr, "munmap: %s\n", emacs_strerror (errno)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4529 return 0; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4530 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4531 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4532 return 1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4533 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4534 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4535 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4536 /* Enlarge region R by NPAGES pages. NPAGES < 0 means shrink R. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4537 Value is non-zero if successful. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4538 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4539 static int |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4540 mmap_enlarge (r, npages) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4541 struct mmap_region *r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4542 int npages; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4543 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4544 char *region_end = (char *) r + r->nbytes_mapped; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4545 size_t nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4546 int success = 0; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4547 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4548 if (npages < 0) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4549 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4550 /* Unmap pages at the end of the region. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4551 nbytes = - npages * mmap_page_size; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4552 if (munmap (region_end - nbytes, nbytes) == -1) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4553 fprintf (stderr, "munmap: %s\n", emacs_strerror (errno)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4554 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4555 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4556 r->nbytes_mapped -= nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4557 success = 1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4558 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4559 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4560 else if (npages > 0) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4561 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4562 nbytes = npages * mmap_page_size; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4563 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4564 /* Try to map additional pages at the end of the region. We |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4565 cannot do this if the address range is already occupied by |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4566 something else because mmap deletes any previous mapping. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4567 I'm not sure this is worth doing, let's see. */ |
|
44617
c54f8a37564e
(MMAP_ALLOCATED_P): New macro to be set from system
Gerd Moellmann <gerd@gnu.org>
parents:
43712
diff
changeset
|
4568 if (!MMAP_ALLOCATED_P (region_end, region_end + nbytes)) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4569 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4570 POINTER_TYPE *p; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4571 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4572 p = mmap (region_end, nbytes, PROT_READ | PROT_WRITE, |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4573 MAP_ANON | MAP_PRIVATE | MAP_FIXED, mmap_fd, 0); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4574 if (p == MAP_FAILED) |
|
33598
d2ed1317ec06
(mmap_enlarge): Don't print a message on stderr
Gerd Moellmann <gerd@gnu.org>
parents:
32856
diff
changeset
|
4575 ; /* fprintf (stderr, "mmap: %s\n", emacs_strerror (errno)); */ |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4576 else if (p != (POINTER_TYPE *) region_end) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4577 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4578 /* Kernels are free to choose a different address. In |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4579 that case, unmap what we've mapped above; we have |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4580 no use for it. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4581 if (munmap (p, nbytes) == -1) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4582 fprintf (stderr, "munmap: %s\n", emacs_strerror (errno)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4583 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4584 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4585 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4586 r->nbytes_mapped += nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4587 success = 1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4588 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4589 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4590 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4591 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4592 return success; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4593 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4594 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4595 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4596 /* Set or reset variables holding references to mapped regions. If |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4597 RESTORE_P is zero, set all variables to null. If RESTORE_P is |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4598 non-zero, set all variables to the start of the user-areas |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4599 of mapped regions. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4600 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4601 This function is called from Fdump_emacs to ensure that the dumped |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4602 Emacs doesn't contain references to memory that won't be mapped |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4603 when Emacs starts. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4604 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4605 void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4606 mmap_set_vars (restore_p) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4607 int restore_p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4608 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4609 struct mmap_region *r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4610 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4611 if (restore_p) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4612 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4613 mmap_regions = mmap_regions_1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4614 mmap_fd = mmap_fd_1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4615 for (r = mmap_regions; r; r = r->next) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4616 *r->var = MMAP_USER_AREA (r); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4617 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4618 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4619 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4620 for (r = mmap_regions; r; r = r->next) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4621 *r->var = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4622 mmap_regions_1 = mmap_regions; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4623 mmap_regions = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4624 mmap_fd_1 = mmap_fd; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4625 mmap_fd = -1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4626 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4627 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4628 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4629 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4630 /* Allocate a block of storage large enough to hold NBYTES bytes of |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4631 data. A pointer to the data is returned in *VAR. VAR is thus the |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4632 address of some variable which will use the data area. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4633 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4634 The allocation of 0 bytes is valid. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4635 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4636 If we can't allocate the necessary memory, set *VAR to null, and |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4637 return null. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4638 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4639 static POINTER_TYPE * |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4640 mmap_alloc (var, nbytes) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4641 POINTER_TYPE **var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4642 size_t nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4643 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4644 void *p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4645 size_t map; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4646 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4647 mmap_init (); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4648 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4649 map = ROUND (nbytes + MMAP_REGION_STRUCT_SIZE, mmap_page_size); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4650 p = mmap (NULL, map, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4651 mmap_fd, 0); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4652 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4653 if (p == MAP_FAILED) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4654 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4655 if (errno != ENOMEM) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4656 fprintf (stderr, "mmap: %s\n", emacs_strerror (errno)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4657 p = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4658 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4659 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4660 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4661 struct mmap_region *r = (struct mmap_region *) p; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4662 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4663 r->nbytes_specified = nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4664 r->nbytes_mapped = map; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4665 r->var = var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4666 r->prev = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4667 r->next = mmap_regions; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4668 if (r->next) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4669 r->next->prev = r; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4670 mmap_regions = r; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4671 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4672 p = MMAP_USER_AREA (p); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4673 } |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4674 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4675 return *var = p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4676 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4677 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4678 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4679 /* Given a pointer at address VAR to data allocated with mmap_alloc, |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4680 resize it to size NBYTES. Change *VAR to reflect the new block, |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4681 and return this value. If more memory cannot be allocated, then |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4682 leave *VAR unchanged, and return null. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4683 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4684 static POINTER_TYPE * |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4685 mmap_realloc (var, nbytes) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4686 POINTER_TYPE **var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4687 size_t nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4688 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4689 POINTER_TYPE *result; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4690 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4691 mmap_init (); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4692 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4693 if (*var == NULL) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4694 result = mmap_alloc (var, nbytes); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4695 else if (nbytes == 0) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4696 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4697 mmap_free (var); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4698 result = mmap_alloc (var, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4699 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4700 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4701 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4702 struct mmap_region *r = MMAP_REGION (*var); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4703 size_t room = r->nbytes_mapped - MMAP_REGION_STRUCT_SIZE; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4704 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4705 if (room < nbytes) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4706 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4707 /* Must enlarge. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4708 POINTER_TYPE *old_ptr = *var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4709 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4710 /* Try to map additional pages at the end of the region. |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4711 If that fails, allocate a new region, copy data |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4712 from the old region, then free it. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4713 if (mmap_enlarge (r, (ROUND (nbytes - room, mmap_page_size) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4714 / mmap_page_size))) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4715 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4716 r->nbytes_specified = nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4717 *var = result = old_ptr; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4718 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4719 else if (mmap_alloc (var, nbytes)) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4720 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4721 bcopy (old_ptr, *var, r->nbytes_specified); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4722 mmap_free_1 (MMAP_REGION (old_ptr)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4723 result = *var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4724 r = MMAP_REGION (result); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4725 r->nbytes_specified = nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4726 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4727 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4728 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4729 *var = old_ptr; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4730 result = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4731 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4732 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4733 else if (room - nbytes >= mmap_page_size) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4734 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4735 /* Shrinking by at least a page. Let's give some |
| 46588 | 4736 memory back to the system. |
| 4737 | |
| 4738 The extra parens are to make the division happens first, | |
| 4739 on positive values, so we know it will round towards | |
| 4740 zero. */ | |
|
46585
8d0730b0e14c
(mmap_realloc): When shrinking, make sure number of
Ken Raeburn <raeburn@raeburn.org>
parents:
46445
diff
changeset
|
4741 mmap_enlarge (r, - ((room - nbytes) / mmap_page_size)); |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4742 result = *var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4743 r->nbytes_specified = nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4744 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4745 else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4746 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4747 /* Leave it alone. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4748 result = *var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4749 r->nbytes_specified = nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4750 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4751 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4752 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4753 return result; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4754 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4755 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4756 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4757 /* Free a block of relocatable storage whose data is pointed to by |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4758 PTR. Store 0 in *PTR to show there's no block allocated. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4759 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4760 static void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4761 mmap_free (var) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4762 POINTER_TYPE **var; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4763 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4764 mmap_init (); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4765 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4766 if (*var) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4767 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4768 mmap_free_1 (MMAP_REGION (*var)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4769 *var = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4770 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4771 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4772 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4773 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4774 /* Perform necessary intializations for the use of mmap. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4775 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4776 static void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4777 mmap_init () |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4778 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4779 #if MAP_ANON == 0 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4780 /* The value of mmap_fd is initially 0 in temacs, and -1 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4781 in a dumped Emacs. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4782 if (mmap_fd <= 0) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4783 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4784 /* No anonymous mmap -- we need the file descriptor. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4785 mmap_fd = open ("/dev/zero", O_RDONLY); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4786 if (mmap_fd == -1) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4787 fatal ("Cannot open /dev/zero: %s", emacs_strerror (errno)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4788 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4789 #endif /* MAP_ANON == 0 */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4790 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4791 if (mmap_initialized_p) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4792 return; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4793 mmap_initialized_p = 1; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4794 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4795 #if MAP_ANON != 0 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4796 mmap_fd = -1; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4797 #endif |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4798 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4799 mmap_page_size = getpagesize (); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4800 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4801 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4802 #endif /* USE_MMAP_FOR_BUFFERS */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4803 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4804 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4805 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4806 /*********************************************************************** |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4807 Buffer-text Allocation |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4808 ***********************************************************************/ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4809 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4810 #ifdef REL_ALLOC |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4811 extern POINTER_TYPE *r_alloc P_ ((POINTER_TYPE **, size_t)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4812 extern POINTER_TYPE *r_re_alloc P_ ((POINTER_TYPE **, size_t)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4813 extern void r_alloc_free P_ ((POINTER_TYPE **ptr)); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4814 #endif /* REL_ALLOC */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4815 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4816 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4817 /* Allocate NBYTES bytes for buffer B's text buffer. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4818 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4819 static void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4820 alloc_buffer_text (b, nbytes) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4821 struct buffer *b; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4822 size_t nbytes; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4823 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4824 POINTER_TYPE *p; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4825 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4826 BLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4827 #if defined USE_MMAP_FOR_BUFFERS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4828 p = mmap_alloc ((POINTER_TYPE **) &b->text->beg, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4829 #elif defined REL_ALLOC |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4830 p = r_alloc ((POINTER_TYPE **) &b->text->beg, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4831 #else |
|
31612
2050f93e8cef
(alloc_buffer_text): Fix xmalloc call.
Dave Love <fx@gnu.org>
parents:
31604
diff
changeset
|
4832 p = xmalloc (nbytes); |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4833 #endif |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4834 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4835 if (p == NULL) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4836 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4837 UNBLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4838 memory_full (); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4839 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4840 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4841 b->text->beg = (unsigned char *) p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4842 UNBLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4843 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4844 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4845 /* Enlarge buffer B's text buffer by DELTA bytes. DELTA < 0 means |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4846 shrink it. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4847 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4848 void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4849 enlarge_buffer_text (b, delta) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4850 struct buffer *b; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4851 int delta; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4852 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4853 POINTER_TYPE *p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4854 size_t nbytes = (BUF_Z_BYTE (b) - BUF_BEG_BYTE (b) + BUF_GAP_SIZE (b) + 1 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4855 + delta); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4856 BLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4857 #if defined USE_MMAP_FOR_BUFFERS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4858 p = mmap_realloc ((POINTER_TYPE **) &b->text->beg, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4859 #elif defined REL_ALLOC |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4860 p = r_re_alloc ((POINTER_TYPE **) &b->text->beg, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4861 #else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4862 p = xrealloc (b->text->beg, nbytes); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4863 #endif |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4864 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4865 if (p == NULL) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4866 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4867 UNBLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4868 memory_full (); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4869 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4870 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4871 BUF_BEG_ADDR (b) = (unsigned char *) p; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4872 UNBLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4873 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4874 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4875 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4876 /* Free buffer B's text buffer. */ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4877 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4878 static void |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4879 free_buffer_text (b) |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4880 struct buffer *b; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4881 { |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4882 BLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4883 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4884 #if defined USE_MMAP_FOR_BUFFERS |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4885 mmap_free ((POINTER_TYPE **) &b->text->beg); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4886 #elif defined REL_ALLOC |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4887 r_alloc_free ((POINTER_TYPE **) &b->text->beg); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4888 #else |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4889 xfree (b->text->beg); |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4890 #endif |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
4891 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4892 BUF_BEG_ADDR (b) = NULL; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4893 UNBLOCK_INPUT; |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4894 } |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4895 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4896 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4897 |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4898 /*********************************************************************** |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4899 Initialization |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4900 ***********************************************************************/ |
|
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
4901 |
| 21514 | 4902 void |
| 333 | 4903 init_buffer_once () |
| 4904 { | |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4905 int idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4906 |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
4907 bzero (buffer_permanent_local_flags, sizeof buffer_permanent_local_flags); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
4908 |
| 333 | 4909 /* Make sure all markable slots in buffer_defaults |
| 4910 are initialized reasonably, so mark_buffer won't choke. */ | |
| 4911 reset_buffer (&buffer_defaults); | |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
4912 reset_buffer_local_variables (&buffer_defaults, 1); |
| 333 | 4913 reset_buffer (&buffer_local_symbols); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
4914 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
|
4915 /* Prevent GC from getting confused. */ |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
4916 buffer_defaults.text = &buffer_defaults.own_text; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
4917 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
|
4918 BUF_INTERVALS (&buffer_defaults) = 0; |
|
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
4919 BUF_INTERVALS (&buffer_local_symbols) = 0; |
|
9262
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
4920 XSETBUFFER (Vbuffer_defaults, &buffer_defaults); |
|
582534b6e763
(Fget_buffer_create, Frename_buffer, Fbuffer_disable_undo,
Karl Heuer <kwzh@gnu.org>
parents:
9211
diff
changeset
|
4921 XSETBUFFER (Vbuffer_local_symbols, &buffer_local_symbols); |
| 333 | 4922 |
| 4923 /* Set up the default values of various buffer slots. */ | |
| 4924 /* Must do these before making the first buffer! */ | |
| 4925 | |
|
28636
19c81f320db5
(Fmake_indirect_buffer): Escape newline in doc.
Dave Love <fx@gnu.org>
parents:
28625
diff
changeset
|
4926 /* real setup is done in bindings.el */ |
| 333 | 4927 buffer_defaults.mode_line_format = build_string ("%-"); |
| 25546 | 4928 buffer_defaults.header_line_format = Qnil; |
| 333 | 4929 buffer_defaults.abbrev_mode = Qnil; |
| 4930 buffer_defaults.overwrite_mode = Qnil; | |
| 4931 buffer_defaults.case_fold_search = Qt; | |
| 4932 buffer_defaults.auto_fill_function = Qnil; | |
| 4933 buffer_defaults.selective_display = Qnil; | |
| 4934 #ifndef old | |
| 4935 buffer_defaults.selective_display_ellipses = Qt; | |
| 4936 #endif | |
| 4937 buffer_defaults.abbrev_table = Qnil; | |
| 4938 buffer_defaults.display_table = Qnil; | |
| 4939 buffer_defaults.undo_list = Qnil; | |
|
2043
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
4940 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
|
4941 buffer_defaults.file_format = Qnil; |
|
51844
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4942 buffer_defaults.overlays_before = NULL; |
|
c5036e7cc93b
(overlay_strings, recenter_overlay_lists): Fix typo in eassert in last commit.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51827
diff
changeset
|
4943 buffer_defaults.overlays_after = NULL; |
|
51824
9f5665eb77bd
(reset_buffer, recenter_overlay_lists)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51782
diff
changeset
|
4944 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
|
4945 |
|
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
|
4946 XSETFASTINT (buffer_defaults.tab_width, 8); |
| 333 | 4947 buffer_defaults.truncate_lines = Qnil; |
| 4948 buffer_defaults.ctl_arrow = Qt; | |
| 17022 | 4949 buffer_defaults.direction_reversed = Qnil; |
|
28322
986882bafaf1
(reset_buffer): Initialize buffer's cursor_type.
Gerd Moellmann <gerd@gnu.org>
parents:
28314
diff
changeset
|
4950 buffer_defaults.cursor_type = Qt; |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
4951 buffer_defaults.extra_line_spacing = Qnil; |
| 333 | 4952 |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
4953 #ifdef DOS_NT |
|
7270
0f79f4bd3c62
(init_buffer_once): Initialize buffer_file_type field right.
Richard M. Stallman <rms@gnu.org>
parents:
7062
diff
changeset
|
4954 buffer_defaults.buffer_file_type = Qnil; /* TEXT */ |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
4955 #endif |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
4956 buffer_defaults.enable_multibyte_characters = Qt; |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
4957 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
|
4958 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
|
4959 XSETFASTINT (buffer_defaults.left_margin, 0); |
|
9403
9f797989b817
* buffer.c: #include region-cache.h.
Jim Blandy <jimb@redhat.com>
parents:
9362
diff
changeset
|
4960 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
|
4961 buffer_defaults.file_truename = Qnil; |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
4962 XSETFASTINT (buffer_defaults.display_count, 0); |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4963 XSETFASTINT (buffer_defaults.left_margin_cols, 0); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4964 XSETFASTINT (buffer_defaults.right_margin_cols, 0); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4965 buffer_defaults.left_fringe_width = Qnil; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4966 buffer_defaults.right_fringe_width = Qnil; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4967 buffer_defaults.fringes_outside_margins = Qnil; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4968 buffer_defaults.scroll_bar_width = Qnil; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
4969 buffer_defaults.vertical_scroll_bar_type = Qt; |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
4970 buffer_defaults.indicate_empty_lines = Qnil; |
|
53602
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
4971 buffer_defaults.indicate_buffer_boundaries = Qnil; |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
4972 buffer_defaults.scroll_up_aggressively = Qnil; |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
4973 buffer_defaults.scroll_down_aggressively = Qnil; |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
4974 buffer_defaults.display_time = Qnil; |
| 333 | 4975 |
| 4976 /* Assign the local-flags to the slots that have default values. | |
| 4977 The local flag is a bit that is used in the buffer | |
| 4978 to say that it has its own local value for the slot. | |
| 4979 The local flag bits are in the local_var_flags slot of the buffer. */ | |
| 4980 | |
| 4981 /* 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
|
4982 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); |
| 333 | 4983 |
| 4984 /* 0 means not a lisp var, -1 means always local, else mask */ | |
| 4985 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
|
4986 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
|
4987 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
|
4988 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
|
4989 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
|
4990 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
|
4991 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
|
4992 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
|
4993 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
|
4994 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
|
4995 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
|
4996 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
|
4997 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
|
4998 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
|
4999 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
|
5000 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
|
5001 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
|
5002 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
|
5003 |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5004 idx = 1; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5005 XSETFASTINT (buffer_local_flags.mode_line_format, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5006 XSETFASTINT (buffer_local_flags.abbrev_mode, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5007 XSETFASTINT (buffer_local_flags.overwrite_mode, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5008 XSETFASTINT (buffer_local_flags.case_fold_search, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5009 XSETFASTINT (buffer_local_flags.auto_fill_function, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5010 XSETFASTINT (buffer_local_flags.selective_display, idx); ++idx; |
| 333 | 5011 #ifndef old |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5012 XSETFASTINT (buffer_local_flags.selective_display_ellipses, idx); ++idx; |
| 333 | 5013 #endif |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5014 XSETFASTINT (buffer_local_flags.tab_width, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5015 XSETFASTINT (buffer_local_flags.truncate_lines, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5016 XSETFASTINT (buffer_local_flags.ctl_arrow, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5017 XSETFASTINT (buffer_local_flags.fill_column, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5018 XSETFASTINT (buffer_local_flags.left_margin, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5019 XSETFASTINT (buffer_local_flags.abbrev_table, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5020 XSETFASTINT (buffer_local_flags.display_table, idx); ++idx; |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5021 #ifdef DOS_NT |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5022 XSETFASTINT (buffer_local_flags.buffer_file_type, idx); |
|
15776
6018e01d4466
(buffer_permanent_local_flags): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15638
diff
changeset
|
5023 /* Make this one a permanent local. */ |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5024 buffer_permanent_local_flags[idx++] = 1; |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
5025 #endif |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5026 XSETFASTINT (buffer_local_flags.syntax_table, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5027 XSETFASTINT (buffer_local_flags.cache_long_line_scans, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5028 XSETFASTINT (buffer_local_flags.category_table, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5029 XSETFASTINT (buffer_local_flags.direction_reversed, idx); ++idx; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5030 XSETFASTINT (buffer_local_flags.buffer_file_coding_system, idx); |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
5031 /* Make this one a permanent local. */ |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5032 buffer_permanent_local_flags[idx++] = 1; |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5033 XSETFASTINT (buffer_local_flags.left_margin_cols, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5034 XSETFASTINT (buffer_local_flags.right_margin_cols, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5035 XSETFASTINT (buffer_local_flags.left_fringe_width, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5036 XSETFASTINT (buffer_local_flags.right_fringe_width, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5037 XSETFASTINT (buffer_local_flags.fringes_outside_margins, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5038 XSETFASTINT (buffer_local_flags.scroll_bar_width, idx); ++idx; |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5039 XSETFASTINT (buffer_local_flags.vertical_scroll_bar_type, idx); ++idx; |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5040 XSETFASTINT (buffer_local_flags.indicate_empty_lines, idx); ++idx; |
|
53602
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5041 XSETFASTINT (buffer_local_flags.indicate_buffer_boundaries, idx); ++idx; |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5042 XSETFASTINT (buffer_local_flags.scroll_up_aggressively, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5043 XSETFASTINT (buffer_local_flags.scroll_down_aggressively, idx); ++idx; |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5044 XSETFASTINT (buffer_local_flags.header_line_format, idx); ++idx; |
|
28332
8abeccb78576
(syms_of_buffer): Add default-cursor-type.
Gerd Moellmann <gerd@gnu.org>
parents:
28322
diff
changeset
|
5045 XSETFASTINT (buffer_local_flags.cursor_type, idx); ++idx; |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
5046 XSETFASTINT (buffer_local_flags.extra_line_spacing, idx); ++idx; |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5047 |
|
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5048 /* Need more room? */ |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
5049 if (idx >= MAX_PER_BUFFER_VARS) |
|
28314
c46e609d887a
(buffer_permanent_local_flags): Make a char array.
Gerd Moellmann <gerd@gnu.org>
parents:
28207
diff
changeset
|
5050 abort (); |
|
28352
1555145f8c35
(buffer_permanent_local_flags): Use MAX_PER_BUFFER_VARS
Gerd Moellmann <gerd@gnu.org>
parents:
28332
diff
changeset
|
5051 last_per_buffer_idx = idx; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5052 |
| 333 | 5053 Vbuffer_alist = Qnil; |
| 5054 current_buffer = 0; | |
| 5055 all_buffers = 0; | |
| 5056 | |
| 5057 QSFundamental = build_string ("Fundamental"); | |
| 5058 | |
| 5059 Qfundamental_mode = intern ("fundamental-mode"); | |
| 5060 buffer_defaults.major_mode = Qfundamental_mode; | |
| 5061 | |
| 5062 Qmode_class = intern ("mode-class"); | |
| 5063 | |
| 5064 Qprotected_field = intern ("protected-field"); | |
| 5065 | |
| 5066 Qpermanent_local = intern ("permanent-local"); | |
| 5067 | |
| 5068 Qkill_buffer_hook = intern ("kill-buffer-hook"); | |
|
51431
5fc6a7035dd3
(init_buffer_once): Make kill-buffer-hook permanent-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51394
diff
changeset
|
5069 Fput (Qkill_buffer_hook, Qpermanent_local, Qt); |
| 333 | 5070 |
| 48635 | 5071 Qucs_set_table_for_input = intern ("ucs-set-table-for-input"); |
| 5072 | |
| 333 | 5073 Vprin1_to_string_buffer = Fget_buffer_create (build_string (" prin1")); |
| 14396 | 5074 |
| 333 | 5075 /* super-magic invisible buffer */ |
| 5076 Vbuffer_alist = Qnil; | |
| 5077 | |
| 648 | 5078 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); |
|
23399
e80c5f687340
(inhibit_modification_hooks): New variable.
Kenichi Handa <handa@m17n.org>
parents:
23174
diff
changeset
|
5079 |
|
e80c5f687340
(inhibit_modification_hooks): New variable.
Kenichi Handa <handa@m17n.org>
parents:
23174
diff
changeset
|
5080 inhibit_modification_hooks = 0; |
| 333 | 5081 } |
| 5082 | |
| 21514 | 5083 void |
| 333 | 5084 init_buffer () |
| 5085 { | |
|
31412
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5086 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
|
5087 char *pwd; |
|
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
5088 struct stat dotstat, pwdstat; |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
5089 Lisp_Object temp; |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5090 int rc; |
| 333 | 5091 |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
5092 #ifdef USE_MMAP_FOR_BUFFERS |
|
31412
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5093 { |
|
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5094 /* When using the ralloc implementation based on mmap(2), buffer |
|
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5095 text pointers will have been set to null in the dumped Emacs. |
|
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5096 Map new memory. */ |
|
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5097 struct buffer *b; |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5098 |
|
31412
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5099 for (b = all_buffers; b; b = b->next) |
|
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5100 if (b->text->beg == NULL) |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
5101 enlarge_buffer_text (b, 0); |
|
31412
828b2b8afdc0
(init_buffer) [REL_ALLOC_MMAP]: Map new buffer
Gerd Moellmann <gerd@gnu.org>
parents:
31395
diff
changeset
|
5102 } |
|
31604
91e7cea32eaa
Move allocation with mmap here, from ralloc.c. Change
Gerd Moellmann <gerd@gnu.org>
parents:
31416
diff
changeset
|
5103 #endif /* USE_MMAP_FOR_BUFFERS */ |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5104 |
| 333 | 5105 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
|
5106 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
|
5107 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
|
5108 |
|
44784
8180d4f92b70
(init_buffer): Fix PWD comment.
Paul Eggert <eggert@twinsun.com>
parents:
44617
diff
changeset
|
5109 /* If PWD is accurate, use it instead of calling getwd. PWD is |
|
8180d4f92b70
(init_buffer): Fix PWD comment.
Paul Eggert <eggert@twinsun.com>
parents:
44617
diff
changeset
|
5110 sometimes a nicer name, and using it may avoid a fatal error if a |
|
8180d4f92b70
(init_buffer): Fix PWD comment.
Paul Eggert <eggert@twinsun.com>
parents:
44617
diff
changeset
|
5111 parent directory is searchable but not readable. */ |
|
22171
e23d16d11ba9
(init_buffer): Support DOS_NT absolute file names.
Richard M. Stallman <rms@gnu.org>
parents:
22150
diff
changeset
|
5112 if ((pwd = getenv ("PWD")) != 0 |
|
e23d16d11ba9
(init_buffer): Support DOS_NT absolute file names.
Richard M. Stallman <rms@gnu.org>
parents:
22150
diff
changeset
|
5113 && (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
|
5114 && 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
|
5115 && 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
|
5116 && 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
|
5117 && 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
|
5118 && 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
|
5119 strcpy (buf, pwd); |
|
19242
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
5120 #ifdef HAVE_GETCWD |
|
a7d44588be35
(init_buffer): Use getcwd instead of getwd, if available.
Richard M. Stallman <rms@gnu.org>
parents:
18921
diff
changeset
|
5121 else if (getcwd (buf, MAXPATHLEN+1) == 0) |
| 19581 | 5122 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
|
5123 #else |
|
1563
e721339972b0
* buffer.c (init_buffer): If PWD is accurate, use it instead of
Jim Blandy <jimb@redhat.com>
parents:
1501
diff
changeset
|
5124 else if (getwd (buf) == 0) |
|
9810
c76b3e670eb3
(init_buffer): Fix error message syntax.
Richard M. Stallman <rms@gnu.org>
parents:
9785
diff
changeset
|
5125 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
|
5126 #endif |
| 333 | 5127 |
| 5128 #ifndef VMS | |
| 5129 /* Maybe this should really use some standard subroutine | |
| 5130 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
|
5131 rc = strlen (buf); |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5132 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
|
5133 { |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5134 buf[rc] = DIRECTORY_SEP; |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5135 buf[rc + 1] = '\0'; |
|
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5136 } |
| 333 | 5137 #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
|
5138 |
| 333 | 5139 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
|
5140 |
|
16384
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
5141 /* 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
|
5142 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
|
5143 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
|
5144 if (! NILP (temp) |
|
52fbf5fad62e
(init_buffer): Don't add /: to default dir if it's `/'.
Karl Heuer <kwzh@gnu.org>
parents:
19977
diff
changeset
|
5145 /* 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
|
5146 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
|
5147 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
|
5148 So avoid doing that. */ |
|
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
46293
diff
changeset
|
5149 && strcmp ("/", SDATA (current_buffer->directory))) |
|
16384
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
5150 current_buffer->directory |
|
4ec13b05b0fa
(init_buffer): Add /: to dir names that could be magic.
Richard M. Stallman <rms@gnu.org>
parents:
16370
diff
changeset
|
5151 = 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
|
5152 |
|
3463
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
5153 temp = get_minibuffer (0); |
|
aa78c7babb8e
(init_buffer): Init default-directory of minibuffer.
Richard M. Stallman <rms@gnu.org>
parents:
3329
diff
changeset
|
5154 XBUFFER (temp)->directory = current_buffer->directory; |
| 333 | 5155 } |
| 5156 | |
| 5157 /* initialize the buffer routines */ | |
| 21514 | 5158 void |
| 333 | 5159 syms_of_buffer () |
| 5160 { | |
|
12538
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
5161 staticpro (&last_overlay_modification_hooks); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
5162 last_overlay_modification_hooks |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
5163 = Fmake_vector (make_number (10), Qnil); |
|
5920994b14c2
(last_overlay_modification_hooks): New variable.
Karl Heuer <kwzh@gnu.org>
parents:
12488
diff
changeset
|
5164 |
| 333 | 5165 staticpro (&Vbuffer_defaults); |
| 5166 staticpro (&Vbuffer_local_symbols); | |
| 5167 staticpro (&Qfundamental_mode); | |
| 5168 staticpro (&Qmode_class); | |
| 5169 staticpro (&QSFundamental); | |
| 5170 staticpro (&Vbuffer_alist); | |
| 5171 staticpro (&Qprotected_field); | |
| 5172 staticpro (&Qpermanent_local); | |
| 5173 staticpro (&Qkill_buffer_hook); | |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5174 Qoverlayp = intern ("overlayp"); |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
5175 staticpro (&Qoverlayp); |
| 8839 | 5176 Qevaporate = intern ("evaporate"); |
| 5177 staticpro (&Qevaporate); | |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5178 Qmodification_hooks = intern ("modification-hooks"); |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
5179 staticpro (&Qmodification_hooks); |
|
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
5180 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
|
5181 staticpro (&Qinsert_in_front_hooks); |
|
4213
616036bb2427
(Qmodification_hooks, Qinsert_in_front_hooks)
Richard M. Stallman <rms@gnu.org>
parents:
4100
diff
changeset
|
5182 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
|
5183 staticpro (&Qinsert_behind_hooks); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5184 Qget_file_buffer = intern ("get-file-buffer"); |
| 5433 | 5185 staticpro (&Qget_file_buffer); |
|
5857
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
5186 Qpriority = intern ("priority"); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
5187 staticpro (&Qpriority); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
5188 Qwindow = intern ("window"); |
|
03f8720af7fb
(sort-overlays): New function, extracted from xfaces.c.
Karl Heuer <kwzh@gnu.org>
parents:
5703
diff
changeset
|
5189 staticpro (&Qwindow); |
|
11693
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
5190 Qbefore_string = intern ("before-string"); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
5191 staticpro (&Qbefore_string); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
5192 Qafter_string = intern ("after-string"); |
|
efef31f1c42d
(Qbefore_string, Qafter_string): New vars.
Karl Heuer <kwzh@gnu.org>
parents:
11659
diff
changeset
|
5193 staticpro (&Qafter_string); |
|
12785
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5194 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
|
5195 staticpro (&Qfirst_change_hook); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5196 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
|
5197 staticpro (&Qbefore_change_functions); |
|
937df231678c
(Qbefore_change_functions, Qafter_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
12699
diff
changeset
|
5198 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
|
5199 staticpro (&Qafter_change_functions); |
| 48635 | 5200 staticpro (&Qucs_set_table_for_input); |
| 333 | 5201 |
|
50014
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
5202 Qkill_buffer_query_functions = intern ("kill-buffer-query-functions"); |
|
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
5203 staticpro (&Qkill_buffer_query_functions); |
|
3b2576528809
(Fkill_buffer): Use Frun_hook_with_args_until_failure
Richard M. Stallman <rms@gnu.org>
parents:
49974
diff
changeset
|
5204 |
| 333 | 5205 Fput (Qprotected_field, Qerror_conditions, |
| 5206 Fcons (Qprotected_field, Fcons (Qerror, Qnil))); | |
| 5207 Fput (Qprotected_field, Qerror_message, | |
| 5208 build_string ("Attempt to modify a protected field")); | |
| 5209 | |
| 5210 /* All these use DEFVAR_LISP_NOPRO because the slots in | |
| 5211 buffer_defaults will all be marked via Vbuffer_defaults. */ | |
| 5212 | |
| 5213 DEFVAR_LISP_NOPRO ("default-mode-line-format", | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5214 &buffer_defaults.mode_line_format, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5215 doc: /* Default value of `mode-line-format' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5216 This is the same as (default-value 'mode-line-format). */); |
| 333 | 5217 |
| 25546 | 5218 DEFVAR_LISP_NOPRO ("default-header-line-format", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5219 &buffer_defaults.header_line_format, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5220 doc: /* Default value of `header-line-format' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5221 This is the same as (default-value 'header-line-format). */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5222 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5223 DEFVAR_LISP_NOPRO ("default-cursor-type", &buffer_defaults.cursor_type, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5224 doc: /* Default value of `cursor-type' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5225 This is the same as (default-value 'cursor-type). */); |
|
28332
8abeccb78576
(syms_of_buffer): Add default-cursor-type.
Gerd Moellmann <gerd@gnu.org>
parents:
28322
diff
changeset
|
5226 |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
5227 DEFVAR_LISP_NOPRO ("default-line-spacing", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5228 &buffer_defaults.extra_line_spacing, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5229 doc: /* Default value of `line-spacing' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5230 This is the same as (default-value 'line-spacing). */); |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
5231 |
| 333 | 5232 DEFVAR_LISP_NOPRO ("default-abbrev-mode", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5233 &buffer_defaults.abbrev_mode, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5234 doc: /* Default value of `abbrev-mode' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5235 This is the same as (default-value 'abbrev-mode). */); |
| 333 | 5236 |
| 5237 DEFVAR_LISP_NOPRO ("default-ctl-arrow", | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5238 &buffer_defaults.ctl_arrow, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5239 doc: /* Default value of `ctl-arrow' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5240 This is the same as (default-value 'ctl-arrow). */); |
| 333 | 5241 |
| 17022 | 5242 DEFVAR_LISP_NOPRO ("default-direction-reversed", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5243 &buffer_defaults.direction_reversed, |
|
51255
b9ed0644abff
(syms_of_buffer) <default-direction-reversed>: Doc fix.
Andreas Schwab <schwab@suse.de>
parents:
51229
diff
changeset
|
5244 doc: /* Default value of `direction-reversed' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5245 This is the same as (default-value 'direction-reversed). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5246 |
|
17124
fdad8ea24563
(init_buffer_once): Make member
Kenichi Handa <handa@m17n.org>
parents:
17022
diff
changeset
|
5247 DEFVAR_LISP_NOPRO ("default-enable-multibyte-characters", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5248 &buffer_defaults.enable_multibyte_characters, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5249 doc: /* *Default value of `enable-multibyte-characters' for buffers not overriding it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5250 This is the same as (default-value 'enable-multibyte-characters). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5251 |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
5252 DEFVAR_LISP_NOPRO ("default-buffer-file-coding-system", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5253 &buffer_defaults.buffer_file_coding_system, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5254 doc: /* Default value of `buffer-file-coding-system' for buffers not overriding it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5255 This is the same as (default-value 'buffer-file-coding-system). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5256 |
| 333 | 5257 DEFVAR_LISP_NOPRO ("default-truncate-lines", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5258 &buffer_defaults.truncate_lines, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5259 doc: /* Default value of `truncate-lines' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5260 This is the same as (default-value 'truncate-lines). */); |
| 333 | 5261 |
| 5262 DEFVAR_LISP_NOPRO ("default-fill-column", | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5263 &buffer_defaults.fill_column, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5264 doc: /* Default value of `fill-column' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5265 This is the same as (default-value 'fill-column). */); |
| 333 | 5266 |
| 5267 DEFVAR_LISP_NOPRO ("default-left-margin", | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5268 &buffer_defaults.left_margin, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5269 doc: /* Default value of `left-margin' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5270 This is the same as (default-value 'left-margin). */); |
| 333 | 5271 |
| 5272 DEFVAR_LISP_NOPRO ("default-tab-width", | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5273 &buffer_defaults.tab_width, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5274 doc: /* Default value of `tab-width' for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5275 This is the same as (default-value 'tab-width). */); |
| 333 | 5276 |
| 5277 DEFVAR_LISP_NOPRO ("default-case-fold-search", | |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5278 &buffer_defaults.case_fold_search, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5279 doc: /* Default value of `case-fold-search' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5280 This is the same as (default-value 'case-fold-search). */); |
| 333 | 5281 |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5282 #ifdef DOS_NT |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5283 DEFVAR_LISP_NOPRO ("default-buffer-file-type", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5284 &buffer_defaults.buffer_file_type, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5285 doc: /* Default file type for buffers that do not override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5286 This is the same as (default-value 'buffer-file-type). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5287 The file type is nil for text, t for binary. */); |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
5288 #endif |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
5289 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5290 DEFVAR_LISP_NOPRO ("default-left-margin-width", |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5291 &buffer_defaults.left_margin_cols, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5292 doc: /* Default value of `left-margin-width' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5293 This is the same as (default-value 'left-margin-width). */); |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5294 |
|
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5295 DEFVAR_LISP_NOPRO ("default-right-margin-width", |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5296 &buffer_defaults.right_margin_cols, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5297 doc: /* Default value of `right-margin-width' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5298 This is the same as (default-value 'right-margin-width). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5299 |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5300 DEFVAR_LISP_NOPRO ("default-left-fringe-width", |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5301 &buffer_defaults.left_fringe_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5302 doc: /* Default value of `left-fringe-width' for buffers that don't override it. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5303 This is the same as (default-value 'left-fringe-width). */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5304 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5305 DEFVAR_LISP_NOPRO ("default-right-fringe-width", |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5306 &buffer_defaults.right_fringe_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5307 doc: /* Default value of `right-fringe-width' for buffers that don't override it. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5308 This is the same as (default-value 'right-fringe-width). */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5309 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5310 DEFVAR_LISP_NOPRO ("default-fringes-outside-margins", |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5311 &buffer_defaults.fringes_outside_margins, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5312 doc: /* Default value of `fringes-outside-margins' for buffers that don't override it. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5313 This is the same as (default-value 'fringes-outside-margins). */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5314 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5315 DEFVAR_LISP_NOPRO ("default-scroll-bar-width", |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5316 &buffer_defaults.scroll_bar_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5317 doc: /* Default value of `scroll-bar-width' for buffers that don't override it. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5318 This is the same as (default-value 'scroll-bar-width). */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5319 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5320 DEFVAR_LISP_NOPRO ("default-vertical-scroll-bar", |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5321 &buffer_defaults.vertical_scroll_bar_type, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5322 doc: /* Default value of `vertical-scroll-bar' for buffers that don't override it. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5323 This is the same as (default-value 'vertical-scroll-bar). */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5324 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5325 DEFVAR_LISP_NOPRO ("default-indicate-empty-lines", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5326 &buffer_defaults.indicate_empty_lines, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5327 doc: /* Default value of `indicate-empty-lines' for buffers that don't override it. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5328 This is the same as (default-value 'indicate-empty-lines). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5329 |
|
53602
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5330 DEFVAR_LISP_NOPRO ("default-indicate-buffer-boundaries", |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5331 &buffer_defaults.indicate_buffer_boundaries, |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5332 doc: /* Default value of `indicate-buffer-boundaries' for buffers that don't override it. |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5333 This is the same as (default-value 'indicate-buffer-boundaries). */); |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5334 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5335 DEFVAR_LISP_NOPRO ("default-scroll-up-aggressively", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5336 &buffer_defaults.scroll_up_aggressively, |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5337 doc: /* Default value of `scroll-up-aggressively'. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5338 This value applies in buffers that don't have their own local values. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5339 This variable is an alias for (default-value 'scroll-up-aggressively). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5340 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5341 DEFVAR_LISP_NOPRO ("default-scroll-down-aggressively", |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5342 &buffer_defaults.scroll_down_aggressively, |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5343 doc: /* Default value of `scroll-down-aggressively'. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5344 This value applies in buffers that don't have their own local values. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5345 This variable is an alias for (default-value 'scroll-down-aggressively). */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5346 |
| 25546 | 5347 DEFVAR_PER_BUFFER ("header-line-format", |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5348 ¤t_buffer->header_line_format, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5349 Qnil, |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5350 doc: /* Analogous to `mode-line-format', but controls the header line. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5351 The header line appears, optionally, at the top of a window; |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5352 the mode line appears at the bottom. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5353 |
| 333 | 5354 DEFVAR_PER_BUFFER ("mode-line-format", ¤t_buffer->mode_line_format, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5355 Qnil, |
|
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5356 doc: /* Template for displaying mode line for current buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5357 Each buffer has its own value of this variable. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5358 Value may be nil, a string, a symbol or a list or cons cell. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5359 A value of nil means don't display a mode line. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5360 For a symbol, its value is used (but it is ignored if t or nil). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5361 A string appearing directly as the value of a symbol is processed verbatim |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5362 in that the %-constructs below are not recognized. |
|
48305
55b6e3969474
(syms_of_buffer) <mode-line-format>: Document symbol
Kim F. Storm <storm@cua.dk>
parents:
48227
diff
changeset
|
5363 Note that unless the symbol is marked as a `risky-local-variable', all |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5364 properties in any strings, as well as all :eval and :propertize forms |
|
48305
55b6e3969474
(syms_of_buffer) <mode-line-format>: Document symbol
Kim F. Storm <storm@cua.dk>
parents:
48227
diff
changeset
|
5365 in the value of that symbol will be ignored. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5366 For a list of the form `(:eval FORM)', FORM is evaluated and the result |
|
48355
77552fd065a0
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
48305
diff
changeset
|
5367 is used as a mode line element. Be careful--FORM should not load any files, |
|
77552fd065a0
(syms_of_buffer): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
48305
diff
changeset
|
5368 because that can cause an infinite recursion. |
|
48305
55b6e3969474
(syms_of_buffer) <mode-line-format>: Document symbol
Kim F. Storm <storm@cua.dk>
parents:
48227
diff
changeset
|
5369 For a list of the form `(:propertize ELT PROPS...)', ELT is displayed |
|
55b6e3969474
(syms_of_buffer) <mode-line-format>: Document symbol
Kim F. Storm <storm@cua.dk>
parents:
48227
diff
changeset
|
5370 with the specified properties PROPS applied. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5371 For a list whose car is a symbol, the symbol's value is taken, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5372 and if that is non-nil, the cadr of the list is processed recursively. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5373 Otherwise, the caddr of the list (if there is one) is processed. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5374 For a list whose car is a string or list, each element is processed |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5375 recursively and the results are effectively concatenated. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5376 For a list whose car is an integer, the cdr of the list is processed |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5377 and padded (if the number is positive) or truncated (if negative) |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5378 to the width specified by that number. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5379 A string is printed verbatim in the mode line except for %-constructs: |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5380 (%-constructs are allowed when the string is the entire mode-line-format |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5381 or when it is found in a cons-cell or a list) |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5382 %b -- print buffer name. %f -- print visited file name. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5383 %F -- print frame name. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5384 %* -- print %, * or hyphen. %+ -- print *, % or hyphen. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5385 %& is like %*, but ignore read-only-ness. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5386 % means buffer is read-only and * means it is modified. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5387 For a modified read-only buffer, %* gives % and %+ gives *. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5388 %s -- print process status. %l -- print the current line number. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5389 %c -- print the current column number (this makes editing slower). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5390 To make the column number update correctly in all cases, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5391 `column-number-mode' must be non-nil. |
|
52459
efa9d19d170e
(syms_of_buffer): Document `%i' and `%I' constructs for
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
5392 %i -- print the size of the buffer. |
|
efa9d19d170e
(syms_of_buffer): Document `%i' and `%I' constructs for
Lute Kamstra <lute@gnu.org>
parents:
52401
diff
changeset
|
5393 %I -- like %i, but use k, M, G, etc., to abbreviate. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5394 %p -- print percent of buffer above top of window, or Top, Bot or All. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5395 %P -- print percent of buffer above bottom of window, perhaps plus Top, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5396 or print Bottom or All. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5397 %m -- print the mode name. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5398 %n -- print Narrow if appropriate. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5399 %z -- print mnemonics of buffer, terminal, and keyboard coding systems. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5400 %Z -- like %z, but including the end-of-line format. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5401 %[ -- print one [ for each recursive editing level. %] similar. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5402 %% -- print %. %- -- print infinitely many dashes. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5403 Decimal digits after the % specify field width to which to pad. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5404 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5405 DEFVAR_LISP_NOPRO ("default-major-mode", &buffer_defaults.major_mode, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5406 doc: /* *Major mode for new buffers. Defaults to `fundamental-mode'. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5407 nil here means use current buffer's major mode. */); |
| 333 | 5408 |
| 5409 DEFVAR_PER_BUFFER ("major-mode", ¤t_buffer->major_mode, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5410 make_number (Lisp_Symbol), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5411 doc: /* Symbol for current buffer's major mode. */); |
| 333 | 5412 |
| 5413 DEFVAR_PER_BUFFER ("mode-name", ¤t_buffer->mode_name, | |
|
43712
223f1f5d160d
(syms_of_buffer): Allow non-string `mode-name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43630
diff
changeset
|
5414 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5415 doc: /* Pretty name of current buffer's major mode (a string). */); |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5416 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5417 DEFVAR_PER_BUFFER ("abbrev-mode", ¤t_buffer->abbrev_mode, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5418 doc: /* Non-nil turns on automatic expansion of abbrevs as they are inserted. */); |
| 333 | 5419 |
| 5420 DEFVAR_PER_BUFFER ("case-fold-search", ¤t_buffer->case_fold_search, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5421 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5422 doc: /* *Non-nil if searches and matches should ignore case. */); |
| 333 | 5423 |
| 5424 DEFVAR_PER_BUFFER ("fill-column", ¤t_buffer->fill_column, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5425 make_number (Lisp_Int), |
|
46864
df9f70dd69a4
(syms_of_buffer) <fill-column>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46599
diff
changeset
|
5426 doc: /* *Column beyond which automatic line-wrapping should happen. |
|
df9f70dd69a4
(syms_of_buffer) <fill-column>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
46599
diff
changeset
|
5427 Interactively, you can set this using \\[set-fill-column]. */); |
| 333 | 5428 |
| 5429 DEFVAR_PER_BUFFER ("left-margin", ¤t_buffer->left_margin, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5430 make_number (Lisp_Int), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5431 doc: /* *Column for the default indent-line-function to indent to. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5432 Linefeed indents to this column in Fundamental mode. */); |
| 333 | 5433 |
| 5434 DEFVAR_PER_BUFFER ("tab-width", ¤t_buffer->tab_width, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5435 make_number (Lisp_Int), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5436 doc: /* *Distance between tab stops (for display of tab characters), in columns. */); |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5437 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5438 DEFVAR_PER_BUFFER ("ctl-arrow", ¤t_buffer->ctl_arrow, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5439 doc: /* *Non-nil means display control chars with uparrow. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5440 A value of nil means use backslash and octal digits. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5441 This variable does not apply to characters whose display is specified |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5442 in the current display table (if there is one). */); |
| 333 | 5443 |
| 17022 | 5444 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
|
5445 ¤t_buffer->enable_multibyte_characters, |
|
50304
d9d826db650f
(overlays_in): Declare static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50014
diff
changeset
|
5446 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5447 doc: /* Non-nil means the buffer contents are regarded as multi-byte characters. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5448 Otherwise they are regarded as unibyte. This affects the display, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5449 file I/O and the behavior of various editing commands. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5450 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5451 This variable is buffer-local but you cannot set it directly; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5452 use the function `set-buffer-multibyte' to change a buffer's representation. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5453 Changing its default value with `setq-default' is supported. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5454 See also variable `default-enable-multibyte-characters' and Info node |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5455 `(elisp)Text Representations'. */); |
|
50304
d9d826db650f
(overlays_in): Declare static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50014
diff
changeset
|
5456 XSYMBOL (intern ("enable-multibyte-characters"))->constant = 1; |
| 17022 | 5457 |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
5458 DEFVAR_PER_BUFFER ("buffer-file-coding-system", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5459 ¤t_buffer->buffer_file_coding_system, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5460 doc: /* Coding system to be used for encoding the buffer contents on saving. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5461 This variable applies to saving the buffer, and also to `write-region' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5462 and other functions that use `write-region'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5463 It does not apply to sending output to subprocesses, however. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5464 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5465 If this is nil, the buffer is saved without any code conversion |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5466 unless some coding system is specified in `file-coding-system-alist' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5467 for the buffer file. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5468 |
|
43630
a4789f07d85d
(syms_of_buffer) <buffer-file-coding-system>: Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
42982
diff
changeset
|
5469 If the text to be saved cannot be encoded as specified by this variable, |
|
a4789f07d85d
(syms_of_buffer) <buffer-file-coding-system>: Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
42982
diff
changeset
|
5470 an alternative encoding is selected by `select-safe-coding-system', which see. |
|
a4789f07d85d
(syms_of_buffer) <buffer-file-coding-system>: Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
42982
diff
changeset
|
5471 |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5472 The variable `coding-system-for-write', if non-nil, overrides this variable. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5473 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5474 This variable is never applied to a way of decoding a file while reading it. */); |
|
18178
b45b431879bf
(init_buffer_once): Inititialize the member
Kenichi Handa <handa@m17n.org>
parents:
18105
diff
changeset
|
5475 |
| 17022 | 5476 DEFVAR_PER_BUFFER ("direction-reversed", ¤t_buffer->direction_reversed, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5477 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5478 doc: /* *Non-nil means lines in the buffer are displayed right to left. */); |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5479 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5480 DEFVAR_PER_BUFFER ("truncate-lines", ¤t_buffer->truncate_lines, Qnil, |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5481 doc: /* *Non-nil means do not display continuation lines. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5482 Instead, give each line of text just one screen line. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5483 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5484 Note that this is overridden by the variable |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5485 `truncate-partial-width-windows' if that variable is non-nil |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5486 and this buffer is not full-frame width. */); |
| 333 | 5487 |
|
9785
a72386110d83
(init_buffer): Use DIRECTORY_SEP, IS_DIRECTORY_SEP macros,
Richard M. Stallman <rms@gnu.org>
parents:
9732
diff
changeset
|
5488 #ifdef DOS_NT |
|
5502
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
5489 DEFVAR_PER_BUFFER ("buffer-file-type", ¤t_buffer->buffer_file_type, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5490 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5491 doc: /* Non-nil if the visited file is a binary file. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5492 This variable is meaningful on MS-DOG and Windows NT. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5493 On those systems, it is automatically local in every buffer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5494 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
|
5495 #endif |
|
2b48fd9bc80e
[MSDOS]: New buffer-local variable:
Richard M. Stallman <rms@gnu.org>
parents:
5433
diff
changeset
|
5496 |
| 333 | 5497 DEFVAR_PER_BUFFER ("default-directory", ¤t_buffer->directory, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5498 make_number (Lisp_String), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5499 doc: /* Name of default directory of current buffer. Should end with slash. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5500 To interactively change the default directory, use command `cd'. */); |
| 333 | 5501 |
| 5502 DEFVAR_PER_BUFFER ("auto-fill-function", ¤t_buffer->auto_fill_function, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5503 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5504 doc: /* Function called (if non-nil) to perform auto-fill. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5505 It is called after self-inserting any character specified in |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5506 the `auto-fill-chars' table. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5507 NOTE: This variable is not a hook; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5508 its value may not be a list of functions. */); |
| 333 | 5509 |
| 5510 DEFVAR_PER_BUFFER ("buffer-file-name", ¤t_buffer->filename, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5511 make_number (Lisp_String), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5512 doc: /* Name of file visited in current buffer, or nil if not visiting a file. */); |
| 333 | 5513 |
|
10751
dea8f022819d
(syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents:
10668
diff
changeset
|
5514 DEFVAR_PER_BUFFER ("buffer-file-truename", ¤t_buffer->file_truename, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5515 make_number (Lisp_String), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5516 doc: /* Abbreviated truename of file visited in current buffer, or nil if none. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5517 The truename of a file is calculated by `file-truename' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5518 and then abbreviated with `abbreviate-file-name'. */); |
|
10751
dea8f022819d
(syms_of_buffer): Set up Lisp var buffer-file-truename.
Richard M. Stallman <rms@gnu.org>
parents:
10668
diff
changeset
|
5519 |
| 333 | 5520 DEFVAR_PER_BUFFER ("buffer-auto-save-file-name", |
| 1041 | 5521 ¤t_buffer->auto_save_file_name, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5522 make_number (Lisp_String), |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5523 doc: /* Name of file for auto-saving current buffer. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5524 If it is nil, that means don't auto-save this buffer. */); |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5525 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5526 DEFVAR_PER_BUFFER ("buffer-read-only", ¤t_buffer->read_only, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5527 doc: /* Non-nil if this buffer is read-only. */); |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5528 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5529 DEFVAR_PER_BUFFER ("buffer-backed-up", ¤t_buffer->backed_up, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5530 doc: /* Non-nil if this buffer's file has been backed up. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5531 Backing up is done before the first time the file is saved. */); |
| 333 | 5532 |
| 5533 DEFVAR_PER_BUFFER ("buffer-saved-size", ¤t_buffer->save_length, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5534 make_number (Lisp_Int), |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5535 doc: /* Length of current buffer when last read in, saved or auto-saved. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5536 0 initially. */); |
| 333 | 5537 |
| 5538 DEFVAR_PER_BUFFER ("selective-display", ¤t_buffer->selective_display, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5539 Qnil, |
|
41027
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5540 doc: /* Non-nil enables selective display. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5541 An Integer N as value means display only lines |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5542 that start with less than n columns of space. |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5543 A value of t means that the character ^M makes itself and |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5544 all the rest of the line invisible; also, when saving the buffer |
|
54f6ee43146e
(syms_of_buffer): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
40840
diff
changeset
|
5545 in a file, save the ^M as a newline. */); |
| 333 | 5546 |
| 5547 #ifndef old | |
| 5548 DEFVAR_PER_BUFFER ("selective-display-ellipses", | |
| 5549 ¤t_buffer->selective_display_ellipses, | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5550 Qnil, |
|
40567
7c28809db274
(selective-display-ellipses): Doc fix.
Pavel Jan?k <Pavel@Janik.cz>
parents:
40108
diff
changeset
|
5551 doc: /* Non-nil means display ... on previous line when a line is invisible. */); |
| 333 | 5552 #endif |
| 5553 | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5554 DEFVAR_PER_BUFFER ("overwrite-mode", ¤t_buffer->overwrite_mode, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5555 doc: /* Non-nil if self-insertion should replace existing text. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5556 The value should be one of `overwrite-mode-textual', |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5557 `overwrite-mode-binary', or nil. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5558 If it is `overwrite-mode-textual', self-insertion still |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5559 inserts at the end of a line, and inserts when point is before a tab, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5560 until the tab is filled in. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5561 If `overwrite-mode-binary', self-insertion replaces newlines and tabs too. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5562 |
| 333 | 5563 DEFVAR_PER_BUFFER ("buffer-display-table", ¤t_buffer->display_table, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5564 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5565 doc: /* Display table that controls display of the contents of current buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5566 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5567 If this variable is nil, the value of `standard-display-table' is used. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5568 Each window can have its own, overriding display table, see |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5569 `set-window-display-table' and `window-display-table'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5570 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5571 The display table is a char-table created with `make-display-table'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5572 A char-table is an array indexed by character codes. Normal array |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5573 primitives `aref' and `aset' can be used to access elements of a char-table. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5574 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5575 Each of the char-table elements control how to display the corresponding |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5576 text character: the element at index C in the table says how to display |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5577 the character whose code is C. Each element should be a vector of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5578 characters or nil. nil means display the character in the default fashion; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5579 otherwise, the characters from the vector are delivered to the screen |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5580 instead of the original character. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5581 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5582 For example, (aset buffer-display-table ?X ?Y) will cause Emacs to display |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5583 a capital Y instead of each X character. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5584 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5585 In addition, a char-table has six extra slots to control the display of: |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5586 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5587 the end of a truncated screen line (extra-slot 0, a single character); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5588 the end of a continued line (extra-slot 1, a single character); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5589 the escape character used to display character codes in octal |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5590 (extra-slot 2, a single character); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5591 the character used as an arrow for control characters (extra-slot 3, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5592 a single character); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5593 the decoration indicating the presence of invisible lines (extra-slot 4, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5594 a vector of characters); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5595 the character used to draw the border between side-by-side windows |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5596 (extra-slot 5, a single character). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5597 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5598 See also the functions `display-table-slot' and `set-display-table-slot'. */); |
| 333 | 5599 |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5600 DEFVAR_PER_BUFFER ("left-margin-width", ¤t_buffer->left_margin_cols, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5601 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5602 doc: /* *Width of left marginal area for display of a buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5603 A value of nil means no marginal area. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5604 |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5605 DEFVAR_PER_BUFFER ("right-margin-width", ¤t_buffer->right_margin_cols, |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5606 Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5607 doc: /* *Width of right marginal area for display of a buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5608 A value of nil means no marginal area. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5609 |
|
51190
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5610 DEFVAR_PER_BUFFER ("left-fringe-width", ¤t_buffer->left_fringe_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5611 Qnil, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5612 doc: /* *Width of this buffer's left fringe (in pixels). |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5613 A value of 0 means no left fringe is shown in this buffer's window. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5614 A value of nil means to use the left fringe width from the window's frame. */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5615 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5616 DEFVAR_PER_BUFFER ("right-fringe-width", ¤t_buffer->right_fringe_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5617 Qnil, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5618 doc: /* *Width of this buffer's right fringe (in pixels). |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5619 A value of 0 means no right fringe is shown in this buffer's window. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5620 A value of nil means to use the right fringe width from the window's frame. */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5621 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5622 DEFVAR_PER_BUFFER ("fringes-outside-margins", ¤t_buffer->fringes_outside_margins, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5623 Qnil, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5624 doc: /* *Non-nil means to display fringes outside display margins. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5625 A value of nil means to display fringes between margins and buffer text. */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5626 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5627 DEFVAR_PER_BUFFER ("scroll-bar-width", ¤t_buffer->scroll_bar_width, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5628 Qnil, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5629 doc: /* *Width of this buffer's scroll bars in pixels. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5630 A value of nil means to use the scroll bar width from the window's frame. */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5631 |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5632 DEFVAR_PER_BUFFER ("vertical-scroll-bar", ¤t_buffer->vertical_scroll_bar_type, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5633 Qnil, |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5634 doc: /* *Position of this buffer's vertical scroll bar. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5635 A value of left or right means to place the vertical scroll bar at that side |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5636 of the window; a value of nil means that this window has no vertical scroll bar. |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5637 A value of t means to use the vertical scroll bar type from the window's frame. */); |
|
17af4bfeb062
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
51166
diff
changeset
|
5638 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5639 DEFVAR_PER_BUFFER ("indicate-empty-lines", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5640 ¤t_buffer->indicate_empty_lines, Qnil, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5641 doc: /* *Visually indicate empty lines after the buffer end. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5642 If non-nil, a bitmap is displayed in the left fringe of a window on |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5643 window-systems. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5644 |
|
53602
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5645 DEFVAR_PER_BUFFER ("indicate-buffer-boundaries", |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5646 ¤t_buffer->indicate_buffer_boundaries, Qnil, |
|
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5647 doc: /* *Visually indicate buffer boundaries and scrolling. |
|
53958
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5648 If non-nil, the first and last line of the buffer are marked in the fringe |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5649 of a window on window-systems with angle bitmaps, or if the window can be |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5650 scrolled, the top and bottom line of the window are marked with up and down |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5651 arrow bitmaps. |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5652 If value is `left' or `right', both angle and arrow bitmaps are displayed in |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5653 the left or right fringe, resp. Any other non-nil value causes the |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5654 bitmap on the top line to be displayed in the left fringe, and the |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5655 bitmap on the bottom line in the right fringe. |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5656 If value is a cons (ANGLES . ARROWS), the car specifies the position |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5657 of the angle bitmaps, and the cdr specifies the position of the arrow |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5658 bitmaps. For example, (t . right) places the top angle bitmap in left |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5659 fringe, the bottom angle bitmap in right fringe, and both arrow |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5660 bitmaps in right fringe. To show just the angle bitmaps in the left |
|
1aa8132576ec
(syms_of_buffer): Doc fix for indicate-buffer-boundaries.
Kim F. Storm <storm@cua.dk>
parents:
53816
diff
changeset
|
5661 fringe, but no arrow bitmaps, use (left . nil). */); |
|
53602
4c14b3c50a31
(init_buffer_once): Set buffer_defaults and
Kim F. Storm <storm@cua.dk>
parents:
53350
diff
changeset
|
5662 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5663 DEFVAR_PER_BUFFER ("scroll-up-aggressively", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5664 ¤t_buffer->scroll_up_aggressively, Qnil, |
|
49057
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5665 doc: /* How far to scroll windows upward. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5666 If you move point off the bottom, the window scrolls automatically. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5667 This variable controls how far it scrolls. nil, the default, |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5668 means scroll to center point. A fraction means scroll to put point |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5669 that fraction of the window's height from the bottom of the window. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5670 When the value is 0.0, point goes at the bottom line, which in the simple |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5671 case that you moved off with C-f means scrolling just one line. 1.0 means |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5672 point goes at the top, so that in that simple case, the window |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5673 window scrolls by a full window height. Meaningful values are |
|
48947
3bdd36228f48
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
48776
diff
changeset
|
5674 between 0.0 and 1.0, inclusive. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5675 |
|
25021
7a31786a0335
(init_buffer_once): Init top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents:
24975
diff
changeset
|
5676 DEFVAR_PER_BUFFER ("scroll-down-aggressively", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5677 ¤t_buffer->scroll_down_aggressively, Qnil, |
|
49057
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5678 doc: /* How far to scroll windows downward. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5679 If you move point off the top, the window scrolls automatically. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5680 This variable controls how far it scrolls. nil, the default, |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5681 means scroll to center point. A fraction means scroll to put point |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5682 that fraction of the window's height from the top of the window. |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5683 When the value is 0.0, point goes at the top line, which in the simple |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5684 case that you moved off with C-b means scrolling just one line. 1.0 means |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5685 point goes at the bottom, so that in that simple case, the window |
|
8c97b527621e
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents:
48947
diff
changeset
|
5686 window scrolls by a full window height. Meaningful values are |
|
48947
3bdd36228f48
(syms_of_buffer) <scroll-up-aggressively, scroll-down-aggressively>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
48776
diff
changeset
|
5687 between 0.0 and 1.0, inclusive. */); |
|
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49444
diff
changeset
|
5688 |
| 333 | 5689 /*DEFVAR_LISP ("debug-check-symbol", &Vcheck_symbol, |
| 5690 "Don't ask."); | |
| 5691 */ | |
| 5692 | |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5693 DEFVAR_LISP ("before-change-functions", &Vbefore_change_functions, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5694 doc: /* List of functions to call before each text change. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5695 Two arguments are passed to each function: the positions of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5696 the beginning and end of the range of old text to be changed. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5697 \(For an insertion, the beginning and end are at the same place.) |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5698 No information is given about the length of the text after the change. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5699 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5700 Buffer changes made while executing the `before-change-functions' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5701 don't call any before-change or after-change functions. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5702 That's because these variables are temporarily set to nil. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5703 As a result, a hook function cannot straightforwardly alter the value of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5704 these variables. See the Emacs Lisp manual for a way of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5705 accomplishing an equivalent result by using other variables. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5706 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5707 If an unhandled error happens in running these functions, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5708 the variable's value remains nil. That prevents the error |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5709 from happening repeatedly and making Emacs nonfunctional. */); |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
5710 Vbefore_change_functions = Qnil; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
5711 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5712 DEFVAR_LISP ("after-change-functions", &Vafter_change_functions, |
|
44790
56ce64222cbe
(syms_of_buffer): Doc fix.
Colin Walters <walters@gnu.org>
parents:
44784
diff
changeset
|
5713 doc: /* List of functions to call after each text change. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5714 Three arguments are passed to each function: the positions of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5715 the beginning and end of the range of changed text, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5716 and the length in bytes of the pre-change text replaced by that range. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5717 \(For an insertion, the pre-change length is zero; |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5718 for a deletion, that length is the number of bytes deleted, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5719 and the post-change beginning and end are at the same place.) |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5720 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5721 Buffer changes made while executing the `after-change-functions' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5722 don't call any before-change or after-change functions. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5723 That's because these variables are temporarily set to nil. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5724 As a result, a hook function cannot straightforwardly alter the value of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5725 these variables. See the Emacs Lisp manual for a way of |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5726 accomplishing an equivalent result by using other variables. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5727 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5728 If an unhandled error happens in running these functions, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5729 the variable's value remains nil. That prevents the error |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5730 from happening repeatedly and making Emacs nonfunctional. */); |
|
6785
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
5731 Vafter_change_functions = Qnil; |
|
121f2c5eba5e
(Vafter_change_functions, Vbefore_change_functions): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
6697
diff
changeset
|
5732 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5733 DEFVAR_LISP ("first-change-hook", &Vfirst_change_hook, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5734 doc: /* A list of functions to call before changing a buffer which is unmodified. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5735 The functions are run using the `run-hooks' function. */); |
|
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1707
diff
changeset
|
5736 Vfirst_change_hook = Qnil; |
| 333 | 5737 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5738 DEFVAR_PER_BUFFER ("buffer-undo-list", ¤t_buffer->undo_list, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5739 doc: /* List of undo entries in current buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5740 Recent changes come first; older changes follow newer. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5741 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5742 An entry (BEG . END) represents an insertion which begins at |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5743 position BEG and ends at position END. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5744 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5745 An entry (TEXT . POSITION) represents the deletion of the string TEXT |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5746 from (abs POSITION). If POSITION is positive, point was at the front |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5747 of the text being deleted; if negative, point was at the end. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5748 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5749 An entry (t HIGH . LOW) indicates that the buffer previously had |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5750 \"unmodified\" status. HIGH and LOW are the high and low 16-bit portions |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5751 of the visited file's modification time, as of that time. If the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5752 modification time of the most recent save is different, this entry is |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5753 obsolete. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5754 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5755 An entry (nil PROPERTY VALUE BEG . END) indicates that a text property |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5756 was modified between BEG and END. PROPERTY is the property name, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5757 and VALUE is the old value. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5758 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5759 An entry (MARKER . DISTANCE) indicates that the marker MARKER |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5760 was adjusted in position by the offset DISTANCE (an integer). |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5761 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5762 An entry of the form POSITION indicates that point was at the buffer |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5763 location given by the integer. Undoing an entry of this form places |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5764 point at POSITION. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5765 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5766 nil marks undo boundaries. The undo command treats the changes |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5767 between two undo boundaries as a single step to be undone. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5768 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5769 If the value of the variable is t, undo information is not recorded. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5770 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5771 DEFVAR_PER_BUFFER ("mark-active", ¤t_buffer->mark_active, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5772 doc: /* Non-nil means the mark and region are currently active in this buffer. */); |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5773 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5774 DEFVAR_PER_BUFFER ("cache-long-line-scans", ¤t_buffer->cache_long_line_scans, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5775 doc: /* Non-nil means that Emacs should use caches to handle long lines more quickly. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5776 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5777 Normally, the line-motion functions work by scanning the buffer for |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5778 newlines. Columnar operations (like move-to-column and |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5779 compute-motion) also work by scanning the buffer, summing character |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5780 widths as they go. This works well for ordinary text, but if the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5781 buffer's lines are very long (say, more than 500 characters), these |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5782 motion functions will take longer to execute. Emacs may also take |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5783 longer to update the display. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5784 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5785 If cache-long-line-scans is non-nil, these motion functions cache the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5786 results of their scans, and consult the cache to avoid rescanning |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5787 regions of the buffer until the text is modified. The caches are most |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5788 beneficial when they prevent the most searching---that is, when the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5789 buffer contains long lines and large regions of characters with the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5790 same, fixed screen width. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5791 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5792 When cache-long-line-scans is non-nil, processing short lines will |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5793 become slightly slower (because of the overhead of consulting the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5794 cache), and the caches will use memory roughly proportional to the |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5795 number of newlines and characters whose screen width varies. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5796 |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5797 The caches require no explicit maintenance; their accuracy is |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5798 maintained internally by the Emacs primitives. Enabling or disabling |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5799 the cache should not affect the behavior of any of the motion |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5800 functions; it should only affect their performance. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5801 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5802 DEFVAR_PER_BUFFER ("point-before-scroll", ¤t_buffer->point_before_scroll, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5803 doc: /* Value of point before the last series of scroll operations, or nil. */); |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5804 |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5805 DEFVAR_PER_BUFFER ("buffer-file-format", ¤t_buffer->file_format, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5806 doc: /* List of formats to use when saving this buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5807 Formats are defined by `format-alist'. This variable is |
|
50304
d9d826db650f
(overlays_in): Declare static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50014
diff
changeset
|
5808 set when a file is visited. */); |
|
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
|
5809 |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
5810 DEFVAR_PER_BUFFER ("buffer-invisibility-spec", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5811 ¤t_buffer->invisibility_spec, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5812 doc: /* Invisibility spec of this buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5813 The default is t, which means that text is invisible |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5814 if it has a non-nil `invisible' property. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5815 If the value is a list, a text character is invisible if its `invisible' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5816 property is an element in that list. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5817 If an element is a cons cell of the form (PROP . ELLIPSIS), |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5818 then characters with property value PROP are invisible, |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5819 and they have an ellipsis as well if ELLIPSIS is non-nil. */); |
|
10967
b53b84b6f46d
(reset_buffer_local_variables): Init invisibility.
Richard M. Stallman <rms@gnu.org>
parents:
10916
diff
changeset
|
5820 |
|
17218
a57ca25e9c62
(reset_buffer): Initialize display_count slot.
Richard M. Stallman <rms@gnu.org>
parents:
17124
diff
changeset
|
5821 DEFVAR_PER_BUFFER ("buffer-display-count", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5822 ¤t_buffer->display_count, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5823 doc: /* A number incremented each time this buffer is displayed in a window. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5824 The function `set-window-buffer' increments it. */); |
|
22150
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
5825 |
|
b6edeb61a779
(syms_of_buffer): Set up Lisp variable buffer-display-time.
Richard M. Stallman <rms@gnu.org>
parents:
22023
diff
changeset
|
5826 DEFVAR_PER_BUFFER ("buffer-display-time", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5827 ¤t_buffer->display_time, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5828 doc: /* Time stamp updated each time this buffer is displayed in a window. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5829 The function `set-window-buffer' updates this variable |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5830 to the value obtained by calling `current-time'. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5831 If the buffer has never been shown in a window, the value is nil. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5832 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5833 DEFVAR_LISP ("transient-mark-mode", &Vtransient_mark_mode, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5834 doc: /* *Non-nil means deactivate the mark when the buffer contents change. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5835 Non-nil also enables highlighting of the region whenever the mark is active. |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5836 The variable `highlight-nonselected-windows' controls whether to highlight |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5837 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
|
5838 Vtransient_mark_mode = Qnil; |
|
a1ab3501653c
(reset_buffer_local_variables): Reset mark_active.
Richard M. Stallman <rms@gnu.org>
parents:
2020
diff
changeset
|
5839 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5840 DEFVAR_LISP ("inhibit-read-only", &Vinhibit_read_only, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5841 doc: /* *Non-nil means disregard read-only status of buffers or characters. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5842 If the value is t, disregard `buffer-read-only' and all `read-only' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5843 text properties. If the value is a list, disregard `buffer-read-only' |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5844 and disregard a `read-only' text property if the property value |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5845 is a member of the list. */); |
|
3481
56424e6245c2
(syms_of_buffer): Set up Lisp var inhibit-read-only.
Richard M. Stallman <rms@gnu.org>
parents:
3463
diff
changeset
|
5846 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
|
5847 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5848 DEFVAR_PER_BUFFER ("cursor-type", ¤t_buffer->cursor_type, Qnil, |
|
45421
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5849 doc: /* Cursor to use when this buffer is in the selected window. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5850 Values are interpreted as follows: |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5851 |
|
45421
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5852 t use the cursor specified for the frame |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5853 nil don't display a cursor |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5854 bar display a bar cursor with default width |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5855 (bar . WIDTH) display a bar cursor with width WIDTH |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5856 ANYTHING ELSE display a box cursor. |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5857 |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5858 When the buffer is displayed in a nonselected window, |
|
4c14a5806a68
(syms_of_buffer) <cursor-type>: Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
45393
diff
changeset
|
5859 this variable has no effect; the cursor appears as a hollow box. */); |
|
28322
986882bafaf1
(reset_buffer): Initialize buffer's cursor_type.
Gerd Moellmann <gerd@gnu.org>
parents:
28314
diff
changeset
|
5860 |
|
28688
3c44b2f54f82
(init_buffer_once): Handle extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents:
28636
diff
changeset
|
5861 DEFVAR_PER_BUFFER ("line-spacing", |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5862 ¤t_buffer->extra_line_spacing, Qnil, |
|
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5863 doc: /* Additional space to put between lines when displaying a buffer. |
|
39971
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5864 The space is measured in pixels, and put below lines on window systems. */); |
|
820d9cd6761a
Put doc strings in comments.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39802
diff
changeset
|
5865 |
|
39988
eac4e9ae201c
Change doc-string comments to `new style' [w/`doc:' keyword].
Miles Bader <miles@gnu.org>
parents:
39974
diff
changeset
|
5866 DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions, |
|
40108
6084dfa5f85d
Reindent DEFUNs and DEFVARs woth doc: keywords.
Pavel Jan?k <Pavel@Janik.cz>
parents:
39988
diff
changeset
|
5867 doc: /* List of functions called with no args to query before killing a buffer. */); |
|
6051
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
5868 Vkill_buffer_query_functions = Qnil; |
|
0b144d967f30
(Fkill_buffer): Call the Vkill_buffer_query_functions.
Richard M. Stallman <rms@gnu.org>
parents:
5904
diff
changeset
|
5869 |
|
14506
bddd8114eaa9
(Fbuffer_live_p): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14481
diff
changeset
|
5870 defsubr (&Sbuffer_live_p); |
| 333 | 5871 defsubr (&Sbuffer_list); |
| 5872 defsubr (&Sget_buffer); | |
| 5873 defsubr (&Sget_file_buffer); | |
| 5874 defsubr (&Sget_buffer_create); | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
5875 defsubr (&Smake_indirect_buffer); |
| 392 | 5876 defsubr (&Sgenerate_new_buffer_name); |
| 333 | 5877 defsubr (&Sbuffer_name); |
| 5878 /*defsubr (&Sbuffer_number);*/ | |
| 5879 defsubr (&Sbuffer_file_name); | |
|
10314
b5260fe3dfdd
(Fmake_indirect_buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents:
10253
diff
changeset
|
5880 defsubr (&Sbuffer_base_buffer); |
|
40725
a8af2e89346c
(Fbuffer_local_value): New function.
Richard M. Stallman <rms@gnu.org>
parents:
40656
diff
changeset
|
5881 defsubr (&Sbuffer_local_value); |
| 333 | 5882 defsubr (&Sbuffer_local_variables); |
| 5883 defsubr (&Sbuffer_modified_p); | |
| 5884 defsubr (&Sset_buffer_modified_p); | |
| 5885 defsubr (&Sbuffer_modified_tick); | |
| 5886 defsubr (&Srename_buffer); | |
| 5887 defsubr (&Sother_buffer); | |
| 5888 defsubr (&Sbuffer_disable_undo); | |
| 5889 defsubr (&Sbuffer_enable_undo); | |
| 5890 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
|
5891 defsubr (&Sset_buffer_major_mode); |
| 333 | 5892 defsubr (&Sswitch_to_buffer); |
| 5893 defsubr (&Spop_to_buffer); | |
| 5894 defsubr (&Scurrent_buffer); | |
| 5895 defsubr (&Sset_buffer); | |
| 5896 defsubr (&Sbarf_if_buffer_read_only); | |
| 5897 defsubr (&Sbury_buffer); | |
|
20679
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
5898 defsubr (&Serase_buffer); |
|
a9d566444dd4
(Fset_buffer_multibyte): New function.
Richard M. Stallman <rms@gnu.org>
parents:
20586
diff
changeset
|
5899 defsubr (&Sset_buffer_multibyte); |
| 333 | 5900 defsubr (&Skill_all_local_variables); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5901 |
|
2776
8bf3bb4c20dd
* lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents:
2722
diff
changeset
|
5902 defsubr (&Soverlayp); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5903 defsubr (&Smake_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5904 defsubr (&Sdelete_overlay); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5905 defsubr (&Smove_overlay); |
|
2787
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
5906 defsubr (&Soverlay_start); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
5907 defsubr (&Soverlay_end); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
5908 defsubr (&Soverlay_buffer); |
|
995c6e665599
* buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer,
Jim Blandy <jimb@redhat.com>
parents:
2776
diff
changeset
|
5909 defsubr (&Soverlay_properties); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5910 defsubr (&Soverlays_at); |
|
12382
63c03173db06
(overlays_in): New function.
Richard M. Stallman <rms@gnu.org>
parents:
12354
diff
changeset
|
5911 defsubr (&Soverlays_in); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5912 defsubr (&Snext_overlay_change); |
|
8967
80b92977ed08
(overlays_at): New arg PREV_PTR.
Richard M. Stallman <rms@gnu.org>
parents:
8924
diff
changeset
|
5913 defsubr (&Sprevious_overlay_change); |
|
2389
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5914 defsubr (&Soverlay_recenter); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5915 defsubr (&Soverlay_lists); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5916 defsubr (&Soverlay_get); |
|
6048be0eedcd
(init_buffer_once, reset_buffer):
Richard M. Stallman <rms@gnu.org>
parents:
2217
diff
changeset
|
5917 defsubr (&Soverlay_put); |
|
28518
5da961b04d97
(Frestore_buffer_modified_p): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
28417
diff
changeset
|
5918 defsubr (&Srestore_buffer_modified_p); |
| 333 | 5919 } |
| 5920 | |
| 21514 | 5921 void |
| 333 | 5922 keys_of_buffer () |
| 5923 { | |
| 5924 initial_define_key (control_x_map, 'b', "switch-to-buffer"); | |
| 5925 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
|
5926 |
|
2c5f3537a1cc
(syms_of_buffer): Don't do (put 'erase-buffer 'disabled t) here.
Roland McGrath <roland@gnu.org>
parents:
5502
diff
changeset
|
5927 /* 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
|
5928 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
|
5929 Fput (intern ("erase-buffer"), Qdisabled, Qt); |
| 333 | 5930 } |
| 52401 | 5931 |
| 5932 /* arch-tag: e48569bf-69a9-4b65-a23b-8e68769436e1 | |
| 5933 (do not change this comment) */ |
