annotate src/buffer.h @ 95765:bc86b276908a

Correct copyright years to reflect the original newsticker.el from which most of this code was extracted, not the year it was moved into this file. Header formatting fix.
author Glenn Morris <rgm@gnu.org>
date Tue, 10 Jun 2008 03:20:18 +0000
parents 29adfc9354e7
children 6a58401d4e31
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Header file for the buffer manipulation primitives.
64479
464cbb3faef9 (Fgenerate_new_buffer_name): Declare (for use in coding.c).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64084
diff changeset
2 Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78501
diff changeset
3 2002, 2003, 2004, 2005, 2006, 2007, 2008
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78501
diff changeset
4 Free Software Foundation, Inc.
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93111
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93111
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93111
diff changeset
11 (at your option) any later version.
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93111
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
22 /* Accessing the parameters of the current buffer. */
1286
fbd402838d8d * buffer.h: New macro TEMP_SET_PT. If intervals are used, SET_PT
Joseph Arceneaux <jla@gnu.org>
parents: 998
diff changeset
23
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
24 /* These macros come in pairs, one for the char position
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
25 and one for the byte position. */
1286
fbd402838d8d * buffer.h: New macro TEMP_SET_PT. If intervals are used, SET_PT
Joseph Arceneaux <jla@gnu.org>
parents: 998
diff changeset
26
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
27 /* Position of beginning of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
28 #define BEG (1)
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
29 #define BEG_BYTE (BEG)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
31 /* Position of beginning of accessible range of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
32 #define BEGV (current_buffer->begv)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
33 #define BEGV_BYTE (current_buffer->begv_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
35 /* Position of point in buffer. The "+ 0" makes this
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
36 not an l-value, so you can't assign to it. Use SET_PT instead. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
37 #define PT (current_buffer->pt + 0)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
38 #define PT_BYTE (current_buffer->pt_byte + 0)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
40 /* Position of gap in buffer. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
41 #define GPT (current_buffer->text->gpt)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
42 #define GPT_BYTE (current_buffer->text->gpt_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
44 /* Position of end of accessible range of buffer. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
45 #define ZV (current_buffer->zv)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
46 #define ZV_BYTE (current_buffer->zv_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
48 /* Position of end of buffer. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
49 #define Z (current_buffer->text->z)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
50 #define Z_BYTE (current_buffer->text->z_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
52 /* Macros for the addresses of places in the buffer. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
53
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
54 /* Address of beginning of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
55 #define BEG_ADDR (current_buffer->text->beg)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
56
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
57 /* Address of beginning of accessible range of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
58 #define BEGV_ADDR (BYTE_POS_ADDR (current_buffer->begv_byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
59
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
60 /* Address of point in buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
61 #define PT_ADDR (BYTE_POS_ADDR (current_buffer->pt_byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
62
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
63 /* Address of beginning of gap in buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
64 #define GPT_ADDR (current_buffer->text->beg + current_buffer->text->gpt_byte - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
65
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
66 /* Address of end of gap in buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
67 #define GAP_END_ADDR (current_buffer->text->beg + current_buffer->text->gpt_byte + current_buffer->text->gap_size - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
68
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
69 /* Address of end of accessible range of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
70 #define ZV_ADDR (BYTE_POS_ADDR (current_buffer->zv_byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
71
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
72 /* Address of end of buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
73 #define Z_ADDR (current_buffer->text->beg + current_buffer->text->gap_size + current_buffer->text->z_byte - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
74
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
75 /* Size of gap. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
76 #define GAP_SIZE (current_buffer->text->gap_size)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
77
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
78 /* Is the current buffer narrowed? */
2564
6fee7500fabd (BUF_NARROWED, NARROWED): New macros to test whether a region
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2390
diff changeset
79 #define NARROWED ((BEGV != BEG) || (ZV != Z))
6fee7500fabd (BUF_NARROWED, NARROWED): New macros to test whether a region
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2390
diff changeset
80
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 /* Modification count. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
82 #define MODIFF (current_buffer->text->modiff)
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
83
72592
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
84 /* Character modification count. */
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
85 #define CHARS_MODIFF (current_buffer->text->chars_modiff)
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
86
16190
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
87 /* Overlay modification count. */
16191
7397d7d0ed17 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 16190
diff changeset
88 #define OVERLAY_MODIFF (current_buffer->text->overlay_modiff)
16190
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
89
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
90 /* Modification count as of last visit or save. */
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
91 #define SAVE_MODIFF (current_buffer->text->save_modiff)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
93 /* BUFFER_CEILING_OF (resp. BUFFER_FLOOR_OF), when applied to n, return
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
94 the max (resp. min) p such that
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
95
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
96 BYTE_POS_ADDR (p) - BYTE_POS_ADDR (n) == p - n */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
98 #define BUFFER_CEILING_OF(BYTEPOS) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
99 (((BYTEPOS) < GPT_BYTE && GPT < ZV ? GPT_BYTE : ZV_BYTE) - 1)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
100 #define BUFFER_FLOOR_OF(BYTEPOS) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
101 (BEGV <= GPT && GPT_BYTE <= (BYTEPOS) ? GPT_BYTE : BEGV_BYTE)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
102
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
103 /* Similar macros to operate on a specified buffer.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
104 Note that many of these evaluate the buffer argument more than once. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
105
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
106 /* Position of beginning of buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
107 #define BUF_BEG(buf) (BEG)
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
108 #define BUF_BEG_BYTE(buf) (BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
109
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
110 /* Position of beginning of accessible range of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
111 #define BUF_BEGV(buf) ((buf)->begv)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
112 #define BUF_BEGV_BYTE(buf) ((buf)->begv_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
114 /* Position of point in buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
115 #define BUF_PT(buf) ((buf)->pt)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
116 #define BUF_PT_BYTE(buf) ((buf)->pt_byte)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
117
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
118 /* Position of gap in buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
119 #define BUF_GPT(buf) ((buf)->text->gpt)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
120 #define BUF_GPT_BYTE(buf) ((buf)->text->gpt_byte)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
121
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
122 /* Position of end of accessible range of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
123 #define BUF_ZV(buf) ((buf)->zv)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
124 #define BUF_ZV_BYTE(buf) ((buf)->zv_byte)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
126 /* Position of end of buffer. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
127 #define BUF_Z(buf) ((buf)->text->z)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
128 #define BUF_Z_BYTE(buf) ((buf)->text->z_byte)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
129
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
130 /* Address of beginning of buffer. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
131 #define BUF_BEG_ADDR(buf) ((buf)->text->beg)
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
132
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
133 /* Address of beginning of gap of buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
134 #define BUF_GPT_ADDR(buf) ((buf)->text->beg + (buf)->text->gpt_byte - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
135
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
136 /* Address of end of buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
137 #define BUF_Z_ADDR(buf) ((buf)->text->beg + (buf)->text->gap_size + (buf)->text->z_byte - BEG_BYTE)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 /* Address of end of gap in buffer. */
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
140 #define BUF_GAP_END_ADDR(buf) ((buf)->text->beg + (buf)->text->gpt_byte + (buf)->text->gap_size - BEG_BYTE)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 /* Size of gap. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
143 #define BUF_GAP_SIZE(buf) ((buf)->text->gap_size)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
145 /* Is this buffer narrowed? */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
146 #define BUF_NARROWED(buf) ((BUF_BEGV (buf) != BUF_BEG (buf)) \
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
147 || (BUF_ZV (buf) != BUF_Z (buf)))
2564
6fee7500fabd (BUF_NARROWED, NARROWED): New macros to test whether a region
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2390
diff changeset
148
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 /* Modification count. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
150 #define BUF_MODIFF(buf) ((buf)->text->modiff)
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
151
72592
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
152 /* Character modification count. */
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
153 #define BUF_CHARS_MODIFF(buf) ((buf)->text->chars_modiff)
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
154
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
155 /* Modification count as of last visit or save. */
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
156 #define BUF_SAVE_MODIFF(buf) ((buf)->text->save_modiff)
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
157
16190
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
158 /* Overlay modification count. */
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
159 #define BUF_OVERLAY_MODIFF(buf) ((buf)->text->overlay_modiff)
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
160
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
161 /* Interval tree of buffer. */
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
162 #define BUF_INTERVALS(buf) ((buf)->text->intervals)
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
163
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
164 /* Marker chain of buffer. */
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
165 #define BUF_MARKERS(buf) ((buf)->text->markers)
25369
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
166
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
167 #define BUF_UNCHANGED_MODIFIED(buf) \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
168 ((buf)->text->unchanged_modified)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
169
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
170 #define BUF_OVERLAY_UNCHANGED_MODIFIED(buf) \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
171 ((buf)->text->overlay_unchanged_modified)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
172 #define BUF_BEG_UNCHANGED(buf) ((buf)->text->beg_unchanged)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
173 #define BUF_END_UNCHANGED(buf) ((buf)->text->end_unchanged)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
174
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
175 #define UNCHANGED_MODIFIED \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
176 BUF_UNCHANGED_MODIFIED (current_buffer)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
177 #define OVERLAY_UNCHANGED_MODIFIED \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
178 BUF_OVERLAY_UNCHANGED_MODIFIED (current_buffer)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
179 #define BEG_UNCHANGED BUF_BEG_UNCHANGED (current_buffer)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
180 #define END_UNCHANGED BUF_END_UNCHANGED (current_buffer)
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
181
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
182 /* Compute how many characters at the top and bottom of BUF are
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
183 unchanged when the range START..END is modified. This computation
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
184 must be done each time BUF is modified. */
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
185
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
186 #define BUF_COMPUTE_UNCHANGED(buf, start, end) \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
187 do \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
188 { \
39320
4a21ecd55278 (BUF_COMPUTE_UNCHANGED): Use BUF_MODIFF and
Gerd Moellmann <gerd@gnu.org>
parents: 37753
diff changeset
189 if (BUF_UNCHANGED_MODIFIED (buf) == BUF_MODIFF (buf) \
4a21ecd55278 (BUF_COMPUTE_UNCHANGED): Use BUF_MODIFF and
Gerd Moellmann <gerd@gnu.org>
parents: 37753
diff changeset
190 && (BUF_OVERLAY_UNCHANGED_MODIFIED (buf) \
4a21ecd55278 (BUF_COMPUTE_UNCHANGED): Use BUF_MODIFF and
Gerd Moellmann <gerd@gnu.org>
parents: 37753
diff changeset
191 == BUF_OVERLAY_MODIFF (buf))) \
25369
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
192 { \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
193 BUF_BEG_UNCHANGED (buf) = (start) - BUF_BEG (buf); \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
194 BUF_END_UNCHANGED (buf) = BUF_Z (buf) - (end); \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
195 } \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
196 else \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
197 { \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
198 if (BUF_Z (buf) - (end) < BUF_END_UNCHANGED (buf)) \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
199 BUF_END_UNCHANGED (buf) = BUF_Z (buf) - (end); \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
200 if ((start) - BUF_BEG (buf) < BUF_BEG_UNCHANGED (buf)) \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
201 BUF_BEG_UNCHANGED (buf) = (start) - BUF_BEG (buf); \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
202 } \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
203 } \
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
204 while (0)
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
205
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
206
42644
7cc52563d4fd Comment fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42087
diff changeset
207 /* Macros to set PT in the current buffer, or another buffer. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208
93111
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
209 #define SET_PT(position) (set_point (position))
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
210 #define TEMP_SET_PT(position) (temp_set_point (current_buffer, (position)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
211
93111
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
212 #define SET_PT_BOTH(position, byte) (set_point_both (position, byte))
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
213 #define TEMP_SET_PT_BOTH(position, byte) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
214 (temp_set_point_both (current_buffer, (position), (byte)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
215
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
216 #define BUF_TEMP_SET_PT(buffer, position) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
217 (temp_set_point ((buffer), (position)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
218
93111
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
219 extern void set_point P_ ((EMACS_INT));
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
220 extern INLINE void temp_set_point P_ ((struct buffer *, EMACS_INT));
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
221 extern void set_point_both P_ ((EMACS_INT, EMACS_INT));
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
222 extern INLINE void temp_set_point_both P_ ((struct buffer *,
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
223 EMACS_INT, EMACS_INT));
f84051049637 * intervals.c (temp_set_point, temp_set_point_both): Use EMACS_INT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93110
diff changeset
224 extern void enlarge_buffer_text P_ ((struct buffer *, EMACS_INT));
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
225
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
226
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
227 /* Macros for setting the BEGV, ZV or PT of a given buffer.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
228
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
229 SET_BUF_PT* seet to be redundant. Get rid of them?
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
230
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
231 The ..._BOTH macros take both a charpos and a bytepos,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
232 which must correspond to each other.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
233
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
234 The macros without ..._BOTH take just a charpos,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
235 and compute the bytepos from it. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
236
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
237 #define SET_BUF_BEGV(buf, charpos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
238 ((buf)->begv_byte = buf_charpos_to_bytepos ((buf), (charpos)), \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
239 (buf)->begv = (charpos))
17023
78f7b873184b (BEGV_ADDR, PT_ADDR, ZV_ADDR): Use macro POS_ADDR.
Karl Heuer <kwzh@gnu.org>
parents: 16442
diff changeset
240
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
241 #define SET_BUF_ZV(buf, charpos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
242 ((buf)->zv_byte = buf_charpos_to_bytepos ((buf), (charpos)), \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
243 (buf)->zv = (charpos))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
244
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
245 #define SET_BUF_BEGV_BOTH(buf, charpos, byte) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
246 ((buf)->begv = (charpos), \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
247 (buf)->begv_byte = (byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
248
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
249 #define SET_BUF_ZV_BOTH(buf, charpos, byte) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
250 ((buf)->zv = (charpos), \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
251 (buf)->zv_byte = (byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
252
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
253 #define SET_BUF_PT_BOTH(buf, charpos, byte) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
254 ((buf)->pt = (charpos), \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
255 (buf)->pt_byte = (byte))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
256
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
257 /* Macros to access a character or byte in the current buffer,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
258 or convert between a byte position and an address.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
259 These macros do not check that the position is in range. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
260
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
261 /* Access a Lisp position value in POS,
31219
591a215915ca Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 30910
diff changeset
262 and store the charpos in CHARPOS and the bytepos in BYTEPOS. */
17023
78f7b873184b (BEGV_ADDR, PT_ADDR, ZV_ADDR): Use macro POS_ADDR.
Karl Heuer <kwzh@gnu.org>
parents: 16442
diff changeset
263
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
264 #define DECODE_POSITION(charpos, bytepos, pos) \
91617
431b8edb4f39 Use "do...while (0)", not "if (1)..else" in macro definitions.
Jan Djärv <jan.h.d@swipnet.se>
parents: 91327
diff changeset
265 do \
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
266 { \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
267 Lisp_Object __pos = (pos); \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
268 if (NUMBERP (__pos)) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
269 { \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
270 charpos = __pos; \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
271 bytepos = buf_charpos_to_bytepos (current_buffer, __pos); \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
272 } \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
273 else if (MARKERP (__pos)) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
274 { \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
275 charpos = marker_position (__pos); \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
276 bytepos = marker_byte_position (__pos); \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
277 } \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
278 else \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
279 wrong_type_argument (Qinteger_or_marker_p, __pos); \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
280 } \
91617
431b8edb4f39 Use "do...while (0)", not "if (1)..else" in macro definitions.
Jan Djärv <jan.h.d@swipnet.se>
parents: 91327
diff changeset
281 while (0)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
282
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
283 /* Return the address of byte position N in current buffer. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
284
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
285 #define BYTE_POS_ADDR(n) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
286 (((n) >= GPT_BYTE ? GAP_SIZE : 0) + (n) + BEG_ADDR - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
287
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
288 /* Return the address of char position N. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
289
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
290 #define CHAR_POS_ADDR(n) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
291 (((n) >= GPT ? GAP_SIZE : 0) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
292 + buf_charpos_to_bytepos (current_buffer, n) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
293 + BEG_ADDR - BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
294
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
295 /* Convert a character position to a byte position. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
296
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
297 #define CHAR_TO_BYTE(charpos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
298 (buf_charpos_to_bytepos (current_buffer, charpos))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
299
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
300 /* Convert a byte position to a character position. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
301
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
302 #define BYTE_TO_CHAR(bytepos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
303 (buf_bytepos_to_charpos (current_buffer, bytepos))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
304
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
305 /* Convert PTR, the address of a byte in the buffer, into a byte position. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
307 #define PTR_BYTE_POS(ptr) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
308 ((ptr) - (current_buffer)->text->beg \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
309 - (ptr - (current_buffer)->text->beg <= (unsigned) (GPT_BYTE - BEG_BYTE) ? 0 : GAP_SIZE) \
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
310 + BEG_BYTE)
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
311
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
312 /* Return character at position POS. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
313
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
314 #define FETCH_CHAR(pos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
315 (!NILP (current_buffer->enable_multibyte_characters) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
316 ? FETCH_MULTIBYTE_CHAR ((pos)) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
317 : FETCH_BYTE ((pos)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
318
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
319 /* Return the byte at byte position N. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
320
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
321 #define FETCH_BYTE(n) *(BYTE_POS_ADDR ((n)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
322
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
323 /* Variables used locally in FETCH_MULTIBYTE_CHAR. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
324 extern unsigned char *_fetch_multibyte_char_p;
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
325
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
326 /* Return character code of multi-byte form at position POS. If POS
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
327 doesn't point the head of valid multi-byte form, only the byte at
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
328 POS is returned. No range checking. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
330 #define FETCH_MULTIBYTE_CHAR(pos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
331 (_fetch_multibyte_char_p = (((pos) >= GPT_BYTE ? GAP_SIZE : 0) \
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89019
diff changeset
332 + (pos) + BEG_ADDR - BEG_BYTE), \
89019
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
333 STRING_CHAR (_fetch_multibyte_char_p, 0))
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
334
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
335 /* Return character at position POS. If the current buffer is unibyte
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
336 and the character is not ASCII, make the returning character
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
337 multibyte. */
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
338
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
339 #define FETCH_CHAR_AS_MULTIBYTE(pos) \
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
340 (!NILP (current_buffer->enable_multibyte_characters) \
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
341 ? FETCH_MULTIBYTE_CHAR ((pos)) \
91696
31222e6bb42e (FETCH_CHAR_AS_MULTIBYTE): Use unibyte_to_multibyte_table instead of
Eli Zaretskii <eliz@gnu.org>
parents: 91617
diff changeset
342 : unibyte_to_multibyte_table[(FETCH_BYTE ((pos)))])
89019
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
343
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
344
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
345 /* Macros for accessing a character or byte,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
346 or converting between byte positions and addresses,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
347 in a specified buffer. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
348
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
349 /* Return the address of character at byte position POS in buffer BUF.
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 Note that both arguments can be computed more than once. */
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
351
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
352 #define BUF_BYTE_ADDRESS(buf, pos) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
353 ((buf)->text->beg + (pos) - BEG_BYTE \
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
354 + ((pos) >= (buf)->text->gpt_byte ? (buf)->text->gap_size : 0))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
355
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
356 /* Return the address of character at char position POS in buffer BUF.
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
357 Note that both arguments can be computed more than once. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
358
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 #define BUF_CHAR_ADDRESS(buf, pos) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
360 ((buf)->text->beg + buf_charpos_to_bytepos ((buf), (pos)) - BEG_BYTE \
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
361 + ((pos) >= (buf)->text->gpt ? (buf)->text->gap_size : 0))
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
363 /* Convert PTR, the address of a char in buffer BUF,
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
364 into a character position. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
365
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
366 #define BUF_PTR_BYTE_POS(buf, ptr) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
367 ((ptr) - (buf)->text->beg \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
368 - (ptr - (buf)->text->beg <= (unsigned) (BUF_GPT_BYTE ((buf)) - BEG_BYTE)\
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
369 ? 0 : BUF_GAP_SIZE ((buf))) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
370 + BEG_BYTE)
8061
ce94573db44d (BUF_PTR_CHAR_POS): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
371
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
372 /* Return the character at byte position POS in buffer BUF. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
373
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
374 #define BUF_FETCH_CHAR(buf, pos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
375 (!NILP (buf->enable_multibyte_characters) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
376 ? BUF_FETCH_MULTIBYTE_CHAR ((buf), (pos)) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
377 : BUF_FETCH_BYTE ((buf), (pos)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
378
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
379 /* Return the byte at byte position N in buffer BUF. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
380
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
381 #define BUF_FETCH_BYTE(buf, n) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
382 *(BUF_BYTE_ADDRESS ((buf), (n)))
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
383
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
384 /* Return character code of multi-byte form at byte position POS in BUF.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
385 If POS doesn't point the head of valid multi-byte form, only the byte at
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
386 POS is returned. No range checking. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
387
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
388 #define BUF_FETCH_MULTIBYTE_CHAR(buf, pos) \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
389 (_fetch_multibyte_char_p \
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
390 = (((pos) >= BUF_GPT_BYTE (buf) ? BUF_GAP_SIZE (buf) : 0) \
50627
4135e9f40991 Don't hardcode BEG==1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49600
diff changeset
391 + (pos) + BUF_BEG_ADDR (buf) - BEG_BYTE), \
89019
0df387138bce (_fetch_multibyte_char_len): Extern deleted.
Kenichi Handa <handa@m17n.org>
parents: 88355
diff changeset
392 STRING_CHAR (_fetch_multibyte_char_p, 0))
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
394 /* Define the actual buffer data structures. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
395
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
396 /* This data structure describes the actual text contents of a buffer.
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
397 It is shared between indirect buffers and their base buffer. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
398
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 struct buffer_text
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 {
26486
b16a6381a87b (struct buffer_text): Add comment about moving
Gerd Moellmann <gerd@gnu.org>
parents: 26404
diff changeset
401 /* Actual address of buffer contents. If REL_ALLOC is defined,
b16a6381a87b (struct buffer_text): Add comment about moving
Gerd Moellmann <gerd@gnu.org>
parents: 26404
diff changeset
402 this address might change when blocks are relocated which can
b16a6381a87b (struct buffer_text): Add comment about moving
Gerd Moellmann <gerd@gnu.org>
parents: 26404
diff changeset
403 e.g. happen when malloc is called. So, don't pass a pointer
b16a6381a87b (struct buffer_text): Add comment about moving
Gerd Moellmann <gerd@gnu.org>
parents: 26404
diff changeset
404 into a buffer's text to functions that malloc. */
b16a6381a87b (struct buffer_text): Add comment about moving
Gerd Moellmann <gerd@gnu.org>
parents: 26404
diff changeset
405 unsigned char *beg;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
406
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
407 EMACS_INT gpt; /* Char pos of gap in buffer. */
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
408 EMACS_INT z; /* Char pos of end of buffer. */
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
409 EMACS_INT gpt_byte; /* Byte pos of gap in buffer. */
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
410 EMACS_INT z_byte; /* Byte pos of end of buffer. */
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
411 EMACS_INT gap_size; /* Size of buffer's gap. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 int modiff; /* This counts buffer-modification events
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 for this buffer. It is incremented for
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 each such event, and never otherwise
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 changed. */
72592
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
416 int chars_modiff; /* This is modified with character change
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
417 events for this buffer. It is set to
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
418 modiff for each such event, and never
f6de516bbb4b * buffer.h (struct buffer_text): New field chars_modiff.
Chong Yidong <cyd@stupidchicken.com>
parents: 72005
diff changeset
419 otherwise changed. */
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
420 int save_modiff; /* Previous value of modiff, as of last
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
421 time buffer visited or saved a file. */
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
422
16190
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
423 int overlay_modiff; /* Counts modifications to overlays. */
45a956359a95 (struct buffer): New field overlay_modiff.
Richard M. Stallman <rms@gnu.org>
parents: 16066
diff changeset
424
25369
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
425 /* Minimum value of GPT - BEG since last redisplay that finished. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
426 EMACS_INT beg_unchanged;
25369
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
427
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
428 /* Minimum value of Z - GPT since last redisplay that finished. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
429 EMACS_INT end_unchanged;
25369
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
430
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
431 /* MODIFF as of last redisplay that finished; if it matches MODIFF,
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
432 beg_unchanged and end_unchanged contain no useful information. */
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
433 int unchanged_modified;
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
434
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
435 /* BUF_OVERLAY_MODIFF of current buffer, as of last redisplay that
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
436 finished; if it matches BUF_OVERLAY_MODIFF, beg_unchanged and
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
437 end_unchanged contain no useful information. */
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
438 int overlay_unchanged_modified;
7b65011c5136 (BUF_COMPUTE_UNCHANGED): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25351
diff changeset
439
30910
3fb31847c03a Avoid DECLARE_INTERVALS.
Dave Love <fx@gnu.org>
parents: 30696
diff changeset
440 /* Properties of this buffer's text. */
3fb31847c03a Avoid DECLARE_INTERVALS.
Dave Love <fx@gnu.org>
parents: 30696
diff changeset
441 INTERVAL intervals;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
442
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
443 /* The markers that refer to this buffer.
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
444 This is actually a single marker ---
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
445 successive elements in its marker `chain'
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
446 are the other markers referring to this buffer. */
51667
52d50e52438f (struct buffer_text): Lisp_Object `markers' => Lisp_Marker.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51191
diff changeset
447 struct Lisp_Marker *markers;
90773
19c4543f1154 (struct buffer_text): New member inhibit_shrinking.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
448
19c4543f1154 (struct buffer_text): New member inhibit_shrinking.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
449 /* Usually 0. Temporarily set to 1 in decode_coding_gap to
19c4543f1154 (struct buffer_text): New member inhibit_shrinking.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
450 prevent Fgarbage_collect from shrinking the gap and loosing
19c4543f1154 (struct buffer_text): New member inhibit_shrinking.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
451 not-yet-decoded bytes. */
19c4543f1154 (struct buffer_text): New member inhibit_shrinking.
Kenichi Handa <handa@m17n.org>
parents: 90737
diff changeset
452 int inhibit_shrinking;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 };
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454
20553
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
455 /* This is the structure that the buffer Lisp object points to. */
a49deda9f5e6 (DECODE_POSITION): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 20304
diff changeset
456
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 struct buffer
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
458 {
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
459 /* Everything before the `name' slot must be of a non-Lisp_Object type,
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
460 and every slot after `name' must be a Lisp_Object.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
461
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
462 Check out mark_buffer (alloc.c) to see why. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463
85022
96eb42c9e0e3 * window.h (struct window):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78501
diff changeset
464 EMACS_UINT size;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
466 /* Next buffer, in chain of all buffers including killed buffers.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
467 This chain is used only for garbage collection, in order to
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
468 collect killed buffers properly.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
469 Note that vectors and most pseudovectors are all on one chain,
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
470 but buffers are on a separate chain of their own. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
471 struct buffer *next;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
472
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
473 /* This structure holds the coordinates of the buffer contents
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
474 in ordinary buffers. In indirect buffers, this is not used. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
475 struct buffer_text own_text;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
476
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
477 /* This points to the `struct buffer_text' that used for this buffer.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
478 In an ordinary buffer, this is the own_text field above.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
479 In an indirect buffer, this is the own_text field of another buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
480 struct buffer_text *text;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
481
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
482 /* Char position of point in buffer. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
483 EMACS_INT pt;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
484 /* Byte position of point in buffer. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
485 EMACS_INT pt_byte;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
486 /* Char position of beginning of accessible range. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
487 EMACS_INT begv;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
488 /* Byte position of beginning of accessible range. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
489 EMACS_INT begv_byte;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
490 /* Char position of end of accessible range. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
491 EMACS_INT zv;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
492 /* Byte position of end of accessible range. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
493 EMACS_INT zv_byte;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
494
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
495 /* In an indirect buffer, this points to the base buffer.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
496 In an ordinary buffer, it is 0. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
497 struct buffer *base_buffer;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
498
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
499 /* A non-zero value in slot IDX means that per-buffer variable
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
500 with index IDX has a local value in this buffer. The index IDX
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
501 for a buffer-local variable is stored in that variable's slot
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
502 in buffer_local_flags as a Lisp integer. If the index is -1,
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
503 this means the variable is always local in all buffers. */
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
504 #define MAX_PER_BUFFER_VARS 50
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
505 char local_flags[MAX_PER_BUFFER_VARS];
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
506
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
507 /* Set to the modtime of the visited file when read or written.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
508 -1 means visited file was nonexistent.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
509 0 means visited file modtime unknown; in no case complain
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
510 about any mismatch on next save attempt. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
511 int modtime;
42087
32f317cd7f01 (struct buffer): New field `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents: 40740
diff changeset
512 /* The value of text->modiff at the last auto-save. */
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
513 int auto_save_modified;
42087
32f317cd7f01 (struct buffer): New field `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents: 40740
diff changeset
514 /* The value of text->modiff at the last display error.
32f317cd7f01 (struct buffer): New field `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents: 40740
diff changeset
515 Redisplay of this buffer is inhibited until it changes again. */
32f317cd7f01 (struct buffer): New field `display_error_modiff'.
Richard M. Stallman <rms@gnu.org>
parents: 40740
diff changeset
516 int display_error_modiff;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
517 /* The time at which we detected a failure to auto-save,
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
518 Or -1 if we didn't have a failure. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
519 int auto_save_failure_time;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
520 /* Position in buffer at which display started
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
521 the last time this buffer was displayed. */
51854
f8d1f1c48e3e (struct buffer_text, struct buffer): Use EMACS_INT for
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51834
diff changeset
522 EMACS_INT last_window_start;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
524 /* Set nonzero whenever the narrowing is changed in this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
525 int clip_changed;
12471
a188da6410e4 (struct buffer): New field clip_changed.
Richard M. Stallman <rms@gnu.org>
parents: 11681
diff changeset
526
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
527 /* If the long line scan cache is enabled (i.e. the buffer-local
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
528 variable cache-long-line-scans is non-nil), newline_cache
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
529 points to the newline cache, and width_run_cache points to the
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
530 width run cache.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
531
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
532 The newline cache records which stretches of the buffer are
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
533 known *not* to contain newlines, so that they can be skipped
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
534 quickly when we search for newlines.
9404
698990d4feca * buffer.h (struct buffer): New members: newline_cache,
Jim Blandy <jimb@redhat.com>
parents: 8847
diff changeset
535
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
536 The width run cache records which stretches of the buffer are
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
537 known to contain characters whose widths are all the same. If
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
538 the width run cache maps a character to a value > 0, that value is
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
539 the character's width; if it maps a character to zero, we don't
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
540 know what its width is. This allows compute_motion to process
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
541 such regions very quickly, using algebra instead of inspecting
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
542 each character. See also width_table, below. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
543 struct region_cache *newline_cache;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
544 struct region_cache *width_run_cache;
9404
698990d4feca * buffer.h (struct buffer): New members: newline_cache,
Jim Blandy <jimb@redhat.com>
parents: 8847
diff changeset
545
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
546 /* Non-zero means don't use redisplay optimizations for
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
547 displaying this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
548 unsigned prevent_redisplay_optimizations_p : 1;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549
51834
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
550 /* List of overlays that end at or before the current center,
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
551 in order of end-position. */
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
552 struct Lisp_Overlay *overlays_before;
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
553
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
554 /* List of overlays that end after the current center,
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
555 in order of start-position. */
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
556 struct Lisp_Overlay *overlays_after;
a8777e8d1b68 (struct buffer): Change overlays_before and overlays_after
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51821
diff changeset
557
51821
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
558 /* Position where the overlay lists are centered. */
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
559 EMACS_INT overlay_center;
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
560
91779
b4aeed11a1d7 (struct buffer): Comment fix to clarify the status of Lisp fields.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91696
diff changeset
561 /* Everything from here down must be a Lisp_Object. */
b4aeed11a1d7 (struct buffer): Comment fix to clarify the status of Lisp fields.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91696
diff changeset
562 /* buffer-local Lisp variables start at `undo_list',
b4aeed11a1d7 (struct buffer): Comment fix to clarify the status of Lisp fields.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91696
diff changeset
563 tho only the ones from `name' on are GC'd normally. */
b4aeed11a1d7 (struct buffer): Comment fix to clarify the status of Lisp fields.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91696
diff changeset
564
86164
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
565 /* Changes in the buffer are recorded here for undo.
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
566 t means don't record anything.
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
567 This information belongs to the base buffer of an indirect buffer,
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
568 But we can't store it in the struct buffer_text
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
569 because local variables have to be right in the struct buffer.
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
570 So we copy it around in set_buffer_internal.
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
571 This comes before `name' because it is marked in a special way. */
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
572 Lisp_Object undo_list;
e509314f0d59 (struct buffer): Move `undo_list' back to before `name'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85022
diff changeset
573
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
574 /* The name of this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
575 Lisp_Object name;
25019
c5eb87f3571e Add top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents: 23398
diff changeset
576
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
577 /* The name of the file visited in this buffer, or nil. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
578 Lisp_Object filename;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
579 /* Dir for expanding relative file names. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
580 Lisp_Object directory;
78501
1677cf1c2509 Replace `iff' in comments.
Glenn Morris <rgm@gnu.org>
parents: 78260
diff changeset
581 /* True if this buffer has been backed up (if you write to the
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
582 visited file and it hasn't been backed up, then a backup will
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
583 be made). */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
584 /* This isn't really used by the C code, so could be deleted. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
585 Lisp_Object backed_up;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
586 /* Length of file when last read or saved.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
587 This is not in the struct buffer_text
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
588 because it's not used in indirect buffers at all. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
589 Lisp_Object save_length;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
590 /* File name used for auto-saving this buffer.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
591 This is not in the struct buffer_text
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
592 because it's not used in indirect buffers at all. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
593 Lisp_Object auto_save_file_name;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
594
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
595 /* Non-nil if buffer read-only. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
596 Lisp_Object read_only;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
597 /* "The mark". This is a marker which may
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
598 point into this buffer or may point nowhere. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
599 Lisp_Object mark;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
600
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
601 /* Alist of elements (SYMBOL . VALUE-IN-THIS-BUFFER)
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
602 for all per-buffer variables of this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
603 Lisp_Object local_var_alist;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
604
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
605 /* Symbol naming major mode (eg, lisp-mode). */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
606 Lisp_Object major_mode;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
607 /* Pretty name of major mode (eg, "Lisp"). */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
608 Lisp_Object mode_name;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
609 /* Mode line element that controls format of mode line. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
610 Lisp_Object mode_line_format;
47859
f15b9906481d (struct buffer): Move `undo_list' down below `name'.
Richard M. Stallman <rms@gnu.org>
parents: 42644
diff changeset
611
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
612 /* Analogous to mode_line_format for the line displayed at the top
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
613 of windows. Nil means don't display that line. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
614 Lisp_Object header_line_format;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
615
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
616 /* Keys that are bound local to this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
617 Lisp_Object keymap;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
618 /* This buffer's local abbrev table. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
619 Lisp_Object abbrev_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
620 /* This buffer's syntax table. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
621 Lisp_Object syntax_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
622 /* This buffer's category table. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
623 Lisp_Object category_table;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624
42644
7cc52563d4fd Comment fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42087
diff changeset
625 /* Values of several buffer-local variables. */
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
626 /* tab-width is buffer-local so that redisplay can find it
42644
7cc52563d4fd Comment fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42087
diff changeset
627 in buffers that are not current. */
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
628 Lisp_Object case_fold_search;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
629 Lisp_Object tab_width;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
630 Lisp_Object fill_column;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
631 Lisp_Object left_margin;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
632 /* Function to call when insert space past fill column. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
633 Lisp_Object auto_fill_function;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
634 /* nil: text, t: binary.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
635 This value is meaningful only on certain operating systems. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
636 /* Actually, we don't need this flag any more because end-of-line
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
637 is handled correctly according to the buffer-file-coding-system
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
638 of the buffer. Just keeping it for backward compatibility. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
639 Lisp_Object buffer_file_type;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
641 /* Case table for case-conversion in this buffer.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
642 This char-table maps each char into its lower-case version. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
643 Lisp_Object downcase_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
644 /* Char-table mapping each char to its upper-case version. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
645 Lisp_Object upcase_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
646 /* Char-table for conversion for case-folding search. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
647 Lisp_Object case_canon_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
648 /* Char-table of equivalences for case-folding search. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
649 Lisp_Object case_eqv_table;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
651 /* Non-nil means do not display continuation lines. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
652 Lisp_Object truncate_lines;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
653 /* Non-nil means display ctl chars with uparrow. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
654 Lisp_Object ctl_arrow;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
655 /* Non-nil means display text from right to left. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
656 Lisp_Object direction_reversed;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
657 /* Non-nil means do selective display;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
658 see doc string in syms_of_buffer (buffer.c) for details. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
659 Lisp_Object selective_display;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 #ifndef old
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
661 /* Non-nil means show ... at end of line followed by invisible lines. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
662 Lisp_Object selective_display_ellipses;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 #endif
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
664 /* Alist of (FUNCTION . STRING) for each minor mode enabled in buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
665 Lisp_Object minor_modes;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
666 /* t if "self-insertion" should overwrite; `binary' if it should also
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
667 overwrite newlines and tabs - for editing executables and the like. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
668 Lisp_Object overwrite_mode;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
669 /* non-nil means abbrev mode is on. Expand abbrevs automatically. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
670 Lisp_Object abbrev_mode;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
671 /* Display table to use for text in this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
672 Lisp_Object display_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
673 /* t means the mark and region are currently active. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
674 Lisp_Object mark_active;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
675
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
676 /* Non-nil means the buffer contents are regarded as multi-byte
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
677 form of characters, not a binary code. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
678 Lisp_Object enable_multibyte_characters;
9404
698990d4feca * buffer.h (struct buffer): New members: newline_cache,
Jim Blandy <jimb@redhat.com>
parents: 8847
diff changeset
679
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
680 /* Coding system to be used for encoding the buffer contents on
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
681 saving. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
682 Lisp_Object buffer_file_coding_system;
17023
78f7b873184b (BEGV_ADDR, PT_ADDR, ZV_ADDR): Use macro POS_ADDR.
Karl Heuer <kwzh@gnu.org>
parents: 16442
diff changeset
683
42644
7cc52563d4fd Comment fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 42087
diff changeset
684 /* List of symbols naming the file format used for visited file. */
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
685 Lisp_Object file_format;
18179
371736608f2f (struct buffer): New member buffer_file_coding_system.
Kenichi Handa <handa@m17n.org>
parents: 17219
diff changeset
686
56975
ef6ff15b0458 (struct buffer): Add auto_save_file_format field.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56135
diff changeset
687 /* List of symbols naming the file format used for auto-save file. */
ef6ff15b0458 (struct buffer): Add auto_save_file_format field.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56135
diff changeset
688 Lisp_Object auto_save_file_format;
ef6ff15b0458 (struct buffer): Add auto_save_file_format field.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56135
diff changeset
689
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
690 /* True if the newline position cache and width run cache are
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
691 enabled. See search.c and indent.c. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
692 Lisp_Object cache_long_line_scans;
9404
698990d4feca * buffer.h (struct buffer): New members: newline_cache,
Jim Blandy <jimb@redhat.com>
parents: 8847
diff changeset
693
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
694 /* If the width run cache is enabled, this table contains the
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
695 character widths width_run_cache (see above) assumes. When we
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
696 do a thorough redisplay, we compare this against the buffer's
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
697 current display table to see whether the display table has
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
698 affected the widths of any characters. If it has, we
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
699 invalidate the width run cache, and re-initialize width_table. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
700 Lisp_Object width_table;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
701
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
702 /* In an indirect buffer, or a buffer that is the base of an
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
703 indirect buffer, this holds a marker that records
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
704 PT for this buffer when the buffer is not current. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
705 Lisp_Object pt_marker;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
706
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
707 /* In an indirect buffer, or a buffer that is the base of an
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
708 indirect buffer, this holds a marker that records
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
709 BEGV for this buffer when the buffer is not current. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
710 Lisp_Object begv_marker;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
711
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
712 /* In an indirect buffer, or a buffer that is the base of an
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
713 indirect buffer, this holds a marker that records
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
714 ZV for this buffer when the buffer is not current. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
715 Lisp_Object zv_marker;
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
716
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
717 /* This holds the point value before the last scroll operation.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
718 Explicitly setting point sets this to nil. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
719 Lisp_Object point_before_scroll;
10562
ddc863fd062b (struct buffer): New field point_before_scroll.
Richard M. Stallman <rms@gnu.org>
parents: 10310
diff changeset
720
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
721 /* Truename of the visited file, or nil. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
722 Lisp_Object file_truename;
10750
7bf07f10bed3 (struct buffer): New field file_truename.
Richard M. Stallman <rms@gnu.org>
parents: 10562
diff changeset
723
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
724 /* Invisibility spec of this buffer.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
725 t => any non-nil `invisible' property means invisible.
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
726 A list => `invisible' property means invisible
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
727 if it is memq in that list. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
728 Lisp_Object invisibility_spec;
10966
e55f4cc120b6 (struct buffer): New field `invisibility_spec'.
Richard M. Stallman <rms@gnu.org>
parents: 10750
diff changeset
729
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
730 /* This is the last window that was selected with this buffer in it,
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
731 or nil if that window no longer displays this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
732 Lisp_Object last_selected_window;
16066
2f421cfff6cc (strict buffer): New slot last_selected_window.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
733
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
734 /* Incremented each time the buffer is displayed in a window. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
735 Lisp_Object display_count;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
736
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
737 /* Widths of left and right marginal areas for windows displaying
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
738 this buffer. */
51191
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
739 Lisp_Object left_margin_cols, right_margin_cols;
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
740
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
741 /* Widths of left and right fringe areas for windows displaying
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
742 this buffer. */
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
743 Lisp_Object left_fringe_width, right_fringe_width;
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
744
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
745 /* Non-nil means fringes are drawn outside display margins;
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
746 othersize draw them between margin areas and text. */
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
747 Lisp_Object fringes_outside_margins;
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
748
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
749 /* Width and type of scroll bar areas for windows displaying
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
750 this buffer. */
6a9e67f99d23 (struct buffer): Rename members measured in columns:
Kim F. Storm <storm@cua.dk>
parents: 50627
diff changeset
751 Lisp_Object scroll_bar_width, vertical_scroll_bar_type;
25019
c5eb87f3571e Add top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents: 23398
diff changeset
752
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
753 /* Non-nil means indicate lines not displaying text (in a style
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
754 like vi). */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
755 Lisp_Object indicate_empty_lines;
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
756
53603
c7c62631959b (struct buffer): New member indicate_buffer_boundaries.
Kim F. Storm <storm@cua.dk>
parents: 53362
diff changeset
757 /* Non-nil means indicate buffer boundaries and scrolling. */
c7c62631959b (struct buffer): New member indicate_buffer_boundaries.
Kim F. Storm <storm@cua.dk>
parents: 53362
diff changeset
758 Lisp_Object indicate_buffer_boundaries;
c7c62631959b (struct buffer): New member indicate_buffer_boundaries.
Kim F. Storm <storm@cua.dk>
parents: 53362
diff changeset
759
69048
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
760 /* Logical to physical fringe bitmap mappings. */
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
761 Lisp_Object fringe_indicator_alist;
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
762
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
763 /* Logical to physical cursor bitmap mappings. */
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
764 Lisp_Object fringe_cursor_alist;
7e644ce20468 (struct buffer): New members fringe_indicator_alist and
Kim F. Storm <storm@cua.dk>
parents: 68651
diff changeset
765
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
766 /* Time stamp updated each time this buffer is displayed in a window. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
767 Lisp_Object display_time;
25019
c5eb87f3571e Add top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents: 23398
diff changeset
768
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
769 /* If scrolling the display because point is below the bottom of a
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
770 window showing this buffer, try to choose a window start so
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
771 that point ends up this number of lines from the top of the
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
772 window. Nil means that scrolling method isn't used. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
773 Lisp_Object scroll_up_aggressively;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47859
diff changeset
774
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
775 /* If scrolling the display because point is above the top of a
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
776 window showing this buffer, try to choose a window start so
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
777 that point ends up this number of lines from the bottom of the
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
778 window. Nil means that scrolling method isn't used. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
779 Lisp_Object scroll_down_aggressively;
25019
c5eb87f3571e Add top_line_format.
Gerd Moellmann <gerd@gnu.org>
parents: 23398
diff changeset
780
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
781 /* Desired cursor type in this buffer. See the doc string of
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
782 per-buffer variable `cursor-type'. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
783 Lisp_Object cursor_type;
28345
7d1e7bfa5ae1 (struct buffer): Add cursor_type.
Gerd Moellmann <gerd@gnu.org>
parents: 28317
diff changeset
784
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
785 /* An integer > 0 means put that number of pixels below text lines
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
786 in the display of this buffer. */
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
787 Lisp_Object extra_line_spacing;
62029
12d1ea96b466 (struct buffer): Add cursor_in_non_selected_windows slot.
Richard M. Stallman <rms@gnu.org>
parents: 56975
diff changeset
788
12d1ea96b466 (struct buffer): Add cursor_in_non_selected_windows slot.
Richard M. Stallman <rms@gnu.org>
parents: 56975
diff changeset
789 /* *Cursor type to display in non-selected windows.
12d1ea96b466 (struct buffer): Add cursor_in_non_selected_windows slot.
Richard M. Stallman <rms@gnu.org>
parents: 56975
diff changeset
790 t means to use hollow box cursor.
12d1ea96b466 (struct buffer): Add cursor_in_non_selected_windows slot.
Richard M. Stallman <rms@gnu.org>
parents: 56975
diff changeset
791 See `cursor-type' for other values. */
12d1ea96b466 (struct buffer): Add cursor_in_non_selected_windows slot.
Richard M. Stallman <rms@gnu.org>
parents: 56975
diff changeset
792 Lisp_Object cursor_in_non_selected_windows;
28687
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
793 };
fd361114073d (struct buffer): Add extra_line_spacing, remove extra2
Gerd Moellmann <gerd@gnu.org>
parents: 28350
diff changeset
794
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
795
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
796 /* This points to the current buffer. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 extern struct buffer *current_buffer;
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
800 /* This structure holds the default values of the buffer-local variables
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
801 that have special slots in each buffer.
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
802 The default value occupies the same slot in this structure
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 as an individual buffer's value occupies in that buffer.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
804 Setting the default value also goes through the alist of buffers
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 and stores into each buffer that does not say it has a local value. */
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 extern struct buffer buffer_defaults;
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
809 /* This structure marks which slots in a buffer have corresponding
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
810 default values in buffer_defaults.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
811 Each such slot has a nonzero value in this structure.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
812 The value has only one nonzero bit.
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 When a buffer has its own local value for a slot,
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
815 the entry for that slot (found in the same slot in this structure)
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
816 is turned on in the buffer's local_flags array.
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 If a slot in this structure is zero, then even though there may
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
819 be a Lisp-level local variable for the slot, it has no default value,
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 and the corresponding slot in buffer_defaults is not used. */
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
821
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 extern struct buffer buffer_local_flags;
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
823
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 /* For each buffer slot, this points to the Lisp symbol name
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 for that slot in the current buffer. It is 0 for slots
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826 that don't have such names. */
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 extern struct buffer buffer_local_symbols;
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
829
52013
26ceb23fbe42 (delete_all_overlays): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51854
diff changeset
830 extern void delete_all_overlays P_ ((struct buffer *));
20304
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
831 extern void reset_buffer P_ ((struct buffer *));
51821
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
832 extern void evaporate_overlays P_ ((EMACS_INT));
92237
ce06567a933d * dispextern.h (face_at_buffer_position, face_for_overlay_string)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91779
diff changeset
833 extern int overlays_at P_ ((EMACS_INT pos, int extend, Lisp_Object **vec_ptr,
ce06567a933d * dispextern.h (face_at_buffer_position, face_for_overlay_string)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91779
diff changeset
834 int *len_ptr, EMACS_INT *next_ptr,
ce06567a933d * dispextern.h (face_at_buffer_position, face_for_overlay_string)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91779
diff changeset
835 EMACS_INT *prev_ptr, int change_req));
20304
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
836 extern int sort_overlays P_ ((Lisp_Object *, int, struct window *));
51821
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
837 extern void recenter_overlay_lists P_ ((struct buffer *, EMACS_INT));
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
838 extern int overlay_strings P_ ((EMACS_INT, struct window *, unsigned char **));
20304
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
839 extern void validate_region P_ ((Lisp_Object *, Lisp_Object *));
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
840 extern void set_buffer_internal P_ ((struct buffer *));
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
841 extern void set_buffer_internal_1 P_ ((struct buffer *));
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
842 extern void set_buffer_temp P_ ((struct buffer *));
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
843 extern void record_buffer P_ ((Lisp_Object));
86285
59344cb482f3 * lisp.h (struct Lisp_Buffer_Objfwd): Add a `slottype' field.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86164
diff changeset
844 extern void buffer_slot_type_mismatch P_ ((Lisp_Object, int)) NO_RETURN;
51821
71950df19cb6 (struct buffer): Use an int for overlay_center.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51667
diff changeset
845 extern void fix_overlays_before P_ ((struct buffer *, EMACS_INT, EMACS_INT));
34498
17cf716e8dc6 (mmap_set_vars): Declare.
Dave Love <fx@gnu.org>
parents: 31605
diff changeset
846 extern void mmap_set_vars P_ ((int));
20304
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
847
55649
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
848 /* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements.
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
849 If NEXTP is non-NULL, return next overlay there.
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
850 See overlay_at arg CHANGE_REQ for meaning of CHRQ arg. */
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
851
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
852 #define GET_OVERLAYS_AT(posn, overlays, noverlays, nextp, chrq) \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
853 do { \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
854 int maxlen = 40; \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
855 overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object)); \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
856 noverlays = overlays_at (posn, 0, &overlays, &maxlen, \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
857 nextp, NULL, chrq); \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
858 if (noverlays > maxlen) \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
859 { \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
860 maxlen = noverlays; \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
861 overlays = (Lisp_Object *) alloca (maxlen * sizeof (Lisp_Object)); \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
862 noverlays = overlays_at (posn, 0, &overlays, &maxlen, \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
863 nextp, NULL, chrq); \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
864 } \
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
865 } while (0)
10e402439453 (GET_OVERLAYS_AT): New macro.
Kim F. Storm <storm@cua.dk>
parents: 53603
diff changeset
866
93037
cbb561d8b117 (Fbuffer_list): Declare (for use in callint.c).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92237
diff changeset
867 EXFUN (Fbuffer_list, 1);
88355
7b6dd9fc65ad EXFUN Fbuffer_live_p.
Kenichi Handa <handa@m17n.org>
parents: 42644
diff changeset
868 EXFUN (Fbuffer_live_p, 1);
20304
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
869 EXFUN (Fbuffer_name, 1);
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
870 EXFUN (Fget_file_buffer, 1);
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
871 EXFUN (Fnext_overlay_change, 1);
a385b772f453 Add more protypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18241
diff changeset
872 EXFUN (Fdelete_overlay, 1);
40740
f2d03d1dc242 (Fbuffer_local_value): Add prototype.
Pavel Janík <Pavel@Janik.cz>
parents: 39320
diff changeset
873 EXFUN (Fbuffer_local_value, 2);
64479
464cbb3faef9 (Fgenerate_new_buffer_name): Declare (for use in coding.c).
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 64084
diff changeset
874 EXFUN (Fgenerate_new_buffer_name, 2);
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
875
10310
b0f6fc3f80b1 (struct buffer): Fields markers and intervals moved out.
Richard M. Stallman <rms@gnu.org>
parents: 9951
diff changeset
876 /* Functions to call before and after each text change. */
6786
25280492d514 (Vafter_change_functions, Vbefore_change_functions): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 6654
diff changeset
877 extern Lisp_Object Vbefore_change_functions;
25280492d514 (Vafter_change_functions, Vbefore_change_functions): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 6654
diff changeset
878 extern Lisp_Object Vafter_change_functions;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
879 extern Lisp_Object Vfirst_change_hook;
12786
d12f56be7f87 (Qbefore_change_functions, Qafter_change_functions): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 12471
diff changeset
880 extern Lisp_Object Qbefore_change_functions;
d12f56be7f87 (Qbefore_change_functions, Qafter_change_functions): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 12471
diff changeset
881 extern Lisp_Object Qafter_change_functions;
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
882 extern Lisp_Object Qfirst_change_hook;
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883
23398
a80f6d8c1dc6 (inhibit_modification_hooks): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 22151
diff changeset
884 /* If nonzero, all modification hooks are suppressed. */
a80f6d8c1dc6 (inhibit_modification_hooks): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 22151
diff changeset
885 extern int inhibit_modification_hooks;
a80f6d8c1dc6 (inhibit_modification_hooks): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 22151
diff changeset
886
2051
c1767ea45687 (struct buffer): New field mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 1910
diff changeset
887 extern Lisp_Object Vdeactivate_mark;
c1767ea45687 (struct buffer): New field mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 1910
diff changeset
888 extern Lisp_Object Vtransient_mark_mode;
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
889
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
890 /* Overlays */
2051
c1767ea45687 (struct buffer): New field mark_active.
Richard M. Stallman <rms@gnu.org>
parents: 1910
diff changeset
891
6098
b91e19be1513 (OVERLAY_POSITION): Don't check which buffer it points to.
Karl Heuer <kwzh@gnu.org>
parents: 5557
diff changeset
892 /* 1 if the OV is an overlay object. */
37753
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
893
2782
683f4472f1c8 * lisp.h (Lisp_Overlay): New tag.
Jim Blandy <jimb@redhat.com>
parents: 2564
diff changeset
894 #define OVERLAY_VALID(OV) (OVERLAYP (OV))
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
896 /* Return the marker that stands for where OV starts in the buffer. */
37753
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
897
9925
b039e4156d74 (OVERLAY_START, OVERLAY_END): Use new overlay substructure.
Karl Heuer <kwzh@gnu.org>
parents: 9784
diff changeset
898 #define OVERLAY_START(OV) (XOVERLAY (OV)->start)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899
2390
e611237d4420 (struct buffer): Field `fieldlist' deleted.
Richard M. Stallman <rms@gnu.org>
parents: 2214
diff changeset
900 /* Return the marker that stands for where OV ends in the buffer. */
37753
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
901
9925
b039e4156d74 (OVERLAY_START, OVERLAY_END): Use new overlay substructure.
Karl Heuer <kwzh@gnu.org>
parents: 9784
diff changeset
902 #define OVERLAY_END(OV) (XOVERLAY (OV)->end)
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903
37753
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
904 /* Return the plist of overlay OV. */
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
905
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
906 #define OVERLAY_PLIST(OV) XOVERLAY ((OV))->plist
3384f5e9fc90 (OVERLAY_PLIST): New macro.
Gerd Moellmann <gerd@gnu.org>
parents: 34498
diff changeset
907
6098
b91e19be1513 (OVERLAY_POSITION): Don't check which buffer it points to.
Karl Heuer <kwzh@gnu.org>
parents: 5557
diff changeset
908 /* Return the actual buffer position for the marker P.
b91e19be1513 (OVERLAY_POSITION): Don't check which buffer it points to.
Karl Heuer <kwzh@gnu.org>
parents: 5557
diff changeset
909 We assume you know which buffer it's pointing into. */
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910
9951
586bb1122715 (OVERLAY_POSITION): Use the new type-test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9925
diff changeset
911 #define OVERLAY_POSITION(P) \
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90773
diff changeset
912 (MARKERP (P) ? marker_position (P) : (abort (), 0))
193
596cfc339998 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913
31605
c3073b2c8dfa (BUFFER_ALLOC, BUFFER_REALLOC, BUFFER_FREE): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 31411
diff changeset
914
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
915 /***********************************************************************
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
916 Buffer-local Variables
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
917 ***********************************************************************/
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
918
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
919 /* Number of per-buffer variables used. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
920
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
921 extern int last_per_buffer_idx;
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
922
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
923 /* Return the offset in bytes of member VAR of struct buffer
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
924 from the start of a buffer structure. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
925
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
926 #define PER_BUFFER_VAR_OFFSET(VAR) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
927 ((char *) &buffer_local_flags.VAR - (char *) &buffer_local_flags)
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
928
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
929 /* Return the index of buffer-local variable VAR. Each per-buffer
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
930 variable has an index > 0 associated with it, except when it always
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
931 has buffer-local values, in which case the index is -1. If this is
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
932 0, this is a bug and means that the slot of VAR in
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
933 buffer_local_flags wasn't intiialized. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
934
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
935 #define PER_BUFFER_VAR_IDX(VAR) \
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
936 PER_BUFFER_IDX (PER_BUFFER_VAR_OFFSET (VAR))
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
937
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
938 /* Value is non-zero if the variable with index IDX has a local value
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
939 in buffer B. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
940
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
941 #define PER_BUFFER_VALUE_P(B, IDX) \
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
942 (((IDX) < 0 || IDX >= last_per_buffer_idx) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
943 ? (abort (), 0) \
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
944 : ((B)->local_flags[IDX] != 0))
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
945
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
946 /* Set whether per-buffer variable with index IDX has a buffer-local
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
947 value in buffer B. VAL zero means it hasn't. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
948
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
949 #define SET_PER_BUFFER_VALUE_P(B, IDX, VAL) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
950 do { \
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
951 if ((IDX) < 0 || (IDX) >= last_per_buffer_idx) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
952 abort (); \
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
953 (B)->local_flags[IDX] = (VAL); \
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
954 } while (0)
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
955
53362
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
956 /* Return the index value of the per-buffer variable at offset OFFSET
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
957 in the buffer structure.
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
958
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
959 If the slot OFFSET has a corresponding default value in
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
960 buffer_defaults, the index value is positive and has only one
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
961 nonzero bit. When a buffer has its own local value for a slot, the
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
962 bit for that slot (found in the same slot in this structure) is
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
963 turned on in the buffer's local_flags array.
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
964
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
965 If the index value is -1, even though there may be a
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
966 DEFVAR_PER_BUFFER for the slot, there is no default value for it;
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
967 and the corresponding slot in buffer_defaults is not used.
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
968
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
969 If the index value is -2, then there is no DEFVAR_PER_BUFFER for
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
970 the slot, but there is a default value which is copied into each
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
971 new buffer.
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
972
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
973 If a slot in this structure corresponding to a DEFVAR_PER_BUFFER is
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
974 zero, that is a bug */
35a817bb4c0d Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
975
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
976
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
977 #define PER_BUFFER_IDX(OFFSET) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
978 XINT (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_flags))
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
979
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
980 /* Return the default value of the per-buffer variable at offset
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
981 OFFSET in the buffer structure. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
982
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
983 #define PER_BUFFER_DEFAULT(OFFSET) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
984 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_defaults))
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
985
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
986 /* Return the buffer-local value of the per-buffer variable at offset
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
987 OFFSET in the buffer structure. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
988
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
989 #define PER_BUFFER_VALUE(BUFFER, OFFSET) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
990 (*(Lisp_Object *)((OFFSET) + (char *) (BUFFER)))
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
991
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
992 /* Return the symbol of the per-buffer variable at offset OFFSET in
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
993 the buffer structure. */
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
994
28350
51fbfd80a45f (MAX_PER_BUFFER_VARS): Renamed from MAX_BUFFER_LOCAL_VARS.
Gerd Moellmann <gerd@gnu.org>
parents: 28345
diff changeset
995 #define PER_BUFFER_SYMBOL(OFFSET) \
28317
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
996 (*(Lisp_Object *)((OFFSET) + (char *) &buffer_local_symbols))
a7da319e3765 (struct buffer): Remove member local_var_flags,
Gerd Moellmann <gerd@gnu.org>
parents: 26486
diff changeset
997
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52013
diff changeset
998 /* arch-tag: 679305dd-d41c-4a50-b170-3caf5c97b2d1
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52013
diff changeset
999 (do not change this comment) */